From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from euclid.skiles.gatech.edu (list@euclid.skiles.gatech.edu [130.207.146.50]) by coral.primenet.com.au (8.7.5/8.7.3) with ESMTP id LAA00313 for ; Wed, 14 Aug 1996 11:34:52 +1000 (EST) Received: (from list@localhost) by euclid.skiles.gatech.edu (8.7.3/8.7.3) id VAA25950; Tue, 13 Aug 1996 21:21:29 -0400 (EDT) Resent-Date: Tue, 13 Aug 1996 21:21:29 -0400 (EDT) From: Zoltan Hidvegi Message-Id: <199608140118.DAA02513@hzoli.ppp.cs.elte.hu> Subject: POSIX builtins To: zsh-workers@math.gatech.edu (Zsh hacking and development) Date: Wed, 14 Aug 1996 03:17:59 +0200 (MET DST) X-Mailer: ELM [version 2.4ME+ PL17 (25)] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Resent-Message-ID: <"BugK_2.0.NL6.OeI4o"@euclid> Resent-From: zsh-workers@math.gatech.edu X-Mailing-List: archive/latest/1966 X-Loop: zsh-workers@math.gatech.edu Precedence: list Resent-Sender: zsh-workers-request@math.gatech.edu The patch below adds a new POSIX_BUILTINS option. Please test it before I put it into zsh-3.0.0. The patch to the manual should tell everything about this option. This is turned on for both sh and ksh emulation mode (bash, pdksh and ksh93 behave this way). Zoltan *** Doc/zsh.man 1996/07/26 20:53:40 2.9 --- Doc/zsh.man 1996/08/14 00:43:43 *************** *** 101,103 **** --- 101,107 ---- .IR zshzle (%manext%), .IR zshoptions (%manext%), .IR zshmisc (%manext%). + .PP + .sp + .IR "IEEE Standard for information Technology \- Portable Operating System Interface (POSIX) \- Part 2: Shell and Utilities" , + IEEE Inc, 1993, ISBN 1-55937-255-9. *** Doc/zsh.texi 1996/08/13 20:36:44 2.18 --- Doc/zsh.texi 1996/08/14 00:49:34 *************** *** 380,385 **** --- 380,390 ---- zshcompctl(1), zshexpn(1), zshparam(1), zshzle(1), zshoptions(1), zshmisc(1) + @noindent + IEEE Standard for information Technology -- Portable Operating System + Interface (POSIX) -- Part 2: Shell and Utilities, IEEE Inc, 1993, ISBN + 1-55937-255-9. + @node Invocation, Startup/Shutdown Files, Introduction, Top @chapter Invocation *************** *** 2435,2449 **** @code{ksh}: @code{NO_BAD_PATTERN}, @code{NO_BANG_HIST}, @code{NO_EQUALS}, @code{NO_FUNCTION_ARGZERO}, @code{GLOB_SUBST}, @code{NO_HUP}, @code{INTERACTIVE_COMMENTS}, @code{KSH_ARRAYS}, @code{NO_MULTIOS}, ! @code{NO_NOMATCH}, @code{RM_STAR_SILENT}, @code{SH_FILE_EXPANSION}, ! @code{SH_GLOB}, @code{SH_OPTION_LETTERS}, @code{SH_WORD_SPLIT}. ! Additionally the @code{KSH_OPTION_PRINT}, @code{LOCAL_OPTIONS}, ! @code{PROMPT_SUBST} and @code{SINGLE_LINE_ZLE} options are set if ! @code{zsh} is invoked as @code{ksh} and the @code{IGNORE_BRACES} option ! is set if @code{zsh} is invoked as @code{sh}. If the @code{echo} ! command called from @code{/bin/sh} does not interpret backslash escape ! sequences, the @code{BSD_ECHO} option is also set in @code{sh} emulation ! mode. @node Zsh Line Editor, Parameters, Compatibility, Top --- 2440,2454 ---- @code{ksh}: @code{NO_BAD_PATTERN}, @code{NO_BANG_HIST}, @code{NO_EQUALS}, @code{NO_FUNCTION_ARGZERO}, @code{GLOB_SUBST}, @code{NO_HUP}, @code{INTERACTIVE_COMMENTS}, @code{KSH_ARRAYS}, @code{NO_MULTIOS}, ! @code{NO_NOMATCH}, @code{RM_STAR_SILENT}, @code{POSIX_BUILTINS}, ! @code{SH_FILE_EXPANSION}, @code{SH_GLOB}, @code{SH_OPTION_LETTERS}, ! @code{SH_WORD_SPLIT}. Additionally the @code{KSH_OPTION_PRINT}, ! @code{LOCAL_OPTIONS}, @code{PROMPT_SUBST} and @code{SINGLE_LINE_ZLE} ! options are set if @code{zsh} is invoked as @code{ksh} and the ! @code{IGNORE_BRACES} option is set if @code{zsh} is invoked as @code{sh}. ! If the @code{echo} command called from @code{/bin/sh} does not interpret ! backslash escape sequences, the @code{BSD_ECHO} option is also set in ! @code{sh} emulation mode. @node Zsh Line Editor, Parameters, Compatibility, Top *************** *** 5006,5011 **** --- 5011,5027 ---- This applies to the @code{.} builtin as well as to command execution. Commands explicitly beginning with @samp{./} or @samp{../} are not subject to path search. + + @item POSIX_BUILTINS + @pindex POSIX_BUILTINS + When this option is set the @code{command} builtin can be used to execute + shell builtin commands. Parameter assignments specified before shell + functions and special builtins are kept after the command completes unless + the special builtin is prefixed with the @code{command} builtin. Special + builtins are @code{.}, @code{:}, @code{break}, @code{continue}, + @code{declare}, @code{eval}, @code{exit}, @code{export}, @code{integer}, + @code{local}, @code{readonly}, @code{return}, @code{set}, @code{shift}, + @code{source}, @code{times}, @code{trap} and @code{unset}. @item PRINT_EXIT_VALUE (-1) @cindex exit status, printing *** Doc/zshall.man 1996/07/21 00:05:50 2.8 --- Doc/zshall.man 1996/08/14 00:44:51 *************** *** 96,98 **** --- 96,102 ---- .IR rc (1), .IR bash (1), .IR ksh (1). + .PP + .sp + .IR "IEEE Standard for information Technology \- Portable Operating System Interface (POSIX) \- Part 2: Shell and Utilities" , + IEEE Inc, 1993, ISBN 1-55937-255-9. *** Doc/zshmisc.man 1996/08/12 03:53:13 2.20 --- Doc/zshmisc.man 1996/08/14 00:22:13 *************** *** 1095,1100 **** --- 1095,1101 ---- .BR NO_MULTIOS , .BR NO_NOMATCH , .BR RM_STAR_SILENT , + .BR POSIX_BUILTINS , .BR SH_FILE_EXPANSION , .BR SH_GLOB , .BR SH_OPTION_LETTERS , *** Doc/zshoptions.man 1996/07/28 22:34:08 2.20 --- Doc/zshoptions.man 1996/08/14 00:32:41 *************** *** 387,392 **** --- 387,417 ---- Commands explicitly beginning with "./" or "../" are not subject to path search. .TP + \fBPOSIX_BUILTINS\fP + When this option is set the \fBcommand\fP builtin can be used to execute + shell builtin commands. Parameter assignments specified before shell + functions and special builtins are kept after the command completes unless + the special builtin is prefixed with the \fBcommand\fP builtin. Special + builtins are + .BR. , + .BR : , + .BR break , + .BR continue , + .BR declare , + .BR eval , + .BR exit , + .BR export , + .BR integer , + .BR local , + .BR readonly , + .BR return , + .BR set , + .BR shift , + .BR source , + .BR times , + .BR trap " and" + .BR unset . + .TP \fBPRINT_EXIT_VALUE\fP (\-\fB1\fP) Print the exit value of programs with non-zero exit status. .TP *** Src/exec.c 1996/08/11 19:20:39 2.81 --- Src/exec.c 1996/08/14 01:10:07 *************** *** 1171,1177 **** checked = !has_token(cmdarg); if (!checked) break; ! if (!(cflags & BINF_BUILTIN) && (hn = shfunctab->getnode(shfunctab, cmdarg))) { is_shfunc = 1; break; --- 1171,1177 ---- checked = !has_token(cmdarg); if (!checked) break; ! if (!(cflags & (BINF_BUILTIN | BINF_COMMAND)) && (hn = shfunctab->getnode(shfunctab, cmdarg))) { is_shfunc = 1; break; *************** *** 1185,1196 **** assign = (hn->flags & BINF_MAGICEQUALS); break; } ! cflags &= ~BINF_BUILTIN; cflags |= hn->flags; uremnode(args, firstnode(args)); hn = NULL; checked = 0; ! if (cflags & BINF_COMMAND) break; } } --- 1185,1196 ---- assign = (hn->flags & BINF_MAGICEQUALS); break; } ! cflags &= ~BINF_BUILTIN & ~BINF_COMMAND; cflags |= hn->flags; uremnode(args, firstnode(args)); hn = NULL; checked = 0; ! if ((cflags & BINF_COMMAND) && unset(POSIXBUILTINS)) break; } } *************** *** 1257,1267 **** } } ! if (errflag || checked || (cflags & BINF_COMMAND)) break; cmdarg = (char *) peekfirst(args); ! if (!(cflags & BINF_BUILTIN) && (hn = shfunctab->getnode(shfunctab, cmdarg))) { is_shfunc = 1; break; --- 1257,1268 ---- } } ! if (errflag || checked || ! (unset(POSIXBUILTINS) && (cflags & BINF_COMMAND))) break; cmdarg = (char *) peekfirst(args); ! if (!(cflags & (BINF_BUILTIN | BINF_COMMAND)) && (hn = shfunctab->getnode(shfunctab, cmdarg))) { is_shfunc = 1; break; *************** *** 1278,1284 **** is_builtin = 1; break; } ! cflags &= ~BINF_BUILTIN; cflags |= hn->flags; uremnode(args, firstnode(args)); hn = NULL; --- 1279,1285 ---- is_builtin = 1; break; } ! cflags &= ~BINF_BUILTIN & ~BINF_COMMAND; cflags |= hn->flags; uremnode(args, firstnode(args)); hn = NULL; *************** *** 1601,1609 **** LinkList restorelist = 0, removelist = 0; /* builtin or shell function */ ! if (!forked && !assign) save_params(cmd, &restorelist, &removelist); ! if (cmd->vars) { /* Export this if the command is a shell function, * but not if it's a builtin. --- 1602,1613 ---- LinkList restorelist = 0, removelist = 0; /* builtin or shell function */ ! if (!forked && ((cflags & BINF_COMMAND) || ! (unset(POSIXBUILTINS) && !assign) || ! (isset(POSIXBUILTINS) && !is_shfunc && ! !(hn->flags & BINF_PSPECIAL)))) save_params(cmd, &restorelist, &removelist); ! if (cmd->vars) { /* Export this if the command is a shell function, * but not if it's a builtin. *** Src/globals.h 1996/08/12 03:52:50 2.38 --- Src/globals.h 1996/08/13 23:35:14 *************** *** 750,755 **** --- 750,756 ---- {"numericglobsort", 0, 0, 0}, {"overstrike", 0, 0, 0}, {"pathdirs", 'Q', 0, 0}, + {"posixbuiltins", 0, 0, OPT_EMULATE|OPT_BOURNE}, {"printexitvalue", '1', 0, 0}, {"privileged", 'p', 'p', OPT_SPECIAL}, {"promptcr", x'V', 0, OPT_ALL}, *** Src/hashtable.h 1996/08/04 12:52:33 2.25 --- Src/hashtable.h 1996/08/13 23:30:51 *************** *** 249,267 **** PREFIX("exec", BINF_EXEC) PREFIX("noglob", BINF_NOGLOB) {NULL, "[", 0, bin_test, 0, -1, BIN_BRACKET, NULL, NULL}, ! {NULL, ".", 0, bin_dot, 1, -1, 0, NULL, NULL}, ! {NULL, ":", 0, bin_true, 0, -1, 0, NULL, NULL}, {NULL, "alias", BINF_MAGICEQUALS, bin_alias, 0, -1, 0, "Lgmr", NULL}, {NULL, "autoload", BINF_TYPEOPTS, bin_functions, 0, -1, 0, "t", "u"}, {NULL, "bg", 0, bin_fg, 0, -1, BIN_BG, NULL, NULL}, {NULL, "bindkey", 0, bin_bindkey, 0, -1, 0, "asvemdr", NULL}, ! {NULL, "break", 0, bin_break, 0, 1, BIN_BREAK, NULL, NULL}, {NULL, "bye", 0, bin_break, 0, 1, BIN_EXIT, NULL, NULL}, {NULL, "cd", 0, bin_cd, 0, 2, BIN_CD, NULL, NULL}, {NULL, "chdir", 0, bin_cd, 0, 2, BIN_CD, NULL, NULL}, {NULL, "compctl", 0, bin_compctl, 0, -1, 0, NULL, NULL}, ! {NULL, "continue", 0, bin_break, 0, 1, BIN_CONTINUE, NULL, NULL}, ! {NULL, "declare", BINF_TYPEOPTS | BINF_MAGICEQUALS, bin_typeset, 0, -1, 0, "LRUZfilrtux", NULL}, {NULL, "dirs", 0, bin_dirs, 0, -1, 0, "v", NULL}, {NULL, "disable", 0, bin_enable, 0, -1, BIN_DISABLE, "afmr", NULL}, {NULL, "disown", 0, bin_fg, 0, -1, BIN_DISOWN, NULL, NULL}, --- 249,267 ---- PREFIX("exec", BINF_EXEC) PREFIX("noglob", BINF_NOGLOB) {NULL, "[", 0, bin_test, 0, -1, BIN_BRACKET, NULL, NULL}, ! {NULL, ".", BINF_PSPECIAL, bin_dot, 1, -1, 0, NULL, NULL}, ! {NULL, ":", BINF_PSPECIAL, bin_true, 0, -1, 0, NULL, NULL}, {NULL, "alias", BINF_MAGICEQUALS, bin_alias, 0, -1, 0, "Lgmr", NULL}, {NULL, "autoload", BINF_TYPEOPTS, bin_functions, 0, -1, 0, "t", "u"}, {NULL, "bg", 0, bin_fg, 0, -1, BIN_BG, NULL, NULL}, {NULL, "bindkey", 0, bin_bindkey, 0, -1, 0, "asvemdr", NULL}, ! {NULL, "break", BINF_PSPECIAL, bin_break, 0, 1, BIN_BREAK, NULL, NULL}, {NULL, "bye", 0, bin_break, 0, 1, BIN_EXIT, NULL, NULL}, {NULL, "cd", 0, bin_cd, 0, 2, BIN_CD, NULL, NULL}, {NULL, "chdir", 0, bin_cd, 0, 2, BIN_CD, NULL, NULL}, {NULL, "compctl", 0, bin_compctl, 0, -1, 0, NULL, NULL}, ! {NULL, "continue", BINF_PSPECIAL, bin_break, 0, 1, BIN_CONTINUE, NULL, NULL}, ! {NULL, "declare", BINF_TYPEOPTS | BINF_MAGICEQUALS | BINF_PSPECIAL, bin_typeset, 0, -1, 0, "LRUZfilrtux", NULL}, {NULL, "dirs", 0, bin_dirs, 0, -1, 0, "v", NULL}, {NULL, "disable", 0, bin_enable, 0, -1, BIN_DISABLE, "afmr", NULL}, {NULL, "disown", 0, bin_fg, 0, -1, BIN_DISOWN, NULL, NULL}, *************** *** 269,277 **** {NULL, "echotc", 0, bin_echotc, 1, -1, 0, NULL, NULL}, {NULL, "emulate", 0, bin_emulate, 1, 1, 0, "R", NULL}, {NULL, "enable", 0, bin_enable, 0, -1, BIN_ENABLE, "afmr", NULL}, ! {NULL, "eval", 0, bin_eval, 0, -1, BIN_EVAL, NULL, NULL}, ! {NULL, "exit", 0, bin_break, 0, 1, BIN_EXIT, NULL, NULL}, ! {NULL, "export", BINF_TYPEOPTS | BINF_MAGICEQUALS, bin_typeset, 0, -1, BIN_EXPORT, "LRUZfilrtu", "x"}, {NULL, "false", 0, bin_false, 0, -1, 0, NULL, NULL}, {NULL, "fc", BINF_FCOPTS, bin_fc, 0, -1, BIN_FC, "nlreIRWAdDfEim", NULL}, {NULL, "fg", 0, bin_fg, 0, -1, BIN_FG, NULL, NULL}, --- 269,277 ---- {NULL, "echotc", 0, bin_echotc, 1, -1, 0, NULL, NULL}, {NULL, "emulate", 0, bin_emulate, 1, 1, 0, "R", NULL}, {NULL, "enable", 0, bin_enable, 0, -1, BIN_ENABLE, "afmr", NULL}, ! {NULL, "eval", BINF_PSPECIAL, bin_eval, 0, -1, BIN_EVAL, NULL, NULL}, ! {NULL, "exit", BINF_PSPECIAL, bin_break, 0, 1, BIN_EXIT, NULL, NULL}, ! {NULL, "export", BINF_TYPEOPTS | BINF_MAGICEQUALS | BINF_PSPECIAL, bin_typeset, 0, -1, BIN_EXPORT, "LRUZfilrtu", "x"}, {NULL, "false", 0, bin_false, 0, -1, 0, NULL, NULL}, {NULL, "fc", BINF_FCOPTS, bin_fc, 0, -1, BIN_FC, "nlreIRWAdDfEim", NULL}, {NULL, "fg", 0, bin_fg, 0, -1, BIN_FG, NULL, NULL}, *************** *** 285,296 **** #endif {NULL, "history", 0, bin_fc, 0, -1, BIN_FC, "nrdDfEim", "l"}, ! {NULL, "integer", BINF_TYPEOPTS | BINF_MAGICEQUALS, bin_typeset, 0, -1, 0, "lrtux", "i"}, {NULL, "jobs", 0, bin_fg, 0, -1, BIN_JOBS, "lpZrs", NULL}, {NULL, "kill", 0, bin_kill, 0, -1, 0, NULL, NULL}, {NULL, "let", 0, bin_let, 1, -1, 0, NULL, NULL}, {NULL, "limit", 0, bin_limit, 0, -1, 0, "sh", NULL}, ! {NULL, "local", BINF_TYPEOPTS | BINF_MAGICEQUALS, bin_typeset, 0, -1, 0, "LRUZilrtu", NULL}, {NULL, "log", 0, bin_log, 0, 0, 0, NULL, NULL}, {NULL, "logout", 0, bin_break, 0, 1, BIN_LOGOUT, NULL, NULL}, --- 285,296 ---- #endif {NULL, "history", 0, bin_fc, 0, -1, BIN_FC, "nrdDfEim", "l"}, ! {NULL, "integer", BINF_TYPEOPTS | BINF_MAGICEQUALS | BINF_PSPECIAL, bin_typeset, 0, -1, 0, "lrtux", "i"}, {NULL, "jobs", 0, bin_fg, 0, -1, BIN_JOBS, "lpZrs", NULL}, {NULL, "kill", 0, bin_kill, 0, -1, 0, NULL, NULL}, {NULL, "let", 0, bin_let, 1, -1, 0, NULL, NULL}, {NULL, "limit", 0, bin_limit, 0, -1, 0, "sh", NULL}, ! {NULL, "local", BINF_TYPEOPTS | BINF_MAGICEQUALS | BINF_PSPECIAL, bin_typeset, 0, -1, 0, "LRUZilrtu", NULL}, {NULL, "log", 0, bin_log, 0, 0, 0, NULL, NULL}, {NULL, "logout", 0, bin_break, 0, 1, BIN_LOGOUT, NULL, NULL}, *************** *** 305,333 **** {NULL, "pwd", 0, bin_pwd, 0, 0, 0, "r", NULL}, {NULL, "r", BINF_R, bin_fc, 0, -1, BIN_FC, "nrl", NULL}, {NULL, "read", 0, bin_read, 0, -1, 0, "rzu0123456789pkqecnAlE", NULL}, ! {NULL, "readonly", BINF_TYPEOPTS | BINF_MAGICEQUALS, bin_typeset, 0, -1, 0, "LRUZfiltux", "r"}, {NULL, "rehash", 0, bin_hash, 0, 0, 0, "df", "r"}, ! {NULL, "return", 0, bin_break, 0, 1, BIN_RETURN, NULL, NULL}, {NULL, "sched", 0, bin_sched, 0, -1, 0, NULL, NULL}, ! {NULL, "set", 0, bin_set, 0, -1, 0, NULL, NULL}, {NULL, "setopt", 0, bin_setopt, 0, -1, BIN_SETOPT, NULL, NULL}, ! {NULL, "shift", 0, bin_shift, 0, -1, 0, NULL, NULL}, ! {NULL, "source", 0, bin_dot, 1, -1, 0, NULL, NULL}, {NULL, "suspend", 0, bin_suspend, 0, 0, 0, "f", NULL}, {NULL, "test", 0, bin_test, 0, -1, BIN_TEST, NULL, NULL}, {NULL, "ttyctl", 0, bin_ttyctl, 0, 0, 0, "fu", NULL}, ! {NULL, "times", 0, bin_times, 0, 0, 0, NULL, NULL}, ! {NULL, "trap", 0, bin_trap, 0, -1, 0, NULL, NULL}, {NULL, "true", 0, bin_true, 0, -1, 0, NULL, NULL}, {NULL, "type", 0, bin_whence, 0, -1, 0, "ampf", "v"}, ! {NULL, "typeset", BINF_TYPEOPTS | BINF_MAGICEQUALS, bin_typeset, 0, -1, 0, "LRUZfilrtuxm", NULL}, {NULL, "ulimit", 0, bin_ulimit, 0, -1, 0, NULL, NULL}, {NULL, "umask", 0, bin_umask, 0, 1, 0, "S", NULL}, {NULL, "unalias", 0, bin_unhash, 1, -1, 0, "m", "a"}, {NULL, "unfunction", 0, bin_unhash, 1, -1, 0, "m", "f"}, {NULL, "unhash", 0, bin_unhash, 1, -1, 0, "adfm", NULL}, {NULL, "unlimit", 0, bin_unlimit, 0, -1, 0, "hs", NULL}, ! {NULL, "unset", 0, bin_unset, 1, -1, 0, "m", NULL}, {NULL, "unsetopt", 0, bin_setopt, 0, -1, BIN_UNSETOPT, NULL, NULL}, {NULL, "vared", 0, bin_vared, 1, 7, 0, NULL, NULL}, {NULL, "wait", 0, bin_fg, 0, -1, BIN_WAIT, NULL, NULL}, --- 305,333 ---- {NULL, "pwd", 0, bin_pwd, 0, 0, 0, "r", NULL}, {NULL, "r", BINF_R, bin_fc, 0, -1, BIN_FC, "nrl", NULL}, {NULL, "read", 0, bin_read, 0, -1, 0, "rzu0123456789pkqecnAlE", NULL}, ! {NULL, "readonly", BINF_TYPEOPTS | BINF_MAGICEQUALS | BINF_PSPECIAL, bin_typeset, 0, -1, 0, "LRUZfiltux", "r"}, {NULL, "rehash", 0, bin_hash, 0, 0, 0, "df", "r"}, ! {NULL, "return", BINF_PSPECIAL, bin_break, 0, 1, BIN_RETURN, NULL, NULL}, {NULL, "sched", 0, bin_sched, 0, -1, 0, NULL, NULL}, ! {NULL, "set", BINF_PSPECIAL, bin_set, 0, -1, 0, NULL, NULL}, {NULL, "setopt", 0, bin_setopt, 0, -1, BIN_SETOPT, NULL, NULL}, ! {NULL, "shift", BINF_PSPECIAL, bin_shift, 0, -1, 0, NULL, NULL}, ! {NULL, "source", BINF_PSPECIAL, bin_dot, 1, -1, 0, NULL, NULL}, {NULL, "suspend", 0, bin_suspend, 0, 0, 0, "f", NULL}, {NULL, "test", 0, bin_test, 0, -1, BIN_TEST, NULL, NULL}, {NULL, "ttyctl", 0, bin_ttyctl, 0, 0, 0, "fu", NULL}, ! {NULL, "times", BINF_PSPECIAL, bin_times, 0, 0, 0, NULL, NULL}, ! {NULL, "trap", BINF_PSPECIAL, bin_trap, 0, -1, 0, NULL, NULL}, {NULL, "true", 0, bin_true, 0, -1, 0, NULL, NULL}, {NULL, "type", 0, bin_whence, 0, -1, 0, "ampf", "v"}, ! {NULL, "typeset", BINF_TYPEOPTS | BINF_MAGICEQUALS | BINF_PSPECIAL, bin_typeset, 0, -1, 0, "LRUZfilrtuxm", NULL}, {NULL, "ulimit", 0, bin_ulimit, 0, -1, 0, NULL, NULL}, {NULL, "umask", 0, bin_umask, 0, 1, 0, "S", NULL}, {NULL, "unalias", 0, bin_unhash, 1, -1, 0, "m", "a"}, {NULL, "unfunction", 0, bin_unhash, 1, -1, 0, "m", "f"}, {NULL, "unhash", 0, bin_unhash, 1, -1, 0, "adfm", NULL}, {NULL, "unlimit", 0, bin_unlimit, 0, -1, 0, "hs", NULL}, ! {NULL, "unset", BINF_PSPECIAL, bin_unset, 1, -1, 0, "m", NULL}, {NULL, "unsetopt", 0, bin_setopt, 0, -1, BIN_UNSETOPT, NULL, NULL}, {NULL, "vared", 0, bin_vared, 1, 7, 0, NULL, NULL}, {NULL, "wait", 0, bin_fg, 0, -1, BIN_WAIT, NULL, NULL}, *** Src/zsh.h 1996/08/03 02:53:55 2.42 --- Src/zsh.h 1996/08/13 23:32:31 *************** *** 759,764 **** --- 759,765 ---- #define BINF_COMMAND (1<<12) #define BINF_EXEC (1<<13) #define BINF_NOGLOB (1<<14) + #define BINF_PSPECIAL (1<<15) #define BINF_TYPEOPTS (BINF_TYPEOPT|BINF_PLUSOPTS) *************** *** 1128,1133 **** --- 1129,1135 ---- NUMERICGLOBSORT, OVERSTRIKE, PATHDIRS, + POSIXBUILTINS, PRINTEXITVALUE, PRIVILEGED, PROMPTCR,