diff options
author | Stefano Pigozzi <stefano.pigozzi@gmail.com> | 2012-12-09 15:05:21 +0100 |
---|---|---|
committer | Stefano Pigozzi <stefano.pigozzi@gmail.com> | 2012-12-15 17:38:00 +0100 |
commit | fab9febdc3a863c157a56cc4de2418cbb9665844 (patch) | |
tree | 8c442f1f04d67587d91f7f5427d5c90d7a99ff0e /stream/stream_dvb.c | |
parent | c7bf5111c7db05dc5b1750ff285e343849293dd3 (diff) | |
download | mpv-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/stream_dvb.c')
-rw-r--r-- | stream/stream_dvb.c | 63 |
1 files changed, 34 insertions, 29 deletions
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; |