[vlc-devel] commit: XDG code factorization ( Rémi Denis-Courmont )
git version control
git at videolan.org
Sun May 4 21:09:51 CEST 2008
vlc | branch: master | Rémi Denis-Courmont <rem at videolan.org> | Sun May 4 22:00:51 2008 +0300| [09b452a36de6130d12d598f1159816b8bbe960b5]
XDG code factorization
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=09b452a36de6130d12d598f1159816b8bbe960b5
---
src/config/core.c | 80 ++++++++++++++++++-----------------------------------
1 files changed, 27 insertions(+), 53 deletions(-)
diff --git a/src/config/core.c b/src/config/core.c
index eb4ef23..c7a26c5 100644
--- a/src/config/core.c
+++ b/src/config/core.c
@@ -724,63 +724,58 @@ char *config_GetUserDir( void )
return GetDir( true );
}
-/**
- * Get the user's VLC configuration directory
- */
-char *config_GetConfigDir( libvlc_int_t *p_libvlc )
+static char *config_GetFooDir (libvlc_int_t *p_libvlc, const char *xdg_name,
+ const char *xdg_default)
{
char *psz_dir;
#if defined(WIN32) || defined(__APPLE__) || defined(SYS_BEOS)
char *psz_parent = config_GetUserDir();
- if( !psz_parent ) psz_parent = p_libvlc->psz_homedir;
+
+ if( !psz_parent )
+ psz_parent = p_libvlc->psz_homedir;
if( asprintf( &psz_dir, "%s" DIR_SEP CONFIG_DIR, psz_parent ) == -1 )
- return NULL;
+ psz_dir = NULL;
+
+ (void)xdg_name; (void)xdg_default;
return psz_dir;
#else
+ char var[sizeof ("XDG__HOME") + strlen (xdg_name)], *psz_env;
+
/* XDG Base Directory Specification - Version 0.6 */
- char *psz_env = getenv( "XDG_CONFIG_HOME" );
+ snprintf (var, sizeof (var), "XDG_%s_HOME", xdg_name);
+ psz_env = getenv (var);
if( psz_env )
{
if( asprintf( &psz_dir, "%s/vlc", psz_env ) == -1 )
return NULL;
return psz_dir;
}
+
psz_env = getenv( "HOME" );
- if( !psz_env ) psz_env = p_libvlc->psz_homedir; /* not part of XDG spec but we want a sensible fallback */
- if( asprintf( &psz_dir, "%s/.config/vlc", psz_env ) == -1 )
+ /* not part of XDG spec but we want a sensible fallback */
+ if( !psz_env )
+ psz_env = p_libvlc->psz_homedir;
+ if( asprintf( &psz_dir, "%s/%s/vlc", psz_env, xdg_default ) == -1 )
return NULL;
return psz_dir;
#endif
}
/**
+ * Get the user's VLC configuration directory
+ */
+char *config_GetConfigDir( libvlc_int_t *p_libvlc )
+{
+ return config_GetFooDir (p_libvlc, "CONFIG", ".config");
+}
+
+/**
* Get the user's VLC data directory
* (used for stuff like the skins, custom lua modules, ...)
*/
char *config_GetUserDataDir( libvlc_int_t *p_libvlc )
{
- char *psz_dir;
-#if defined(WIN32) || defined(__APPLE__) || defined(SYS_BEOS)
- char *psz_parent = config_GetUserDir();
- if( !psz_parent ) psz_parent = p_libvlc->psz_homedir;
- if( asprintf( &psz_dir, "%s" DIR_SEP CONFIG_DIR, psz_parent ) == -1 )
- return NULL;
- return psz_dir;
-#else
- /* XDG Base Directory Specification - Version 0.6 */
- char *psz_env = getenv( "XDG_DATA_HOME" );
- if( psz_env )
- {
- if( asprintf( &psz_dir, "%s/vlc", psz_env ) == -1 )
- return NULL;
- return psz_dir;
- }
- psz_env = getenv( "HOME" );
- if( !psz_env ) psz_env = p_libvlc->psz_homedir; /* not part of XDG spec but we want a sensible fallback */
- if( asprintf( &psz_dir, "%s/.local/share/vlc", psz_env ) == -1 )
- return NULL;
- return psz_dir;
-#endif
+ return config_GetFooDir (p_libvlc, "DATA", ".local/share");
}
/**
@@ -789,26 +784,5 @@ char *config_GetUserDataDir( libvlc_int_t *p_libvlc )
*/
char *config_GetCacheDir( libvlc_int_t *p_libvlc )
{
- char *psz_dir;
-#if defined(WIN32) || defined(__APPLE__) || defined(SYS_BEOS)
- char *psz_parent = config_GetUserDir();
- if( !psz_parent ) psz_parent = p_libvlc->psz_homedir;
- if( asprintf( &psz_dir, "%s" DIR_SEP CONFIG_DIR, psz_parent ) == -1 )
- return NULL;
- return psz_dir;
-#else
- /* XDG Base Directory Specification - Version 0.6 */
- char *psz_env = getenv( "XDG_CACHE_HOME" );
- if( psz_env )
- {
- if( asprintf( &psz_dir, "%s/vlc", psz_env ) == -1 )
- return NULL;
- return psz_dir;
- }
- psz_env = getenv( "HOME" );
- if( !psz_env ) psz_env = p_libvlc->psz_homedir; /* not part of XDG spec but we want a sensible fallback */
- if( asprintf( &psz_dir, "%s/.cache/vlc", psz_env ) == -1 )
- return NULL;
- return psz_dir;
-#endif
+ return config_GetFooDir (p_libvlc, "CACHE", ".cache");
}
More information about the vlc-devel
mailing list