PERFORCE change 30750 for review

Peter Wemm peter at FreeBSD.org
Wed May 7 23:30:39 PDT 2003


http://perforce.freebsd.org/chv.cgi?CH=30750

Change 30750 by peter at peter_daintree on 2003/05/07 23:30:21

	IFC @30749

Affected files ...

.. //depot/projects/hammer/lib/libc/amd64/gen/modf.S#6 integrate
.. //depot/projects/hammer/lib/libc/amd64/gen/setjmp.S#5 integrate
.. //depot/projects/hammer/lib/libc/amd64/gen/sigsetjmp.S#5 integrate
.. //depot/projects/hammer/libexec/rtld-elf/rtld.c#7 integrate
.. //depot/projects/hammer/release/Makefile#17 integrate
.. //depot/projects/hammer/sbin/vinum/commands.c#7 integrate
.. //depot/projects/hammer/share/man/man5/disktab.5#3 integrate
.. //depot/projects/hammer/sys/dev/vinum/vinumioctl.c#7 integrate
.. //depot/projects/hammer/usr.sbin/pw/pw.8#3 integrate

Differences ...

==== //depot/projects/hammer/lib/libc/amd64/gen/modf.S#6 (text+ko) ====

@@ -40,7 +40,7 @@
 #if defined(LIBC_SCCS)
 	RCSID("$NetBSD: modf.S,v 1.5 1997/07/16 14:37:18 christos Exp $")
 #endif
-__FBSDID("$FreeBSD: src/lib/libc/amd64/gen/modf.S,v 1.1 2003/04/30 16:21:03 obrien Exp $");
+__FBSDID("$FreeBSD: src/lib/libc/amd64/gen/modf.S,v 1.2 2003/05/08 03:19:37 peter Exp $");
 
 /*
  * modf(value, iptr): return fractional part of value, and stores the

==== //depot/projects/hammer/lib/libc/amd64/gen/setjmp.S#5 (text+ko) ====

@@ -38,7 +38,7 @@
 	.asciz "@(#)setjmp.s	5.1 (Berkeley) 4/23/90"
 #endif /* LIBC_SCCS and not lint */
 #include <machine/asm.h>
-__FBSDID("$FreeBSD: src/lib/libc/amd64/gen/setjmp.S,v 1.23 2003/04/30 18:09:33 peter Exp $");
+__FBSDID("$FreeBSD: src/lib/libc/amd64/gen/setjmp.S,v 1.24 2003/05/08 06:25:03 peter Exp $");
 
 /*
  * C library -- _setjmp, _longjmp
@@ -55,9 +55,9 @@
 ENTRY(setjmp)
 	pushq	%rdi
 	movq	%rdi,%rcx
-	leaq	72(%rcx),%rdi		/* (sigset_t*)oset */
+	movq	$1,%rdi			/* SIG_BLOCK       */
 	movq	$0,%rsi			/* (sigset_t*)set  */
-	movq	$1,%rdx			/* SIG_BLOCK       */
+	leaq	72(%rcx),%rdx		/* (sigset_t*)oset */
 	call	PIC_PLT(CNAME(_sigprocmask))
 	popq	%rdi
 	movq	%rdi,%rcx
@@ -80,9 +80,9 @@
 	pushq	%rdi
 	pushq	%rsi
 	movq	%rdi,%rdx
-	movq	$0,%rdi			/* (sigset_t*)oset */
+	movq	$1,%rdi			/* SIG_SETMASK     */
 	leaq	72(%rdx),%rsi		/* (sigset_t*)set  */
-	movq	$3,%rdx			/* SIG_SETMASK     */
+	movq	$0,%rdx			/* (sigset_t*)oset */
 	call	PIC_PLT(CNAME(_sigprocmask))
 	popq	%rsi
 	popq	%rdi			/* jmpbuf */

==== //depot/projects/hammer/lib/libc/amd64/gen/sigsetjmp.S#5 (text+ko) ====

@@ -41,7 +41,7 @@
 	.asciz "$Id: sigsetjmp.S,v 1.1 1993/12/05 13:01:05 ats Exp $"
 #endif /* LIBC_SCCS and not lint */
 #include <machine/asm.h>
