Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
mpd
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Иван Мажукин
mpd
Commits
feb8d5b8
Commit
feb8d5b8
authored
Jan 29, 2013
by
Max Kellermann
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ConfigFile, CommandLine: use the Path class
parent
eb8922f3
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
98 additions
and
74 deletions
+98
-74
Makefile.am
Makefile.am
+11
-0
CommandLine.cxx
src/CommandLine.cxx
+42
-46
ConfigFile.cxx
src/ConfigFile.cxx
+8
-4
PlaylistFile.cxx
src/PlaylistFile.cxx
+3
-2
PlaylistSave.cxx
src/PlaylistSave.cxx
+2
-1
UpdateIO.cxx
src/UpdateIO.cxx
+4
-6
conf.h
src/conf.h
+11
-3
DumpDatabase.cxx
test/DumpDatabase.cxx
+3
-2
dump_playlist.cxx
test/dump_playlist.cxx
+3
-3
read_conf.cxx
test/read_conf.cxx
+3
-3
run_filter.cxx
test/run_filter.cxx
+4
-2
run_output.cxx
test/run_output.cxx
+4
-2
No files found.
Makefile.am
View file @
feb8d5b8
...
...
@@ -1044,6 +1044,7 @@ noinst_PROGRAMS += test/read_mixer
endif
test_read_conf_LDADD
=
\
libfs.a
\
$(GLIB_LIBS)
test_read_conf_SOURCES
=
test
/read_conf.cxx
\
src/ConfigFile.cxx src/tokenizer.c src/utils.c src/string_util.c
...
...
@@ -1074,6 +1075,7 @@ test_run_input_LDADD = \
$(INPUT_LIBS)
\
$(ARCHIVE_LIBS)
\
libevent.a
\
libfs.a
\
$(GLIB_LIBS)
test_run_input_SOURCES
=
test
/run_input.cxx
\
test
/stdbin.h
\
...
...
@@ -1087,6 +1089,7 @@ test_dump_text_file_LDADD = \
$(INPUT_LIBS)
\
$(ARCHIVE_LIBS)
\
libevent.a
\
libfs.a
\
libutil.a
\
$(GLIB_LIBS)
test_dump_text_file_SOURCES
=
test
/dump_text_file.cxx
\
...
...
@@ -1106,6 +1109,7 @@ test_dump_playlist_LDADD = \
$(DECODER_LIBS)
\
$(TAG_LIBS)
\
libevent.a
\
libfs.a
\
libutil.a
\
$(GLIB_LIBS)
test_dump_playlist_SOURCES
=
test
/dump_playlist.cxx
\
...
...
@@ -1133,6 +1137,7 @@ test_run_decoder_LDADD = \
$(ARCHIVE_LIBS)
\
$(TAG_LIBS)
\
libevent.a
\
libfs.a
\
libutil.a
\
$(GLIB_LIBS)
test_run_decoder_SOURCES
=
test
/run_decoder.cxx
\
...
...
@@ -1157,6 +1162,7 @@ test_read_tags_LDADD = \
$(ARCHIVE_LIBS)
\
$(TAG_LIBS)
\
libevent.a
\
libfs.a
\
libutil.a
\
$(GLIB_LIBS)
test_read_tags_SOURCES
=
test
/read_tags.cxx
\
...
...
@@ -1182,6 +1188,7 @@ endif
test_run_filter_LDADD
=
\
$(FILTER_LIBS)
\
libfs.a
\
$(GLIB_LIBS)
test_run_filter_SOURCES
=
test
/run_filter.cxx
\
test
/FakeReplayGainConfig.cxx
\
...
...
@@ -1216,6 +1223,7 @@ test_run_encoder_SOURCES = test/run_encoder.c \
test_run_encoder_LDADD
=
\
$(ENCODER_LIBS)
\
libpcm.a
\
libfs.a
\
libutil.a
\
$(TAG_LIBS)
\
$(GLIB_LIBS)
...
...
@@ -1238,6 +1246,7 @@ test_test_vorbis_encoder_CPPFLAGS = $(AM_CPPFLAGS) \
$(ENCODER_CFLAGS)
test_test_vorbis_encoder_LDADD
=
$(MPD_LIBS)
\
$(ENCODER_LIBS)
\
libfs.a
\
libutil.a
\
$(GLIB_LIBS)
endif
...
...
@@ -1274,6 +1283,7 @@ test_run_output_LDADD = $(MPD_LIBS) \
libmixer_plugins.a
\
$(FILTER_LIBS)
\
libevent.a
\
libfs.a
\
libutil.a
\
$(GLIB_LIBS)
test_run_output_SOURCES
=
test
/run_output.cxx
\
...
...
@@ -1306,6 +1316,7 @@ test_read_mixer_LDADD = \
libmixer_plugins.a
\
$(OUTPUT_LIBS)
\
libevent.a
\
libfs.a
\
$(GLIB_LIBS)
test_read_mixer_SOURCES
=
test
/read_mixer.c
\
src/ConfigFile.cxx src/tokenizer.c src/utils.c src/string_util.c
\
...
...
src/CommandLine.cxx
View file @
feb8d5b8
...
...
@@ -31,7 +31,8 @@
#include "PlaylistRegistry.hxx"
#include "PlaylistPlugin.hxx"
#include "mpd_error.h"
#include "glib_compat.h"
#include "fs/Path.hxx"
#include "fs/FileSystem.hxx"
#ifdef ENABLE_ENCODER
#include "encoder_list.h"
...
...
@@ -133,6 +134,16 @@ static void version(void)
static
const
char
*
summary
=
"Music Player Daemon - a daemon for playing music."
;
gcc_pure
static
Path
PathBuildChecked
(
const
Path
&
a
,
Path
::
const_pointer
b
)
{
if
(
a
.
IsNull
())
return
Path
::
Null
();
return
Path
::
Build
(
a
,
b
);
}
bool
parse_cmdline
(
int
argc
,
char
**
argv
,
struct
options
*
options
,
GError
**
error_r
)
...
...
@@ -191,59 +202,44 @@ parse_cmdline(int argc, char **argv, struct options *options,
return
true
;
}
else
if
(
argc
<=
1
)
{
/* default configuration file path */
char
*
path1
;
#ifdef G_OS_WIN32
path1
=
g_build_filename
(
g_get_user_config_dir
(),
CONFIG_FILE_LOCATION
,
NULL
);
if
(
g_file_test
(
path1
,
G_FILE_TEST_IS_REGULAR
))
ret
=
config_read_file
(
path1
,
error_r
);
else
{
int
i
=
0
;
char
*
system_path
=
NULL
;
const
char
*
const
*
system_config_dirs
;
system_config_dirs
=
g_get_system_config_dirs
();
while
(
system_config_dirs
[
i
]
!=
NULL
)
{
system_path
=
g_build_filename
(
system_config_dirs
[
i
],
CONFIG_FILE_LOCATION
,
NULL
);
if
(
g_file_test
(
system_path
,
G_FILE_TEST_IS_REGULAR
))
{
ret
=
config_read_file
(
system_path
,
error_r
);
g_free
(
system_path
);
break
;
}
else
g_free
(
system_path
);
++
i
;
}
Path
path
=
PathBuildChecked
(
Path
::
FromUTF8
(
g_get_user_config_dir
()),
CONFIG_FILE_LOCATION
);
if
(
!
path
.
IsNull
()
&&
FileExists
(
path
))
return
ReadConfigFile
(
path
,
error_r
);
const
char
*
const
*
system_config_dirs
=
g_get_system_config_dirs
();
for
(
unsigned
i
=
0
;
system_config_dirs
[
i
]
!=
nullptr
;
++
i
)
{
path
=
PathBuildChecked
(
Path
::
FromUTF8
(
system_config_dirs
[
i
]),
CONFIG_FILE_LOCATION
);
if
(
!
path
.
IsNull
()
&&
FileExists
(
path
))
return
ReadConfigFile
(
path
,
error_r
);
}
#else
/* G_OS_WIN32 */
char
*
path2
;
path1
=
g_build_filename
(
g_get_home_dir
(),
USER_CONFIG_FILE_LOCATION1
,
NULL
);
path2
=
g_build_filename
(
g_get_home_dir
(),
USER_CONFIG_FILE_LOCATION2
,
NULL
);
if
(
g_file_test
(
path1
,
G_FILE_TEST_IS_REGULAR
))
ret
=
config_read_file
(
path1
,
error_r
);
else
if
(
g_file_test
(
path2
,
G_FILE_TEST_IS_REGULAR
))
ret
=
config_read_file
(
path2
,
error_r
);
else
if
(
g_file_test
(
SYSTEM_CONFIG_FILE_LOCATION
,
G_FILE_TEST_IS_REGULAR
))
ret
=
config_read_file
(
SYSTEM_CONFIG_FILE_LOCATION
,
error_r
);
Path
path
=
PathBuildChecked
(
Path
::
FromUTF8
(
g_get_home_dir
()),
USER_CONFIG_FILE_LOCATION1
);
if
(
!
path
.
IsNull
()
&&
FileExists
(
path
))
return
ReadConfigFile
(
path
,
error_r
);
path
=
PathBuildChecked
(
Path
::
FromUTF8
(
g_get_home_dir
()),
USER_CONFIG_FILE_LOCATION2
);
if
(
!
path
.
IsNull
()
&&
FileExists
(
path
))
ret
urn
ReadConfigFile
(
path
,
error_r
);
path
=
Path
::
FromUTF8
(
SYSTEM_CONFIG_FILE_LOCATION
);
if
(
!
path
.
IsNull
()
&&
FileExists
(
path
))
return
ReadConfigFile
(
path
,
error_r
);
#endif
g_free
(
path1
);
#ifndef G_OS_WIN32
g_free
(
path2
);
#endif
return
ret
;
g_set_error
(
error_r
,
cmdline_quark
(),
0
,
"No configuration file found"
);
return
false
;
}
else
if
(
argc
==
2
)
{
/* specified configuration file */
return
config_read_file
(
argv
[
1
]
,
error_r
);
return
ReadConfigFile
(
Path
::
FromFS
(
argv
[
1
])
,
error_r
);
}
else
{
g_set_error
(
error_r
,
cmdline_quark
(),
0
,
"too many arguments"
);
...
...
src/ConfigFile.cxx
View file @
feb8d5b8
...
...
@@ -27,6 +27,7 @@ extern "C" {
}
#include "fs/Path.hxx"
#include "fs/FileSystem.hxx"
#include "mpd_error.h"
#include <glib.h>
...
...
@@ -347,20 +348,23 @@ config_read_block(FILE *fp, int *count, char *string, GError **error_r)
}
bool
config_read_file
(
const
char
*
file
,
GError
**
error_r
)
ReadConfigFile
(
const
Path
&
path
,
GError
**
error_r
)
{
assert
(
!
path
.
IsNull
());
const
std
::
string
path_utf8
=
path
.
ToUTF8
();
FILE
*
fp
;
char
string
[
MAX_STRING_SIZE
+
1
];
int
count
=
0
;
struct
config_entry
*
entry
;
struct
config_param
*
param
;
g_debug
(
"loading file %s"
,
file
);
g_debug
(
"loading file %s"
,
path_utf8
.
c_str
()
);
if
(
!
(
fp
=
fopen
(
file
,
"r"
)))
{
if
(
!
(
fp
=
FOpen
(
path
,
"r"
)))
{
g_set_error
(
error_r
,
config_quark
(),
errno
,
"Failed to open %s: %s"
,
file
,
g_strerror
(
errno
));
path_utf8
.
c_str
()
,
g_strerror
(
errno
));
return
false
;
}
...
...
src/PlaylistFile.cxx
View file @
feb8d5b8
...
...
@@ -31,6 +31,7 @@
#include "conf.h"
#include "Idle.hxx"
#include "fs/Path.hxx"
#include "fs/FileSystem.hxx"
extern
"C"
{
#include "uri.h"
...
...
@@ -433,14 +434,14 @@ static bool
spl_rename_internal
(
const
Path
&
from_path_fs
,
const
Path
&
to_path_fs
,
GError
**
error_r
)
{
if
(
!
g_file_test
(
from_path_fs
.
c_str
(),
G_FILE_TEST_IS_REGULAR
))
{
if
(
!
FileExists
(
from_path_fs
))
{
g_set_error_literal
(
error_r
,
playlist_quark
(),
PLAYLIST_RESULT_NO_SUCH_LIST
,
"No such playlist"
);
return
false
;
}
if
(
g_file_test
(
to_path_fs
.
c_str
(),
G_FILE_TEST_EXISTS
))
{
if
(
FileExists
(
to_path_fs
))
{
g_set_error_literal
(
error_r
,
playlist_quark
(),
PLAYLIST_RESULT_LIST_EXISTS
,
"Playlist exists already"
);
...
...
src/PlaylistSave.cxx
View file @
feb8d5b8
...
...
@@ -25,6 +25,7 @@
#include "Mapper.hxx"
#include "Idle.hxx"
#include "fs/Path.hxx"
#include "fs/FileSystem.hxx"
extern
"C"
{
#include "uri.h"
...
...
@@ -76,7 +77,7 @@ spl_save_queue(const char *name_utf8, const struct queue *queue)
if
(
path_fs
.
IsNull
())
return
PLAYLIST_RESULT_BAD_NAME
;
if
(
g_file_test
(
path_fs
.
c_str
(),
G_FILE_TEST_EXISTS
))
if
(
FileExists
(
path_fs
))
return
PLAYLIST_RESULT_LIST_EXISTS
;
FILE
*
file
=
fopen
(
path_fs
.
c_str
(),
"w"
);
...
...
src/UpdateIO.cxx
View file @
feb8d5b8
...
...
@@ -22,7 +22,7 @@
#include "Directory.hxx"
#include "Mapper.hxx"
#include "fs/Path.hxx"
#include "
glib_compat.h
"
#include "
fs/FileSystem.hxx
"
#include <glib.h>
...
...
@@ -68,12 +68,10 @@ directory_exists(const Directory *directory)
/* invalid path: cannot exist */
return
false
;
GFileTest
test
=
directory
->
device
==
DEVICE_INARCHIVE
||
return
directory
->
device
==
DEVICE_INARCHIVE
||
directory
->
device
==
DEVICE_CONTAINER
?
G_FILE_TEST_IS_REGULAR
:
G_FILE_TEST_IS_DIR
;
return
g_file_test
(
path_fs
.
c_str
(),
test
);
?
FileExists
(
path_fs
)
:
DirectoryExists
(
path_fs
);
}
bool
...
...
src/conf.h
View file @
feb8d5b8
...
...
@@ -81,6 +81,10 @@
#define MAX_FILTER_CHAIN_LENGTH 255
#ifdef __cplusplus
class
Path
;
#endif
struct
block_param
{
char
*
name
;
char
*
value
;
...
...
@@ -118,8 +122,6 @@ config_quark(void)
return
g_quark_from_static_string
(
"config"
);
}
G_BEGIN_DECLS
void
config_global_init
(
void
);
void
config_global_finish
(
void
);
...
...
@@ -129,8 +131,14 @@ void config_global_finish(void);
*/
void
config_global_check
(
void
);
#ifdef __cplusplus
bool
config_read_file
(
const
char
*
file
,
GError
**
error_r
);
ReadConfigFile
(
const
Path
&
path
,
GError
**
error_r
);
#endif
G_BEGIN_DECLS
/* don't free the returned value
set _last_ to NULL to get first entry */
...
...
test/DumpDatabase.cxx
View file @
feb8d5b8
...
...
@@ -26,6 +26,7 @@
#include "PlaylistVector.hxx"
#include "conf.h"
#include "tag.h"
#include "fs/Path.hxx"
#include <iostream>
using
std
::
cout
;
...
...
@@ -76,7 +77,7 @@ main(int argc, char **argv)
return
1
;
}
const
char
*
const
config_path
=
argv
[
1
]
;
const
Path
config_path
=
Path
::
FromFS
(
argv
[
1
])
;
const
char
*
const
plugin_name
=
argv
[
2
];
const
DatabasePlugin
*
plugin
=
GetDatabasePluginByName
(
plugin_name
);
...
...
@@ -94,7 +95,7 @@ main(int argc, char **argv)
config_global_init
();
if
(
!
config_read_f
ile
(
config_path
,
&
error
))
{
if
(
!
ReadConfigF
ile
(
config_path
,
&
error
))
{
cerr
<<
error
->
message
<<
endl
;
g_error_free
(
error
);
return
EXIT_FAILURE
;
...
...
test/dump_playlist.cxx
View file @
feb8d5b8
...
...
@@ -28,6 +28,7 @@
#include "IOThread.hxx"
#include "PlaylistRegistry.hxx"
#include "PlaylistPlugin.hxx"
#include "fs/Path.hxx"
extern
"C"
{
#include "decoder_list.h"
...
...
@@ -141,7 +142,6 @@ int main(int argc, char **argv)
{
const
char
*
uri
;
struct
input_stream
*
is
=
NULL
;
bool
success
;
GError
*
error
=
NULL
;
struct
playlist_provider
*
playlist
;
struct
song
*
song
;
...
...
@@ -151,6 +151,7 @@ int main(int argc, char **argv)
return
1
;
}
const
Path
config_path
=
Path
::
FromFS
(
argv
[
1
]);
uri
=
argv
[
2
];
/* initialize GLib */
...
...
@@ -161,8 +162,7 @@ int main(int argc, char **argv)
/* initialize MPD */
config_global_init
();
success
=
config_read_file
(
argv
[
1
],
&
error
);
if
(
!
success
)
{
if
(
!
ReadConfigFile
(
config_path
,
&
error
))
{
g_printerr
(
"%s
\n
"
,
error
->
message
);
g_error_free
(
error
);
return
1
;
...
...
test/read_conf.cxx
View file @
feb8d5b8
...
...
@@ -19,6 +19,7 @@
#include "config.h"
#include "conf.h"
#include "fs/Path.hxx"
#include <glib.h>
...
...
@@ -42,7 +43,7 @@ int main(int argc, char **argv)
return
1
;
}
const
char
*
path
=
argv
[
1
]
;
const
Path
config_path
=
Path
::
FromFS
(
argv
[
1
])
;
const
char
*
name
=
argv
[
2
];
g_log_set_default_handler
(
my_log_func
,
NULL
);
...
...
@@ -50,8 +51,7 @@ int main(int argc, char **argv)
config_global_init
();
GError
*
error
=
NULL
;
bool
success
=
config_read_file
(
path
,
&
error
);
if
(
!
success
)
{
if
(
!
ReadConfigFile
(
config_path
,
&
error
))
{
g_printerr
(
"%s:"
,
error
->
message
);
g_error_free
(
error
);
return
1
;
...
...
test/run_filter.cxx
View file @
feb8d5b8
...
...
@@ -19,6 +19,7 @@
#include "config.h"
#include "conf.h"
#include "fs/Path.hxx"
extern
"C"
{
#include "audio_parser.h"
...
...
@@ -107,6 +108,8 @@ int main(int argc, char **argv)
return
1
;
}
const
Path
config_path
=
Path
::
FromFS
(
argv
[
1
]);
audio_format_init
(
&
audio_format
,
44100
,
SAMPLE_FORMAT_S16
,
2
);
/* initialize GLib */
...
...
@@ -117,8 +120,7 @@ int main(int argc, char **argv)
/* read configuration file (mpd.conf) */
config_global_init
();
success
=
config_read_file
(
argv
[
1
],
&
error
);
if
(
!
success
)
{
if
(
!
ReadConfigFile
(
config_path
,
&
error
))
{
g_printerr
(
"%s:"
,
error
->
message
);
g_error_free
(
error
);
return
1
;
...
...
test/run_output.cxx
View file @
feb8d5b8
...
...
@@ -25,6 +25,7 @@
#include "event/Loop.hxx"
#include "GlobalEvents.hxx"
#include "IOThread.hxx"
#include "fs/Path.hxx"
extern
"C"
{
#include "output_plugin.h"
...
...
@@ -201,6 +202,8 @@ int main(int argc, char **argv)
return
1
;
}
const
Path
config_path
=
Path
::
FromFS
(
argv
[
1
]);
audio_format_init
(
&
audio_format
,
44100
,
SAMPLE_FORMAT_S16
,
2
);
g_thread_init
(
NULL
);
...
...
@@ -208,8 +211,7 @@ int main(int argc, char **argv)
/* read configuration file (mpd.conf) */
config_global_init
();
success
=
config_read_file
(
argv
[
1
],
&
error
);
if
(
!
success
)
{
if
(
!
ReadConfigFile
(
config_path
,
&
error
))
{
g_printerr
(
"%s:"
,
error
->
message
);
g_error_free
(
error
);
return
1
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment