summaryrefslogtreecommitdiffstats
path: root/lib/libutil
diff options
context:
space:
mode:
authorache <ache@FreeBSD.org>2002-06-28 14:45:30 +0000
committerache <ache@FreeBSD.org>2002-06-28 14:45:30 +0000
commit47681d4a8a9137e3a8a7cd0c3a6e02e6c989543b (patch)
tree6a23ada956a67e75b03bad4077ddc7ca4fbef7fa /lib/libutil
parentaafea422a54211f73e016cb9e1a9acee97fd998a (diff)
downloadFreeBSD-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/libutil')
-rw-r--r--lib/libutil/login_class.c21
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);
OpenPOWER on IntegriCloud