diff options
author | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2011-08-14 07:17:16 +0000 |
---|---|---|
committer | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2011-08-14 07:17:16 +0000 |
commit | 7bf4b536155b448b01f7e127be787177305a3b28 (patch) | |
tree | 6e7c2c4e8cc801960912f0b12f1fd88420e5eb0c /kwin | |
parent | 9edbe3af0952290b348c005f8095137444dcb16c (diff) | |
download | tdebase-7bf4b536155b448b01f7e127be787177305a3b28.tar.gz tdebase-7bf4b536155b448b01f7e127be787177305a3b28.zip |
Reload kompmgr settings on user switch
Check for null passwd struct in kdm kgapp
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdebase@1247005 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kwin')
-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 * |