#include "configuration.h"
static char *configdir = NULL;
-static char *datadir = NULL;
static pthread_once_t once = PTHREAD_ONCE_INIT;
static void init_dirs( void )
{
configdir = config_GetUserDir(VLC_CONFIG_DIR);
- int ret = asprintf(&datadir, "%s/share", psz_vlcpath);
- if (ret == -1)
- datadir = NULL;
}
const char *config_GetConfDir( void )
return configdir;
}
-const char *config_GetDataDirDefault (void)
+char *config_GetDataDirDefault (void)
{
- pthread_once(&once, init_dirs);
+ char *datadir;
+
+ if (asprintf (&datadir, "%s/share", psz_vlcpath) == -1)
+ return NULL;
return datadir;
}
+const char *config_GetLibDir (void)
+{
+ abort ();
+}
+
static char *config_GetHomeDir (void)
{
const char *home = getenv ("HOME");
break;
}
+ // Default fallback
+ const char *name = "org.videolan.vlc";
+
CFBundleRef mainBundle = CFBundleGetMainBundle();
- CFStringRef identifierAsNS = CFBundleGetIdentifier(mainBundle);
- const char *identifier = CFStringGetCStringPtr(identifierAsNS, kCFStringEncodingUTF8);
-
+ if (mainBundle)
+ {
+ CFStringRef identifierAsNS = CFBundleGetIdentifier(mainBundle);
+ if (identifierAsNS)
+ {
+ char identifier[256];
+ Boolean ret = CFStringGetCString(identifierAsNS, identifier, sizeof(identifier), kCFStringEncodingUTF8);
+ if (ret)
+ name = identifier;
+ }
+ }
+
char *psz_parent = config_GetHomeDir ();
char *psz_dir;
- if( asprintf( &psz_dir, psz_path, psz_parent, identifier) == -1 )
+ if( asprintf( &psz_dir, psz_path, psz_parent, name) == -1 )
psz_dir = NULL;
free(psz_parent);