diff options
-rw-r--r-- | src/util.c | 47 | ||||
-rw-r--r-- | src/util.h | 6 | ||||
-rw-r--r-- | tests/meson.build | 1 |
3 files changed, 54 insertions, 0 deletions
@@ -397,3 +397,50 @@ verify_locale (const char *locale) return TRUE; return verify_xpg_locale (locale); } + +static char *userdir = NULL; +static char *sysconfdir = NULL; +static char *icondir = NULL; + +void +init_dirs (void) +{ + if (getuid() != 0 && + geteuid() != 0 && + g_getenv ("ROOTDIR") != NULL) { + userdir = g_build_filename (g_getenv ("ROOTDIR"), USERDIR, NULL); + icondir = g_build_filename (g_getenv ("ROOTDIR"), ICONDIR, NULL); + sysconfdir = g_build_filename (g_getenv ("ROOTDIR"), "etc", NULL); + return; + } + + userdir = g_strdup (USERDIR); + icondir = g_strdup (ICONDIR); + sysconfdir = g_strdup ("/etc/"); +} + +void +free_dirs (void) +{ + g_free (userdir); + g_free (icondir); + g_free (sysconfdir); +} + +const char * +get_userdir (void) +{ + return userdir; +} + +const char * +get_sysconfdir (void) +{ + return sysconfdir; +} + +const char * +get_icondir (void) +{ + return icondir; +} @@ -42,3 +42,9 @@ gint get_user_groups (const gchar *username, gboolean verify_xpg_locale (const char *locale); gboolean verify_locale (const char *locale); + +void init_dirs (void); +void free_dirs (void); +const char *get_userdir (void); +const char *get_sysconfdir (void); +const char *get_icondir (void); diff --git a/tests/meson.build b/tests/meson.build index b730270..0a72697 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -85,6 +85,7 @@ deps = [ foreach test_name : tests exe = executable(test_name, '@0@.c'.format(test_name), include_directories: top_inc, + c_args: cflags, dependencies: deps) test(test_name, exe) endforeach |