Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 25 Jun 2009 18:44:48 GMT
From:      Alexander Motin <mav@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 165191 for review
Message-ID:  <200906251844.n5PIimPl068720@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=165191

Change 165191 by mav@mav_mavbook on 2009/06/25 18:44:22

	IFC

Affected files ...

.. //depot/projects/scottl-camlock/src/bin/sh/exec.c#4 integrate
.. //depot/projects/scottl-camlock/src/bin/sh/expand.c#3 integrate
.. //depot/projects/scottl-camlock/src/bin/sh/sh.1#4 integrate
.. //depot/projects/scottl-camlock/src/lib/libc/gen/Symbol.map#5 integrate
.. //depot/projects/scottl-camlock/src/lib/libc/gen/semctl.c#2 integrate
.. //depot/projects/scottl-camlock/src/lib/libc/include/compat.h#1 branch
.. //depot/projects/scottl-camlock/src/lib/libc/posix1e/Makefile.inc#3 integrate
.. //depot/projects/scottl-camlock/src/lib/libc/posix1e/Symbol.map#3 integrate
.. //depot/projects/scottl-camlock/src/lib/libc/posix1e/acl.3#3 integrate
.. //depot/projects/scottl-camlock/src/lib/libc/posix1e/acl_add_flag_np.3#1 branch
.. //depot/projects/scottl-camlock/src/lib/libc/posix1e/acl_add_perm.3#3 integrate
.. //depot/projects/scottl-camlock/src/lib/libc/posix1e/acl_branding.c#1 branch
.. //depot/projects/scottl-camlock/src/lib/libc/posix1e/acl_calc_mask.c#3 integrate
.. //depot/projects/scottl-camlock/src/lib/libc/posix1e/acl_clear_flags_np.3#1 branch
.. //depot/projects/scottl-camlock/src/lib/libc/posix1e/acl_copy.c#3 integrate
.. //depot/projects/scottl-camlock/src/lib/libc/posix1e/acl_create_entry.3#3 integrate
.. //depot/projects/scottl-camlock/src/lib/libc/posix1e/acl_delete_entry.3#3 integrate
.. //depot/projects/scottl-camlock/src/lib/libc/posix1e/acl_delete_entry.c#2 integrate
.. //depot/projects/scottl-camlock/src/lib/libc/posix1e/acl_delete_flag_np.3#1 branch
.. //depot/projects/scottl-camlock/src/lib/libc/posix1e/acl_entry.c#4 integrate
.. //depot/projects/scottl-camlock/src/lib/libc/posix1e/acl_flag.c#1 branch
.. //depot/projects/scottl-camlock/src/lib/libc/posix1e/acl_from_text.c#2 integrate
.. //depot/projects/scottl-camlock/src/lib/libc/posix1e/acl_from_text_nfs4.c#1 branch
.. //depot/projects/scottl-camlock/src/lib/libc/posix1e/acl_get.3#3 integrate
.. //depot/projects/scottl-camlock/src/lib/libc/posix1e/acl_get.c#3 integrate
.. //depot/projects/scottl-camlock/src/lib/libc/posix1e/acl_get_brand_np.3#1 branch
.. //depot/projects/scottl-camlock/src/lib/libc/posix1e/acl_get_entry_type_np.3#1 branch
.. //depot/projects/scottl-camlock/src/lib/libc/posix1e/acl_get_flag_np.3#1 branch
.. //depot/projects/scottl-camlock/src/lib/libc/posix1e/acl_get_flagset_np.3#1 branch
.. //depot/projects/scottl-camlock/src/lib/libc/posix1e/acl_init.c#3 integrate
.. //depot/projects/scottl-camlock/src/lib/libc/posix1e/acl_is_trivial_np.3#1 branch
.. //depot/projects/scottl-camlock/src/lib/libc/posix1e/acl_set.3#3 integrate
.. //depot/projects/scottl-camlock/src/lib/libc/posix1e/acl_set.c#3 integrate
.. //depot/projects/scottl-camlock/src/lib/libc/posix1e/acl_set_entry_type_np.3#1 branch
.. //depot/projects/scottl-camlock/src/lib/libc/posix1e/acl_set_flagset_np.3#1 branch
.. //depot/projects/scottl-camlock/src/lib/libc/posix1e/acl_set_tag_type.3#3 integrate
.. //depot/projects/scottl-camlock/src/lib/libc/posix1e/acl_strip.c#1 branch
.. //depot/projects/scottl-camlock/src/lib/libc/posix1e/acl_strip_np.3#1 branch
.. //depot/projects/scottl-camlock/src/lib/libc/posix1e/acl_support.c#3 integrate
.. //depot/projects/scottl-camlock/src/lib/libc/posix1e/acl_support.h#3 integrate
.. //depot/projects/scottl-camlock/src/lib/libc/posix1e/acl_support_nfs4.c#1 branch
.. //depot/projects/scottl-camlock/src/lib/libc/posix1e/acl_to_text.3#2 integrate
.. //depot/projects/scottl-camlock/src/lib/libc/posix1e/acl_to_text.c#2 integrate
.. //depot/projects/scottl-camlock/src/lib/libc/posix1e/acl_to_text_nfs4.c#1 branch
.. //depot/projects/scottl-camlock/src/lib/libc/posix1e/acl_valid.c#3 integrate
.. //depot/projects/scottl-camlock/src/lib/libc/rpc/getnetconfig.c#3 integrate
.. //depot/projects/scottl-camlock/src/lib/libc/sys/Makefile.inc#4 integrate
.. //depot/projects/scottl-camlock/src/lib/libc/sys/Symbol.map#5 integrate
.. //depot/projects/scottl-camlock/src/lib/libc/sys/pathconf.2#3 integrate
.. //depot/projects/scottl-camlock/src/release/Makefile#3 integrate
.. //depot/projects/scottl-camlock/src/sbin/ipfw/Makefile#3 integrate
.. //depot/projects/scottl-camlock/src/sbin/ipfw/dummynet.c#3 integrate
.. //depot/projects/scottl-camlock/src/sbin/ipfw/ipfw.8#4 integrate
.. //depot/projects/scottl-camlock/src/sbin/ipfw/ipfw2.h#2 integrate
.. //depot/projects/scottl-camlock/src/share/man/man4/Makefile#6 integrate
.. //depot/projects/scottl-camlock/src/share/man/man4/bridge.4#1 branch
.. //depot/projects/scottl-camlock/src/share/man/man4/epair.4#1 branch
.. //depot/projects/scottl-camlock/src/share/man/man4/if_bridge.4#5 delete
.. //depot/projects/scottl-camlock/src/share/man/man8/picobsd.8#2 integrate
.. //depot/projects/scottl-camlock/src/share/man/man8/yp.8#2 integrate
.. //depot/projects/scottl-camlock/src/sys/amd64/amd64/intr_machdep.c#16 integrate
.. //depot/projects/scottl-camlock/src/sys/amd64/amd64/io_apic.c#14 integrate
.. //depot/projects/scottl-camlock/src/sys/amd64/amd64/msi.c#9 integrate
.. //depot/projects/scottl-camlock/src/sys/amd64/include/intr_machdep.h#15 integrate
.. //depot/projects/scottl-camlock/src/sys/arm/arm/pmap.c#21 integrate
.. //depot/projects/scottl-camlock/src/sys/arm/arm/vm_machdep.c#15 integrate
.. //depot/projects/scottl-camlock/src/sys/arm/conf/CAMBRIA.hints#4 integrate
.. //depot/projects/scottl-camlock/src/sys/arm/mv/discovery/discovery.c#4 integrate
.. //depot/projects/scottl-camlock/src/sys/arm/mv/kirkwood/kirkwood.c#4 integrate
.. //depot/projects/scottl-camlock/src/sys/arm/mv/mvwin.h#2 integrate
.. //depot/projects/scottl-camlock/src/sys/arm/mv/orion/orion.c#4 integrate
.. //depot/projects/scottl-camlock/src/sys/compat/freebsd32/freebsd32_ipc.h#2 integrate
.. //depot/projects/scottl-camlock/src/sys/compat/freebsd32/freebsd32_misc.c#18 integrate
.. //depot/projects/scottl-camlock/src/sys/compat/freebsd32/freebsd32_proto.h#21 integrate
.. //depot/projects/scottl-camlock/src/sys/compat/freebsd32/freebsd32_syscall.h#21 integrate
.. //depot/projects/scottl-camlock/src/sys/compat/freebsd32/freebsd32_syscalls.c#21 integrate
.. //depot/projects/scottl-camlock/src/sys/compat/freebsd32/freebsd32_sysent.c#21 integrate
.. //depot/projects/scottl-camlock/src/sys/compat/freebsd32/syscalls.master#23 integrate
.. //depot/projects/scottl-camlock/src/sys/compat/linux/linux_ipc.c#9 integrate
.. //depot/projects/scottl-camlock/src/sys/compat/svr4/svr4_ipc.c#6 integrate
.. //depot/projects/scottl-camlock/src/sys/conf/files#36 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/cas/if_cas.c#2 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/cas/if_casvar.h#2 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/cxgb/cxgb_main.c#10 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/drm/drm_irq.c#6 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/drm/i915_drv.h#7 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/drm/i915_irq.c#7 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/drm/radeon_cp.c#9 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/drm/radeon_irq.c#6 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/e1000/if_igb.c#5 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/hptmv/atapi.h#4 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/ixgbe/ixgbe.c#5 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/mpt/mpt_cam.c#29 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/mxge/if_mxge.c#17 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/mxge/if_mxge_var.h#13 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/usb/wlan/if_zyd.c#7 integrate
.. //depot/projects/scottl-camlock/src/sys/fs/nfsclient/nfs_clvnops.c#4 integrate
.. //depot/projects/scottl-camlock/src/sys/geom/linux_lvm/g_linux_lvm.c#2 integrate
.. //depot/projects/scottl-camlock/src/sys/gnu/fs/xfs/FreeBSD/xfs_ioctl.c#5 integrate
.. //depot/projects/scottl-camlock/src/sys/gnu/fs/xfs/FreeBSD/xfs_iops.h#3 integrate
.. //depot/projects/scottl-camlock/src/sys/gnu/fs/xfs/FreeBSD/xfs_vnode.h#4 integrate
.. //depot/projects/scottl-camlock/src/sys/gnu/fs/xfs/xfs_rw.h#3 integrate
.. //depot/projects/scottl-camlock/src/sys/gnu/fs/xfs/xfs_vnodeops.c#6 integrate
.. //depot/projects/scottl-camlock/src/sys/i386/i386/intr_machdep.c#16 integrate
.. //depot/projects/scottl-camlock/src/sys/i386/i386/io_apic.c#13 integrate
.. //depot/projects/scottl-camlock/src/sys/i386/i386/msi.c#9 integrate
.. //depot/projects/scottl-camlock/src/sys/i386/ibcs2/ibcs2_ipc.c#5 integrate
.. //depot/projects/scottl-camlock/src/sys/i386/include/intr_machdep.h#15 integrate
.. //depot/projects/scottl-camlock/src/sys/kern/init_sysent.c#19 integrate
.. //depot/projects/scottl-camlock/src/sys/kern/kern_intr.c#18 integrate
.. //depot/projects/scottl-camlock/src/sys/kern/kern_jail.c#18 integrate
.. //depot/projects/scottl-camlock/src/sys/kern/kern_switch.c#15 integrate
.. //depot/projects/scottl-camlock/src/sys/kern/subr_pcpu.c#8 integrate
.. //depot/projects/scottl-camlock/src/sys/kern/syscalls.c#18 integrate
.. //depot/projects/scottl-camlock/src/sys/kern/syscalls.master#19 integrate
.. //depot/projects/scottl-camlock/src/sys/kern/systrace_args.c#9 integrate
.. //depot/projects/scottl-camlock/src/sys/kern/sysv_ipc.c#7 integrate
.. //depot/projects/scottl-camlock/src/sys/kern/sysv_msg.c#14 integrate
.. //depot/projects/scottl-camlock/src/sys/kern/sysv_sem.c#15 integrate
.. //depot/projects/scottl-camlock/src/sys/kern/sysv_shm.c#15 integrate
.. //depot/projects/scottl-camlock/src/sys/net/if_epair.c#1 branch
.. //depot/projects/scottl-camlock/src/sys/net/if_media.h#12 integrate
.. //depot/projects/scottl-camlock/src/sys/net/if_spppsubr.c#13 integrate
.. //depot/projects/scottl-camlock/src/sys/net/if_stf.c#16 integrate
.. //depot/projects/scottl-camlock/src/sys/netatalk/aarp.c#13 integrate
.. //depot/projects/scottl-camlock/src/sys/netatalk/at_control.c#10 integrate
.. //depot/projects/scottl-camlock/src/sys/netatalk/at_var.h#6 integrate
.. //depot/projects/scottl-camlock/src/sys/netatalk/ddp_input.c#10 integrate
.. //depot/projects/scottl-camlock/src/sys/netatalk/ddp_output.c#11 integrate
.. //depot/projects/scottl-camlock/src/sys/netatalk/ddp_pcb.c#11 integrate
.. //depot/projects/scottl-camlock/src/sys/netatalk/ddp_usrreq.c#11 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet/if_ether.c#20 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet/in.c#19 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet/in_gif.c#12 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet/in_mcast.c#8 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet/in_pcb.c#24 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet/in_var.h#13 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet/ip_carp.c#15 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet/ip_dummynet.h#10 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet/ip_icmp.c#15 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet/ip_input.c#21 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet/ipfw/ip_dummynet.c#3 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet/raw_ip.c#21 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet6/in6.c#21 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet6/in6_ifattach.c#17 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet6/in6_pcb.c#18 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet6/in6_src.c#18 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet6/in6_var.h#14 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet6/ip6_input.c#17 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet6/nd6.c#20 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet6/nd6_rtr.c#14 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet6/vinet6.h#4 integrate
.. //depot/projects/scottl-camlock/src/sys/netipsec/key.c#13 integrate
.. //depot/projects/scottl-camlock/src/sys/netipx/ipx.c#8 integrate
.. //depot/projects/scottl-camlock/src/sys/netipx/ipx_if.h#6 integrate
.. //depot/projects/scottl-camlock/src/sys/netipx/ipx_input.c#12 integrate
.. //depot/projects/scottl-camlock/src/sys/netipx/ipx_outputfl.c#7 integrate
.. //depot/projects/scottl-camlock/src/sys/netipx/ipx_pcb.c#11 integrate
.. //depot/projects/scottl-camlock/src/sys/nfsclient/nfs_vnops.c#21 integrate
.. //depot/projects/scottl-camlock/src/sys/powerpc/conf/MPC85XX#7 integrate
.. //depot/projects/scottl-camlock/src/sys/powerpc/powerpc/mp_machdep.c#8 integrate
.. //depot/projects/scottl-camlock/src/sys/rpc/clnt_rc.c#4 integrate
.. //depot/projects/scottl-camlock/src/sys/sparc64/conf/GENERIC#21 integrate
.. //depot/projects/scottl-camlock/src/sys/sun4v/conf/GENERIC#10 integrate
.. //depot/projects/scottl-camlock/src/sys/sys/acl.h#8 integrate
.. //depot/projects/scottl-camlock/src/sys/sys/ata.h#10 integrate
.. //depot/projects/scottl-camlock/src/sys/sys/ipc.h#5 integrate
.. //depot/projects/scottl-camlock/src/sys/sys/msg.h#3 integrate
.. //depot/projects/scottl-camlock/src/sys/sys/param.h#25 integrate
.. //depot/projects/scottl-camlock/src/sys/sys/sched.h#17 integrate
.. //depot/projects/scottl-camlock/src/sys/sys/sem.h#6 integrate
.. //depot/projects/scottl-camlock/src/sys/sys/shm.h#6 integrate
.. //depot/projects/scottl-camlock/src/sys/sys/syscall.h#18 integrate
.. //depot/projects/scottl-camlock/src/sys/sys/syscall.mk#18 integrate
.. //depot/projects/scottl-camlock/src/sys/sys/sysctl.h#17 integrate
.. //depot/projects/scottl-camlock/src/sys/sys/sysproto.h#18 integrate
.. //depot/projects/scottl-camlock/src/sys/sys/unistd.h#7 integrate
.. //depot/projects/scottl-camlock/src/sys/sys/vnode.h#19 integrate
.. //depot/projects/scottl-camlock/src/tools/regression/bin/sh/builtins/command5.0.stdout#2 integrate
.. //depot/projects/scottl-camlock/src/tools/regression/bin/sh/builtins/eval2.0#1 branch
.. //depot/projects/scottl-camlock/src/tools/regression/bin/sh/expansion/ifs1.0#1 branch
.. //depot/projects/scottl-camlock/src/tools/tools/nanobsd/nanobsd.sh#4 integrate
.. //depot/projects/scottl-camlock/src/usr.bin/gzip/gzip.1#3 integrate
.. //depot/projects/scottl-camlock/src/usr.bin/gzip/gzip.c#4 integrate
.. //depot/projects/scottl-camlock/src/usr.bin/gzip/zuncompress.c#2 integrate
.. //depot/projects/scottl-camlock/src/usr.bin/ipcs/ipcs.c#3 integrate
.. //depot/projects/scottl-camlock/src/usr.bin/ypcat/ypcat.c#2 integrate
.. //depot/projects/scottl-camlock/src/usr.bin/ypmatch/ypmatch.c#2 integrate
.. //depot/projects/scottl-camlock/src/usr.bin/ypwhich/ypwhich.c#2 integrate
.. //depot/projects/scottl-camlock/src/usr.sbin/cxgbtool/cxgbtool.c#3 integrate
.. //depot/projects/scottl-camlock/src/usr.sbin/fdcontrol/fdcontrol.c#2 integrate
.. //depot/projects/scottl-camlock/src/usr.sbin/fdformat/fdformat.c#2 integrate
.. //depot/projects/scottl-camlock/src/usr.sbin/fdread/fdread.c#2 integrate
.. //depot/projects/scottl-camlock/src/usr.sbin/fdwrite/fdwrite.c#2 integrate
.. //depot/projects/scottl-camlock/src/usr.sbin/sysinstall/Makefile#3 integrate
.. //depot/projects/scottl-camlock/src/usr.sbin/sysinstall/devices.c#5 integrate
.. //depot/projects/scottl-camlock/src/usr.sbin/sysinstall/dispatch.c#3 integrate
.. //depot/projects/scottl-camlock/src/usr.sbin/sysinstall/label.c#3 integrate
.. //depot/projects/scottl-camlock/src/usr.sbin/sysinstall/media.c#3 integrate
.. //depot/projects/scottl-camlock/src/usr.sbin/sysinstall/menus.c#3 integrate
.. //depot/projects/scottl-camlock/src/usr.sbin/sysinstall/options.c#3 integrate
.. //depot/projects/scottl-camlock/src/usr.sbin/sysinstall/sysinstall.h#3 integrate
.. //depot/projects/scottl-camlock/src/usr.sbin/sysinstall/usb.c#1 branch
.. //depot/projects/scottl-camlock/src/usr.sbin/ypserv/Makefile.yp#2 integrate
.. //depot/projects/scottl-camlock/src/usr.sbin/ypserv/yp_access.c#2 integrate
.. //depot/projects/scottl-camlock/src/usr.sbin/ypserv/ypserv.8#3 integrate