-__FBSDID("$FreeBSD: src/lib/libc/amd64/gen/sigsetjmp.S,v 1.25 2003/04/30 18:09:33 peter Exp $");
+__FBSDID("$FreeBSD: src/lib/libc/amd64/gen/sigsetjmp.S,v 1.26 2003/05/08 06:25:03 peter Exp $");
 
 #include "SYS.h"
 
@@ -58,18 +58,17 @@
  */
 
 ENTRY(sigsetjmp)
-	pushq	%rdi
-	movq	%rdi,%rcx
-	movl	%esi,88(%rcx)
+	movl	%esi,88(%rdi)
 	testl	%esi,%esi
 	jz	2f
-	leaq	72(%rcx),%rdi		/* (sigset_t*)oset */
+	pushq	%rdi
+	movq	$1,%rdi			/* SIG_BLOCK       */
 	movq	$0,%rsi			/* (sigset_t*)set  */
-	movq	$1,%rdx			/* SIG_BLOCK       */
+	leaq	72(%rcx),%rdx		/* (sigset_t*)oset */
 	call	PIC_PLT(CNAME(_sigprocmask))
 	popq	%rdi
-	movq	%rdi,%rcx
-2:	movq	0(%rsp),%rdx		/* retval */
+2:	movq	%rdi,%rcx
+	movq	0(%rsp),%rdx		/* retval */
 	movq	%rdx, 0(%rcx)		/* retval */
 	movq	%rbx, 8(%rcx)
 	movq	%rsp,16(%rcx)
@@ -90,9 +89,9 @@
 	movq	%rdi,%rdx
 	pushq	%rdi
 	pushq	%rsi
-	movq	$0,%rdi			/* (sigset_t*)oset */
+	movq	$3,%rdi			/* SIG_SETMASK     */
 	leaq	72(%rdx),%rsi		/* (sigset_t*)set  */
-	movq	$3,%rdx			/* SIG_SETMASK     */
+	movq	$0,%rdx			/* (sigset_t*)oset */
 	call	PIC_PLT(CNAME(_sigprocmask))
 	popq	%rsi
 	popq	%rdi			/* jmpbuf */

==== //depot/projects/hammer/libexec/rtld-elf/rtld.c#7 (text+ko) ====

@@ -23,7 +23,7 @@
  * (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: src/libexec/rtld-elf/rtld.c,v 1.78 2003/05/04 00:56:00 obrien Exp $
+ * $FreeBSD: src/libexec/rtld-elf/rtld.c,v 1.79 2003/05/08 01:31:36 kan Exp $
  */
 
 /*
@@ -126,6 +126,7 @@
 static void unlink_object(Obj_Entry *);
 static void unload_object(Obj_Entry *);
 static void unref_dag(Obj_Entry *);
+static void ref_dag(Obj_Entry *);
 
 void r_debug_state(struct r_debug*, struct link_map*);
 
@@ -361,7 +362,6 @@
     *obj_tail = obj_main;
     obj_tail = &obj_main->next;
     obj_count++;
-    obj_main->refcount++;
     /* Make sure we don't call the main program's init and fini functions. */
     obj_main->init = obj_main->fini = NULL;
 
@@ -383,8 +383,10 @@
 	die();
 
     /* Make a list of all objects loaded at startup. */
-    for (obj = obj_list;  obj != NULL;  obj = obj->next)
+    for (obj = obj_list;  obj != NULL;  obj = obj->next) {
 	objlist_push_tail(&list_main, obj);
+    	obj->refcount++;
+    }
 
     if (ld_tracing) {		/* We're done */
 	trace_loaded_objects(obj_main);
@@ -970,6 +972,8 @@
 
     if (donelist_check(dlp, obj))
 	return;
+
+    obj->refcount++;
     objlist_push_tail(&obj->dldags, root);
     objlist_push_tail(&root->dagmembers, obj);
     for (needed = obj->needed;  needed != NULL;  needed = needed->next)
@@ -1223,7 +1227,6 @@
     } else
 	free(path);
 
-    obj->refcount++;
     return obj;
 }
 
@@ -1579,6 +1582,7 @@
 
     /* Unreference the object and its dependencies. */
     root->dl_refcount--;
+
     unref_dag(root);
 
     if (root->refcount == 0) {
@@ -1682,8 +1686,14 @@
 		/* Make list of init functions to call. */
 		initlist_add_objects(obj, &obj->next, &initlist);
 	    }
