summaryrefslogtreecommitdiff
path: root/usr/src/lib/libshell/common/data
diff options
context:
space:
mode:
authorRoland Mainz <roland.mainz@nrubsig.org>2009-10-28 10:36:39 -0700
committerRoland Mainz <roland.mainz@nrubsig.org>2009-10-28 10:36:39 -0700
commit34f9b3eef6fdadbda0a846aa4d68691ac40eace5 (patch)
tree0b0fdfb35f8eb9324728de5a99e50e939aca650f /usr/src/lib/libshell/common/data
parent14969419acb89bb74e6c95fa472119b710224440 (diff)
downloadillumos-joyent-34f9b3eef6fdadbda0a846aa4d68691ac40eace5.tar.gz
Portions contributed by Olga Kryzhanovska <olga.kryzhanovska@gmail.com>
PSARC/2009/063 ksh93 update 2 PSARC/2009/248 ksh93 update to 2009-03-10 PSARC/2009/249 more ksh93 command conversions 6888396 libast sources should not include localedef.h 6605478 ksh93 profile shell option does not work 6631006 ksh93 hangs in situations that ksh handles okay 6661487 logname reports nothing after running the script command 6705126 first call to read doesn't honor new setting of HISTFILE 6764665 *libpp* Array overrun in libpp 6765756 *libast* Array overruns in libast 6769332 Recursive function+command substitutions terminate shell after 257 iterations 6777491 *ksh93* lacks arithmetric function iszero() 6778077 *ksh93* does not understand "THAW" as a signal for use with trap 6789247 [ku1] libast/ksh93 1-digit hexfloat base conversion rounds incorrectly 6791838 *ksh93* unset of a variable which is not set should return 0 6793714 RFE: Update /usr/bin/comm to AT&T AST "comm" 6793719 RFE: Update /usr/bin/cut to AT&T AST "cut" 6793721 RFE: Update /usr/bin/paste to AT&T AST "paste" 6793722 RFE: Update /usr/bin/cmp to AT&T AST "cmp" 6793726 RFE: Update /usr/bin/uniq to AT&T AST "uniq" 6793735 RFE: Update /usr/bin/wc to AT&T AST "wc" 6793744 RFE: Add /usr/share/doc/ksh/ for ksh93 documentation 6793747 RFE: Provide "print" builtin as /usr/bin/print for external applications 6793763 RFE: Update /usr/bin/ksh93 to ast-ksh.2009-05-05 6794952 RFE: Enable "globstar" mode in /etc/ksh.kshrc (= interactive ksh93 shells) 6805792 [ku1] Moving local compound var into array does not work 6805794 [ku1] printf returns "invalid character constant" for $ printf "%d\n" "'<euro>" 6805795 [ku1] ksh93 does not differ between -0 and +0 6805797 [ku1]Can't append to nodes of an array of compound vars if addressing them via nameref 6805799 Indexed compound variable arrays do not work... 6805800 [ku1] Declaring associative compound array does not work 6805813 RFE: Update /usr/bin/join to AT&T AST "join". 6805819 RFE: Update /usr/bin/tee to AT&T AST "tee". 6809663 shlint missing ending newline on errors 6811916 ksh93 repeatedly segfaults when "tee" builtin is interrupted via <ctrl-c> in interactive mode 6821113 SUNWosdem package issues 6828644 RFE: Update /usr/bin/logname to AT&T AST "logname". 6828692 RFE: Update /usr/bin/cksum to AT&T AST "cksum". 6834184 ksh93 gets SIGSEGV if HISTFILE is changed in place. 6834207 ksh93 gets SIGSEGV on interactive function definition with HISTSIZE unset 6835835 ksh93 "cat" builtin does not handle "-n" correctly 6841442 Need exception list for OS/Net trees managed via Subversion 6848486 "echo ${test}" with test undefined crashes the shell 6850672 ksh93 (VISUAL=vi) crashes with memory fault while scrolling through history 6855875 typeset -X x ; print $x # does not print sufficient digits to restore value 6857344 /usr/bin/hash core dump with invalid arguments 6866676 Need test suite module to test the kernel support for compiled shell scripts 6881017 Subshell doesn't exit, holds pipe open preventing callers from exiting 6884409 fts functions in libast library can result in segv with deep dir trees (similar to CERT VU#590371)
Diffstat (limited to 'usr/src/lib/libshell/common/data')
-rw-r--r--usr/src/lib/libshell/common/data/aliases.c3
-rw-r--r--usr/src/lib/libshell/common/data/bash_pre_rc.sh2
-rw-r--r--usr/src/lib/libshell/common/data/builtins.c73
-rw-r--r--usr/src/lib/libshell/common/data/keywords.c2
-rw-r--r--usr/src/lib/libshell/common/data/lexstates.c3
-rw-r--r--usr/src/lib/libshell/common/data/limits.c2
-rw-r--r--usr/src/lib/libshell/common/data/math.tab14
-rw-r--r--usr/src/lib/libshell/common/data/msg.c8
-rw-r--r--usr/src/lib/libshell/common/data/options.c6
-rw-r--r--usr/src/lib/libshell/common/data/signals.c163
-rw-r--r--usr/src/lib/libshell/common/data/solaris_cmdlist.h21
-rw-r--r--usr/src/lib/libshell/common/data/strdata.c2
-rw-r--r--usr/src/lib/libshell/common/data/testops.c10
-rw-r--r--usr/src/lib/libshell/common/data/variables.c7
14 files changed, 205 insertions, 111 deletions
diff --git a/usr/src/lib/libshell/common/data/aliases.c b/usr/src/lib/libshell/common/data/aliases.c
index 8a76dc7e82..5b7298b299 100644
--- a/usr/src/lib/libshell/common/data/aliases.c
+++ b/usr/src/lib/libshell/common/data/aliases.c
@@ -1,7 +1,7 @@
/***********************************************************************
* *
* This software is part of the ast package *
-* Copyright (c) 1982-2008 AT&T Intellectual Property *
+* Copyright (c) 1982-2009 AT&T Intellectual Property *
* and is licensed under the *
* Common Public License, Version 1.0 *
* by AT&T Intellectual Property *
@@ -36,6 +36,7 @@ const struct shtable2 shtab_aliases[] =
#endif /* SHOPT_FS_3D */
"autoload", NV_NOFREE, "typeset -fu",
"command", NV_NOFREE, "command ",
+ "compound", NV_NOFREE, "typeset -C",
"fc", NV_NOFREE, "hist",
"float", NV_NOFREE, "typeset -lE",
"functions", NV_NOFREE, "typeset -f",
diff --git a/usr/src/lib/libshell/common/data/bash_pre_rc.sh b/usr/src/lib/libshell/common/data/bash_pre_rc.sh
index e8f51f428b..56767363dc 100644
--- a/usr/src/lib/libshell/common/data/bash_pre_rc.sh
+++ b/usr/src/lib/libshell/common/data/bash_pre_rc.sh
@@ -1,7 +1,7 @@
########################################################################
# #
# This software is part of the ast package #
-# Copyright (c) 1982-2008 AT&T Intellectual Property #
+# Copyright (c) 1982-2009 AT&T Intellectual Property #
# and is licensed under the #
# Common Public License, Version 1.0 #
# by AT&T Intellectual Property #
diff --git a/usr/src/lib/libshell/common/data/builtins.c b/usr/src/lib/libshell/common/data/builtins.c
index dad24caf31..94b34c77dd 100644
--- a/usr/src/lib/libshell/common/data/builtins.c
+++ b/usr/src/lib/libshell/common/data/builtins.c
@@ -1,7 +1,7 @@
/***********************************************************************
* *
* This software is part of the ast package *
-* Copyright (c) 1982-2008 AT&T Intellectual Property *
+* Copyright (c) 1982-2009 AT&T Intellectual Property *
* and is licensed under the *
* Common Public License, Version 1.0 *
* by AT&T Intellectual Property *
@@ -139,6 +139,9 @@ const struct shtable3 shtab_builtins[] =
CMDLIST(wc)
CMDLIST(sync)
#endif
+#if SHOPT_REGRESS
+ "__regress__", NV_BLTIN|BLT_ENV, bltin(__regress__),
+#endif
"", 0, 0
};
@@ -677,6 +680,7 @@ USAGE_LICENSE
"\aflags\a with optional \anumber\a values may be specified to control "
"option parsing. "
"The flags are:]{"
+ "[++?Arguments beginning with + are considered options.]"
"[+c?Cache this \aoptstring\a for multiple passes. Used to optimize "
"builtins that may be called many times within the same process.]"
"[+i?Ignore this \aoptstring\a when generating help. Used when "
@@ -737,9 +741,7 @@ USAGE_LICENSE
"[+8.?A group of the form [-\aname\a?\atext\a]] specifies entries "
"for the \bIMPLEMENTATION\b section.]"
"}"
-"[+?If the leading character of \aoptstring\a is +, then arguments "
- "beginning with + will also be considered options.]"
-"[+?A leading : character or a : following a leading + in \aoptstring\a "
+"[+?A leading : character in \aoptstring\a "
"affects the way errors are handled. If an option character or longname "
"argument not specified in \aoptstring\a is encountered when processing "
"options, the shell variable whose name is \aname\a will be set to the ? "
@@ -750,6 +752,8 @@ USAGE_LICENSE
"Without the leading :, \aname\a will be set to the ? character, \bOPTARG\b "
"will be unset, and an error message will be written to standard error "
"when errors are encountered.]"
+"[+?A leading + character or a + following a leading : in \aoptstring\a "
+ "specifies that arguments beginning with + will also be considered options.]"
"[+?The end of options occurs when:]{"
"[+1.?The special argument \b--\b is encountered.]"
"[+2.?An argument that does not begin with a \b-\b is encountered.]"
@@ -1060,7 +1064,7 @@ USAGE_LICENSE
;
const char sh_optprint[] =
-"[-1c?\n@(#)$Id: print (AT&T Research) 1999-04-07 $\n]"
+"[-1c?\n@(#)$Id: print (AT&T Research) 2008-11-26 $\n]"
USAGE_LICENSE
"[+NAME?print - write arguments to standard output]"
"[+DESCRIPTION?By default, \bprint\b writes each \astring\a operand to "
@@ -1102,6 +1106,8 @@ USAGE_LICENSE
"[u]:[fd:=1?Write to file descriptor number \afd\a instead of standard output.]"
"[v?Treat each \astring\a as a variable name and write the value in \b%B\b "
"format. Cannot be used with \b-f\b.]"
+"[C?Treat each \astring\a as a variable name and write the value in \b%#B\b "
+ "format. Cannot be used with \b-f\b.]"
"\n"
"\n[string ...]\n"
"\n"
@@ -1113,7 +1119,7 @@ USAGE_LICENSE
;
const char sh_optprintf[] =
-"[-1c?\n@(#)$Id: printf (AT&T Research) 2006-10-26 $\n]"
+"[-1c?\n@(#)$Id: printf (AT&T Research) 2009-02-02 $\n]"
USAGE_LICENSE
"[+NAME?printf - write formatted output]"
"[+DESCRIPTION?\bprintf\b writes each \astring\a operand to "
@@ -1161,7 +1167,7 @@ USAGE_LICENSE
"in the underlying code set of the character following the "
"\b\"\b or \b'\b. Otherwise, \astring\a is treated like a shell "
"arithmetic expression and evaluated.]"
-"[+?If a \astring\a operand cannot be completed converted into a value "
+"[+?If a \astring\a operand cannot be completely converted into a value "
"appropriate for that format specifier, an error will occur, "
"but remaining \astring\a operands will continue to be processed.]"
"[+?In addition to the format specifier extensions, the following "
@@ -1174,8 +1180,10 @@ USAGE_LICENSE
"[+-?The escape sequence \b\\x{\b\ahex\a\b}\b expands to the "
"character corresponding to the hexidecimal value \ahex\a.]"
"[+-?The format modifier flag \b=\b can be used to center a field to "
- "a specified width. When the output is a terminal, the "
- "character width is used rather than the number of bytes.]"
+ "a specified width.]"
+ "[+-?The format modifier flag \bL\b can be used with the \bc\b and "
+ "\bs\b formats to treat precision as character width instead "
+ "of byte count.]"
"[+-?Each of the integral format specifiers can have a third "
"modifier after width and precision that specifies the "
"base of the conversion from 2 to 64. In this case the "
@@ -1388,10 +1396,16 @@ USAGE_LICENSE
"in \afile\a that can be used a separate shell script browser. The "
"-R option requires a script to be specified as the first operand.]"
#endif /* SHOPT_KIA */
+#if SHOPT_REGRESS
+"[I:regress]:[intercept?Enable the regression test \aintercept\a. Must be "
+ "the first command line option(s).]"
+#endif
#if SHOPT_BASH
"\fbash2\f"
#endif
"\fabc\f"
+"?"
+"[T?Enable implementation specific test code defined by mask.]#[mask]"
"\n"
"\n[arg ...]\n"
"\n"
@@ -1475,23 +1489,37 @@ USAGE_LICENSE
;
const char sh_optsleep[] =
-"[-1c?\n@(#)$Id: sleep (AT&T Research) 1999-04-07 $\n]"
+"[-1c?\n@(#)$Id: sleep (AT&T Research) 2009-03-12 $\n]"
USAGE_LICENSE
"[+NAME?sleep - suspend execution for an interval]"
"[+DESCRIPTION?\bsleep\b suspends execution for at least the time specified "
- "by \aseconds\a or until a \bSIGALRM\b signal is received. "
- "\aseconds\a can be specified as a floating point number but the "
- "actual granularity depends on the underlying system, normally "
- "around 1 millisecond.]"
+ "by \aduration\a or until a \bSIGALRM\b signal is received. "
+ "\aduration\a may be one of the following:]"
+"{"
+ "[+integer?The number of seconds to sleep.]"
+ "[+floating point?The number of seconds to sleep. The actual "
+ "granularity depends on the underlying system, normally "
+ "around 1 millisecond.]"
+ "[+P\an\a\bY\b\an\a\bM\b\an\a\bDT\b\an\a\bH\b\an\a\bM\b\an\a\bS?An ISO 8601 duration "
+ "where at least one of the duration parts must be specified.]"
+ "[+P\an\a\bW?An ISO 8601 duration specifying \an\a weeks.]"
+ "[+p\an\a\bY\b\an\a\bM\b\an\a\bDT\b\an\a\bH\b\an\a\bm\b\an\a\bS?A case insensitive "
+ "ISO 8601 duration except that \bM\b specifies months, \bm\b before \bs\b or \bS\b "
+ "specifies minutes and after specifies milliseconds, \bu\b or \bU\b specifies "
+ "microseconds, and \bn\b specifies nanoseconds.]"
+ "[+date/time?Sleep until the \bdate\b(1) compatible date/time.]"
+"}"
+"[s?Sleep until a signal or a timeout is received. If \aduration\a is omitted "
+ "or 0 then no timeout will be used.]"
"\n"
-"\nseconds\n"
+"\n[ duration ]\n"
"\n"
"[+EXIT STATUS?]{"
- "[+0?The execution was successfully suspended for at least \atime\a "
- "seconds, or a \bSIGALRM\b signal was received.]"
+ "[+0?The execution was successfully suspended for at least \aduration\a "
+ "or a \bSIGALRM\b signal was received.]"
"[+>0?An error occurred.]"
"}"
-"[+SEE ALSO?\btime\b(1), \bwait\b(1)]"
+"[+SEE ALSO?\bdate\b(1), \btime\b(1), \bwait\b(1)]"
;
const char sh_opttrap[] =
@@ -1566,9 +1594,10 @@ USAGE_LICENSE
"options \b-i\b, \b-E\b, and \b-F\b cannot be specified with "
"the justification options \b-L\b, \b-R\b, and \b-Z\b.]"
"[+?Note that the following preset aliases are set by the shell:]{"
- "[+float?\b\f?\f -E\b.]"
+ "[+compound?\b\f?\f -C\b.]"
+ "[+float?\b\f?\f -lE\b.]"
"[+functions?\b\f?\f -f\b.]"
- "[+integer?\b\f?\f -i\b.]"
+ "[+integer?\b\f?\f -li\b.]"
"[+nameref?\b\f?\f -n\b.]"
"}"
"[+?If no \aname\as are specified then variables that have the specified "
@@ -1640,8 +1669,8 @@ USAGE_LICENSE
"[R]#?[n?Right justify. If \an\a is given it represents the field width. If "
"the \b-Z\b attribute is also specified, then zeros will "
"be used as the fill character. Otherwise, spaces are used.]"
-"[X]#?[n:=10?Floating point number represented in hexadecimal notation. "
- "\an\a specifies the number of significant figures when the "
+"[X]#?[n:=2*sizeof(long long)?Floating point number represented in hexadecimal "
+ "notation. \an\a specifies the number of significant figures when the "
"value is expanded.]"
#ifdef SHOPT_TYPEDEF
diff --git a/usr/src/lib/libshell/common/data/keywords.c b/usr/src/lib/libshell/common/data/keywords.c
index 95e4bee1f6..ccacdb95ee 100644
--- a/usr/src/lib/libshell/common/data/keywords.c
+++ b/usr/src/lib/libshell/common/data/keywords.c
@@ -1,7 +1,7 @@
/***********************************************************************
* *
* This software is part of the ast package *
-* Copyright (c) 1982-2008 AT&T Intellectual Property *
+* Copyright (c) 1982-2009 AT&T Intellectual Property *
* and is licensed under the *
* Common Public License, Version 1.0 *
* by AT&T Intellectual Property *
diff --git a/usr/src/lib/libshell/common/data/lexstates.c b/usr/src/lib/libshell/common/data/lexstates.c
index 438d58f568..3decd14dbc 100644
--- a/usr/src/lib/libshell/common/data/lexstates.c
+++ b/usr/src/lib/libshell/common/data/lexstates.c
@@ -1,7 +1,7 @@
/***********************************************************************
* *
* This software is part of the ast package *
-* Copyright (c) 1982-2008 AT&T Intellectual Property *
+* Copyright (c) 1982-2009 AT&T Intellectual Property *
* and is licensed under the *
* Common Public License, Version 1.0 *
* by AT&T Intellectual Property *
@@ -399,6 +399,7 @@ const char e_lexobsolete3[] = "line %d: '=' obsolete, use '=='";
const char e_lexobsolete4[] = "line %d: %s within [[...]] obsolete, use ((...))";
const char e_lexobsolete5[] = "line %d: set %s obsolete";
const char e_lexobsolete6[] = "line %d: `{' instead of `in' is obsolete";
+const char e_lexnonstandard[] = "line %d: `&>file' is nonstandard -- interpreted as `>file 2>&1' for profile input only";
const char e_lexusebrace[] = "line %d: use braces to avoid ambiguities with $id[...]";
const char e_lexusequote[] = "line %d: %c within ${} should be quoted";
const char e_lexescape[] = "line %d: escape %c to avoid ambiguities";
diff --git a/usr/src/lib/libshell/common/data/limits.c b/usr/src/lib/libshell/common/data/limits.c
index 4c743f7050..ae13d21df5 100644
--- a/usr/src/lib/libshell/common/data/limits.c
+++ b/usr/src/lib/libshell/common/data/limits.c
@@ -1,7 +1,7 @@
/***********************************************************************
* *
* This software is part of the ast package *
-* Copyright (c) 1982-2008 AT&T Intellectual Property *
+* Copyright (c) 1982-2009 AT&T Intellectual Property *
* and is licensed under the *
* Common Public License, Version 1.0 *
* by AT&T Intellectual Property *
diff --git a/usr/src/lib/libshell/common/data/math.tab b/usr/src/lib/libshell/common/data/math.tab
index 281389f105..412154c23a 100644
--- a/usr/src/lib/libshell/common/data/math.tab
+++ b/usr/src/lib/libshell/common/data/math.tab
@@ -1,6 +1,6 @@
# <return type: i:integer f:floating-point> <#floating-point-args> <function-name> [<alias> ...]
# <function-name>l variants are handled by features/math.sh
-# @(#)math.tab (AT&T Research) 2008-05-22
+# @(#)math.tab (AT&T Research) 2009-08-18
f 1 acos
f 1 acosh
f 1 asin
@@ -33,16 +33,21 @@ i 1 isfinite
i 2 isgreater
i 2 isgreaterequal
i 1 isinf
+i 1 isinfinite
i 2 isless
i 2 islessequal
i 2 islessgreater
i 1 isnan
i 1 isnormal
-i 1 issubnormal
+i 1 issubnormal fpclassify=FP_SUBNORMAL
i 2 isunordered
-i 1 iszero
+i 1 iszero fpclassify=FP_ZERO
+f 1 j0
+f 1 j1
+f 2 jn
f 1 lgamma
f 1 log
+f 1 log10
f 1 log1p
f 1 log2
f 1 logb
@@ -63,3 +68,6 @@ f 1 tan
f 1 tanh
f 1 tgamma
f 1 trunc
+f 1 y0
+f 1 y1
+f 2 yn
diff --git a/usr/src/lib/libshell/common/data/msg.c b/usr/src/lib/libshell/common/data/msg.c
index 3a06ed3f8d..022aa5390d 100644
--- a/usr/src/lib/libshell/common/data/msg.c
+++ b/usr/src/lib/libshell/common/data/msg.c
@@ -1,7 +1,7 @@
/***********************************************************************
* *
* This software is part of the ast package *
-* Copyright (c) 1982-2008 AT&T Intellectual Property *
+* Copyright (c) 1982-2009 AT&T Intellectual Property *
* and is licensed under the *
* Common Public License, Version 1.0 *
* by AT&T Intellectual Property *
@@ -50,6 +50,7 @@ const char e_histopen[] = "history file cannot open";
const char e_option[] = "%s: bad option(s)";
const char e_toomany[] = "open file limit exceeded";
const char e_argtype[] = "invalid argument of type %c";
+const char e_oneoperand[] = "one operand expected";
const char e_formspec[] = "%c: unknown format specifier";
const char e_badregexp[] = "%s: invalid regular expression";
const char e_number[] = "%s: bad number";
@@ -85,6 +86,7 @@ const char e_access[] = "permission denied";
#endif /* _cmd_universe */
const char e_direct[] = "bad directory";
const char e_file[] = "%s: bad file unit number";
+const char e_redirect[] = "redirection failed";
const char e_trap[] = "%s: bad trap";
const char e_readonly[] = "%s: is read only";
const char e_badfield[] = "%d: negative field size";
@@ -93,12 +95,14 @@ const char e_badname[] = "%s: invalid name";
const char e_varname[] = "%s: invalid variable name";
const char e_badfun[] = "%s: invalid function name";
const char e_aliname[] = "%s: invalid alias name";
-const char e_badexport[] = "%s: invalid export name";
+const char e_badexport[] = "%s: only simple variables can be exported";
const char e_badref[] = "%s: reference variable cannot be an array";
+const char e_badsubscript[] = "%c: invalid subscript in assignment";
const char e_noarray[] = "%s: cannot be an array";
const char e_badappend[] = "%s: invalid append to associative array";
const char e_noref[] = "%s: no reference name";
const char e_selfref[] = "%s: invalid self reference";
+const char e_globalref[] = "%s: global reference cannot refer to local variable";
const char e_noalias[] = "%s: alias not found\n";
const char e_format[] = "%s: bad format";
const char e_redef[] = "%s: type cannot be redefined";
diff --git a/usr/src/lib/libshell/common/data/options.c b/usr/src/lib/libshell/common/data/options.c
index cd49f6555c..b2894b90e7 100644
--- a/usr/src/lib/libshell/common/data/options.c
+++ b/usr/src/lib/libshell/common/data/options.c
@@ -1,7 +1,7 @@
/***********************************************************************
* *
* This software is part of the ast package *
-* Copyright (c) 1982-2008 AT&T Intellectual Property *
+* Copyright (c) 1982-2009 AT&T Intellectual Property *
* and is licensed under the *
* Common Public License, Version 1.0 *
* by AT&T Intellectual Property *
@@ -127,6 +127,8 @@ const Shtable_t shtab_attributes[] =
{"-xexport", NV_EXPORT},
{"-rreadonly", NV_RDONLY},
{"-ttagged", NV_TAGGED},
+ {"-Aassociative array", NV_ARRAY},
+ {"-aindexed array", NV_ARRAY},
{"-llong", (NV_DOUBLE|NV_LONG)},
{"-Eexponential",(NV_DOUBLE|NV_EXPNOTE)},
{"-Xhexfloat", (NV_DOUBLE|NV_HEXFLOAT)},
@@ -142,8 +144,6 @@ const Shtable_t shtab_attributes[] =
{"-Lleftjust", NV_LJUST},
{"-Rrightjust", NV_RJUST},
{"-uuppercase", NV_LTOU},
- {"-Aassociative array", NV_ARRAY},
- {"-aindexed array", NV_ARRAY},
{"++namespace", NV_TABLE},
{"", 0}
};
diff --git a/usr/src/lib/libshell/common/data/signals.c b/usr/src/lib/libshell/common/data/signals.c
index 7c3df373f9..371ffa2eac 100644
--- a/usr/src/lib/libshell/common/data/signals.c
+++ b/usr/src/lib/libshell/common/data/signals.c
@@ -1,7 +1,7 @@
/***********************************************************************
* *
* This software is part of the ast package *
-* Copyright (c) 1982-2008 AT&T Intellectual Property *
+* Copyright (c) 1982-2009 AT&T Intellectual Property *
* and is licensed under the *
* Common Public License, Version 1.0 *
* by AT&T Intellectual Property *
@@ -34,180 +34,205 @@
#define S(s) ERROR_dictionary(s)
/*
- * This is a table that gives numbers and default settings to each signal
- * The signal numbers go in the low bits and the attributes go in the high bits
+ * This is a table that gives numbers and default settings to each signal.
+ * The signal numbers go in the low bits and the attributes go in the high bits.
+ * The names must be ASCII sorted lo-hi.
*/
const struct shtable2 shtab_signals[] =
{
#ifdef SIGABRT
- "ABRT", VAL(SIGABRT,SH_SIGDONE), S("Abort"),
+ "ABRT", VAL(SIGABRT,SH_SIGDONE), S("Abort"),
#endif /*SIGABRT */
#ifdef SIGAIO
- "AIO", VAL(SIGAIO,SH_SIGIGNORE), S("Asynchronous I/O"),
+ "AIO", VAL(SIGAIO,SH_SIGIGNORE), S("Asynchronous I/O"),
#endif /*SIGAIO */
#ifdef SIGALRM
- "ALRM", VAL(SIGALRM,SH_SIGDONE), S("Alarm call"),
+ "ALRM", VAL(SIGALRM,SH_SIGDONE), S("Alarm call"),
+#endif /* SIGALRM */
+#ifdef SIGALRM1
+ "ALRM1", VAL(SIGALRM1,SH_SIGDONE), S("Scheduling - reserved"),
#endif /* SIGALRM */
#ifdef SIGAPOLLO
- "APOLLO", VAL(SIGAPOLLO,0), "SIGAPOLLO"),
+ "APOLLO", VAL(SIGAPOLLO,0), S("SIGAPOLLO"),
#endif /* SIGAPOLLO */
#ifdef SIGBUS
- "BUS", VAL(SIGBUS,SH_SIGDONE), S("Bus error"),
+ "BUS", VAL(SIGBUS,SH_SIGDONE), S("Bus error"),
#endif /* SIGBUS */
#ifdef SIGCANCEL
- "CANCEL", VAL(SIGCANCEL,SH_SIGIGNORE), S("Thread cancellation"),
+ "CANCEL", VAL(SIGCANCEL,SH_SIGIGNORE), S("Thread cancellation"),
#endif /*SIGCANCEL */
#ifdef SIGCHLD
- "CHLD", VAL(SIGCHLD,SH_SIGFAULT), S("Death of Child"),
+ "CHLD", VAL(SIGCHLD,SH_SIGFAULT), S("Death of Child"),
# ifdef SIGCLD
# if SIGCLD!=SIGCHLD
- "CLD", VAL(SIGCLD,SH_SIGFAULT), S("Death of Child"),
+ "CLD", VAL(SIGCLD,SH_SIGFAULT), S("Death of Child"),
# endif
# endif /* SIGCLD */
#else
# ifdef SIGCLD
- "CLD", VAL(SIGCLD,SH_SIGFAULT), S("Death of Child"),
+ "CLD", VAL(SIGCLD,SH_SIGFAULT), S("Death of Child"),
# endif /* SIGCLD */
#endif /* SIGCHLD */
#ifdef SIGCONT
- "CONT", VAL(SIGCONT,SH_SIGIGNORE), S("Stopped process continued"),
+ "CONT", VAL(SIGCONT,SH_SIGIGNORE), S("Stopped process continued"),
#endif /* SIGCONT */
- "DEBUG", VAL(TRAP(SH_DEBUGTRAP),0), "",
+#ifdef SIGCPUFAIL
+ "CPUFAIL", VAL(SIGCPUFAIL,0), S("Predictive processor deconfiguration"),
+#endif /* SIGRETRACT */
+ "DEBUG", VAL(TRAP(SH_DEBUGTRAP),0), "",
#ifdef SIGDANGER
- "DANGER", VAL(SIGDANGER,0), S("System crash soon"),
+ "DANGER", VAL(SIGDANGER,0), S("System crash soon"),
#endif /* SIGDANGER */
#ifdef SIGDIL
- "DIL", VAL(SIGDIL,0), S("DIL signal"),
+ "DIL", VAL(SIGDIL,0), S("DIL signal"),
#endif /* SIGDIL */
#ifdef SIGEMT
- "EMT", VAL(SIGEMT,SH_SIGDONE), S("EMT trap"),
+ "EMT", VAL(SIGEMT,SH_SIGDONE), S("EMT trap"),
#endif /* SIGEMT */
- "ERR", VAL(TRAP(SH_ERRTRAP),0), "",
+ "ERR", VAL(TRAP(SH_ERRTRAP),0), "",
#ifdef SIGERR
- "ERR", VAL(SIGERR,0), "",
+ "ERR", VAL(SIGERR,0), "",
#endif /* SIGERR */
- "EXIT", VAL(0,0), "",
- "FPE", VAL(SIGFPE,SH_SIGDONE), S("Floating exception"),
+ "EXIT", VAL(0,0), "",
+ "FPE", VAL(SIGFPE,SH_SIGDONE), S("Floating exception"),
#ifdef SIGFREEZE
- "FREEZE", VAL(SIGFREEZE,SH_SIGIGNORE), S("Special signal used by CPR"),
+ "FREEZE", VAL(SIGFREEZE,SH_SIGIGNORE), S("Special signal used by CPR"),
#endif /* SIGFREEZE */
- "HUP", VAL(SIGHUP,SH_SIGDONE), S("Hangup"),
- "ILL", VAL(SIGILL,SH_SIGDONE), S("Illegal instruction"),
+#ifdef SIGGRANT
+ "GRANT", VAL(SIGGRANT,0), S("Grant monitor mode"),
+#endif /* SIGGRANT */
+ "HUP", VAL(SIGHUP,SH_SIGDONE), S("Hangup"),
+ "ILL", VAL(SIGILL,SH_SIGDONE), S("Illegal instruction"),
#ifdef JOBS
- "INT", VAL(SIGINT,SH_SIGINTERACTIVE), S("Interrupt"),
+ "INT", VAL(SIGINT,SH_SIGINTERACTIVE), S("Interrupt"),
#else
- "INT", VAL(SIGINT,SH_SIGINTERACTIVE), "",
+ "INT", VAL(SIGINT,SH_SIGINTERACTIVE), "",
#endif /* JOBS */
#ifdef SIGIO
- "IO", VAL(SIGIO,SH_SIGIGNORE), S("IO signal"),
+ "IO", VAL(SIGIO,SH_SIGDONE), S("IO signal"),
#endif /* SIGIO */
#ifdef SIGIOT
- "IOT", VAL(SIGIOT,SH_SIGDONE), S("Abort"),
+ "IOT", VAL(SIGIOT,SH_SIGDONE), S("Abort"),
#endif /* SIGIOT */
#ifdef SIGJVM1
- "JVM1", VAL(SIGJVM1,SH_SIGIGNORE), S("Special signal used by Java Virtual Machine"),
+ "JVM1", VAL(SIGJVM1,SH_SIGIGNORE), S("Special signal used by Java Virtual Machine"),
#endif /*SIGJVM1 */
#ifdef SIGJVM2
- "JVM2", VAL(SIGJVM2,SH_SIGIGNORE), S("Special signal used by Java Virtual Machine"),
+ "JVM2", VAL(SIGJVM2,SH_SIGIGNORE), S("Special signal used by Java Virtual Machine"),
#endif /*SIGJVM2 */
- "KEYBD", VAL(TRAP(SH_KEYTRAP),0), "",
+ "KEYBD", VAL(TRAP(SH_KEYTRAP),0), "",
#ifdef SIGKILL
- "KILL", VAL(SIGKILL,0), S("Killed"),
+ "KILL", VAL(SIGKILL,0), S("Killed"),
#endif /* SIGKILL */
#ifdef SIGLAB
- "LAB", VAL(SIGLAB,0), S("Security label changed"),
+ "LAB", VAL(SIGLAB,0), S("Security label changed"),
#endif /* SIGLAB */
#ifdef SIGLOST
- "LOST", VAL(SIGLOST,SH_SIGDONE), S("Resources lost"),
+ "LOST", VAL(SIGLOST,SH_SIGDONE), S("Resources lost"),
#endif /* SIGLOST */
#ifdef SIGLWP
- "LWP", VAL(SIGLWP,SH_SIGIGNORE), S("Special signal used by thread library"),
+ "LWP", VAL(SIGLWP,SH_SIGIGNORE), S("Special signal used by thread library"),
#endif /* SIGLWP */
+#ifdef SIGMIGRATE
+ "MIGRATE", VAL(SIGMIGRATE,0), S("Migrate process"),
+#endif /* SIGMIGRATE */
+#ifdef SIGMSG
+ "MSG", VAL(SIGMSG,0), S("Ring buffer input data"),
+#endif /* SIGMSG */
#ifdef SIGPHONE
- "PHONE", VAL(SIGPHONE,0), S("Phone interrupt"),
+ "PHONE", VAL(SIGPHONE,0), S("Phone interrupt"),
#endif /* SIGPHONE */
#ifdef SIGPIPE
#ifdef JOBS
- "PIPE", VAL(SIGPIPE,SH_SIGDONE), S("Broken Pipe"),
+ "PIPE", VAL(SIGPIPE,SH_SIGDONE), S("Broken Pipe"),
#else
- "PIPE", VAL(SIGPIPE,SH_SIGDONE), "",
+ "PIPE", VAL(SIGPIPE,SH_SIGDONE), "",
#endif /* JOBS */
#endif /* SIGPIPE */
#ifdef SIGPOLL
- "POLL", VAL(SIGPOLL,SH_SIGDONE), S("Polling alarm"),
+ "POLL", VAL(SIGPOLL,SH_SIGDONE), S("Polling alarm"),
#endif /* SIGPOLL */
#ifdef SIGPROF
- "PROF", VAL(SIGPROF,SH_SIGDONE), S("Profiling time alarm"),
+ "PROF", VAL(SIGPROF,SH_SIGDONE), S("Profiling time alarm"),
#endif /* SIGPROF */
+#ifdef SIGPRE
+ "PRE", VAL(SIGPRE,SH_SIGDONE), S("Programming exception"),
+#endif /* SIGPRE */
#ifdef SIGPWR
# if SIGPWR>0
- "PWR", VAL(SIGPWR,SH_SIGIGNORE), S("Power fail"),
+ "PWR", VAL(SIGPWR,SH_SIGIGNORE), S("Power fail"),
# endif
#endif /* SIGPWR */
#ifdef SIGQUIT
"QUIT", VAL(SIGQUIT,SH_SIGDONE|SH_SIGINTERACTIVE), S("Quit"),
#endif /* SIGQUIT */
+#ifdef SIGRETRACT
+ "RETRACT", VAL(SIGRETRACT,0), S("Relinquish monitor mode"),
+#endif /* SIGRETRACT */
#ifdef SIGRTMIN
- "RTMIN", VAL(SH_SIGRTMIN,SH_SIGRUNTIME), S("Lowest priority realtime signal"),
+ "RTMIN", VAL(SH_SIGRTMIN,SH_SIGRUNTIME), S("Lowest priority realtime signal"),
#endif /* SIGRTMIN */
#ifdef SIGRTMAX
- "RTMAX", VAL(SH_SIGRTMAX,SH_SIGRUNTIME), S("Highest priority realtime signal"),
+ "RTMAX", VAL(SH_SIGRTMAX,SH_SIGRUNTIME), S("Highest priority realtime signal"),
#endif /* SIGRTMAX */
- "SEGV", VAL(SIGSEGV,0), S("Memory fault"),
+#ifdef SIGSAK
+ "SAK", VAL(SIGSAK,0), S("Secure attention key"),
+#endif /* SIGSAK */
+ "SEGV", VAL(SIGSEGV,0), S("Memory fault"),
+#ifdef SIGSOUND
+ "SOUND", VAL(SIGSOUND,0), S("Sound completed"),
+#endif /* SIGSOUND */
#ifdef SIGSTOP
- "STOP", VAL(SIGSTOP,0), S("Stopped (SIGSTOP)"),
+ "STOP", VAL(SIGSTOP,0), S("Stopped (SIGSTOP)"),
#endif /* SIGSTOP */
#ifdef SIGSYS
- "SYS", VAL(SIGSYS,SH_SIGDONE), S("Bad system call"),
+ "SYS", VAL(SIGSYS,SH_SIGDONE), S("Bad system call"),
#endif /* SIGSYS */
"TERM", VAL(SIGTERM,SH_SIGDONE|SH_SIGINTERACTIVE), S("Terminated"),
+#ifdef SIGTHAW
+ "THAW", VAL(SIGTHAW,SH_SIGIGNORE), S("Special signal used by CPR"),
+#endif /* SIGTHAW */
#ifdef SIGTINT
# ifdef JOBS
- "TINT", VAL(SIGTINT,0), S("Interrupt"),
+ "TINT", VAL(SIGTINT,0), S("Interrupt"),
# else
- "TINT", VAL(SIGTINT,0), "".
+ "TINT", VAL(SIGTINT,0), "",
# endif /* JOBS */
#endif /* SIGTINT */
#ifdef SIGTRAP
- "TRAP", VAL(SIGTRAP,SH_SIGDONE), S("Trace/BPT trap"),
+ "TRAP", VAL(SIGTRAP,SH_SIGDONE), S("Trace/BPT trap"),
#endif /* SIGTRAP */
#ifdef SIGTSTP
- "TSTP", VAL(SIGTSTP,0), S("Stopped"),
+ "TSTP", VAL(SIGTSTP,0), S("Stopped"),
#endif /* SIGTSTP */
#ifdef SIGTTIN
- "TTIN", VAL(SIGTTIN,0), S("Stopped (SIGTTIN)"),
+ "TTIN", VAL(SIGTTIN,0), S("Stopped (SIGTTIN)"),
#endif /* SIGTTIN */
#ifdef SIGTTOU
- "TTOU", VAL(SIGTTOU,0), S("Stopped(SIGTTOU)"),
+ "TTOU", VAL(SIGTTOU,0), S("Stopped(SIGTTOU)"),
#endif /* SIGTTOU */
#ifdef SIGURG
- "URG", VAL(SIGURG,SH_SIGIGNORE), S("Socket interrupt"),
+ "URG", VAL(SIGURG,SH_SIGIGNORE), S("Socket interrupt"),
#endif /* SIGURG */
#ifdef SIGUSR1
- "USR1", VAL(SIGUSR1,SH_SIGDONE), S("User signal 1"),
+ "USR1", VAL(SIGUSR1,SH_SIGDONE), S("User signal 1"),
#endif /* SIGUSR1 */
#ifdef SIGUSR2
- "USR2", VAL(SIGUSR2,SH_SIGDONE), S("User signal 2"),
+ "USR2", VAL(SIGUSR2,SH_SIGDONE), S("User signal 2"),
#endif /* SIGUSR2 */
+#ifdef SIGVIRT
+ "VIRT", VAL(SIGVIRT,0), S("Virtual timer alarm"),
+#endif /* SIGVIRT */
#ifdef SIGVTALRM
- "VTALRM", VAL(SIGVTALRM,SH_SIGDONE), S("Virtual time alarm"),
+ "VTALRM", VAL(SIGVTALRM,SH_SIGDONE), S("Virtual time alarm"),
#endif /* SIGVTALRM */
-#ifdef SIGWINCH
- "WINCH", VAL(SIGWINCH,SH_SIGIGNORE), S("Window size change"),
-#endif /* SIGWINCH */
-#ifdef SIGMIGRATE
- "MIGRATE", VAL(SIGMIGRATE,0), S("Migrate process"),
-#endif /* SIGMIGRATE */
-#ifdef SIGSOUND
- "SOUND", VAL(SIGSOUND,0), S("Sound completed"),
-#endif /* SIGSOUND */
-#ifdef SIGTHAW
- "THAW", VAL(SIGTHAW,SH_SIGIGNORE), S("Special signal used by CPR"),
-#endif /* SIGTHAW */
#ifdef SIGWAITING
- "WAITING", VAL(SIGWAITING,SH_SIGIGNORE), S("All threads blocked"),
+ "WAITING", VAL(SIGWAITING,SH_SIGIGNORE), S("All threads blocked"),
#endif /* SIGWAITING */
+#ifdef SIGWINCH
+ "WINCH", VAL(SIGWINCH,SH_SIGIGNORE), S("Window size change"),
+#endif /* SIGWINCH */
#ifdef SIGXCPU
"XCPU", VAL(SIGXCPU,SH_SIGDONE|SH_SIGINTERACTIVE), S("Exceeded CPU time limit"),
#endif /* SIGXCPU */
diff --git a/usr/src/lib/libshell/common/data/solaris_cmdlist.h b/usr/src/lib/libshell/common/data/solaris_cmdlist.h
index 29c75aaa7d..4cb7672636 100644
--- a/usr/src/lib/libshell/common/data/solaris_cmdlist.h
+++ b/usr/src/lib/libshell/common/data/solaris_cmdlist.h
@@ -20,7 +20,7 @@
*/
/*
- * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -70,6 +70,7 @@ extern "C" {
/* undo ast_map.h #defines to avoid collision */
#undef basename
#undef dirname
+#undef mktemp
/* Generated data, do not edit. */
XPG4CMDLIST(basename)
@@ -82,36 +83,52 @@ ASTCMDLIST(chmod)
XPG4CMDLIST(chown)
BINCMDLIST(chown)
ASTCMDLIST(chown)
+BINCMDLIST(cksum)
+ASTCMDLIST(cksum)
+BINCMDLIST(cmp)
ASTCMDLIST(cmp)
+BINCMDLIST(comm)
ASTCMDLIST(comm)
XPG4CMDLIST(cp)
ASTCMDLIST(cp)
+BINCMDLIST(cut)
ASTCMDLIST(cut)
XPG4CMDLIST(date)
ASTCMDLIST(date)
ASTCMDLIST(dirname)
+ASTCMDLIST(egrep)
XPG4CMDLIST(expr)
ASTCMDLIST(expr)
ASTCMDLIST(fds)
+ASTCMDLIST(fgrep)
ASTCMDLIST(fmt)
+BINCMDLIST(fold)
ASTCMDLIST(fold)
+ASTCMDLIST(grep)
BINCMDLIST(head)
ASTCMDLIST(head)
XPG4CMDLIST(id)
ASTCMDLIST(id)
+BINCMDLIST(join)
ASTCMDLIST(join)
XPG4CMDLIST(ln)
ASTCMDLIST(ln)
BINCMDLIST(logname)
ASTCMDLIST(logname)
+ASTCMDLIST(md5sum)
BINCMDLIST(mkdir)
ASTCMDLIST(mkdir)
BINCMDLIST(mkfifo)
ASTCMDLIST(mkfifo)
+BINCMDLIST(mktemp)
+ASTCMDLIST(mktemp)
XPG4CMDLIST(mv)
ASTCMDLIST(mv)
+BINCMDLIST(paste)
ASTCMDLIST(paste)
+BINCMDLIST(pathchk)
ASTCMDLIST(pathchk)
+ASTCMDLIST(readlink)
BINCMDLIST(rev)
ASTCMDLIST(rev)
XPG4CMDLIST(rm)
@@ -127,6 +144,7 @@ SBINCMDLIST(sync)
BINCMDLIST(sync)
ASTCMDLIST(sync)
XPG4CMDLIST(tail)
+BINCMDLIST(tail)
ASTCMDLIST(tail)
BINCMDLIST(tee)
ASTCMDLIST(tee)
@@ -137,6 +155,7 @@ BINCMDLIST(uniq)
ASTCMDLIST(uniq)
BINCMDLIST(wc)
ASTCMDLIST(wc)
+ASTCMDLIST(xgrep)
/* Mandatory for ksh93 test suite and AST scripts */
BINCMDLIST(getconf)
diff --git a/usr/src/lib/libshell/common/data/strdata.c b/usr/src/lib/libshell/common/data/strdata.c
index f980c834f3..4642c2826b 100644
--- a/usr/src/lib/libshell/common/data/strdata.c
+++ b/usr/src/lib/libshell/common/data/strdata.c
@@ -1,7 +1,7 @@
/***********************************************************************
* *
* This software is part of the ast package *
-* Copyright (c) 1982-2008 AT&T Intellectual Property *
+* Copyright (c) 1982-2009 AT&T Intellectual Property *
* and is licensed under the *
* Common Public License, Version 1.0 *
* by AT&T Intellectual Property *
diff --git a/usr/src/lib/libshell/common/data/testops.c b/usr/src/lib/libshell/common/data/testops.c
index e00e4857c9..230ec4cbf8 100644
--- a/usr/src/lib/libshell/common/data/testops.c
+++ b/usr/src/lib/libshell/common/data/testops.c
@@ -1,7 +1,7 @@
/***********************************************************************
* *
* This software is part of the ast package *
-* Copyright (c) 1982-2008 AT&T Intellectual Property *
+* Copyright (c) 1982-2009 AT&T Intellectual Property *
* and is licensed under the *
* Common Public License, Version 1.0 *
* by AT&T Intellectual Property *
@@ -104,6 +104,7 @@ USAGE_LICENSE
"open and is associated with a terminal device.]"
"[+-u \afile\a?True if \afile\a exists and has its set-user-id bit "
"set.]"
+ "[+-v \avarname\a?True if \avarname\a is a valid variable name that is set.]"
"[+-w \afile\a?True if \afile\a exists and is writable.]"
"[+-x \afile\a?True if \afile\a exists and is executable. For a "
"directory it means that it can be searched.]"
@@ -115,7 +116,12 @@ USAGE_LICENSE
"it was last read.]"
"[+-O \afile\a?True if \afile\a exists and owner is the effective "
"user id of the current process.]"
+ "[+-R \avarname\a?True if \avarname\a is a name reference.]"
"[+-S \afile\a?True if \afile\a exists and is a socket.]"
+#if SHOPT_FS_3D
+ "[+-V \afile\a?True if \afile\a exists and is a version "
+ "directory.]"
+#endif /* SHOPT_FS_3D */
"}"
"[+?Binary expressions can be one of the following:]{"
"[+\astring1\a = \astring2\a?True if \astring1\a is equal to "
@@ -156,7 +162,7 @@ USAGE_LICENSE
"[+SEE ALSO?\blet\b(1), \bexpr\b(1)]"
;
-const char test_opchars[] = "HLNSVOGCaeohrwxdcbfugk"
+const char test_opchars[] = "HLNRSVOGCaeohrwxdcbfugkv"
#if SHOPT_TEST_L
"l"
#endif
diff --git a/usr/src/lib/libshell/common/data/variables.c b/usr/src/lib/libshell/common/data/variables.c
index 65b1985d29..bb8d7441fe 100644
--- a/usr/src/lib/libshell/common/data/variables.c
+++ b/usr/src/lib/libshell/common/data/variables.c
@@ -1,7 +1,7 @@
/***********************************************************************
* *
* This software is part of the ast package *
-* Copyright (c) 1982-2008 AT&T Intellectual Property *
+* Copyright (c) 1982-2009 AT&T Intellectual Property *
* and is licensed under the *
* Common Public License, Version 1.0 *
* by AT&T Intellectual Property *
@@ -47,7 +47,7 @@ const struct shtable2 shtab_variables[] =
"EDITOR", 0, (char*)0,
"MAILCHECK", NV_NOFREE|NV_INTEGER, (char*)0,
"RANDOM", NV_NOFREE|NV_INTEGER, (char*)0,
- "ENV", NV_NOFREE, "$HOME/.kshrc",
+ "ENV", NV_NOFREE, (char*)0,
"HISTFILE", 0, (char*)0,
"HISTSIZE", 0, (char*)0,
"HISTEDIT", NV_NOFREE, (char*)0,
@@ -77,6 +77,7 @@ const struct shtable2 shtab_variables[] =
"LC_NUMERIC", 0, (char*)0,
"FIGNORE", 0, (char*)0,
"KSH_VERSION", 0, (char*)0,
+ "JOBMAX", NV_NOFREE|NV_INTEGER, (char*)0,
".sh", NV_TABLE|NV_RDONLY|NV_NOFREE|NV_NOPRINT,(char*)0,
".sh.edchar", 0, (char*)0,
".sh.edcol", 0, (char*)0,
@@ -108,7 +109,7 @@ const struct shtable2 shtab_variables[] =
"", 0, (char*)0
};
-const char *nv_discnames[] = { "get", "set", "append", "unset", 0 };
+const char *nv_discnames[] = { "get", "set", "append", "unset", "getn", 0 };
#ifdef SHOPT_STATS
const Shtable_t shtab_stats[] =