Differences ...

==== //depot/projects/scottl-camlock/src/bin/sh/exec.c#4 (text+ko) ====

@@ -36,7 +36,7 @@
 #endif
 #endif /* not lint */
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/bin/sh/exec.c,v 1.33 2009/06/01 11:11:46 rse Exp $");
+__FBSDID("$FreeBSD: src/bin/sh/exec.c,v 1.34 2009/06/24 22:04:04 jilles Exp $");
 
 #include <sys/types.h>
 #include <sys/stat.h>
@@ -756,6 +756,7 @@
 		if ((cmdp = cmdlookup(argv[i], 0)) != NULL) {
 			entry.cmdtype = cmdp->cmdtype;
 			entry.u = cmdp->param;
+			entry.special = cmdp->special;
 		}
 		else {
 			/* Finally use brute force */
@@ -804,6 +805,9 @@
 		case CMDBUILTIN:
 			if (cmd == TYPECMD_SMALLV)
 				out1fmt("%s\n", argv[i]);
+			else if (entry.special)
+				out1fmt("%s is a special shell builtin\n",
+				    argv[i]);
 			else
 				out1fmt("%s is a shell builtin\n", argv[i]);
 			break;

==== //depot/projects/scottl-camlock/src/bin/sh/expand.c#3 (text+ko) ====

@@ -36,7 +36,7 @@
 #endif
 #endif /* not lint */
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/bin/sh/expand.c,v 1.53 2008/05/15 19:55:27 stefanf Exp $");
+__FBSDID("$FreeBSD: src/bin/sh/expand.c,v 1.55 2009/06/25 17:14:06 jilles Exp $");
 
 #include <sys/types.h>
 #include <sys/time.h>
@@ -82,7 +82,7 @@
 	struct ifsregion *next;	/* next region in list */
 	int begoff;		/* offset of start of region */
 	int endoff;		/* offset of end of region */
-	int nulonly;		/* search for nul bytes only */
+	int inquotes;		/* search for nul bytes only */
 };
 
 
