[Glibc-bsd-commits] r2738 - in trunk/freebsd-utils/debian: . patches

Aurelien Jarno aurel32 at alioth.debian.org
Sat Aug 22 18:08:33 UTC 2009


Author: aurel32
Date: 2009-08-22 18:08:33 +0000 (Sat, 22 Aug 2009)
New Revision: 2738

Added:
   trunk/freebsd-utils/debian/patches/019_kenv_sources.diff
   trunk/freebsd-utils/debian/patches/019_kenv_syscall.diff
Modified:
   trunk/freebsd-utils/debian/changelog
   trunk/freebsd-utils/debian/freebsd-utils-udeb.install
   trunk/freebsd-utils/debian/freebsd-utils.install
   trunk/freebsd-utils/debian/freebsd-utils.manpages
   trunk/freebsd-utils/debian/patches/series
   trunk/freebsd-utils/debian/rules
Log:
  * Add a /bin/kenv binary in both freebsd-utils and freebsd-utils-udeb.



Modified: trunk/freebsd-utils/debian/changelog
===================================================================
--- trunk/freebsd-utils/debian/changelog	2009-08-22 17:42:32 UTC (rev 2737)
+++ trunk/freebsd-utils/debian/changelog	2009-08-22 18:08:33 UTC (rev 2738)
@@ -1,10 +1,11 @@
-freebsd-utils (7.2-9) UNRELEASEd; urgency=low
+freebsd-utils (7.2-9) UNRELEASED; urgency=low
 
   * debian/rules: adjust start priority of freebsd-utils.init and 
     kldutils.init.
   * debian/freebsd-utils.init: avoid printing error messages during
     boot.
   * debian/rules: also fetch kenv in the get-orig-source.
+  * Add a /bin/kenv binary in both freebsd-utils and freebsd-utils-udeb.
 
  -- Aurelien Jarno <aurel32 at debian.org>  Sat, 22 Aug 2009 19:42:25 +0200
 

Modified: trunk/freebsd-utils/debian/freebsd-utils-udeb.install
===================================================================
--- trunk/freebsd-utils/debian/freebsd-utils-udeb.install	2009-08-22 17:42:32 UTC (rev 2737)
+++ trunk/freebsd-utils/debian/freebsd-utils-udeb.install	2009-08-22 18:08:33 UTC (rev 2738)
@@ -1,2 +1,3 @@
+bin/kenv/kenv				/bin
 sbin/sysctl/sysctl			/bin
 usr.bin/ktrace/ktrace    		/bin

Modified: trunk/freebsd-utils/debian/freebsd-utils.install
===================================================================
--- trunk/freebsd-utils/debian/freebsd-utils.install	2009-08-22 17:42:32 UTC (rev 2737)
+++ trunk/freebsd-utils/debian/freebsd-utils.install	2009-08-22 18:08:33 UTC (rev 2738)
@@ -1,3 +1,5 @@
+bin/kenv/kenv				/bin
+
 sbin/mount/mount			/lib/freebsd
 sbin/umount/umount			/lib/freebsd
 sbin/sysctl/sysctl			/lib/freebsd

Modified: trunk/freebsd-utils/debian/freebsd-utils.manpages
===================================================================
--- trunk/freebsd-utils/debian/freebsd-utils.manpages	2009-08-22 17:42:32 UTC (rev 2737)
+++ trunk/freebsd-utils/debian/freebsd-utils.manpages	2009-08-22 18:08:33 UTC (rev 2738)
@@ -1,3 +1,4 @@
+bin/kenv/kenv.1
 usr.bin/ktrace/ktrace.1
 sbin/dmesg/dmesg.8
 sbin/ccdconfig/ccdconfig.8

Added: trunk/freebsd-utils/debian/patches/019_kenv_sources.diff
===================================================================
--- trunk/freebsd-utils/debian/patches/019_kenv_sources.diff	                        (rev 0)
+++ trunk/freebsd-utils/debian/patches/019_kenv_sources.diff	2009-08-22 18:08:33 UTC (rev 2738)
@@ -0,0 +1,286 @@
+This patch is there to avoid regenerating a new .orig.tar.gz. It can be
+dropped when a new one is generated.
+
+--- a/bin/kenv/Makefile
++++ b/bin/kenv/Makefile
+@@ -0,0 +1,5 @@
++# $FreeBSD$
++
++PROG=	kenv
++
++.include <bsd.prog.mk>
+--- a/bin/kenv/kenv.1
++++ b/bin/kenv/kenv.1
+@@ -0,0 +1,77 @@
++.\"-
++.\" Copyright (c) 2000  Peter Wemm <peter at 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 September 13, 2005
++.Dt KENV 1
++.Os
++.Sh NAME
++.Nm kenv
++.Nd dump or modify the kernel environment
++.Sh SYNOPSIS
++.Nm
++.Op Fl hq
++.Nm
++.Op Fl q
++.Ar variable Ns Op = Ns Ar value
++.Nm
++.Op Fl q
++.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.
++.Pp
++If the
++.Fl q
++option is set, warnings normally printed as a result of being unable to
++perform the requested operation will be suppressed.
++.Sh SEE ALSO
++.Xr kenv 2 ,
++.Xr loader 8
++.Sh HISTORY
++The
++.Nm
++utility appeared in
++.Fx 4.1.1 .
+--- a/bin/kenv/kenv.c
++++ b/bin/kenv/kenv.c
+@@ -0,0 +1,192 @@
++/*-
++ * Copyright (c) 2000  Peter Wemm <peter at 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 <err.h>
++#include <kenv.h>
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.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 qflag = 0;
++static int uflag = 0;
++
++static void
++usage(void)
++{
++	(void)fprintf(stderr, "%s\n%s\n%s\n",
++	    "usage: kenv [-hq]",
++	    "       kenv [-q] variable[=value]",
++	    "       kenv [-q] -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, "hqu")) != -1) {
++		switch (ch) {
++		case 'h':
++			hflag++;
++			break;
++		case 'q':
++			qflag++;
++			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) {
++		error = kdumpenv();
++		if (error && !qflag)
++			warn("kdumpenv");
++	} else if (val == NULL) {
++		if (uflag) {
++			error = kunsetenv(env);
++			if (error && !qflag)
++				warnx("unable to unset %s", env);
++		} else {
++			error = kgetenv(env);
++			if (error && !qflag)
++				warnx("unable to get %s", env);
++		}
++	} else {
++		error = ksetenv(env, val);
++		if (error && !qflag)
++			warnx("unable to set %s to %s", env, val);
++	}
++	return (error);
++}
++
++static int
++kdumpenv()
++{
++	char *buf, *cp;
++	int buflen, envlen;
++
++	envlen = kenv(KENV_DUMP, NULL, NULL, 0);
++	if (envlen < 0)
++		return (-1);
++	for (;;) {
++		buflen = envlen * 120 / 100;
++		buf = malloc(buflen + 1);
++		if (buf == NULL)
++			return (-1);
++		memset(buf, 0, buflen + 1);	/* Be defensive */
++		envlen = kenv(KENV_DUMP, NULL, buf, buflen);
++		if (envlen < 0) {
++			free(buf);
++			return (-1);
++		}
++		if (envlen > buflen)
++			free(buf);
++		else
++			break;
++	}
++
++	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);
++}

Added: trunk/freebsd-utils/debian/patches/019_kenv_syscall.diff
===================================================================
--- trunk/freebsd-utils/debian/patches/019_kenv_syscall.diff	                        (rev 0)
+++ trunk/freebsd-utils/debian/patches/019_kenv_syscall.diff	2009-08-22 18:08:33 UTC (rev 2738)
@@ -0,0 +1,21 @@
+This patch is there to workaround a missing syscall in the glibc that
+will appear with version 2.10. It can be dropped when this version is
+available.
+
+--- a/bin/kenv/kenv.c
++++ b/bin/kenv/kenv.c
+@@ -45,6 +45,14 @@
+ static int qflag = 0;
+ static int uflag = 0;
+
++#if (GLIBC_MINOR <= 9)
++#include <sys/syscall.h>
++int kenv(int action, const char *name, char *value, int len)
++{
++	syscall(SYS_kenv, action, name, value, len); 
++}
++#endif
++
+ static void
+ usage(void)
+ {

Modified: trunk/freebsd-utils/debian/patches/series
===================================================================
--- trunk/freebsd-utils/debian/patches/series	2009-08-22 17:42:32 UTC (rev 2737)
+++ trunk/freebsd-utils/debian/patches/series	2009-08-22 18:08:33 UTC (rev 2738)
@@ -16,3 +16,5 @@
 016_swapon.diff
 017_sysctl.diff
 018_umount.diff
+019_kenv_sources.diff
+019_kenv_syscall.diff

Modified: trunk/freebsd-utils/debian/rules
===================================================================
--- trunk/freebsd-utils/debian/rules	2009-08-22 17:42:32 UTC (rev 2737)
+++ trunk/freebsd-utils/debian/rules	2009-08-22 18:08:33 UTC (rev 2738)
@@ -53,6 +53,7 @@
 freebsd-utils: freebsd-utils-stamp
 freebsd-utils-stamp: patch-stamp
 #	$(PMAKE) -C bin/chflags
+	$(PMAKE) -C bin/kenv
 	$(PMAKE) -C sbin/ccdconfig
 	$(PMAKE) -C sbin/dmesg
 	$(PMAKE) -C sbin/mdconfig
@@ -119,6 +120,7 @@
 	dh_testdir
 	dh_testroot
 	$(PMAKE) -C bin/chflags clean
+	[ ! -f bin/kenv/Makefile ] || $(PMAKE) -C bin/kenv clean
 	$(PMAKE) -C sbin/ccdconfig clean
 	$(PMAKE) -C sbin/dmesg clean
 	$(PMAKE) -C sbin/mdconfig clean




More information about the Glibc-bsd-commits mailing list