diff options
author | ache <ache@FreeBSD.org> | 2002-06-28 14:45:30 +0000 |
---|---|---|
committer | ache <ache@FreeBSD.org> | 2002-06-28 14:45:30 +0000 |
commit | 47681d4a8a9137e3a8a7cd0c3a6e02e6c989543b (patch) | |
tree | 6a23ada956a67e75b03bad4077ddc7ca4fbef7fa /lib | |
parent | aafea422a54211f73e016cb9e1a9acee97fd998a (diff) | |
download | FreeBSD-src-47681d4a8a9137e3a8a7cd0c3a6e02e6c989543b.zip FreeBSD-src-47681d4a8a9137e3a8a7cd0c3a6e02e6c989543b.tar.gz |
Add additional field 'overwrite' to login_vars. It mainly needed to handle
"term" according to manpage, i.e. not overwrite it, if already present in
environment.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/libutil/login_class.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/lib/libutil/login_class.c b/lib/libutil/login_class.c index 726d09c..3930c03 100644 --- a/lib/libutil/login_class.c +++ b/lib/libutil/login_class.c @@ -113,17 +113,18 @@ static struct login_vars { const char *tag; const char *var; const char *def; + int overwrite; } pathvars[] = { - { "path", "PATH", NULL }, - { "cdpath", "CDPATH", NULL }, - { "manpath", "MANPATH", NULL }, - { NULL, NULL, NULL } + { "path", "PATH", NULL, 1}, + { "cdpath", "CDPATH", NULL, 1}, + { "manpath", "MANPATH", NULL, 1}, + { NULL, NULL, NULL, 0} }, envars[] = { - { "lang", "LANG", NULL }, - { "charset", "MM_CHARSET", NULL }, - { "timezone", "TZ", NULL }, - { "term", "TERM", NULL }, - { NULL, NULL, NULL } + { "lang", "LANG", NULL, 1}, + { "charset", "MM_CHARSET", NULL, 1}, + { "timezone", "TZ", NULL, 1}, + { "term", "TERM", NULL, 0}, + { NULL, NULL, NULL, 0} }; static char * @@ -202,7 +203,7 @@ setclassenvironment(login_cap_t *lc, const struct passwd * pwd, int paths) char * np = substvar(var, pwd, hlen, pch, nlen); if (np != NULL) { - setenv(vars->var, np, 1); + setenv(vars->var, np, vars->overwrite); free(np); } else if (vars->def != NULL) { setenv(vars->var, vars->def, 0); |