-	} else if (ld_tracing)
-	    goto trace;
+	} else {
+
+	    /* Bump the reference counts for objects on this DAG. */
+	    ref_dag(obj);
+
+	    if (ld_tracing)
+		goto trace;
+	}
     }
 
     GDB_STATE(RT_CONSISTENT,obj ? &obj->linkmap : NULL);
@@ -2405,7 +2415,6 @@
 static void
 unlink_object(Obj_Entry *root)
 {
-    const Needed_Entry *needed;
     Objlist_Entry *elm;
 
     if (root->refcount == 0) {
@@ -2413,25 +2422,28 @@
 	objlist_remove(&list_global, root);
 
     	/* Remove the object from all objects' DAG lists. */
-    	STAILQ_FOREACH(elm, &root->dagmembers , link)
+    	STAILQ_FOREACH(elm, &root->dagmembers , link) {
 	    objlist_remove(&elm->obj->dldags, root);
+	    if (elm->obj != root)
+		unlink_object(elm->obj);
+	}
     }
+}
 
-    for (needed = root->needed;  needed != NULL;  needed = needed->next)
-	if (needed->obj != NULL)
-	    unlink_object(needed->obj);
+static void
+ref_dag(Obj_Entry *root)
+{
+    Objlist_Entry *elm;
+
+    STAILQ_FOREACH(elm, &root->dagmembers , link)
+	elm->obj->refcount++;
 }
 
 static void
 unref_dag(Obj_Entry *root)
 {
-    const Needed_Entry *needed;
+    Objlist_Entry *elm;
 
-    if (root->refcount == 0)
-	return;
-    root->refcount--;
-    if (root->refcount == 0) 
-	for (needed = root->needed;  needed != NULL;  needed = needed->next)
-	    if (needed->obj != NULL)
-		unref_dag(needed->obj);
+    STAILQ_FOREACH(elm, &root->dagmembers , link)
+	elm->obj->refcount--;
 }

==== //depot/projects/hammer/release/Makefile#17 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/release/Makefile,v 1.774 2003/05/05 07:58:42 markm Exp $
+# $FreeBSD: src/release/Makefile,v 1.775 2003/05/08 03:25:17 obrien Exp $
 #
 # make release [BUILDNAME=somename] CHROOTDIR=/some/dir CVSROOT=/cvs/dir \
 #     [RELEASETAG=tag]
@@ -756,6 +756,117 @@
 .endif
 	touch release.9
 
