vlc | branch: master | Rémi Denis-Courmont <r...@remlab.net> | Sun Mar 4 15:11:42 2018 +0200| [dabb09fa2c5e029b22030a41049c9c81ae0dd361] | committer: Rémi Denis-Courmont
posix: merge Linux config_GetDataDir() There are no needs to distinguish Linux for standard here. Also make config_GetDataDir() static. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=dabb09fa2c5e029b22030a41049c9c81ae0dd361 --- src/config/configuration.h | 18 ------------------ src/darwin/dirs.c | 2 +- src/linux/dirs.c | 32 -------------------------------- src/os2/dirs.c | 2 +- src/posix/dirs.c | 46 ++++++++++++++++++++++++++++++++++++---------- src/win32/dirs.c | 2 +- 6 files changed, 39 insertions(+), 63 deletions(-) diff --git a/src/config/configuration.h b/src/config/configuration.h index f8489e607a..ec19abc89e 100644 --- a/src/config/configuration.h +++ b/src/config/configuration.h @@ -56,29 +56,11 @@ extern bool config_dirty; bool config_IsSafe (const char *); /** - * Gets the arch-independent installation directory. - * - * This function determines the directory containing the - * architecture-independent installed asset files (such as image, text and - * message translation tables). - * - * See also config_GetLibDir(). - * - * @return a heap-allocated string (use free() to release it), or NULL on error - */ -char *config_GetDataDir(void) VLC_USED VLC_MALLOC; - -/** * Gets the arch-specific installation directory. * * This function determines the directory containing the architecture-specific * installed asset files (such as executable plugins and compiled byte code). * - * See also config_GetDataDir(). - * - * \note config_GetDataDir() and config_GetLibDir() may or may not return the - * same path, depending on conventions of the operating system. - * * @return a heap-allocated string (use free() to release it), or NULL on error */ char *config_GetLibDir(void) VLC_USED VLC_MALLOC; diff --git a/src/darwin/dirs.c b/src/darwin/dirs.c index 59d60c0fd6..8b427163f7 100644 --- a/src/darwin/dirs.c +++ b/src/darwin/dirs.c @@ -92,7 +92,7 @@ char *config_GetLibDir (void) abort (); } -char *config_GetDataDir (void) +static char *config_GetDataDir(void) { const char *path = getenv ("VLC_DATA_PATH"); if (path) diff --git a/src/linux/dirs.c b/src/linux/dirs.c index 736705ad50..466ddcaedb 100644 --- a/src/linux/dirs.c +++ b/src/linux/dirs.c @@ -100,35 +100,3 @@ char *config_GetLibDir(void) pthread_once(&once, config_GetLibDirOnce); return strdup(cached_path); } - -char *config_GetDataDir (void) -{ - const char *path = getenv ("VLC_DATA_PATH"); - if (path != NULL) - return strdup (path); - - char *libdir = config_GetLibDir (); - if (libdir == NULL) - return NULL; /* OOM */ - - /* Look for common prefix between lib and data directories. */ - size_t prefix_len = 0; - while (PKGLIBDIR[prefix_len] == PKGDATADIR[prefix_len]) - { - if (PKGLIBDIR[prefix_len] == '\0') - return libdir; /* corner case: directories are identical */ - prefix_len++; - } - - char *datadir = NULL; - - char *p = strstr(libdir, PKGLIBDIR + prefix_len); - if (p != NULL) - { - if (unlikely(asprintf(&datadir, "%.*s%s", (int)(p - libdir), libdir, - PKGDATADIR + prefix_len) == -1)) - datadir = NULL; - } - free (libdir); - return (datadir != NULL) ? datadir : strdup (PKGDATADIR); -} diff --git a/src/os2/dirs.c b/src/os2/dirs.c index 27a1d8a7c6..552cc2fcd5 100644 --- a/src/os2/dirs.c +++ b/src/os2/dirs.c @@ -51,7 +51,7 @@ char *config_GetLibDir (void) * * @return a nul-terminated string or NULL. Use free() to release it. */ -char *config_GetDataDir (void) +static char *config_GetDataDir(void) { const char *path = getenv ("VLC_DATA_PATH"); if (path) diff --git a/src/posix/dirs.c b/src/posix/dirs.c index 493a67190d..0868773fe3 100644 --- a/src/posix/dirs.c +++ b/src/posix/dirs.c @@ -36,25 +36,51 @@ #include <limits.h> /** - * Determines the shared data directory + * Determines the architecture-dependent data directory * - * @return a nul-terminated string or NULL. Use free() to release it. + * @return a string (always succeeds). */ -VLC_WEAK char *config_GetDataDir(void) +VLC_WEAK char *config_GetLibDir(void) { - const char *path = getenv ("VLC_DATA_PATH"); - return strdup ((path != NULL) ? path : PKGDATADIR); + const char *path = getenv("VLC_LIB_PATH"); + return strdup((path != NULL) ? path : PKGLIBDIR); } /** - * Determines the architecture-dependent data directory + * Determines the shared data directory * - * @return a string (always succeeds). + * @return a nul-terminated string or NULL. Use free() to release it. */ -VLC_WEAK char *config_GetLibDir(void) +static char *config_GetDataDir(void) { - const char *path = getenv("VLC_LIB_PATH"); - return strdup((path != NULL) ? path : PKGLIBDIR); + const char *path = getenv("VLC_DATA_PATH"); + if (path != NULL) + return strdup(path); + + char *libdir = config_GetLibDir(); + if (libdir == NULL) + return NULL; /* OOM */ + + /* Look for common prefix between lib and data directories. */ + size_t prefix_len = 0; + while (PKGLIBDIR[prefix_len] == PKGDATADIR[prefix_len]) + { + if (PKGLIBDIR[prefix_len] == '\0') + return libdir; /* corner case: directories are identical */ + prefix_len++; + } + + char *datadir = NULL; + + char *p = strstr(libdir, PKGLIBDIR + prefix_len); + if (p != NULL) + { + if (unlikely(asprintf(&datadir, "%.*s%s", (int)(p - libdir), libdir, + PKGDATADIR + prefix_len) == -1)) + datadir = NULL; + } + free (libdir); + return (datadir != NULL) ? datadir : strdup (PKGDATADIR); } char *config_GetSysPath(vlc_sysdir_t type, const char *filename) diff --git a/src/win32/dirs.c b/src/win32/dirs.c index 0cbb063780..f75002072e 100644 --- a/src/win32/dirs.c +++ b/src/win32/dirs.c @@ -206,7 +206,7 @@ error: #endif } -char *config_GetDataDir (void) +static char *config_GetDataDir(void) { const char *path = getenv ("VLC_DATA_PATH"); return (path != NULL) ? strdup (path) : config_GetLibDir (); _______________________________________________ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits