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

Reply via email to