From 46c39c8e9c2e0ec3ba1bf8dc37e6e3e5efb59a08 Mon Sep 17 00:00:00 2001 From: =?utf8?q?R=C3=A9mi=20Denis-Courmont?= Date: Thu, 22 May 2008 20:32:25 +0300 Subject: [PATCH] Make config_GetHomeDir return a const string too --- include/vlc_main.h | 2 +- src/config/configuration.h | 2 +- src/config/dirs.c | 20 +++++++++----------- src/libvlc-common.c | 1 - 4 files changed, 11 insertions(+), 14 deletions(-) diff --git a/include/vlc_main.h b/include/vlc_main.h index 2168788368..58dcc8e043 100644 --- a/include/vlc_main.h +++ b/include/vlc_main.h @@ -37,7 +37,7 @@ struct libvlc_int_t VLC_COMMON_MEMBERS /* Global properties */ - char * psz_homedir; ///< user's home directory + const char * psz_homedir; ///< user's home directory global_stats_t *p_stats; ///< Global statistics diff --git a/src/config/configuration.h b/src/config/configuration.h index a26bd27cc4..bd7ae607ff 100644 --- a/src/config/configuration.h +++ b/src/config/configuration.h @@ -43,7 +43,7 @@ void config_UnsetCallbacks( module_config_t *, size_t ); #define config_LoadConfigFile(a,b) __config_LoadConfigFile(VLC_OBJECT(a),b) int __config_LoadCmdLine ( vlc_object_t *, int *, const char *[], bool ); -char *config_GetHomeDir ( void ); +const char *config_GetHomeDir ( void ); char *config_GetCustomConfigFile( libvlc_int_t * ); int __config_LoadConfigFile( vlc_object_t *, const char * ); diff --git a/src/config/dirs.c b/src/config/dirs.c index de1a1c748f..00d949ad18 100644 --- a/src/config/dirs.c +++ b/src/config/dirs.c @@ -92,6 +92,7 @@ const char *config_GetConfDir( void ) static const char *GetDir( bool b_appdata ) { + /* FIXME: a full memory page here - quite a waste... */ static char homedir[PATH_MAX] = ""; #if defined (WIN32) @@ -153,43 +154,40 @@ static const char *GetDir( bool b_appdata ) /** * Get the user's home directory */ -char *config_GetHomeDir( void ) +const char *config_GetHomeDir( void ) { - return strdup (GetDir( false )); + return GetDir (false); } static char *config_GetFooDir (const char *xdg_name, const char *xdg_default) { char *psz_dir; #if defined(WIN32) || defined(__APPLE__) || defined(SYS_BEOS) - char *psz_parent = strdup (GetDir (true)); + const char *psz_parent = GetDir (true); if( asprintf( &psz_dir, "%s" DIR_SEP CONFIG_DIR, psz_parent ) == -1 ) psz_dir = NULL; - free (psz_parent); (void)xdg_name; (void)xdg_default; #else char var[sizeof ("XDG__HOME") + strlen (xdg_name)]; - /* XDG Base Directory Specification - Version 0.6 */ snprintf (var, sizeof (var), "XDG_%s_HOME", xdg_name); - char *psz_home = getenv( var ); - psz_home = psz_home ? FromLocaleDup( psz_home ) : NULL; + + const char *psz_home = getenv (var); + psz_home = psz_home ? FromLocale (psz_home) : NULL; if( psz_home ) { if( asprintf( &psz_dir, "%s/vlc", psz_home ) == -1 ) psz_dir = NULL; - goto out; + LocaleFree (psz_home); + return psz_dir; } /* Try HOME, then fallback to non-XDG dirs */ psz_home = config_GetHomeDir(); if( asprintf( &psz_dir, "%s/%s/vlc", psz_home, xdg_default ) == -1 ) psz_dir = NULL; - -out: - free (psz_home); #endif return psz_dir; } diff --git a/src/libvlc-common.c b/src/libvlc-common.c index 2efc6c80d8..2811eb7b9e 100644 --- a/src/libvlc-common.c +++ b/src/libvlc-common.c @@ -1065,7 +1065,6 @@ int libvlc_InternalDestroy( libvlc_int_t *p_libvlc, bool b_release ) /* Free module bank. It is refcounted, so we call this each time */ module_EndBank( p_libvlc ); - FREENULL( p_libvlc->psz_homedir ); FREENULL( priv->psz_configfile ); var_DelCallback( p_libvlc, "key-pressed", vlc_key_to_action, p_libvlc->p_hotkeys ); -- 2.39.2