diff options
author | jlemon <jlemon@FreeBSD.org> | 2001-09-21 02:09:01 +0000 |
---|---|---|
committer | jlemon <jlemon@FreeBSD.org> | 2001-09-21 02:09:01 +0000 |
commit | 23a6296f66439cc7d9d467f2d191b9baf8245fd4 (patch) | |
tree | 70854f89d7ad3dd52be1925818036e739a335f39 /sys/kern/kern_environment.c | |
parent | 7a4775391d50e1c0b95b4257c27f6ddac5045127 (diff) | |
download | FreeBSD-src-23a6296f66439cc7d9d467f2d191b9baf8245fd4.zip FreeBSD-src-23a6296f66439cc7d9d467f2d191b9baf8245fd4.tar.gz |
Revert last commit. The same functionality can be obtained through the
'kenv' command, which I obviously was unaware of.
Diffstat (limited to 'sys/kern/kern_environment.c')
-rw-r--r-- | sys/kern/kern_environment.c | 53 |
1 files changed, 27 insertions, 26 deletions
diff --git a/sys/kern/kern_environment.c b/sys/kern/kern_environment.c index 0ce8e63..6769c06 100644 --- a/sys/kern/kern_environment.c +++ b/sys/kern/kern_environment.c @@ -41,7 +41,6 @@ #include <sys/systm.h> #include <sys/sysctl.h> #include <sys/libkern.h> -#include <sys/sbuf.h> char *kern_envp; @@ -105,33 +104,35 @@ getenv_quad(const char *name, quad_t *data) static int sysctl_kernenv(SYSCTL_HANDLER_ARGS) { - const char *header[] = { - "---Loader Environment---", "---Static Environment---" }; - const int headerlen = 128; /* conservative */ - struct sbuf *sb; - int error, len; - char *cp; - - len = 0; - for (cp = kern_envp; cp != NULL; cp = kernenv_next(cp)) - len += strlen(cp) + 1; - for (cp = static_hints; cp != NULL; cp = kernenv_next(cp)) - len += strlen(cp) + 1; - sb = sbuf_new(NULL, NULL, len + headerlen, 0); - sbuf_printf(sb, "\n%s\n", header[0]); - for (cp = kern_envp; cp != NULL; cp = kernenv_next(cp)) - sbuf_printf(sb, "%s\n", cp); - sbuf_printf(sb, "\n%s\n", header[1]); - for (cp = static_hints; cp != NULL; cp = kernenv_next(cp)) - sbuf_printf(sb, "%s\n", cp); - sbuf_finish(sb); - error = SYSCTL_OUT(req, sbuf_data(sb), sbuf_len(sb)); - sbuf_delete(sb); - return (error); + int *name = (int *)arg1; + u_int namelen = arg2; + char *cp; + int i, error; + + if (kern_envp == NULL) + return(ENOENT); + + name++; + namelen--; + + if (namelen != 1) + return(EINVAL); + + cp = kern_envp; + for (i = 0; i < name[0]; i++) { + cp = kernenv_next(cp); + if (cp == NULL) + break; + } + + if (cp == NULL) + return(ENOENT); + + error = SYSCTL_OUT(req, cp, strlen(cp) + 1); + return (error); } -SYSCTL_OID(_kern, OID_AUTO, env, CTLTYPE_STRING | CTLFLAG_RD, - NULL, 0, sysctl_kernenv, "A", "Kernel environment"); +SYSCTL_NODE(_kern, OID_AUTO, environment, CTLFLAG_RD, sysctl_kernenv, "kernel environment space"); /* * Find the next entry after the one which (cp) falls within, return a |