@@ -936,13 +936,19 @@
  */
 
 STATIC void
-recordregion(int start, int end, int nulonly)
+recordregion(int start, int end, int inquotes)
 {
 	struct ifsregion *ifsp;
 
 	if (ifslastp == NULL) {
 		ifsp = &ifsfirst;
 	} else {
+		if (ifslastp->endoff == start
+		    && ifslastp->inquotes == inquotes) {
+			/* extend previous area */
+			ifslastp->endoff = end;
+			return;
+		}
 		ifsp = (struct ifsregion *)ckmalloc(sizeof (struct ifsregion));
 		ifslastp->next = ifsp;
 	}
@@ -950,7 +956,7 @@
 	ifslastp->next = NULL;
 	ifslastp->begoff = start;
 	ifslastp->endoff = end;
-	ifslastp->nulonly = nulonly;
+	ifslastp->inquotes = inquotes;
 }
 
 
@@ -969,75 +975,89 @@
 	char *p;
 	char *q;
 	char *ifs;
-	int ifsspc;
-	int nulonly;
+	const char *ifsspc;
+	int had_param_ch = 0;
+
+	start = string;
+
+	if (ifslastp == NULL) {
+		/* Return entire argument, IFS doesn't apply to any of it */
+		sp = (struct strlist *)stalloc(sizeof *sp);
+		sp->text = start;
+		*arglist->lastp = sp;
+		arglist->lastp = &sp->next;
+		return;
+	}
 
