summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchristos <christos@NetBSD.org>2005-12-20 21:32:20 +0000
committerchristos <christos@NetBSD.org>2005-12-20 21:32:20 +0000
commit349633b5fa37dfd989b3c7a802a1eecc71d4f992 (patch)
treedb85a0070ceb616eb1cb5868a997dd6d167beb54
parent724f51cbd9fbb88545261e8fc3c7b3b102195656 (diff)
make setuserenv and setuserpath take an environment setting function and
an environment pointer and expose them. bump version.
-rw-r--r--lib/libutil/login_cap.c28
-rw-r--r--lib/libutil/shlib_version4
2 files changed, 19 insertions, 13 deletions
diff --git a/lib/libutil/login_cap.c b/lib/libutil/login_cap.c
index 8e0ddb8e098..aeb8cf68b23 100644
--- a/lib/libutil/login_cap.c
+++ b/lib/libutil/login_cap.c
@@ -1,4 +1,4 @@
-/* $NetBSD: login_cap.c,v 1.22 2005/08/27 17:24:42 elad Exp $ */
+/* $NetBSD: login_cap.c,v 1.23 2005/12/20 21:32:20 christos Exp $ */
/*-
* Copyright (c) 1995,1997 Berkeley Software Design, Inc. All rights reserved.
@@ -36,7 +36,7 @@
#include <sys/cdefs.h>
#if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: login_cap.c,v 1.22 2005/08/27 17:24:42 elad Exp $");
+__RCSID("$NetBSD: login_cap.c,v 1.23 2005/12/20 21:32:20 christos Exp $");
#endif /* LIBC_SCCS and not lint */
#include <sys/types.h>
@@ -60,13 +60,12 @@ __RCSID("$NetBSD: login_cap.c,v 1.22 2005/08/27 17:24:42 elad Exp $");
#include <unistd.h>
#include <util.h>
-static void setuserpath(login_cap_t *, const char *);
static u_quad_t multiply(u_quad_t, u_quad_t);
static u_quad_t strtolimit(const char *, char **, int);
static u_quad_t strtosize(const char *, char **, int);
static int gsetrl(login_cap_t *, int, const char *, int type);
-static int setuserenv(login_cap_t *);
static int isinfinite(const char *);
+static int envset(void *, const char *, const char *, int);
login_cap_t *
login_getclass(const char *class)
@@ -481,7 +480,14 @@ gsetrl(login_cap_t *lc, int what, const char *name, int type)
}
static int
-setuserenv(login_cap_t *lc)
+/*ARGSUSED*/
+envset(void *envp, const char *name, const char *value, int overwrite)
+{
+ return setenv(name, value, overwrite);
+}
+
+int
+setuserenv(login_cap_t *lc, envfunc_t senv, void *envp)
{
const char *stop = ", \t";
int i, count;
@@ -525,7 +531,7 @@ setuserenv(login_cap_t *lc)
*ptr++ = '\0';
else
ptr = NULL;
- setenv(res[i], ptr ? ptr : "", 1);
+ (void)(*senv)(envp, res[i], ptr ? ptr : "", 1);
}
}
@@ -617,17 +623,17 @@ setusercontext(login_cap_t *lc, struct passwd *pwd, uid_t uid, u_int flags)
}
if (flags & LOGIN_SETENV)
- setuserenv(lc);
+ setuserenv(lc, envset, NULL);
if (flags & LOGIN_SETPATH)
- setuserpath(lc, pwd ? pwd->pw_dir : "");
+ setuserpath(lc, pwd ? pwd->pw_dir : "", envset, NULL);
login_close(flc);
return (0);
}
-static void
-setuserpath(login_cap_t *lc, const char *home)
+void
+setuserpath(login_cap_t *lc, const char *home, envfunc_t senv, void *envp)
{
size_t hlen, plen;
int cnt = 0;
@@ -675,7 +681,7 @@ setuserpath(login_cap_t *lc, const char *home)
cpath = _PATH_DEFPATH;
} else
cpath = _PATH_DEFPATH;
- if (setenv("PATH", cpath, 1))
+ if ((*senv)(envp, "PATH", cpath, 1))
warn("could not set PATH");
}
diff --git a/lib/libutil/shlib_version b/lib/libutil/shlib_version
index be40b5e107b..81f20554fb5 100644
--- a/lib/libutil/shlib_version
+++ b/lib/libutil/shlib_version
@@ -1,5 +1,5 @@
-# $NetBSD: shlib_version,v 1.37 2005/09/14 11:36:53 elad Exp $
+# $NetBSD: shlib_version,v 1.38 2005/12/20 21:32:20 christos Exp $
# Remember to update distrib/sets/lists/base/shl.* when changing
#
major=7
-minor=7
+minor=8