diff options
Diffstat (limited to 'kwin/kompmgr/kompmgr.c')
-rw-r--r-- | kwin/kompmgr/kompmgr.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/kwin/kompmgr/kompmgr.c b/kwin/kompmgr/kompmgr.c index 2aef59772..cb7ab2f59 100644 --- a/kwin/kompmgr/kompmgr.c +++ b/kwin/kompmgr/kompmgr.c @@ -74,6 +74,12 @@ check baghira.sf.net for more infos #define _BOTTOMHEIGHT_(x) ((x >> 8) & 0xff) #define _LEFTWIDTH_(x) (x & 0xff) +/* #define USE_ENV_HOME */ + +#ifndef USE_ENV_HOME +#include <pwd.h> +#endif + typedef struct _ignore { struct _ignore *next; unsigned long sequence; @@ -289,6 +295,30 @@ void handle_siguser (int sig) printf("Setting kompmgr process uid to %d...\n\r", uidnum); fflush(stdout); #endif setuid(uidnum); + +#ifdef USE_ENV_HOME + const char *home = getenv("HOME"); +#else + const char *home; + struct passwd *p; + p = getpwuid(uidnum); + if (p) + home = p->pw_dir; + else + home = getenv("HOME"); +#endif + const char *filename; + const char *configfile = "/.xcompmgrrc"; + int n = strlen(home)+strlen(configfile)+1; + filename = (char*)malloc(n*sizeof(char)); + memset(filename,0,n); + strcat(filename, home); + strcat(filename, configfile); + + loadConfig(filename); /* reload the configuration file */ + + free(filename); + filename = NULL; } fade * |