+release.9.alpha:
+.if ${TARGET_ARCH} != "ia64" || ${TARGET_ARCH} == ${MACHINE_ARCH}
+	cp ${RD}/trees/base/etc/disktab /etc
+	rm -rf ${RD}/mfsfd
+	mkdir ${RD}/mfsfd
+	cd ${RD}/mfsfd && \
+		mkdir -p etc/defaults dev mnt stand/etc/defaults stand/help
+	@cd ${.CURDIR} && $(MAKE) installCRUNCH CRUNCH=boot \
+		DIR=${RD}/mfsfd/stand ZIP=false
+	( cd ${RD}/mfsfd && \
+	  for dir in bin sbin ; do \
+		ln -sf /stand $$dir; \
+	  done )
+	cp ${RD}/trees/base/sbin/dhclient-script ${RD}/mfsfd/stand
+.if ${TARGET} == "pc98"
+	cp ${.CURDIR}/../etc/defaults/pccard.conf ${RD}/mfsfd/etc/defaults/pccard.conf
+.endif
+	cp ${.CURDIR}/../etc/usbd.conf ${RD}/mfsfd/etc/usbd.conf
+	( for F in defaults/rc.conf netconfig protocols ; do \
+		sed -e '/^#.*$$/d' -e 's/[:space:]*#.*$$//g' \
+		${RD}/trees/base/etc/$$F > ${RD}/mfsfd/stand/etc/$$F ; \
+	  done )
+	grep -E '^(ftp|nameserver|domain|sunrpc|cmd|nfsd)[^-\w]' \
+	    ${RD}/trees/base/etc/services | \
+	    sed -e '/^#.*$$/d' -e 's/[:space:]*#.*$$//g' \
+	    > ${RD}/mfsfd/stand/etc/services
+	ln ${RD}/mfsfd/stand/etc/services ${RD}/mfsfd/etc/services
+	ln ${RD}/mfsfd/stand/etc/netconfig ${RD}/mfsfd/etc/netconfig
+	cp ${RD}/trees/base/COPYRIGHT ${RD}/mfsfd/stand/help/COPYRIGHT.hlp
+.if !defined(NODOC)
+	@for i in ${DIST_DOCS_ARCH_INDEP}; do \
+	  cp ${RND}/${RELNOTES_LANG}/$$i/article.txt ${RD}/mfsfd/stand/help/`echo $${i} | tr 'a-z' 'A-Z'`.TXT; \
+	done
+	@for i in ${DIST_DOCS_ARCH_DEP}; do \
+	  cp ${RND}/${RELNOTES_LANG}/$$i/${TARGET}/article.txt ${RD}/mfsfd/stand/help/`echo $${i} | tr 'a-z' 'A-Z'`.TXT; \
+	done
+	@mv ${RD}/mfsfd/stand/help/INSTALLATION.TXT ${RD}/mfsfd/stand/help/INSTALL.TXT
+	@mv ${RD}/mfsfd/stand/help/EARLY-ADOPTER.TXT ${RD}/mfsfd/stand/help/EARLY.TXT
+.endif
+	-test -f ${.CURDIR}/install.cfg && cp ${.CURDIR}/install.cfg ${RD}/mfsfd
+	@mkdir -p ${RD}/mfsfd/boot
+.if ${TARGET_ARCH} != "ia64"
+	@cp ${RD}/trees/base/boot/boot* ${RD}/mfsfd/boot
+.endif
+.if ${TARGET} == "i386"
+	@cp ${RD}/trees/base/boot/mbr ${RD}/mfsfd/boot
+.endif
+	@echo "Making the regular boot floppy."
+	@tar --exclude CVS -cf - -C ${.CURDIR}/../usr.sbin/sysinstall help | \
+		tar xf - -C ${RD}/mfsfd/stand
+.if ${TARGET_ARCH} == "alpha" && !defined(NO_FLOPPIES)
+	rm -rf ${RD}/mfsfd/stand/help/*
+.endif
+.if defined(SMALLBOOTSIZE)
+.if exists(${.CURDIR}/${TARGET}/drivers-small.conf)
+	@rm -rf ${RD}/mfsfd/modules
+	@mkdir -p ${RD}/mfsfd/modules
+	@awk -f  ${.CURDIR}/scripts/driver-copy2.awk 2 \
+	    ${.CURDIR}/${TARGET}/drivers-small.conf \
+	    ${RD}/trees/base/boot/kernel ${RD}/mfsfd/modules
+.endif
+	sh -e ${DOFS_SH} mfsroot ${RD} ${MNT} \
+		${MFSSIZE} ${RD}/mfsfd ${MFSINODE} ${MFSLABEL}
+	@gzip -9vc mfsroot > mfsroot.gz
+	@sh -e ${DOFS_SH} ${RD}/floppies/mfsroot-small.flp \
+		${RD} ${MNT} ${SMALLBOOTSIZE} mfsroot.gz \
+		${BOOTINODE} ${SMALLBOOTLABEL}
+.endif
+.if exists(${.CURDIR}/${TARGET}/drivers.conf)
+	@rm -rf ${RD}/mfsfd/modules
+	@mkdir -p ${RD}/mfsfd/modules
+	@awk -f  ${.CURDIR}/scripts/driver-copy2.awk 2 \
+	    ${.CURDIR}/${TARGET}/drivers.conf \
+	    ${RD}/trees/base/boot/kernel ${RD}/mfsfd/modules
+	@rm -rf ${RD}/driversfd
+	@mkdir ${RD}/driversfd
+	@awk -f  ${.CURDIR}/scripts/driver-copy2.awk 3 \
+	    ${.CURDIR}/${TARGET}/drivers.conf \
+	    ${RD}/trees/base/boot/kernel ${RD}/driversfd
+	- at rmdir ${RD}/driversfd
+	if [ -d ${RD}/driversfd ]; then \
+	    sh -e ${DOFS_SH} \
+		${RD}/floppies/drivers.flp ${RD} ${MNT} ${DRIVERSIZE} \
+		${RD}/driversfd ${DRIVERINODE} ${DRIVERLABEL}; \
+	    cd ${RD}/driversfd && awk -f  ${.CURDIR}/scripts/driver-desc.awk \
+		*.dsc >> ${RD}/floppies/DRIVERS.TXT; \
+	fi
+.endif
+	sh -e ${DOFS_SH} mfsroot ${RD} ${MNT} \
+		${MFSSIZE} ${RD}/mfsfd ${MFSINODE} ${MFSLABEL}
+	@gzip -9vc mfsroot > mfsroot.gz
+	@mkdir -p ${RD}/mfsroot
+	@cp mfsroot.gz ${RD}/mfsroot
+.if !defined(NO_FLOPPIES)
+.if defined(BOOTSIZE)
+	@sh -e ${DOFS_SH} ${RD}/floppies/mfsroot.flp \
+		${RD} ${MNT} ${BOOTSIZE} mfsroot.gz ${BOOTINODE} ${BOOTLABEL}
+	@cd ${.CURDIR} && ${MAKE} doMFSKERN FSIMAGE=kern
+.endif
+.if defined(SMALLBOOTSIZE)
+	@cd ${.CURDIR} && ${MAKE} doMFSKERN FSIMAGE=kern-small FDSIZE=SMALL
+.endif
+.if defined(BIGBOOTSIZE)
+	@cd ${.CURDIR} && ${MAKE} doMFSKERN FSIMAGE=boot FDSIZE=BIG
+.endif
+.endif
+	@rm mfsroot mfsroot.gz
+	@echo "Regular and MFS boot floppies made."
+.endif
+	touch release.9.alpha
+
 #
 # --==## Create a fixit floppy ##==--
 #
@@ -972,8 +1083,14 @@
 		   md5 * > CHECKSUM.MD5) \
 	)
 
+.if ${TARGET_ARCH} == "alpha"
+RELEASE9=release.9.${TARGET_ARCH}
+.else
+RELEASE9=release.9 
+.endif
+
 doRELEASE:  release.1 release.2 release.3 ${DOCREL} release.4 release.5 \
-		release.6 release.7 release.8 release.9 ${FIXIT_TARGET}
+		release.6 release.7 release.8 ${RELEASE9} ${FIXIT_TARGET}
 	@cd ${.CURDIR} && ${MAKE} ${EXTRAS}
 	@echo "Release done"
 

==== //depot/projects/hammer/sbin/vinum/commands.c#7 (text+ko) ====

@@ -36,8 +36,8 @@
  * otherwise) arising in any way out of the use of this software, even if
  * advised of the possibility of such damage.
  *
- * $Id: commands.c,v 1.23 2003/05/04 05:23:59 grog Exp grog $
- * $FreeBSD: src/sbin/vinum/commands.c,v 1.51 2003/05/05 22:49:23 obrien Exp $
+ * $Id: commands.c,v 1.24 2003/05/07 03:17:43 grog Exp grog $
+ * $FreeBSD: src/sbin/vinum/commands.c,v 1.52 2003/05/08 00:33:57 grog Exp $
  */
 
 #include "vext.h"
