libaacs | branch: master | npzacs <npz...@gmail.com> | Wed Jan 21 10:30:15 2015 +0200| [cd6b9a7a40eb14d16b283e084cd4e22a3cbecf5a] | committer: npzacs
Merge config dir changes from libbluray > http://git.videolan.org/gitweb.cgi/libaacs.git/?a=commit;h=cd6b9a7a40eb14d16b283e084cd4e22a3cbecf5a --- src/file/dirs.h | 7 ++-- src/file/dirs_darwin.c | 60 +++++++++++----------------------- src/file/dirs_win32.c | 12 +++---- src/file/dirs_xdg.c | 84 +++++++++++++++++------------------------------- src/file/keydbcfg.c | 21 ++++++++---- 5 files changed, 71 insertions(+), 113 deletions(-) diff --git a/src/file/dirs.h b/src/file/dirs.h index 139ac10..71b1390 100644 --- a/src/file/dirs.h +++ b/src/file/dirs.h @@ -30,9 +30,10 @@ AACS_PRIVATE int win32_mkdir(const char *dir); * Config, cache and data dirs */ -AACS_PRIVATE const char *file_get_config_home(void); AACS_PRIVATE const char *file_get_config_system(const char *dir); -AACS_PRIVATE const char *file_get_cache_home(void); -AACS_PRIVATE const char *file_get_data_home(void); + +AACS_PRIVATE char *file_get_config_home(void) AACS_ATTR_MALLOC; +AACS_PRIVATE char *file_get_cache_home(void) AACS_ATTR_MALLOC; +AACS_PRIVATE char *file_get_data_home(void) AACS_ATTR_MALLOC; #endif diff --git a/src/file/dirs_darwin.c b/src/file/dirs_darwin.c index f28baf6..928cd2c 100644 --- a/src/file/dirs_darwin.c +++ b/src/file/dirs_darwin.c @@ -38,61 +38,37 @@ #define SYSTEM_CFG_DIR "/Library/Preferences" -const char *file_get_config_home(void) +char *file_get_config_home(void) { - static char *dir = NULL; - static int init_done = 0; - - if (!init_done) { - init_done = 1; - - const char *user_home = getenv("HOME"); - if (user_home && *user_home) { - return dir = str_printf("%s/%s", user_home, USER_CFG_DIR); - } - - DEBUG(DBG_FILE, "Can't find user home directory ($HOME) !\n"); + const char *user_home = getenv("HOME"); + if (user_home && *user_home) { + return str_printf("%s/%s", user_home, USER_CFG_DIR); } - return dir; + DEBUG(DBG_FILE, "Can't find user home directory ($HOME) !\n"); + return NULL; } -const char *file_get_data_home(void) +char *file_get_data_home(void) { - static char *dir = NULL; - static int init_done = 0; - - if (!init_done) { - init_done = 1; - - const char *user_home = getenv("HOME"); - if (user_home && *user_home) { - return dir = str_printf("%s/%s", user_home, USER_DATA_DIR); - } - - DEBUG(DBG_FILE, "Can't find user home directory ($HOME) !\n"); + const char *user_home = getenv("HOME"); + if (user_home && *user_home) { + return str_printf("%s/%s", user_home, USER_DATA_DIR); } - return dir; + DEBUG(DBG_FILE, "Can't find user home directory ($HOME) !\n"); + return NULL; } -const char *file_get_cache_home(void) +char *file_get_cache_home(void) { - static char *dir = NULL; - static int init_done = 0; - - if (!init_done) { - init_done = 1; - - const char *user_home = getenv("HOME"); - if (user_home && *user_home) { - return dir = str_printf("%s/%s", user_home, USER_CACHE_DIR); - } - - DEBUG(DBG_FILE, "Can't find user home directory ($HOME) !\n"); + const char *user_home = getenv("HOME"); + if (user_home && *user_home) { + return str_printf("%s/%s", user_home, USER_CACHE_DIR); } - return dir; + DEBUG(DBG_FILE, "Can't find user home directory ($HOME) !\n"); + return NULL; } const char *file_get_config_system(const char *dir) diff --git a/src/file/dirs_win32.c b/src/file/dirs_win32.c index 0e1208a..5f1aaeb 100644 --- a/src/file/dirs_win32.c +++ b/src/file/dirs_win32.c @@ -42,24 +42,20 @@ int win32_mkdir(const char *dir) return _wmkdir(wdir); } -const char *file_get_config_home(void) +char *file_get_config_home(void) { return file_get_data_home(); } -const char *file_get_data_home(void) +char *file_get_data_home(void) { - static char *appdir = NULL; wchar_t wdir[MAX_PATH]; - if (appdir) - return appdir; - /* Get the "Application Data" folder for the user */ if (S_OK == SHGetFolderPathW(NULL, CSIDL_APPDATA | CSIDL_FLAG_CREATE, NULL, SHGFP_TYPE_CURRENT, wdir)) { int len = WideCharToMultiByte (CP_UTF8, 0, wdir, -1, NULL, 0, NULL, NULL); - appdir = malloc(len); + char *appdir = malloc(len); WideCharToMultiByte (CP_UTF8, 0, wdir, -1, appdir, len, NULL, NULL); return appdir; } @@ -68,7 +64,7 @@ const char *file_get_data_home(void) return NULL; } -const char *file_get_cache_home(void) +char *file_get_cache_home(void) { return file_get_data_home(); } diff --git a/src/file/dirs_xdg.c b/src/file/dirs_xdg.c index 64bd8d1..edecf3d 100644 --- a/src/file/dirs_xdg.c +++ b/src/file/dirs_xdg.c @@ -41,76 +41,52 @@ #define SYSTEM_CFG_DIR "/etc/xdg" -const char *file_get_config_home(void) +char *file_get_config_home(void) { - static char *dir = NULL; - static int init_done = 0; - - if (!init_done) { - init_done = 1; - - const char *xdg_home = getenv("XDG_CONFIG_HOME"); - if (xdg_home && *xdg_home) { - return dir = str_printf("%s", xdg_home); - } - - const char *user_home = getenv("HOME"); - if (user_home && *user_home) { - return dir = str_printf("%s/%s", user_home, USER_CFG_DIR); - } + const char *xdg_home = getenv("XDG_CONFIG_HOME"); + if (xdg_home && *xdg_home) { + return str_printf("%s", xdg_home); + } - DEBUG(DBG_FILE, "Can't find user home directory ($HOME) !\n"); + const char *user_home = getenv("HOME"); + if (user_home && *user_home) { + return str_printf("%s/%s", user_home, USER_CFG_DIR); } - return dir; + DEBUG(DBG_FILE, "Can't find user home directory ($HOME) !\n"); + return NULL; } -const char *file_get_data_home(void) +char *file_get_data_home(void) { - static char *dir = NULL; - static int init_done = 0; - - if (!init_done) { - init_done = 1; - - const char *xdg_home = getenv("XDG_DATA_HOME"); - if (xdg_home && *xdg_home) { - return dir = str_printf("%s", xdg_home); - } - - const char *user_home = getenv("HOME"); - if (user_home && *user_home) { - return dir = str_printf("%s/%s", user_home, USER_DATA_DIR); - } + const char *xdg_home = getenv("XDG_DATA_HOME"); + if (xdg_home && *xdg_home) { + return str_printf("%s", xdg_home); + } - DEBUG(DBG_FILE, "Can't find user home directory ($HOME) !\n"); + const char *user_home = getenv("HOME"); + if (user_home && *user_home) { + return str_printf("%s/%s", user_home, USER_DATA_DIR); } - return dir; + DEBUG(DBG_FILE, "Can't find user home directory ($HOME) !\n"); + return NULL; } -const char *file_get_cache_home(void) +char *file_get_cache_home(void) { - static char *dir = NULL; - static int init_done = 0; - - if (!init_done) { - init_done = 1; - - const char *xdg_cache = getenv("XDG_CACHE_HOME"); - if (xdg_cache && *xdg_cache) { - return dir = str_printf("%s", xdg_cache); - } - - const char *user_home = getenv("HOME"); - if (user_home && *user_home) { - return dir = str_printf("%s/%s", user_home, USER_CACHE_DIR); - } + const char *xdg_cache = getenv("XDG_CACHE_HOME"); + if (xdg_cache && *xdg_cache) { + return str_printf("%s", xdg_cache); + } - DEBUG(DBG_FILE, "Can't find user home directory ($HOME) !\n"); + const char *user_home = getenv("HOME"); + if (user_home && *user_home) { + return str_printf("%s/%s", user_home, USER_CACHE_DIR); } - return dir; + DEBUG(DBG_FILE, "Can't find user home directory ($HOME) !\n"); + return NULL; } const char *file_get_config_system(const char *dir) diff --git a/src/file/keydbcfg.c b/src/file/keydbcfg.c index 01ee4d8..15dc57c 100644 --- a/src/file/keydbcfg.c +++ b/src/file/keydbcfg.c @@ -111,13 +111,16 @@ static char *_load_file(FILE *fp) static char *_config_file_user(const char *file_name) { - const char *cfg_dir = file_get_config_home(); + char *cfg_dir = file_get_config_home(); + char *result; if (!cfg_dir) { return NULL; } - return str_printf("%s"DIR_SEP"%s"DIR_SEP"%s", cfg_dir, CFG_DIR, file_name); + result = str_printf("%s"DIR_SEP"%s"DIR_SEP"%s", cfg_dir, CFG_DIR, file_name); + X_FREE(cfg_dir); + return result; } static FILE *_open_cfg_file_user(const char *file_name, char **path, const char *mode) @@ -338,7 +341,8 @@ static int _load_cert_file(config_file *cf) static char *_keycache_file(const char *type, const uint8_t *disc_id) { - const char *cache_dir = file_get_cache_home(); + char *cache_dir = file_get_cache_home(); + char *result; char disc_id_str[41]; if (!cache_dir) { @@ -347,7 +351,9 @@ static char *_keycache_file(const char *type, const uint8_t *disc_id) hex_array_to_hexstring(disc_id_str, disc_id, 20); - return str_printf("%s"DIR_SEP"%s"DIR_SEP"%s"DIR_SEP"%s", cache_dir, CFG_DIR, type, disc_id_str); + result = str_printf("%s"DIR_SEP"%s"DIR_SEP"%s"DIR_SEP"%s", cache_dir, CFG_DIR, type, disc_id_str); + X_FREE(cache_dir); + return result; } int keycache_save(const char *type, const uint8_t *disc_id, const uint8_t *key, unsigned int len) @@ -423,13 +429,16 @@ int keycache_find(const char *type, const uint8_t *disc_id, uint8_t *key, unsign static char *_cache_file(const char *name) { - const char *cache_dir = file_get_cache_home(); + char *cache_dir = file_get_cache_home(); + char *result; if (!cache_dir) { return NULL; } - return str_printf("%s"DIR_SEP"%s"DIR_SEP"%s", cache_dir, CFG_DIR, name); + result = str_printf("%s"DIR_SEP"%s"DIR_SEP"%s", cache_dir, CFG_DIR, name); + X_FREE(cache_dir); + return result; } int cache_save(const char *name, uint32_t version, const void *data, uint32_t len) _______________________________________________ libaacs-devel mailing list libaacs-devel@videolan.org https://mailman.videolan.org/listinfo/libaacs-devel