summaryrefslogtreecommitdiffstats
path: root/stream
diff options
context:
space:
mode:
authorStefano Pigozzi <stefano.pigozzi@gmail.com>2012-12-09 15:05:21 +0100
committerStefano Pigozzi <stefano.pigozzi@gmail.com>2012-12-15 17:38:00 +0100
commitfab9febdc3a863c157a56cc4de2418cbb9665844 (patch)
tree8c442f1f04d67587d91f7f5427d5c90d7a99ff0e /stream
parentc7bf5111c7db05dc5b1750ff285e343849293dd3 (diff)
downloadmpv-fab9febdc3a863c157a56cc4de2418cbb9665844.tar.bz2
mpv-fab9febdc3a863c157a56cc4de2418cbb9665844.tar.xz
path: add mp_find_config_file and reorganize some of the code
Add `mp_find_config_file` to search different known paths and use that in ass_mp to look for the fontconfig configuration file. Some incidental changes spawned by this feature where: * Buffer allocation for the strings containing the paths is now performed with talloc. All of the allocations are done on a NULL context, but it still improves readability of the code. * Move the OSX function for lookup inside of a bundle: this code path was currently not used by the bundle generated with `make osxbundle`. The plan is to use it again in a future commit to get a fontconfig config file.
Diffstat (limited to 'stream')
-rw-r--r--stream/stream_cddb.c6
-rw-r--r--stream/stream_dvb.c63
2 files changed, 39 insertions, 30 deletions
diff --git a/stream/stream_cddb.c b/stream/stream_cddb.c
index 2fc4335b68..f0f8f67155 100644
--- a/stream/stream_cddb.c
+++ b/stream/stream_cddb.c
@@ -717,6 +717,7 @@ int cddb_resolve(const char *dev, char **xmcd_file)
char cddb_cache_dir[] = DEFAULT_CACHE_DIR;
char *home_dir = NULL;
cddb_data_t cddb_data;
+ void *talloc_ctx = talloc_new(NULL);
if (cdtoc_last_track <= 0) {
cdtoc_last_track = read_toc(dev);
@@ -747,7 +748,8 @@ int cddb_resolve(const char *dev, char **xmcd_file)
home_dir = getenv("HOMEPATH");
// Last resort, store the cddb cache in the mplayer directory
if (home_dir == NULL)
- home_dir = (char *)get_path("");
+ home_dir = (char *)talloc_steal(talloc_ctx,
+ mp_find_user_config_file(""));
#endif
if (home_dir == NULL) {
cddb_data.cache_dir = NULL;
@@ -756,10 +758,12 @@ int cddb_resolve(const char *dev, char **xmcd_file)
cddb_data.cache_dir = malloc(len);
if (cddb_data.cache_dir == NULL) {
mp_tmsg(MSGT_DEMUX, MSGL_ERR, "Memory allocation failed.\n");
+ talloc_free(talloc_ctx);
return -1;
}
snprintf(cddb_data.cache_dir, len, "%s%s", home_dir, cddb_cache_dir);
}
+ talloc_free(talloc_ctx);
// Check for a cached file
if (cddb_read_cache(&cddb_data) < 0) {
diff --git a/stream/stream_dvb.c b/stream/stream_dvb.c
index 6a73e5db42..7cbd690ee6 100644
--- a/stream/stream_dvb.c
+++ b/stream/stream_dvb.c
@@ -777,36 +777,41 @@ dvb_config_t *dvb_get_config(void)
continue;
}
- conf_file = get_path("channels.conf");
- switch(type)
- {
- case TUNER_TER:
- conf_file = get_path("channels.conf.ter");
- break;
- case TUNER_CBL:
- conf_file = get_path("channels.conf.cbl");
- break;
- case TUNER_SAT:
- conf_file = get_path("channels.conf.sat");
- break;
- case TUNER_ATSC:
- conf_file = get_path("channels.conf.atsc");
- break;
- }
-
- if((access(conf_file, F_OK | R_OK) != 0))
- {
- free(conf_file);
- conf_file = get_path("channels.conf");
- if((access(conf_file, F_OK | R_OK) != 0))
- {
- free(conf_file);
- conf_file = strdup(MPLAYER_CONFDIR "/channels.conf");
- }
- }
+ void *talloc_ctx = talloc_new(NULL);
+ conf_file = talloc_steal(talloc_ctx,
+ mp_find_user_config_file("channels.conf"));
+ switch(type) {
+ case TUNER_TER:
+ conf_file = talloc_steal(talloc_ctx,
+ mp_find_user_config_file("channels.conf.ter"));
+ break;
+ case TUNER_CBL:
+ conf_file = talloc_steal(talloc_ctx,
+ mp_find_user_config_file("channels.conf.cbl"));
+ break;
+ case TUNER_SAT:
+ conf_file = talloc_steal(talloc_ctx,
+ mp_find_user_config_file("channels.conf.sat"));
+ break;
+ case TUNER_ATSC:
+ conf_file = talloc_steal(talloc_ctx,
+ mp_find_user_config_file("channels.conf.atsc"));
+ break;
+ }
+
+ if((access(conf_file, F_OK | R_OK) != 0)) {
+ conf_file = talloc_steal(talloc_ctx,
+ mp_find_user_config_file("channels.conf"));
+
+ if((access(conf_file, F_OK | R_OK) != 0)) {
+ conf_file = talloc_steal(talloc_ctx,
+ mp_find_global_config_file("channels.conf"));
+ }
+ }
+
+ list = dvb_get_channels(conf_file, type);
+ talloc_free(talloc_ctx);
- list = dvb_get_channels(conf_file, type);
- free(conf_file);
if(list == NULL)
continue;