PERFORCE change 176574 for review
Alexander Motin
mav at FreeBSD.org
Tue Apr 6 09:57:39 UTC 2010
http://p4web.freebsd.org/chv.cgi?CH=176574
Change 176574 by mav at mav_mavbook on 2010/04/06 09:57:10
IFC
Affected files ...
.. //depot/projects/scottl-camlock/src/UPDATING#29 integrate
.. //depot/projects/scottl-camlock/src/bin/sh/expand.c#8 integrate
.. //depot/projects/scottl-camlock/src/bin/sh/mksyntax.c#5 integrate
.. //depot/projects/scottl-camlock/src/bin/sh/options.c#5 integrate
.. //depot/projects/scottl-camlock/src/bin/sh/parser.c#13 integrate
.. //depot/projects/scottl-camlock/src/bin/sh/sh.1#10 integrate
.. //depot/projects/scottl-camlock/src/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c#4 integrate
.. //depot/projects/scottl-camlock/src/contrib/tzdata/asia#3 integrate
.. //depot/projects/scottl-camlock/src/contrib/tzdata/europe#2 integrate
.. //depot/projects/scottl-camlock/src/contrib/tzdata/zone.tab#3 integrate
.. //depot/projects/scottl-camlock/src/etc/rc.subr#11 integrate
.. //depot/projects/scottl-camlock/src/include/netdb.h#4 integrate
.. //depot/projects/scottl-camlock/src/include/nsswitch.h#4 integrate
.. //depot/projects/scottl-camlock/src/lib/libc/db/hash/hash.c#4 integrate
.. //depot/projects/scottl-camlock/src/lib/libc/db/hash/hash.h#3 integrate
.. //depot/projects/scottl-camlock/src/lib/libc/db/man/hash.3#2 integrate
.. //depot/projects/scottl-camlock/src/lib/libc/net/getservent.c#2 integrate
.. //depot/projects/scottl-camlock/src/lib/libc/net/nsdispatch.3#2 integrate
.. //depot/projects/scottl-camlock/src/lib/libc/stdio/printf.3#5 integrate
.. //depot/projects/scottl-camlock/src/lib/libc/stdio/vasprintf.c#4 integrate
.. //depot/projects/scottl-camlock/src/lib/libpmc/Makefile#6 integrate
.. //depot/projects/scottl-camlock/src/lib/libpmc/libpmc.c#9 integrate
.. //depot/projects/scottl-camlock/src/lib/libpmc/pmc.corei7.3#1 branch
.. //depot/projects/scottl-camlock/src/lib/libpmc/pmc.corei7uc.3#1 branch
.. //depot/projects/scottl-camlock/src/lib/libpmc/pmc.ucf.3#1 branch
.. //depot/projects/scottl-camlock/src/lib/libpmc/pmc.westmere.3#1 branch
.. //depot/projects/scottl-camlock/src/lib/libpmc/pmc.westmereuc.3#1 branch
.. //depot/projects/scottl-camlock/src/lib/libz/zconf.h#4 integrate
.. //depot/projects/scottl-camlock/src/share/examples/indent/indent.pro#1 branch
.. //depot/projects/scottl-camlock/src/share/man/man5/nsswitch.conf.5#3 integrate
.. //depot/projects/scottl-camlock/src/share/man/man5/services.5#2 integrate
.. //depot/projects/scottl-camlock/src/share/man/man7/build.7#5 integrate
.. //depot/projects/scottl-camlock/src/share/misc/committers-ports.dot#10 integrate
.. //depot/projects/scottl-camlock/src/share/mk/bsd.lib.mk#6 integrate
.. //depot/projects/scottl-camlock/src/share/mk/bsd.port.mk#2 integrate
.. //depot/projects/scottl-camlock/src/share/mk/bsd.prog.mk#4 integrate
.. //depot/projects/scottl-camlock/src/share/mk/sys.mk#5 integrate
.. //depot/projects/scottl-camlock/src/sys/amd64/include/pmc_mdep.h#5 integrate
.. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_da.c#54 integrate
.. //depot/projects/scottl-camlock/src/sys/compat/ia32/ia32_signal.h#8 integrate
.. //depot/projects/scottl-camlock/src/sys/compat/linprocfs/linprocfs.c#30 integrate
.. //depot/projects/scottl-camlock/src/sys/conf/files.amd64#29 integrate
.. //depot/projects/scottl-camlock/src/sys/conf/files.i386#29 integrate
.. //depot/projects/scottl-camlock/src/sys/conf/files.pc98#22 integrate
.. //depot/projects/scottl-camlock/src/sys/conf/kern.mk#12 integrate
.. //depot/projects/scottl-camlock/src/sys/conf/kern.post.mk#17 integrate
.. //depot/projects/scottl-camlock/src/sys/conf/kern.pre.mk#13 integrate
.. //depot/projects/scottl-camlock/src/sys/conf/kmod.mk#21 integrate
.. //depot/projects/scottl-camlock/src/sys/contrib/dev/acpica/changes.txt#8 integrate
.. //depot/projects/scottl-camlock/src/sys/contrib/dev/acpica/common/dmextern.c#4 integrate
.. //depot/projects/scottl-camlock/src/sys/contrib/dev/acpica/compiler/aslanalyze.c#8 integrate
.. //depot/projects/scottl-camlock/src/sys/contrib/dev/acpica/compiler/aslcompiler.h#9 integrate
.. //depot/projects/scottl-camlock/src/sys/contrib/dev/acpica/compiler/aslpredef.c#2 integrate
.. //depot/projects/scottl-camlock/src/sys/contrib/dev/acpica/compiler/aslstubs.c#9 integrate
.. //depot/projects/scottl-camlock/src/sys/contrib/dev/acpica/compiler/asltypes.h#10 integrate
.. //depot/projects/scottl-camlock/src/sys/contrib/dev/acpica/debugger/dbdisply.c#4 integrate
.. //depot/projects/scottl-camlock/src/sys/contrib/dev/acpica/events/evgpe.c#5 integrate
.. //depot/projects/scottl-camlock/src/sys/contrib/dev/acpica/events/evgpeblk.c#6 integrate
.. //depot/projects/scottl-camlock/src/sys/contrib/dev/acpica/events/evxface.c#5 integrate
.. //depot/projects/scottl-camlock/src/sys/contrib/dev/acpica/events/evxfevnt.c#4 integrate
.. //depot/projects/scottl-camlock/src/sys/contrib/dev/acpica/executer/exdebug.c#2 integrate
.. //depot/projects/scottl-camlock/src/sys/contrib/dev/acpica/executer/exmutex.c#5 integrate
.. //depot/projects/scottl-camlock/src/sys/contrib/dev/acpica/executer/exoparg2.c#4 integrate
.. //depot/projects/scottl-camlock/src/sys/contrib/dev/acpica/executer/exregion.c#5 integrate
.. //depot/projects/scottl-camlock/src/sys/contrib/dev/acpica/include/acevents.h#3 integrate
.. //depot/projects/scottl-camlock/src/sys/contrib/dev/acpica/include/acexcep.h#3 integrate
.. //depot/projects/scottl-camlock/src/sys/contrib/dev/acpica/include/acglobal.h#6 integrate
.. //depot/projects/scottl-camlock/src/sys/contrib/dev/acpica/include/aclocal.h#5 integrate
.. //depot/projects/scottl-camlock/src/sys/contrib/dev/acpica/include/acpixf.h#8 integrate
.. //depot/projects/scottl-camlock/src/sys/contrib/dev/acpica/include/actables.h#3 integrate
.. //depot/projects/scottl-camlock/src/sys/contrib/dev/acpica/include/actypes.h#4 integrate
.. //depot/projects/scottl-camlock/src/sys/contrib/dev/acpica/include/platform/acfreebsd.h#3 integrate
.. //depot/projects/scottl-camlock/src/sys/contrib/dev/acpica/parser/psxface.c#6 integrate
.. //depot/projects/scottl-camlock/src/sys/contrib/dev/acpica/tables/tbutils.c#5 integrate
.. //depot/projects/scottl-camlock/src/sys/contrib/dev/acpica/tables/tbxface.c#3 integrate
.. //depot/projects/scottl-camlock/src/sys/contrib/dev/acpica/utilities/utglobal.c#5 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/acpica/acpi.c#31 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/acpica/acpi_button.c#8 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/acpica/acpi_ec.c#16 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/acpica/acpi_lid.c#8 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/acpica/acpivar.h#19 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/cxgb/cxgb_adapter.h#13 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/cxgb/cxgb_main.c#18 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/cxgb/cxgb_sge.c#22 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/hwpmc/hwpmc_core.c#6 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/hwpmc/hwpmc_core.h#2 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/hwpmc/hwpmc_intel.c#3 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/hwpmc/hwpmc_uncore.c#1 branch
.. //depot/projects/scottl-camlock/src/sys/dev/hwpmc/hwpmc_uncore.h#1 branch
.. //depot/projects/scottl-camlock/src/sys/dev/hwpmc/pmc_events.h#8 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/ofw/ofw_standard.c#5 integrate
.. //depot/projects/scottl-camlock/src/sys/fs/coda/cnode.h#3 integrate
.. //depot/projects/scottl-camlock/src/sys/fs/coda/coda.h#2 integrate
.. //depot/projects/scottl-camlock/src/sys/fs/coda/coda_subr.c#3 integrate
.. //depot/projects/scottl-camlock/src/sys/fs/coda/coda_subr.h#2 integrate
.. //depot/projects/scottl-camlock/src/sys/fs/coda/coda_venus.c#3 integrate
.. //depot/projects/scottl-camlock/src/sys/fs/coda/coda_venus.h#3 integrate
.. //depot/projects/scottl-camlock/src/sys/fs/coda/coda_vfsops.c#4 integrate
.. //depot/projects/scottl-camlock/src/sys/fs/coda/coda_vfsops.h#2 integrate
.. //depot/projects/scottl-camlock/src/sys/fs/coda/coda_vnops.c#4 integrate
.. //depot/projects/scottl-camlock/src/sys/fs/deadfs/dead_vnops.c#8 integrate
.. //depot/projects/scottl-camlock/src/sys/fs/msdosfs/msdosfs_vfsops.c#20 integrate
.. //depot/projects/scottl-camlock/src/sys/fs/nfsserver/nfs_nfsdport.c#9 integrate
.. //depot/projects/scottl-camlock/src/sys/fs/nfsserver/nfs_nfsdserv.c#5 integrate
.. //depot/projects/scottl-camlock/src/sys/geom/geom_vfs.c#9 integrate
.. //depot/projects/scottl-camlock/src/sys/i386/include/pmc_mdep.h#5 integrate
.. //depot/projects/scottl-camlock/src/sys/kern/init_main.c#22 integrate
.. //depot/projects/scottl-camlock/src/sys/kern/vfs_bio.c#22 integrate
.. //depot/projects/scottl-camlock/src/sys/kern/vfs_default.c#22 integrate
.. //depot/projects/scottl-camlock/src/sys/kern/vfs_subr.c#31 integrate
.. //depot/projects/scottl-camlock/src/sys/kern/vfs_vnops.c#26 integrate
.. //depot/projects/scottl-camlock/src/sys/modules/hwpmc/Makefile#5 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet/sctp_asconf.c#11 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet/sctp_constants.h#13 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet/sctp_indata.c#20 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet/sctp_indata.h#9 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet/sctp_input.c#21 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet/sctp_output.c#24 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet/sctp_output.h#10 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet/sctp_pcb.c#22 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet/sctp_pcb.h#12 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet/sctp_structs.h#15 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet/sctp_usrreq.c#17 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet/sctp_var.h#10 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet/sctputil.c#23 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet/sctputil.h#14 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet6/sctp6_usrreq.c#11 integrate
.. //depot/projects/scottl-camlock/src/sys/netipsec/ipsec.c#18 integrate
.. //depot/projects/scottl-camlock/src/sys/powerpc/ofw/ofw_real.c#4 integrate
.. //depot/projects/scottl-camlock/src/sys/sparc64/sparc64/trap.c#20 integrate
.. //depot/projects/scottl-camlock/src/sys/sys/pmc.h#10 integrate
.. //depot/projects/scottl-camlock/src/sys/sys/vnode.h#25 integrate
.. //depot/projects/scottl-camlock/src/sys/teken/teken.c#7 integrate
.. //depot/projects/scottl-camlock/src/sys/ufs/ffs/ffs_vfsops.c#23 integrate
.. //depot/projects/scottl-camlock/src/sys/vm/vm_map.c#29 integrate
.. //depot/projects/scottl-camlock/src/sys/vm/vm_map.h#13 integrate
.. //depot/projects/scottl-camlock/src/sys/vm/vm_page.c#26 integrate
.. //depot/projects/scottl-camlock/src/tools/regression/bin/sh/expansion/arith4.0#1 branch
.. //depot/projects/scottl-camlock/src/tools/regression/bin/sh/expansion/arith5.0#1 branch
.. //depot/projects/scottl-camlock/src/tools/regression/bin/sh/expansion/plus-minus2.0#1 branch
.. //depot/projects/scottl-camlock/src/tools/regression/bin/sh/expansion/tilde1.0#1 branch
.. //depot/projects/scottl-camlock/src/tools/regression/bin/sh/expansion/tilde2.0#1 branch
.. //depot/projects/scottl-camlock/src/tools/regression/bin/sh/expansion/trim1.0#1 branch
.. //depot/projects/scottl-camlock/src/tools/regression/bin/sh/expansion/trim2.0#1 branch
.. //depot/projects/scottl-camlock/src/tools/regression/bin/sh/parser/heredoc2.0#1 branch
.. //depot/projects/scottl-camlock/src/usr.bin/getent/getent.c#5 integrate
.. //depot/projects/scottl-camlock/src/usr.bin/make/main.c#5 integrate
.. //depot/projects/scottl-camlock/src/usr.sbin/Makefile#12 integrate
.. //depot/projects/scottl-camlock/src/usr.sbin/ac/ac.c#3 integrate
.. //depot/projects/scottl-camlock/src/usr.sbin/mtree/mtree.8#4 integrate
.. //depot/projects/scottl-camlock/src/usr.sbin/pkg_install/lib/lib.h#8 integrate
.. //depot/projects/scottl-camlock/src/usr.sbin/pkg_install/lib/plist.c#4 integrate
.. //depot/projects/scottl-camlock/src/usr.sbin/pmcstat/pmcpl_callgraph.c#3 integrate
.. //depot/projects/scottl-camlock/src/usr.sbin/pmcstat/pmcpl_calltree.c#4 integrate
.. //depot/projects/scottl-camlock/src/usr.sbin/pmcstat/pmcstat_log.c#7 integrate
.. //depot/projects/scottl-camlock/src/usr.sbin/pmcstat/pmcstat_log.h#2 integrate
.. //depot/projects/scottl-camlock/src/usr.sbin/services_mkdb/Makefile#1 branch
.. //depot/projects/scottl-camlock/src/usr.sbin/services_mkdb/services_mkdb.8#1 branch
.. //depot/projects/scottl-camlock/src/usr.sbin/services_mkdb/services_mkdb.c#1 branch
.. //depot/projects/scottl-camlock/src/usr.sbin/services_mkdb/uniq.c#1 branch
Differences ...
==== //depot/projects/scottl-camlock/src/UPDATING#29 (text+ko) ====
@@ -22,6 +22,16 @@
machines to maximize performance. (To disable malloc debugging, run
ln -s aj /etc/malloc.conf.)
+20100402:
+ WITH_CTF can now be specified in src.conf (not recommended, there
+ are some problems with static executables), make.conf (would also
+ affect ports which do not use GNU make and do not override the
+ compile targets) or in the kernel config (via "makeoptions
+ WITH_CTF=yes").
+ When WITH_CTF was specified there before this was silently ignored,
+ so make sure that WITH_CTF is not used in places which could lead
+ to unwanted behavior.
+
20100311:
The kernel option COMPAT_IA32 has been replaced with COMPAT_FREEBSD32
to allow 32-bit compatibility on non-x86 platforms. All kernel
@@ -1120,4 +1130,4 @@
Contact Warner Losh if you have any questions about your use of
this document.
-$FreeBSD: src/UPDATING,v 1.656 2010/03/11 14:49:06 nwhitehorn Exp $
+$FreeBSD: src/UPDATING,v 1.657 2010/04/02 06:55:31 netchild Exp $
==== //depot/projects/scottl-camlock/src/bin/sh/expand.c#8 (text+ko) ====
@@ -36,7 +36,7 @@
#endif
#endif /* not lint */
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/bin/sh/expand.c,v 1.60 2010/01/01 18:17:46 jilles Exp $");
+__FBSDID("$FreeBSD: src/bin/sh/expand.c,v 1.62 2010/04/03 22:04:44 jilles Exp $");
#include <sys/types.h>
#include <sys/time.h>
@@ -273,7 +273,6 @@
switch(c) {
case CTLESC: /* This means CTL* are always considered quoted. */
case CTLVAR:
- case CTLENDVAR:
case CTLBACKQ:
case CTLBACKQ | CTLQUOTE:
case CTLARI:
@@ -285,6 +284,7 @@
goto done;
break;
case '/':
+ case CTLENDVAR:
goto done;
}
p++;
@@ -506,7 +506,9 @@
int amount;
herefd = -1;
- argstr(p, 0);
+ argstr(p, (subtype == VSTRIMLEFT || subtype == VSTRIMLEFTMAX ||
+ subtype == VSTRIMRIGHT || subtype == VSTRIMRIGHTMAX ?
+ EXP_CASE : 0) | EXP_TILDE);
STACKSTRNUL(expdest);
herefd = saveherefd;
argbackq = saveargbackq;
==== //depot/projects/scottl-camlock/src/bin/sh/mksyntax.c#5 (text+ko) ====
@@ -42,7 +42,7 @@
#endif /* not lint */
#endif
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/bin/sh/mksyntax.c,v 1.27 2009/12/27 18:04:05 jilles Exp $");
+__FBSDID("$FreeBSD: src/bin/sh/mksyntax.c,v 1.28 2010/04/03 21:01:01 jilles Exp $");
/*
* This program creates syntax.h and syntax.c.
@@ -232,8 +232,6 @@
add("\n", "CNL");
add("\\", "CBACK");
add("`", "CBQUOTE");
- add("'", "CSQUOTE");
- add("\"", "CDQUOTE");
add("$", "CVAR");
add("}", "CENDVAR");
add("(", "CLP");
==== //depot/projects/scottl-camlock/src/bin/sh/options.c#5 (text+ko) ====
@@ -36,7 +36,7 @@
#endif
#endif /* not lint */
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/bin/sh/options.c,v 1.29 2009/12/27 18:04:05 jilles Exp $");
+__FBSDID("$FreeBSD: src/bin/sh/options.c,v 1.30 2010/04/05 14:15:51 jilles Exp $");
#include <signal.h>
#include <unistd.h>
@@ -93,8 +93,11 @@
options(1);
if (*argptr == NULL && minusc == NULL)
sflag = 1;
- if (iflag == 2 && sflag == 1 && isatty(0) && isatty(1))
+ if (iflag != 0 && sflag == 1 && isatty(0) && isatty(1)) {
iflag = 1;
+ if (Eflag == 2)
+ Eflag = 1;
+ }
if (mflag == 2)
mflag = iflag;
for (i = 0; i < NOPTS; i++)
==== //depot/projects/scottl-camlock/src/bin/sh/parser.c#13 (text+ko) ====
@@ -36,7 +36,7 @@
#endif
#endif /* not lint */
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/bin/sh/parser.c,v 1.74 2010/03/13 20:43:11 jilles Exp $");
+__FBSDID("$FreeBSD: src/bin/sh/parser.c,v 1.77 2010/04/03 21:01:01 jilles Exp $");
#include <stdlib.h>
#include <unistd.h>
@@ -79,6 +79,10 @@
int striptabs; /* if set, strip leading tabs */
};
+struct parser_temp {
+ struct parser_temp *next;
+ void *data;
+};
STATIC struct heredoc *heredoclist; /* list of here documents to read */
@@ -94,6 +98,7 @@
STATIC int quoteflag; /* set if (part of) last token was quoted */
STATIC int startlinno; /* line # where last token started */
STATIC int funclinno; /* line # where the current function started */
+STATIC struct parser_temp *parser_temp;
/* XXX When 'noaliases' is set to one, no alias expansion takes place. */
static int noaliases = 0;
@@ -117,6 +122,73 @@
STATIC void setprompt(int);
+STATIC void *
+parser_temp_alloc(size_t len)
+{
+ struct parser_temp *t;
+
+ INTOFF;
+ t = ckmalloc(sizeof(*t));
+ t->data = NULL;
+ t->next = parser_temp;
+ parser_temp = t;
+ t->data = ckmalloc(len);
+ INTON;
+ return t->data;
+}
+
+
+STATIC void *
+parser_temp_realloc(void *ptr, size_t len)
+{
+ struct parser_temp *t;
+
+ INTOFF;
+ t = parser_temp;
+ if (ptr != t->data)
+ error("bug: parser_temp_realloc misused");
+ t->data = ckrealloc(t->data, len);
+ INTON;
+ return t->data;
+}
+
+
+STATIC void
+parser_temp_free_upto(void *ptr)
+{
+ struct parser_temp *t;
+ int done = 0;
+
+ INTOFF;
+ while (parser_temp != NULL && !done) {
+ t = parser_temp;
+ parser_temp = t->next;
+ done = t->data == ptr;
+ ckfree(t->data);
+ ckfree(t);
+ }
+ INTON;
+ if (!done)
+ error("bug: parser_temp_free_upto misused");
+}
+
+
+STATIC void
+parser_temp_free_all(void)
+{
+ struct parser_temp *t;
+
+ INTOFF;
+ while (parser_temp != NULL) {
+ t = parser_temp;
+ parser_temp = t->next;
+ ckfree(t->data);
+ ckfree(t);
+ }
+ INTON;
+}
+
+
/*
* Read and parse a command. Returns NEOF on end of file. (NULL is a
* valid parse tree indicating a blank line.)
@@ -127,6 +199,11 @@
{
int t;
+ /* This assumes the parser is not re-entered,
+ * which could happen if we add command substitution on PS1/PS2.
+ */
+ parser_temp_free_all();
+
tokpushback = 0;
doprompt = interact;
if (doprompt)
@@ -863,6 +940,21 @@
}
+#define MAXNEST_STATIC 8
+struct tokenstate
+{
+ const char *syntax; /* *SYNTAX */
+ int parenlevel; /* levels of parentheses in arithmetic */
+ enum tokenstate_category
+ {
+ TSTATE_TOP,
+ TSTATE_VAR_OLD, /* ${var+-=?}, inherits dquotes */
+ TSTATE_VAR_NEW, /* other ${var...}, own dquote state */
+ TSTATE_ARITH
+ } category;
+};
+
+
/*
* Called to parse command substitutions.
*/
@@ -1040,7 +1132,7 @@
#define PARSEARITH() {goto parsearith; parsearith_return:;}
STATIC int
-readtoken1(int firstc, char const *syntax, char *eofmark, int striptabs)
+readtoken1(int firstc, char const *initialsyntax, char *eofmark, int striptabs)
{
int c = firstc;
char *out;
@@ -1048,22 +1140,21 @@
char line[EOFMARKLEN + 1];
struct nodelist *bqlist;
int quotef;
- int dblquote;
- int varnest; /* levels of variables expansion */
- int arinest; /* levels of arithmetic expansion */
- int parenlevel; /* levels of parens in arithmetic */
- char const *prevsyntax; /* syntax before arithmetic */
+ int newvarnest;
+ int level;
int synentry;
+ struct tokenstate state_static[MAXNEST_STATIC];
+ int maxnest = MAXNEST_STATIC;
+ struct tokenstate *state = state_static;
startlinno = plinno;
- dblquote = 0;
- if (syntax == DQSYNTAX)
- dblquote = 1;
quotef = 0;
bqlist = NULL;
- varnest = 0;
- arinest = 0;
- parenlevel = 0;
+ newvarnest = 0;
+ level = 0;
+ state[level].syntax = initialsyntax;
+ state[level].parenlevel = 0;
+ state[level].category = TSTATE_TOP;
STARTSTACKSTR(out);
loop: { /* for each line, until end of word */
@@ -1071,11 +1162,11 @@
for (;;) { /* until end of line or end of word */
CHECKSTRSPACE(3, out); /* permit 3 calls to USTPUTC */
- synentry = syntax[c];
+ synentry = state[level].syntax[c];
switch(synentry) {
case CNL: /* '\n' */
- if (syntax == BASESYNTAX)
+ if (state[level].syntax == BASESYNTAX)
goto endword; /* exit outer loop */
USTPUTC(c, out);
plinno++;
@@ -1089,7 +1180,7 @@
USTPUTC(c, out);
break;
case CCTL:
- if (eofmark == NULL || dblquote)
+ if (eofmark == NULL || initialsyntax != SQSYNTAX)
USTPUTC(CTLESC, out);
USTPUTC(c, out);
break;
@@ -1105,41 +1196,34 @@
else
setprompt(0);
} else {
- if (dblquote && c != '\\' &&
- c != '`' && c != '$' &&
- (c != '"' || eofmark != NULL))
+ if (state[level].syntax == DQSYNTAX &&
+ c != '\\' && c != '`' && c != '$' &&
+ (c != '"' || (eofmark != NULL &&
+ newvarnest == 0)) &&
+ (c != '}' || state[level].category != TSTATE_VAR_OLD))
USTPUTC('\\', out);
if (SQSYNTAX[c] == CCTL)
USTPUTC(CTLESC, out);
- else if (eofmark == NULL)
+ else if (eofmark == NULL ||
+ newvarnest > 0)
USTPUTC(CTLQUOTEMARK, out);
USTPUTC(c, out);
quotef++;
}
break;
case CSQUOTE:
- if (eofmark == NULL)
- USTPUTC(CTLQUOTEMARK, out);
- syntax = SQSYNTAX;
+ USTPUTC(CTLQUOTEMARK, out);
+ state[level].syntax = SQSYNTAX;
break;
case CDQUOTE:
- if (eofmark == NULL)
- USTPUTC(CTLQUOTEMARK, out);
- syntax = DQSYNTAX;
- dblquote = 1;
+ USTPUTC(CTLQUOTEMARK, out);
+ state[level].syntax = DQSYNTAX;
break;
case CENDQUOTE:
- if (eofmark != NULL && arinest == 0 &&
- varnest == 0) {
+ if (eofmark != NULL && newvarnest == 0)
USTPUTC(c, out);
- } else {
- if (arinest) {
- syntax = ARISYNTAX;
- dblquote = 0;
- } else if (eofmark == NULL) {
- syntax = BASESYNTAX;
- dblquote = 0;
- }
+ else {
+ state[level].syntax = BASESYNTAX;
quotef++;
}
break;
@@ -1147,30 +1231,33 @@
PARSESUB(); /* parse substitution */
break;
case CENDVAR: /* '}' */
- if (varnest > 0) {
- varnest--;
+ if (level > 0 &&
+ (state[level].category == TSTATE_VAR_OLD ||
+ state[level].category == TSTATE_VAR_NEW)) {
+ if (state[level].category == TSTATE_VAR_OLD)
+ state[level - 1].syntax = state[level].syntax;
+ else
+ newvarnest--;
+ level--;
USTPUTC(CTLENDVAR, out);
} else {
USTPUTC(c, out);
}
break;
case CLP: /* '(' in arithmetic */
- parenlevel++;
+ state[level].parenlevel++;
USTPUTC(c, out);
break;
case CRP: /* ')' in arithmetic */
- if (parenlevel > 0) {
+ if (state[level].parenlevel > 0) {
USTPUTC(c, out);
- --parenlevel;
+ --state[level].parenlevel;
} else {
if (pgetc() == ')') {
- if (--arinest == 0) {
+ if (level > 0 &&
+ state[level].category == TSTATE_ARITH) {
+ level--;
USTPUTC(CTLENDARI, out);
- syntax = prevsyntax;
- if (syntax == DQSYNTAX)
- dblquote = 1;
- else
- dblquote = 0;
} else
USTPUTC(')', out);
} else {
@@ -1184,13 +1271,15 @@
}
break;
case CBQUOTE: /* '`' */
- out = parsebackq(out, &bqlist, 1, dblquote,
- arinest || dblquote);
+ out = parsebackq(out, &bqlist, 1,
+ state[level].syntax == DQSYNTAX &&
+ (eofmark == NULL || newvarnest > 0),
+ state[level].syntax == DQSYNTAX || state[level].syntax == ARISYNTAX);
break;
case CEOF:
goto endword; /* exit outer loop */
default:
- if (varnest == 0)
+ if (level == 0)
goto endword; /* exit outer loop */
USTPUTC(c, out);
}
@@ -1198,14 +1287,17 @@
}
}
endword:
- if (syntax == ARISYNTAX)
+ if (state[level].syntax == ARISYNTAX)
synerror("Missing '))'");
- if (syntax != BASESYNTAX && eofmark == NULL)
+ if (state[level].syntax != BASESYNTAX && eofmark == NULL)
synerror("Unterminated quoted string");
- if (varnest != 0) {
+ if (state[level].category == TSTATE_VAR_OLD ||
+ state[level].category == TSTATE_VAR_NEW) {
startlinno = plinno;
synerror("Missing '}'");
}
+ if (state != state_static)
+ parser_temp_free_upto(state);
USTPUTC('\0', out);
len = out - stackblock();
out = stackblock();
@@ -1228,7 +1320,6 @@
/* end of readtoken routine */
-
/*
* Check to see whether we are at the end of the here document. When this
* is called, c is set to the first character of the next input line. If
@@ -1345,8 +1436,11 @@
PARSEARITH();
} else {
pungetc();
- out = parsebackq(out, &bqlist, 0, dblquote,
- arinest || dblquote);
+ out = parsebackq(out, &bqlist, 0,
+ state[level].syntax == DQSYNTAX &&
+ (eofmark == NULL || newvarnest > 0),
+ state[level].syntax == DQSYNTAX ||
+ state[level].syntax == ARISYNTAX);
}
} else {
USTPUTC(CTLVAR, out);
@@ -1401,6 +1495,8 @@
subtype = VSERROR;
if (c == '}')
pungetc();
+ else if (c == '\n' || c == PEOF)
+ synerror("Unexpected end of line in substitution");
else
USTPUTC(c, out);
} else {
@@ -1417,6 +1513,8 @@
default:
p = strchr(types, c);
if (p == NULL) {
+ if (c == '\n' || c == PEOF)
+ synerror("Unexpected end of line in substitution");
if (flags == VSNUL)
STPUTC(':', out);
STPUTC(c, out);
@@ -1442,11 +1540,44 @@
pungetc();
}
STPUTC('=', out);
- if (subtype != VSLENGTH && (dblquote || arinest))
+ if (subtype != VSLENGTH && (state[level].syntax == DQSYNTAX ||
+ state[level].syntax == ARISYNTAX))
flags |= VSQUOTE;
*(stackblock() + typeloc) = subtype | flags;
- if (subtype != VSNORMAL)
- varnest++;
+ if (subtype != VSNORMAL) {
+ if (level + 1 >= maxnest) {
+ maxnest *= 2;
+ if (state == state_static) {
+ state = parser_temp_alloc(
+ maxnest * sizeof(*state));
+ memcpy(state, state_static,
+ MAXNEST_STATIC * sizeof(*state));
+ } else
+ state = parser_temp_realloc(state,
+ maxnest * sizeof(*state));
+ }
+ level++;
+ state[level].parenlevel = 0;
+ if (subtype == VSMINUS || subtype == VSPLUS ||
+ subtype == VSQUESTION || subtype == VSASSIGN) {
+ /*
+ * For operators that were in the Bourne shell,
+ * inherit the double-quote state.
+ */
+ state[level].syntax = state[level - 1].syntax;
+ state[level].category = TSTATE_VAR_OLD;
+ } else {
+ /*
+ * The other operators take a pattern,
+ * so go to BASESYNTAX.
+ * Also, ' and " are now special, even
+ * in here documents.
+ */
+ state[level].syntax = BASESYNTAX;
+ state[level].category = TSTATE_VAR_NEW;
+ newvarnest++;
+ }
+ }
}
goto parsesub_return;
}
@@ -1457,21 +1588,26 @@
*/
parsearith: {
- if (++arinest == 1) {
- prevsyntax = syntax;
- syntax = ARISYNTAX;
- USTPUTC(CTLARI, out);
- if (dblquote)
- USTPUTC('"',out);
- else
- USTPUTC(' ',out);
- } else {
- /*
- * we collapse embedded arithmetic expansion to
- * parenthesis, which should be equivalent
- */
- USTPUTC('(', out);
+ if (level + 1 >= maxnest) {
+ maxnest *= 2;
+ if (state == state_static) {
+ state = parser_temp_alloc(
+ maxnest * sizeof(*state));
+ memcpy(state, state_static,
+ MAXNEST_STATIC * sizeof(*state));
+ } else
+ state = parser_temp_realloc(state,
+ maxnest * sizeof(*state));
}
+ level++;
+ state[level].syntax = ARISYNTAX;
+ state[level].parenlevel = 0;
+ state[level].category = TSTATE_ARITH;
+ USTPUTC(CTLARI, out);
+ if (state[level - 1].syntax == DQSYNTAX)
+ USTPUTC('"',out);
+ else
+ USTPUTC(' ',out);
goto parsearith_return;
}
==== //depot/projects/scottl-camlock/src/bin/sh/sh.1#10 (text+ko) ====
@@ -30,9 +30,9 @@
.\" SUCH DAMAGE.
.\"
.\" from: @(#)sh.1 8.6 (Berkeley) 5/4/95
-.\" $FreeBSD: src/bin/sh/sh.1,v 1.136 2010/03/06 16:57:53 jilles Exp $
+.\" $FreeBSD: src/bin/sh/sh.1,v 1.138 2010/04/05 14:15:51 jilles Exp $
.\"
-.Dd March 6, 2010
+.Dd April 5, 2010
.Dt SH 1
.Os
.Sh NAME
@@ -210,7 +210,8 @@
.Xr emacs 1
command line editor (disables the
.Fl V
-option if it has been set).
+option if it has been set;
+set automatically when interactive on terminals).
.It Fl e Li errexit
Exit immediately if any untested command fails in non-interactive mode.
The exit status of a command is considered to be
@@ -1178,10 +1179,20 @@
.Ql } .
Any
.Ql }
-escaped by a backslash or within a quoted string, and characters in
+escaped by a backslash or within a single-quoted string, and characters in
embedded arithmetic expansions, command substitutions, and variable
expansions, are not examined in determining the matching
.Ql } .
+Except for the variants with
+.Ql + ,
+.Ql - ,
+.Ql =
+or
+.Ql ?\& ,
+any
+.Ql }
+within a double-quoted string is also not examined in determining the matching
+.Ql } .
.Pp
The simplest form for parameter expansion is:
.Pp
@@ -1265,6 +1276,14 @@
In the parameter expansions shown previously, use of the colon in the
format results in a test for a parameter that is unset or null; omission
of the colon results in a test for a parameter that is only unset.
+.Pp
+The
+.Ar word
+inherits the type of quoting
+(unquoted, double-quoted or here-document)
+from the surroundings,
+with the exception that a backslash that quotes a closing brace is removed
+during quote removal.
.Bl -tag -width indent
.It Li ${# Ns Ar parameter Ns Li }
String Length.
==== //depot/projects/scottl-camlock/src/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c#4 (text+ko) ====
@@ -4288,7 +4288,12 @@
zfs_prop_t zfs_prop = zfs_name_to_prop(nvpair_name(curr));
nvpair_t *next = nvlist_next_nvpair(zhp->zfs_props, curr);
- if (props[zfs_prop] == B_FALSE)
+ /*
+ * We leave user:props in the nvlist, so there will be
+ * some ZPROP_INVAL. To be extra safe, don't prune
+ * those.
+ */
+ if (zfs_prop != ZPROP_INVAL && props[zfs_prop] == B_FALSE)
(void) nvlist_remove(zhp->zfs_props,
nvpair_name(curr), nvpair_type(curr));
curr = next;
==== //depot/projects/scottl-camlock/src/contrib/tzdata/asia#3 (text+ko) ====
@@ -1,4 +1,4 @@
-# @(#)asia 8.56
+# @(#)asia 8.58
# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.
@@ -214,42 +214,20 @@
# 2010 midnight. The decision came at a cabinet meeting at the Prime
# Minister's Office last night..."
-# From Danvin Ruangchan (2009-12-24):
-# ...the news mentions DST will be turned off again 7 months after March
-# 31st on Oct 31, 2010.
-
-# From Arthur David Olson (2009-12-26):
-# Indeed, "The government will advance again the Banglasdesh Standard
-# Time by one one hour on March 31 next year by enforcing the Daylight
-# Saving Time (DST) for seven months. It will continue till October 31
-# until further notice." I take that last sentence as the
-# establishment of a rule.
-
-# From Nobutomo Nakano (2010-02-19):
-# We received a report from Bangladesh saying that the start/end of
-# Bangladesh DST is incorrect. Currently we have only the Bengali version
-# of the official mail from BTRC which describes the following:
-#
-# "From 2010 each year when local standard time is about to reach
-# March 31 at 10:59:00 PM clocks are turned forward 1 hour (11:59:00 PM)
-# and when local daylight time is about to October 31 at 11:59:00 PM
-# clocks are turned backward 1 hour (10:59:00 PM)."
-#
-# So, DST will start/end 1 minute earlier.
-
-# From Arthur David Olson (2010-03-03):
-# The file
-# <a href=http://www.cabinet.gov/bd/file_upload/news_events/en_169.pdf>
-# http://www.cabinet.gov/bd/file_upload/news_events/en_169.pdf
+# From Alexander Krivenyshev (2010-03-22):
+# According to Bangladesh newspaper "The Daily Star,"
+# Cabinet cancels Daylight Saving Time
+# <a href="http://www.thedailystar.net/newDesign/latest_news.php?nid=22817">
+# http://www.thedailystar.net/newDesign/latest_news.php?nid=22817
+# </a>
+# or
+# <a href="http://www.worldtimezone.com/dst_news/dst_news_bangladesh06.html">
+# http://www.worldtimezone.com/dst_news/dst_news_bangladesh06.html
# </a>
-# is in Bengali; it does contain two "31"s as well as two "11.59"s and a "10.59"
-# which is consistent with the information provided by Nobutomo Nakano.
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule Dhaka 2009 only - Jun 19 23:00 1:00 S
Rule Dhaka 2009 only - Dec 31 23:59 0 -
-Rule Dhaka 2010 max - Mar 31 22:59 1:00 S
-Rule Dhaka 2010 max - Oct 31 23:59 0 -
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Asia/Dhaka 6:01:40 - LMT 1890
@@ -2129,6 +2107,32 @@
# http://www.worldtimezone.com/dst_news/dst_news_gazastrip02.html
# </a>
+# From Alexander Krivenyshev (2010-03-19):
+# According to Voice of Palestine DST will last for 191 days, from March
+# 26, 2010 till "the last Sunday before the tenth day of Tishri
+# (October), each year" (October 03, 2010?)
+#
+# <a href="http://palvoice.org/forums/showthread.php?t=245697">
+# http://palvoice.org/forums/showthread.php?t=245697
+# </a>
+# (in Arabic)
+# or
+# <a href="http://www.worldtimezone.com/dst_news/dst_news_westbank03.html">
+# http://www.worldtimezone.com/dst_news/dst_news_westbank03.html
+# </a>
+
+# From Steffen Thorsen (2010-03-24):
+# ...Ma'an News Agency reports that Hamas cabinet has decided it will
+# start one day later, at 12:01am. Not sure if they really mean 12:01am or
+# noon though:
+#
+# <a href="http://www.maannews.net/eng/ViewDetails.aspx?ID=271178">
+# http://www.maannews.net/eng/ViewDetails.aspx?ID=271178
+# </a>
+# (Ma'an News Agency)
+# "At 12:01am Friday, clocks in Israel and the West Bank will change to
+# 1:01am, while Gaza clocks will change at 12:01am Saturday morning."
+
# The rules for Egypt are stolen from the `africa' file.
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule EgyptAsia 1957 only - May 10 0:00 1:00 S
@@ -2146,7 +2150,8 @@
Rule Palestine 2006 only - Sep 22 0:00 0 -
Rule Palestine 2007 only - Sep Thu>=8 2:00 0 -
Rule Palestine 2008 only - Aug lastFri 2:00 0 -
-Rule Palestine 2009 max - Mar lastFri 0:00 1:00 S
+Rule Palestine 2009 only - Mar lastFri 0:00 1:00 S
+Rule Palestine 2010 max - Mar lastSat 0:01 1:00 S
Rule Palestine 2009 max - Sep Fri>=1 2:00 0 -
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
==== //depot/projects/scottl-camlock/src/contrib/tzdata/europe#2 (text+ko) ====
@@ -1,5 +1,5 @@
# <pre>
-# @(#)europe 8.25
+# @(#)europe 8.26
# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.
@@ -2041,7 +2041,9 @@
3:00 Russia KUY%sT 1991 Mar 31 2:00s
2:00 Russia KUY%sT 1991 Sep 29 2:00s
3:00 - KUYT 1991 Oct 20 3:00
- 4:00 Russia SAM%sT # Samara Time
+ 4:00 Russia SAM%sT 2010 Mar 28 2:00s # Samara Time
+ 3:00 Russia SAM%sT
+
#
# From Oscar van Vlijmen (2001-08-25): [This region consists of]
# Respublika Bashkortostan, Komi-Permyatskij avtonomnyj okrug,
@@ -2194,7 +2196,8 @@
11:00 - PETT 1930 Jun 21 # P-K Time
12:00 Russia PET%sT 1991 Mar 31 2:00s
11:00 Russia PET%sT 1992 Jan 19 2:00s
- 12:00 Russia PET%sT
+ 12:00 Russia PET%sT 2010 Mar 28 2:00s
+ 11:00 Russia PET%sT
#
# Chukotskij avtonomnyj okrug
Zone Asia/Anadyr 11:49:56 - LMT 1924 May 2
@@ -2202,7 +2205,8 @@
13:00 Russia ANA%sT 1982 Apr 1 0:00s
12:00 Russia ANA%sT 1991 Mar 31 2:00s
11:00 Russia ANA%sT 1992 Jan 19 2:00s
- 12:00 Russia ANA%sT
+ 12:00 Russia ANA%sT 2010 Mar 28 2:00s
+ 11:00 Russia ANA%sT
# Serbia
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
==== //depot/projects/scottl-camlock/src/contrib/tzdata/zone.tab#3 (text+ko) ====
@@ -1,5 +1,5 @@
# <pre>
-# @(#)zone.tab 8.34
+# @(#)zone.tab 8.35
# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.
#
@@ -330,7 +330,7 @@
RU +5443+02030 Europe/Kaliningrad Moscow-01 - Kaliningrad
RU +5545+03735 Europe/Moscow Moscow+00 - west Russia
RU +4844+04425 Europe/Volgograd Moscow+00 - Caspian Sea
-RU +5312+05009 Europe/Samara Moscow+01 - Samara, Udmurtia
+RU +5312+05009 Europe/Samara Moscow - Samara, Udmurtia
RU +5651+06036 Asia/Yekaterinburg Moscow+02 - Urals
RU +5500+07324 Asia/Omsk Moscow+03 - west Siberia
RU +5502+08255 Asia/Novosibirsk Moscow+03 - Novosibirsk
@@ -341,8 +341,8 @@
RU +4310+13156 Asia/Vladivostok Moscow+07 - Amur River
RU +4658+14242 Asia/Sakhalin Moscow+07 - Sakhalin Island
RU +5934+15048 Asia/Magadan Moscow+08 - Magadan
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list