@@ -160,18 +160,12 @@
 	    strcat(buffer, " ");
 	}
     }
-    if (ioctl(superdev, VINUM_STARTCONFIG, &force)) {	    /* can't get config? */
-	fprintf(stderr, "Can't configure: %s (%d)\n", strerror(errno), errno);
-	return;
-    }
     ioctl(superdev, VINUM_READCONFIG, &buffer);
     if (reply->error != 0) {				    /* error in config */
 	fprintf(stdout, "** %s: %s\n", reply->msg, strerror(reply->error));
-	error = ioctl(superdev, VINUM_RELEASECONFIG, NULL); /* save the config to disk */
 	if (error != 0)
 	    perror("Can't save Vinum config");
     } else {
-	error = ioctl(superdev, VINUM_RELEASECONFIG, NULL); /* save the config to disk */
 	if (error != 0)
 	    perror("Can't save Vinum config");
 	if (no_devfs)

==== //depot/projects/hammer/share/man/man5/disktab.5#3 (text+ko) ====

@@ -30,7 +30,7 @@
 .\" SUCH DAMAGE.
 .\"
 .\"     @(#)disktab.5	8.1 (Berkeley) 6/5/93
-.\" $FreeBSD: src/share/man/man5/disktab.5,v 1.11 2002/12/12 17:25:57 ru Exp $
+.\" $FreeBSD: src/share/man/man5/disktab.5,v 1.12 2003/05/08 00:14:48 trhodes Exp $
 .\"
 .Dd June 5, 1993
 .Dt DISKTAB 5
@@ -54,16 +54,15 @@
 .Xr termcap 5
 terminal data base.  Entries in
 .Nm
-consist of a number of `:' separated fields.  The
-first entry for each disk gives the names which are
-known for the disk, separated by `|' characters.  The
+consist of a number of `:'-separated fields.  The
+first field for each entry gives the names by which a
+disk's entry may be selected, separated by `|' characters.  The
 last name given should be a long name fully identifying
 the disk.
 .Pp
-The following list indicates the normal values
-stored for each disk entry.
+The optional fields for each entry are:
 .Bl -column "indent" "boolx"
-.It Sy "Name	Type	Description"
+.It Sy "ID	Type	Description"
 .It "\&ty	str	Type of disk (e.g. removable, winchester)"
 .It "\&dt	str	Type of controller (e.g."
 .Tn SMD , ESDI ,
@@ -86,6 +85,8 @@
 .It "\&d[0-4]	num	Drive-type-dependent parameters"
 .It "\&bs	num	Boot block size, default"
 .Dv BBSIZE
+.It "\&b[0-1]	num	Boot block filenames; see"
+.Xr bsdlabel 8
 .It "\&sb	num	Superblock size, default"
 .Dv SBSIZE
 .It "\&ba	num	Block size for partition `a' (bytes)"

==== //depot/projects/hammer/sys/dev/vinum/vinumioctl.c#7 (text+ko) ====

@@ -41,8 +41,8 @@
  * otherwise) arising in any way out of the use of this software, even if
  * advised of the possibility of such damage.
  *
