diff options
Diffstat (limited to 'stream')
-rw-r--r-- | stream/stream_cddb.c | 6 | ||||
-rw-r--r-- | stream/stream_dvb.c | 63 |
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; |