kenv(1) has been repo copied from usr.bin to bin.

Sometimes we need kenv(1) in /etc/rc.diskless*.
This commit is contained in:
David E. O'Brien 2003-01-20 17:56:25 +00:00
parent 8b6caf2634
commit d8ac087563
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=109574
5 changed files with 1 additions and 251 deletions

View File

@ -14,6 +14,7 @@ SUBDIR= cat \
expr \
getfacl \
hostname \
kenv \
kill \
ln \
ls \

View File

@ -80,7 +80,6 @@ SUBDIR= alias \
join \
jot \
kdump \
kenv \
keylogin \
keylogout \
killall \

View File

@ -1,6 +0,0 @@
# $FreeBSD$
PROG= kenv
WARNS?= 6
.include <bsd.prog.mk>

View File

@ -1,69 +0,0 @@
.\" Copyright (c) 2000 Peter Wemm <peter@FreeBSD.org>
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" $FreeBSD$
.\"
.Dd July 8, 2000
.Dt KENV 1
.Os
.Sh NAME
.Nm kenv
.Nd dump or modify the kernel environment
.Sh SYNOPSIS
.Nm
.Op Fl h
.Nm
.Ar variable Ns Op = Ns Ar value
.Nm
.Fl u
.Ar variable
.Sh DESCRIPTION
The
.Nm
utility will dump the kernel environment if
invoked without arguments.
If the
.Fl h
option is specified, it will limit the report to kernel probe hints.
If an optional
.Ar variable
name is specified,
.Nm
will only report that value.
If the
.Fl u
option is specified,
.Nm
will delete the given environment variable.
If the environment variable is followed by an optional
.Ar value ,
.Nm
will set the environment variable to this value.
.Sh SEE ALSO
.Xr kenv 2 ,
.Xr loader 8
.Sh HISTORY
The
.Nm
utility appeared in
.Fx 4.1.1 .

View File

@ -1,175 +0,0 @@
/*
* Copyright (c) 2000 Peter Wemm <peter@freebsd.org>
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
#include <sys/types.h>
#include <sys/sysctl.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <err.h>
#include <kenv.h>
#include <unistd.h>
static void usage(void);
static int kdumpenv(void);
static int kgetenv(char *);
static int ksetenv(char *, char *);
static int kunsetenv(char *);
static int hflag = 0;
static int uflag = 0;
static void
usage(void)
{
(void)fprintf(stderr, "%s\n%s\n%s\n",
"usage: kenv [-h]",
" kenv variable[=value]",
" kenv -u variable");
exit(1);
}
int
main(int argc, char **argv)
{
char *env, *eq, *val;
int ch, error;
error = 0;
val = NULL;
env = NULL;
while ((ch = getopt(argc, argv, "hu")) != -1) {
switch (ch) {
case 'h':
hflag++;
break;
case 'u':
uflag++;
break;
default:
usage();
}
}
argc -= optind;
argv += optind;
if (argc > 0) {
env = argv[0];
eq = strchr(env, '=');
if (eq != NULL) {
*eq++ = '\0';
val = eq;
}
argv++;
argc--;
}
if (hflag && (env != NULL))
usage();
if ((argc > 0) || (uflag && (env == NULL)))
usage();
if (env == NULL)
kdumpenv();
else if (val == NULL) {
if (uflag) {
error = kunsetenv(env);
if (error)
warnx("unable to unset %s", env);
} else {
error = kgetenv(env);
if (error)
warnx("unable to get %s", env);
}
} else {
error = ksetenv(env, val);
if (error)
warnx("unable to set %s to %s", env, val);
}
return (error);
}
static int
kdumpenv()
{
char *buf, *cp;
int len;
len = kenv(KENV_DUMP, NULL, NULL, 0);
len = len * 120 / 100;
buf = malloc(len);
if (buf == NULL)
return (-1);
/* Be defensive */
memset(buf, 0, len);
kenv(KENV_DUMP, NULL, buf, len);
for (; *buf != '\0'; buf += strlen(buf) + 1) {
if (hflag) {
if (strncmp(buf, "hint.", 5) != 0)
continue;
}
cp = strchr(buf, '=');
if (cp == NULL)
continue;
*cp++ = '\0';
printf("%s=\"%s\"\n", buf, cp);
buf = cp;
}
return (0);
}
static int
kgetenv(char *env)
{
char buf[1024];
int ret;
ret = kenv(KENV_GET, env, buf, sizeof(buf));
if (ret == -1)
return (ret);
printf("%s\n", buf);
return (0);
}
static int
ksetenv(char *env, char *val)
{
int ret;
ret = kenv(KENV_SET, env, val, strlen(val)+1);
if (ret == 0)
printf("%s=\"%s\"\n", env, val);
return (ret);
}
static int
kunsetenv(char *env)
{
int ret;
ret = kenv(KENV_UNSET, env, NULL, 0);
return (ret);
}