diff options
author | axel <axel@liljencrantz.se> | 2006-10-19 21:38:44 +1000 |
---|---|---|
committer | axel <axel@liljencrantz.se> | 2006-10-19 21:38:44 +1000 |
commit | f6815629fc25fc6c68d146fa51b5a98a1df54c39 (patch) | |
tree | 0be32961c71dbf268368e6cb0bfaca578b8684de /env.c | |
parent | 8b3bcd2c4c2949c6e91853d9d91fec3f59a0e232 (diff) |
Give USER and HOME default values if undefined
darcs-hash:20061019113844-ac50b-def2288d589f479779166ed64903e99c8c8ab71a.gz
Diffstat (limited to 'env.c')
-rw-r--r-- | env.c | 27 |
1 files changed, 26 insertions, 1 deletions
@@ -452,6 +452,27 @@ static void setup_path() al_destroy( &l ); } +static void env_set_defaults() +{ + if( !env_get( L"USER" ) ) + { + struct passwd *pw = getpwuid( getuid()); + wchar_t *unam = str2wcs( pw->pw_name ); + env_set( L"USER", unam, ENV_GLOBAL ); + free( unam ); + } + if( !env_get( L"HOME" ) ) + { + wchar_t *unam = env_get( L"USER" ); + char *unam_narrow = wcs2str( unam ); + struct passwd *pw = getpwnam( unam_narrow ); + wchar_t *dir = str2wcs( pw->pw_dir ); + env_set( L"HOME", dir, ENV_GLOBAL ); + free( dir ); + free( unam_narrow ); + } +} + void env_init() { char **p; @@ -570,7 +591,11 @@ void env_init() env_get( L"USER" ), &start_fishd, &universal_callback ); - + + /* + Set correct defaults for e.g. USER and HOME variables + */ + env_set_defaults(); } void env_destroy() |