00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include <stdlib.h>
00022 #include <unistd.h>
00023 #include <pwd.h>
00024
00025 #include "xmms_configuration.h"
00026 #include "xmmsc/xmmsc_util.h"
00027
00028
00029
00030
00031
00032 static const char *
00033 xdg_dir_get (const char *env, const char *default_dir, char *buf, int len)
00034 {
00035 struct passwd *pw;
00036 char *home;
00037
00038 if (!buf || len <= 0)
00039 return NULL;
00040
00041 home = getenv (env);
00042
00043 if (home && *home) {
00044 snprintf (buf, len, "%s/xmms2", home);
00045
00046 return buf;
00047 }
00048
00049 pw = getpwuid (getuid ());
00050 if (!pw)
00051 return NULL;
00052
00053 snprintf (buf, len, "%s/%s", pw->pw_dir, default_dir);
00054
00055 return buf;
00056 }
00057
00058
00059
00060
00061
00062
00063
00064 const char *
00065 xmms_usercachedir_get (char *buf, int len)
00066 {
00067 return xdg_dir_get ("XDG_CACHE_HOME", USERCACHEDIR, buf, len);
00068 }
00069
00070
00071
00072
00073
00074
00075
00076
00077 const char *
00078 xmms_userconfdir_get (char *buf, int len)
00079 {
00080 return xdg_dir_get ("XDG_CONFIG_HOME", USERCONFDIR, buf, len);
00081 }
00082
00083
00084
00085
00086
00087
00088
00089
00090 const char *
00091 xmms_fallback_ipcpath_get (char *buf, int len)
00092 {
00093 struct passwd *pw;
00094
00095 pw = getpwuid (getuid ());
00096 if (!pw || !pw->pw_name) {
00097 return NULL;
00098 }
00099
00100 snprintf (buf, len, "unix:///tmp/xmms-ipc-%s", pw->pw_name);
00101
00102 return buf;
00103 }