aboutsummaryrefslogtreecommitdiffhomepage
path: root/env.c
diff options
context:
space:
mode:
authorGravatar axel <axel@liljencrantz.se>2006-10-19 21:38:44 +1000
committerGravatar axel <axel@liljencrantz.se>2006-10-19 21:38:44 +1000
commitf6815629fc25fc6c68d146fa51b5a98a1df54c39 (patch)
tree0be32961c71dbf268368e6cb0bfaca578b8684de /env.c
parent8b3bcd2c4c2949c6e91853d9d91fec3f59a0e232 (diff)
Give USER and HOME default values if undefined
darcs-hash:20061019113844-ac50b-def2288d589f479779166ed64903e99c8c8ab71a.gz
Diffstat (limited to 'env.c')
-rw-r--r--env.c27
1 files changed, 26 insertions, 1 deletions
diff --git a/env.c b/env.c
index 11d0f429..6805e180 100644
--- a/env.c
+++ b/env.c
@@ -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()