PERFORCE change 165191 for review
Alexander Motin
mav at FreeBSD.org
Thu Jun 25 18:44:50 UTC 2009
http://perforce.freebsd.org/chv.cgi?CH=165191
Change 165191 by mav at 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) <<<
More information about the p4-projects
mailing list