- * $Id: vinumioctl.c,v 1.21 2003/05/04 05:23:09 grog Exp grog $
- * $FreeBSD: src/sys/dev/vinum/vinumioctl.c,v 1.45 2003/05/05 08:41:53 grog Exp $
+ * $Id: vinumioctl.c,v 1.22 2003/05/07 03:31:45 grog Exp grog $
+ * $FreeBSD: src/sys/dev/vinum/vinumioctl.c,v 1.46 2003/05/08 00:36:20 grog Exp $
  */
 
 #include <dev/vinum/vinumhdr.h>
@@ -303,9 +303,6 @@
 	return error;
 
     case VINUM_READCONFIG:
-	error = lock_config();				    /* get the config for us alone */
-	if (error)					    /* can't do it, */
-	    return error;				    /* give up */
 	if (((char *) data)[0] == '\0')
 	    ioctl_reply->error = vinum_scandisk(NULL);	    /* built your own list */
 	else
@@ -317,7 +314,6 @@
 		strcpy(ioctl_reply->msg, "no drives found");
 	} else if (ioctl_reply->error)
 	    strcpy(ioctl_reply->msg, "can't read configuration information, see log file");
-	unlock_config();
 	return 0;					    /* must be 0 to return the real error info */
 
     case VINUM_INIT:

==== //depot/projects/hammer/usr.sbin/pw/pw.8#3 (text+ko) ====

@@ -22,7 +22,7 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.\" $FreeBSD: src/usr.sbin/pw/pw.8,v 1.32 2002/12/12 17:26:03 ru Exp $
+.\" $FreeBSD: src/usr.sbin/pw/pw.8,v 1.33 2003/05/08 00:28:36 trhodes Exp $
 .\"
 .Dd December 9, 1996
 .Dt PW 8
@@ -912,6 +912,14 @@
 .Xr fingerd 8 ,
 and a small number of TCP/IP clients, such as IRC, where full names
 specified in the passwd file may be used by default.
+.Pp
+The
+.Nm
+utility writes a log to the
+.Pa /var/log/userlog
+file when actions such as user or group additions or deletions occur.
+The location of this logfile can be changed in
+.Xr pw.conf 5 .
 .Sh FILES
 .Bl -tag -width /etc/master.passwd.new -compact
 .It Pa /etc/master.passwd
@@ -930,6 +938,8 @@
 Temporary copy of the group file
 .It Pa /etc/pw.conf
 Pw default options file
+.It Pa /var/log/userlog
+User/group modification logfile
 .El
 .Sh SEE ALSO
 .Xr chpass 1 ,


More information about the p4-projects mailing list