+	ifs = ifsset() ? ifsval() : " \t\n";
 
-	start = string;
-	ifsspc = 0;
-	nulonly = 0;
-	if (ifslastp != NULL) {
-		ifsp = &ifsfirst;
-		do {
-			p = string + ifsp->begoff;
-			nulonly = ifsp->nulonly;
-			ifs = nulonly ? nullstr :
-				( ifsset() ? ifsval() : " \t\n" );
-			ifsspc = 0;
-			while (p < string + ifsp->endoff) {
-				q = p;
-				if (*p == CTLESC)
+	for (ifsp = &ifsfirst; ifsp != NULL; ifsp = ifsp->next) {
+		p = string + ifsp->begoff;
+		while (p < string + ifsp->endoff) {
+			q = p;
+			if (*p == CTLESC)
+				p++;
+			if (ifsp->inquotes) {
+				/* Only NULs (should be from "$@") end args */
+				had_param_ch = 1;
+				if (*p != 0) {
+					p++;
+					continue;
+				}
+				ifsspc = NULL;
+			} else {
+				if (!strchr(ifs, *p)) {
+					had_param_ch = 1;
 					p++;
-				if (strchr(ifs, *p)) {
-					if (!nulonly)
-						ifsspc = (strchr(" \t\n", *p) != NULL);
-					/* Ignore IFS whitespace at start */
-					if (q == start && ifsspc) {
-						p++;
-						start = p;
-						continue;
-					}
-					*q = '\0';
-					sp = (struct strlist *)stalloc(sizeof *sp);
-					sp->text = start;
-					*arglist->lastp = sp;
-					arglist->lastp = &sp->next;
+					continue;
+				}
+				ifsspc = strchr(" \t\n", *p);
+
+				/* Ignore IFS whitespace at start */
+				if (q == start && ifsspc != NULL) {
 					p++;
-					if (!nulonly) {
-						for (;;) {
-							if (p >= string + ifsp->endoff) {
-								break;
-							}
-							q = p;
-							if (*p == CTLESC)
-								p++;
-							if (strchr(ifs, *p) == NULL ) {
-								p = q;
-								break;
-							} else if (strchr(" \t\n",*p) == NULL) {
-								if (ifsspc) {
-									p++;
-									ifsspc = 0;
-								} else {
-									p = q;
-									break;
-								}
-							} else
-								p++;
-						}
-					}
 					start = p;
-				} else
-					p++;
+					continue;
+				}
+				had_param_ch = 0;
 			}
-		} while ((ifsp = ifsp->next) != NULL);
-		if (*start || (!ifsspc && start > string)) {
+
+			/* Save this argument... */
+			*q = '\0';
 			sp = (struct strlist *)stalloc(sizeof *sp);
 			sp->text = start;
 			*arglist->lastp = sp;
 			arglist->lastp = &sp->next;
+			p++;
+
+			if (ifsspc != NULL) {
+				/* Ignore further trailing IFS whitespace */
+				for (; p < string + ifsp->endoff; p++) {
+					q = p;
+					if (*p == CTLESC)
+						p++;
+					if (strchr(ifs, *p) == NULL) {
+						p = q;
+						break;
+					}
+					if (strchr(" \t\n", *p) == NULL) {
+						p++;
+						break;
+					}
+				}
+			}
+			start = p;
 		}
-	} else {
+	}
+
+	/*
+	 * Save anything left as an argument.
+	 * Traditionally we have treated 'IFS=':'; set -- x$IFS' as
+	 * generating 2 arguments, the second of which is empty.
+	 * Some recent clarification of the Posix spec say that it
+	 * should only generate one....
+	 */
+	if (had_param_ch || *start != 0) {
 		sp = (struct strlist *)stalloc(sizeof *sp);
 		sp->text = start;
 		*arglist->lastp = sp;

==== //depot/projects/scottl-camlock/src/bin/sh/sh.1#4 (text+ko) ====

@@ -30,7 +30,7 @@
 .\" SUCH DAMAGE.
 .\"
 .\"	from: @(#)sh.1	8.6 (Berkeley) 5/4/95
-.\" $FreeBSD: src/bin/sh/sh.1,v 1.129 2009/06/07 15:04:43 jilles Exp $
+.\" $FreeBSD: src/bin/sh/sh.1,v 1.130 2009/06/24 22:04:04 jilles Exp $
 .\"
 .Dd May 31, 2009
 .Dt SH 1
@@ -606,6 +606,12 @@
 .Pp
 Shell built-in commands are executed internally to the shell, without
 spawning a new process.
+There are two kinds of built-in commands: regular and special.
+Assignments before special builtins persist after they finish
+executing and assignment errors, redirection errors and certain
+operand errors cause a script to be aborted.
+Both regular and special builtins can affect the shell in ways
+normal programs cannot.
 .Pp
 Otherwise, if the command name does not match a function
 or built-in command, the command is searched for as a normal
@@ -885,7 +891,7 @@
 The
 .Ic continue
 command continues with the next iteration of the innermost loop.
-These are implemented as built-in commands.
+These are implemented as special built-in commands.
 .Pp
 The syntax of the
 .Ic case
@@ -1001,7 +1007,7 @@
 nested function, sourced script, or shell instance, in that order.
 The
 .Ic return
-command is implemented as a built-in command.
+command is implemented as a special built-in command.
 .Ss Variables and Parameters
 The shell maintains a set of parameters.
 A parameter
@@ -1590,6 +1596,7 @@
 is either
 the path name to
 .Ar utility ,
+a special shell builtin,
 a shell builtin,
 a shell function,
 a shell keyword
@@ -2114,7 +2121,8 @@
 .Ar name
 as a command and print the resolution of the command search.
 Possible resolutions are:
-shell keyword, alias, shell built-in command, command, tracked alias
+shell keyword, alias, special shell builtin, shell builtin, command,
+tracked alias
 and not found.
 For aliases the alias expansion is printed;
 for commands and tracked aliases

==== //depot/projects/scottl-camlock/src/lib/libc/gen/Symbol.map#5 (text) ====

@@ -1,5 +1,5 @@
 /*
- * $FreeBSD: src/lib/libc/gen/Symbol.map,v 1.20 2009/05/07 13:49:48 ed Exp $
+ * $FreeBSD: src/lib/libc/gen/Symbol.map,v 1.21 2009/06/24 21:10:52 jhb Exp $
  */
 
 FBSD_1.0 {
@@ -247,7 +247,6 @@
 	sem_timedwait;
 	sem_post;
 	sem_getvalue;
-	semctl;
 	setdomainname;
 	sethostname;
 	longjmperror;
@@ -362,6 +361,7 @@
 	posix_spawnattr_setsigdefault;
 	posix_spawnattr_setsigmask;
 	posix_spawnp;
+	semctl;
 	tcgetsid;
 	tcsetsid;
 };

==== //depot/projects/scottl-camlock/src/lib/libc/gen/semctl.c#2 (text+ko) ====

@@ -27,7 +27,9 @@
 
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/lib/libc/gen/semctl.c,v 1.9 2003/02/16 17:29:09 nectar Exp $");
+__FBSDID("$FreeBSD: src/lib/libc/gen/semctl.c,v 1.10 2009/06/24 21:10:52 jhb Exp $");
+
+#define _WANT_SEMUN_OLD
 
 #include <sys/types.h>
 #include <sys/ipc.h>
@@ -35,9 +37,11 @@
 #include <stdarg.h>
 #include <stdlib.h>
 
-extern int __semctl(int semid, int semnum, int cmd, union semun *arg);
+int	__semctl(int semid, int semnum, int cmd, union semun *arg);
+int	freebsd7___semctl(int semid, int semnum, int cmd, union semun_old *arg);
 
-int semctl(int semid, int semnum, int cmd, ...)
+int
+semctl(int semid, int semnum, int cmd, ...)
 {
 	va_list ap;
 	union semun semun;
@@ -55,3 +59,25 @@
 
 	return (__semctl(semid, semnum, cmd, semun_ptr));
 }
+
+int
+freebsd7_semctl(int semid, int semnum, int cmd, ...)
+{
+	va_list ap;
+	union semun_old semun;
+	union semun_old *semun_ptr;
+
+	va_start(ap, cmd);
+	if (cmd == IPC_SET || cmd == IPC_STAT || cmd == GETALL
+	    || cmd == SETVAL || cmd == SETALL) {
+		semun = va_arg(ap, union semun_old);
+		semun_ptr = &semun;
+	} else {
+		semun_ptr = NULL;
+	}
+	va_end(ap);
+
+	return (freebsd7___semctl(semid, semnum, cmd, semun_ptr));
+}
+
+__sym_compat(semctl, freebsd7_semctl, FBSD_1.0);

==== //depot/projects/scottl-camlock/src/lib/libc/posix1e/Makefile.inc#3 (text+ko) ====

@@ -1,55 +1,77 @@
-# $FreeBSD: src/lib/libc/posix1e/Makefile.inc,v 1.20 2009/05/22 15:56:43 trasz Exp $
+# $FreeBSD: src/lib/libc/posix1e/Makefile.inc,v 1.21 2009/06/25 12:46:59 trasz Exp $
 
 .PATH: ${.CURDIR}/posix1e
 
 CFLAGS+=-D_ACL_PRIVATE
 
-SRCS+=	acl_calc_mask.c			\
+# Copy kern/subr_acl_nfs4.c to the libc object directory.
+subr_acl_nfs4.c: ${.CURDIR}/../../sys/kern/subr_acl_nfs4.c
+	cat ${.ALLSRC} > ${.TARGET}
+
+SRCS+=	acl_branding.c			\
+	acl_calc_mask.c			\
 	acl_copy.c			\
 	acl_compat.c			\
 	acl_delete.c			\
 	acl_delete_entry.c		\
 	acl_entry.c			\
+	acl_flag.c			\
 	acl_free.c			\
 	acl_from_text.c			\
+	acl_from_text_nfs4.c		\
 	acl_get.c			\
 	acl_init.c			\
 	acl_perm.c			\
 	acl_set.c			\
+	acl_strip.c			\
 	acl_support.c			\
+	acl_support_nfs4.c		\
 	acl_to_text.c			\
+	acl_to_text_nfs4.c		\
 	acl_valid.c			\
 	extattr.c			\
 	mac.c				\
 	mac_exec.c			\
 	mac_get.c			\
-	mac_set.c
+	mac_set.c			\
+	subr_acl_nfs4.c
 
 SYM_MAPS+=${.CURDIR}/posix1e/Symbol.map
 
 MAN+=	acl.3				\
+	acl_add_flag_np.3		\
 	acl_add_perm.3			\
 	acl_calc_mask.3			\
+	acl_clear_flags_np.3		\
 	acl_clear_perms.3		\
 	acl_copy_entry.3		\
 	acl_create_entry.3		\
 	acl_delete.3			\
 	acl_delete_entry.3		\
+	acl_delete_flag_np.3		\
 	acl_delete_perm.3		\
 	acl_dup.3			\
 	acl_free.3			\
 	acl_from_text.3			\
 	acl_get.3			\
+	acl_get_brand_np.3		\
 	acl_get_entry.3			\
+	acl_get_entry_type_np.3		\
+	acl_get_flagset_np.3		\
+	acl_get_flag_np.3		\
 	acl_get_permset.3		\
 	acl_get_perm_np.3		\
 	acl_get_qualifier.3		\
 	acl_get_tag_type.3		\
 	acl_init.3			\
+	acl_is_trivial_np.3		\
 	acl_set.3			\
+	acl_set_entry_type_np.3		\
+	acl_set_flagset_np.3		\
 	acl_set_permset.3		\
 	acl_set_qualifier.3		\
 	acl_set_tag_type.3		\
+	acl_strip_np.3			\
 	acl_to_text.3			\
 	acl_valid.3			\
 	extattr.3			\
@@ -63,15 +85,18 @@
 	mac_text.3			\
 	posix1e.3
 
-MLINKS+=acl_delete.3 acl_delete_def_file.3	\
+MLINKS+=acl_create_entry.3 acl_create_entry_np.3\
+	acl_delete.3 acl_delete_def_file.3	\
 	acl_delete.3 acl_delete_file_np.3	\
 	acl_delete.3 acl_delete_fd_np.3		\
+	acl_delete_entry.3 acl_delete_entry_np.3\
 	acl_get.3 acl_get_file.3		\
 	acl_get.3 acl_get_fd.3			\
 	acl_get.3 acl_get_fd_np.3		\
 	acl_set.3 acl_set_file.3		\
 	acl_set.3 acl_set_fd.3			\
 	acl_set.3 acl_set_fd_np.3		\
+	acl_to_text.3 acl_to_text_np.3		\
 	acl_valid.3 acl_valid_file_np.3		\
 	acl_valid.3 acl_valid_fd_np.3		\
 	extattr.3 extattr_namespace_to_string.3	\

==== //depot/projects/scottl-camlock/src/lib/libc/posix1e/Symbol.map#3 (text) ====

@@ -1,5 +1,5 @@
 /*
- * $FreeBSD: src/lib/libc/posix1e/Symbol.map,v 1.4 2009/05/22 15:56:43 trasz Exp $
+ * $FreeBSD: src/lib/libc/posix1e/Symbol.map,v 1.5 2009/06/25 12:46:59 trasz Exp $
  */
 
 FBSD_1.0 {
@@ -66,7 +66,21 @@
 };
 
 FBSD_1.1 {
+	acl_add_flag_np;
 	acl_add_perm;
+	acl_clear_flags_np;
+	acl_create_entry_np;
+	acl_delete_entry_np;
+	acl_delete_flag_np;
 	acl_delete_perm;
+	acl_get_brand_np;
+	acl_get_entry_type_np;
+	acl_get_flag_np;
+	acl_get_flagset_np;
 	acl_get_perm_np;
+	acl_is_trivial_np;
+	acl_set_entry_type_np;
+	acl_set_flagset_np;
+	acl_strip_np;
+	acl_to_text_np;
 };

==== //depot/projects/scottl-camlock/src/lib/libc/posix1e/acl.3#3 (text+ko) ====

@@ -25,9 +25,9 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.\" $FreeBSD: src/lib/libc/posix1e/acl.3,v 1.23 2009/05/23 13:51:05 trasz Exp $
+.\" $FreeBSD: src/lib/libc/posix1e/acl.3,v 1.26 2009/06/25 16:34:29 trasz Exp $
 .\"
-.Dd December 18, 2002
+.Dd June 25, 2009
 .Dt ACL 3
 .Os
 .Sh NAME
@@ -59,6 +59,10 @@
 .Pp
 Available functions, sorted by behavior, include:
 .Bl -tag -width indent
+.It Fn acl_add_flag_np
+This function is described in
+.Xr acl_add_flag_np 3 ,
+and may be used to add flags to a flagset.
 .It Fn acl_add_perm
 This function is described in
 .Xr acl_add_perm 3 ,
@@ -70,6 +74,10 @@
 the
 .Dv ACL_MASK
 entry.
+.It Fn acl_clear_flags_np
+This function is described in
+.Xr acl_clear_flags_np 3 ,
+and may be used to clear all flags from a flagset.
 .It Fn acl_clear_perms
 This function is described in
 .Xr acl_clear_perms 3 ,
@@ -78,8 +86,11 @@
 This function is described in
 .Xr acl_copy_entry 3 ,
 and may be used to copy the contents of an ACL entry.
-.It Fn acl_create_entry
-This function is described in
+.It Xo
+.Fn acl_create_entry ,
+.Fn acl_create_entry_np
+.Xc
+These functions are described in
 .Xr acl_create_entry 3 ,
 and may be used to create an empty entry in an ACL.
 .It Xo
@@ -92,10 +103,17 @@
 These functions are described in
 .Xr acl_delete 3 ,
 and may be used to delete ACLs from file system objects.
-.It Fn acl_delete_entry
-This function is described in
+.It Xo
+.Fn acl_delete_entry ,
+.Fn acl_delete_entry_np ,
+.Xc
+This functions are described in
 .Xr acl_delete_entry 3 ,
 and may be used to delete an entry from an ACL.
+.It Fn acl_delete_flag_np
+This function is described in
+.Xr acl_delete_flag_np 3 ,
+and may be used to delete flags from a flagset.
 .It Fn acl_delete_perm
 This function is described in
 .Xr acl_delete_perm 3 ,
@@ -112,7 +130,7 @@
 This function is described in
 .Xr acl_from_text 3 ,
 and may be used to convert a text-form ACL into working ACL state, if
-the ACL has POSIX.1e semantics.
+the ACL has POSIX.1e or NFSv4 semantics.
 .It Fn acl_get_entry
 This function is described in
 .Xr acl_get_entry 3 ,
@@ -126,6 +144,14 @@
 These functions are described in
 .Xr acl_get 3 ,
 and may be used to retrieve ACLs from file system objects.
+.It Fn acl_get_entry_type_np
+This function is described in
+.Xr acl_get_entry_type_np 3 ,
+and may be used to retrieve an ACL type from an ACL entry.
+.It Fn acl_get_flagset_np
+This function is described in
+.Xr acl_get_flagset_np 3 ,
+and may be used to retrieve a flagset from an ACL entry.
 .It Fn acl_get_permset
 This function is described in
 .Xr acl_get_permset 3 ,
@@ -142,6 +168,10 @@
 This function is described in
 .Xr acl_init 3 ,
 and may be used to allocate a fresh (empty) ACL structure.
+.It Fn acl_is_trivial_np
+This function is described in
+.Xr acl_is_trivial_np 3 ,
+and may be used to find out whether ACL is trivial.
 .It Xo
 .Fn acl_set_fd ,
 .Fn acl_set_fd_np ,
@@ -151,6 +181,14 @@
 These functions are described in
 .Xr acl_set 3 ,
 and may be used to assign an ACL to a file system object.
+.It Fn acl_set_entry_type_np
+This function is described in
+.Xr acl_set_entry_type_np 3 ,
+and may be used to set the ACL type of an ACL entry.
+.It Fn acl_set_flagset_np
+This function is described in
+.Xr acl_set_flagset_np 3 ,
+and may be used to set the flags of an ACL entry from a flagset.
 .It Fn acl_set_permset
 This function is described in
 .Xr acl_set_permset 3 ,
@@ -163,10 +201,17 @@
 This function is described in
 .Xr acl_set_tag_type 3 ,
 and may be used to set the tag type of an ACL.
-.It Fn acl_to_text
-This function is described in
+.It Fn acl_strip_np
+This function is describe din
+.Xr acl-strip_np 3 ,
+and may be used to remove extended entries from an ACL.
+.It Xo
+.Fn acl_to_text ,
+.Fn acl_to_text_np
+.Xc
+These functions are described in
 .Xr acl_to_text 3 ,
-and may be used to generate a text-form of a POSIX.1e semantics ACL.
+and may be used to generate a text-form of a POSIX.1e or NFSv4 semantics ACL.
 .It Xo
 .Fn acl_valid ,
 .Fn acl_valid_fd_np ,
@@ -189,25 +234,34 @@
 .Sh SEE ALSO
 .Xr getfacl 1 ,
 .Xr setfacl 1 ,
+.Xr acl_add_flag_np 3 ,
 .Xr acl_add_perm 3 ,
 .Xr acl_calc_mask 3 ,
+.Xr acl_clear_flags_np 3 ,
 .Xr acl_clear_perms 3 ,
 .Xr acl_copy_entry 3 ,
 .Xr acl_create_entry 3 ,
 .Xr acl_delete_entry 3 ,
+.Xr acl_delete_flag_np 3 ,
 .Xr acl_delete_perm 3 ,
 .Xr acl_dup 3 ,
 .Xr acl_free 3 ,
 .Xr acl_from_text 3 ,
 .Xr acl_get 3 ,
+.Xr acl_get_entry_type_np 3 ,
+.Xr acl_get_flagset_np 3 ,
 .Xr acl_get_permset 3 ,
 .Xr acl_get_qualifier 3 ,
 .Xr acl_get_tag_type 3 ,
 .Xr acl_init 3 ,
+.Xr acl_is_trivial_np 3 ,
 .Xr acl_set 3 ,
+.Xr acl_set_entry_type_np 3 ,
+.Xr acl_set_flagset_np 3 ,
 .Xr acl_set_permset 3 ,
 .Xr acl_set_qualifier 3 ,
 .Xr acl_set_tag_type 3 ,
+.Xr acl_strip_np 3 ,
 .Xr acl_to_text 3 ,
 .Xr acl_valid 3 ,
 .Xr posix1e 3 ,

==== //depot/projects/scottl-camlock/src/lib/libc/posix1e/acl_add_perm.3#3 (text+ko) ====

@@ -23,9 +23,9 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.\" $FreeBSD: src/lib/libc/posix1e/acl_add_perm.3,v 1.8 2009/05/23 13:51:05 trasz Exp $
+.\" $FreeBSD: src/lib/libc/posix1e/acl_add_perm.3,v 1.10 2009/06/25 12:53:50 trasz Exp $
 .\"
-.Dd March 10, 2001
+.Dd June 25, 2009
 .Dt ACL_ADD_PERM 3
 .Os
 .Sh NAME
@@ -52,11 +52,43 @@
 .Pp
 For POSIX.1e ACLs, valid values are:
 .Pp
-.Bl -column -offset 3n "ACL_EXECUTE"
+.Bl -column -offset 3n "ACL_WRITE_NAMED_ATTRS"
 .It ACL_EXECUTE	Execute permission
 .It ACL_WRITE	Write permission
 .It ACL_READ	Read permission
 .El
+.Pp
+For NFSv4 ACLs, valid values are:
+.Pp
+.Bl -column -offset 3n "ACL_WRITE_NAMED_ATTRS"
+.It ACL_READ_DATA		Read permission
+.It ACL_LIST_DIRECTORY		Same as ACL_READ_DATA
+.It ACL_WRITE_DATA		Write permission, or permission to create files
+.It ACL_ADD_FILE		Same as ACL_READ_DATA
+.It ACL_APPEND_DATA		Permission to create directories.  Ignored for files
+.It ACL_ADD_SUBDIRECTORY	Same as ACL_APPEND_DATA
+.It ACL_READ_NAMED_ATTRS	Ignored
+.It ACL_WRITE_NAMED_ATTRS	Ignored
+.It ACL_EXECUTE			Execute permission
+.It ACL_DELETE_CHILD		Permission to delete files and subdirectories
+.It ACL_READ_ATTRIBUTES		Permission to read basic attributes
+.It ACL_WRITE_ATTRIBUTES	Permission to change basic attributes
+.It ACL_DELETE			Permission to delete the object this ACL is placed on
+.It ACL_READ_ACL		Permission to read ACL
+.It ACL_WRITE_ACL		Permission to change the ACL and file mode
+.It ACL_SYNCHRONIZE		Ignored
+.El
+.Pp
+Calling
+.Fn acl_add_perm
+with
+.Fa perm
+equal to ACL_WRITE or ACL_READ brands the ACL as POSIX.
+Calling it with ACL_READ_DATA, ACL_LIST_DIRECTORY, ACL_WRITE_DATA,
+ACL_ADD_FILE, ACL_APPEND_DATA, ACL_ADD_SUBDIRECTORY, ACL_READ_NAMED_ATTRS,
+ACL_WRITE_NAMED_ATTRS, ACL_DELETE_CHILD, ACL_READ_ATTRIBUTES,
+ACL_WRITE_ATTRIBUTES, ACL_DELETE, ACL_READ_ACL, ACL_WRITE_ACL
+or ACL_SYNCHRONIZE brands the ACL as NFSv4.
 .Sh RETURN VALUES
 .Rv -std acl_add_perm
 .Sh ERRORS
@@ -73,11 +105,13 @@
 does not contain a valid
 .Vt acl_perm_t
 value.
+ACL is already branded differently.
 .El
 .Sh SEE ALSO
 .Xr acl 3 ,
 .Xr acl_clear_perms 3 ,
 .Xr acl_delete_perm 3 ,
+.Xr acl_get_brand_np 3 ,
 .Xr acl_get_permset 3 ,
 .Xr acl_set_permset 3 ,
 .Xr posix1e 3

==== //depot/projects/scottl-camlock/src/lib/libc/posix1e/acl_calc_mask.c#3 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/lib/libc/posix1e/acl_calc_mask.c,v 1.9 2008/11/04 00:20:43 imp Exp $");
+__FBSDID("$FreeBSD: src/lib/libc/posix1e/acl_calc_mask.c,v 1.10 2009/06/25 12:46:59 trasz Exp $");
 
 #include <sys/types.h>
 #include "namespace.h"
@@ -35,6 +35,8 @@
 #include <errno.h>
 #include <stdio.h>
 
+#include "acl_support.h"
+
 /*
  * acl_calc_mask() (23.4.2): calculate and set the permissions
  * associated with the ACL_MASK ACL entry.  If the ACL already
@@ -48,6 +50,12 @@
 	acl_t		acl_new;
 	int		i, mask_mode, mask_num;
 
+	if (!_acl_brand_may_be(*acl_p, ACL_BRAND_POSIX)) {
+		errno = EINVAL;
+		return (-1);
+	}

>>> TRUNCATED FOR MAIL (1000 lines) <<<



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200906251844.n5PIimPl068720>