zsh-workers
 help / color / mirror / code / Atom feed
Search results ordered by [date|relevance]  view[summary|nested|Atom feed]
thread overview below | download mbox.gz: |
* PATCH: Documentation indexing, prompt expansion doc
@ 2001-07-10  8:39  2% Bart Schaefer
  0 siblings, 0 replies; 200+ results
From: Bart Schaefer @ 2001-07-10  8:39 UTC (permalink / raw)
  To: zsh-workers

I've long been somewhat annoyed at finding seemingly obvious things missing
from the indices in the zsh manual -- an index entry for prompt expansion
that actually refers to the section on prompt expansion being the one that
set me off on this project -- so this patch is the beginning of an attempt
to improve the situation.  It covers only the first 11% of zsh.texi (which
is just enough to get past prompt expansion), so I'll probably be posting
more chunks eventually, unless someone beats me to it.

The addition of the %y prompt escape also convinced me that the ordering of
entries in the prompt expansion section was getting out of hand.  To keep
related items grouped together while still making some sense alphabetically,
I've split the list into six subsections; this is the largest part of the
patch below.  I also reordered the list of all X for %(X.T.F) conditions.

--------------------------------------------------------------------------

diff -ru ../zsh-forge/current/Doc/Zsh/arith.yo ./Doc/Zsh/arith.yo
--- ../zsh-forge/current/Doc/Zsh/arith.yo	Thu Oct  5 01:41:36 2000
+++ ./Doc/Zsh/arith.yo	Sat Jul  7 12:45:41 2001
@@ -32,6 +32,7 @@
 both assigning the value 3 to the shell variable tt(foo) and returning a
 zero status.
 
+cindex(arithmetic base)
 cindex(bases, in arithmetic)
 Integers can be in bases other than 10.
 A leading `tt(0x)' or `tt(0X)' denotes hexadecimal.
@@ -65,6 +66,15 @@
 implicitly typed by the arithmetic evaluation, where it acquires the output
 base 8.
 
+pindex(C_BASES, use of)
+pindex(OCTAL_ZEROES, use of)
+If the tt(C_BASES) option is set, hexadecimal numbers in the standard C
+format, for example tt(0xFF) instead of the usual `tt(16#FF)'.  If the
+option tt(OCTAL_ZEROES) is also set (it is not by default), octal numbers
+will be treated similarly and hence appear as `tt(077)' instead of
+`tt(8#77)'.  This option has no effect on the output of bases other than
+hexadecimal and octal, and these formats are always understood on input.
+
 When an output base is specified using the `tt([#)var(base)tt(])' syntax,
 an appropriate base prefix will be output if necessary, so that the value
 output is valid syntax for input.  If the tt(#) is doubled, for example
@@ -105,8 +115,8 @@
 operator is evaluated.  Note the precedence of the bitwise AND, OR,
 and XOR operators.
 
-cindex(math functions)
-cindex(functions, math)
+cindex(mathematical functions, use of)
+cindex(functions, math, use of)
 Mathematical functions can be called with the syntax
 `var(func)tt(LPAR())var(args)tt(RPAR())', where the function decides
 if the var(args) is used as a string or a comma-separated list of
diff -ru ../zsh-forge/current/Doc/Zsh/builtins.yo ./Doc/Zsh/builtins.yo
--- ../zsh-forge/current/Doc/Zsh/builtins.yo	Wed Jun 27 08:17:38 2001
+++ ./Doc/Zsh/builtins.yo	Sat Jun 30 22:28:13 2001
@@ -130,7 +130,8 @@
 )
 findex(builtin)
 item(tt(builtin) var(name) [ var(args) ... ])(
-Executes the builtin var(name), with the given var(args).
+Executes the builtin var(name), with the given var(args), even if that
+builtin has been disabled (see tt(disable)).
 )
 alias(bye)(exit)
 module(cap)(zsh/cap)
diff -ru ../zsh-forge/current/Doc/Zsh/compat.yo ./Doc/Zsh/compat.yo
--- ../zsh-forge/current/Doc/Zsh/compat.yo	Mon May 22 08:01:35 2000
+++ ./Doc/Zsh/compat.yo	Sat Jun 30 22:10:12 2001
@@ -1,8 +1,8 @@
 texinode(Compatibility)(Restricted Shell)()(Invocation)
 sect(Compatibility)
 cindex(compatibility)
-cindex(sh, compatibility)
-cindex(ksh, compatibility)
+cindex(sh compatibility)
+cindex(ksh compatibility)
 Zsh tries to emulate bf(sh) or bf(ksh) when it is invoked as
 tt(sh) or tt(ksh) respectively; more precisely, it looks at the first
 letter of the name by which it was invoked, excluding any initial `tt(r)'
@@ -33,6 +33,7 @@
 tt(status),
 tt(watch).
 
+vindex(ENV, use of)
 The usual zsh startup/shutdown scripts are not executed.  Login shells
 source tt(/etc/profile) followed by tt($HOME/.profile).  If the
 tt(ENV) environment variable is set on invocation, tt($ENV) is sourced
diff -ru ../zsh-forge/current/Doc/Zsh/files.yo ./Doc/Zsh/files.yo
--- ../zsh-forge/current/Doc/Zsh/files.yo	Sat Apr  1 12:43:44 2000
+++ ./Doc/Zsh/files.yo	Sat Jun 30 22:16:52 2001
@@ -5,8 +5,12 @@
 cindex(startup files)
 cindex(files, shutdown)
 cindex(shutdown files)
+pindex(RCS, use of)
+pindex(GLOBAL_RCS, use of)
 pindex(NO_RCS, use of)
 pindex(NO_GLOBAL_RCS, use of)
+vindex(ZDOTDIR, use of)
+@cindex(zshenv)
 Commands are first read from tt(/etc/zshenv); this cannot be overridden.
 Subsequent behaviour is modified by the tt(RCS) and
 tt(GLOBAL_RCS) options; the former affects all startup files, while the
@@ -18,13 +22,17 @@
 
 Commands are then read from tt($ZDOTDIR/.zshenv).
 pindex(LOGIN, use of)
+cindex(zprofile)
 If the shell is a login shell, commands
 are read from tt(/etc/zprofile) and then tt($ZDOTDIR/.zprofile).
+cindex(zshrc)
 Then, if the shell is interactive,
 commands are read from tt(/etc/zshrc) and then tt($ZDOTDIR/.zshrc).
+cindex(zlogin)
 Finally, if the shell is a login shell, tt(/etc/zlogin) and
 tt($ZDOTDIR/.zlogin) are read.
 
+cindex(zlogout)
 When a login shell exits, the files tt($ZDOTDIR/.zlogout) and then
 tt(/etc/zlogout) are read.  This happens with either an explicit exit
 via the tt(exit) or tt(logout) commands, or an implicit exit by reading
@@ -35,6 +43,7 @@
 i.e. if tt(RCS) is unset when the shell exits, no history file will be
 saved.
 
+vindex(HOME, use of)
 If tt(ZDOTDIR) is unset, tt(HOME) is used instead.
 Those files listed above as being in tt(/etc) may be in another
 directory, depending on the installation.
diff -ru ../zsh-forge/current/Doc/Zsh/func.yo ./Doc/Zsh/func.yo
--- ../zsh-forge/current/Doc/Zsh/func.yo	Wed May 30 00:23:56 2001
+++ ./Doc/Zsh/func.yo	Mon Jul  2 18:28:27 2001
@@ -4,7 +4,7 @@
 sect(Functions)
 )\
 cindex(functions)
-findex(function)
+findex(function, use of)
 Shell functions are defined with the tt(function) reserved word or the
 special syntax `var(funcname) tt(())'.
 Shell functions are read in and stored internally.
@@ -28,10 +28,11 @@
 findex(unfunction, use of)
 Functions can be undefined with the tt(unfunction) builtin.
 sect(Autoloading Functions)
-findex(autoload, use of)
 cindex(autoloading functions)
 cindex(functions, autoloading)
 
+findex(autoload, use of)
+vindex(fpath, use of)
 A function can be marked as em(undefined) using the tt(autoload) builtin
 (or `tt(functions -u)' or `tt(typeset -fu)').  Such a function has no
 body.  When the function is first executed, the shell searches for its
@@ -44,6 +45,7 @@
 The usual alias expansion during reading will be suppressed if the
 tt(autoload) builtin or its equivalent is given the option tt(-U). This is
 recommended for the use of functions supplied with the zsh distribution.
+findex(zcompile, use of)
 Note that for functions precompiled with the tt(zcompile) builtin command
 the flag tt(-U) must be provided when the tt(.zwc) file is created, as the
 corresponding information is compiled into the latter.
@@ -135,14 +137,13 @@
 myfunc args...)
 
 In fact, the tt(functions) command outputs `tt(builtin autoload -X)' as
-the body of an autoloaded function.  A true autoloaded function can be
-identified by the presence of the comment `tt(# undefined)' in the body,
-because all comments are discarded from defined functions.  This is done
-so that
+the body of an autoloaded function.  This is done so that
 
 example(eval "$(functions)")
 
-produces a reasonable result.
+produces a reasonable result.  A true autoloaded function can be
+identified by the presence of the comment `tt(# undefined)' in the body,
+because all comments are discarded from defined functions.
 
 To load the definition of an autoloaded function tt(myfunc) without
 executing tt(myfunc), use:
@@ -178,7 +179,7 @@
 actual command that will be executed (including expanded aliases) is
 passed in two different forms: the second argument is a single-line,
 size-limited version of the command (with things like function bodies
-elided); the third argument contains the full text what what is being
+elided); the third argument contains the full text that is being
 executed.
 )
 item(tt(TRAP)var(NAL))(
@@ -211,6 +212,7 @@
 )
 enditem()
 
+findex(trap, use of)
 The functions beginning `tt(TRAP)' may alternatively be defined with the
 tt(trap) builtin:  this may be preferable for some uses, as they are then
 run in the environment of the calling process, rather than in their own
diff -ru ../zsh-forge/current/Doc/Zsh/grammar.yo ./Doc/Zsh/grammar.yo
--- ../zsh-forge/current/Doc/Zsh/grammar.yo	Thu Jul  5 22:36:10 2001
+++ ./Doc/Zsh/grammar.yo	Thu Jul  5 22:36:25 2001
@@ -226,7 +226,7 @@
 in the parameter tt(REPLY).  var(list) is executed
 for each selection until a break or end-of-file is encountered.
 )
-cindex(subshells)
+cindex(subshell)
 item(tt(LPAR()) var(list) tt(RPAR()))(
 Execute var(list) in a subshell.  Traps set by the tt(trap) builtin
 are reset to their default values while executing var(list).
@@ -234,6 +234,7 @@
 item(tt({) var(list) tt(}))(
 Execute var(list).
 )
+findex(function)
 xitem(tt(function) var(word) ... [ tt(()) ] [ var(term) ] tt({) var(list) tt(}))
 xitem(var(word) ... tt(()) [ var(term) ] tt({) var(list) tt(}))
 item(var(word) ... tt(()) [ var(term) ] var(command))(
@@ -250,6 +251,7 @@
 forming a globbing pattern in that case.
 )
 cindex(timing)
+findex(time)
 item(tt(time) [ var(pipeline) ])(
 The var(pipeline) is executed, and timing statistics are
 reported on the standard error in the form specified
@@ -257,7 +259,8 @@
 If var(pipeline) is omitted, print statistics about the
 shell process and its children.
 )
-cindex(testing conditional expression)
+cindex(conditional expression)
+findex([[)
 item(tt([[) var(exp) tt(]]))(
 Evaluates the conditional expression var(exp)
 and return a zero exit status if it is true.
@@ -314,6 +317,7 @@
 item(tt(for LPAR()LPAR()) [var(expr1)] tt(;) [var(expr2)] tt(;) [var(expr3)] tt(RPAR()RPAR()) var(sublist))(
 A short form of the arithmetic tt(for) command.
 )
+findex(foreach)
 item(tt(foreach) var(name) ... tt(LPAR()) var(word) ... tt(RPAR()) var(list) tt(end))(
 Another form of tt(for).
 )
@@ -394,6 +398,7 @@
 entirely quoted.  A literal `tt(')' character can be included in the
 string by using the `tt(\')' escape.
 
+@pindex(RC_QUOTES, use of)
 All characters enclosed between a pair of single quotes (tt('')) that
 is not preceded by a `tt($)' are quoted.  A single quote cannot appear
 within single quotes unless the option tt(RC_QUOTES) is set, in which case
diff -ru ../zsh-forge/current/Doc/Zsh/intro.yo ./Doc/Zsh/intro.yo
--- ../zsh-forge/current/Doc/Zsh/intro.yo	Fri Apr 28 10:13:50 2000
+++ ./Doc/Zsh/intro.yo	Sat Jun 30 21:50:28 2001
@@ -1,5 +1,6 @@
 texinode(Introduction)(Invocation)(The Z Shell Manual)(Top)
 chapter(Introduction)
+cindex(introduction)
 ifzman(\
 sect(Synopsis)
 Because zsh contains many features, the zsh manual has been split into
diff -ru ../zsh-forge/current/Doc/Zsh/invoke.yo ./Doc/Zsh/invoke.yo
--- ../zsh-forge/current/Doc/Zsh/invoke.yo	Sun Jul 30 12:18:13 2000
+++ ./Doc/Zsh/invoke.yo	Sat Jun 30 21:56:29 2001
@@ -2,8 +2,10 @@
 chapter(Invocation)
 cindex(invocation)
 sect(Invocation Options)
-cindex(flags, shell)
+cindex(shell options)
+cindex(options, shell)
 cindex(shell flags)
+cindex(flags, shell)
 The following flags are interpreted by the shell when invoked to determine
 where the shell will read commands from:
 
@@ -47,6 +49,7 @@
 `tt(-xo shwordsplit)' or `tt(-xoshwordsplit)' is equivalent to
 `tt(-x -o shwordsplit)'.
 
+cindex(long option)
 Options may also be specified by name in GNU long option style,
 `tt(--)var(option-name)'.  When this is done, `tt(-)' characters in the
 option name are permitted: they are translated into `tt(_)', and thus ignored.
@@ -58,6 +61,8 @@
 any other options, so for example `tt(-x-shwordsplit)' is an error,
 rather than being treated like `tt(-x --shwordsplit)'.
 
+cindex(--version)
+cindex(--help)
 The special GNU-style option `tt(--version)' is handled; it sends to standard
 output the shell's version information, then exits successfully.
 `tt(--help)' is also handled; it sends to standard output a list of options
diff -ru ../zsh-forge/current/Doc/Zsh/jobs.yo ./Doc/Zsh/jobs.yo
--- ../zsh-forge/current/Doc/Zsh/jobs.yo	Fri Oct 13 17:14:15 2000
+++ ./Doc/Zsh/jobs.yo	Sat Jun 30 23:18:30 2001
@@ -2,6 +2,7 @@
 chapter(Jobs & Signals)
 sect(Jobs)
 cindex(jobs)
+pindex(MONITOR, use of)
 If the tt(MONITOR) option is set,
 an interactive shell associates a em(job) with each pipeline.
 It keeps a table of current jobs, printed by the tt(jobs)
Only in ./Doc/Zsh: manmodmenu.yo
diff -ru ../zsh-forge/current/Doc/Zsh/manual.yo ./Doc/Zsh/manual.yo
--- ../zsh-forge/current/Doc/Zsh/manual.yo	Thu Jun 28 21:44:55 2001
+++ ./Doc/Zsh/manual.yo	Sat Jun 30 21:47:54 2001
@@ -7,6 +7,7 @@
 (shell), which of the standard shells most closely resembles the Korn shell
 (ksh), although it is not completely compatible.
 
+cindex(version)
 Version version(), last updated date().
 )\
 
Only in ./Doc/Zsh: modlist.yo
Only in ./Doc/Zsh: modmenu.yo
diff -ru ../zsh-forge/current/Doc/Zsh/params.yo ./Doc/Zsh/params.yo
--- ../zsh-forge/current/Doc/Zsh/params.yo	Fri Jun 15 02:41:47 2001
+++ ./Doc/Zsh/params.yo	Sat Jun 30 22:06:56 2001
@@ -684,6 +684,14 @@
 This is useful with the tt(AUTO_PUSHD) option.
 pindex(AUTO_PUSHD, use of)
 )
+vindex(ENV)
+item(tt(ENV))(
+If the tt(ENV) environment variable is set when zsh is invoked as tt(sh)
+or tt(ksh), tt($ENV) is sourced after the profile scripts.  The value of
+tt(ENV) is subjected to parameter expansion, command substitution, and
+arithmetic expansion before being interpreted as a pathname.  Note that
+tt(ENV) is em(not) used unless zsh is emulating bf(sh) or bf(ksh).
+)
 vindex(FCEDIT)
 item(tt(FCEDIT))(
 The default editor for the tt(fc) builtin.
diff -ru ../zsh-forge/current/Doc/Zsh/prompt.yo ./Doc/Zsh/prompt.yo
--- ../zsh-forge/current/Doc/Zsh/prompt.yo	Fri Jun 22 19:43:14 2001
+++ ./Doc/Zsh/prompt.yo	Tue Jul  3 09:08:33 2001
@@ -3,6 +3,8 @@
 ifzman(\
 sect(Prompt Expansion)
 )\
+cindex(prompt expansion)
+cindex(expansion, prompt)
 Prompt sequences undergo a special form of expansion.  This type of expansion
 is also available using the tt(-P) option to the tt(print) builtin.
 
@@ -33,6 +35,7 @@
 should appear between the `tt(%)' and the next character of the
 sequence.  The following escape sequences are recognized:
 
+subsect(Special characters)
 startitem()
 item(tt(%%))(
 A `tt(%)'.
@@ -40,6 +43,53 @@
 item(tt(%RPAR()))(
 A `tt(RPAR())'.
 )
+enditem()
+
+subsect(Login information)
+startitem()
+item(tt(%l))(
+The line (tty) the user is logged in on, without `tt(/dev/)' prefix.
+If the name starts with `tt(/dev/tty)', that prefix is stripped.
+)
+item(tt(%M))(
+The full machine hostname.
+)
+item(tt(%m))(
+The hostname up to the first `tt(.)'.
+An integer may follow the `tt(%)' to specify
+how many components of the hostname are desired.  With a negative integer,
+trailing components of the hostname are shown.
+)
+item(tt(%n))(
+tt($USERNAME).
+)
+item(tt(%y))(
+The line (tty) the user is logged in on, without `tt(/dev/)' prefix.
+This does not treat `tt(/dev/tty)' names specially.
+)
+enditem()
+
+subsect(Shell state)
+startitem()
+item(tt(%#))(
+A `tt(#)' if the shell is running with privileges, a `tt(%)' if not.
+Equivalent to `tt(%(!.#.%%))'.
+The definition of `privileged', for these purposes, is that either the
+effective user ID is zero, or, if POSIX.1e capabilities are supported, that
+at least one capability is raised in either the Effective or Inheritable
+capability vectors.
+)
+item(tt(%?))(
+The return code of the last command executed just before the prompt.
+)
+item(tt(%_))(
+The status of the parser, i.e. the shell constructs (like `tt(if)' and
+`tt(for)') that have been started on the command line. If given an integer
+number that many strings will be printed; zero or negative or no integer means
+print as many as there are.  This is most useful in prompts tt(PS2) for
+continuation lines and tt(PS4) for debugging with the tt(XTRACE) option; in
+the latter case it will also work non-interactively.
+)
 xitem(tt(%d))
 item(tt(%/))(
 Present working directory (tt($PWD)).  If an integer follows the `tt(%)',
@@ -56,61 +106,54 @@
 item(tt(%!))(
 Current history event number.
 )
+item(tt(%i))(
+The line number currently being executed in the script, sourced file, or
+shell function given by tt(%N).  This is most useful for debugging as part
+of tt($PS4).
+)
 item(tt(%L))(
 The current value of tt($SHLVL).
 )
-item(tt(%M))(
-The full machine hostname.
-)
-item(tt(%m))(
-The hostname up to the first `tt(.)'.
-An integer may follow the `tt(%)' to specify
-how many components of the hostname are desired.  With a negative integer,
-trailing components of the hostname are shown.
+item(tt(%N))(
+The name of the script, sourced file, or shell function that zsh is
+currently executing, whichever was started most recently.  If there is
+none, this is equivalent to the parameter tt($0).  An integer may follow
+the `tt(%)' to specify a number of trailing path components to show; zero
+means the full path.  A negative integer specifies leading components.
 )
-item(tt(%S) LPAR()tt(%s)RPAR())(
-Start (stop) standout mode.
+xitem(tt(%c))
+xitem(tt(%.))
+item(tt(%C))(
+Trailing component of tt($PWD).
+An integer may follow the `tt(%)' to get more than one component.
+Unless `tt(%C)' is used, tilde contraction is performed first.  These are
+deprecated as tt(%c) and tt(%C) are equivalent to tt(%1~) and tt(%1/),
+respectively, while explicit positive integers have the same effect as for
+the latter two sequences.
 )
-item(tt(%U) LPAR()tt(%u)RPAR())(
-Start (stop) underline mode.
+enditem()
+
+subsect(Date and time)
+startitem()
+item(tt(%D))(
+The date in var(yy)tt(-)var(mm)tt(-)var(dd) format.
 )
-item(tt(%B) LPAR()tt(%b)RPAR())(
-Start (stop) boldface mode.
+item(tt(%T))(
+Current time of day, in 24-hour format.
 )
 xitem(tt(%t))
 item(tt(%@))(
 Current time of day, in 12-hour, am/pm format.
 )
-item(tt(%T))(
-Current time of day, in 24-hour format.
-)
 item(tt(%*))(
 Current time of day in 24-hour format, with seconds.
 )
-item(tt(%n))(
-tt($USERNAME).
-)
-item(tt(%N))(
-The name of the script, sourced file, or shell function that zsh is
-currently executing, whichever was started most recently.  If there is
-none, this is equivalent to the parameter tt($0).  An integer may follow
-the `tt(%)' to specify a number of trailing path components to show; zero
-means the full path.  A negative integer specifies leading components.
-)
-item(tt(%i))(
-The line number currently being executed in the script, sourced file, or
-shell function given by tt(%N).  This is most useful for debugging as part
-of tt($PS4).
-)
 item(tt(%w))(
 The date in var(day)tt(-)var(dd) format.
 )
 item(tt(%W))(
 The date in var(mm)tt(/)var(dd)tt(/)var(yy) format.
 )
-item(tt(%D))(
-The date in var(yy)tt(-)var(mm)tt(-)var(dd) format.
-)
 item(tt(%D{)var(string)tt(}))(
 var(string) is formatted using the tt(strftime) function.
 See manref(strftime)(3) for more details.  Three additional codes are
@@ -119,47 +162,37 @@
 tt(%K)/tt(%L) correspond to tt(%k)/tt(%l) for the hour of the day
 (24/12 hour clock) in the same way.
 )
-item(tt(%l))(
-The line (tty) the user is logged in on without tt(/dev/) prefix.
-If name starts with tt(/dev/tty) this is stripped.
-)
-item(tt(%y))(
-The line (tty) the user is logged in on without tt(/dev/) prefix.
-It does not treat tt(/dev/tty*) specially.
+enditem()
+
+subsect(Visual effects)
+startitem()
+item(tt(%B) LPAR()tt(%b)RPAR())(
+Start (stop) boldface mode.
 )
-item(tt(%?))(
-The return code of the last command executed just before the prompt.
+item(tt(%E))(
+Clear to end of line.
 )
-item(tt(%_))(
-The status of the parser, i.e. the shell constructs (like `tt(if)' and
-`tt(for)') that have been started on the command line. If given an integer
-number that many strings will be printed; zero or negative or no integer means
-print as many as there are.  This is most useful in prompts tt(PS2) for
-continuation lines and tt(PS4) for debugging with the tt(XTRACE) option; in
-the latter case it will also work non-interactively.
+item(tt(%U) LPAR()tt(%u)RPAR())(
+Start (stop) underline mode.
 )
-item(tt(%E))(
-Clears to end of line.
+item(tt(%S) LPAR()tt(%s)RPAR())(
+Start (stop) standout mode.
 )
-item(tt(%#))(
-A `tt(#)' if the shell is running with privileges, a `tt(%)' if not.
-Equivalent to `tt(%(!.#.%%))'.
-The definition of `privileged', for these purposes, is that either the
-effective user ID is zero, or, if POSIX.1e capabilities are supported, that
-at least one capability is raised in either the Effective or Inheritable
-capability vectors.
+item(tt(%{)...tt(%}))(
+Include a string as a literal escape sequence.
+The string within the braces should not change the cursor
+position.  Brace pairs can nest.
 )
+enditem()
+
+subsect(Conditional substrings)
+startitem()
 item(tt(%v))(
 vindex(psvar, use of)
 The value of the first element of the tt(psvar) array parameter.  Following
 the `tt(%)' with an integer gives that element of the array.  Negative
 integers count from the end of the array.
 )
-item(tt(%{)...tt(%}))(
-Include a string as a literal escape sequence.
-The string within the braces should not change the cursor
-position.  Brace pairs can nest.
-)
 item(tt(%LPAR())var(x.true-text.false-text)tt(RPAR()))(
 Specifies a ternary expression.  The character following the var(x) is
 arbitrary; the same character is used to separate the text for the
@@ -176,26 +209,27 @@
 The test character var(x) may be any of the following:
 
 startsitem()
+sitem(tt(!))(True if the shell is running with privileges.)
+sitem(tt(#))(True if the effective uid of the current process is var(n).)
+sitem(tt(?))(True if the exit status of the last command was var(n).)
+sitem(tt(_))(True if at least var(n) shell constructs were started.)
+sxitem(tt(C))
+sitem(tt(/))(True if the current absolute path has at least var(n) elements.)
 sxitem(tt(c))
 sxitem(tt(.))
-sitem(tt(~))(True if the current path, with prefix replacement, has at least var(n) elements.)
-sxitem(tt(/))
-sitem(tt(C))(True if the current absolute path has at least var(n) elements.)
-sitem(tt(t))(True if the time in minutes is equal to var(n).)
-sitem(tt(T))(True if the time in hours is equal to var(n).)
-sitem(tt(d))(True if the day of the month is equal to var(n).)
+sitem(tt(~))(True if the current path, with prefix replacement, has at
+least var(n) elements.)
 sitem(tt(D))(True if the month is equal to var(n) (January = 0).)
-sitem(tt(w))(True if the day of the week is equal to var(n) (Sunday = 0).)
-sitem(tt(?))(True if the exit status of the last command was var(n).)
-sitem(tt(#))(True if the effective uid of the current process is var(n).)
+sitem(tt(d))(True if the day of the month is equal to var(n).)
 sitem(tt(g))(True if the effective gid of the current process is var(n).)
+sitem(tt(L))(True if the tt(SHLVL) parameter is at least var(n).)
 sitem(tt(l))(True if at least var(n) characters have already been
 printed on the current line.)
-sitem(tt(L))(True if the tt(SHLVL) parameter is at least var(n).)
 sitem(tt(S))(True if the tt(SECONDS) parameter is at least var(n).)
+sitem(tt(T))(True if the time in hours is equal to var(n).)
+sitem(tt(t))(True if the time in minutes is equal to var(n).)
 sitem(tt(v))(True if the array tt(psvar) has at least var(n) elements.)
-sitem(tt(_))(True if at least var(n) shell constructs were started.)
-sitem(tt(!))(True if the shell is running with privileges.)
+sitem(tt(w))(True if the day of the week is equal to var(n) (Sunday = 0).)
 endsitem()
 )
 xitem(tt(%<)var(string)tt(<))
@@ -236,15 +270,5 @@
 current directory, followed by a `tt(%)' or `tt(#)', followed by a
 space.  Without the `tt(%<<)', those two characters would be included
 in the string to be truncated.
-)
-xitem(tt(%c))
-xitem(tt(%.))
-item(tt(%C))(
-Trailing component of tt($PWD).
-An integer may follow the `tt(%)' to get more than one component.
-Unless `tt(%C)' is used, tilde contraction is performed first.  These are
-deprecated as tt(%c) and tt(%C) are equivalent to tt(%1~) and tt(%1/),
-respectively, while explicit positive integers have the same effect as for
-the latter two sequences.
 )
 enditem()
diff -ru ../zsh-forge/current/Doc/Zsh/redirect.yo ./Doc/Zsh/redirect.yo
--- ../zsh-forge/current/Doc/Zsh/redirect.yo	Sun May 14 15:08:41 2000
+++ ./Doc/Zsh/redirect.yo	Sat Jun 30 22:53:13 2001
@@ -139,6 +139,7 @@
 with the terminal (assuming file descriptor 1 had been)
 and then file descriptor 1 would be associated with file var(fname).
 sect(Multios)
+cindex(multios)
 pindex(MULTIOS, use of)
 If the user tries to open a file descriptor for writing more than once,
 the shell opens the file descriptor as a pipe to a process that copies
@@ -196,22 +197,22 @@
 when tt(MULTIOS) is unset will truncate bar, and write `tt(foo)' into baz.
 
 sect(Redirections with no command)
-vindex(NULLCMD, use of)
-vindex(READNULLCMD, use of)
-pindex(CSH_NULLCMD, use of)
-pindex(SH_NULLCMD, use of)
 When a simple command consists of one or more redirection operators
 and zero or more parameter assignments, but no command name, zsh can
 behave in several ways.
 
+vindex(NULLCMD, use of)
+pindex(CSH_NULLCMD, use of)
 If the parameter tt(NULLCMD) is not set or the option tt(CSH_NULLCMD) is
 set, an error is caused.  This is the bf(csh) behavior and tt(CSH_NULLCMD)
 is set by default when emulating bf(csh).
 
+pindex(SH_NULLCMD, use of)
 If the option tt(SH_NULLCMD) is set, the builtin `tt(:)' is inserted as a
 command with the given redirections.  This is the default when emulating
 bf(sh) or bf(ksh).
 
+vindex(READNULLCMD, use of)
 Otherwise, if the parameter tt(NULLCMD) is set, its value will be used as a
 command with the given redirections.  If both tt(NULLCMD) and
 tt(READNULLCMD) are set, then the value of the latter will be used instead


^ permalink raw reply	[relevance 2%]

* Re: Proposal to standardize the shell
  @ 2001-07-10 11:40  5% ` Oliver Kiddle
  0 siblings, 0 replies; 200+ results
From: Oliver Kiddle @ 2001-07-10 11:40 UTC (permalink / raw)
  To: David Korn; +Cc: Zsh hackers list

David Korn wrote:

> I would like to see if it is possible to come up with an enhanced
> shell standard that could be met by at least ksh, bash, and zsh.
> 
> If the zsh workers are also interested in this effort let me know.

The effort does sound interesting to me. Your suggested starting points
seem sensible and I'd be keen for there to be input from us so that
current zsh features and incompatibilities can be accounted for in the
process.

> Also, if you know who else should be included, please let me know.

Maybe the pdksh developers but I'm not sure how alive that project is.

Peter Stephenson wrote:

> Quite what degree of compatibility is possible between the more advanced
> features I really don't know, but it's worth thinking about.  We've been
> treating ksh93 as a sort of de facto standard for some of the advanced
> features, though there's still quite a lot of that missing and (according
> to my reading of Oliver Kiddle's post to zsh-workers just now) some of it
> appears to be incompatible.

Certainly, there may be problems with some of the more advanced
features but I think there is a fair amount of scope for extensions to
POSIX which wouldn't cause many problems. If I'm not mistaken, there
were quite a few extensions to POSIX that were in ksh88 and these are
fairly well followed by bash and zsh. I think there are also a number of
newer features where we don't have incompatibilities. Process
substitution would be one example.

Can anyone please point me in the direction of the canonical web
location for the POSIX shell definition because my search wasn't very
successful?

> In interactive features, there might be something we do with simple things
> like key binding syntax, for example.  I doubt if it'll go much deeper than

I didn't mention ksh93 key binding in my recent post but it is very
different. In short, there is a KEYBD trap which you override to change
keypresses. I expect the zsh/bash bindkey builtin was inspired by tcsh.

There might be other areas of interactive features which can be
standardised on though. Parts of the history mechanism, fc options
maybe.

Oliver

_____________________________________________________________________
This message has been checked for all known viruses by the 
MessageLabs Virus Scanning Service. For further information visit
http://www.messagelabs.com/stats.asp


^ permalink raw reply	[relevance 5%]

* Re: Re: Proposal to standardize the shell
@ 2001-07-10 15:42  3% David Korn
  0 siblings, 0 replies; 200+ results
From: David Korn @ 2001-07-10 15:42 UTC (permalink / raw)
  To: opk; +Cc: zsh-workers


> Can anyone please point me in the direction of the canonical web
> location for the POSIX shell definition because my search wasn't very
> successful?

The X/Open specification is at
	http://www.opengroup.org/onlinepubs/007908799/toc.htm
and the shelll command language at
	http://www.opengroup.org/onlinepubs/007908799/xcu/shellix.html
X/Open is a superset of POSIX.

David Korn
research!dgk
dgk@research.att.com


^ permalink raw reply	[relevance 3%]

* long/short options
@ 2001-07-12 16:01  4% Andrej Borsenkow
  2001-07-13  8:07  0% ` Sven Wischnowsky
  0 siblings, 1 reply; 200+ results
From: Andrej Borsenkow @ 2001-07-12 16:01 UTC (permalink / raw)
  To: ZSH Workers Mailing List

mount under Cygwin is simple, but every option has a long and short form.
Using exclusions I can prevent both to be on command line, but listing looks
somewhat ugly:

(tty1)% mount -s --binary
Completing Windows path
Completing option
--binary            -- Unix line endings LF
--cygwin-executable -- all files under mountpoint are cygwin executables
--executable        -- all files under mountpoint are executables
--force             -- be silent
--text              -- (default) DOS line endings CR-LF
-X                  -- all files under mountpoint are cygwin executables
-b                  -- Unix line endings LF
-f                  -- be silent
-t                  -- (default) DOS line endings CR-LF
-x                  -- all files under mountpoint are executables

What I'd really like is something like

-b, --binary        -- Unix line endings
...

Or do I miss something and this is already possible?

Another question is, in case of

'(-c -i --import-old-mounts -p --show-cygdrive-prefix)--change-cygdrive-
prefix[cygdrive prefix]:cygdrive prefix (POSIX path):_files -/'

I get something like

(tty1)% mount --change-cygdrive-prefix --
No matches for: `cygdrive prefix (POSIX path)' or `file'
                                               ^^^^^^^^^

How can I prevent the last part (I want description only from option).

Oh, and is _files /*(/) the right way to complete absolute pathnames? :-)

-andrej


^ permalink raw reply	[relevance 4%]

* Re: long/short options
  2001-07-12 16:01  4% long/short options Andrej Borsenkow
@ 2001-07-13  8:07  0% ` Sven Wischnowsky
  0 siblings, 0 replies; 200+ results
From: Sven Wischnowsky @ 2001-07-13  8:07 UTC (permalink / raw)
  To: zsh-workers

Andrej Borsenkow wrote:

> ...
> 
> What I'd really like is something like
> 
> -b, --binary        -- Unix line endings
> ...
> 
> Or do I miss something and this is already possible?

It isn't.  And it's hard to write (but that didn't stop us in the past).
One would have to change the way comparguments stores and reports the
options and one would have to change the code in _describe to list
things differently.

And one would have to handle this correctly with menu selection where
users expect a one-to-one correspondence between matches (in this case:
lines) and strings to insert in the line.

That's more work than I want to invest in it.

> Another question is, in case of
> 
> '(-c -i --import-old-mounts -p --show-cygdrive-prefix)--change-cygdrive-
> prefix[cygdrive prefix]:cygdrive prefix (POSIX path):_files -/'
> 
> I get something like
> 
> (tty1)% mount --change-cygdrive-prefix --
> No matches for: `cygdrive prefix (POSIX path)' or `file'
>                                                ^^^^^^^^^
> How can I prevent the last part (I want description only from option).

I was about to tell you that you can't because it is added by _files in
line 75 which we need for the tag handling.

But then I looked again and maybe the patch is all we need.  It makes
_files check if there is a user-supplied description and if so, doesn't
use `file' as its own description (it then uses an empty string which is
basically ignored in _description).

This is a development version.  Let's try.

> Oh, and is _files /*(/) the right way to complete absolute pathnames? :-)

The other hunk below is for this one.  Somehow I thought `_files -P/ -W "(/)" -/' 
would be the best solution.  But _path_files had some problems with a
-P-prefix if it was already on the line and there isn't much we can do
about that -- 60% of _path_files is about prefix and suffix handling. 
But the patch below duplicates code in the C-code to make _path_files
ignore a -P-prefix on the line.

And with that the call to _files as shown above seems to work.


Bye
  Sven

Index: Completion/Unix/Type/_files
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/Unix/Type/_files,v
retrieving revision 1.3
diff -u -r1.3 _files
--- Completion/Unix/Type/_files	2001/05/07 09:25:05	1.3
+++ Completion/Unix/Type/_files	2001/07/13 07:28:33
@@ -65,7 +65,11 @@
     if [[ "$sdef" = *:${tag}:* ]]; then
       descr="${(Q)sdef#*:${tag}:}"
     else
-      descr=file
+      if (( $opts[(I)-X] )); then
+        descr=
+      else
+        descr=file
+      fi
       end=yes
     fi
 
Index: Completion/Unix/Type/_path_files
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/Unix/Type/_path_files,v
retrieving revision 1.7
diff -u -r1.7 _path_files
--- Completion/Unix/Type/_path_files	2001/07/06 10:46:31	1.7
+++ Completion/Unix/Type/_path_files	2001/07/13 07:28:33
@@ -5,7 +5,7 @@
 
 local linepath realpath donepath prepath testpath exppath skips skipped
 local tmp1 tmp2 tmp3 tmp4 i orig eorig pre suf tpre tsuf opre osuf cpre
-local pats haspats ignore pfxsfx sopt gopt opt sdirs ignpar cfopt listsfx
+local pats haspats ignore pfx pfxsfx sopt gopt opt sdirs ignpar cfopt listsfx
 local nm=$compstate[nmatches] menu matcher mopts sort match mid accex fake
 
 typeset -U prepaths exppaths
@@ -15,7 +15,7 @@
 # Get the options.
 
 zparseopts -a mopts \
-    'P:=pfxsfx' 'S:=pfxsfx' 'q=pfxsfx' 'r:=pfxsfx' 'R:=pfxsfx' \
+    'P:=pfx' 'S:=pfxsfx' 'q=pfxsfx' 'r:=pfxsfx' 'R:=pfxsfx' \
     'W:=prepaths' 'F:=ignore' 'M+:=matcher' \
     J+: V+: X+: 1: 2: n: 'f=tmp1' '/=tmp1' 'g+:-=tmp1'
 
@@ -28,6 +28,10 @@
   pats=( "${(@)=${(@M)tmp1:#-g*}#-g}" )
 fi
 pats=( "${(@)pats:# #}" )
+
+if (( $#pfx )); then
+  compset -P "$pfx[2]" || pfxsfx=( "$pfx[@]" "$pfxsfx[@]" )
+fi
 
 if (( $#prepaths )); then
   tmp1="${prepaths[2]}"

-- 
Sven Wischnowsky                         wischnow@informatik.hu-berlin.de


^ permalink raw reply	[relevance 0%]

* PATCH: 4.1: cygwin mount
@ 2001-07-13 12:10  6% Andrej Borsenkow
  0 siblings, 0 replies; 200+ results
From: Andrej Borsenkow @ 2001-07-13 12:10 UTC (permalink / raw)
  To: ZSH Workers Mailing List

[-- Attachment #1: Type: text/plain, Size: 246 bytes --]

This is specialcased because cgwin mount has too little in common with
normal mount. I suppose, we can't currently complete 'Windows path" (that is
exactly what is expected - windows path in form x:\foo\bar\com).

Should it go into 4.0?

-andrej

[-- Attachment #2: zsh-mount-cygwin.diff --]
[-- Type: application/octet-stream, Size: 2985 bytes --]

Index: Completion/Unix/Command/_mount
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/Unix/Command/_mount,v
retrieving revision 1.4
diff -u -r1.4 _mount
--- Completion/Unix/Command/_mount	2001/06/13 11:05:51	1.4
+++ Completion/Unix/Command/_mount	2001/07/13 12:07:10
@@ -1,5 +1,49 @@
 #compdef mount umount
 
+if [[ "$OSTYPE" == cygwin ]]; then
+  if [[ "$service" == mount ]] ; then
+    _arguments -s \
+      - mount \
+        '(-b -t --text)--binary[Unix line endings LF]' \
+        '(--binary -t --text)-b[Unix line endings LF]' \
+        '(-f)--force[be silent]' \
+        '(--force)-f[be silent]' \
+        '(-s -u --user)--system[system-wide mount point]' \
+        '(--system -u --user)-s[system-wide mount point]' \
+        '(-t -b --binary)--text[(default) DOS line endings CR-LF]' \
+        '(--text -b --binary)-t[(default) DOS line endings CR-LF]' \
+        '(-u -s --system)--user[(default)user private mount point]' \
+        '(--user -s --system)-u[(default)user private mount point]' \
+        '(-x -X --cygwin-executable)--executable[all files under mountpoint are executables]' \
+        '(--executable -X --cygwin-executable)-x[all files under mountpoint are executables]' \
+        '(-X -x --executable)--cygwin-executable[all files under mountpoint are cygwin executables]' \
+        '(--cygwin-executable -x --executable)-X[all files under mountpoint are cygwin executables]' \
+        ':Windows path:' \
+        ':Unix path:_path_files -P/ -W "(/)" -/' \
+      - control \
+        '(-i -p --show-cygdrive-prefix -c --change-cygdrive-prefix)--import-old-mounts[import old mounts]' \
+        '(--import-old-mounts -p --show-cygdrive-prefix -c --change-cygdrive-prefix)-i[import old mounts]' \
+        '(-p -i --import-old-mounts -c --change-cygdrive-prefix)--show-cygdrive-prefix[show cygdrive prefix]' \
+        '(--show-cygdrive-prefix -i --import-old-mounts -c --change-cygdrive-prefix)-p[show cygdrive prefix]' \
+        '(-c -i --import-old-mounts -p --show-cygdrive-prefix)--change-cygdrive-prefix[cygdrive prefix]:cygdrive prefix (POSIX path):_files -P/ -W "(/)" -/' \
+        '(--change-cygdrive-prefix -i --import-old-mounts -p --show-cygdrive-prefix)-c[cygdrive prefix]:cygdrive prefix (POSIX path):_files -P/ -W "(/)" -/' 
+  
+    return
+  else
+    local line
+    local -a wpaths upaths
+    mount | while read -r line; do
+      [[ $line == ?:\ * ]] && continue
+      wpaths=($wpaths ${line%% on*})
+      upaths=($upaths ${${line##*on }%% type*})
+    done
+    _alternative \
+      'windowspath:WIndows path:compadd -a wpaths' \
+      'unixpath:Unix path:compadd -a upaths'
+    return
+  fi
+fi
+
 # This is table-driven: the tables for the values for the different
 # file system types are directly below. The tables describing the
 # arguments for the `mount' command for different operating systems

^ permalink raw reply	[relevance 6%]

* a fix for _chown
@ 2001-07-14  7:05  3% Akinori MUSHA
  2001-07-17 11:00  0% ` Oliver Kiddle
  0 siblings, 1 reply; 200+ results
From: Akinori MUSHA @ 2001-07-14  7:05 UTC (permalink / raw)
  To: zsh-workers

Hello,

The following patch fixes the _chown compdef for *BSD.

Recently FreeBSD 5.0-CURRENT dropped the support for the non-POSIX
notation of the "user.group" style.  Since all the BSD's have chown(1)
that understands the "user:group" style nowadays, I think this is a
reasonable and safe fix for *BSD.

--- _chown.orig Sat Jul 14 15:58:00 2001
+++ _chown      Sat Jul 14 15:58:38 2001
@@ -9,7 +9,7 @@
     fi
     _groups && return 0
   else
-    if [[ $OSTYPE = (solaris*|hpux*) ]]; then
+    if [[ $OSTYPE = (solaris*|hpux*|*bsd*) ]]; then
       suf=':'
     else
       suf='.'


Regards,

-- 
                     /
                    /__  __            Akinori.org / MUSHA.org
                   / )  )  ) )  /     FreeBSD.org / Ruby-lang.org
Akinori MUSHA aka / (_ /  ( (__(  @ iDaemons.org / and.or.jp

"Freeze this moment a little bit longer, make each impression
  a little bit stronger..  Experience slips away -- Time stand still"


^ permalink raw reply	[relevance 3%]

* Re: a fix for _chown
  2001-07-14  7:05  3% a fix for _chown Akinori MUSHA
@ 2001-07-17 11:00  0% ` Oliver Kiddle
  2001-07-17 23:42  0%   ` David Terrell
  0 siblings, 1 reply; 200+ results
From: Oliver Kiddle @ 2001-07-17 11:00 UTC (permalink / raw)
  To: Akinori MUSHA; +Cc: zsh-workers

Akinori MUSHA wrote:

> The following patch fixes the _chown compdef for *BSD.

Seeing as it hasn't yet been, I'll commit this, to both branches.

> Recently FreeBSD 5.0-CURRENT dropped the support for the non-POSIX
> notation of the "user.group" style.

Urgh, do you know why? Surely support for `.' is no more than about two
lines of code and isn't doing any harm. Admittedly, I'm not a FreeBSD
user but having first learnt it as `.' I'd find this quite annoying.

Oliver

_____________________________________________________________________
This message has been checked for all known viruses by the 
MessageLabs Virus Scanning Service. For further information visit
http://www.messagelabs.com/stats.asp


^ permalink raw reply	[relevance 0%]

* Re: a fix for _chown
  2001-07-17 11:00  0% ` Oliver Kiddle
@ 2001-07-17 23:42  0%   ` David Terrell
  0 siblings, 0 replies; 200+ results
From: David Terrell @ 2001-07-17 23:42 UTC (permalink / raw)
  To: Oliver Kiddle; +Cc: Akinori MUSHA, zsh-workers

On Tue, Jul 17, 2001 at 12:00:49PM +0100, Oliver Kiddle wrote:
> > Recently FreeBSD 5.0-CURRENT dropped the support for the non-POSIX
> > notation of the "user.group" style.
> 
> Urgh, do you know why? Surely support for `.' is no more than about two
> lines of code and isn't doing any harm. Admittedly, I'm not a FreeBSD
> user but having first learnt it as `.' I'd find this quite annoying.

Probably to support '.' characters in usernames.

-- 
David Terrell | "And even when states do spring for essay questions, the 
dbt@meat.net  | testing companies turn over the scoring of these writing 
samples to temps making less than $10 an hour.  Aren't America's teachers 
better prepared to evaluate our kids than some part-time rent-a-readers?"


^ permalink raw reply	[relevance 0%]

* Re: Enhanced shell
  @ 2001-07-23 11:13  3% ` Oliver Kiddle
  2001-07-23 11:38  0%   ` Peter Stephenson
  2001-07-29  9:53  4% ` Zefram
  1 sibling, 1 reply; 200+ results
From: Oliver Kiddle @ 2001-07-23 11:13 UTC (permalink / raw)
  To: Zsh hackers list

Peter Stephenson wrote:
> 
> David Korn is asking for suggestions for features from the various
> shells to be included in a standard, so I've been jotting possible
> things from zsh down.  This is extremely rough at the moment, but before

I had also jotted down a list so I've merged it in with yours and added
a few comments.

> emulate builtin

whence builtin and variants
disown

typeset builtin (yes, it isn't in POSIX). Also, note that bash has
obsoleted `typeset' in favour of `declare' which I think is better.

> ? disable/enable? [bash]
not so useful. they are also common as commands to enable/disable
printers (on AIX and Solaris at least).

> coproc keyword (|& as per csh is already semi-standard and useful)
> ? ZDOTDIR? (or equivalent)
> autoload -U
and various other fpath/autoloading differences

> <<<'word'
multios option (and maybe other redirection extensions)

> precmd, chpwd, periodic
preexec
I'm not too sure about these because of the sort of problems we get
with, for example the prompt themes overwriting the existing functions.
I can think of a few more flexible ways of allowing the same.

> ? [#16]?
possible, not sure

> ${+foo}
yes and some other parameter expansion extensions

> {0..10}, {00..10}
and {a,b} brace expansion

> ? =cmd?
yes

> ? glob qualifiers (perhaps in some standardised NO_BARE_GLOB_QUAL form)
yup.
backreferences (ksh93's possibly being better)
? glob flags
? glob operators: x~y ^x x# x## <x-y>
> ** (both glob and math?)

> CPUTYPE/HOSTYPE/OSTYPE, EGID/GID, EUID/UID,  ERRNO, HOST or HOSTNAME (bash)
VENDOR/MACHTYPE, LOGNAME (USER/USERNAME), PWD, OLDPWD, COLUMNS, LINES,
pipestatus [PIPESTATUS in bash], ARGC/ARGV(?), RANDOM(?), SECONDS(?),
SHLVL, TTY

> `ESS_VERSION' (version no. of extended shell standard)
or possibly take that idea further to cover more details. I like
ksh93's use of a .sh namespace

> ? typeset -T? (possible with discipline functions)
that's a good point about the disciplines

> ? typeset etc. -g?
zsh/bash dynamically scoped local variables.

> command [bash]
-, builtin and noglob. I think command is already in the standard.

> suspend [bash
it's a default alias in ksh

> ? pushd?
not too sure about that because it can be done with a couple of scripts
and because autopushd with the ~ completion is more useful.

cd -
two argument form of cd
cd's handling of symbolic links
directory stack, and access with ~num

process substitution
C style for loop syntax
? repeat loop
prompt percent substitutions
[[ ... ]] conditions
? global aliases
some of the default key bindings (e.g tab for completion)
various history features (shared, duplicate removal etc, fc options, datestamps)
the common -L option to many builtins [similar to typeset -p in ksh]
-l option to the shell - I wish bash would accept -l in addition to --login
array subscripts with start and end
subscripts on a scalar variable

? select, let and function statements (all of which I'd leave out)
I'd also leave out nested substitutions and parameter expansion flags.

I've not gone through the list of options so some of them may be useful.
There may be other builtins too.

Oliver


^ permalink raw reply	[relevance 3%]

* Re: Enhanced shell
  2001-07-23 11:13  3% ` Oliver Kiddle
@ 2001-07-23 11:38  0%   ` Peter Stephenson
  2001-07-23 18:03  3%     ` Bart Schaefer
  0 siblings, 1 reply; 200+ results
From: Peter Stephenson @ 2001-07-23 11:38 UTC (permalink / raw)
  To: Zsh hackers list

Oliver Kiddle wrote:
> > David Korn is asking for suggestions for features from the various
> > shells to be included in a standard, so I've been jotting possible
> > things from zsh down.
> 
> I had also jotted down a list so I've merged it in with yours and added
> a few comments.
> 
> typeset builtin (yes, it isn't in POSIX). Also, note that bash has
> obsoleted `typeset' in favour of `declare' which I think is better.

It strikes me as a bit late for that now.

> > ? disable/enable? [bash]
> not so useful. they are also common as commands to enable/disable
> printers (on AIX and Solaris at least).

Yes, I can see it would be silly defining a standard which is known to have
this clash in it.

> multios option (and maybe other redirection extensions)

This is very useful, but it's maybe a bit too much of a hack to
standardise (e.g. the race condition on output multios in the current
implementation, although I hope that's fixable).

> > precmd, chpwd, periodic
> preexec
> I'm not too sure about these because of the sort of problems we get
> with, for example the prompt themes overwriting the existing functions.
> I can think of a few more flexible ways of allowing the same.

In which case, we should probably think about that for our own purposes
before attempting to standardise.

> backreferences (ksh93's possibly being better)

I haven't looked at those at all.

> > `ESS_VERSION' (version no. of extended shell standard)
> or possibly take that idea further to cover more details. I like
> ksh93's use of a .sh namespace

Since namespaces were on David Korn's list, that might be preferable.

> > ? typeset -T? (possible with discipline functions)
> that's a good point about the disciplines

> > ? typeset etc. -g?
> zsh/bash dynamically scoped local variables.

Hmm.  I don't know how this will pan out if ksh is going the way of
statically scoped parameters.

> > command [bash]
-, builtin and noglob. I think command is already in the standard.

I hadn't looked at the standard --- this was something I meant to check.
I'm pretty sure builtin is there hence the POSIX_BUILTINS option.  noglob
is really for saving typing interactively, so I'm not sure it's what we're
looking for at the moment.

> > suspend [bash
> it's a default alias in ksh

OK, may well be worth standardising

> cd -
> two argument form of cd
> directory stack, and access with ~num

Again, these are really interactive shortcuts; you can (and probably would)
do them in a more verbose way in a script.  Standardising handling of
symbolic links in cd might be sensible, though.

> process substitution

That's already in ksh, but it wasn't on David Korn's list, so we could
suggest it.

> C style for loop syntax

I would tend to avoid trying to standardise variant syntax altogether.

> prompt percent substitutions

Interactive shortcut again --- very useful, but less so for scripts.  Quite
a sizeable extension if you haven't already got it.  It's annoying bash
does this with backslashes.

> [[ ... ]] conditions

I suspect that's already implied.

> some of the default key bindings (e.g tab for completion)

Some of our key bindings have come from ksh, it might indeed be sensible to
keep track of which we want to list as standard.

> array subscripts with start and end
> subscripts on a scalar variable

Apparently this works a different way:  ${param:start:offset}, or
something, haven't looked at the details.

-- 
Peter Stephenson <pws@csr.com>                  Software Engineer
CSR Ltd., Unit 300, Science Park, Milton Road,
Cambridge, CB4 0XL, UK                          Tel: +44 (0)1223 392070


**********************************************************************
The information transmitted is intended only for the person or
entity to which it is addressed and may contain confidential 
and/or privileged material. 
Any review, retransmission, dissemination or other use of, or
taking of any action in reliance upon, this information by 
persons or entities other than the intended recipient is 
prohibited.  
If you received this in error, please contact the sender and 
delete the material from any computer.
**********************************************************************


^ permalink raw reply	[relevance 0%]

* Re: Enhanced shell
  2001-07-23 11:38  0%   ` Peter Stephenson
@ 2001-07-23 18:03  3%     ` Bart Schaefer
  2001-07-24 13:42  2%       ` Oliver Kiddle
  0 siblings, 1 reply; 200+ results
From: Bart Schaefer @ 2001-07-23 18:03 UTC (permalink / raw)
  To: Zsh hackers list

This is a bit choppy because I'm trying not to say myself anything that
Oliver already said.

On Jul 22, 11:47pm, Peter Stephenson wrote:
}
} ? ZDOTDIR? (or equivalent)

This is a slightly twitchy one.  It's only really useful if it's imported
from the environment, but it's dangerous for e.g. `su' to read other
people's dotfiles.  Maybe ZDOTDIR should be discarded unless ((EGID==GID)).
(Maybe that would also be a good test for whether to import FPATH, which
was another thread of discussion not long ago.)

} autoload -U

And `setopt NO_ALIASES' or the equivalent.

On Jul 23, 12:13pm, Oliver Kiddle wrote:
}
} > precmd, chpwd, periodic
} preexec
} I'm not too sure about these because of the sort of problems we get
} with, for example the prompt themes overwriting the existing functions.
} I can think of a few more flexible ways of allowing the same.

I think these should always have been arrays of function names to be
called, rather than magic function names in their own right.  Of course,
we could do both.

} > ${+foo}
} yes and some other parameter expansion extensions

I think where we'll run into problems here, aside from the fact that the
flags syntax used by zsh is a bit baroque, is with field splitting and
whether various extensions apply before or after it happens (I have the
impression that under traditional splitting rules, certain extensions
can't possibly be made to apply after splitting).  I see you've suggested
leaving out expansion flags, though.

} > ? glob qualifiers (perhaps in some standardised NO_BARE_GLOB_QUAL form)
} yup.
} backreferences (ksh93's possibly being better)

You didn't mention anything about that in workers/15348.  What are the
differences?

} > CPUTYPE/HOSTYPE/OSTYPE, EGID/GID, EUID/UID,  ERRNO, HOST or HOSTNAME (bash)
} VENDOR/MACHTYPE, LOGNAME (USER/USERNAME), PWD, OLDPWD, COLUMNS, LINES,
} pipestatus [PIPESTATUS in bash], ARGC/ARGV(?), RANDOM(?), SECONDS(?),
} SHLVL, TTY

ARGC/ARGV are going to be hard to standardize because of the 1-based v.
0-based array indexing issues.  In fact, I suspect array indexing is
going to be one of the bigger sticking points in the whole discussion.

} > command [bash]
} -, builtin and noglob. I think command is already in the standard.

Yes, `command' is in POSIX, but it works a bit differently than zsh's.

} > ? pushd?
} not too sure about that because it can be done with a couple of scripts
} and because autopushd with the ~ completion is more useful.

Bash has pushd/popd as builtins.  Also:

} directory stack, and access with ~num

You suggest having the directory stack as a special built-in but not the
commands to manipulate it?

} cd -
} two argument form of cd
} cd's handling of symbolic links

That last could stand some clarification even in current zsh.  It's been
on my to-do list for ages and I've never gotten to it.

The two-argument form of cd has stopped us doing some other interesting
things with options to the `cd' command.  It might not be the best form
to standardize.

} C style for loop syntax

You mean `for ((...))'?  I've always been mildly annoyed that it only
works with math expressions and not with more general shell commands.

} ? repeat loop

Yes.

} prompt percent substitutions

Maybe.

} [[ ... ]] conditions

Yes.

} ? global aliases

Not sure.

} the common -L option to many builtins [similar to typeset -p in ksh]

Option letter clashes are another place where we may have trouble.  I
think `-L' was a better choice than `-p', but ...

} array subscripts with start and end

More 0-vs-1 problems.

What about subscript flags and pattern subscripts?  array[(r)pat]
"Reverse indexing"?

On Jul 23, 12:38pm, Peter Stephenson wrote:
}
} > typeset builtin (yes, it isn't in POSIX). Also, note that bash has
} > obsoleted `typeset' in favour of `declare' which I think is better.
} 
} It strikes me as a bit late for that now.

But it could be added as another alias for typeset; ksh93 doesn't have
`local' either (does it?).

} > > ? disable/enable? [bash]
} > not so useful. they are also common as commands to enable/disable
} > printers (on AIX and Solaris at least).
} 
} Yes, I can see it would be silly defining a standard which is known to have
} this clash in it.

As has been pointed out, though, the functionality is useful.  Rather
than `disable -[afr] ...' maybe we could standardize on an option common
to other commands, e.g. `function -D name' would be `disable -f name',
`alias -D name' would be `disable -a name', etc.  The tricky one is
`builtin -D name' which would have to work on both reserved words and
builtin commands, or something.

} > multios option (and maybe other redirection extensions)
} 
} This is very useful, but it's maybe a bit too much of a hack to
} standardise (e.g. the race condition on output multios in the current
} implementation, although I hope that's fixable).

It's fixable; the shell just needs to keep track of the forked `tee'-job
and wait for it.  That just happens to be a little complicated right now.
 
} > > ? typeset etc. -g?
} > zsh/bash dynamically scoped local variables.
} 
} Hmm.  I don't know how this will pan out if ksh is going the way of
} statically scoped parameters.

Another typeset option?

-- 
Bart Schaefer                                 Brass Lantern Enterprises
http://www.well.com/user/barts              http://www.brasslantern.com

Zsh: http://www.zsh.org | PHPerl Project: http://phperl.sourceforge.net   


^ permalink raw reply	[relevance 3%]

* Re: Enhanced shell
  2001-07-23 18:03  3%     ` Bart Schaefer
@ 2001-07-24 13:42  2%       ` Oliver Kiddle
  0 siblings, 0 replies; 200+ results
From: Oliver Kiddle @ 2001-07-24 13:42 UTC (permalink / raw)
  To: Zsh hackers list

Bart Schaefer wrote:

| On Jul 23, 12:13pm, Oliver Kiddle wrote:
| }
| } > precmd, chpwd, periodic
| 
| I think these should always have been arrays of function names to be
| called, rather than magic function names in their own right.  Of course,
| we could do both.

Still, I think we should mention them with the point about the
problems. It could possibly also apply with the ERR trap.

| } > ${+foo}
| } yes and some other parameter expansion extensions
| 
| I think where we'll run into problems here, aside from the fact that the
| flags syntax used by zsh is a bit baroque, is with field splitting and
| whether various extensions apply before or after it happens (I have the
| impression that under traditional splitting rules, certain extensions
| can't possibly be made to apply after splitting).  I see you've suggested
| leaving out expansion flags, though.

That is roughly why I suggested leaving out expansion flags. I was
thinking of some of the simpler things like ${name/pattern/repl} and
${name:#pattern}.

| } backreferences (ksh93's possibly being better)
| 
| You didn't mention anything about that in workers/15348.  What are the
| differences?

Well, they are very different really. Basically instead of accessing
matched parts of the pattern later with variables, you can refer back
to earler parts of a pattern so, for example, [[ abba = @(?)bb\1 ]]
would return true because \1 will match whatever the first thing in
brackets matched.

workers/15348 was never going to be complete. I've found other things
since like [=c=] in a pattern matches "all characters with the same
primary collation weight as the character c".

| } directory stack, and access with ~num
| 
| You suggest having the directory stack as a special built-in but not the
| commands to manipulate it?

Well not really though with autopushd, that is how I use the directory
stack. The directory stack as a whole should probably be left out.

| } prompt percent substitutions
| Maybe.

I hadn't realised that bash used backslashes for this as Peter pointed
out so that'll probably be a problem

| } the common -L option to many builtins [similar to typeset -p in ksh]
| 
| Option letter clashes are another place where we may have trouble.  I
| think `-L' was a better choice than `-p', but ...

It doesn't help that -L is already used by typeset for left alignment.

| } array subscripts with start and end
| 
| More 0-vs-1 problems.

Yes, that's going to be a fairly big problem. We probably have to put
up with the standard following ksh and zsh using the ksharrays option.

| What about subscript flags and pattern subscripts?  array[(r)pat]
| "Reverse indexing"?

possibly.

| On Jul 23, 12:38pm, Peter Stephenson wrote:
| }
| } > typeset builtin (yes, it isn't in POSIX). Also, note that bash has
| } > obsoleted `typeset' in favour of `declare' which I think is better.
| }
| } It strikes me as a bit late for that now.
| 
| But it could be added as another alias for typeset; ksh93 doesn't have
| `local' either (does it?).

It is already there as another alias for typeset!

ksh93 doesn't have `local'.

| } > > ? disable/enable? [bash]
| } > not so useful. they are also common as commands to enable/disable
| } > printers (on AIX and Solaris at least).
| }
| } Yes, I can see it would be silly defining a standard which is known to have
| } this clash in it.
| 
| As has been pointed out, though, the functionality is useful.  Rather

Another possibility would be if the functionality was achieved by
modifying special arrays like those in the zsh/parameter module or
ksh93's .sh namespace. Anyway, I suggest we mention the functionality
in our list for David Korn and point out the issues when it comes up in
discussion with him.

| } > > ? typeset etc. -g?
| } > zsh/bash dynamically scoped local variables.
| } Hmm.  I don't know how this will pan out if ksh is going the way of
| } statically scoped parameters.
| Another typeset option?

Yes, as I think I mentioned in workers/15348, it is going to have to be
either no local variables or support both types (which is what Perl
does).

Oliver

_____________________________________________________________________
This message has been checked for all known viruses by the 
MessageLabs Virus Scanning Service. For further information visit
http://www.messagelabs.com/stats.asp


^ permalink raw reply	[relevance 2%]

* Re: Enhanced shell
    2001-07-23 11:13  3% ` Oliver Kiddle
@ 2001-07-29  9:53  4% ` Zefram
  2001-07-29 22:07  0%   ` Peter Stephenson
  2001-07-30  2:19  2%   ` Bart Schaefer
  1 sibling, 2 replies; 200+ results
From: Zefram @ 2001-07-29  9:53 UTC (permalink / raw)
  To: Peter Stephenson; +Cc: Zsh hackers list

Peter Stephenson wrote:
>emulate builtin

We should only standardise "emulate posix_v2" as a way of specifying
"this is written for the enhanced shell standard".  Then future
revisions of the standard get to add new permitted arguments to emulate.
Without an emulate command in a script, the shell has to behave in a
manner compatible with the original POSIX.

The introduction of explicit specification of the language in which a
script is written makes it possible for us to make incompatible changes
to shell syntax (it's automatically compatibe because of the "emulate").
There's a noticeable problem otherwise, that the POSIX standard doesn't
leave many punctuation characters available for semantically interesting
uses (especially most of our extended glob characters).

Speaking of which, some kind of extended glob pattern syntax should
probably be part of the new standard (with emulate as described above,
the new syntax can be on by default in enhanced mode).

>coproc keyword (|& as per csh is already semi-standard and useful)

I was thinking about this.  The existing coproc semantics are rather
limiting ("<&p" only working with the one coprocess) and baroque (magic
fd closures on redirecting).  Having a coproc reserved word gives us a
place to put options on the coprocess -- we could have "coproc -i6 -o7"
to connect the coprocess's input to shell fd 6, etc., leaving the "p"
file descriptors alone.  We don't really need to standardise the "p"
file descriptors at all.

It's just a pity we can't make coproc a normal command -- it has to be
part of the shell grammar to pick up an entire pipeline, which seems to
be what we want.

>? ZDOTDIR? (or equivalent)

I'm very dubious about this kind of thing.  We should mostly ignore the
environment when deciding which dotfiles to execute.

Should we be standardising a larger set of dotfiles?  E.g., ".posix_env",
".posix_rc".

>? =cmd?

With cleaned-up semantics, yes.  It shouldn't be doing alias expansion.

>? glob qualifiers (perhaps in some standardised NO_BARE_GLOB_QUAL form)

The NO_BARE_GLOB_QUAL form should probably simply be an explicit way of
introducing the qualifier syntax we already have.  That was the idea
behind the option -- BARE_GLOB_QUAL makes glob qualifier syntax clash
with glob grouping syntax.

>CPUTYPE/HOSTYPE/OSTYPE, EGID/GID, EUID/UID,  ERRNO, HOST or HOSTNAME (bash)

Careful here.  My understanding of POSIX is that it has no special
variables (as we understand the term).  An assignable EGID, for example,
would add extra semantics to a name that looks like it's in the user's
namespace.  Adding special variables with the names we've traditionally
used would be a step backwards.

Instead, we should put all magic variables -- ones that affect the
shell or that the shell fiddles with, other than by explicit command
-- into a sub-namespace.  Things like PATH would have to remain where
they are, because they're needed in the environment.  But EGID should be
"egid.sh".  We can allow arbitrary special semantics of variables in the
".sh" namespace while leaving all names without "." as completely dumb
variables for the user to manage as he sees fit.

>`ESS_VERSION' (version no. of extended shell standard)

Perhaps this should be a magic array, "emulations.sh", listing the values
understood for "emulate".  Either way, it's not very useful in scripts.

Other stuff:

How about multios?  Pretty simple semantics, not difficult to implement,
though we ought to decide properly when an implicit tee gets waited for.
With the emulate command as described above, we can have multios be on
by default in "posix_v2" mode and (of course) off by default in POSIX
v1 mode.  We don't need to standardise "setopt multios", or most other
user-visible options.

<> redirection: is it already in the standard?

&> (and &>>): we should leave >& alone, not standardise the overloading
it gets in zsh.

prompt expansion: not sure if our % sequences should be standard.
However, we could quite nicely have the standard specify that prompts
get $-expanded (and no other special treatment), and then zsh users can
still do PS1='${(%)${:-%n@%m}}'.

modifiers on parameter expansion: the history modifiers could be
standardised for use in parameter expansion a la "${FOO:t}".  These seem
useful, and a clean syntax.

Process substitution, at least in the ">>(...)" and "<<(...)" form (where
the effect is merely to create pipes).  I'm dubious about standardising
the general >(...).

Brace expansion is already semi-standard.

-zefram


^ permalink raw reply	[relevance 4%]

* Re: Enhanced shell
  2001-07-29  9:53  4% ` Zefram
@ 2001-07-29 22:07  0%   ` Peter Stephenson
  2001-07-30  1:34  4%     ` Bart Schaefer
  2001-07-30  2:19  2%   ` Bart Schaefer
  1 sibling, 1 reply; 200+ results
From: Peter Stephenson @ 2001-07-29 22:07 UTC (permalink / raw)
  To: Zsh hackers list

Zefram wrote:
> Peter Stephenson wrote:
> >emulate builtin
> 
> We should only standardise "emulate posix_v2" as a way of specifying
> "this is written for the enhanced shell standard".  Then future
> revisions of the standard get to add new permitted arguments to emulate.
> Without an emulate command in a script, the shell has to behave in a
> manner compatible with the original POSIX.

Hmm.  Zsh obviously doesn't, you have to trick it some other way.
 
> >? =cmd?
> 
> With cleaned-up semantics, yes.  It shouldn't be doing alias expansion.

Yes, I'm not sure how long that's been there, and I don't think it's all
that useful --- using the parameters module for this as for other
similar things strikes me as a better bet.  I find it hard to believe
anyone is relying on it, either, given that you can't tell if you're
going to end up with an external command, which are found in preference,
opposite to the normal order of lookup.  So I'm very tempted to remove
it or stick it in a deprecated option, off by default.

> >? glob qualifiers (perhaps in some standardised NO_BARE_GLOB_QUAL form)
> 
> The NO_BARE_GLOB_QUAL form should probably simply be an explicit way of
> introducing the qualifier syntax we already have.  That was the idea
> behind the option -- BARE_GLOB_QUAL makes glob qualifier syntax clash
> with glob grouping syntax.

I suppose you mean any enhanced-shell version should be a separate
option.  I can certainly see a point in that.

-- 
Peter Stephenson <pws@pwstephenson.fsnet.co.uk>
Work: pws@csr.com
Web: http://www.pwstephenson.fsnet.co.uk


^ permalink raw reply	[relevance 0%]

* Enhanced shell standard. summary
@ 2001-07-29 22:11  4% Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2001-07-29 22:11 UTC (permalink / raw)
  To: Zsh hackers list

Before I make a firm suggestion about what we want from zsh in an
enhanced shell, here's a summary of proposals made by me, Oliver, Bart
and Zefram, with a little editorial pruning --- I didn't want to go over
the top, but have included a few things mentioned by other people that
they seemed to be particularly keen on, even if I have doubts they're
suitable for standardisation.

The first section means I haven't yet done my homework about what's
already in Posix or single UNIX, but will do when this finally settles
down.

Reasonably rapid responses --- must-have additions, must-not-have
subtractions --- would be appreciated, I don't want this preliminary
round to drag on much longer since until the people from the other shell
have commented it's a bit of a moot discussion.

check posix
-----------
disown, builtin, suspend
pushd
typeset, declare
[[ ... ]]
parameters LOGNAME or USER or USERNAME
  LINENO
  COLUMNS/LINES
process substitution, at least <<(...)

basic, already present in more than 1
--------------------------------------
whence
${name/pattern/repl}
{a,b}
** math power operator
parameters:
  ERRNO
  HOST or HOSTNAME
  SHLVL, RANDOM, SECONDS
  HOSTTYPE, OSTYPE, MACHTYPE
cd takes care of symlinks, optionally resolves linkso
-l option to shell for login
some form of enhanced pattern matching, e.g. like ksh88.
$-expanion in prompts to be standard

additions
---------
emulate
autoload -U, NO_ALIASES
<<<'word'
functionality of precmd, chpwd, periodic
${+foo} to check whether set
coproc
{0..10}
glob qualifiers, also history-like modifiers on glob patterns.
** recursive search
parameters: CPUTYPE, VENDOR, ERRNO
version of enhanced shell spec, maybe via namespace
functionality associated with disable/enable for builtin --- but name clash
repeat loop (repeat 10; do print hello; done)
standardisation of basic key bindings [need list]
-L options to may builtins to list in form for input to shell
  [or make this defined behaviour --- will need option in zsh for
  compatibility]
if namespaces, possible magic settable variables, corresponding
  to zsh's EGID/GID, EUID/UID (note suitable for standardising as they
  are, because the magic behaviour would clash with Posix).

maybe optional
--------------
=cmdname

Hmmm [meaning I don't now much we can really do here...]
----
history commands and parameters

-- 
Peter Stephenson <pws@pwstephenson.fsnet.co.uk>
Work: pws@csr.com
Web: http://www.pwstephenson.fsnet.co.uk


^ permalink raw reply	[relevance 4%]

* Re: Enhanced shell
  2001-07-29 22:07  0%   ` Peter Stephenson
@ 2001-07-30  1:34  4%     ` Bart Schaefer
  0 siblings, 0 replies; 200+ results
From: Bart Schaefer @ 2001-07-30  1:34 UTC (permalink / raw)
  To: Peter Stephenson, zsh-workers

On Jul 29, 11:07pm, Peter Stephenson wrote:
} Subject: Re: Enhanced shell
}
} Zefram wrote:
} > Peter Stephenson wrote:
} > >emulate builtin
} > 
} > We should only standardise "emulate posix_v2" as a way of specifying
} > "this is written for the enhanced shell standard".  Then future
} > revisions of the standard get to add new permitted arguments to emulate.
} > Without an emulate command in a script, the shell has to behave in a
} > manner compatible with the original POSIX.
} 
} Hmm.  Zsh obviously doesn't, you have to trick it some other way.

I should think that "has to behave in manner compatible with POSIX" would
apply only if the shell actually advertised itself under a standardized
name, e.g., "sh".

Should there be a standardized command-line option that is equivalent to
`emulate posix_v2'?  The only one available seems to be -z ... I don't
know if that already has a meaning in ksh; it doesn't yet in bash2.
 
} > >? =cmd?
} > 
} > With cleaned-up semantics, yes.  It shouldn't be doing alias expansion.
} 
} Yes, I'm not sure how long that's been there, and I don't think it's all
} that useful

It is, occasionally, extremely annoying, as one can't do [[ -x =cmd ]]
without getting syntax errors when cmd happens to be an alias.  On the
other hand, if cmd actually isn't found, that's an abortive error too.

Anyway, it appears to have gone in in late 2.4.xxx or sometime in 2.5, as
it is not in the version 2.4 sources I have and it's not mentioned in the
ChangeLog.3.0 file anywhere.  2.5 always was the mutant zsh from outer
space (no offense to those who worked on it; they meant well).

-- 
Bart Schaefer                                 Brass Lantern Enterprises
http://www.well.com/user/barts              http://www.brasslantern.com

Zsh: http://www.zsh.org | PHPerl Project: http://phperl.sourceforge.net   


^ permalink raw reply	[relevance 4%]

* Re: Enhanced shell
  2001-07-29  9:53  4% ` Zefram
  2001-07-29 22:07  0%   ` Peter Stephenson
@ 2001-07-30  2:19  2%   ` Bart Schaefer
  1 sibling, 0 replies; 200+ results
From: Bart Schaefer @ 2001-07-30  2:19 UTC (permalink / raw)
  To: zsh-workers

On Jul 29, 10:53am, Zefram wrote:
} Subject: Re: Enhanced shell
}
} >coproc keyword (|& as per csh is already semi-standard and useful)
} 
} It's just a pity we can't make coproc a normal command -- it has to be
} part of the shell grammar to pick up an entire pipeline, which seems to
} be what we want.

I think the syntax `coproc { LIST }' would be preferable to what we have
now.  Ksh has introduced `namespace NAME { LIST }' already.  If the LIST
associated with `coproc' were brace-delimited, we could use the regular
redirection operators to specify inputs and outputs, rather than using
options to the coproc pseudo-command.  Heck, you could even have coprocs
with multios!

} >? ZDOTDIR? (or equivalent)
} 
} I'm very dubious about this kind of thing.  We should mostly ignore the
} environment when deciding which dotfiles to execute.

That's why I suggested not importing ZDOTDIR unless geteuid() == getuid().
Seems to be the right balance.  (How does ksh deal with ENV ?)

} >CPUTYPE/HOSTYPE/OSTYPE, EGID/GID, EUID/UID,  ERRNO, HOST or HOSTNAME (bash)
} 
} Instead, we should put all magic variables -- ones that affect the
} shell or that the shell fiddles with, other than by explicit command
} -- into a sub-namespace.  Things like PATH would have to remain where
} they are, because they're needed in the environment.  But EGID should be
} "egid.sh".

Ksh namespaces are ${.namespace.parameter}, not ${parameter.namespace}.
I think we're probably going to be stuck with that.  However, I agree
that most of the "magic" variables should be in a namespace, and futher
I that the magic should be implemented with something like discipline
functions.  E.g., there should be a builtin command to change effective
UID, and assigning to .sh.euid should invoke that command.

} With the emulate command as described above, we can have multios be on
} by default in "posix_v2" mode and (of course) off by default in POSIX
} v1 mode.  We don't need to standardise "setopt multios", or most other
} user-visible options.

Hmm, perhaps that's true, but should we at least standardize a reserved
name (e.g., a .sh.options parameter) for changing the option settings?

Should we try to do anything at all about the plethora of single-letter
shell-startup command-line options?

} modifiers on parameter expansion: the history modifiers could be
} standardised for use in parameter expansion a la "${FOO:t}".  These seem
} useful, and a clean syntax.

The syntax isn't all that clean, really, once you get involved with using
more than one modifier per expansion ... and the semantics of :s/p/r and
:& etc. are rather baroque.

-- 
Bart Schaefer                                 Brass Lantern Enterprises
http://www.well.com/user/barts              http://www.brasslantern.com

Zsh: http://www.zsh.org | PHPerl Project: http://phperl.sourceforge.net   


^ permalink raw reply	[relevance 2%]

* Function syntax
@ 2001-08-03 18:14  4% Bart Schaefer
  0 siblings, 0 replies; 200+ results
From: Bart Schaefer @ 2001-08-03 18:14 UTC (permalink / raw)
  To: zsh-workers

I don't think changing this to match POSIX would break anything, as at the
moment redirections following a functon definition are pretty much useless.

--- Forwarded mail from David Korn <dgk@research.att.com>

Date: Fri, 3 Aug 2001 14:01:02 -0400 (EDT)
From: David Korn <dgk@research.att.com>
To: shell@research.att.com

--------

> On Aug 3, 10:56am, David Korn wrote:
> }
> } With function definition redirections are processed before the {...}
> } block is entered.
> } 
> } 	foo()
> } 	{
> } 		print hello world
> } 	} > $1
> } 
> } will cause
> } 	foo bar
> } to write 'hello world' into bar.
> 
> Ahh, I didn't know that.  In zsh redirections outside the braces are
> not considered to be part of the function body.
In section 3.9.5 of the Posix shell standard,
it defines the syntax as
	fname() compound-command [io-redirect]
and it says that the option io_redirect shall be performed during the
execution of the function itself.
> 
> -- 
> Bart Schaefer                                 Brass Lantern Enterprises
> http://www.well.com/user/barts              http://www.brasslantern.com
> 
> Zsh: http://www.zsh.org | PHPerl Project: http://phperl.sourceforge.net   
> ____________________________________________________________

David Korn
research!dgk
dgk@research.att.com
____________________________________________________________
To unsubscribe from this list, please send the following
two-line message to majordomo@research.att.com, in which
your_email_address should be replaced by the address you
used when you subscribed to the list:
unsubscribe shell your_email_address
end


---End of forwarded mail from David Korn <dgk@research.att.com>

-- 
Bart Schaefer                                 Brass Lantern Enterprises
http://www.well.com/user/barts              http://www.brasslantern.com

Zsh: http://www.zsh.org | PHPerl Project: http://phperl.sourceforge.net   


^ permalink raw reply	[relevance 4%]

* (Fwd) Re: Value of $0
@ 2001-08-06 14:46  4% Bart Schaefer
  0 siblings, 0 replies; 200+ results
From: Bart Schaefer @ 2001-08-06 14:46 UTC (permalink / raw)
  To: zsh-workers

Another way zsh doesn't quite emulate ksh, just FYI.

--- Forwarded mail from David Korn <dgk@research.att.com>

Date: Sun, 5 Aug 2001 23:06:41 -0400 (EDT)
From: David Korn <dgk@research.att.com>
To: shell@research.att.com
Subject: Re: Value of $0


POSIX treats functions as macros so it does not redefine $0. 
The conform, $0 must remain the name of the shell or script, not
the function name.  I had to change ksh93 to conform since ksh88
hade $0 be the function name.

This is one of the reasons that ksh has stuck with the function name()
syntax.  These functions have scoping and behave more like shell
scripts than macros.  $0 is defined as the name of the function
for function name() functions.

Also, set -x causes each line of a function to be traced with the POSIX
shell.  Using function name() in ksh93 does not do this and you
can set the trace attribute individually for each function using
	typeset -ft name

David Korn
research!dgk
dgk@research.att.com
____________________________________________________________
To unsubscribe from this list, please send the following
two-line message to majordomo@research.att.com, in which
your_email_address should be replaced by the address you
used when you subscribed to the list:
unsubscribe shell your_email_address
end


---End of forwarded mail from David Korn <dgk@research.att.com>

-- 
Bart Schaefer                                 Brass Lantern Enterprises
http://www.well.com/user/barts              http://www.brasslantern.com

Zsh: http://www.zsh.org | PHPerl Project: http://phperl.sourceforge.net   


^ permalink raw reply	[relevance 4%]

* RE: Quoted parameter parsing glitch
  @ 2001-08-22 16:21  3% ` Borsenkow Andrej
  2001-08-22 16:59  4%   ` Bart Schaefer
  0 siblings, 1 reply; 200+ results
From: Borsenkow Andrej @ 2001-08-22 16:21 UTC (permalink / raw)
  To: 'Bart Schaefer', zsh-workers

> schaefer<502> print "${foo:-"}"
> dquote braceparam>
> 
> At this point the parser is in an infinite loop.  There's nothing you
can
> type (except end-of-file or interrupt) that will free you from the PS2
> prompt.
> 

Shell should not hang, but please note it is invalid as per POSIX.
Double-quotes and braces must match. So whatever fix is used, it should
not make the above valid construct (i.e. it should not print `"'). 

-andrej


^ permalink raw reply	[relevance 3%]

* Re: Quoted parameter parsing glitch
  2001-08-22 16:21  3% ` Borsenkow Andrej
@ 2001-08-22 16:59  4%   ` Bart Schaefer
  2001-08-22 18:25  0%     ` Borsenkow Andrej
  0 siblings, 1 reply; 200+ results
From: Bart Schaefer @ 2001-08-22 16:59 UTC (permalink / raw)
  To: Borsenkow Andrej, zsh-workers

On Aug 22,  8:21pm, Borsenkow Andrej wrote:
} Subject: RE: Quoted parameter parsing glitch
}
} > schaefer<502> print "${foo:-"}"
} > dquote braceparam>
} > 
} > At this point the parser is in an infinite loop.

I'm wrong, it's either more complicated than that example shows or it's
just me.  It's possible to get out of that one by just:

schaefer<502> print "${foo:-"}"
dquote braceparam> }
dquote> "
}


schaefer<503> 

I'm pretty sure I did manage to get it stuck on a more complicated
substitution, but my attempt to produce a minimal example went astray,
and I haven't reproduced whatever it was I first did.

} Shell should not hang, but please note it is invalid as per POSIX.
} Double-quotes and braces must match.

Zsh 4 (and ksh) is supposed to accept double-quotes inside ${...} inside
double-quotes; the braces act as an extra level of quoting so that the
inner quotes can nest in the outer ones.  I don't know what POSIX says
about that.

-- 
Bart Schaefer                                 Brass Lantern Enterprises
http://www.well.com/user/barts              http://www.brasslantern.com

Zsh: http://www.zsh.org | PHPerl Project: http://phperl.sourceforge.net   


^ permalink raw reply	[relevance 4%]

* Re: Quoted parameter parsing glitch
  2001-08-22 16:59  4%   ` Bart Schaefer
@ 2001-08-22 18:25  0%     ` Borsenkow Andrej
    0 siblings, 1 reply; 200+ results
From: Borsenkow Andrej @ 2001-08-22 18:25 UTC (permalink / raw)
  To: Bart Schaefer; +Cc: zsh-workers

On Wed, 22 Aug 2001, Bart Schaefer wrote:

>
> } Shell should not hang, but please note it is invalid as per POSIX.
> } Double-quotes and braces must match.
>
> Zsh 4 (and ksh) is supposed to accept double-quotes inside ${...} inside
> double-quotes; the braces act as an extra level of quoting so that the
> inner quotes can nest in the outer ones.  I don't know what POSIX says
> about that.
>

As I said - they must match. "${foo:-""}" is valid but "${foo:-"}" - not.
Neither is "${foo:-\"}". You cannot quote braces or double quotes in this
case. They must match (opening - closing).

-andrej


^ permalink raw reply	[relevance 0%]

* Re: Quoted parameter parsing glitch
  @ 2001-08-27  7:22  4%           ` Bart Schaefer
  0 siblings, 0 replies; 200+ results
From: Bart Schaefer @ 2001-08-27  7:22 UTC (permalink / raw)
  To: zsh-workers

On Aug 26,  9:59pm, Borsenkow Andrej wrote:
}
} Bart Schaefer wrote:
} > 
} > The question is whether "${foo:-"}"}" is valid.
} 
} No. Pairs of quotes and braces must match.

And is there no way to quote a brace within braces?

In any case, zsh accepts the above, nested like so:

    "           "
     ${        }
       foo:-" "
             }

I don't see any reason to change that in zsh, even if it's not accepted
under the POSIX rules, unless it conflicts with whatever means POSIX
provides for quoting the inner right brace.

-- 
Bart Schaefer                                 Brass Lantern Enterprises
http://www.well.com/user/barts              http://www.brasslantern.com

Zsh: http://www.zsh.org | PHPerl Project: http://phperl.sourceforge.net   


^ permalink raw reply	[relevance 4%]

* Re: PATCH: ztcp
  @ 2001-09-09 23:30  4%     ` Bart Schaefer
  2001-09-10  0:06  0%       ` Clint Adams
  0 siblings, 1 reply; 200+ results
From: Bart Schaefer @ 2001-09-09 23:30 UTC (permalink / raw)
  To: Clint Adams; +Cc: zsh-workers

On Sep 9,  6:01pm, Clint Adams wrote:
} 
} I don't understand what fd duplication buys you.

It lets you choose a specific fd to which to assign the descriptor, rather
than having to take whatever you get.  In POSIX emulation mode, fds > 9
can't [*] be redirected to/from, so it's important to be able to specify
a known-free number.

[*] Actually, it does work, but it's a bug in zsh's POSIX emulation and
shouldn't be relied upon.

Incidentally, I did mention your objection to /dev/tcp/portname on the
shell mailing list, but the response was that several unix variants have
already implemented /dev/tcp/* as special files, so the shell would only
be emulating that interface on platforms that don't support it, much as
zsh already does with /dev/fd/.

-- 
Bart Schaefer                                 Brass Lantern Enterprises
http://www.well.com/user/barts              http://www.brasslantern.com

Zsh: http://www.zsh.org | PHPerl Project: http://phperl.sourceforge.net   


^ permalink raw reply	[relevance 4%]

* Re: PATCH: ztcp
  2001-09-09 23:30  4%     ` Bart Schaefer
@ 2001-09-10  0:06  0%       ` Clint Adams
  0 siblings, 0 replies; 200+ results
From: Clint Adams @ 2001-09-10  0:06 UTC (permalink / raw)
  To: Bart Schaefer; +Cc: zsh-workers

> It lets you choose a specific fd to which to assign the descriptor, rather
> than having to take whatever you get.  In POSIX emulation mode, fds > 9
> can't [*] be redirected to/from, so it's important to be able to specify
> a known-free number.

I had imagined that you could do something like 'exec 9<&$REPLY'
if you wanted to pick the fd.  Unfortunately this doesn't
update the session table.

> Incidentally, I did mention your objection to /dev/tcp/portname on the
> shell mailing list, but the response was that several unix variants have
> already implemented /dev/tcp/* as special files, so the shell would only
> be emulating that interface on platforms that don't support it, much as
> zsh already does with /dev/fd/.

Hmm.  Is there a spec yet, or is bash just the reference implementation?


^ permalink raw reply	[relevance 0%]

* PATCH: trap for EXIT doesn't catch exit?
  @ 2001-09-19 10:35  2% ` Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2001-09-19 10:35 UTC (permalink / raw)
  To: Zsh hackers list

Bart Schaefer wrote:
> I don't think it's sufficient to simulate exiting the scopes, because the
> traps have to execute as if they're in the scope where they were installed.
> It may be necessary to actually unwind the stack; at least it's necessary
> to call endparamscope() and endtrapscope() the correct number of times.

Unwinding the stack is a whole load of code embedded in two separate (C)
functions, but you do need quite a lot of it to make sure the traps get a
consistent environment.

Here's a first go at a simple strategy which I'm not completely convinced
about yet: mark that we need to exit and return from all shell functions
using the normal return code, then exit when we've left the last function.
Comments, particularly in zexit(), will need to be improved.  It seems to
do the basics, and to get right the interaction with `stopmsg', which is
one of the things I'm least happy about, partly because that variable is
already scattered through too much of the code.

Another question is whether I should be combining the new exit_pending flag
and the existing in_exit somehow.

By the way, coincidentally I assume, David Korn addressed the issue of the
scope for the EXIT trap on the shell list --- it's part of a set of
compatibility problems with POSIX-style functions.

I tested it with this:

% ./zsh
% fn() { trap 'echo Bar' EXIT; exit 3; print Not reached; }
% fn2() { trap 'echo Again' EXIT; fn; print Not reached; }
% trap 'echo Foo' EXIT
% fn2; print Not reached
Bar
Again
Foo

(and the exit status is 3).  This could go in the test suite.

Index: Src/builtin.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/builtin.c,v
retrieving revision 1.53
diff -u -r1.53 builtin.c
--- Src/builtin.c	2001/09/18 17:50:26	1.53
+++ Src/builtin.c	2001/09/19 10:30:52
@@ -3208,6 +3208,10 @@
 
 /**/
 int
+exit_pending;
+
+/**/
+int
 bin_break(char *name, char **argv, char *ops, int func)
 {
     int num = lastval, nump = 0;
@@ -3248,10 +3252,16 @@
 	    zerrnam(name, "not login shell", NULL, 0);
 	    return 1;
 	}
-	zexit(num, 0);
-	break;
+	/*FALLTHROUGH*/
     case BIN_EXIT:
-	zexit(num, 0);
+	if (locallevel) {
+	    if (stopmsg || (zexit(0,2), !stopmsg)) {
+		retflag = 1;
+		breaks = loops;
+		exit_pending = (num << 1) | 1;
+	    }
+	} else
+	    zexit(num, 0);
 	break;
     }
     return 0;
@@ -3295,11 +3305,11 @@
 
 /**/
 mod_export void
-zexit(int val, int from_signal)
+zexit(int val, int from_where)
 {
     static int in_exit;
 
-    if (isset(MONITOR) && !stopmsg && !from_signal) {
+    if (isset(MONITOR) && !stopmsg && from_where != 1) {
 	scanjobs();    /* check if jobs need printing           */
 	if (isset(CHECKJOBS))
 	    checkjobs();   /* check if any jobs are running/stopped */
@@ -3308,12 +3318,12 @@
 	    return;
 	}
     }
-    if (in_exit++ && from_signal)
+    if (from_where == 2 || (in_exit++ && from_where))
 	    return;
 
     if (isset(MONITOR)) {
 	/* send SIGHUP to any jobs left running  */
-	killrunjobs(from_signal);
+	killrunjobs(from_where == 1);
     }
     if (isset(RCS) && interact) {
 	if (!nohistsave)
Index: Src/exec.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/exec.c,v
retrieving revision 1.36
diff -u -r1.36 exec.c
--- Src/exec.c	2001/08/19 04:23:46	1.36
+++ Src/exec.c	2001/09/19 10:30:52
@@ -3429,6 +3429,16 @@
     if (noreturnval)
 	lastval = oldlastval;
     popheap();
+
+    if (exit_pending) {
+	if (locallevel) {
+	    retflag = 1;
+	    breaks = loops;
+	} else {
+	    stopmsg = 1;
+	    zexit(exit_pending >> 1, 0);
+	}
+    }
 }
 
 /* This finally executes a shell function and any function wrappers     *

-- 
Peter Stephenson <pws@csr.com>                  Software Engineer
CSR Ltd., Science Park, Milton Road,
Cambridge, CB4 0WH, UK                          Tel: +44 (0)1223 392070


**********************************************************************
The information transmitted is intended only for the person or
entity to which it is addressed and may contain confidential 
and/or privileged material. 
Any review, retransmission, dissemination or other use of, or
taking of any action in reliance upon, this information by 
persons or entities other than the intended recipient is 
prohibited.  
If you received this in error, please contact the sender and 
delete the material from any computer.
**********************************************************************


^ permalink raw reply	[relevance 2%]

* hp/ux terminfo
       [not found]     ` <20010918155339.20305.qmail@web12504.mail.yahoo.com>
@ 2001-09-19 14:17  0%   ` Clint Adams
  0 siblings, 0 replies; 200+ results
From: Clint Adams @ 2001-09-19 14:17 UTC (permalink / raw)
  To: Vincent Lefevre, ee_in_co; +Cc: zsh-workers

> Under HP-UX, the tgetent return codes recently changed so it
> returns OK (0) for success and ERR (-1) for error.  Hence the
> changes invalidated the code written with the old assumptions.
> 
> I am not sure if HP-UX is following a new POSIX standard or what
> by implementing these changes, but it may be possible that linux
> has made a similar change.

This is actually from X/Open Curses, which doesn't define
specific values for OK and ERR.  The tgetent entry
has been marked "to be withdrawn" in Open Group specs
for many years now.  I'm not sure if this is because
they intend to deprecate the termcap emulation routines
or because of the possible return value inconsistency.

If HP-UX is actually returning 0 instead of merely
documenting the X/Open behavior and implementing the
traditional behavior, we should check for that
at configure-time.


^ permalink raw reply	[relevance 0%]

* PATCH: printf builtin
@ 2001-09-20 19:10  3% Oliver Kiddle
  0 siblings, 0 replies; 200+ results
From: Oliver Kiddle @ 2001-09-20 19:10 UTC (permalink / raw)
  To: zsh-workers

Ksh and bash both have a printf builtin. This adds one to zsh.

I'm inclined to think this should be in a loadable module - it isn't
that useful interactively but then it isn't particularly large either.
Any views on that? If it should be a module, should it be compiled in
by default for a static zsh?

There seems to be a bit of inconsistency over what the \c escape means.
In zsh it cancels a trailing newline but in most other things, it
cancels all following output.

I've not used zstrtol because it doesn't set errno to ERANGE for
overflows. POSIX requires the user to be notified of such errors.
Someone more familiar with the zsh source and with C should maybe have
a quick look through: I'm not sure whether there shouldn't be a free()
or two in there and if so which one. I intend to do a bit more testing
and tidying on it tomorrow anyway. We don't seem to have any tests of
builtins so where in the tests should I stick tests for this?

I have included the bash and ksh %b and %q extensions to the format
which are like %s but interpret posix escapes and shell quote the
argument respectively. Note that you can't specify a width or precision
with %b because I wanted to allow \0 to be used to output a null
character and printf(3) would stop at the null.

I've not included ksh's %H (HTML quoting) or %R/%P (regex/glob
conversion) because I don't think they have any place being there. ksh
also has %(...)T which is like date(1). And, I've not worked out what
ksh's %Z does.

Let me know if you have any other ideas for extensions or any thoughts
on whether I should add the following:

    Support for %n would be easily doable taking the argument as the
    name of a parameter.

    Allow the argument to be specified by writing `%m$' in place of '%'
    so '%3$s' will print the third argument. IRIX's printf(1) does
    this. It would involve disabling the feature of reusing the format
    for remaining arguments to avoid infinite loops.

Oliver

Index: Src/builtin.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/builtin.c,v
retrieving revision 1.53
diff -u -r1.53 builtin.c
--- Src/builtin.c	2001/09/18 17:50:26	1.53
+++ Src/builtin.c	2001/09/20 18:49:33
@@ -92,6 +92,7 @@
 
     BUILTIN("popd", 0, bin_cd, 0, 2, BIN_POPD, NULL, NULL),
     BUILTIN("print", BINF_PRINTOPTS, bin_print, 0, -1, BIN_PRINT, "RDPbnrslzNu0123456789pioOcm-", NULL),
+    BUILTIN("printf", 0, bin_printf, 1, -1, 0, NULL, NULL),
     BUILTIN("pushd", 0, bin_cd, 0, 2, BIN_PUSHD, NULL, NULL),
     BUILTIN("pushln", BINF_PRINTOPTS, bin_print, 0, -1, BIN_PRINT, NULL, "-nz"),
     BUILTIN("pwd", 0, bin_pwd, 0, 0, 0, "rLP", NULL),
@@ -3051,6 +3052,176 @@
     if (fout != stdout)
 	fclose(fout);
     return 0;
+}
+
+/* printf */
+
+/**/
+int
+bin_printf(char *name, char **args, char *ops, int func)
+{
+    int len, nnl, width, prec, type, ret = 0;
+    char *start, *endptr, *c, *fmt = getkeystring(*args, &len, 0, &nnl);
+    char **first = ++args;
+    char save;
+    union {
+	zlong l;
+	double d;
+	unsigned long u;
+	char *s;
+	int c;
+    } val;
+    
+    do {
+
+        for (c = fmt;c-fmt < len;c++) {
+	    type = prec = width = -1;
+
+	    if (*c != '%') {
+        	putchar(*c);
+		continue;
+	    }
+
+	    start = c++;
+	    if (*c == '%') {
+		putchar('%');
+		continue;
+	    }
+	    
+	    if (strchr("+- #", *c)) c++;
+	    
+	    if (*c == '*') {
+		width = (*args) ? strtoul(*args++, NULL, 0) : 0;
+		c++;
+	    } else {
+		while (idigit(*c)) c++;
+	    }
+	    
+	    if (*c == '.') {
+		c++;
+		if (*c == '*') {
+		    prec = (*args) ? strtoul(*args++, NULL, 0) : 0;
+		    c++;
+	    	} else {
+		    while (idigit(*c)) c++;
+		}
+	    }
+	    
+	    if (*c == 'l' || *c == 'L' || *c == 'h') c++;
+    	    
+	    switch (*c) {
+	    case 'c':
+		if (*args) {
+		    if (**args == Meta)
+		        val.c = (*args)[1] ^ 32;
+		    else
+		        val.c = **args;
+		    args++;
+		} else
+		    val.c = 0;
+		break;
+	    case 's':
+		if (*args)
+		    val.s = unmetafy(*args++, NULL);
+		else
+		    continue;
+		break;
+	    case 'b':
+		if (*args) {
+		    int l;
+		    char *b = getkeystring(*args++, &l, 0, &nnl);
+		    fwrite(b, l, 1, stdout);
+		}
+		continue;
+	    case 'q':
+		if (*args) {
+		    *c = 's';
+		    val.s = bslashquote(unmetafy(*args++, NULL), NULL, 0);
+		} else
+		    continue;
+		break;
+    	    case 'd':
+	    case 'i':
+	    	type=1;
+		break;
+    	    case 'e':
+	    case 'E':
+	    case 'f':
+	    case 'g':
+	    case 'G':
+	    	type=2;
+		break;
+	    case 'o':
+	    case 'u':
+	    case 'x':
+	    case 'X':
+		type=3;
+		break;
+	    default:
+		if (*c) {
+		    save = c[1];
+		    c[1] = '\0';
+		}
+	    	zerrnam(name, "%s: invalid directive", start, 0);
+	    	if (*c) c[1] = save;
+	    	ret = 1;
+		continue;
+	    }
+	    
+	    if (type > 0) {
+		if (*args && (**args == '\'' || **args == '"' )) {
+		    if (type == 2)
+		    	val.d = (*args)[1];
+		    else
+		    	val.l = (*args)[1];
+		    args++;
+		} else {
+	    	    switch (type) {
+		    case 1:
+			val.l = (*args) ? strtol(*args, &endptr, 0) : 0;
+			break;
+    	    	    case 2:
+			val.d = (*args) ? strtod(*args, &endptr) : 0;
+			break;
+		    case 3:
+			val.u = (*args) ? strtoul(*args, &endptr, 0) : 0;
+		    }
+		    if (*args) {
+			if (errno == ERANGE) {
+			    zerrnam(name, "`%s' arithmetic overflow", *args, 0);
+			    ret = 1;
+			} else if (**args && endptr == *args) {
+			    zerrnam(name, "`%s' expected numeric value", endptr, 0);
+			    ret = 1;
+			} else if (*endptr) {
+			    zerrnam(name, "`%s' not completely converted", *args, 0);
+			    ret = 1;
+			}
+			args++;
+		    }
+		}
+	    }
+	    save = c[1];
+	    c[1] = '\0';
+	    if (width >= 0) {
+		if (prec >= 0)
+		    printf(start, width, prec, val);
+		else
+		    printf(start, width, val);
+	    } else {
+		if (prec >= 0)
+		    printf(start, prec, val);
+		else
+		    printf(start, val);
+	    }
+	    c[1] = save;
+	
+	}
+
+    /* if there are remaining args, reuse format string */
+    } while (*args && args != first);
+
+    return ret;
 }
 
 /* shift builtin */

_____________________________________________________________________
This message has been checked for all known viruses by the 
MessageLabs Virus Scanning Service. For further information visit
http://www.messagelabs.com/stats.asp


^ permalink raw reply	[relevance 3%]

* Re: PATCH: printf builtin
  @ 2001-09-25 17:17  4% ` Oliver Kiddle
  2001-09-25 17:57  0%   ` Peter Stephenson
  0 siblings, 1 reply; 200+ results
From: Oliver Kiddle @ 2001-09-25 17:17 UTC (permalink / raw)
  To: Zsh hackers list

Peter Stephenson wrote:
> 
> It does seem to be that, since everything looks OK up to the call to
> printf.  As a test, I got it to work with a nasty hack using a void * and
> separate variables for different types.

Could you please send me this `nasty hack'. I'd prefer to get something
which works and has all the features required by POSIX, commit it and
then worry about the many possible improvements as and when I have time
and feel inclined to do them.

> One problem I can see is that val has an element `zlong'.  Unfortunately on
> 32-bit machines with the default --enable-lfs, whether or not actual large
> file support is available, that's usually a long long, i.e. 64-bits.  This
> will certainly confuse printf with a simple `%d' --- Solaris supports

Right. I should have just used an int then it seems.

> `%lld' but that's unlikely to be completely portable.  I'm afraid that's
> another argument for handling the printf codes internally.  However, if we

I don't dispute that handling printf codes internally would be a good
thing to be doing eventually but my initial aim was just to have the
POSIX functionality and it shouldn't be necessary for that.

Judging by certain aspects of their behaviour I suspect other printf(1)
implementations are using the underlying printf(3) (with the possible
exception of bash).

> use matheval(), the only basic numeric types we need to handle are doubles
> and zlongs, plus some casting to unsigned: check Src/Builtins/rlimits.c for

Would you then suggest that in the final implementation, `%d' would
format a zlong and that we wouldn't bother with any size modifiers (or
just ignore them). It would seem sensible because C only needs size
modifiers because the parameters can be of various types.

> However, there seems to be another problem, since changing that to long or
> int (which are supposed to be the same here but I'm paranoid --- although
> strictly we should enforce %ld if we pass on a long) doesn't help.

Sorry. Are you saying that it still doesn't work with an int? That
wouldn't make sense.

Oliver

_____________________________________________________________________
This message has been checked for all known viruses by the 
MessageLabs Virus Scanning Service. For further information visit
http://www.messagelabs.com/stats.asp


^ permalink raw reply	[relevance 4%]

* Re: PATCH: printf builtin
  2001-09-25 17:17  4% ` Oliver Kiddle
@ 2001-09-25 17:57  0%   ` Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2001-09-25 17:57 UTC (permalink / raw)
  To: Zsh hackers list

Oliver Kiddle wrote:
> Peter Stephenson wrote:
> > It does seem to be that, since everything looks OK up to the call to
> > printf.  As a test, I got it to work with a nasty hack using a void * and
> > separate variables for different types.
> 
> Could you please send me this `nasty hack'. I'd prefer to get something
> which works and has all the features required by POSIX, commit it and
> then worry about the many possible improvements as and when I have time
> and feel inclined to do them.

I've stuck the revised printf below, but I'm sure you can do a lot better
than that.  It's not a patch because I don't particularly want people to
apply it.

> Would you then suggest that in the final implementation, `%d' would
> format a zlong and that we wouldn't bother with any size modifiers (or
> just ignore them).

Yes, absolutely.  We should use integers and doubles in the internal format
only, and just ignore modifiers --- I don't see any possible effect beyond
confusion in trying to support different sizes.  We could in principle cast
to the required size, but this means that a simple %d won't work with the
internal type, which is silly.

The only possible exception is how we handle unsigned values.  printf will
normally take the same bits and print them as if they were an unsigned
value.  I'm unsure whether this is useful, but don't see another sensible
interpretation of `printf %ud -1'.

> > However, there seems to be another problem, since changing that to long or
> > int (which are supposed to be the same here but I'm paranoid --- although
> > strictly we should enforce %ld if we pass on a long) doesn't help.
> 
> Sorry. Are you saying that it still doesn't work with an int? That
> wouldn't make sense.

No, this was still with the union; there's something wrong there apart from
the size of the integer variable.  It doesn't affect the version below.


/* printf */

/**/
int
bin_printf(char *name, char **args, char *ops, int func)
{
    int len, nnl, width, prec, type, ret = 0;
    char *start, *endptr, *c, *fmt = getkeystring(*args, &len, 0, &nnl);
    char **first = ++args;
    char save;

    /* instead of union */
    char *stringval;
    int intval;
    double doubleval;
    unsigned int uintval;
    void **val;
    
    do {

        for (c = fmt;c-fmt < len;c++) {
	    type = prec = width = -1;

	    if (*c != '%') {
        	putchar(*c);
		continue;
	    }

	    start = c++;
	    if (*c == '%') {
		putchar('%');
		continue;
	    }
	    
	    if (strchr("+- #", *c)) c++;
	    
	    if (*c == '*') {
		width = (*args) ? strtoul(*args++, NULL, 0) : 0;
		c++;
	    } else {
		while (idigit(*c)) c++;
	    }
	    
	    if (*c == '.') {
		c++;
		if (*c == '*') {
		    prec = (*args) ? strtoul(*args++, NULL, 0) : 0;
		    c++;
	    	} else {
		    while (idigit(*c)) c++;
		}
	    }
	    
	    if (*c == 'l' || *c == 'L' || *c == 'h') c++;
    	    
	    switch (*c) {
	    case 'c':
		type = 1;
		if (*args) {
		    if (**args == Meta)
		        intval = (*args)[1] ^ 32;
		    else
		        intval = **args;
		    args++;
		} else
		    intval = 0;
		break;
	    case 's':
		if (*args)
		    stringval = unmetafy(*args++, NULL);
		else
		    continue;
		break;
	    case 'b':
		if (*args) {
		    int l;
		    char *b = getkeystring(*args++, &l, 0, &nnl);
		    fwrite(b, l, 1, stdout);
		}
		continue;
	    case 'q':
		if (*args) {
		    *c = 's';
		    stringval = bslashquote(unmetafy(*args++, NULL), NULL, 0);
		} else
		    continue;
		break;
    	    case 'd':
	    case 'i':
	    	type=1;
		break;
    	    case 'e':
	    case 'E':
	    case 'f':
	    case 'g':
	    case 'G':
	    	type=2;
		break;
	    case 'o':
	    case 'u':
	    case 'x':
	    case 'X':
		type=3;
		break;
	    default:
		if (*c) {
		    save = c[1];
		    c[1] = '\0';
		}
	    	zerrnam(name, "%s: invalid directive", start, 0);
	    	if (*c) c[1] = save;
	    	ret = 1;
		continue;
	    }
	    
	    if (type > 0) {
		if (*args && (**args == '\'' || **args == '"' )) {
		    if (type == 2)
		    	doubleval = (*args)[1];
		    else
		    	intval = (*args)[1];
		    args++;
		} else {
	    	    switch (type) {
		    case 1:
			intval = (*args) ? strtol(*args, &endptr, 0) : 0;
			break;
    	    	    case 2:
			doubleval = (*args) ? strtod(*args, &endptr) : 0;
			break;
		    case 3:
		        uintval = (*args) ? strtoul(*args, &endptr, 0) : 0;
		    }
		    if (*args) {
			if (errno == ERANGE) {
			    zerrnam(name, "`%s' arithmetic overflow", *args, 0);
			    ret = 1;
			} else if (**args && endptr == *args) {
			    zerrnam(name, "`%s' expected numeric value", endptr, 0);
			    ret = 1;
			} else if (*endptr) {
			    zerrnam(name, "`%s' not completely converted", *args, 0);
			    ret = 1;
			}
			args++;
		    }
		}
	    }
	    save = c[1];
	    c[1] = '\0';
	    /* yuk */
	    switch (type) {
	    case 1:
		val = (void *) &intval;
		break;
	    case 2:
		val = (void *) &doubleval;
		break;
	    case 3:
		val = (void *) &uintval;
		break;
	    default:
		val = (void *) &stringval;
		break;
	    }
	    if (width >= 0) {
		if (prec >= 0)
		    printf(start, width, prec, *val);
		else
		    printf(start, width, *val);
	    } else {
		if (prec >= 0)
		    printf(start, prec, *val);
		else
		    printf(start, *val);
	    }
	    c[1] = save;
	
	}

    /* if there are remaining args, reuse format string */
    } while (*args && args != first);

    return ret;
}

-- 
Peter Stephenson <pws@csr.com>                  Software Engineer
CSR Ltd., Science Park, Milton Road,
Cambridge, CB4 0WH, UK                          Tel: +44 (0)1223 392070


**********************************************************************
The information transmitted is intended only for the person or
entity to which it is addressed and may contain confidential 
and/or privileged material. 
Any review, retransmission, dissemination or other use of, or
taking of any action in reliance upon, this information by 
persons or entities other than the intended recipient is 
prohibited.  
If you received this in error, please contact the sender and 
delete the material from any computer.
**********************************************************************


^ permalink raw reply	[relevance 0%]

* PATCH: utf8 for _mount -t vfat
@ 2001-10-05  1:35  6% Clint Adams
  0 siblings, 0 replies; 200+ results
From: Clint Adams @ 2001-10-05  1:35 UTC (permalink / raw)
  To: zsh-workers

Index: Completion/Unix/Command/_mount
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/Unix/Command/_mount,v
retrieving revision 1.7
diff -u -r1.7 _mount
--- Completion/Unix/Command/_mount	2001/10/05 01:29:36	1.7
+++ Completion/Unix/Command/_mount	2001/10/05 01:34:21
@@ -374,9 +374,10 @@
     _fs_msdos=( "$_fs_fat[@]" )
     _fs_umsdos=( "$_fs_fat[@]" )
     _fs_vfat=( "$_fs_fat[@]"
-      'uni_xlate[translate unicode to escaped sequences]'
+      '(utf8)uni_xlate[translate unicode to escaped sequences]'
       'posix[allow file names only differing in case]'
       'nonumtail[try short name before number extension]'
+      '(uni_xlate)utf8[mount the filesystem in UTF8 mode]'
     )
     _fs_hpfs=(
       'uid[specify user ID of all files]:user ID:'


^ permalink raw reply	[relevance 6%]

* questions - calling matheval() for printf
@ 2001-10-12 14:03  3% Oliver Kiddle
  2001-10-15 12:54  3% ` Peter Stephenson
  0 siblings, 1 reply; 200+ results
From: Oliver Kiddle @ 2001-10-12 14:03 UTC (permalink / raw)
  To: zsh-workers

I have a few questions related to the use of matheval() for numeric
arguments to printf. According to the POSIX definition (which you can
read at http://www.opengroup.org/onlinepubs/007908799/xcu/printf.html),
with the %d format specification, and assuming 32-bit ints, the
following are the expect results:

argument	stdout		stderr
5a		5		printf: "5a" not completely converted
9999999999	2147483647	printf: "9999999999" arithmetic overflow
-9999999999	-2147483648	printf: "-9999999999" arithmetic overflow
ABC		0		printf: "ABC" expected numeric value

In the first case, the different error message doesn't worry me but
math evaluation doesn't return `5'. It is conceivable that someone
relies on this in a script, passing a string starting with a number and
redirecting stderr. I could successively chop characters off the right
of the string until matheval returns without an error. This would need
a hack to avoid repeated error messages from matheval(). Any other,
perhaps better suggestions?

Is there any way I can find out when arithmetic overflows have occurred
for the second and third cases? matheval() just allows the numbers to
wrap?

In the last case, we'll just have to be non-compliant (it returns $ABC)
but that doesn't worry me much.

What is going on with this errval and zerr/zwarn stuff? I don't
entirely understand which I should be calling on errors and whether I
am right to zero errval after calling matheval() and reading it?

Can a 64-bit integer be something other than long long? It seems I only
have ZSH_64_BIT_TYPE to check and it might need a different format
specifier for printf(3) if this is something other than long long.

Aside from this, using matheval() works very smoothly and it is
certainly better that we won't lose precision due to converting floats
via ASCII before formatting..

Oliver


^ permalink raw reply	[relevance 3%]

* Re: differences between the two branches
  @ 2000-10-14 19:02  4% ` Peter Stephenson
  2001-10-16 17:08  2%   ` Bart Schaefer
  0 siblings, 1 reply; 200+ results
From: Peter Stephenson @ 2000-10-14 19:02 UTC (permalink / raw)
  To: Zsh hackers list

Bart Schaefer wrote:
> } Hmm, a bit of perl could probably help here.

Thanks.  I've just been looking through this, except for a few which
went way before 4.0.2 which I haven't bothered to look at again (some in
the list below still predate 4.0.2).  This obviously dupliates Oliver's
selection to a certain extent, but I'm a sucker for a perl script.

Here's a list of things which could go, if it's not too much work, and
those that probably shouldn't.

I will not be moving other people's patches to 4.0 myself, now or ever,
because I'm too lazy and too disorganised.  So decide based on the
following, or otherwise.  For the same reason, there's a middle category
between `could go' and `probably shouldn't go' called `my brain hurts'
(you have to imagine the knotted handkerchief, tank top and ape-like
posture).  Some of the ones in the last category are simply there
because they're new and would actually be entirely harmless to tranfer.


Could go if not too much work
============================

> -	* unposted: Completion/compinstall: spotted by Bart: assignments
> -	when finding $fpath if not set in current shell were completely
> -	garbled.

That's me.  That should go across, but I'll have to do it by hand.

> only in current/ChangeLog: 16xxx
> only in branch/ChangeLog: 16018

Oliver: I think these are probably the same, so it's probably gone in
anyway. It fixes compilation for Darwin, which would certainly
be a good idea.

> only in current/ChangeLog: 15812

Bart: doc changes for parameters.  Might make sense to copy these over.
 
> only in current/ChangeLog: 15739
> only in current/ChangeLog: 15740

Clint: compaudit, probably OK, maybe even necessary on Debian.
 
> only in current/ChangeLog: 15721

Me: LICENCE: Oliver pointed this out and it's now in.

> only in current/ChangeLog: 15713

Wayne: _rpm: probably OK.

> only in current/ChangeLog: 15702

Bart: Doc improvements, probably could go across.

> only in current/ChangeLog: 15676

Bart: minor test tweaks.  Might be a good idea since they remove some
unnecessary failures.

> only in current/ChangeLog: 15653

Sven: Restore traditional insert-tab behaviour.  This was certainly a
bug in that it disagreed with the doc, so probably ought to be in 4.0.
 
> only in current/ChangeLog: 15638

Sven: correction with matchers.  Definitely a bug, so if this is in 4.0
should go across.

> only in current/ChangeLog: 15596

Wayne: silence compiler, fine if applicable.

> only in current/ChangeLog: 15583

Me: installfns.sh installed CVS stuff, may need to go across.

> only in current/ChangeLog: 15508

Me: _cvs tags didn't work with one command, should go across if not
already there.

> only in current/ChangeLog: 15488

Bart: doc tweaks, probably reasonable to apply these.
 
> only in current/ChangeLog: 15375

Bart: explain setopt CORRECT, could probably go across.
 
> only in current/ChangeLog: 15354

Bart: Doc indexing, useful but I don't know how hard this is to transfer.
 
> only in current/ChangeLog: 15279

Me: expand an expansion description, probably OK to push back.
 
> only in current/ChangeLog: 15181

Andrej: kpic -> KPIC; I thought this *was* for 4.0.2?

> only in current/ChangeLog: 15180

Andrej: fix AIX configuration, should almost certainly go across if it's
been tested (does sourceforge have AIX?)

> only in current/ChangeLog: 15099

Andrej: test suite handles `unimplemented', be nice to have this in 4.0
but may well need some work.

> only in current/ChangeLog: 15057

Bart: PRINT_EXIT_VALUE: didn't work, so probably this ought to go back.
 
> only in current/ChangeLog: 15023, 15027
> only in current/ChangeLog: 15038

Bart: fix POSIX `for', looks OK to copy.
Andrej: test POSIX for syntax, depends on fix.

My brain hurts just thinking about it
=====================================

> only in current/ChangeLog: 16002

Sven: Fix expand style with prefix:  probably OK, but I don't know if
it's relevant or easy to port.

> only in current/ChangeLog: 15949
> only in current/ChangeLog: 15994

Me: list-suffixes and other stuff in compinstall.  I may simply copy the
whole of compinstall across (see above).

> only in current/ChangeLog: 15944

Sven: `suffix' in expand style always respected.  Arguably a bug fix,
but arguably not.
 
> only in current/ChangeLog: 15836
> only in current/ChangeLog: 15806
> only in current/ChangeLog: 15809

Wayne: `r' problem reported by Bart.  Dunno if this was in 4.0.

> only in current/ChangeLog: 15650
> only in current/ChangeLog: 15669

Sven: approximation and ~ problems.  Dunno, it's too hard to work out
the consequences.

> only in current/ChangeLog: 15615

Sven: complicated matcher thing it would take me half an hour to
understand.
 
> only in current/ChangeLog: 15584

Sven: zwc problem, dunno if this is relevant.

> only in current/ChangeLog: 15498

Me: Consequent on moving zle builtins to zshzle.  Must check if that was
already in 4.0.

> only in current/ChangeLog: 15198

Bart: _tilde return value, OK if applicable, but may well not be.
 
> only in current/ChangeLog: 15094

Clint: his prompt theme, dunno.

> only in current/ChangeLog: 15060

Bart: A02alias: can't keep track of whether this applies or not.
 
> only in current/ChangeLog: 15050, 15054

Bart: POSIX exit statuses.  Change of behaviour, so not sure.

Probably shouldn't go
=====================

> only in current/ChangeLog: users/4157 (plus workers/15674)

Bart: upgrade to _man, probably too much out of sync with 4.0 by now.
15674 looks like a bug fix in any case.

> only in current/ChangeLog: unposted; based on 14679 (me) and 14693 (Bart)

Andrej: autoconf 2.50 fixes.  Not necessary; for consistency, we're
sticking with the the old version for 4.0.


> +2001-09-21  Andrew Main (Zefram)  <zefram@zsh.org>
> +
> +	* Doc/Zsh/contrib.yo, Functions/Misc/tetris: Tetris game for ZLE.
> +

Not necessary.

> only in current/ChangeLog: 15608
> only in current/ChangeLog: Bart: 15106, small changes in 15152
> only in current/ChangeLog: 15945

Bart: improves _cd.  Sven: improve _cd.
I can't actually work out what the combined effect is, but there are
almost certainly too many _cd, _tilde etc. changes.


> only in current/ChangeLog: Back out 15266

Me: That didn't go in anyway.

> only in current/ChangeLog: 16006

Clint: _mailboxes.  New style, so doesn't need to be transferred.  I'd
prefer all new behaviour like that, unless strictly necessary for
compatibility, to appear in upgrades rather than bug fixes.

> only in current/ChangeLog: 16005

Clint: mount: there's a lot of this, let's not get into this on 4.0, it
may still be dragging on.

> only in current/ChangeLog: 16000

Clint: new _debchange, not necessary but harmless.

> only in current/ChangeLog: 15995

Sven: show directories with globbed files by default.  I don't think we
should change this in mid-4.0.

> only in current/ChangeLog: 15991

Sven: file completion display.  I'm not worried about this, myself.
 
> only in current/ChangeLog: 15987

Oliver: tcp.c, irrelevant.

> only in current/ChangeLog: 15980

Me: zcalc, irrelevant.
 
> only in branch/ChangeLog: 15974
> only in current/ChangeLog: 15931
> only in current/ChangeLog: 15917
> only in current/ChangeLog: 15844

Me: 15974 only on branch because it documents the TRAPEXIT bug which is
fixed in 4.1 by 15844, 15917, 15931, but not necessarily stable, so I'll
leave this.
 
> only in current/ChangeLog: 15973

Oliver: printf: irrelevant

> only in current/ChangeLog: 15964

Andrej: tcp.c, irrelevant.

> only in current/ChangeLog: 15946

Sven: compresult.c, don't think this is an issue for 4.0

 
> only in current/ChangeLog: 15919

Clint: tcp.c, irrelevant.

> only in current/ChangeLog: 15895

Bart: zftp has changed too much.

> only in current/ChangeLog: 15886

Clint: tcp.c, irrelevant.
 
> only in current/ChangeLog: 15851, 15948

Oliver: printf, irrelevant.

> only in current/ChangeLog: 15762
> only in current/ChangeLog: 15763
> only in current/ChangeLog: 15766
> only in current/ChangeLog: 15768
> only in current/ChangeLog: 15770
> only in current/ChangeLog: 15772
> only in current/ChangeLog: 15779
> only in current/ChangeLog: 15780
> only in current/ChangeLog: 15783

Clint: tcp.c, irrelevant.
 
> only in current/ChangeLog: 15765

Clint: [[:ascii:]], not necessary.
 
> only in current/ChangeLog: 15734

Zefram: zle user key maps, overdue but too late now for 4.0.
 
> only in current/ChangeLog: 15722

Me: _sh, not necessary.

> only in current/ChangeLog: 15720

Bart/me: zmv: not necessary.

> only in current/ChangeLog: 15708

Bart: quoted parameter parsing, probably best left alone for 4.0.

> only in current/ChangeLog: 15647

Me: zcalc, irrelevant.
 
> only in current/ChangeLog: 15606

Oliver: update _dd, depends on new -w argument to _values.
 
> only in current/ChangeLog: 15597

Sven: _values -w, new option so probably not necessary.

> only in current/ChangeLog: 15586
> only in current/ChangeLog: 15590

Me, Oliver: aliases in = context.  Not changed in 4.0.
 
> only in current/ChangeLog: 15588

Sven: _values stuff which gives me a headache.

> only in current/ChangeLog: 15585

Me: bash functions, not necessary.

> only in current/ChangeLog: 15549

Sven: Y03arguments.ztst resulting from other change only
 
> only in current/ChangeLog: 15526

Sven: complicated _arguments stuff.

> only in current/ChangeLog: 15511

Me: zcalc, irrelevant.

> only in current/ChangeLog: 15489
> only in current/ChangeLog: 15509

Sven, Bart: _describe technicality.

> only in current/ChangeLog: 15507

Me: zcalc, irrelevant.
 
> only in current/ChangeLog: 15477
> only in current/ChangeLog: 15482
> only in current/ChangeLog: 15484
> only in current/ChangeLog: 15485

Sven: long/short options thing.  Not necessary to backport this.
 
> only in current/ChangeLog: 15472

Bart: remove doc for change which never happened even on 4.1.
 
> only in current/ChangeLog: 15468

Sven: improve _ssh, probably not necessary.
 
> only in current/ChangeLog: 15432

Me: another bash function, not necessary.

> only in current/ChangeLog: 15389
> only in current/ChangeLog: 15407
> only in current/ChangeLog: 15409
> only in current/ChangeLog: 15415

Sven: long/short options complexity (15409 was a core dump), only 4.1.

> only in current/ChangeLog: 15327
> only in current/ChangeLog: 15329
> only in current/ChangeLog: 15334

Me: line numbering, thing we should steer clear of putting this into 4.0.
 
> only in current/ChangeLog: 15305

Bart: xtrace in zle funcs, probably unnecessary.
 
> only in current/ChangeLog: 15291, 15292
> only in current/ChangeLog: 15304

Me/Bart: fix `scalar=foo; (( scalar = 0 ))', too complicated to try to
backport.
 
> only in current/ChangeLog: 15288

Me: bash functions, not necessary.

> only in current/ChangeLog: 15278 (Sven), 15390

Sven: New file completion stuff, not necessary.

> only in current/ChangeLog: 15271

Bart: pcre, not necessary.
 
> only in current/ChangeLog: 15266

Me: wrong anyway.
 
> only in current/ChangeLog: 15265

Me: new `for' syntax, not necessary.
 
> only in current/ChangeLog: 15211
> only in current/ChangeLog: 15234
> only in current/ChangeLog: 15242
> only in current/ChangeLog: 15250

Clint: pcre, not necessary.
 
> only in current/ChangeLog: 15228

Clint: AC_CHECK_LIB -> AC_SEARCH_LIBS.  Best to leave this, I should
think.
 
> only in current/ChangeLog: 15169

Oliver/Me: I said explicitly I wouldn't put this in 4.0

> only in current/ChangeLog: 15123

Sven: _cd and _tilde, I'm sick of this, either we leave well alone or
copy the current versions straight back to 4.0.
 
> only in current/ChangeLog: 15087
> only in current/ChangeLog: 15115

Sven: handle disowning stopped jobs, new feature, probably leave out
though I don't think it's really a problem.
 
> only in current/ChangeLog: 15056

Bart: magic space change, deliberately left out, I believe.

> only in current/ChangeLog: 15030

Me: definitely non-POSIX for, not to go in.

> only in current/ChangeLog: 15029

Sven: _man improvements, probably too complicated.

> only in current/ChangeLog: 14952

Sven: zwc stuff, probably best left out.
 
> only in current/ChangeLog: 14939

Me: was complete crap.

> only in current/ChangeLog: 14931

Andrej: zftp, prresumably tcp.c-dependent.

> only in current/ChangeLog: 14915
> only in current/ChangeLog: 14929

Me: can't de-readonlify a special; make positional parameter arrays (but
not their elements) readonly.  Not to be put into 4.0.

-- 
Peter Stephenson <pws@pwstephenson.fsnet.co.uk>
Work: pws@csr.com
Web: http://www.pwstephenson.fsnet.co.uk


^ permalink raw reply	[relevance 4%]

* PATCH: arithmetic evaluation for printf
@ 2001-10-15 11:20  2% Oliver Kiddle
  2001-10-16 11:09  4% ` Oliver Kiddle
  0 siblings, 1 reply; 200+ results
From: Oliver Kiddle @ 2001-10-15 11:20 UTC (permalink / raw)
  To: zsh-workers

This is the next instalment of printf, the main addition being the use
of math evaluation for numeric arguments. Negative widths and
precisions are now properly handled.

I've only been able to test it where a zlong is a long long. Also, the
POSIX compliance related issues I mentioned last week apply. Should I
have used zhalloc for the char spec[11] and int flags[5] variables at
all?

And don't bother pointing out the resulting test failure in B03 - I
forgot the changed test file when I put this on a floppy at home
yesterday.

Oliver

Index: Doc/Zsh/builtins.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Zsh/builtins.yo,v
retrieving revision 1.38
diff -u -r1.38 builtins.yo
--- Doc/Zsh/builtins.yo	2001/10/08 10:47:47	1.38
+++ Doc/Zsh/builtins.yo	2001/10/15 11:13:21
@@ -732,8 +732,10 @@
 that allows it to be reused as shell input. With the numeric format
 specifiers, if the corresponding argument starts with a quote character,
 the numeric value of the following character is used as the number to
-print. With `tt(%n)', the corresponding argument is taken as an identifier
-which is created as an integer parameter.
+print otherwise the argument is evaluated as an arithmetic expression. See
+noderef(Arithmetic Evaluation) for a description of arithmetic
+expressions. With `tt(%n)', the corresponding argument is taken as an
+identifier which is created as an integer parameter.
 
 If arguments remain unused after formatting, the format string is reused
 until all arguments have been consumed. If more arguments are required by
Index: Src/builtin.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/builtin.c,v
retrieving revision 1.57
diff -u -r1.57 builtin.c
--- Src/builtin.c	2001/10/08 10:47:47	1.57
+++ Src/builtin.c	2001/10/15 11:13:22
@@ -2883,32 +2883,27 @@
 /* echo, print, printf, pushln */
 
 #define print_val(VAL) \
-  if (width >= 0) { \
-      if (prec >= 0) \
-	  count += fprintf(fout, start, width, prec, VAL); \
-      else \
-	  count += fprintf(fout, start, width, VAL); \
-  } else { \
-      if (prec >= 0) \
-	  count += fprintf(fout, start, prec, VAL); \
-      else \
-	  count += fprintf(fout, start, VAL); \
-  }
+    if (prec >= 0) \
+	count += fprintf(fout, spec, width, prec, VAL); \
+    else \
+	count += fprintf(fout, spec, width, VAL);
 
 /**/
 int
 bin_print(char *name, char **args, char *ops, int func)
 {
     int flen, width, prec, type, argc, n, nnl = 0, ret = 0;
-    int *len;
-    char *start, *endptr, *c, *fmt = NULL;
-    char **first, nullstr = '\0', save = '\0';
+    int flags[5], *len;
+    char *start, *endptr, *c, *d, *flag, spec[11], *fmt = NULL;
+    char **first, *flagch = "0+- #", save, nullstr = '\0';
     zlong count = 0;
     FILE *fout = stdout;
 
+    mnumber mnumval;
     double doubleval;
     int intval;
-    unsigned int uintval;
+    zlong zlongval;
+    zulong zulongval;
     char *stringval;
 
     if (func == BIN_PRINTF) auxdata = *args++;
@@ -2940,7 +2935,7 @@
     len = (int *) hcalloc(argc * sizeof(int));
     for(n = 0; n < argc; n++) {
 	/* first \ sequences */
-	if (fmt || !ops['e'] && (ops['R'] || ops['r'] || ops['E']))
+	if (fmt || (!ops['e'] && (ops['R'] || ops['r'] || ops['E'])))
 	    unmetafy(args[n], &len[n]);
 	else
 	    args[n] = getkeystring(args[n], &len[n], ops['b'] ? 2 :
@@ -3098,6 +3093,7 @@
     }
     
     /* printf style output */
+    *spec='%';
     do {
 	for (c = fmt;c-fmt < flen;c++) {
 	    if (*c != '%') {
@@ -3112,34 +3108,48 @@
 		++count;
 		continue;
 	    }
-	    type = prec = width = -1;
 
-	    if (strchr("+- #", *c)) c++;
+	    type = prec = -1;
+	    width = 0;
+	    d = spec + 1;
+
+	    /* copy only one of each flag as spec has finite size */
+	    memset(flags, 0, sizeof(flags));
+	    while (flag = strchr(flagch, *c)) {
+	    	if (!flags[flag - flagch]) {
+	    	    flags[flag - flagch] = 1;
+		    *d++ = *c;
+		}
+	    	c++;
+	    }
 
 	    if (*c == '*') {
-		width = (*args) ? strtoul(*args++, NULL, 0) : 0;
+		if (*args) width = (int)mathevali(*args++);
 		c++;
-	    } else {
-		while (idigit(*c)) c++;
+	    } else if (idigit(*c)) {
+		width = strtoul(c, &endptr, 0);
+		c = endptr;
 	    }
+	    *d++ = '*';
 
 	    if (*c == '.') {
 		c++;
 		if (*c == '*') {
-		    prec = (*args) ? strtoul(*args++, NULL, 0) : 0;
+		    prec = (*args) ? (int)mathevali(*args++) : 0;
 		    c++;
-		} else {
-		    while (idigit(*c)) c++;
+		} else if (idigit(*c)) {
+		    prec = strtoul(c, &endptr, 0);
+		    c = endptr;
 		}
+		if (prec >= 0) *d++ = '.', *d++ = '*';
 	    }
 
+	    /* ignore any size modifier */
 	    if (*c == 'l' || *c == 'L' || *c == 'h') c++;
 
-	    if (*c) {
-		save = c[1];
-		c[1] = '\0';
-	    }
-	    switch (*c) {
+	    errflag = 0;
+	    d[1] = '\0';
+	    switch (*d = *c) {
 	    case 'c':
 		if (*args) {
 		    intval = **args;
@@ -3162,7 +3172,7 @@
 		break;
 	    case 'q':
 		stringval = *args ? bslashquote(*args++, NULL, 0) : &nullstr;
-		*c = 's';
+		*d = 's';
 		print_val(stringval);
 		break;
 	    case 'd':
@@ -3186,50 +3196,65 @@
 		if (*args) setiparam(*args++, count);
 		break;
 	    default:
-		zerrnam(name, "%s: invalid directive", start, 0);
+	        if (*c) {
+		    save = c[1];
+	            c[1] = '\0';
+		}
+		zwarnnam(name, "%s: invalid directive", start, 0);
 		ret = 1;
+		if (*c) c[1] = save;
 	    }
 
 	    if (type > 0) {
 		if (*args && (**args == '\'' || **args == '"' )) {
 		    if (type == 2) {
-			doubleval = (*args)[1];
+			doubleval = (unsigned char)(*args)[1];
 			print_val(doubleval);
 		    } else {
-			intval = (*args)[1];
+			intval = (unsigned char)(*args)[1];
 			print_val(intval);
 		    }
 		    args++;
 		} else {
 		    switch (type) {
 		    case 1:
-			intval = (*args) ? strtol(*args, &endptr, 0) : 0;
-			print_val(intval);
+#ifdef ZSH_64_BIT_TYPE
+ 		    	*d++ = 'l';
+#endif
+		    	*d++ = 'l', *d++ = *c, *d = '\0';
+			zlongval = (*args) ? mathevali(*args++) : 0;
+			if (errflag) {
+			    zlongval = 0;
+			    errflag = 0;
+			}
+			print_val(zlongval)
 			break;
 		    case 2:
-			doubleval = (*args) ? strtod(*args, &endptr) : 0;
-			print_val(doubleval);
+			if (*args) {
+			    mnumval = matheval(*args++);
+			    doubleval = (mnumval.type & MN_FLOAT) ?
+			    	mnumval.u.d : (double)mnumval.u.l;
+			} else doubleval = 0;
+			if (errflag) {
+			    doubleval = 0;
+			    errflag = 0;
+			}
+			print_val(doubleval)
 			break;
 		    case 3:
-			uintval = (*args) ? strtoul(*args, &endptr, 0) : 0;
-			print_val(uintval);
-		    }
-		    if (*args) {
-			if (errno == ERANGE) {
-			    zerrnam(name, "`%s' arithmetic overflow", *args, 0);
-			    ret = 1;
-			} else if (**args && endptr == *args) {
-			    zerrnam(name, "`%s' expected numeric value", endptr, 0);
-			    ret = 1;
-			} else if (*endptr) {
-			    zerrnam(name, "`%s' not completely converted", *args, 0);
-			    ret = 1;
+#ifdef ZSH_64_BIT_TYPE
+ 		    	*d++ = 'l';
+#endif
+		    	*d++ = 'l', *d++ = *c, *d = '\0';
+			zulongval = (*args) ? mathevali(*args++) : 0;
+			if (errflag) {
+			    doubleval = 0;
+			    errflag = 0;
 			}
-			args++;
+			print_val(zulongval)
 		    }
 		}
 	    }
-	    if (*c) c[1] = save;
 	}
 
     /* if there are remaining args, reuse format string */

_____________________________________________________________________
This message has been checked for all known viruses by the 
MessageLabs Virus Scanning Service. For further information visit
http://www.messagelabs.com/stats.asp


^ permalink raw reply	[relevance 2%]

* behaviour of %q format specifier
@ 2001-10-15 11:52  9% Oliver Kiddle
  0 siblings, 0 replies; 200+ results
From: Oliver Kiddle @ 2001-10-15 11:52 UTC (permalink / raw)
  To: zsh-workers

In ksh, the %q printf format specifier will put posix quotes around
strings containing non-printable characters. Bash doesn't. The
following patch would add this to zsh. I'm slightly unsure about this
though - it wouldn't be necessary if the string is then passed through
eval (probably the only use of %q) and it is inconsistent with the q
history modifier and parameter expansion flag.

Any thoughts? Should I apply this or not, or something different?

Oliver

Index: Src/builtin.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/builtin.c,v
retrieving revision 1.58
diff -u -r1.58 builtin.c
--- Src/builtin.c	2001/10/15 11:34:27	1.58
+++ Src/builtin.c	2001/10/15 11:47:48
@@ -3171,7 +3171,7 @@
 		}
 		break;
 	    case 'q':
-		stringval = *args ? bslashquote(*args++, NULL, 0) : &nullstr;
+		stringval = *args ? bslashquote(*args++, NULL, 4) : &nullstr;
 		*d = 's';
 		print_val(stringval);
 		break;
Index: Src/utils.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/utils.c,v
retrieving revision 1.35
diff -u -r1.35 utils.c
--- Src/utils.c	2001/06/15 23:55:08	1.35
+++ Src/utils.c	2001/10/15 11:47:48
@@ -2929,8 +2929,10 @@
  * pointer it points to may point to a position in s and in e the position  *
  * of the corresponding character in the quoted string is returned.         *
  * The last argument should be zero if this is to be used outside a string, *
- * one if it is to be quoted for the inside of a single quoted string, and  *
- * two if it is for the inside of  double quoted string.                    *
+ * one if it is to be quoted for the inside of a single quoted string,      *
+ * two if it is for the inside of double quoted string, and                 *
+ * three if it is for the inside of a posix quoted string, and              *
+ * four if posix quotes should be added if s contains non-printable chars   *
  * The string may be metafied and contain tokens.                           */
 
 /**/
@@ -2939,15 +2941,24 @@
 {
     const char *u, *tt;
     char *v;
-    char *buf = hcalloc(4 * strlen(s) + 1);
+    char *buf = hcalloc(4 * strlen(s) + 4);
     int sf = 0;
 
+    if (instring == 4) {
+    	instring = 0;
+    	for (u=s;*u;u++)
+    	    if (!isprint((*u == Meta) ? *++u ^ 32 : *u)) {
+	    	instring = 4;
+		buf += 2;
+		break;
+	    }
+    }
     tt = v = buf;
     u = s;
     for (; *u; u++) {
 	if (e && *e == u)
 	    *e = v, sf = 1;
-	if (instring == 3) {
+	if (instring >= 3) {
 	  int c = *u;
 	  if (c == Meta) {
 	    c = *++u ^ 32;
@@ -3065,6 +3076,11 @@
 	if(*u == Meta)
 	    *v++ = *u++;
 	*v++ = *u;
+    }
+    if (instring == 4) {
+    	/* enclose buf in $'...' */
+    	*v++ = *--buf = '\'';
+	*--buf = '$';
     }
     *v = '\0';

_____________________________________________________________________
This message has been checked for all known viruses by the 
MessageLabs Virus Scanning Service. For further information visit
http://www.messagelabs.com/stats.asp


^ permalink raw reply	[relevance 9%]

* Re: questions - calling matheval() for printf
  2001-10-12 14:03  3% questions - calling matheval() for printf Oliver Kiddle
@ 2001-10-15 12:54  3% ` Peter Stephenson
  2001-10-15 17:11  2%   ` Oliver Kiddle
  0 siblings, 1 reply; 200+ results
From: Peter Stephenson @ 2001-10-15 12:54 UTC (permalink / raw)
  To: Zsh hackers list

Sorry I didn't reply to this (the bits Bart didn'g) earlier...

Oliver Kiddle wrote:
> argument	stdout		stderr
> 5a		5		printf: "5a" not completely converted
> 
> In the first case, the different error message doesn't worry me but
> math evaluation doesn't return `5'. It is conceivable that someone
> relies on this in a script, passing a string starting with a number and
> redirecting stderr. I could successively chop characters off the right
> of the string until matheval returns without an error. This would need
> a hack to avoid repeated error messages from matheval(). Any other,
> perhaps better suggestions?

If we need this, it would be better to hack matheval to give it an option
to stop and return a pointer to the end, just like strtol().  But I don't
think we need to adhere to POSIX printf semantics that closely.  I'd be
more interested in what other shells do.

> Is there any way I can find out when arithmetic overflows have occurred
> for the second and third cases? matheval() just allows the numbers to
> wrap?

Again, this would be more work and I'm not sure it's worth it in a shell.

> Can a 64-bit integer be something other than long long? It seems I only
> have ZSH_64_BIT_TYPE to check and it might need a different format
> specifier for printf(3) if this is something other than long long.

On Alpha, it will normally be long rather than long long.  However, I
compiled sizeof(long long) with gcc on the Alpha at Sourceforge, and that
seems to be 64-bit too.  I don't think it's a good idea to rely on that,
though --- there's no standard for such things.

Can we make %q do just the same as what ${(q)foo} would do?

-- 
Peter Stephenson <pws@csr.com>                  Software Engineer
CSR Ltd., Science Park, Milton Road,
Cambridge, CB4 0WH, UK                          Tel: +44 (0)1223 392070


**********************************************************************
The information transmitted is intended only for the person or
entity to which it is addressed and may contain confidential 
and/or privileged material. 
Any review, retransmission, dissemination or other use of, or
taking of any action in reliance upon, this information by 
persons or entities other than the intended recipient is 
prohibited.  
If you received this in error, please contact the sender and 
delete the material from any computer.
**********************************************************************


^ permalink raw reply	[relevance 3%]

* Re: questions - calling matheval() for printf
  2001-10-15 12:54  3% ` Peter Stephenson
@ 2001-10-15 17:11  2%   ` Oliver Kiddle
  0 siblings, 0 replies; 200+ results
From: Oliver Kiddle @ 2001-10-15 17:11 UTC (permalink / raw)
  To: Zsh hackers list

Peter Stephenson wrote:
> 
> Sorry I didn't reply to this (the bits Bart didn'g) earlier...

Thanks. I've got another question here I'm afraid.

> If we need this, it would be better to hack matheval to give it an option
> to stop and return a pointer to the end, just like strtol().  But I don't
> think we need to adhere to POSIX printf semantics that closely.  I'd be
> more interested in what other shells do.

Ksh handles things in the way that zsh perhaps ideally should:

$ printf '%d\n' 4a
ksh: printf: 4a: arithmetic syntax error
ksh: printf: warning: invalid argument of type d
4
$ printf '%d\n' 123456789012
ksh: printf: warning: 123456789012: overflow exception
2147483647

(though I see no need for two error messages in the first case)

Bash produces an error in each case though it fails to output 4 and max
int respectively as POSIX stipulates. Note that bash doesn't attempt
arithmetic evaluation here.

> > Can a 64-bit integer be something other than long long? It seems I only
> > have ZSH_64_BIT_TYPE to check and it might need a different format
> > specifier for printf(3) if this is something other than long long.
> 
> On Alpha, it will normally be long rather than long long.  However, I
> compiled sizeof(long long) with gcc on the Alpha at Sourceforge, and that

I'll do a bit of testing on Sourceforge then. Thanks.

> Can we make %q do just the same as what ${(q)foo} would do?

Yes. That is what it does at the moment so I'll just ditch the patch.

I have below another experimental feature. This allows the argument to
be specified in the format in much the same way as is possible with
printf(3). e.g:

printf '%2$s %s %1$s\n' World Good Morning

will print `Good Morning World'

Note that glibc's printf(3) would print `Good Good World' for this but
it seems to be the exception.

The question is how should this interact with the printf(1) feature of
reusing the format if more arguments remain. The easy answer would be
to not reuse the format if this feature had been used. As an
experiment, I've made it remove all arguments up to the last one used.
This allows interesting things like:

% printf '%2$s %1$s ' 1 2 3 4 5 6 ;echo
2 1 4 3 6 5

I can see this having some uses but I can also see it being a problem
as this is likely to be used for picking out fields where the arguments
are some command in $(...). A possibly quite good option would be an
option to print to disable format reuse (in which case any suggestion
on the choice of option letter?). Any other ideas on this?

Note that there is no ksh precedent here as ksh seg faults if you give
it these argument specifiers (I've got a lot of bug reporting to do
when I finish this).

If you try the patch, be aware that things may go awry if you try
specifying widths and precisions.

Oliver

Index: Src/builtin.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/builtin.c,v
retrieving revision 1.58
diff -u -r1.58 builtin.c
--- Src/builtin.c	2001/10/15 11:34:27	1.58
+++ Src/builtin.c	2001/10/15 16:54:35
@@ -2892,7 +2892,8 @@
 int
 bin_print(char *name, char **args, char *ops, int func)
 {
-    int flen, width, prec, type, argc, n, nnl = 0, ret = 0;
+    int flen, width, prec, type, argc, n, gotwidth;
+    int nnl = 0, ret = 0, maxarg = 0;
     int flags[5], *len;
     char *start, *endptr, *c, *d, *flag, spec[11], *fmt = NULL;
     char **first, *flagch = "0+- #", save, nullstr = '\0';
@@ -3095,6 +3096,11 @@
     /* printf style output */
     *spec='%';
     do {
+    	if (maxarg) {
+	    first += maxarg;
+	    argc -= maxarg;
+    	    maxarg = 0;
+	}
 	for (c = fmt;c-fmt < flen;c++) {
 	    if (*c != '%') {
 		putc(*c, fout);
@@ -3110,7 +3116,7 @@
 	    }
 
 	    type = prec = -1;
-	    width = 0;
+	    width = gotwidth = 0;
 	    d = spec + 1;
 
 	    /* copy only one of each flag as spec has finite size */
@@ -3123,13 +3129,32 @@
 	    	c++;
 	    }
 
-	    if (*c == '*') {
-		if (*args) width = (int)mathevali(*args++);
-		c++;
-	    } else if (idigit(*c)) {
+	    if (idigit(*c)) {
 		width = strtoul(c, &endptr, 0);
 		c = endptr;
+		if (*c == '$') {
+		    DPUTS(width <= 0, "specified zero or negative arg");
+		    if (width > argc) {
+		    	zwarnnam(name, "%d: argument specifier out of range",
+			    0, width);
+			ret = 1;
+		    } else {
+		    	if (width > maxarg) maxarg = width;
+		    	args = first + width - 1;
+		    }
+		    if (idigit(*++c)) {
+		    	width = strtoul(c, &endptr, 0);
+			c = endptr;
+			gotwidth = 1;
+		    } else
+		    	width = 0;
+		} else
+		    gotwidth = 1;
 	    }
+	    if (!gotwidth && *c == '*') {
+		if (*args) width = (int)mathevali(*args++);
+		c++;
+	    }
 	    *d++ = '*';
 
 	    if (*c == '.') {
@@ -3224,7 +3249,7 @@
 		    	*d++ = 'l', *d++ = *c, *d = '\0';
 			zlongval = (*args) ? mathevali(*args++) : 0;
 			if (errflag) {
-			    zlongval = 0;
+			    doubleval = 0;
 			    errflag = 0;
 			}
 			print_val(zlongval)
@@ -3255,8 +3280,11 @@
 		    }
 		}
 	    }
+	    if (maxarg && (args - first > maxarg))
+	    	maxarg = args - first;
 	}
 
+    	if (maxarg) args = first + maxarg;
     /* if there are remaining args, reuse format string */
     } while (*args && args != first);

_____________________________________________________________________
This message has been checked for all known viruses by the 
MessageLabs Virus Scanning Service. For further information visit
http://www.messagelabs.com/stats.asp


^ permalink raw reply	[relevance 2%]

* Re: PATCH: arithmetic evaluation for printf
  2001-10-15 11:20  2% PATCH: arithmetic evaluation for printf Oliver Kiddle
@ 2001-10-16 11:09  4% ` Oliver Kiddle
  0 siblings, 0 replies; 200+ results
From: Oliver Kiddle @ 2001-10-16 11:09 UTC (permalink / raw)
  To: zsh-workers

I wrote:
> 
> I've only been able to test it where a zlong is a long long.

It is fine where zlong is a long and where long is 64 bits such as the
alpha on sourceforge. Problems might arise if the 64 bit type is
anything else but I can't see anything in zshconfig.ac to indicate that
that is yet the case anywhere (it only tries long and long long).

> And don't bother pointing out the resulting test failure in B03 - I
> forgot the changed test file when I put this on a floppy at home
> yesterday.

The changed test file is below. I also forgot to make it return 1 after
math errors so that fix is also below. The comment above bslashquote()
in utils.c was incomplete so even though I'm ditching the changes to
that function, I'll bring the comment up-to-date.

Oliver

Index: Src/builtin.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/builtin.c,v
retrieving revision 1.58
diff -u -r1.58 builtin.c
--- Src/builtin.c	2001/10/15 11:34:27	1.58
+++ Src/builtin.c	2001/10/16 11:05:32
@@ -3125,6 +3125,10 @@
 
 	    if (*c == '*') {
 		if (*args) width = (int)mathevali(*args++);
+		if (errflag) {
+	    	    errflag = 0;
+		    ret = 1;
+		}
 		c++;
 	    } else if (idigit(*c)) {
 		width = strtoul(c, &endptr, 0);
@@ -3136,6 +3140,10 @@
 		c++;
 		if (*c == '*') {
 		    prec = (*args) ? (int)mathevali(*args++) : 0;
+		    if (errflag) {
+	    	    	errflag = 0;
+			ret = 1;
+		    }
 		    c++;
 		} else if (idigit(*c)) {
 		    prec = strtoul(c, &endptr, 0);
@@ -3147,7 +3155,6 @@
 	    /* ignore any size modifier */
 	    if (*c == 'l' || *c == 'L' || *c == 'h') c++;
 
-	    errflag = 0;
 	    d[1] = '\0';
 	    switch (*d = *c) {
 	    case 'c':
@@ -3226,6 +3233,7 @@
 			if (errflag) {
 			    zlongval = 0;
 			    errflag = 0;
+			    ret = 1;
 			}
 			print_val(zlongval)
 			break;
@@ -3238,11 +3246,12 @@
 			if (errflag) {
 			    doubleval = 0;
 			    errflag = 0;
+			    ret = 1;
 			}
 			print_val(doubleval)
 			break;
 		    case 3:
-#ifdef ZSH_64_BIT_TYPE
+#ifdef ZSH_64_BIT_UTYPE
  		    	*d++ = 'l';
 #endif
 		    	*d++ = 'l', *d++ = *c, *d = '\0';
@@ -3250,6 +3259,7 @@
 			if (errflag) {
 			    doubleval = 0;
 			    errflag = 0;
+			    ret = 1;
 			}
 			print_val(zulongval)
 		    }
Index: Src/utils.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/utils.c,v
retrieving revision 1.35
diff -u -r1.35 utils.c
--- Src/utils.c	2001/06/15 23:55:08	1.35
+++ Src/utils.c	2001/10/16 11:05:32
@@ -2929,8 +2929,9 @@
  * pointer it points to may point to a position in s and in e the position  *
  * of the corresponding character in the quoted string is returned.         *
  * The last argument should be zero if this is to be used outside a string, *
- * one if it is to be quoted for the inside of a single quoted string, and  *
- * two if it is for the inside of  double quoted string.                    *
+ * one if it is to be quoted for the inside of a single quoted string,      *
+ * two if it is for the inside of a double quoted string, and               *
+ * three if it is for the inside of a posix quoted string.                  *
  * The string may be metafied and contain tokens.                           */
 
 /**/
Index: Test/B03print.ztst
===================================================================
RCS file: /cvsroot/zsh/zsh/Test/B03print.ztst,v
retrieving revision 1.1
diff -u -r1.1 B03print.ztst
--- Test/B03print.ztst	2001/10/08 10:47:47	1.1
+++ Test/B03print.ztst	2001/10/16 11:05:32
@@ -78,6 +78,10 @@
 0:initial quote to get numeric value of character with double
 >6.6E+01
 
+ printf '%x\n' $(printf '"\xf0')
+0:numeric value of high numbered character
+>f0
+
 # code will probably be changed to print the literal `%s' in this case
  printf '\x25s\n' arg
 0:using \x25 to introduce a format specifier
@@ -95,24 +99,15 @@
 0:width/precision specified in arguments
 > 10.20
 
- printf '%d\n' 3000000000
-1d:out of range numeric result
-?(eval):printf:1: `3000000000' arithmetic overflow
-
- printf '%G\n' letters
-1:non numeric argument
-?(eval):printf:1: `letters' expected numeric value
->0
-
- print -f '%d\n' 2e4
-1:letters in numeric argument
-?(eval):print:1: `2e4' not completely converted
->2
-
  printf '%z'
-1:test invalid directive
+1:use of invalid directive
 ?(eval):printf:1: %z: invalid directive
 
+ printf '%d\n' 3a
+1:bad arithmetic expression
+?(eval):1: bad math expression: operator expected at `a'
+>0
+
  print -m -f 'format - %s.\n' 'z' a b c
 0:format not printed if no arguments left after -m removal
 
@@ -133,3 +128,15 @@
 >one	a:0x1%
 >two	b:0x2%
 >three	c:0x3%
+
+ printf '%0+- #-08.5dx\n' 123
+0:maximal length format specification
+>+00123  x
+
+ printf '%*smorning\n' -5 good
+0:negative width specified
+>good morning
+
+ printf '%.*g\n' -1 .1
+0:negative precision specified
+>0.1

_____________________________________________________________________
This message has been checked for all known viruses by the 
MessageLabs Virus Scanning Service. For further information visit
http://www.messagelabs.com/stats.asp


^ permalink raw reply	[relevance 4%]

* Re: differences between the two branches
  2000-10-14 19:02  4% ` Peter Stephenson
@ 2001-10-16 17:08  2%   ` Bart Schaefer
  0 siblings, 0 replies; 200+ results
From: Bart Schaefer @ 2001-10-16 17:08 UTC (permalink / raw)
  To: zsh-workers

} Could go if not too much work
} ============================
} 
} > only in current/ChangeLog: 15812
} > only in current/ChangeLog: 15702
} > only in current/ChangeLog: 15676
} > only in current/ChangeLog: 15488
} > only in current/ChangeLog: 15375
} > only in current/ChangeLog: 15057
} > only in current/ChangeLog: 15023, 15027
} > only in current/ChangeLog: 15038

I've patched in all of these, run "make" and "make check", and fixed up
a few problems (like "ZTST_execchunk" instead of "(eval)" in some of
the tests).

Given the difflog script, which I think I'll commit in Util/ on the trunk
if no one objects, I decided to lump all the log entries under today's
date-stamp; I can spread them around later if we think that's the right
way to go.

I did find a couple of minor problems:  Test/Y0* don't abort following
a failure in the %prep section, rather they go on and fail at the first
test.  They report a failure of %prep, but don't stop.  I haven't done
anything about that yet, but if/when it's fixed, there are couple of
small tweaks needed to Test/Y0*.

} > only in current/ChangeLog: 15354
} 
} Bart: Doc indexing, useful but I don't know how hard this is to transfer.

This looks a bit icky because it's so many files.  I'll commit what I
have so far and then see if this will apply as a patch; there are too
many files to try using ediff.

} My brain hurts just thinking about it
} =====================================
} 
} > only in current/ChangeLog: 15836
} > only in current/ChangeLog: 15806
} > only in current/ChangeLog: 15809
} 
} Wayne: `r' problem reported by Bart.  Dunno if this was in 4.0.

This was in every version of zsh back to before 2.xx, as I recall.  It
should go in if possible.

} > only in current/ChangeLog: 15198
} 
} Bart: _tilde return value, OK if applicable, but may well not be.

I put it in, though it had to change very slightly.  It's not as important
in 4.0 because _cd doesn't call _tilde, but it was still wrong as it was.
 
} > only in current/ChangeLog: 15060
} 
} Bart: A02alias: can't keep track of whether this applies or not.

There are two entries for 15060:

	* 15060: Test/A02alias.ztst: Change expected return value to
	account for 15050.

	* 15060: Test/Y01completion.ztst, Test/Y02compmatch.ztst,
	Test/Y03arguments.ztst, Test/comptest: Abandon the tests during
	the %prep section if the zpty module can't be loaded.	

The second one applies (it had to, in order for 15676 to apply), but the
first one only applies if:
 
} > only in current/ChangeLog: 15050, 15054
} 
} Bart: POSIX exit statuses.  Change of behaviour, so not sure.

These I didn't put in, so I didn't put in the first part of 15060 either.

-- 
Bart Schaefer                                 Brass Lantern Enterprises
http://www.well.com/user/barts              http://www.brasslantern.com

Zsh: http://www.zsh.org | PHPerl Project: http://phperl.sourceforge.net   


^ permalink raw reply	[relevance 2%]

* PATCH: specifying arguments in printf formats
@ 2001-10-18 14:15  2% Oliver Kiddle
  0 siblings, 0 replies; 200+ results
From: Oliver Kiddle @ 2001-10-18 14:15 UTC (permalink / raw)
  To: zsh-workers

This patch now adds the feature I mentioned before where arguments can
be specified with conversion specifications like '%1$*2$.*3$d'  instead
of using arguments in order.

You shouldn't mix the two styles of specifying arguments - I recommend
against it in the manual which is the same as the case with printf(3).
If you do mix them, it will work but I may change the exact semantics
if it allows me to improve the code.

Peter Stephenson wrote:
> 
> Oliver Kiddle wrote:
> > The question is how should this interact with the printf(1) feature of
> > reusing the format if more arguments remain. The easy answer would be
> > to not reuse the format if this feature had been used. As an
> > experiment, I've made it remove all arguments up to the last one used.
> > This allows interesting things like:
> >
> > % printf '%2$s %1$s ' 1 2 3 4 5 6 ;echo
> > 2 1 4 3 6 5
> >
> > I can see this having some uses but I can also see it being a problem
> > as this is likely to be used for picking out fields where the arguments
> > are some command in $(...).
> 
> Even in that case, the problem is really with the reuse of the format,
> rather than the special argument-picking syntax.  Maybe it would be best to
> have a command-line option to turn it (the reuse of the format specifier,
> that is) off --- or even on, since it might be regarded as a little florid
> for default behaviour.  But I suppose we're going to have to stick with ksh
> if we're trying to match it.

Reuse of arguments is defined in POSIX so it isn't ksh I'm matching
there. And, this new argument specifying feature is not in ksh.

I've decided that an option as Peter suggests is the best way to go
here. It'll have to turn reuse off so that we are keeping to POSIX/ksh
which is a slight pity as the opposite would perhaps be better.

Any good suggestions on the choice of option letter? -r and -R (for
reuse) are both gone but we want to indicate the opposite of that
anyway.

For the moment, you can use -r but I've not documented that and will
change it later. For ksh compatibility, -r can't be used with -f but
I'll probably suggest that be changed on the shell list.

Oliver

Index: Doc/Zsh/builtins.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Zsh/builtins.yo,v
retrieving revision 1.39
diff -u -r1.39 builtins.yo
--- Doc/Zsh/builtins.yo	2001/10/15 11:34:27	1.39
+++ Doc/Zsh/builtins.yo	2001/10/18 14:11:41
@@ -725,9 +725,9 @@
 item(tt(printf) var(format) [ var(arg) ... ])(
 Print the arguments according to the format specification. Formatting
 rules are the same as used in C. The same escape sequences as for tt(echo)
-are recognised in the format. All C format specifications ending in one of
-csdiouxXeEfgGn are handled. In addition to this, `tt(%b)' can be used
-instead of `tt(%s)' to cause escape sequences in the argument to be
+are recognised in the format. All C conversion specifications ending in
+one of csdiouxXeEfgGn are handled. In addition to this, `tt(%b)' can be
+used instead of `tt(%s)' to cause escape sequences in the argument to be
 recognised and `tt(%q)' can be used to quote the argument in such a way
 that allows it to be reused as shell input. With the numeric format
 specifiers, if the corresponding argument starts with a quote character,
@@ -736,6 +736,13 @@
 noderef(Arithmetic Evaluation) for a description of arithmetic
 expressions. With `tt(%n)', the corresponding argument is taken as an
 identifier which is created as an integer parameter.
+
+Normally, conversion specifications are applied to each argument in order
+but they can explicitly specify the var(n)th argument is to be used by
+replacing `tt(%)' by `tt(%)var(n)tt($)' and `tt(*)' by `tt(*)var(n)tt($)'.
+It is recommended that you do not mix references of this explicit style
+with the normal style and the handling of such mixed styles may be subject
+to future change.
 
 If arguments remain unused after formatting, the format string is reused
 until all arguments have been consumed. If more arguments are required by
Index: Src/builtin.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/builtin.c,v
retrieving revision 1.59
diff -u -r1.59 builtin.c
--- Src/builtin.c	2001/10/16 11:16:11	1.59
+++ Src/builtin.c	2001/10/18 14:11:41
@@ -2892,10 +2892,11 @@
 int
 bin_print(char *name, char **args, char *ops, int func)
 {
-    int flen, width, prec, type, argc, n, nnl = 0, ret = 0;
+    int flen, width, prec, type, argc, n, narg;
+    int nnl = 0, ret = 0, maxarg = 0;
     int flags[5], *len;
     char *start, *endptr, *c, *d, *flag, spec[11], *fmt = NULL;
-    char **first, *flagch = "0+- #", save, nullstr = '\0';
+    char **first, *curarg, *flagch = "0+- #", save, nullstr = '\0';
     zlong count = 0;
     FILE *fout = stdout;
 
@@ -3095,6 +3096,11 @@
     /* printf style output */
     *spec='%';
     do {
+    	if (maxarg) {
+	    first += maxarg;
+	    argc -= maxarg;
+    	    maxarg = 0;
+	}
 	for (c = fmt;c-fmt < flen;c++) {
 	    if (*c != '%') {
 		putc(*c, fout);
@@ -3111,11 +3117,29 @@
 
 	    type = prec = -1;
 	    width = 0;
+	    curarg = NULL;
 	    d = spec + 1;
 
+	    if (*c >= '1' && *c <= '9') {
+	    	narg = strtoul(c, &endptr, 0);
+		if (*endptr == '$') {
+		    c = endptr + 1;
+		    DPUTS(narg <= 0, "specified zero or negative arg");
+		    if (narg > argc) {
+		    	zwarnnam(name, "%d: argument specifier out of range",
+			    0, narg);
+			return 1;
+		    } else {
+		    	if (narg > maxarg) maxarg = narg;
+		    	curarg = *(first + narg - 1);
+		    }
+		}
+	    }
+		    
+	    
 	    /* copy only one of each flag as spec has finite size */
 	    memset(flags, 0, sizeof(flags));
-	    while (flag = strchr(flagch, *c)) {
+	    while ((flag = strchr(flagch, *c))) {
 	    	if (!flags[flag - flagch]) {
 	    	    flags[flag - flagch] = 1;
 		    *d++ = *c;
@@ -3123,28 +3147,60 @@
 	    	c++;
 	    }
 
-	    if (*c == '*') {
-		if (*args) width = (int)mathevali(*args++);
-		if (errflag) {
-	    	    errflag = 0;
-		    ret = 1;
-		}
-		c++;
-	    } else if (idigit(*c)) {
+	    if (idigit(*c)) {
 		width = strtoul(c, &endptr, 0);
 		c = endptr;
+	    } else if (*c == '*') {
+		if (idigit(*++c)) {
+		    narg = strtoul(c, &endptr, 0);
+		    if (*endptr == '$') {
+		    	c = endptr + 1;
+			if (narg > argc || narg <= 0) {
+		    	    zwarnnam(name,
+			    	"%d: argument specifier out of range",
+				0, narg);
+			    return 1;
+			} else {
+		    	    if (narg > maxarg) maxarg = narg;
+		    	    args = first + narg - 1;
+			}
+		    }
+		}
+		if (*args) {
+		    width = (int)mathevali(*args++);
+		    if (errflag) {
+			errflag = 0;
+			ret = 1;
+		    }
+		}
 	    }
 	    *d++ = '*';
 
 	    if (*c == '.') {
-		c++;
-		if (*c == '*') {
-		    prec = (*args) ? (int)mathevali(*args++) : 0;
-		    if (errflag) {
-	    	    	errflag = 0;
-			ret = 1;
+		if (*++c == '*') {
+		    if (idigit(*++c)) {
+			narg = strtoul(c, &endptr, 0);
+			if (*endptr == '$') {
+			    c = endptr + 1;
+			    if (narg > argc || narg <= 0) {
+		    		zwarnnam(name,
+				    "%d: argument specifier out of range",
+				    0, narg);
+				return 1;
+			    } else {
+		    		if (narg > maxarg) maxarg = narg;
+		    		args = first + narg - 1;
+			    }
+			}
+		    }
+		    
+		    if (*args) {
+			prec = (int)mathevali(*args++);
+			if (errflag) {
+			    errflag = 0;
+			    ret = 1;
+			}
 		    }
-		    c++;
 		} else if (idigit(*c)) {
 		    prec = strtoul(c, &endptr, 0);
 		    c = endptr;
@@ -3155,30 +3211,30 @@
 	    /* ignore any size modifier */
 	    if (*c == 'l' || *c == 'L' || *c == 'h') c++;
 
+	    if (!curarg && *args) curarg = *args++;
 	    d[1] = '\0';
 	    switch (*d = *c) {
 	    case 'c':
-		if (*args) {
-		    intval = **args;
-		    args++;
+		if (curarg) {
+		    intval = *curarg;
 		} else
 		    intval = 0;
 		print_val(intval);
 		break;
 	    case 's':
-		stringval = *args ? *args++ : &nullstr;
+		stringval = curarg ? curarg : &nullstr;
 		print_val(stringval);
 		break;
 	    case 'b':
-		if (*args) {
+		if (curarg) {
 		    int l;
-		    char *b = getkeystring(*args++, &l, ops['b'] ? 2 : 0, &nnl);
+		    char *b = getkeystring(curarg, &l, ops['b'] ? 2 : 0, &nnl);
 		    fwrite(b, l, 1, fout);
 		    count += l;
 		}
 		break;
 	    case 'q':
-		stringval = *args ? bslashquote(*args++, NULL, 0) : &nullstr;
+		stringval = curarg ? bslashquote(curarg, NULL, 0) : &nullstr;
 		*d = 's';
 		print_val(stringval);
 		break;
@@ -3200,7 +3256,7 @@
 		type=3;
 		break;
 	    case 'n':
-		if (*args) setiparam(*args++, count);
+		if (curarg) setiparam(curarg, count);
 		break;
 	    default:
 	        if (*c) {
@@ -3208,20 +3264,21 @@
 	            c[1] = '\0';
 		}
 		zwarnnam(name, "%s: invalid directive", start, 0);
-		ret = 1;
 		if (*c) c[1] = save;
+		if (fout != stdout)
+		    fclose(fout);
+		return 1;
 	    }
 
 	    if (type > 0) {
-		if (*args && (**args == '\'' || **args == '"' )) {
+		if (curarg && (*curarg == '\'' || *curarg == '"' )) {
 		    if (type == 2) {
-			doubleval = (unsigned char)(*args)[1];
+			doubleval = (unsigned char)curarg[1];
 			print_val(doubleval);
 		    } else {
-			intval = (unsigned char)(*args)[1];
+			intval = (unsigned char)curarg[1];
 			print_val(intval);
 		    }
-		    args++;
 		} else {
 		    switch (type) {
 		    case 1:
@@ -3229,7 +3286,7 @@
  		    	*d++ = 'l';
 #endif
 		    	*d++ = 'l', *d++ = *c, *d = '\0';
-			zlongval = (*args) ? mathevali(*args++) : 0;
+			zlongval = (curarg) ? mathevali(curarg) : 0;
 			if (errflag) {
 			    zlongval = 0;
 			    errflag = 0;
@@ -3238,8 +3295,8 @@
 			print_val(zlongval)
 			break;
 		    case 2:
-			if (*args) {
-			    mnumval = matheval(*args++);
+			if (curarg) {
+			    mnumval = matheval(curarg);
 			    doubleval = (mnumval.type & MN_FLOAT) ?
 			    	mnumval.u.d : (double)mnumval.u.l;
 			} else doubleval = 0;
@@ -3255,9 +3312,9 @@
  		    	*d++ = 'l';
 #endif
 		    	*d++ = 'l', *d++ = *c, *d = '\0';
-			zulongval = (*args) ? mathevali(*args++) : 0;
+			zulongval = (curarg) ? mathevali(curarg) : 0;
 			if (errflag) {
-			    doubleval = 0;
+			    zulongval = 0;
 			    errflag = 0;
 			    ret = 1;
 			}
@@ -3265,10 +3322,13 @@
 		    }
 		}
 	    }
+	    if (maxarg && (args - first > maxarg))
+	    	maxarg = args - first;
 	}
 
+    	if (maxarg) args = first + maxarg;
     /* if there are remaining args, reuse format string */
-    } while (*args && args != first);
+    } while (*args && args != first && !ops['r']);
 
     if (fout != stdout)
 	fclose(fout);
Index: Test/B03print.ztst
===================================================================
RCS file: /cvsroot/zsh/zsh/Test/B03print.ztst,v
retrieving revision 1.2
diff -u -r1.2 B03print.ztst
--- Test/B03print.ztst	2001/10/16 11:16:11	1.2
+++ Test/B03print.ztst	2001/10/18 14:11:41
@@ -50,7 +50,9 @@
 0:test b format specifier
 >	\
 
-# test %q here - it doesn't quite work yet
+ printf '%q\n' '=a=b \ c!'
+0: test q format specifier
+>\=a=b\ \\\ c!
 
  printf '%c\n' char
 0:test c format specifier
@@ -108,6 +110,19 @@
 ?(eval):1: bad math expression: operator expected at `a'
 >0
 
+ printf '%12$s' 1 2 3
+1:out of range argument specifier
+?(eval):printf:1: 12: argument specifier out of range
+
+ printf '%2$s\n' 1 2 3
+1:out of range argument specifier on format reuse
+?(eval):printf:1: 2: argument specifier out of range
+>2
+
+ printf '%*0$d'
+1:out of range argument specifier on width
+?(eval):printf:1: 0: argument specifier out of range
+
  print -m -f 'format - %s.\n' 'z' a b c
 0:format not printed if no arguments left after -m removal
 
@@ -129,7 +144,8 @@
 >two	b:0x2%
 >three	c:0x3%
 
- printf '%0+- #-08.5dx\n' 123
+# this should fill spec string with '%0+- #*.*d\0' - 11 characters
+ printf '%1$0+- #-08.5dx\n' 123
 0:maximal length format specification
 >+00123  x
 
@@ -140,3 +156,41 @@
  printf '%.*g\n' -1 .1
 0:negative precision specified
 >0.1
+
+ printf '%2$s %1$d\n' 1 2
+0:specify argument to output explicitly
+>2 1
+
+ printf '%3$.*1$d\n' 4 0 3
+0:specify output and precision arguments explicitly
+>0003
+
+ printf '%2$d%1$d\n' 1 2 3 4
+0:reuse format where arguments are explictly specified
+>21
+>43
+
+ printf '%1$*2$d' 1 2 3 4 5 6 7 8 9 10;echo
+0:reuse of specified arguments 
+> 1   3     5       7         9
+
+ printf '%1$0+.3d\n' 3
+0:flags mixed with specified argument
+>+003
+
+# The following usage, as stated in the manual, is not recommended and the
+# results are undefined. Tests are here anyway to ensure some form of
+# half-sane behaviour.
+
+ printf '%2$s %s %3$s\n' Morning Good World
+0:mixed style of argument selection
+>Good Morning World
+
+ printf '%*1$.*d\n' 1 2
+0:argument specified for width only
+>00
+
+ print -f '%*.*1$d\n' 1 2 3
+0:argument specified for precision only
+>2
+>000


^ permalink raw reply	[relevance 2%]

* Re: unlimited file descripters causes problems for zsh-4.0.2
  @ 2001-10-21 20:17  3%       ` Bart Schaefer
  0 siblings, 0 replies; 200+ results
From: Bart Schaefer @ 2001-10-21 20:17 UTC (permalink / raw)
  To: zsh-workers

On Oct 21,  7:07pm, Bart Schaefer wrote:
}
} } Here's a suggestion:  Once, at startup, we scan all the way to zopenmax()
} } looking for open descriptors, and set a global to the largest number we
} } find.

I should point out that it's possible for sysconf(_SC_OPEN_MAX) to return
zero even when the actual descriptor limit is greater than OPEN_MAX.  So
there is still potential for zsh to leave high-numbered descriptors open
in closeallelse() et al., should the OS have a particularly brain-damaged
POSIX implementation and someone really wishes to force it.

-- 
Bart Schaefer                                 Brass Lantern Enterprises
http://www.well.com/user/barts              http://www.brasslantern.com

Zsh: http://www.zsh.org | PHPerl Project: http://phperl.sourceforge.net   


^ permalink raw reply	[relevance 3%]

* Make error on Mac OS X 10.1
@ 2001-10-22 11:00  1% Steven Farrier
  0 siblings, 0 replies; 200+ results
From: Steven Farrier @ 2001-10-22 11:00 UTC (permalink / raw)
  To: zsh-workers

I have been attempting to build zsh on Mac OS X 10.1

I installed dlcompat like the MACHINE file suggested. That failed so I then 
tried disabling dynamic modules that didn't seem to help.

Below is the build process. I used the latest 4.1.0 snapshot.

[localhost:~/source/zsh-4.1-20011022] tachys% ./Util/preconfig
cd . && ./.preconfig
[localhost:~/source/zsh-4.1-20011022] tachys% ./configure
creating cache ./config.cache
configuring for zsh 4.1.0-dev-2
checking host system type... powerpc-apple-darwin1.4
checking for gcc... no
checking for cc... cc
checking whether the C compiler (cc  ) works... yes
checking whether the C compiler (cc  ) is a cross-compiler... no
checking whether we are using GNU C... yes
checking whether cc accepts -g... yes
checking whether large file support needs explicit enabling... no
checking how to run the C preprocessor... cc -E -traditional-cpp
checking whether cc needs -traditional... no
checking for working const... yes
checking for Cygwin environment... no
checking for mingw32 environment... no
checking for executable suffix... no
checking for cc option to accept ANSI C...
checking whether to use prototypes... yes
checking for working alloca.h... no
checking for alloca... yes
checking if the compiler supports union initialisation... yes
checking if signed to unsigned casting is broken... no
checking if the compiler supports variable-length arrays... yes
checking what to set MAXJOB to... 50
checking whether make sets ${MAKE}... yes
checking for a BSD compatible install... /usr/bin/install -c
checking for mawk... no
checking for gawk... no
checking for nawk... no
checking for awk... awk
checking whether ln works... yes
checking for yodl... no
checking for dirent.h that defines DIR... yes
checking for opendir in -ldir... no
checking for ANSI C header files... yes
checking whether time.h and sys/time.h may both be included... yes
checking whether stat file-mode macros are broken... no
checking for sys/wait.h that is POSIX.1 compatible... yes
checking for sys/time.h... yes
checking for sys/times.h... yes
checking for sys/select.h... yes
checking for termcap.h... no
checking for termio.h... no
checking for termios.h... yes
checking for sys/param.h... yes
checking for sys/filio.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for limits.h... yes
checking for fcntl.h... yes
checking for libc.h... yes
checking for sys/utsname.h... yes
checking for sys/resource.h... yes
checking for locale.h... yes
checking for errno.h... yes
checking for stdlib.h... yes
checking for unistd.h... yes
checking for sys/capability.h... no
checking for utmp.h... yes
checking for utmpx.h... no
checking for sys/types.h... yes
checking for pwd.h... yes
checking for grp.h... yes
checking for poll.h... no
checking for sys/mman.h... yes
checking for netinet/in_systm.h... yes
checking for pcre.h... no
checking for dlfcn.h... no
checking for dl.h... no
checking for conflicts in sys/time.h and sys/select.h... no
checking POSIX termios... yes
checking TIOCGWINSZ in termios.h... yes
checking for sys/ptem.h... no
checking for printf in -lc... yes
checking for pow in -lm... yes
checking for library containing tgetent... none required
checking for library containing yp_all... none required
checking for dlopen in -ldl... no
checking for cap_get_proc in -lcap... no
checking for socket in -lsocket... no
checking for library containing pcre_compile... no
checking if an include file defines ospeed... no
checking if you must define ospeed... yes
checking return type of signal handlers... void
checking for pid_t... yes
checking for off_t... yes
checking for ino_t... yes
checking for mode_t... yes
checking for uid_t in sys/types.h... yes
checking for size_t... yes
checking if long is 64 bits... no
checking if off_t is 64 bit... yes
checking if ino_t is 64 bit... no
checking if compiler has a 64 bit type... long long
checking for a corresponding unsigned 64 bit type... unsigned long long
checking for sigset_t... yes
checking for struct timezone... yes
checking for struct utmp... yes
checking for struct utmpx... no
checking for ut_host in struct utmp... yes
checking for ut_host in struct utmpx... no
checking for ut_xtime in struct utmpx... no
checking for ut_tv in struct utmpx... no
checking for d_ino in struct dirent... yes
checking for d_stat in struct dirent... no
checking for d_ino in struct direct... no
checking for d_stat in struct direct... no
checking for sin6_scope_id in struct sockaddr_in6... yes
checking if we need our own h_errno... no
checking for strftime... yes
checking for difftime... yes
checking for gettimeofday... yes
checking for select... yes
checking for poll... no
checking for readlink... yes
checking for faccessx... no
checking for fchdir... yes
checking for ftruncate... yes
checking for fstat... yes
checking for lstat... yes
checking for lchown... no
checking for fseeko... yes
checking for ftello... yes
checking for mkfifo... yes
checking for _mktemp... no
checking for mkstemp... yes
checking for waitpid... yes
checking for wait3... yes
checking for sigaction... yes
checking for sigblock... yes
checking for sighold... no
checking for sigrelse... no
checking for sigsetmask... yes
checking for sigprocmask... yes
checking for killpg... yes
checking for setpgid... yes
checking for setpgrp... yes
checking for tcsetpgrp... yes
checking for tcgetattr... yes
checking for nice... yes
checking for gethostname... yes
checking for gethostbyname2... yes
checking for getipnodebyname... no
checking for inet_aton... yes
checking for inet_pton... no
checking for inet_ntop... no
checking for getlogin... yes
checking for getpwent... yes
checking for getpwnam... yes
checking for getpwuid... yes
checking for getgrgid... yes
checking for getgrnam... yes
checking for initgroups... yes
checking for nis_list... no
checking for setuid... yes
checking for seteuid... yes
checking for setreuid... yes
checking for setresuid... no
checking for setsid... yes
checking for memcpy... yes
checking for memmove... yes
checking for strstr... yes
checking for strerror... yes
checking for cap_get_proc... no
checking for getrlimit... yes
checking for setlocale... yes
checking for uname... yes
checking for signgam... yes
checking for putenv... yes
checking for getenv... yes
checking for brk... yes
checking for sbrk... yes
checking for pathconf... yes
checking for sysconf... yes
checking for tgetent... yes
checking for tigetflag... no
checking for tigetnum... no
checking for tigetstr... no
checking for setupterm... no
checking for pcre_compile... no
checking for pcre_study... no
checking for pcre_exec... no
checking for working strcoll... yes
checking if tgetent accepts NULL... yes
checking for unistd.h... (cached) yes
checking for getpagesize... yes
checking for working mmap... yes
checking for munmap... yes
checking for msync... yes
checking whether getpgrp takes no argument... yes
checking for dlopen... no
checking for dlerror... no
checking for dlsym... no
checking for dlclose... no
checking for load... no
checking for loadquery... no
checking for loadbind... no
checking for unload... no
checking for shl_load... no
checking for shl_unload... no
checking for shl_findsym... no
checking what style of signals to use... POSIX_SIGNALS
checking where signal.h is located... /usr/include/sys/signal.h
checking where the RLIMIT macros are located... 
/usr/include/sys/resource.h
checking if rlim_t is longer than a long... yes
checking if rlim_t is a quad... yes
checking for rlim_t... yes
checking for /dev/fd filesystem... /dev/fd
checking for RFS superroot directory... no
checking whether we should use the native getcwd... no
checking for NIS... no
checking for NIS+... no
checking for utmp file... /var/run/utmp
checking for wtmp file... /var/log/wtmp
checking for utmpx file... no
checking for wtmpx file... no
checking for brk() prototype in <unistd.h>... yes
checking for sbrk() prototype in <unistd.h>... yes
checking for ioctl prototype in <sys/ioctl.h>... yes
checking for mknod prototype in <sys/stat.h>... no
checking if named FIFOs work... yes
checking if echo in /bin/sh interprets escape sequences... no
checking if link() works... yes
checking if kill(pid, 0) returns ESRCH correctly... yes
checking if POSIX sigsuspend() works... yes
checking if tcsetpgrp() actually works... yes
checking if getpwnam() is faked... no
checking base type of the third argument to accept... int
creating ./config.modules
updating cache ./config.cache
creating ./config.status

zsh configuration
-----------------
zsh version               : 4.1.0-dev-2
host operating system     : powerpc-apple-darwin1.4
source code location      : .
compiler                  : cc
preprocessor flags        :
executable compiler flags :  -Wall -Wno-implicit -Wmissing-prototypes -O2
executable linker flags   : -Wl,-x
library flags             : -lm  -lc
installation basename     : zsh
binary install path       : /usr/local/bin
man page install path     : /usr/local/man
info install path         : /usr/local/info
functions install path    : /usr/local/share/zsh/4.1.0-dev-2/functions
See config.modules for installed modules and functions.

creating Config/defs.mk
creating Makefile
creating Doc/Makefile
creating Etc/Makefile
creating Src/Makefile
creating Test/Makefile
creating config.h
[localhost:~/source/zsh-4.1-20011022] tachys% make
cd .. && /bin/sh $top_srcdir/Src/mkmakemod.sh Src Makemod
creating Src/Makemod.in
creating Src/Makemod
echo 'timestamp for *.mdd files' > ../Src/modules.stamp
creating Src/Builtins/Makefile.in
creating Src/Builtins/Makefile
creating Src/Modules/Makefile.in
creating Src/Modules/Makefile
creating Src/Zle/Makefile.in
creating Src/Zle/Makefile
awk -f ./signames1.awk /usr/include/sys/signal.h >sigtmp.c
cc -E -traditional-cpp sigtmp.c >sigtmp.out
awk -f ./signames2.awk sigtmp.out > signames.c
rm -f sigtmp.c sigtmp.out
grep 'define.*SIGCOUNT' signames.c > sigcount.h
Updated `zsh.mdh'.
echo 'timestamp for zsh.mdh against zsh.mdd' > zsh.mdhs
awk -f ../Src/makepro.awk builtin.c Src > builtin.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
builtin.syms) \
         > builtin.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
builtin.syms) \
         > `echo builtin.epro | sed 's/\.epro$/.pro/'`
awk -f ../Src/makepro.awk compat.c Src > compat.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
compat.syms) \
         > compat.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
compat.syms) \
         > `echo compat.epro | sed 's/\.epro$/.pro/'`
awk -f ../Src/makepro.awk cond.c Src > cond.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
cond.syms) \
         > cond.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
cond.syms) \
         > `echo cond.epro | sed 's/\.epro$/.pro/'`
awk -f ../Src/makepro.awk exec.c Src > exec.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
exec.syms) \
         > exec.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
exec.syms) \
         > `echo exec.epro | sed 's/\.epro$/.pro/'`
awk -f ../Src/makepro.awk glob.c Src > glob.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
glob.syms) \
         > glob.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
glob.syms) \
         > `echo glob.epro | sed 's/\.epro$/.pro/'`
awk -f ../Src/makepro.awk hashtable.c Src > hashtable.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
hashtable.syms) \
         > hashtable.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
hashtable.syms) \
         > `echo hashtable.epro | sed 's/\.epro$/.pro/'`
awk -f ../Src/makepro.awk hist.c Src > hist.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
hist.syms) \
         > hist.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
hist.syms) \
         > `echo hist.epro | sed 's/\.epro$/.pro/'`
awk -f ../Src/makepro.awk init.c Src > init.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
init.syms) \
         > init.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
init.syms) \
         > `echo init.epro | sed 's/\.epro$/.pro/'`
awk -f ../Src/makepro.awk input.c Src > input.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
input.syms) \
         > input.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
input.syms) \
         > `echo input.epro | sed 's/\.epro$/.pro/'`
awk -f ../Src/makepro.awk jobs.c Src > jobs.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
jobs.syms) \
         > jobs.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
jobs.syms) \
         > `echo jobs.epro | sed 's/\.epro$/.pro/'`
awk -f ../Src/makepro.awk lex.c Src > lex.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
lex.syms) \
         > lex.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
lex.syms) \
         > `echo lex.epro | sed 's/\.epro$/.pro/'`
awk -f ../Src/makepro.awk linklist.c Src > linklist.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
linklist.syms) \
         > linklist.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
linklist.syms) \
         > `echo linklist.epro | sed 's/\.epro$/.pro/'`
awk -f ../Src/makepro.awk loop.c Src > loop.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
loop.syms) \
         > loop.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
loop.syms) \
         > `echo loop.epro | sed 's/\.epro$/.pro/'`
awk -f ../Src/makepro.awk math.c Src > math.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
math.syms) \
         > math.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
math.syms) \
         > `echo math.epro | sed 's/\.epro$/.pro/'`
awk -f ../Src/makepro.awk mem.c Src > mem.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
mem.syms) \
         > mem.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
mem.syms) \
         > `echo mem.epro | sed 's/\.epro$/.pro/'`
awk -f ../Src/makepro.awk module.c Src > module.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
module.syms) \
         > module.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
module.syms) \
         > `echo module.epro | sed 's/\.epro$/.pro/'`
awk -f ../Src/makepro.awk options.c Src > options.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
options.syms) \
         > options.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
options.syms) \
         > `echo options.epro | sed 's/\.epro$/.pro/'`
awk -f ../Src/makepro.awk params.c Src > params.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
params.syms) \
         > params.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
params.syms) \
         > `echo params.epro | sed 's/\.epro$/.pro/'`
awk -f ../Src/makepro.awk parse.c Src > parse.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
parse.syms) \
         > parse.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
parse.syms) \
         > `echo parse.epro | sed 's/\.epro$/.pro/'`
awk -f ../Src/makepro.awk pattern.c Src > pattern.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
pattern.syms) \
         > pattern.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
pattern.syms) \
         > `echo pattern.epro | sed 's/\.epro$/.pro/'`
awk -f ../Src/makepro.awk prompt.c Src > prompt.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
prompt.syms) \
         > prompt.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
prompt.syms) \
         > `echo prompt.epro | sed 's/\.epro$/.pro/'`
awk -f ../Src/makepro.awk signals.c Src > signals.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
signals.syms) \
         > signals.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
signals.syms) \
         > `echo signals.epro | sed 's/\.epro$/.pro/'`
awk -f ../Src/makepro.awk signames.c Src > signames.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
signames.syms) \
         > signames.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
signames.syms) \
         > `echo signames.epro | sed 's/\.epro$/.pro/'`
awk -f ../Src/makepro.awk string.c Src > string.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
string.syms) \
         > string.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
string.syms) \
         > `echo string.epro | sed 's/\.epro$/.pro/'`
awk -f ../Src/makepro.awk subst.c Src > subst.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
subst.syms) \
         > subst.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
subst.syms) \
         > `echo subst.epro | sed 's/\.epro$/.pro/'`
awk -f ../Src/makepro.awk text.c Src > text.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
text.syms) \
         > text.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
text.syms) \
         > `echo text.epro | sed 's/\.epro$/.pro/'`
awk -f ../Src/makepro.awk utils.c Src > utils.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
utils.syms) \
         > utils.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
utils.syms) \
         > `echo utils.epro | sed 's/\.epro$/.pro/'`
awk -f ../Src/makepro.awk watch.c Src > watch.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
watch.syms) \
         > watch.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
watch.syms) \
         > `echo watch.epro | sed 's/\.epro$/.pro/'`
Updated `zsh.mdh'.
Updated `rlimits.mdh'.
echo 'timestamp for rlimits.mdh against rlimits.mdd' > rlimits.mdhs
awk -f ../../Src/makepro.awk rlimits.c Src/Builtins > rlimits.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
rlimits.syms) \
         > rlimits.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
rlimits.syms) \
         > `echo rlimits.epro | sed 's/\.epro$/.pro/'`
Updated `rlimits.mdh'.
Updated `sched.mdh'.
echo 'timestamp for sched.mdh against sched.mdd' > sched.mdhs
awk -f ../../Src/makepro.awk sched.c Src/Builtins > sched.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
sched.syms) \
         > sched.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
sched.syms) \
         > `echo sched.epro | sed 's/\.epro$/.pro/'`
Updated `sched.mdh'.
Updated `parameter.mdh'.
echo 'timestamp for parameter.mdh against parameter.mdd' > parameter.mdhs
awk -f ../../Src/makepro.awk parameter.c Src/Modules > parameter.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
parameter.syms) \
         > parameter.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
parameter.syms) \
         > `echo parameter.epro | sed 's/\.epro$/.pro/'`
Updated `parameter.mdh'.
Updated `termcap.mdh'.
echo 'timestamp for termcap.mdh against termcap.mdd' > termcap.mdhs
awk -f ../../Src/makepro.awk termcap.c Src/Modules > termcap.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
termcap.syms) \
         > termcap.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
termcap.syms) \
         > `echo termcap.epro | sed 's/\.epro$/.pro/'`
Updated `termcap.mdh'.
Updated `terminfo.mdh'.
echo 'timestamp for terminfo.mdh against terminfo.mdd' > terminfo.mdhs
awk -f ../../Src/makepro.awk terminfo.c Src/Modules > terminfo.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
terminfo.syms) \
         > terminfo.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
terminfo.syms) \
         > `echo terminfo.epro | sed 's/\.epro$/.pro/'`
Updated `terminfo.mdh'.
( \
     echo '/** thingies.list                            **/'; \
     echo '/** thingy structures for the known thingies **/'; \
     echo; \
     echo '/* format: T("name", TH_FLAGS, w_widget, t_nextthingy) */'; \
     echo; \
     sed -e 's/#.*//; /^$/d; s/" *,.*/"/' \
         -e 's/^"/T("/; s/$/, 0,/; h' \
         -e 's/-//g; s/^.*"\(.*\)".*/w_\1, t_D\1)/' \
         -e 'H; g; s/\n/ /' \
         < ./iwidgets.list; \
     sed -e 's/#.*//; /^$/d; s/" *,.*/"/' \
         -e 's/^"/T("./; s/$/, TH_IMMORTAL,/; h' \
         -e 's/-//g; s/^.*"\.\(.*\)".*/w_\1, t_\1)/' \
         -e 'H; g; s/\n/ /' \
         < ./iwidgets.list; \
) > thingies.list
( \
     echo '/** zle_things.h                              **/'; \
     echo '/** indices of and pointers to known thingies **/'; \
     echo; \
     echo 'enum {'; \
     sed -n -f ./zle_things.sed < thingies.list; \
     echo '    ZLE_BUILTIN_THINGY_COUNT'; \
     echo '};'; \
) > zle_things.h
Updated `zle.mdh'.
echo 'timestamp for zle.mdh against zle.mdd' > zle.mdhs
awk -f ../../Src/makepro.awk zle_bindings.c Src/Zle > zle_bindings.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
zle_bindings.syms) \
         > zle_bindings.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
zle_bindings.syms) \
         > `echo zle_bindings.epro | sed 's/\.epro$/.pro/'`
awk -f ../../Src/makepro.awk zle_hist.c Src/Zle > zle_hist.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
zle_hist.syms) \
         > zle_hist.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
zle_hist.syms) \
         > `echo zle_hist.epro | sed 's/\.epro$/.pro/'`
awk -f ../../Src/makepro.awk zle_keymap.c Src/Zle > zle_keymap.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
zle_keymap.syms) \
         > zle_keymap.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
zle_keymap.syms) \
         > `echo zle_keymap.epro | sed 's/\.epro$/.pro/'`
awk -f ../../Src/makepro.awk zle_main.c Src/Zle > zle_main.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
zle_main.syms) \
         > zle_main.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
zle_main.syms) \
         > `echo zle_main.epro | sed 's/\.epro$/.pro/'`
awk -f ../../Src/makepro.awk zle_misc.c Src/Zle > zle_misc.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
zle_misc.syms) \
         > zle_misc.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
zle_misc.syms) \
         > `echo zle_misc.epro | sed 's/\.epro$/.pro/'`
awk -f ../../Src/makepro.awk zle_move.c Src/Zle > zle_move.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
zle_move.syms) \
         > zle_move.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
zle_move.syms) \
         > `echo zle_move.epro | sed 's/\.epro$/.pro/'`
awk -f ../../Src/makepro.awk zle_params.c Src/Zle > zle_params.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
zle_params.syms) \
         > zle_params.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
zle_params.syms) \
         > `echo zle_params.epro | sed 's/\.epro$/.pro/'`
awk -f ../../Src/makepro.awk zle_refresh.c Src/Zle > zle_refresh.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
zle_refresh.syms) \
         > zle_refresh.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
zle_refresh.syms) \
         > `echo zle_refresh.epro | sed 's/\.epro$/.pro/'`
awk -f ../../Src/makepro.awk zle_thingy.c Src/Zle > zle_thingy.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
zle_thingy.syms) \
         > zle_thingy.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
zle_thingy.syms) \
         > `echo zle_thingy.epro | sed 's/\.epro$/.pro/'`
awk -f ../../Src/makepro.awk zle_tricky.c Src/Zle > zle_tricky.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
zle_tricky.syms) \
         > zle_tricky.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
zle_tricky.syms) \
         > `echo zle_tricky.epro | sed 's/\.epro$/.pro/'`
awk -f ../../Src/makepro.awk zle_utils.c Src/Zle > zle_utils.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
zle_utils.syms) \
         > zle_utils.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
zle_utils.syms) \
         > `echo zle_utils.epro | sed 's/\.epro$/.pro/'`
awk -f ../../Src/makepro.awk zle_vi.c Src/Zle > zle_vi.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
zle_vi.syms) \
         > zle_vi.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
zle_vi.syms) \
         > `echo zle_vi.epro | sed 's/\.epro$/.pro/'`
awk -f ../../Src/makepro.awk zle_word.c Src/Zle > zle_word.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
zle_word.syms) \
         > zle_word.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
zle_word.syms) \
         > `echo zle_word.epro | sed 's/\.epro$/.pro/'`
Updated `zle.mdh'.
Updated `complete.mdh'.
echo 'timestamp for complete.mdh against complete.mdd' > complete.mdhs
awk -f ../../Src/makepro.awk complete.c Src/Zle > complete.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
complete.syms) \
         > complete.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
complete.syms) \
         > `echo complete.epro | sed 's/\.epro$/.pro/'`
awk -f ../../Src/makepro.awk compcore.c Src/Zle > compcore.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
compcore.syms) \
         > compcore.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
compcore.syms) \
         > `echo compcore.epro | sed 's/\.epro$/.pro/'`
awk -f ../../Src/makepro.awk compmatch.c Src/Zle > compmatch.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
compmatch.syms) \
         > compmatch.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
compmatch.syms) \
         > `echo compmatch.epro | sed 's/\.epro$/.pro/'`
awk -f ../../Src/makepro.awk compresult.c Src/Zle > compresult.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
compresult.syms) \
         > compresult.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
compresult.syms) \
         > `echo compresult.epro | sed 's/\.epro$/.pro/'`
Updated `complete.mdh'.
Updated `zutil.mdh'.
echo 'timestamp for zutil.mdh against zutil.mdd' > zutil.mdhs
awk -f ../../Src/makepro.awk zutil.c Src/Modules > zutil.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
zutil.syms) \
         > zutil.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
zutil.syms) \
         > `echo zutil.epro | sed 's/\.epro$/.pro/'`
Updated `zutil.mdh'.
Updated `compctl.mdh'.
echo 'timestamp for compctl.mdh against compctl.mdd' > compctl.mdhs
awk -f ../../Src/makepro.awk compctl.c Src/Zle > compctl.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
compctl.syms) \
         > compctl.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
compctl.syms) \
         > `echo compctl.epro | sed 's/\.epro$/.pro/'`
Updated `compctl.mdh'.
Updated `complist.mdh'.
echo 'timestamp for complist.mdh against complist.mdd' > complist.mdhs
awk -f ../../Src/makepro.awk complist.c Src/Zle > complist.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
complist.syms) \
         > complist.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
complist.syms) \
         > `echo complist.epro | sed 's/\.epro$/.pro/'`
Updated `complist.mdh'.
Updated `computil.mdh'.
echo 'timestamp for computil.mdh against computil.mdd' > computil.mdhs
awk -f ../../Src/makepro.awk computil.c Src/Zle > computil.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
computil.syms) \
         > computil.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
computil.syms) \
         > `echo computil.epro | sed 's/\.epro$/.pro/'`
Updated `computil.mdh'.
Updated `zleparameter.mdh'.
echo 'timestamp for zleparameter.mdh against zleparameter.mdd' > 
zleparameter.mdhs
awk -f ../../Src/makepro.awk zleparameter.c Src/Zle > zleparameter.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
zleparameter.syms) \
         > zleparameter.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
zleparameter.syms) \
         > `echo zleparameter.epro | sed 's/\.epro$/.pro/'`
Updated `zleparameter.mdh'.
rm -f stamp-modobjs.tmp
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o builtin.o builtin.c
builtin.c: In function `bin_print':
builtin.c:2899: warning: `save' might be used uninitialized in this 
function
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o compat.o compat.c
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o cond.o cond.c
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o exec.o exec.c
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o glob.o glob.c
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o hashtable.o hashtable.c
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o hist.o hist.c
srcdir='.' CFMOD='../config.modules' \
   /bin/sh ./mkbltnmlst.sh bltinmods.list
Updated `zshpaths.h'.
Creating `zshxmods.h'.
echo '#define ZSH_VERSION "'4.1.0-dev-2'"' > version.h
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o init.o init.c
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o input.o input.c
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o jobs.o jobs.c
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o lex.o lex.c
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o linklist.o linklist.c
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o loop.o loop.c
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o math.o math.c
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o mem.o mem.c
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o module.o module.c
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o options.o options.c
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o params.o params.c
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o parse.o parse.c
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o pattern.o pattern.c
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o prompt.o prompt.c
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o signals.o signals.c
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o signames.o signames.c
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o string.o string.c
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o subst.o subst.c
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o text.o text.c
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o utils.o utils.c
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o watch.o watch.c
echo '' builtin.o compat.o cond.o exec.o glob.o hashtable.o hist.o 
init.o input.o jobs.o lex.o linklist.o loop.o math.o mem.o module.o 
options.o params.o parse.o pattern.o prompt.o signals.o signames.o 
string.o subst.o text.o utils.o watch.o >> ../Src/stamp-modobjs.tmp
awk -f ./rlimits.awk /usr/include/sys/resource.h /dev/null > rlimits.h
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o rlimits.o rlimits.c
echo '' rlimits.o | sed 's" " Builtins/"g' >> ../../Src/stamp-modobjs.tmp
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o sched.o sched.c
echo '' sched.o | sed 's" " Builtins/"g' >> ../../Src/stamp-modobjs.tmp
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o parameter.o parameter.c
echo '' parameter.o | sed 's" " Modules/"g' >> ../../Src/stamp-
modobjs.tmp
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o termcap.o termcap.c
echo '' termcap.o | sed 's" " Modules/"g' >> ../../Src/stamp-modobjs.tmp
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o terminfo.o terminfo.c
echo '' terminfo.o | sed 's" " Modules/"g' >> ../../Src/stamp-modobjs.tmp
make[4]: `complete.mdh' is up to date.
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o zutil.o zutil.c
echo '' zutil.o | sed 's" " Modules/"g' >> ../../Src/stamp-modobjs.tmp
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o compctl.o compctl.c
echo '' compctl.o | sed 's" " Zle/"g' >> ../../Src/stamp-modobjs.tmp
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o complete.o complete.c
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o compcore.o compcore.c
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o compmatch.o compmatch.c
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o compresult.o compresult.c
echo '' complete.o compcore.o compmatch.o compresult.o | sed 's" " 
Zle/"g' >> ../../Src/stamp-modobjs.tmp
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o complist.o complist.c
echo '' complist.o | sed 's" " Zle/"g' >> ../../Src/stamp-modobjs.tmp
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o computil.o computil.c
echo '' computil.o | sed 's" " Zle/"g' >> ../../Src/stamp-modobjs.tmp
( \
     echo '/** widgets.list                               **/'; \
     echo '/** widget structures for the internal widgets **/'; \
     echo; \
     echo '/* format: W(ZLE_FLAGS, t_firstname, functionname) */'; \
     echo; \
     sed -e 's/#.*//; /^$/d; s/-//g' \
         -e 's/^"\(.*\)" *, *\([^ ]*\) *, *\(.*\)/W(\3, t_\1, \2)/' \
         < ./iwidgets.list; \
) > widgets.list
( \
     echo '/** zle_widget.h                                **/'; \
     echo '/** indices of and pointers to internal widgets **/'; \
     echo; \
     echo 'enum {'; \
     sed -n -f ./zle_widget.sed < widgets.list; \
     echo '    ZLE_BUILTIN_WIDGET_COUNT'; \
     echo '};'; \
) > zle_widget.h
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o zle_bindings.o zle_bindings.c
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o zle_hist.o zle_hist.c
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o zle_keymap.o zle_keymap.c
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o zle_main.o zle_main.c
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o zle_misc.o zle_misc.c
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o zle_move.o zle_move.c
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o zle_params.o zle_params.c
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o zle_refresh.o zle_refresh.c
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o zle_thingy.o zle_thingy.c
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o zle_tricky.o zle_tricky.c
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o zle_utils.o zle_utils.c
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o zle_vi.o zle_vi.c
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o zle_word.o zle_word.c
echo '' zle_bindings.o zle_hist.o zle_keymap.o zle_main.o zle_misc.o 
zle_move.o zle_params.o zle_refresh.o zle_thingy.o zle_tricky.o 
zle_utils.o zle_vi.o zle_word.o | sed 's" " Zle/"g' >> 
../../Src/stamp-modobjs.tmp
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2  
-o zleparameter.o zleparameter.c
echo '' zleparameter.o | sed 's" " Zle/"g' >> ../../Src/stamp-modobjs.tmp
Updated `stamp-modobjs'.
awk -f ../Src/makepro.awk main.c Src > main.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < 
main.syms) \
         > main.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < 
main.syms) \
         > `echo main.epro | sed 's/\.epro$/.pro/'`
cc -c -I.  -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2 
-o main.o ./main.c
( echo '#!'; cat builtin.syms compat.syms cond.syms exec.syms glob.syms 
hashtable.syms hist.syms init.syms input.syms jobs.syms lex.syms 
linklist.syms loop.syms math.syms mem.syms module.syms options.syms 
params.syms parse.syms pattern.syms prompt.syms signals.syms 
signames.syms string.syms subst.syms text.syms utils.syms watch.syms  | 
sed -n '/^X/{s/^X//;p;}' | sort -u ) > zsh.export
rm -f zsh
cc -Wl,-x   -o zsh main.o  `cat stamp-modobjs`   -lm  -lc
( \
   echo 'STARTDEF()'; \
   echo 'def(version)(0)('4.1.0-dev-2')'; \
   echo 'def(date)(0)(''September 27, 2001'')'; \
   echo 'ENDDEF()#' | tr '#' '\\'; \
) > ./version.yo
case zsh.1 in \
   */*) target=zsh.1 ;; \
   *) target=./zsh.1 ;; \
esac; \
case ': yodl' in :*) ;; *) \
     : yodl -I. -w zman.yo version.yo zsh.yo | sed -e '1s/\\-/-/g' -e 
'/^\.'\''/d' > $target \
;; esac; \
test -f $target
make[1]: *** [zsh.1] Error 1
make: *** [all] Error 1
[localhost:~/source/zsh-4.1-20011022] tachys%


^ permalink raw reply	[relevance 1%]

* Mac OS X /bin/sh was zsh, to be replaced with bash
@ 2001-10-25 17:20  4% Jos Backus
  2001-10-25 17:40  0% ` Peter Stephenson
  2001-10-25 18:09  3% ` Oliver Kiddle
  0 siblings, 2 replies; 200+ results
From: Jos Backus @ 2001-10-25 17:20 UTC (permalink / raw)
  To: zsh-workers

Yesterday I attended the local Bay Area Next user group meeting at Apple in
Cupertino, at which an Apple employee (sorry, can't remember his name right
now) mentioned that there are plans to replace /bin/sh, currently zsh
3.0.something, with bash. The primary reason he stated was zsh's lack of POSIX
conformance that they kept having problems with. Unfortunately he did/could
not go into any detail. He also said that as far as he knew no attempt had
been made to contact the zsh maintainers about this.

Now I could ask Jordan Hubbard at Apple if he would be willing to refer me to
somebody to talk to about this issue, and ask this person what exactly these
POSIX compatibility issues are they are having problems with. Maybe these
issues can be addressed; they will never be fixed unless the developers are
aware of them.

Comments?

-- 
Jos Backus                 _/  _/_/_/        Santa Clara, CA
                          _/  _/   _/
                         _/  _/_/_/             
                    _/  _/  _/    _/
josb@cncdsl.com     _/_/   _/_/_/            use Std::Disclaimer;


^ permalink raw reply	[relevance 4%]

* Re: Mac OS X /bin/sh was zsh, to be replaced with bash
  2001-10-25 17:20  4% Mac OS X /bin/sh was zsh, to be replaced with bash Jos Backus
@ 2001-10-25 17:40  0% ` Peter Stephenson
  2001-10-25 18:09  3% ` Oliver Kiddle
  1 sibling, 0 replies; 200+ results
From: Peter Stephenson @ 2001-10-25 17:40 UTC (permalink / raw)
  To: Zsh hackers list

Jos Backus wrote:
> Now I could ask Jordan Hubbard at Apple if he would be willing to refer me to
> somebody to talk to about this issue, and ask this person what exactly these
> POSIX compatibility issues are they are having problems with. Maybe these
> issues can be addressed; they will never be fixed unless the developers are
> aware of them.
> 
> Comments?

We'd certainly be interested in getting more details.

-- 
Peter Stephenson <pws@csr.com>                  Software Engineer
CSR Ltd., Science Park, Milton Road,
Cambridge, CB4 0WH, UK                          Tel: +44 (0)1223 392070


**********************************************************************
The information transmitted is intended only for the person or
entity to which it is addressed and may contain confidential 
and/or privileged material. 
Any review, retransmission, dissemination or other use of, or
taking of any action in reliance upon, this information by 
persons or entities other than the intended recipient is 
prohibited.  
If you received this in error, please contact the sender and 
delete the material from any computer.
**********************************************************************


^ permalink raw reply	[relevance 0%]

* Re: Mac OS X /bin/sh was zsh, to be replaced with bash
  2001-10-25 17:20  4% Mac OS X /bin/sh was zsh, to be replaced with bash Jos Backus
  2001-10-25 17:40  0% ` Peter Stephenson
@ 2001-10-25 18:09  3% ` Oliver Kiddle
    1 sibling, 1 reply; 200+ results
From: Oliver Kiddle @ 2001-10-25 18:09 UTC (permalink / raw)
  To: Jos Backus; +Cc: zsh-workers

Jos Backus wrote:
> 
> Yesterday I attended the local Bay Area Next user group meeting at Apple in
> Cupertino, at which an Apple employee (sorry, can't remember his name right
> now) mentioned that there are plans to replace /bin/sh, currently zsh
> 3.0.something, with bash. The primary reason he stated was zsh's lack of POSIX
> conformance that they kept having problems with. Unfortunately he did/could
> not go into any detail. He also said that as far as he knew no attempt had
> been made to contact the zsh maintainers about this.

This would be a pity. I thought it had never been bash because they were
concerned that the shell was too fundamental a part of the OS and hence
they might be violating the GPL.

I did recently look through the Darwin bug archives for anything zsh
related and found one real issue which as far as I could tell has been
fixed since 3.0. I have a suspicion that there are some misinformed
people who think bash is more compliant than zsh (which it isn't
particularly). David Korn's slashdot article a while back mentioned that
using zsh as /bin/sh would be dangerous. I think this was said to be
because of some of zsh's differences such as the word splitting despite
the fact that zsh would correctly emulate this if installed as /bin/sh.
This was mentioned on the darwin-development mailing list several months
ago - I saw it when looking through the archives.

The only areas where I know zsh not to be POSIX compliant is the lack of
export's -p option and the arguments to the command command and a couple
of minor things like that. These could probably be added very easily and
quickly.

> Now I could ask Jordan Hubbard at Apple if he would be willing to refer me to
> somebody to talk to about this issue, and ask this person what exactly these
> POSIX compatibility issues are they are having problems with. Maybe these
> issues can be addressed; they will never be fixed unless the developers are
> aware of them.

It would definitely be a good idea to try to establish some form of
dialogue with Apple on this. I can think of arguments against bash from
a number of perspectives - technical, licencing and otherwise. No
disrespect to their many positive achievements but the FSF have a
reputation for trying to hold too tight a grip on official GNU software
making it in some respects less open. If we can find out exactly where
they have had issues with zsh we could address those issues directly.

If you manage to make contact with apple, please keep us informed.

Oliver

_____________________________________________________________________
This message has been checked for all known viruses by the 
MessageLabs Virus Scanning Service. For further information visit
http://www.messagelabs.com/stats.asp


^ permalink raw reply	[relevance 3%]

* Re: Mac OS X /bin/sh was zsh, to be replaced with bash
  @ 2001-10-25 19:00  4%     ` Oliver Kiddle
  0 siblings, 0 replies; 200+ results
From: Oliver Kiddle @ 2001-10-25 19:00 UTC (permalink / raw)
  To: Jos Backus; +Cc: zsh-workers

Jos Backus wrote:
> 
> On Thu, Oct 25, 2001 at 07:09:39PM +0100, Oliver Kiddle wrote:
> > If you manage to make contact with apple, please keep us informed.
> 
> You make some good points there.

If you're giving points to folk at Apple then I can suggest plenty more,
including:

	The loadable modules in zsh 4.x make zsh much smaller and more
	efficient as a non-interactive shell which is the typical use
	of /bin/sh.

	With the future POSIX standard we have been discussing with
	David Korn (ksh author) and Chet Ramey (bash author), zsh will
	likely be a long way ahead of bash. Not that anything is
	going to happen with that anytime soon.

	bash's GPL licence would leave Apple with less flexibility.
	They might for example want to write a shell module for GUI
	interaction. With bash, it'd have to be contributed back as GPL
	code. With zsh, it could be APSL, closed source, zsh licence or
	any other licence. I might discourage the closed approach but
	from Apple's perspective they'd be keeping their options open.

	The explicit emulate command in zsh actually allows zsh to go
	much further than bash in emulating POSIX. Extra reserved words
	can be disabled etc. The only way that bash is more compatible
	is that it adds fewer additional features.

The only argument in favour of bash is that more people are familiar
with it from Linux but then bash is largely a subset of zsh anyway.

And, I expect that ksh93 would require them to pay a lot of money to
AT&T.

> I just sent an e-mail to Jordan, I'll let you know when I hear from him.

Thanks. If we don't hear anything we should try other channels. It
would be a pity if they adopted bash. I've been very impressed with
much of what Apple has done with Mac OS X. Two years ago, if someone
had suggested I buy a Mac, I'd have made facetious remarks about one
button mice. Today I'd be extremely tempted.

Oliver

_____________________________________________________________________
This message has been checked for all known viruses by the 
MessageLabs Virus Scanning Service. For further information visit
http://www.messagelabs.com/stats.asp


^ permalink raw reply	[relevance 4%]

* 4.1.0-dev-3
@ 2001-11-15 19:10  1% Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2001-11-15 19:10 UTC (permalink / raw)
  To: Zsh hackers list

I've uploaded ftp://ftp.zsh.org/pub/development/zsh-4.1.0-dev-3.tar.gz and
.bz2.   Here's the list of changes.

2001-11-15  Peter Stephenson  <pws@csr.com>

	* unposted: Config/version.mk, Etc/.distfiles, Util/.distfiles,
	Completion/Mandrake/.distfiles,
	Completion/Mandrake/Command/.distfiles: version 4.1.0-dev-3 plus
	associated tidying of distribution.

	* 16255: Function/Misc/zcalc: allow -#base or -## base to
	specify default output base.

	* 16254: Completion/Unix/Command/_yp: allow completion of map
	names after ypmatch.

2001-11-15 Chmouel Boudjnah <chmouel@mandrakesoft.com>

	* 16253: Src/Zle/complete.mdd: Add Mandrake completion directory to
	install.

2001-11-15  Peter Stephenson  <pws@csr.com>

	* 16241: zshconfig.ac, Src/Modules/mathfunc.c,
	Doc/Zsh/mod_mathfunc.yo: new rand48(param) math function calls
	erand48(3), storing seed as hex string in $param.

2001-11-14  Andrej Borsenkow  <bor@zsh.org>

	* 16247: Completion/Mandrake/Command/_urpmi: completion
	for Mandrake urpmi command suit.

2001-11-09  Oliver Kiddle  <opk@zsh.org>

	* 16228: Src/builtin.c, Doc/Zsh/builtins.yo: allow widths
	and precisions to work with printf's %b format specifier

2001-11-06  Oliver Kiddle  <opk@zsh.org>

	* unposted: Functions/Misc/mere: fix for IRIX

	* 16224: Src/jobs.c, Doc/Zsh/builtins.yo,
	Completion/Unix/Type/_signals, Completion/Zsh/Command/_kill,
	Completion/Zsh/Command/_jobs_builtin: add -n option to kill
	builtin and use _arguments in _kill to complete options

2001-11-03  Bart Schaefer  <schaefer@zsh.org>

	* 16215: Src/subst.c: save and restore mult_isarr in singsub()
	in case of nested substitution via getoutput().

	* 16201: Src/params.c, Src/utils.c, Src/zsh.h: introduce the
	PM_NAMEDDIR flag to mark parameters for which a value change
	should be reflected in the named directory table.

	* 16158: Src/utils.c: interpret TAB as "yes" only in spckword(),
	not in getquery() which is also used by other callers.

	* 16094: Src/compat.c: zopenmax() shouldn't return the true limit
	on the number of descriptors, as that might be a very large number
	and we really only care about the highest-numbered descriptor that
	is already open.

2001-11-02  Oliver Kiddle  <opk@zsh.org>

	* unposted: Functions/Prompts/prompt_oliver_setup,
	Doc/Zsh/prompt.yo: documentation and example for 16198

	* 16198: Src/prompt.c: add %j prompt expansion and j test
	character for putting the number of jobs in the prompt

	* 16177: Completion/Unix/Type/_time_zone: also look in
	/usr/lib/locale/TZ for time zones

2001-11-01  Bart Schaefer  <schaefer@zsh.org>

	* 16197: Completion/Zsh/Command/.distfiles,
	Completion/Zsh/Command/_limit, Completion/Zsh/Type/_limits,
	Src/Builtins/rlimits.c: `limit' accepts `unlimited' as a value.

2001-10-26  Wayne Davison  <wayned@users.sourceforge.net>

	* 16184: Src/hist.c: Improved readhistline() to reject binary data
	better.

2001-10-26  Peter Stephenson  <pws@csr.com>

	* 16176: Src/Modules/tcp.c, Src/Modules/zftp.c: after fdclose(),
	TCP control fd is no longer valid, but we still need to remove
	the session cleanly.

2001-10-26  Oliver Kiddle  <opk@zsh.org>

	* 16174: Completion/Unix/Command/_zdump,
	Completion/Unix/Type/_time_zone, Completion/Zsh/Context/_value,
	Completion/Unix/Type/.distfiles: complete value of $TZ

2001-10-26  Peter Stephenson  <pws@csr.com>

	* 16172: Src/Modules/tcp.c, Src/Modules/zftp.c: rename
	freehostent() to zfreehostent() to avoid clash with Solaris libnsl.

	* 16171: Doc/Zsh/zftpsys.yo: minor changes of phrasing.

	* 15793: Src/Modules/zftp.c: require zsh/net/tcp explicitly from
	setup_ function for zftp.

2001-10-25  Peter Stephenson  <pws@csr.com>

	* 16145: Src/Builtins/rlimits.c: try to handle both RLIMITS_VMEM
	and RLIMITS_RSS, even if they are the same value (c.f. 16033).

2001-10-24  Peter Stephenson  <pws@csr.com>

	* 16130: Doc/.cvsignore, Doc/Zsh/manual.yo: Fix for texi2html
	1.64.

2001-10-24  Geoff Wing  <gcw@zsh.org>

	* 16063: Src/zsh.h, Src/options.c, Src/Zle/zle_main.c,
	Src/Zle/zle_refresh.c, Doc/Zsh/options.yo: add transientrprompt
	option to remove right prompt from display when accepting commands

2001-10-23  Bart Schaefer  <schaefer@zsh.org>

	* 16124: Src/loop.c: Fix infinite loop on `case' with xtrace
	(bug introduced by 16041).

2001-10-23  Oliver Kiddle  <opk@zsh.org>

	* 16122: Src/builtin.c, Test/B03print.ztst: only count value
	returned by %n in printf since last format reuse

2001-10-22  Peter Stephenson  <pws@csr.com>

	* 16033: Pavel Roskin <proski@gnu.org>:
          Src/Builtins/rlimits.c: Undefine RLIMIT_RSS if it's equal to
        RLIMIT_VMEM to avoid duplicate case value.
          aczsh.m4 (zsh_LARGE_FILE_SUPPORT): Ignore output of getconf
        if it returns "undefined".

2001-10-22  Bart Schaefer  <schaefer@zsh.org>

	* 16111: Src/Builtins/rlimits.c: Report error on attempt to set
	limit to a string that is not a decimal number.

2001-10-22  Adam Spiers  <adam@spiers.net>

	* 16092: Completion/Unix/Command/_mysql_utils: don't override
	settings in ~/.my.cnf

2001-10-20  Bart Schaefer  <schaefer@zsh.org>

	* Adapted from Stefan Dalibor, 16043: Src/utils.c: checkrmall()
	must not print to shout when shout's not valid.

2001-10-19  Sven Wischnowsky  <wischnow@zsh.org>

	* 16085: Completion/Base/Utility/_describe,
	Completion/Zsh/Context/_condition,
	Completion/Zsh/Type/_file_descriptors: fix: make _describe
	handle (...) arguments correctly; use _file_descriptors after
	-t in conditions; don't display empty descriptions in
	_file_descriptors

2001-10-18  Oliver Kiddle  <opk@zsh.org>

	* 16080: Src/builtin.c, Doc/Zsh/builtins.yo, Test/B03print.ztst:
	allow arguments to be specified in printf format specifications

2001-10-17  Clint Adams  <clint@zsh.org>

	* 16078: Completion/Unix/Command/_zip:
	add -r, change description for -R.

2001-10-17  Sven Wischnowsky  <wischnow@zsh.org>

	* 16076: Completion/Unix/Type/_path_files: don't use
	_comp_ignore while building paths, only at end

2001-10-16  Peter Stephenson  <pws@csr.com>

	* 16065: Doc/Zsh/metafaq.yo: sourceforge.

2001-10-16  Oliver Kiddle  <opk@zsh.org>

	* 16064: Src/builtin.c, Src/utils.c, Test/B03print.ztst:
	fix return code of printf after math errors, incomplete comment
	in utils.c and tests of printf now that math evaluation is used

2001-10-16  Clint Adams  <clint@zsh.org>

	* 16062: Src/Modules/zftp.c: use O_EXCL
	when opening a temporary file.

2001-10-15  Wayne Davison  <wayned@users.sourceforge.net>

	* 16059: Src/hist.c: Fix HIST_NO_SPACE when
	INTERACTIVE_COMMENTS is set and we get a comment.

2001-10-15  Oliver Kiddle  <opk@zsh.org>

	* 16042: Src/builtin.c, Doc/Zsh/builtins.yo: use arithmetic
	evaluation for numeric arguments to printf

2001-10-15  Sven Wischnowsky  <wischnow@zsh.org>

	* Bart: 16038 and 16041: Src/cond.c, Src/loop.c: for caching of
	compiled patterns: remember that singsub() might modify the string
	it gets, compare with unmodified string

2001-10-14  Bart Schaefer  <schaefer@zsh.org>

	* 16031: Src/Modules/tcp.c: Don't need <arpa/telnet.h>; misc.
	inconsequential reformatting.

	* 16030: Completion/Unix/Command/_mount: Fix minor typos in option
	descriptions.

2001-10-11  Bart Schaefer  <schaefer@zsh.org>

	* 16013: Src/exec.c: Properly save/restore state around the
	DEBUG trap, so that its return value does not alter the return
	value of current command (among other things).

2001-10-11  Sven Wischnowsky  <wischnow@zsh.org>

	* 16002: Completion/Unix/Type/_path_files: use expanded paths
	(expand style with value prefix) only when we are at the last
	matcher spec

2001-10-10  Clint Adams  <clint@zsh.org>

	* 16006: Completion/Unix/Type/_mailboxes, Doc/Zsh/compsys.yo:
	use styles for mail directory, pine directory,
	and muttrc.

	* 16005: Completion/Unix/Command/_mount:
	check /etc/filesystems under Linux.

2001-10-10  Oliver Kiddle  <opk@zsh.org>

	* 16018: acconfig.h, zshconfig.ac, Etc/MACHINES,
	Test/C02cond.ztst: allow dynamic loading to work on MacOS X
	if the dlcompat library is installed.

2001-10-10  Clint Adams  <clint@zsh.org>

	* 16000: Completion/Debian/Command/.distfiles,
	Completion/Debian/Command/_debchange:
	completion for debchange (dch).

2001-10-09  Sven Wischnowsky  <wischnow@zsh.org>

	* 15995: Completion/Unix/Type/_files, Doc/Zsh/compsys.yo:
	change file completion default to offer globbed files and
	directories on first try

2001-10-09  Peter Stephenson  <pws@csr.com>

	* 15994: Completion/compinstall: handle list-suffixes; make
	prompts at end of function more transparent.

2001-10-09  Sven Wischnowsky  <wischnow@zsh.org>

	* 15991: Src/Zle/compcore.c: hide all but one match with the
	same string in the list even for unsorted groups

2001-10-08  Oliver Kiddle  <opk@zsh.org>

	* 15987: Src/Modules/tcp.c: remove includes duplicated from tcp.h
	which caused problems on IRIX 5.3.

	* 15983: Completion/Unix/Command/_wget, Completion/Unix/Type/_urls,
	Completion/Unix/Command/_user_admin, Completion/Unix/Command/_sysctl,
	Completion/Unix/Command/_webbrowser: update for wget 1.7, darwin
	support in _sysctl, complete files for galeon

2001-10-08  Peter Stephenson  <pws@csr.com>

	* 15980: Functions/Misc/zcalc: '[#16] 2000' ignored the base.

	* 15721: LICENCE: wording change from ages ago.

2001-10-08  Oliver Kiddle  <opk@zsh.org>

	* 15973: Completion/Zsh/Command/_print, Doc/Zsh/builtins.yo,
	Src/builtin.c, Src/hashtable.h, Test/.distfiles, Test/B03print.ztst:
	merge bin_printf and bin_print to allow print -f option and add
	%n format specifier and tests

2001-10-08  Peter Stephenson  <pws@csr.com>

	* 15965: Src/exec.c, Src/glob.c, Src/subst.c: rename glob() to
	zglob() to avoid clashes with library function.

	* 15931: Src/builtin.c, Src/exec.c:  make EXIT traps work in
	subshells the way they used to before 15844: react to explicit
	`exit' but not falling off end of list.

2001-10-08  Andrej Borsenkow  <bor@zsh.org>

	* 15964: Src/Modules/tcp.c: use SOCKLEN_T

2001-10-06  Clint Adams  <clint@zsh.org>

	* Norbert Koch: 15954: Doc/Zsh/arith.yo:
	fix inconsistency of variable name in example.

2001-10-05  Peter Stephenson  <pws@csr.com>

	* 15949: Completion/compinstall: add handling for expand style.

2001-10-05  Oliver Kiddle  <opk@zsh.org>

	* 15851, 15948: Src/builtin.c, Doc/Zsh/builtins.yo: add printf
	builtin	with basic POSIX functionality

2001-10-05  Sven Wischnowsky  <wischnow@zsh.org>

	* 15946: Src/Zle/compresult.c: fix calculation of number of
	columns needed with list_packed

	* 15945: Completion/Zsh/Command/_cd: make _cd use only one call
	to _alternative, including completions from _tilde (using the
	named-directories tag)

	* 15944: Completion/Unix/Type/_path_files, Doc/Zsh/compsys.yo:
	make expand style (file completion) work again; no more special
	behaviour with menu completion; try to make docs clearer

2001-10-05  Geoff Wing  <gcw@zsh.org>

	* unposted: Doc/Zsh/options.yo: typo

2001-10-05  Clint Adams  <clint@zsh.org>

	* 15941: Completion/Unix/Command/_mount:
	complete reiserfs mount options.

	* 15940: Completion/Unix/Command/_mount:
	complete -o utf8 for mount -t vfat.

	* 15939: Completion/Unix/Command/_mount:
	complete xfs mount options (for Linux).

	* 15938: Completion/Unix/Command/_mount:
	complete ext3 mount options.

2001-10-02  Clint Adams  <clint@zsh.org>

	* 15919: Src/linklist.c, Src/Modules/tcp.c, Src/Modules/tcp.h:
	use LinkLists in tcp module rather than somewhat equivalent code.

2001-10-01  Peter Stephenson  <pws@csr.com>

	* 15917: Test/C03traps.ztst: test for EXIT trap fix in 15844.

2001-09-30  Clint Adams  <clint@zsh.org>

	* 15915: Completion/Debian/Command/_bts:
	completion for bts script in devscripts.

2001-09-28  Bart Schaefer  <schaefer@zsh.org>

	* 15895: Src/Modules/zftp.c: Control-connection management sanity
	in conjunction with the new zsh/net/tcp module.

	* 15889: Test/V01zmodload.ztst: Compute module dependencies for
	external modules so that they can be unloaded in the right order.

2001-09-27  Oliver Kiddle  <opk@zsh.org>

	* 15882: zshconfig.ac, Etc/MACHINES, Test/C02cond.ztst: fix
	build and test problems on MacOS X (Darwin).

2001-09-27  Clint Adams  <clint@zsh.org>

	* 15886: Src/Modules/tcp.c: use select if poll
	is not available, or complain if neither are
	available.

-- 
Peter Stephenson <pws@csr.com>                  Software Engineer
CSR Ltd., Science Park, Milton Road,
Cambridge, CB4 0WH, UK                          Tel: +44 (0)1223 392070


**********************************************************************
The information transmitted is intended only for the person or
entity to which it is addressed and may contain confidential 
and/or privileged material. 
Any review, retransmission, dissemination or other use of, or
taking of any action in reliance upon, this information by 
persons or entities other than the intended recipient is 
prohibited.  
If you received this in error, please contact the sender and 
delete the material from any computer.
**********************************************************************


^ permalink raw reply	[relevance 1%]

* Re: PATCH: += parameter assignments
  @ 2002-01-16 14:43  3% ` Oliver Kiddle
  0 siblings, 0 replies; 200+ results
From: Oliver Kiddle @ 2002-01-16 14:43 UTC (permalink / raw)
  To: Bart Schaefer, zsh-workers

Bart wrote:

> } > About the closest thing I can come up with is that all
assignments
> } > in (( )) should force the parameter type to change to numeric
> } > (integer or float), but that has its own set of potential
gotchas.
> }
> } This would seem sensible to me but is it too late to be changing
> that?
> } If you think it is an option then can you elaborate on the
"gotchas"?
>
> You pointed one of them out yourself:
>
>       ((s+=5))
>       s=foo
>
> produces s=0, which could be surprising if `s' was previously a
scalar.

Yes, unless assignments outside (( )) were always scalar as I think
they should be.

> I'd actually forgotten about that effect of assignment to integers.

Having remembered it, would you now agree that the current += behaviour
of doing arithmetic for numerics is at least consistent with normal
assignments?

> } > Better might be if += outside of (( )) always converted numerics
> } > to strings and then did an append.
> }
> } This is perhaps worth considering. I did actually consider it at
the
> } time but didn't do it because of ksh compatibility. To be
consistent
> } with assignments inside (( )), it would have the convert the result
> of
> } the appending back to a numeric type afterwards (which would limit
> the
> } usefulness of it).
>
> It'd also be impossible; following
>
>       integer s=5
>       s+=four
>
> how would one convert `5four' back to an integer?  If the type
> were going to change to scalar, that change would have to stick.

Convert it back to an integer with math evaluation resulting (for
this example) in a bad math expression error. It wouldn't be much use
and would allow some really nasty tricks to be done. My point being
that assignments inside (( )) converting results back to a scalar is
not a good idea in my opinion.

> } But you can't look at s=foo and know what it is going to do because
> if
> } s is an integer, you end up with s being 0 (or whatever foo
> } arithmetically evaluates to). I think it would be better if this
was
> a
> } scalar assignment but it isn't.
>
> I agree that would be better.  A function that wants to create `s' as
a
> global scalar probably *doesn't* have a `typeset -g s=' in it.  If
`s'
> already exists as an integer, strange things are going to happen.

That's bad!

Basically, I can't see a solution that only involves changes to +=
without either leaving inconsistencies with normal assignments or worse
problems.

In summary, I think the ideal would be to make all assignments depend
on context only. So:
  ((a=5)) would always result in a being of integer type and
  a=5     would always result in a being of scalar type
Any scalars used in integer context would still have to be converted to
be numeric first and vice versa. Using typeset to declare a variable as
an integer would only be useful if initialising the variable.

The trouble with this is it would be a big incompatibility and of
minimal use interactively. An option maybe?

> That whole mailing list has been silent for a long time -- or at
least

True but the list probably still works. Unless I missed it, POSIX
doesn't have assignments in arithmetic context or numeric variables.

> I
> haven't received any messages from it.  (In a related note, Austin
> Group
> just got their spec through another hurdle and are accepting errata.)

Have you looked at it recently? The last time I looked, there was very
little change to the shell spec, all the changes being in other areas.

> Really?  I'd say truncation was the reverse of appending.

Well, at least sort of. Enough that with =+ not being an option, it
seemed like a reasonable idea. I couldn't see us ever wanting -= for
truncation as you can already use subscripts to do truncation (and %=
would be more likely). I quite often do things like `fpath=(~+ $fpath)'
so I thought it'd be useful (though I can use a subscript of [1,0]).

Oliver


__________________________________________________
Do You Yahoo!?
Everything you'll ever need on one web page
from News and Sport to Email and Music Charts
http://uk.my.yahoo.com


^ permalink raw reply	[relevance 3%]

* [tbm@cyrius.com: Bug#130817: zsh's echo doesn't error if device is full]
@ 2002-01-27 20:21  3% Clint Adams
  0 siblings, 0 replies; 200+ results
From: Clint Adams @ 2002-01-27 20:21 UTC (permalink / raw)
  To: zsh-workers

I tried putting some error-checking in bin_print, but it didn't seem to
make much difference.

----- Forwarded message from Martin Michlmayr <tbm@cyrius.com> -----

zsh's echo should print an error when it fails because the device is
full.


1250:tbm@fisch: ~] /bin/echo foo > b
/bin/echo: write error: No space left on device

zsh: exit 1     /bin/echo foo > b
1251:tbm@fisch: ~] echo foo > b



-- System Information
Debian Release: 3.0
Architecture: i386
Kernel: Linux fisch 2.4.16 #6 Wed Dec 26 15:44:54 CET 2001 i686
Locale: LANG=en_US, LC_CTYPE=en_US

Versions of packages zsh depends on:
ii  libc6                     2.2.4-7        GNU C Library: Shared libraries an
ii  libcap1                   1:1.10-12      support for getting/setting POSIX.
ii  libncurses5               5.2.20010318-3 Shared libraries for terminal hand

-- 
Martin Michlmayr
tbm@cyrius.com

----- End forwarded message -----


^ permalink raw reply	[relevance 3%]

* [goswin.brederlow@student.uni-tuebingen.de: Bug#131063: zsh: read -r removes \ in \\]
@ 2002-01-27 20:24  3% Clint Adams
  0 siblings, 0 replies; 200+ results
From: Clint Adams @ 2002-01-27 20:24 UTC (permalink / raw)
  To: zsh-workers

----- Forwarded message from Goswin Brederlow <goswin.brederlow@student.uni-tuebingen.de> -----

~% echo "\\"                       
\
~% echo "\\" | read -r i; echo "$i"
\
~% echo "\\\\\\\\"                       
\\
~% echo "\\\\\\\\" | read -r i; echo "$i"
\

The manpage says read -r does not remove \.


Also echo removes \:

~% echo "\\\\"                     
\

bash will print \\ as intendet. Any reason? (ksh/pdksh print \ I was
told).

MfG
	Goswin

-- System Information
Debian Release: 3.0
Architecture: i386
Kernel: Linux dual 2.4.16 #9 SMP Sat Jan 26 16:39:53 CET 2002 i686
Locale: LANG=C, LC_CTYPE=de_DE

Versions of packages zsh depends on:
ii  libc6                    2.2.5-1         GNU C Library: Shared libraries an
ii  libcap1                  1:1.10-12       support for getting/setting POSIX.
ii  libncurses5              5.2.20020112a-3 Shared libraries for terminal hand


----- End forwarded message -----


^ permalink raw reply	[relevance 3%]

* Andrew Josey: Press Release
@ 2002-01-30 10:26  3% Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2002-01-30 10:26 UTC (permalink / raw)
  To: Zsh hackers list

This is of some interest since you can now see the latest POSIX (IEEE Std
1003.1-2001) and Single Unix shell standard, along with the rest of the
UNIX spec, online by registering.

pws

------- Forwarded Message

Date: Wed, 30 Jan 2002 05:34:35 GMT
From: Andrew Josey <ajosey@rdg.opengroup.org>
Subject: Press Release

All

The press release announcement from The Open Group regarding
completion of the joint revision and the availability of the
html version of the specification are now online
at http://www.unix-systems.org/version3/

best regards
Andrew

- -----
Andrew Josey                                The Open Group
Austin Group Chair                          Apex Plaza,Forbury Road,
Email: a.josey@opengroup.org                Reading,Berks.RG1 1AX,England
Tel:   +44 118 9508311 ext 2250             Fax: +44 118 9500110


------- End of Forwarded Message



**********************************************************************
The information transmitted is intended only for the person or
entity to which it is addressed and may contain confidential 
and/or privileged material. 
Any review, retransmission, dissemination or other use of, or
taking of any action in reliance upon, this information by 
persons or entities other than the intended recipient is 
prohibited.  
If you received this in error, please contact the sender and 
delete the material from any computer.
**********************************************************************


^ permalink raw reply	[relevance 3%]

* problems with RANDOM in subshells
@ 2002-01-31  3:20  3% Clint Adams
  0 siblings, 0 replies; 200+ results
From: Clint Adams @ 2002-01-31  3:20 UTC (permalink / raw)
  To: zsh-workers; +Cc: 131337-forwarded

One can work around the problem described below by doing

: $RANDOM ; (echo $RANDOM) | cat

Should the random-seeding behavior be changed for subshells?

----- Forwarded message from Falk Hueffner <falk@debian.org> -----

For each subshell, $RANDOM gets initialized to the same value, which
leads to the same sequence of random numbers.  This makes
e. g. playlist shuffling functions way boring, and is generally not
what one would expect.

falk@borkum:~% (echo $RANDOM) | cat
12042
falk@borkum:~% (echo $RANDOM) | cat
12042
falk@borkum:~% (echo $RANDOM) | cat
12042

	Falk

-- System Information
Debian Release: 3.0
Architecture: alpha
Kernel: Linux borkum 2.4.16 #1 Sat Dec 1 23:02:59 CET 2001 alpha
Locale: LANG=C, LC_CTYPE=de_DE

Versions of packages zsh depends on:
ii  libc6.1                  2.2.4-7         GNU C Library: Shared libraries an
ii  libcap1                  1:1.10-12       support for getting/setting POSIX.
ii  libncurses5              5.2.20020112a-2 Shared libraries for terminal hand


----- End forwarded message -----


^ permalink raw reply	[relevance 3%]

* Re: problems with RANDOM in subshells
  @ 2002-01-31 11:07  3% ` Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2002-01-31 11:07 UTC (permalink / raw)
  To: Zsh hackers list

Zefram wrote:
> Clint Adams wrote:
> >Should the random-seeding behavior be changed for subshells?
> 
> No.  We define $RANDOM to be a PRNG; zshparam(1) speaks of seeding it
> (by writing to $RANDOM).  Opening a subshell should not interfere with
> the PRNG sequence, which one might be relying on to be reproducible.

bash has the zsh behaviour, but ksh 88 handles subshells specially.
POSIX/SUS doesn't defined RANDOM, but we probably ought to get this
specified for David Korn's enhanced shell proposal, given that all three
shells under discussion already have RANDOM.

It does seem to me that it's unnecessarily hard for a user to take avoiding
action in a subshell.  At least providing the PID of the subshell process
as separate parameter might give them the start, e.g. make $ZSH_REALPID map
directly to getpid() --- obviously not with a very high degree of
randomness, but I don't think that was a problem in this case.  (The
advantage over providing a real `random' number is that it takes a minute
to write instead of a day.)

-- 
Peter Stephenson <pws@csr.com>                  Software Engineer
CSR Ltd., Science Park, Milton Road,
Cambridge, CB4 0WH, UK                          Tel: +44 (0)1223 392070


**********************************************************************
The information transmitted is intended only for the person or
entity to which it is addressed and may contain confidential 
and/or privileged material. 
Any review, retransmission, dissemination or other use of, or
taking of any action in reliance upon, this information by 
persons or entities other than the intended recipient is 
prohibited.  
If you received this in error, please contact the sender and 
delete the material from any computer.
**********************************************************************


^ permalink raw reply	[relevance 3%]

* PATCH: Re: zsh: can't find terminal definition on vt100
  @ 2002-02-12 16:55  4% ` Bart Schaefer
  0 siblings, 0 replies; 200+ results
From: Bart Schaefer @ 2002-02-12 16:55 UTC (permalink / raw)
  To: rangarao.ragavendran, zsh-workers

[I meant to respond to some of this stuff a while ago, but then started
having trouble with my ISP again, so I couldn't use my mail from home.]

On Feb 5,  1:01pm, rangarao.ragavendran@abbott.com wrote:
}
} I am running zsh on HPUX 11.0 and when I execute
}      export TERM=vt100
} 
} I get the following error:
} 
} zsh: can't find terminal definition on vt100

The short answer was given on zsh-users a few weeks ago:

On Jan 22,  5:07pm, a normal guy wrote:
} Subject: Re: zsh 4.0.4 on HP-UX?
} 
} I fought this problem too, and the fix was similar.  In HP-UX
} 11.00, they redefined the output values of tgetent to 0 (OK) and
} -1 (ERR).  0 used to mean there was no such term capability.
} 
} The old tgetent is still available in the libHcurses library. 
} Putting LDFLAGS='-lHcurses' fixed the problem for me.
} 
} Scott

The long answer is that we need to change configure to detect this.
Here's a potential patch (against current 4.1.x from CVS, but I think
it'll apply to 4.0.4).  I don't have access to HP-UX 11 to test it,
but it works for the "normal" tgetent() on my RedHat Linux box.


Index: acconfig.h
===================================================================
diff -u -r1.8 acconfig.h
--- acconfig.h	2001/10/17 14:38:20	1.8
+++ acconfig.h	2002/02/12 16:36:41
@@ -187,6 +187,9 @@
 /* Define to 1 if tgetent() accepts NULL as a buffer */
 #undef TGETENT_ACCEPTS_NULL
 
+/* Define to 1 if tgetent() returns 0 on success (HP-UX X/Open curses) */
+#undef TGETENT_ZERO_SUCCESS
+
 /* Define to 1 if you use POSIX style signal handling */
 #undef POSIX_SIGNALS
 
Index: zshconfig.ac
===================================================================
diff -u -r1.11 zshconfig.ac
--- zshconfig.ac	2002/01/07 15:18:18	1.11
+++ zshconfig.ac	2002/02/12 16:34:38
@@ -963,14 +963,16 @@
 [AC_TRY_RUN([
 main()
 {
-    int i = tgetent((char*)0,"vt100");
-    if (i > 0) {
-	char tbuf[1024], *u;
-    	u = tbuf;
+    char buf[4096];
+    int r1 = tgetent(buf, "vt100");
+    int r2 = tgetent((char*)0,"vt100");
+    if (r1 >= 0 && r1 == r2) {
+        char tbuf[1024], *u;
+        u = tbuf;
     	tgetstr("cl", &u);
 	creat("conftest.tgetent", 0640);
     }
-    exit(!i || i == -1);
+    exit((r1 != r2) || r2 == -1);
 }
 ],
   if test -f conftest.tgetent; then
@@ -982,6 +984,33 @@
   zsh_cv_func_tgetent_accepts_null=no)])
 if test $zsh_cv_func_tgetent_accepts_null = yes; then
   AC_DEFINE(TGETENT_ACCEPTS_NULL)
+fi
+AC_CACHE_CHECK(if tgetent returns 0 on success,
+zsh_cv_func_tgetent_zero_success,
+[AC_TRY_RUN([
+main()
+{
+    char buf[4096];
+    int r1 = tgetent(buf, "!@#$%^&*");
+    int r2 = tgetent(buf, "vt100");
+    if (r1 < 0 && r2 == 0) {
+        char tbuf[1024], *u;
+        u = tbuf;
+    	tgetstr("cl", &u);
+	creat("conftest.tgetent0", 0640);
+    }
+    exit(r1 == r2);
+}
+],
+  if test -f conftest.tgetent0; then
+    zsh_cv_func_tgetent_zero_success=yes
+  else
+    zsh_cv_func_tgetent_zero_success=no
+  fi,
+  zsh_cv_func_tgetent_zero_success=no,
+  zsh_cv_func_tgetent_zero_success=no)])
+if test $zsh_cv_func_tgetent_zero_success = yes; then
+  AC_DEFINE(TGETENT_ZERO_SUCCESS)
 fi
 
 AC_FUNC_MMAP
Index: Src/init.c
===================================================================
diff -u -r1.7 Src/init.c
--- Src/init.c	2001/10/22 17:03:58	1.7
+++ Src/init.c	2002/02/12 16:40:47
@@ -535,11 +535,15 @@
 
 #ifdef TGETENT_ACCEPTS_NULL
     /* If possible, we let tgetent allocate its own termcap buffer */
-    if (tgetent(NULL, term) != 1) {
+# ifdef TGETENT_ZERO_SUCCESS
+    if (tgetent(NULL, term) != 0)
+# else
+    if (tgetent(NULL, term) != 1)
+# endif
 #else
-    if (tgetent(termbuf, term) != 1) {
+    if (tgetent(termbuf, term) != 1)
 #endif
-
+    {
 	if (isset(INTERACTIVE))
 	    zerr("can't find terminal definition for %s", term, 0);
 	errflag = 0;

-- 
Bart Schaefer                                 Brass Lantern Enterprises
http://www.well.com/user/barts              http://www.brasslantern.com

Zsh: http://www.zsh.org | PHPerl Project: http://phperl.sourceforge.net   


^ permalink raw reply	[relevance 4%]

* RE: Help with compile problem
       [not found]     <Pine.BSF.4.40.0202122237320.98397-100000@brasslantern.com>
@ 2002-02-13 22:35  1% ` Ken Moorley
  0 siblings, 0 replies; 200+ results
From: Ken Moorley @ 2002-02-13 22:35 UTC (permalink / raw)
  To: zsh Users, zsh-workers

[-- Attachment #1: Type: text/plain, Size: 1528 bytes --]

I successfully installed GNU gawk and sed but get the same errors on compile
of zsh 4.0.4 using gcc 3.0.3

I was able to compile zsh 4.0.4 using gcc 2.9.5.2, is there any thing unique
about 3.0.3 that would cause the problem although gawk and sed compiled OK
with gcc 3.0.3

I am also able to successfully compile zsh 3.1.9 using gcc 3.0.3

I have attached the configure and make output text for both versions which
might give some one a clue.

Thanks for you help


Ken

> -----Original Message-----
> From: lantern@brasslantern.com [mailto:lantern@brasslantern.com]On
> Behalf Of Bart Schaefer
> Sent: Wednesday, 13 February 2002 9:47 am
> To: Ken Moorley
> Subject: RE: Help with compile problem
>
>
> On Wed, 13 Feb 2002, Ken Moorley wrote:
>
> > Tried from scratch, tried make distclean all with the same result!
>
> What we (please send to zsh-workers@sunsite.dk, not just to me; I don't
> have a SCO system but someone else might) need to see is the "make" output
> from that clean build.  Some things were obviously not getting rebuilt
> before, but it's hard to tell why during what may be an incremental
> compilation.
>
> A possible cause of the problem is that configure is finding nawk as the
> awk-equivalent on your system; it might be mishandling the awk scripts
> that are used to construct some of the Makefiles.  It'd be best if you
> could get GNU awk (or make sure it's first in your $PATH if you already
> have it).
>
> It's also possible that your sed is not working the way the zsh Makefiles
> expect.
>

[-- Attachment #2: configv4.0.4.txt --]
[-- Type: text/plain, Size: 9078 bytes --]

creating cache ./config.cache
configuring for zsh 4.0.4
checking host system type... i686-pc-sco3.2v5.0.5
checking for gcc... gcc
checking whether the C compiler (gcc  ) works... yes
checking whether the C compiler (gcc  ) is a cross-compiler... no
checking whether we are using GNU C... yes
checking whether gcc accepts -g... yes
checking whether large file support needs explicit enabling... no
checking how to run the C preprocessor... gcc -E
checking whether gcc needs -traditional... no
checking for working const... yes
checking for Cygwin environment... no
checking for mingw32 environment... no
checking for executable suffix... no
checking for gcc option to accept ANSI C... 
checking whether to use prototypes... yes
checking for working alloca.h... no
checking for alloca... yes
checking if the compiler supports union initialisation... yes
checking if signed to unsigned casting is broken... no
checking if the compiler supports variable-length arrays... yes
checking what to set MAXJOB to... 50
checking whether make sets ${MAKE}... yes
checking for a BSD compatible install... ./install-sh -c
checking for mawk... no
checking for gawk... gawk
checking whether ln works... yes
checking for yodl... yodl
checking for dirent.h that defines DIR... yes
checking for opendir in -ldir... no
checking for ANSI C header files... yes
checking whether time.h and sys/time.h may both be included... yes
checking whether stat file-mode macros are broken... no
checking for sys/wait.h that is POSIX.1 compatible... yes
checking for sys/time.h... yes
checking for sys/times.h... yes
checking for sys/select.h... yes
checking for termcap.h... no
checking for termio.h... yes
checking for termios.h... yes
checking for sys/param.h... yes
checking for sys/filio.h... no
checking for string.h... yes
checking for memory.h... yes
checking for limits.h... yes
checking for fcntl.h... yes
checking for libc.h... no
checking for sys/utsname.h... yes
checking for sys/resource.h... yes
checking for locale.h... yes
checking for errno.h... yes
checking for stdlib.h... yes
checking for unistd.h... yes
checking for sys/capability.h... no
checking for utmp.h... yes
checking for utmpx.h... yes
checking for sys/types.h... yes
checking for pwd.h... yes
checking for grp.h... yes
checking for poll.h... yes
checking for sys/mman.h... yes
checking for netinet/in_systm.h... yes
checking for dlfcn.h... yes
checking for dl.h... no
checking for conflicts in sys/time.h and sys/select.h... no
checking POSIX termios... yes
checking TIOCGWINSZ in termios.h... yes
checking for sys/ptem.h... yes
checking for printf in -lc... yes
checking for pow in -lm... yes
checking for library containing tgetent... -ltermcap
checking for library containing yp_all... no
checking for dlopen in -ldl... yes
checking for cap_get_proc in -lcap... no
checking for socket in -lsocket... yes
checking if an include file defines ospeed... no
checking if you must define ospeed... yes
checking return type of signal handlers... void
checking for pid_t... yes
checking for off_t... yes
checking for ino_t... yes
checking for mode_t... yes
checking for uid_t in sys/types.h... yes
checking for size_t... yes
checking if long is 64 bits... no
checking if off_t is 64 bit... no
checking if ino_t is 64 bit... no
checking if compiler has a 64 bit type... long long
checking for a corresponding unsigned 64 bit type... unsigned long long
checking for sigset_t... yes
checking for struct timezone... yes
checking for struct utmp... yes
checking for struct utmpx... yes
checking for ut_host in struct utmp... no
checking for ut_host in struct utmpx... yes
checking for ut_xtime in struct utmpx... yes
checking for ut_tv in struct utmpx... yes
checking for d_ino in struct dirent... yes
checking for d_stat in struct dirent... no
checking for d_ino in struct direct... no
checking for d_stat in struct direct... no
checking for sin6_scope_id in struct sockaddr_in6... no
checking if we need our own h_errno... no
checking for strftime... yes
checking for difftime... yes
checking for gettimeofday... yes
checking for select... yes
checking for poll... yes
checking for readlink... yes
checking for lstat... yes
checking for lchown... yes
checking for faccessx... no
checking for fchdir... yes
checking for ftruncate... yes
checking for fseeko... no
checking for ftello... no
checking for mkfifo... yes
checking for _mktemp... yes
checking for waitpid... yes
checking for wait3... yes
checking for sigaction... yes
checking for sigblock... no
checking for sighold... yes
checking for sigrelse... yes
checking for sigsetmask... no
checking for sigprocmask... yes
checking for killpg... yes
checking for setpgid... yes
checking for setpgrp... yes
checking for tcsetpgrp... yes
checking for tcgetattr... yes
checking for nice... yes
checking for gethostname... yes
checking for gethostbyname2... no
checking for getipnodebyname... no
checking for inet_aton... yes
checking for inet_pton... yes
checking for inet_ntop... yes
checking for getlogin... yes
checking for getpwent... yes
checking for getpwnam... yes
checking for getpwuid... yes
checking for getgrgid... yes
checking for getgrnam... yes
checking for initgroups... yes
checking for nis_list... no
checking for setuid... yes
checking for seteuid... yes
checking for setreuid... yes
checking for setresuid... no
checking for setsid... yes
checking for memcpy... yes
checking for memmove... yes
checking for strstr... yes
checking for strerror... yes
checking for cap_get_proc... no
checking for getrlimit... yes
checking for setlocale... yes
checking for uname... yes
checking for signgam... yes
checking for putenv... yes
checking for getenv... yes
checking for brk... yes
checking for sbrk... yes
checking for pathconf... yes
checking for sysconf... yes
checking for tgetent... yes
checking for tigetflag... no
checking for tigetnum... no
checking for tigetstr... no
checking for setupterm... no
checking for working strcoll... yes
checking if tgetent accepts NULL... no
checking for unistd.h... (cached) yes
checking for getpagesize... yes
checking for working mmap... no
checking whether getpgrp takes no argument... yes
checking for dlopen... yes
checking for dlerror... yes
checking for dlsym... yes
checking for dlclose... yes
checking for load... no
checking for loadquery... no
checking for loadbind... no
checking for unload... no
checking for shl_load... no
checking for shl_unload... no
checking for shl_findsym... no
checking what style of signals to use... POSIX_SIGNALS
checking where signal.h is located... /usr/local/lib/gcc-lib/i686-pc-sco3.2v5.0.5/3.0.3/include/sys/signal.h
checking where the RLIMIT macros are located... /usr/include/sys/resource.h
checking if rlim_t is longer than a long... no
checking if the rlim_t is unsigned... yes
checking for rlim_t... yes
checking for /dev/fd filesystem... /dev/fd
checking for RFS superroot directory... no
checking whether we should use the native getcwd... no
checking for NIS... no
checking for NIS+... no
checking for utmp file... /etc/utmp
checking for wtmp file... /etc/wtmp
checking for utmpx file... /etc/utmpx
checking for wtmpx file... /etc/wtmpx
checking for brk() prototype in <unistd.h>... yes
checking for sbrk() prototype in <unistd.h>... yes
checking for ioctl prototype in <sys/ioctl.h>... no
checking for mknod prototype in <sys/stat.h>... yes
checking if named FIFOs work... yes
checking if echo in /bin/sh interprets escape sequences... yes
checking if link() works... yes
checking if kill(pid, 0) returns ESRCH correctly... yes
checking if POSIX sigsuspend() works... yes
checking if tcsetpgrp() actually works... yes
checking if getpwnam() is faked... no
checking base type of the third argument to accept... int
checking if your system uses ELF binaries... yes
checking if your dlsym() needs a leading underscore... 
checking if environ is available in shared libraries... no
checking if tgetent is available in shared libraries... no
creating ./config.modules
updating cache ./config.cache
creating ./config.status

zsh configuration
-----------------
zsh version               : 4.0.4
host operating system     : i686-pc-sco3.2v5.0.5
source code location      : .
compiler                  : gcc
preprocessor flags        : 
executable compiler flags : -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2
executable linker flags   :   -s 
library flags             : -lsocket -ldl -ltermcap -lm  -lc
installation basename     : zsh
binary install path       : /usr/local/bin
man page install path     : /usr/local/man
info install path         : /usr/local/info
functions install path    : /usr/local/share/zsh/4.0.4/functions
See config.modules for installed modules and functions.

creating Config/defs.mk
creating Makefile
creating Doc/Makefile
creating Etc/Makefile
creating Src/Makefile
creating Test/Makefile
creating config.h

[-- Attachment #3: makev4.0.4.txt --]
[-- Type: text/plain, Size: 74258 bytes --]

make[1]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src'
cd .. && /bin/sh $top_srcdir/Src/mkmakemod.sh Src Makemod
creating Src/Makemod.in
creating Src/Makemod
make[2]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src'
echo 'timestamp for *.mdd files' > ../Src/modules.stamp
creating Src/Builtins/Makefile.in
creating Src/Builtins/Makefile
make[3]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Builtins'
make[3]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Builtins'
creating Src/Modules/Makefile.in
creating Src/Modules/Makefile
make[3]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Modules'
make[3]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Modules'
creating Src/Zle/Makefile.in
creating Src/Zle/Makefile
make[3]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Zle'
make[3]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Zle'
make[2]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src'
make[2]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src'
make[3]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src'
make[3]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src'
Updated `zsh.mdh'.
make[3]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Builtins'
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Builtins'
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Builtins'
Updated `rlimits.mdh'.
echo 'timestamp for rlimits.mdh against rlimits.mdd' > rlimits.mdhs
gawk -f ../../Src/makepro.awk rlimits.c Src/Builtins > rlimits.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < rlimits.syms) \
	> rlimits.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < rlimits.syms) \
	> `echo rlimits.epro | sed 's/\.epro$/.pro/'`
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Builtins'
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Builtins'
Updated `rlimits.mdh'.
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Builtins'
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Builtins'
Updated `sched.mdh'.
echo 'timestamp for sched.mdh against sched.mdd' > sched.mdhs
gawk -f ../../Src/makepro.awk sched.c Src/Builtins > sched.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < sched.syms) \
	> sched.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < sched.syms) \
	> `echo sched.epro | sed 's/\.epro$/.pro/'`
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Builtins'
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Builtins'
Updated `sched.mdh'.
make[3]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Builtins'
make[3]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Modules'
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Modules'
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Modules'
Updated `parameter.mdh'.
echo 'timestamp for parameter.mdh against parameter.mdd' > parameter.mdhs
gawk -f ../../Src/makepro.awk parameter.c Src/Modules > parameter.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < parameter.syms) \
	> parameter.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < parameter.syms) \
	> `echo parameter.epro | sed 's/\.epro$/.pro/'`
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Modules'
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Modules'
Updated `parameter.mdh'.
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Modules'
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Modules'
Updated `termcap.mdh'.
echo 'timestamp for termcap.mdh against termcap.mdd' > termcap.mdhs
gawk -f ../../Src/makepro.awk termcap.c Src/Modules > termcap.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < termcap.syms) \
	> termcap.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < termcap.syms) \
	> `echo termcap.epro | sed 's/\.epro$/.pro/'`
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Modules'
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Modules'
Updated `termcap.mdh'.
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Modules'
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Modules'
Updated `terminfo.mdh'.
echo 'timestamp for terminfo.mdh against terminfo.mdd' > terminfo.mdhs
gawk -f ../../Src/makepro.awk terminfo.c Src/Modules > terminfo.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < terminfo.syms) \
	> terminfo.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < terminfo.syms) \
	> `echo terminfo.epro | sed 's/\.epro$/.pro/'`
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Modules'
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Modules'
Updated `terminfo.mdh'.
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Zle'
( \
    echo '/** thingies.list                            **/'; \
    echo '/** thingy structures for the known thingies **/'; \
    echo; \
    echo '/* format: T("name", TH_FLAGS, w_widget, t_nextthingy) */'; \
    echo; \
    sed -e 's/#.*//; /^$/d; s/" *,.*/"/' \
	-e 's/^"/T("/; s/$/, 0,/; h' \
	-e 's/-//g; s/^.*"\(.*\)".*/w_\1, t_D\1)/' \
	-e 'H; g; s/\n/ /' \
	< ./iwidgets.list; \
    sed -e 's/#.*//; /^$/d; s/" *,.*/"/' \
	-e 's/^"/T("./; s/$/, TH_IMMORTAL,/; h' \
	-e 's/-//g; s/^.*"\.\(.*\)".*/w_\1, t_\1)/' \
	-e 'H; g; s/\n/ /' \
	< ./iwidgets.list; \
) > thingies.list
( \
    echo '/** zle_things.h                              **/'; \
    echo '/** indices of and pointers to known thingies **/'; \
    echo; \
    echo 'enum {'; \
    sed -n -f ./zle_things.sed < thingies.list; \
    echo '    ZLE_BUILTIN_THINGY_COUNT'; \
    echo '};'; \
) > zle_things.h
make[5]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Zle'
make[5]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Zle'
Updated `zle.mdh'.
echo 'timestamp for zle.mdh against zle.mdd' > zle.mdhs
gawk -f ../../Src/makepro.awk zle_bindings.c Src/Zle > zle_bindings.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < zle_bindings.syms) \
	> zle_bindings.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < zle_bindings.syms) \
	> `echo zle_bindings.epro | sed 's/\.epro$/.pro/'`
gawk -f ../../Src/makepro.awk zle_hist.c Src/Zle > zle_hist.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < zle_hist.syms) \
	> zle_hist.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < zle_hist.syms) \
	> `echo zle_hist.epro | sed 's/\.epro$/.pro/'`
gawk -f ../../Src/makepro.awk zle_keymap.c Src/Zle > zle_keymap.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < zle_keymap.syms) \
	> zle_keymap.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < zle_keymap.syms) \
	> `echo zle_keymap.epro | sed 's/\.epro$/.pro/'`
gawk -f ../../Src/makepro.awk zle_main.c Src/Zle > zle_main.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < zle_main.syms) \
	> zle_main.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < zle_main.syms) \
	> `echo zle_main.epro | sed 's/\.epro$/.pro/'`
gawk -f ../../Src/makepro.awk zle_misc.c Src/Zle > zle_misc.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < zle_misc.syms) \
	> zle_misc.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < zle_misc.syms) \
	> `echo zle_misc.epro | sed 's/\.epro$/.pro/'`
gawk -f ../../Src/makepro.awk zle_move.c Src/Zle > zle_move.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < zle_move.syms) \
	> zle_move.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < zle_move.syms) \
	> `echo zle_move.epro | sed 's/\.epro$/.pro/'`
gawk -f ../../Src/makepro.awk zle_params.c Src/Zle > zle_params.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < zle_params.syms) \
	> zle_params.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < zle_params.syms) \
	> `echo zle_params.epro | sed 's/\.epro$/.pro/'`
gawk -f ../../Src/makepro.awk zle_refresh.c Src/Zle > zle_refresh.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < zle_refresh.syms) \
	> zle_refresh.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < zle_refresh.syms) \
	> `echo zle_refresh.epro | sed 's/\.epro$/.pro/'`
gawk -f ../../Src/makepro.awk zle_thingy.c Src/Zle > zle_thingy.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < zle_thingy.syms) \
	> zle_thingy.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < zle_thingy.syms) \
	> `echo zle_thingy.epro | sed 's/\.epro$/.pro/'`
gawk -f ../../Src/makepro.awk zle_tricky.c Src/Zle > zle_tricky.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < zle_tricky.syms) \
	> zle_tricky.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < zle_tricky.syms) \
	> `echo zle_tricky.epro | sed 's/\.epro$/.pro/'`
gawk -f ../../Src/makepro.awk zle_utils.c Src/Zle > zle_utils.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < zle_utils.syms) \
	> zle_utils.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < zle_utils.syms) \
	> `echo zle_utils.epro | sed 's/\.epro$/.pro/'`
gawk -f ../../Src/makepro.awk zle_vi.c Src/Zle > zle_vi.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < zle_vi.syms) \
	> zle_vi.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < zle_vi.syms) \
	> `echo zle_vi.epro | sed 's/\.epro$/.pro/'`
gawk -f ../../Src/makepro.awk zle_word.c Src/Zle > zle_word.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < zle_word.syms) \
	> zle_word.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < zle_word.syms) \
	> `echo zle_word.epro | sed 's/\.epro$/.pro/'`
make[5]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Zle'
make[5]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Zle'
Updated `zle.mdh'.
make[5]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Zle'
make[5]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Zle'
Updated `complete.mdh'.
echo 'timestamp for complete.mdh against complete.mdd' > complete.mdhs
gawk -f ../../Src/makepro.awk complete.c Src/Zle > complete.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < complete.syms) \
	> complete.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < complete.syms) \
	> `echo complete.epro | sed 's/\.epro$/.pro/'`
gawk -f ../../Src/makepro.awk compcore.c Src/Zle > compcore.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < compcore.syms) \
	> compcore.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < compcore.syms) \
	> `echo compcore.epro | sed 's/\.epro$/.pro/'`
gawk -f ../../Src/makepro.awk compmatch.c Src/Zle > compmatch.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < compmatch.syms) \
	> compmatch.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < compmatch.syms) \
	> `echo compmatch.epro | sed 's/\.epro$/.pro/'`
gawk -f ../../Src/makepro.awk compresult.c Src/Zle > compresult.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < compresult.syms) \
	> compresult.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < compresult.syms) \
	> `echo compresult.epro | sed 's/\.epro$/.pro/'`
make[5]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Zle'
make[5]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Zle'
Updated `complete.mdh'.
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Zle'
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Modules'
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Modules'
Updated `zutil.mdh'.
echo 'timestamp for zutil.mdh against zutil.mdd' > zutil.mdhs
gawk -f ../../Src/makepro.awk zutil.c Src/Modules > zutil.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < zutil.syms) \
	> zutil.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < zutil.syms) \
	> `echo zutil.epro | sed 's/\.epro$/.pro/'`
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Modules'
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Modules'
Updated `zutil.mdh'.
make[3]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Modules'
make[3]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Zle'
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Zle'
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Zle'
Updated `compctl.mdh'.
echo 'timestamp for compctl.mdh against compctl.mdd' > compctl.mdhs
gawk -f ../../Src/makepro.awk compctl.c Src/Zle > compctl.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < compctl.syms) \
	> compctl.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < compctl.syms) \
	> `echo compctl.epro | sed 's/\.epro$/.pro/'`
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Zle'
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Zle'
Updated `compctl.mdh'.
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Zle'
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Zle'
Updated `complist.mdh'.
echo 'timestamp for complist.mdh against complist.mdd' > complist.mdhs
gawk -f ../../Src/makepro.awk complist.c Src/Zle > complist.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < complist.syms) \
	> complist.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < complist.syms) \
	> `echo complist.epro | sed 's/\.epro$/.pro/'`
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Zle'
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Zle'
Updated `complist.mdh'.
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Zle'
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Zle'
Updated `computil.mdh'.
echo 'timestamp for computil.mdh against computil.mdd' > computil.mdhs
gawk -f ../../Src/makepro.awk computil.c Src/Zle > computil.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < computil.syms) \
	> computil.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < computil.syms) \
	> `echo computil.epro | sed 's/\.epro$/.pro/'`
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Zle'
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Zle'
Updated `computil.mdh'.
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Zle'
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Zle'
Updated `zleparameter.mdh'.
echo 'timestamp for zleparameter.mdh against zleparameter.mdd' > zleparameter.mdhs
gawk -f ../../Src/makepro.awk zleparameter.c Src/Zle > zleparameter.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < zleparameter.syms) \
	> zleparameter.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < zleparameter.syms) \
	> `echo zleparameter.epro | sed 's/\.epro$/.pro/'`
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Zle'
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Zle'
Updated `zleparameter.mdh'.
make[3]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src/Zle'
make[2]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src'
rm -f stamp-modobjs.tmp
make[2]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src'
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o builtin.o builtin.c
In file included from builtin.c:30:
zsh.mdh:15:25: ./sigcount.h: No such file or directory
In file included from builtin.c:30:
zsh.mdh:30:25: builtin.epro: No such file or directory
zsh.mdh:31:24: compat.epro: No such file or directory
zsh.mdh:32:22: cond.epro: No such file or directory
zsh.mdh:33:22: exec.epro: No such file or directory
zsh.mdh:34:22: glob.epro: No such file or directory
zsh.mdh:35:27: hashtable.epro: No such file or directory
zsh.mdh:36:22: hist.epro: No such file or directory
zsh.mdh:37:22: init.epro: No such file or directory
zsh.mdh:38:23: input.epro: No such file or directory
zsh.mdh:39:22: jobs.epro: No such file or directory
zsh.mdh:40:21: lex.epro: No such file or directory
zsh.mdh:41:26: linklist.epro: No such file or directory
zsh.mdh:42:22: loop.epro: No such file or directory
zsh.mdh:43:22: math.epro: No such file or directory
zsh.mdh:44:21: mem.epro: No such file or directory
zsh.mdh:45:24: module.epro: No such file or directory
zsh.mdh:46:25: options.epro: No such file or directory
zsh.mdh:47:24: params.epro: No such file or directory
zsh.mdh:48:23: parse.epro: No such file or directory
zsh.mdh:49:25: pattern.epro: No such file or directory
zsh.mdh:50:24: prompt.epro: No such file or directory
zsh.mdh:51:25: signals.epro: No such file or directory
zsh.mdh:52:26: signames.epro: No such file or directory
zsh.mdh:53:24: string.epro: No such file or directory
zsh.mdh:54:23: subst.epro: No such file or directory
zsh.mdh:55:22: text.epro: No such file or directory
zsh.mdh:56:23: utils.epro: No such file or directory
zsh.mdh:57:23: watch.epro: No such file or directory
builtin.c:31:23: builtin.pro: No such file or directory
builtin.c:42: `bin_test' undeclared here (not in a function)
builtin.c:42: initializer element is not constant
builtin.c:42: (near initialization for `builtins[5].handlerfunc')
builtin.c:42: initializer element is not constant
builtin.c:42: (near initialization for `builtins[5]')
builtin.c:43: `bin_dot' undeclared here (not in a function)
builtin.c:43: initializer element is not constant
builtin.c:43: (near initialization for `builtins[6].handlerfunc')
builtin.c:43: initializer element is not constant
builtin.c:43: (near initialization for `builtins[6]')
builtin.c:44: `bin_true' undeclared here (not in a function)
builtin.c:44: initializer element is not constant
builtin.c:44: (near initialization for `builtins[7].handlerfunc')
builtin.c:44: initializer element is not constant
builtin.c:44: (near initialization for `builtins[7]')
builtin.c:45: `bin_alias' undeclared here (not in a function)
builtin.c:45: initializer element is not constant
builtin.c:45: (near initialization for `builtins[8].handlerfunc')
builtin.c:45: initializer element is not constant
builtin.c:45: (near initialization for `builtins[8]')
builtin.c:46: `bin_functions' undeclared here (not in a function)
builtin.c:46: initializer element is not constant
builtin.c:46: (near initialization for `builtins[9].handlerfunc')
builtin.c:46: initializer element is not constant
builtin.c:46: (near initialization for `builtins[9]')
builtin.c:47: `bin_fg' undeclared here (not in a function)
builtin.c:47: initializer element is not constant
builtin.c:47: (near initialization for `builtins[10].handlerfunc')
builtin.c:47: initializer element is not constant
builtin.c:47: (near initialization for `builtins[10]')
builtin.c:48: `bin_break' undeclared here (not in a function)
builtin.c:48: initializer element is not constant
builtin.c:48: (near initialization for `builtins[11].handlerfunc')
builtin.c:48: initializer element is not constant
builtin.c:48: (near initialization for `builtins[11]')
builtin.c:49: `bin_break' undeclared here (not in a function)
builtin.c:49: initializer element is not constant
builtin.c:49: (near initialization for `builtins[12].handlerfunc')
builtin.c:49: initializer element is not constant
builtin.c:49: (near initialization for `builtins[12]')
builtin.c:50: `bin_cd' undeclared here (not in a function)
builtin.c:50: initializer element is not constant
builtin.c:50: (near initialization for `builtins[13].handlerfunc')
builtin.c:50: initializer element is not constant
builtin.c:50: (near initialization for `builtins[13]')
builtin.c:51: `bin_cd' undeclared here (not in a function)
builtin.c:51: initializer element is not constant
builtin.c:51: (near initialization for `builtins[14].handlerfunc')
builtin.c:51: initializer element is not constant
builtin.c:51: (near initialization for `builtins[14]')
builtin.c:52: `bin_break' undeclared here (not in a function)
builtin.c:52: initializer element is not constant
builtin.c:52: (near initialization for `builtins[15].handlerfunc')
builtin.c:52: initializer element is not constant
builtin.c:52: (near initialization for `builtins[15]')
builtin.c:53: `bin_typeset' undeclared here (not in a function)
builtin.c:53: initializer element is not constant
builtin.c:53: (near initialization for `builtins[16].handlerfunc')
builtin.c:53: initializer element is not constant
builtin.c:53: (near initialization for `builtins[16]')
builtin.c:54: `bin_dirs' undeclared here (not in a function)
builtin.c:54: initializer element is not constant
builtin.c:54: (near initialization for `builtins[17].handlerfunc')
builtin.c:54: initializer element is not constant
builtin.c:54: (near initialization for `builtins[17]')
builtin.c:55: `bin_enable' undeclared here (not in a function)
builtin.c:55: initializer element is not constant
builtin.c:55: (near initialization for `builtins[18].handlerfunc')
builtin.c:55: initializer element is not constant
builtin.c:55: (near initialization for `builtins[18]')
builtin.c:56: `bin_fg' undeclared here (not in a function)
builtin.c:56: initializer element is not constant
builtin.c:56: (near initialization for `builtins[19].handlerfunc')
builtin.c:56: initializer element is not constant
builtin.c:56: (near initialization for `builtins[19]')
builtin.c:57: `bin_print' undeclared here (not in a function)
builtin.c:57: initializer element is not constant
builtin.c:57: (near initialization for `builtins[20].handlerfunc')
builtin.c:57: initializer element is not constant
builtin.c:57: (near initialization for `builtins[20]')
builtin.c:58: `bin_emulate' undeclared here (not in a function)
builtin.c:58: initializer element is not constant
builtin.c:58: (near initialization for `builtins[21].handlerfunc')
builtin.c:58: initializer element is not constant
builtin.c:58: (near initialization for `builtins[21]')
builtin.c:59: `bin_enable' undeclared here (not in a function)
builtin.c:59: initializer element is not constant
builtin.c:59: (near initialization for `builtins[22].handlerfunc')
builtin.c:59: initializer element is not constant
builtin.c:59: (near initialization for `builtins[22]')
builtin.c:60: `bin_eval' undeclared here (not in a function)
builtin.c:60: initializer element is not constant
builtin.c:60: (near initialization for `builtins[23].handlerfunc')
builtin.c:60: initializer element is not constant
builtin.c:60: (near initialization for `builtins[23]')
builtin.c:61: `bin_break' undeclared here (not in a function)
builtin.c:61: initializer element is not constant
builtin.c:61: (near initialization for `builtins[24].handlerfunc')
builtin.c:61: initializer element is not constant
builtin.c:61: (near initialization for `builtins[24]')
builtin.c:62: `bin_typeset' undeclared here (not in a function)
builtin.c:62: initializer element is not constant
builtin.c:62: (near initialization for `builtins[25].handlerfunc')
builtin.c:62: initializer element is not constant
builtin.c:62: (near initialization for `builtins[25]')
builtin.c:63: `bin_false' undeclared here (not in a function)
builtin.c:63: initializer element is not constant
builtin.c:63: (near initialization for `builtins[26].handlerfunc')
builtin.c:63: initializer element is not constant
builtin.c:63: (near initialization for `builtins[26]')
builtin.c:64: `bin_fc' undeclared here (not in a function)
builtin.c:64: initializer element is not constant
builtin.c:64: (near initialization for `builtins[27].handlerfunc')
builtin.c:64: initializer element is not constant
builtin.c:64: (near initialization for `builtins[27]')
builtin.c:65: `bin_fg' undeclared here (not in a function)
builtin.c:65: initializer element is not constant
builtin.c:65: (near initialization for `builtins[28].handlerfunc')
builtin.c:65: initializer element is not constant
builtin.c:65: (near initialization for `builtins[28]')
builtin.c:66: `bin_typeset' undeclared here (not in a function)
builtin.c:66: initializer element is not constant
builtin.c:66: (near initialization for `builtins[29].handlerfunc')
builtin.c:66: initializer element is not constant
builtin.c:66: (near initialization for `builtins[29]')
builtin.c:67: `bin_functions' undeclared here (not in a function)
builtin.c:67: initializer element is not constant
builtin.c:67: (near initialization for `builtins[30].handlerfunc')
builtin.c:67: initializer element is not constant
builtin.c:67: (near initialization for `builtins[30]')
builtin.c:68: `bin_read' undeclared here (not in a function)
builtin.c:68: initializer element is not constant
builtin.c:68: (near initialization for `builtins[31].handlerfunc')
builtin.c:68: initializer element is not constant
builtin.c:68: (near initialization for `builtins[31]')
builtin.c:69: `bin_getopts' undeclared here (not in a function)
builtin.c:69: initializer element is not constant
builtin.c:69: (near initialization for `builtins[32].handlerfunc')
builtin.c:69: initializer element is not constant
builtin.c:69: (near initialization for `builtins[32]')
builtin.c:70: `bin_hash' undeclared here (not in a function)
builtin.c:70: initializer element is not constant
builtin.c:70: (near initialization for `builtins[33].handlerfunc')
builtin.c:70: initializer element is not constant
builtin.c:70: (near initialization for `builtins[33]')
builtin.c:76: `bin_fc' undeclared here (not in a function)
builtin.c:76: initializer element is not constant
builtin.c:76: (near initialization for `builtins[34].handlerfunc')
builtin.c:76: initializer element is not constant
builtin.c:76: (near initialization for `builtins[34]')
builtin.c:77: `bin_typeset' undeclared here (not in a function)
builtin.c:77: initializer element is not constant
builtin.c:77: (near initialization for `builtins[35].handlerfunc')
builtin.c:77: initializer element is not constant
builtin.c:77: (near initialization for `builtins[35]')
builtin.c:78: `bin_fg' undeclared here (not in a function)
builtin.c:78: initializer element is not constant
builtin.c:78: (near initialization for `builtins[36].handlerfunc')
builtin.c:78: initializer element is not constant
builtin.c:78: (near initialization for `builtins[36]')
builtin.c:79: `bin_kill' undeclared here (not in a function)
builtin.c:79: initializer element is not constant
builtin.c:79: (near initialization for `builtins[37].handlerfunc')
builtin.c:79: initializer element is not constant
builtin.c:79: (near initialization for `builtins[37]')
builtin.c:80: `bin_let' undeclared here (not in a function)
builtin.c:80: initializer element is not constant
builtin.c:80: (near initialization for `builtins[38].handlerfunc')
builtin.c:80: initializer element is not constant
builtin.c:80: (near initialization for `builtins[38]')
builtin.c:81: `bin_typeset' undeclared here (not in a function)
builtin.c:81: initializer element is not constant
builtin.c:81: (near initialization for `builtins[39].handlerfunc')
builtin.c:81: initializer element is not constant
builtin.c:81: (near initialization for `builtins[39]')
builtin.c:82: `bin_log' undeclared here (not in a function)
builtin.c:82: initializer element is not constant
builtin.c:82: (near initialization for `builtins[40].handlerfunc')
builtin.c:82: initializer element is not constant
builtin.c:82: (near initialization for `builtins[40]')
builtin.c:83: `bin_break' undeclared here (not in a function)
builtin.c:83: initializer element is not constant
builtin.c:83: (near initialization for `builtins[41].handlerfunc')
builtin.c:83: initializer element is not constant
builtin.c:83: (near initialization for `builtins[41]')
builtin.c:93: `bin_cd' undeclared here (not in a function)
builtin.c:93: initializer element is not constant
builtin.c:93: (near initialization for `builtins[42].handlerfunc')
builtin.c:93: initializer element is not constant
builtin.c:93: (near initialization for `builtins[42]')
builtin.c:94: `bin_print' undeclared here (not in a function)
builtin.c:94: initializer element is not constant
builtin.c:94: (near initialization for `builtins[43].handlerfunc')
builtin.c:94: initializer element is not constant
builtin.c:94: (near initialization for `builtins[43]')
builtin.c:95: `bin_cd' undeclared here (not in a function)
builtin.c:95: initializer element is not constant
builtin.c:95: (near initialization for `builtins[44].handlerfunc')
builtin.c:95: initializer element is not constant
builtin.c:95: (near initialization for `builtins[44]')
builtin.c:96: `bin_print' undeclared here (not in a function)
builtin.c:96: initializer element is not constant
builtin.c:96: (near initialization for `builtins[45].handlerfunc')
builtin.c:96: initializer element is not constant
builtin.c:96: (near initialization for `builtins[45]')
builtin.c:97: `bin_pwd' undeclared here (not in a function)
builtin.c:97: initializer element is not constant
builtin.c:97: (near initialization for `builtins[46].handlerfunc')
builtin.c:97: initializer element is not constant
builtin.c:97: (near initialization for `builtins[46]')
builtin.c:98: `bin_fc' undeclared here (not in a function)
builtin.c:98: initializer element is not constant
builtin.c:98: (near initialization for `builtins[47].handlerfunc')
builtin.c:98: initializer element is not constant
builtin.c:98: (near initialization for `builtins[47]')
builtin.c:99: `bin_read' undeclared here (not in a function)
builtin.c:99: initializer element is not constant
builtin.c:99: (near initialization for `builtins[48].handlerfunc')
builtin.c:99: initializer element is not constant
builtin.c:99: (near initialization for `builtins[48]')
builtin.c:100: `bin_typeset' undeclared here (not in a function)
builtin.c:100: initializer element is not constant
builtin.c:100: (near initialization for `builtins[49].handlerfunc')
builtin.c:100: initializer element is not constant
builtin.c:100: (near initialization for `builtins[49]')
builtin.c:101: `bin_hash' undeclared here (not in a function)
builtin.c:101: initializer element is not constant
builtin.c:101: (near initialization for `builtins[50].handlerfunc')
builtin.c:101: initializer element is not constant
builtin.c:101: (near initialization for `builtins[50]')
builtin.c:102: `bin_break' undeclared here (not in a function)
builtin.c:102: initializer element is not constant
builtin.c:102: (near initialization for `builtins[51].handlerfunc')
builtin.c:102: initializer element is not constant
builtin.c:102: (near initialization for `builtins[51]')
builtin.c:103: `bin_set' undeclared here (not in a function)
builtin.c:103: initializer element is not constant
builtin.c:103: (near initialization for `builtins[52].handlerfunc')
builtin.c:103: initializer element is not constant
builtin.c:103: (near initialization for `builtins[52]')
builtin.c:104: `bin_setopt' undeclared here (not in a function)
builtin.c:104: initializer element is not constant
builtin.c:104: (near initialization for `builtins[53].handlerfunc')
builtin.c:104: initializer element is not constant
builtin.c:104: (near initialization for `builtins[53]')
builtin.c:105: `bin_shift' undeclared here (not in a function)
builtin.c:105: initializer element is not constant
builtin.c:105: (near initialization for `builtins[54].handlerfunc')
builtin.c:105: initializer element is not constant
builtin.c:105: (near initialization for `builtins[54]')
builtin.c:106: `bin_dot' undeclared here (not in a function)
builtin.c:106: initializer element is not constant
builtin.c:106: (near initialization for `builtins[55].handlerfunc')
builtin.c:106: initializer element is not constant
builtin.c:106: (near initialization for `builtins[55]')
builtin.c:107: `bin_suspend' undeclared here (not in a function)
builtin.c:107: initializer element is not constant
builtin.c:107: (near initialization for `builtins[56].handlerfunc')
builtin.c:107: initializer element is not constant
builtin.c:107: (near initialization for `builtins[56]')
builtin.c:108: `bin_test' undeclared here (not in a function)
builtin.c:108: initializer element is not constant
builtin.c:108: (near initialization for `builtins[57].handlerfunc')
builtin.c:108: initializer element is not constant
builtin.c:108: (near initialization for `builtins[57]')
builtin.c:109: `bin_ttyctl' undeclared here (not in a function)
builtin.c:109: initializer element is not constant
builtin.c:109: (near initialization for `builtins[58].handlerfunc')
builtin.c:109: initializer element is not constant
builtin.c:109: (near initialization for `builtins[58]')
builtin.c:110: `bin_times' undeclared here (not in a function)
builtin.c:110: initializer element is not constant
builtin.c:110: (near initialization for `builtins[59].handlerfunc')
builtin.c:110: initializer element is not constant
builtin.c:110: (near initialization for `builtins[59]')
builtin.c:111: `bin_trap' undeclared here (not in a function)
builtin.c:111: initializer element is not constant
builtin.c:111: (near initialization for `builtins[60].handlerfunc')
builtin.c:111: initializer element is not constant
builtin.c:111: (near initialization for `builtins[60]')
builtin.c:112: `bin_true' undeclared here (not in a function)
builtin.c:112: initializer element is not constant
builtin.c:112: (near initialization for `builtins[61].handlerfunc')
builtin.c:112: initializer element is not constant
builtin.c:112: (near initialization for `builtins[61]')
builtin.c:113: `bin_whence' undeclared here (not in a function)
builtin.c:113: initializer element is not constant
builtin.c:113: (near initialization for `builtins[62].handlerfunc')
builtin.c:113: initializer element is not constant
builtin.c:113: (near initialization for `builtins[62]')
builtin.c:114: `bin_typeset' undeclared here (not in a function)
builtin.c:114: initializer element is not constant
builtin.c:114: (near initialization for `builtins[63].handlerfunc')
builtin.c:114: initializer element is not constant
builtin.c:114: (near initialization for `builtins[63]')
builtin.c:115: `bin_umask' undeclared here (not in a function)
builtin.c:115: initializer element is not constant
builtin.c:115: (near initialization for `builtins[64].handlerfunc')
builtin.c:115: initializer element is not constant
builtin.c:115: (near initialization for `builtins[64]')
builtin.c:116: `bin_unhash' undeclared here (not in a function)
builtin.c:116: initializer element is not constant
builtin.c:116: (near initialization for `builtins[65].handlerfunc')
builtin.c:116: initializer element is not constant
builtin.c:116: (near initialization for `builtins[65]')
builtin.c:117: `bin_unhash' undeclared here (not in a function)
builtin.c:117: initializer element is not constant
builtin.c:117: (near initialization for `builtins[66].handlerfunc')
builtin.c:117: initializer element is not constant
builtin.c:117: (near initialization for `builtins[66]')
builtin.c:118: `bin_unhash' undeclared here (not in a function)
builtin.c:118: initializer element is not constant
builtin.c:118: (near initialization for `builtins[67].handlerfunc')
builtin.c:118: initializer element is not constant
builtin.c:118: (near initialization for `builtins[67]')
builtin.c:119: `bin_unset' undeclared here (not in a function)
builtin.c:119: initializer element is not constant
builtin.c:119: (near initialization for `builtins[68].handlerfunc')
builtin.c:119: initializer element is not constant
builtin.c:119: (near initialization for `builtins[68]')
builtin.c:120: `bin_setopt' undeclared here (not in a function)
builtin.c:120: initializer element is not constant
builtin.c:120: (near initialization for `builtins[69].handlerfunc')
builtin.c:120: initializer element is not constant
builtin.c:120: (near initialization for `builtins[69]')
builtin.c:121: `bin_fg' undeclared here (not in a function)
builtin.c:121: initializer element is not constant
builtin.c:121: (near initialization for `builtins[70].handlerfunc')
builtin.c:121: initializer element is not constant
builtin.c:121: (near initialization for `builtins[70]')
builtin.c:122: `bin_whence' undeclared here (not in a function)
builtin.c:122: initializer element is not constant
builtin.c:122: (near initialization for `builtins[71].handlerfunc')
builtin.c:122: initializer element is not constant
builtin.c:122: (near initialization for `builtins[71]')
builtin.c:123: `bin_whence' undeclared here (not in a function)
builtin.c:123: initializer element is not constant
builtin.c:123: (near initialization for `builtins[72].handlerfunc')
builtin.c:123: initializer element is not constant
builtin.c:123: (near initialization for `builtins[72]')
builtin.c:124: `bin_whence' undeclared here (not in a function)
builtin.c:124: initializer element is not constant
builtin.c:124: (near initialization for `builtins[73].handlerfunc')
builtin.c:124: initializer element is not constant
builtin.c:124: (near initialization for `builtins[73]')
builtin.c:125: `bin_zmodload' undeclared here (not in a function)
builtin.c:125: initializer element is not constant
builtin.c:125: (near initialization for `builtins[74].handlerfunc')
builtin.c:125: initializer element is not constant
builtin.c:125: (near initialization for `builtins[74]')
builtin.c:126: `bin_zcompile' undeclared here (not in a function)
builtin.c:126: initializer element is not constant
builtin.c:126: (near initialization for `builtins[75].handlerfunc')
builtin.c:126: initializer element is not constant
builtin.c:126: (near initialization for `builtins[75]')
builtin.c:141: warning: no previous prototype for `createbuiltintable'
builtin.c: In function `createbuiltintable':
builtin.c:142: warning: assignment makes pointer from integer without a cast
builtin.c:144: `hasher' undeclared (first use in this function)
builtin.c:144: (Each undeclared identifier is reported only once
builtin.c:144: for each function it appears in.)
builtin.c:148: `addhashnode' undeclared (first use in this function)
builtin.c:149: `gethashnode' undeclared (first use in this function)
builtin.c:150: `gethashnode2' undeclared (first use in this function)
builtin.c:151: `removehashnode' undeclared (first use in this function)
builtin.c:152: `disablehashnode' undeclared (first use in this function)
builtin.c:153: `enablehashnode' undeclared (first use in this function)
builtin.c:154: `freebuiltinnode' undeclared (first use in this function)
builtin.c:155: `printbuiltinnode' undeclared (first use in this function)
builtin.c: At top level:
builtin.c:165: `printbuiltinnode' used prior to declaration
builtin.c:190: `freebuiltinnode' used prior to declaration
builtin.c:210: warning: no previous prototype for `execbuiltin'
builtin.c: In function `execbuiltin':
builtin.c:215: `opts' undeclared (first use in this function)
builtin.c:257: warning: assignment makes pointer from integer without a cast
builtin.c:264: warning: assignment makes pointer from integer without a cast
builtin.c:285: `typtab' undeclared (first use in this function)
builtin.c:343: `errflag' undeclared (first use in this function)
builtin.c:358: `xtrerr' undeclared (first use in this function)
builtin.c: At top level:
builtin.c:378: warning: no previous prototype for `bin_enable'
builtin.c: In function `bin_enable':
builtin.c:388: `shfunctab' undeclared (first use in this function)
builtin.c:390: `reswdtab' undeclared (first use in this function)
builtin.c:392: `aliastab' undeclared (first use in this function)
builtin.c:410: `queueing_enabled' undeclared (first use in this function)
builtin.c:412: `queue_front' undeclared (first use in this function)
builtin.c:412: `queue_rear' undeclared (first use in this function)
builtin.c:412: `signal_mask_queue' undeclared (first use in this function)
builtin.c:412: `signal_queue' undeclared (first use in this function)
builtin.c:421: warning: assignment makes pointer from integer without a cast
builtin.c:379: warning: `ht' might be used uninitialized in this function
builtin.c: At top level:
builtin.c:458: warning: no previous prototype for `bin_set'
builtin.c: In function `bin_set':
builtin.c:521: `queueing_enabled' undeclared (first use in this function)
builtin.c:523: `paramtab' undeclared (first use in this function)
builtin.c:532: `queue_front' undeclared (first use in this function)
builtin.c:532: `queue_rear' undeclared (first use in this function)
builtin.c:532: `signal_mask_queue' undeclared (first use in this function)
builtin.c:532: `signal_queue' undeclared (first use in this function)
builtin.c:539: `strpcmp' undeclared (first use in this function)
builtin.c:539: `invstrpcmp' undeclared (first use in this function)
builtin.c:545: warning: assignment makes pointer from integer without a cast
builtin.c:551: warning: assignment makes pointer from integer without a cast
builtin.c:554: warning: assignment makes pointer from integer without a cast
builtin.c:560: `pparams' undeclared (first use in this function)
builtin.c: At top level:
builtin.c:577: warning: no previous prototype for `bin_pwd'
builtin.c: In function `bin_pwd':
builtin.c:578: `opts' undeclared (first use in this function)
builtin.c:579: warning: format argument is not a pointer (arg 2)
builtin.c:581: `pwd' undeclared (first use in this function)
builtin.c: At top level:
builtin.c:597: warning: no previous prototype for `bin_dirs'
builtin.c: In function `bin_dirs':
builtin.c:602: `queueing_enabled' undeclared (first use in this function)
builtin.c:608: `pwd' undeclared (first use in this function)
builtin.c:614: `queue_front' undeclared (first use in this function)
builtin.c:614: `queue_rear' undeclared (first use in this function)
builtin.c:614: `signal_mask_queue' undeclared (first use in this function)
builtin.c:614: `signal_queue' undeclared (first use in this function)
builtin.c:624: warning: assignment makes pointer from integer without a cast
builtin.c:628: `freestr' undeclared (first use in this function)
builtin.c: At top level:
builtin.c:640: warning: no previous prototype for `set_pwd_env'
builtin.c: In function `set_pwd_env':
builtin.c:645: `paramtab' undeclared (first use in this function)
builtin.c:657: `pwd' undeclared (first use in this function)
builtin.c:658: `oldpwd' undeclared (first use in this function)
builtin.c:663: warning: assignment makes pointer from integer without a cast
builtin.c:668: warning: assignment makes pointer from integer without a cast
builtin.c:641: warning: `pm' might be used uninitialized in this function
builtin.c: At top level:
builtin.c:684: warning: no previous prototype for `bin_cd'
builtin.c: In function `bin_cd':
builtin.c:688: `opts' undeclared (first use in this function)
builtin.c:711: `queueing_enabled' undeclared (first use in this function)
builtin.c:712: `pwd' undeclared (first use in this function)
builtin.c:713: warning: assignment makes pointer from integer without a cast
builtin.c:715: `queue_front' undeclared (first use in this function)
builtin.c:715: `queue_rear' undeclared (first use in this function)
builtin.c:715: `signal_mask_queue' undeclared (first use in this function)
builtin.c:715: `signal_queue' undeclared (first use in this function)
builtin.c:720: warning: passing arg 1 of `stat' makes pointer from integer without a cast
builtin.c:725: warning: passing arg 1 of `chdir' makes pointer from integer without a cast
builtin.c:732: warning: passing arg 1 of `chdir' makes pointer from integer without a cast
builtin.c: At top level:
builtin.c:744: warning: `cd_get_dest' was used with no prototype before its definition
builtin.c:744: warning: `cd_get_dest' was declared implicitly `extern' and later `static'
builtin.c:713: warning: previous declaration of `cd_get_dest'
builtin.c:744: warning: type mismatch with previous implicit declaration
builtin.c:713: warning: previous implicit declaration of `cd_get_dest'
builtin.c:744: warning: `cd_get_dest' was previously implicitly declared to return `int'
builtin.c: In function `cd_get_dest':
builtin.c:754: `opts' undeclared (first use in this function)
builtin.c:759: `home' undeclared (first use in this function)
builtin.c:780: `oldpwd' undeclared (first use in this function)
builtin.c:786: `pwd' undeclared (first use in this function)
builtin.c:813: warning: assignment makes pointer from integer without a cast
builtin.c:784: warning: `len3' might be used uninitialized in this function
builtin.c: At top level:
builtin.c:836: warning: `cd_do_chdir' was used with no prototype before its definition
builtin.c:836: warning: `cd_do_chdir' was declared implicitly `extern' and later `static'
builtin.c:813: warning: previous declaration of `cd_do_chdir'
builtin.c:836: warning: type mismatch with previous implicit declaration
builtin.c:813: warning: previous implicit declaration of `cd_do_chdir'
builtin.c:836: warning: `cd_do_chdir' was previously implicitly declared to return `int'
builtin.c: In function `cd_do_chdir':
builtin.c:865: warning: assignment makes pointer from integer without a cast
builtin.c:873: `cdpath' undeclared (first use in this function)
builtin.c:879: warning: assignment makes pointer from integer without a cast
builtin.c:888: warning: assignment makes pointer from integer without a cast
builtin.c:899: warning: assignment makes pointer from integer without a cast
builtin.c:900: warning: assignment makes pointer from integer without a cast
builtin.c:837: warning: `pp' might be used uninitialized in this function
builtin.c: At top level:
builtin.c:921: warning: no previous prototype for `cd_able_vars'
builtin.c:921: warning: type mismatch with previous implicit declaration
builtin.c:899: warning: previous implicit declaration of `cd_able_vars'
builtin.c:921: warning: `cd_able_vars' was previously implicitly declared to return `int'
builtin.c: In function `cd_able_vars':
builtin.c:924: `opts' undeclared (first use in this function)
builtin.c:928: warning: assignment makes pointer from integer without a cast
builtin.c:932: warning: assignment makes pointer from integer without a cast
builtin.c: At top level:
builtin.c:949: warning: `cd_try_chdir' was used with no prototype before its definition
builtin.c:949: warning: `cd_try_chdir' was declared implicitly `extern' and later `static'
builtin.c:900: warning: previous declaration of `cd_try_chdir'
builtin.c:949: warning: type mismatch with previous implicit declaration
builtin.c:900: warning: previous implicit declaration of `cd_try_chdir'
builtin.c:949: warning: `cd_try_chdir' was previously implicitly declared to return `int'
builtin.c: In function `cd_try_chdir':
builtin.c:956: warning: assignment makes pointer from integer without a cast
builtin.c:959: `pwd' undeclared (first use in this function)
builtin.c:961: warning: assignment makes pointer from integer without a cast
builtin.c:969: warning: assignment makes pointer from integer without a cast
builtin.c:974: warning: assignment makes pointer from integer without a cast
builtin.c:999: warning: return makes pointer from integer without a cast
builtin.c: At top level:
builtin.c:1007: warning: `cd_new_pwd' was used with no prototype before its definition
builtin.c:1007: warning: `cd_new_pwd' was declared implicitly `extern' and later `static'
builtin.c:718: warning: previous declaration of `cd_new_pwd'
builtin.c:1007: warning: type mismatch with previous implicit declaration
builtin.c:718: warning: previous implicit declaration of `cd_new_pwd'
builtin.c:1007: warning: `cd_new_pwd' was previously implicitly declared to return `int'
builtin.c: In function `cd_new_pwd':
builtin.c:1014: warning: assignment makes pointer from integer without a cast
builtin.c:1018: warning: assignment makes pointer from integer without a cast
builtin.c:1019: `opts' undeclared (first use in this function)
builtin.c:1024: warning: assignment makes pointer from integer without a cast
builtin.c:1039: `oldpwd' undeclared (first use in this function)
builtin.c:1040: `pwd' undeclared (first use in this function)
builtin.c:1053: warning: assignment makes pointer from integer without a cast
builtin.c:1053: `dummy_eprog' undeclared (first use in this function)
builtin.c:1054: `sfcontext' undeclared (first use in this function)
builtin.c:1008: warning: `prog' might be used uninitialized in this function
builtin.c: At top level:
builtin.c:1078: warning: `printdirstack' was used with no prototype before its definition
builtin.c:1078: warning: `printdirstack' was declared implicitly `extern' and later `static'
builtin.c:1046: warning: previous declaration of `printdirstack'
builtin.c:1078: warning: type mismatch with previous implicit declaration
builtin.c:1046: warning: previous implicit declaration of `printdirstack'
builtin.c:1078: warning: `printdirstack' was previously implicitly declared to return `int'
builtin.c: In function `printdirstack':
builtin.c:1081: `pwd' undeclared (first use in this function)
builtin.c: At top level:
builtin.c:1098: warning: no previous prototype for `fixdir'
builtin.c: In function `fixdir':
builtin.c:1139: `opts' undeclared (first use in this function)
builtin.c: At top level:
builtin.c:1183: warning: no previous prototype for `printqt'
builtin.c: In function `printqt':
builtin.c:1187: `opts' undeclared (first use in this function)
builtin.c: At top level:
builtin.c:1195: warning: no previous prototype for `printif'
builtin.c:1210: warning: no previous prototype for `bin_fc'
builtin.c: In function `bin_fc':
builtin.c:1217: `opts' undeclared (first use in this function)
builtin.c:1225: warning: assignment makes pointer from integer without a cast
builtin.c:1230: `queueing_enabled' undeclared (first use in this function)
builtin.c:1234: `queue_front' undeclared (first use in this function)
builtin.c:1234: `queue_rear' undeclared (first use in this function)
builtin.c:1234: `signal_mask_queue' undeclared (first use in this function)
builtin.c:1234: `signal_queue' undeclared (first use in this function)
builtin.c:1295: `curline' undeclared (first use in this function)
builtin.c:1300: `hist_ring' undeclared (first use in this function)
builtin.c:1300: `curhist' undeclared (first use in this function)
builtin.c:1320: warning: assignment makes pointer from integer without a cast
builtin.c:1330: warning: pointer/integer type mismatch in conditional expression
builtin.c:1340: `lastval' undeclared (first use in this function)
builtin.c: At top level:
builtin.c:1362: warning: `fcgetcomm' was used with no prototype before its definition
builtin.c:1362: warning: `fcgetcomm' was declared implicitly `extern' and later `static'
builtin.c:1279: warning: previous declaration of `fcgetcomm'
builtin.c: In function `fcgetcomm':
builtin.c:1369: `curline' undeclared (first use in this function)
builtin.c: At top level:
builtin.c:1429: warning: `fclist' was used with no prototype before its definition
builtin.c:1429: warning: `fclist' was declared implicitly `extern' and later `static'
builtin.c:1327: warning: previous declaration of `fclist'
builtin.c: In function `fclist':
builtin.c:1444: warning: assignment makes pointer from integer without a cast
builtin.c:1454: warning: assignment makes pointer from integer without a cast
builtin.c:1503: warning: assignment makes pointer from integer without a cast
builtin.c:1507: warning: assignment makes pointer from integer without a cast
builtin.c: At top level:
builtin.c:1527: warning: `fcedit' was used with no prototype before its definition
builtin.c:1527: warning: `fcedit' was declared implicitly `extern' and later `static'
builtin.c:1335: warning: previous declaration of `fcedit'
builtin.c: In function `fcedit':
builtin.c:1533: warning: assignment makes pointer from integer without a cast
builtin.c:1537: `lastval' undeclared (first use in this function)
builtin.c: At top level:
builtin.c:1584: warning: no previous prototype for `typeset_single'
builtin.c: In function `typeset_single':
builtin.c:1609: `locallevel' undeclared (first use in this function)
builtin.c:1657: `paramtab' undeclared (first use in this function)
builtin.c:1660: `opts' undeclared (first use in this function)
builtin.c:1690: warning: assignment makes pointer from integer without a cast
builtin.c:1695: warning: assignment makes pointer from integer without a cast
builtin.c:1726: warning: assignment makes pointer from integer without a cast
builtin.c:1728: warning: assignment makes pointer from integer without a cast
builtin.c:1794: `realparamtab' undeclared (first use in this function)
builtin.c:1795: `gethashnode2' used prior to declaration
builtin.c:1811: warning: assignment makes pointer from integer without a cast
builtin.c:1826: warning: assignment makes pointer from integer without a cast
builtin.c:1840: `colonarrsetfn' undeclared (first use in this function)
builtin.c:1841: `colonarrgetfn' undeclared (first use in this function)
builtin.c:1851: warning: assignment makes pointer from integer without a cast
builtin.c:1865: warning: passing arg 2 of pointer to function makes pointer from integer without a cast
builtin.c:1875: warning: passing arg 2 of pointer to function makes pointer from integer without a cast
builtin.c:1878: warning: passing arg 2 of pointer to function makes pointer from integer without a cast
builtin.c: At top level:
builtin.c:1898: warning: no previous prototype for `bin_typeset'
builtin.c: In function `bin_typeset':
builtin.c:1951: `queueing_enabled' undeclared (first use in this function)
builtin.c:1959: `paramtab' undeclared (first use in this function)
builtin.c:1960: `queue_front' undeclared (first use in this function)
builtin.c:1960: `queue_rear' undeclared (first use in this function)
builtin.c:1960: `signal_mask_queue' undeclared (first use in this function)
builtin.c:1960: `signal_queue' undeclared (first use in this function)
builtin.c:1965: `opts' undeclared (first use in this function)
builtin.c:2010: `locallevel' undeclared (first use in this function)
builtin.c:2012: warning: assignment makes pointer from integer without a cast
builtin.c:2043: warning: assignment makes pointer from integer without a cast
builtin.c:2044: warning: assignment makes pointer from integer without a cast
builtin.c:2064: warning: initialization makes pointer from integer without a cast
builtin.c:2068: warning: assignment makes pointer from integer without a cast
builtin.c:2111: `realparamtab' undeclared (first use in this function)
builtin.c:2112: `gethashnode2' used prior to declaration
builtin.c:1899: warning: `pm' might be used uninitialized in this function
builtin.c: At top level:
builtin.c:2126: warning: no previous prototype for `eval_autoload'
builtin.c: In function `eval_autoload':
builtin.c:2132: `dummy_eprog' undeclared (first use in this function)
builtin.c:2139: warning: assignment makes pointer from integer without a cast
builtin.c: At top level:
builtin.c:2153: warning: no previous prototype for `bin_functions'
builtin.c: In function `bin_functions':
builtin.c:2175: `scriptname' undeclared (first use in this function)
builtin.c:2189: `queueing_enabled' undeclared (first use in this function)
builtin.c:2191: `shfunctab' undeclared (first use in this function)
builtin.c:2206: `queue_front' undeclared (first use in this function)
builtin.c:2206: `queue_rear' undeclared (first use in this function)
builtin.c:2206: `signal_mask_queue' undeclared (first use in this function)
builtin.c:2206: `signal_queue' undeclared (first use in this function)
builtin.c:2216: warning: assignment makes pointer from integer without a cast
builtin.c:2268: warning: assignment makes pointer from integer without a cast
builtin.c: At top level:
builtin.c:2282: warning: no previous prototype for `mkautofn'
builtin.c:2282: warning: type mismatch with previous implicit declaration
builtin.c:2268: warning: previous implicit declaration of `mkautofn'
builtin.c:2282: warning: `mkautofn' was previously implicitly declared to return `int'
builtin.c:2309: warning: no previous prototype for `bin_unset'
builtin.c: In function `bin_unset':
builtin.c:2325: warning: assignment makes pointer from integer without a cast
builtin.c:2327: `queueing_enabled' undeclared (first use in this function)
builtin.c:2328: `paramtab' undeclared (first use in this function)
builtin.c:2333: `opts' undeclared (first use in this function)
builtin.c:2340: `queue_front' undeclared (first use in this function)
builtin.c:2340: `queue_rear' undeclared (first use in this function)
builtin.c:2340: `signal_mask_queue' undeclared (first use in this function)
builtin.c:2340: `signal_queue' undeclared (first use in this function)
builtin.c:2366: `realparamtab' undeclared (first use in this function)
builtin.c:2367: `gethashnode2' used prior to declaration
builtin.c:2310: warning: `pm' might be used uninitialized in this function
builtin.c: At top level:
builtin.c:2401: warning: no previous prototype for `bin_whence'
builtin.c: In function `bin_whence':
builtin.c:2432: warning: assignment makes pointer from integer without a cast
builtin.c:2438: `queueing_enabled' undeclared (first use in this function)
builtin.c:2444: `aliastab' undeclared (first use in this function)
builtin.c:2448: `reswdtab' undeclared (first use in this function)
builtin.c:2452: `shfunctab' undeclared (first use in this function)
builtin.c:2461: `cmdnamtab' undeclared (first use in this function)
builtin.c:2465: `queue_front' undeclared (first use in this function)
builtin.c:2465: `queue_rear' undeclared (first use in this function)
builtin.c:2465: `signal_mask_queue' undeclared (first use in this function)
builtin.c:2465: `signal_queue' undeclared (first use in this function)
builtin.c:2520: `path' undeclared (first use in this function)
builtin.c:2522: warning: assignment makes pointer from integer without a cast
builtin.c:2523: warning: assignment makes pointer from integer without a cast
builtin.c:2545: warning: assignment makes pointer from integer without a cast
builtin.c:2517: warning: `pp' might be used uninitialized in this function
builtin.c: At top level:
builtin.c:2591: warning: no previous prototype for `bin_hash'
builtin.c: In function `bin_hash':
builtin.c:2599: `nameddirtab' undeclared (first use in this function)
builtin.c:2601: `cmdnamtab' undeclared (first use in this function)
builtin.c:2625: `queueing_enabled' undeclared (first use in this function)
builtin.c:2627: `queue_front' undeclared (first use in this function)
builtin.c:2627: `queue_rear' undeclared (first use in this function)
builtin.c:2627: `signal_mask_queue' undeclared (first use in this function)
builtin.c:2627: `signal_queue' undeclared (first use in this function)
builtin.c:2637: warning: assignment makes pointer from integer without a cast
builtin.c:2646: `opts' undeclared (first use in this function)
builtin.c:2653: warning: assignment makes pointer from integer without a cast
builtin.c:2655: warning: assignment makes pointer from integer without a cast
builtin.c:2657: warning: assignment makes pointer from integer without a cast
builtin.c:2659: warning: assignment makes pointer from integer without a cast
builtin.c:2661: warning: passing arg 2 of pointer to function makes pointer from integer without a cast
builtin.c:2674: `path' undeclared (first use in this function)
builtin.c:2592: warning: `ht' might be used uninitialized in this function
builtin.c: At top level:
builtin.c:2694: warning: no previous prototype for `bin_unhash'
builtin.c: In function `bin_unhash':
builtin.c:2703: `nameddirtab' undeclared (first use in this function)
builtin.c:2705: `shfunctab' undeclared (first use in this function)
builtin.c:2707: `aliastab' undeclared (first use in this function)
builtin.c:2709: `cmdnamtab' undeclared (first use in this function)
builtin.c:2717: warning: assignment makes pointer from integer without a cast
builtin.c:2719: `queueing_enabled' undeclared (first use in this function)
builtin.c:2730: `queue_front' undeclared (first use in this function)
builtin.c:2730: `queue_rear' undeclared (first use in this function)
builtin.c:2730: `signal_mask_queue' undeclared (first use in this function)
builtin.c:2730: `signal_queue' undeclared (first use in this function)
builtin.c:2695: warning: `ht' might be used uninitialized in this function
builtin.c: At top level:
builtin.c:2764: warning: no previous prototype for `bin_alias'
builtin.c: In function `bin_alias':
builtin.c:2793: `queueing_enabled' undeclared (first use in this function)
builtin.c:2794: `aliastab' undeclared (first use in this function)
builtin.c:2795: `queue_front' undeclared (first use in this function)
builtin.c:2795: `queue_rear' undeclared (first use in this function)
builtin.c:2795: `signal_mask_queue' undeclared (first use in this function)
builtin.c:2795: `signal_queue' undeclared (first use in this function)
builtin.c:2804: warning: assignment makes pointer from integer without a cast
builtin.c:2765: warning: `a' might be used uninitialized in this function
builtin.c: At top level:
builtin.c:2848: warning: no previous prototype for `bin_true'
builtin.c:2857: warning: no previous prototype for `bin_false'
builtin.c:2871: warning: no previous prototype for `bin_print'
builtin.c: In function `bin_print':
builtin.c:2884: warning: assignment makes pointer from integer without a cast
builtin.c:2902: warning: assignment makes pointer from integer without a cast
builtin.c:2911: warning: initialization makes pointer from integer without a cast
builtin.c:2912: warning: assignment makes pointer from integer without a cast
builtin.c:2919: `queueing_enabled' undeclared (first use in this function)
builtin.c:2920: warning: assignment makes pointer from integer without a cast
builtin.c:2922: warning: initialization makes pointer from integer without a cast
builtin.c:2928: `queue_front' undeclared (first use in this function)
builtin.c:2928: `queue_rear' undeclared (first use in this function)
builtin.c:2928: `signal_mask_queue' undeclared (first use in this function)
builtin.c:2928: `signal_queue' undeclared (first use in this function)
builtin.c:2945: warning: assignment makes pointer from integer without a cast
builtin.c:2959: warning: assignment makes pointer from integer without a cast
builtin.c:2962: `histtab' undeclared (first use in this function)
builtin.c:2975: `coprocout' undeclared (first use in this function)
builtin.c:2989: `cstrpcmp' undeclared (first use in this function)
builtin.c:2992: `strpcmp' undeclared (first use in this function)
builtin.c:2995: `invcstrpcmp' undeclared (first use in this function)
builtin.c:2998: `invstrpcmp' undeclared (first use in this function)
builtin.c:3015: `columns' undeclared (first use in this function)
builtin.c:2872: warning: `fd' might be used uninitialized in this function
builtin.c:3007: warning: `nc' might be used uninitialized in this function
builtin.c: At top level:
builtin.c:3054: warning: no previous prototype for `bin_shift'
builtin.c: In function `bin_shift':
builtin.c:3059: `queueing_enabled' undeclared (first use in this function)
builtin.c:3064: `queue_front' undeclared (first use in this function)
builtin.c:3064: `queue_rear' undeclared (first use in this function)
builtin.c:3064: `signal_mask_queue' undeclared (first use in this function)
builtin.c:3064: `signal_queue' undeclared (first use in this function)
builtin.c:3071: warning: assignment makes pointer from integer without a cast
builtin.c:3077: warning: assignment makes pointer from integer without a cast
builtin.c:3081: `pparams' undeclared (first use in this function)
builtin.c:3085: warning: assignment makes pointer from integer without a cast
builtin.c: At top level:
builtin.c:3105: warning: no previous prototype for `bin_getopts'
builtin.c: In function `bin_getopts':
builtin.c:3107: warning: initialization makes pointer from integer without a cast
builtin.c:3108: `pparams' undeclared (first use in this function)
builtin.c:3113: `zoptind' undeclared (first use in this function)
builtin.c:3128: warning: assignment makes pointer from integer without a cast
builtin.c:3133: warning: assignment makes pointer from integer without a cast
builtin.c:3156: `zoptarg' undeclared (first use in this function)
builtin.c:3175: warning: assignment makes pointer from integer without a cast
builtin.c:3177: warning: assignment makes pointer from integer without a cast
builtin.c: At top level:
builtin.c:3205: warning: no previous prototype for `bin_break'
builtin.c: In function `bin_break':
builtin.c:3206: `lastval' undeclared (first use in this function)
builtin.c:3216: `loops' undeclared (first use in this function)
builtin.c:3220: `contflag' undeclared (first use in this function)
builtin.c:3226: `breaks' undeclared (first use in this function)
builtin.c:3229: `opts' undeclared (first use in this function)
builtin.c:3229: `locallevel' undeclared (first use in this function)
builtin.c:3229: `sourcelevel' undeclared (first use in this function)
builtin.c:3230: `retflag' undeclared (first use in this function)
builtin.c:3233: `trapreturn' undeclared (first use in this function)
builtin.c: In function `checkjobs':
builtin.c:3267: `thisjob' undeclared (first use in this function)
builtin.c:3267: `jobtab' undeclared (first use in this function)
builtin.c: At top level:
builtin.c:3292: warning: no previous prototype for `zexit'
builtin.c:3292: warning: type mismatch with previous implicit declaration
builtin.c:3237: warning: previous implicit declaration of `zexit'
builtin.c:3292: warning: `zexit' was previously implicitly declared to return `int'
builtin.c: In function `zexit':
builtin.c:3295: `opts' undeclared (first use in this function)
builtin.c:3312: `nohistsave' undeclared (first use in this function)
builtin.c:3314: `subsh' undeclared (first use in this function)
builtin.c:3322: `sigtrapped' undeclared (first use in this function)
builtin.c:3324: `zshhooks' undeclared (first use in this function)
builtin.c:3325: `mypid' undeclared (first use in this function)
builtin.c: At top level:
builtin.c:3336: warning: no previous prototype for `bin_dot'
builtin.c: In function `bin_dot':
builtin.c:3344: `pparams' undeclared (first use in this function)
builtin.c:3349: warning: assignment makes pointer from integer without a cast
builtin.c:3350: `opts' undeclared (first use in this function)
builtin.c:3351: `argzero' undeclared (first use in this function)
builtin.c:3354: warning: assignment makes pointer from integer without a cast
builtin.c:3379: `path' undeclared (first use in this function)
builtin.c:3384: warning: assignment makes pointer from integer without a cast
builtin.c:3386: warning: assignment makes pointer from integer without a cast
builtin.c:3388: warning: assignment makes pointer from integer without a cast
builtin.c:3408: `lastval' undeclared (first use in this function)
builtin.c:3409: warning: control reaches end of non-void function
builtin.c:3339: warning: `t' might be used uninitialized in this function
builtin.c: At top level:
builtin.c:3414: warning: no previous prototype for `bin_emulate'
builtin.c: In function `bin_emulate':
builtin.c:3417: `opts' undeclared (first use in this function)
builtin.c: At top level:
builtin.c:3426: warning: no previous prototype for `bin_eval'
builtin.c: In function `bin_eval':
builtin.c:3429: warning: assignment makes pointer from integer without a cast
builtin.c:3431: `errflag' undeclared (first use in this function)
builtin.c:3436: `lastval' undeclared (first use in this function)
builtin.c: At top level:
builtin.c:3457: warning: no previous prototype for `bin_read'
builtin.c: In function `bin_read':
builtin.c:3461: `term' undeclared (first use in this function)
builtin.c:3461: `zleactive' undeclared (first use in this function)
builtin.c:3461: `getkeyptr' undeclared (first use in this function)
builtin.c:3463: warning: initialization makes pointer from integer without a cast
builtin.c:3469: `typtab' undeclared (first use in this function)
builtin.c:3490: `SHTTY' undeclared (first use in this function)
builtin.c:3494: `shout' undeclared (first use in this function)
builtin.c:3508: `opts' undeclared (first use in this function)
builtin.c:3509: `shttyinfo' undeclared (first use in this function)
builtin.c:3511: `mypgrp' undeclared (first use in this function)
builtin.c:3523: `coprocin' undeclared (first use in this function)
builtin.c:3559: `getkeyptr' used prior to declaration
builtin.c:3611: `getkeyptr' used prior to declaration
builtin.c:3638: warning: pointer/integer type mismatch in conditional expression
builtin.c:3642: `dummy_sigset1' undeclared (first use in this function)
builtin.c:3642: `sigchld_mask' undeclared (first use in this function)
builtin.c:3642: `dummy_sigset2' undeclared (first use in this function)
builtin.c:3642: warning: left-hand operand of comma expression has no effect
builtin.c:3713: `coprocout' undeclared (first use in this function)
builtin.c:3745: warning: left-hand operand of comma expression has no effect
builtin.c: At top level:
builtin.c:3814: warning: `zread' was used with no prototype before its definition
builtin.c:3814: warning: `zread' was declared implicitly `extern' and later `static'
builtin.c:3747: warning: previous declaration of `zread'
builtin.c: In function `zread':
builtin.c:3819: `getkeyptr' used prior to declaration
builtin.c:3862: `errflag' undeclared (first use in this function)
builtin.c:3862: `retflag' undeclared (first use in this function)
builtin.c:3862: `breaks' undeclared (first use in this function)
builtin.c:3862: `contflag' undeclared (first use in this function)
builtin.c: At top level:
builtin.c:3879: warning: no previous prototype for `testlex'
builtin.c: In function `testlex':
builtin.c:3880: `tok' undeclared (first use in this function)
builtin.c:3883: `tokstr' undeclared (first use in this function)
builtin.c: At top level:
builtin.c:3906: warning: no previous prototype for `bin_test'
builtin.c: In function `bin_test':
builtin.c:3926: `tok' undeclared (first use in this function)
builtin.c:3927: `condlex' undeclared (first use in this function)
builtin.c:3929: warning: assignment makes pointer from integer without a cast
builtin.c:3930: `yylex' undeclared (first use in this function)
builtin.c:3932: `errflag' undeclared (first use in this function)
builtin.c:3938: `tokstr' undeclared (first use in this function)
builtin.c: At top level:
builtin.c:3961: warning: no previous prototype for `bin_times'
builtin.c:3983: warning: no previous prototype for `bin_trap'
builtin.c: In function `bin_trap':
builtin.c:3993: `queueing_enabled' undeclared (first use in this function)
builtin.c:3994: `SIGCOUNT' undeclared (first use in this function)
builtin.c:3995: `sigtrapped' undeclared (first use in this function)
builtin.c:3999: `sigs' undeclared (first use in this function)
builtin.c:4000: `shfunctab' undeclared (first use in this function)
builtin.c:4004: `sigfuncs' undeclared (first use in this function)
builtin.c:4007: warning: assignment makes pointer from integer without a cast
builtin.c:4015: `queue_front' undeclared (first use in this function)
builtin.c:4015: `queue_rear' undeclared (first use in this function)
builtin.c:4015: `signal_mask_queue' undeclared (first use in this function)
builtin.c:4015: `signal_queue' undeclared (first use in this function)
builtin.c:4034: `dummy_eprog' undeclared (first use in this function)
builtin.c:4035: warning: assignment makes pointer from integer without a cast
builtin.c:4049: warning: assignment makes pointer from integer without a cast
builtin.c:3984: warning: `prog' might be used uninitialized in this function
builtin.c: At top level:
builtin.c:4059: warning: no previous prototype for `bin_ttyctl'
builtin.c: In function `bin_ttyctl':
builtin.c:4061: `ttyfrozen' undeclared (first use in this function)
builtin.c: At top level:
builtin.c:4074: warning: no previous prototype for `bin_let'
builtin.c: In function `bin_let':
builtin.c:4080: `errflag' undeclared (first use in this function)
builtin.c: At top level:
builtin.c:4092: warning: no previous prototype for `bin_umask'
builtin.c: In function `bin_umask':
builtin.c:4123: `typtab' undeclared (first use in this function)
builtin.c: At top level:
builtin.c:4203: warning: no previous prototype for `bin_notavail'
builtin.c:165: warning: `printbuiltinnode' defined but not used
builtin.c:190: warning: `freebuiltinnode' defined but not used
make[2]: *** [builtin.o] Error 1
make[2]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src'
make[1]: *** [modobjs] Error 2
make[1]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-4.0.4/Src'
make: *** [all] Error 1

[-- Attachment #4: configv3.1.9.txt --]
[-- Type: text/plain, Size: 8666 bytes --]

creating cache ./config.cache
configuring for zsh 3.1.9
checking host system type... i386-pc-sco3.2v5.0.5
checking for gcc... gcc
checking whether the C compiler (gcc  ) works... yes
checking whether the C compiler (gcc  ) is a cross-compiler... no
checking whether we are using GNU C... yes
checking whether gcc accepts -g... yes
checking whether large file support needs explicit enabling... no
checking how to run the C preprocessor... gcc -E
checking whether gcc needs -traditional... no
checking for working const... yes
checking for Cygwin environment... no
no
checking for executable suffix... no
checking for gcc option to accept ANSI C... 
checking whether to use prototypes... yes
checking for working alloca.h... no
checking for alloca... yes
checking if the compiler supports union initialisation... yes
checking if signed to unsigned casting is broken... no
checking if the compiler supports variable-length arrays... yes
checking whether make sets ${MAKE}... yes
checking for a BSD compatible install... ./install-sh -c
checking for gawk... gawk
checking whether ln works... yes
checking for yodl... yodl
checking for dirent.h that defines DIR... yes
checking for opendir in -ldir... no
checking for ANSI C header files... yes
checking whether time.h and sys/time.h may both be included... yes
checking whether stat file-mode macros are broken... no
checking for sys/wait.h that is POSIX.1 compatible... yes
checking for sys/time.h... yes
checking for sys/times.h... yes
checking for sys/select.h... yes
checking for termcap.h... no
checking for termio.h... yes
checking for termios.h... yes
checking for sys/param.h... yes
checking for sys/filio.h... no
checking for string.h... yes
checking for memory.h... yes
checking for limits.h... yes
checking for fcntl.h... yes
checking for libc.h... no
checking for sys/utsname.h... yes
checking for sys/resource.h... yes
checking for locale.h... yes
checking for errno.h... yes
checking for stdlib.h... yes
checking for unistd.h... yes
checking for sys/capability.h... no
checking for utmp.h... yes
checking for utmpx.h... yes
checking for sys/types.h... yes
checking for pwd.h... yes
checking for grp.h... yes
checking for poll.h... yes
checking for sys/mman.h... yes
checking for linux/tasks.h... no
checking for netinet/in_systm.h... yes
checking for dlfcn.h... yes
checking for dl.h... no
checking for conflicts in sys/time.h and sys/select.h... no
checking POSIX termios... yes
checking TIOCGWINSZ in termios.h... yes
checking for sys/ptem.h... yes
checking for printf in -lc... yes
checking for pow in -lm... yes
checking for tgetent in -ltermcap... yes
checking for yp_all... no
checking for yp_all in -lnsl... no
checking for dlopen in -ldl... yes
checking for cap_get_proc in -lcap... no
checking for socket in -lsocket... yes
checking if an include file defines ospeed... no
checking if you must define ospeed... yes
checking if tgetent accepts NULL... no
checking return type of signal handlers... void
checking for pid_t... yes
checking for off_t... yes
checking for ino_t... yes
checking for mode_t... yes
checking for uid_t in sys/types.h... yes
checking for size_t... yes
checking if long is 64 bits... no
checking if off_t is 64 bit... no
checking if ino_t is 64 bit... no
checking if compiler has a 64 bit type... long long
checking for a corresponding unsigned 64 bit type... unsigned long long
checking for sigset_t... yes
checking for struct timezone... yes
checking for struct utmp... yes
checking for struct utmpx... yes
checking for ut_host in struct utmp... no
checking for ut_host in struct utmpx... yes
checking for ut_xtime in struct utmpx... yes
checking for ut_tv in struct utmpx... yes
checking for d_ino in struct dirent... yes
checking for d_stat in struct dirent... no
checking for d_ino in struct direct... no
checking for d_stat in struct direct... no
checking for sin6_scope_id in struct sockaddr_in6... no
checking for strftime... yes
checking for difftime... yes
checking for gettimeofday... yes
checking for select... yes
checking for poll... yes
checking for readlink... yes
checking for lstat... yes
checking for lchown... yes
checking for faccessx... no
checking for fchdir... yes
checking for ftruncate... yes
checking for fseeko... no
checking for ftello... no
checking for mkfifo... yes
checking for _mktemp... yes
checking for waitpid... yes
checking for wait3... yes
checking for sigaction... yes
checking for sigblock... no
checking for sighold... yes
checking for sigrelse... yes
checking for sigsetmask... no
checking for sigprocmask... yes
checking for killpg... yes
checking for setpgid... yes
checking for setpgrp... yes
checking for tcsetpgrp... yes
checking for tcgetattr... yes
checking for nice... yes
checking for gethostname... yes
checking for gethostbyname2... no
checking for getipnodebyname... no
checking for inet_aton... yes
checking for inet_pton... yes
checking for inet_ntop... yes
checking for getlogin... yes
checking for getpwent... yes
checking for getpwnam... yes
checking for getpwuid... yes
checking for getgrgid... yes
checking for getgrnam... yes
checking for initgroups... yes
checking for nis_list... no
checking for setuid... yes
checking for seteuid... yes
checking for setreuid... yes
checking for setresuid... no
checking for setsid... yes
checking for memcpy... yes
checking for memmove... yes
checking for strstr... yes
checking for strerror... yes
checking for mmap... yes
checking for munmap... yes
checking for msync... yes
checking for cap_get_proc... no
checking for getrlimit... yes
checking for setlocale... yes
checking for uname... yes
checking for signgam... yes
checking for working strcoll... yes
checking whether getpgrp takes no argument... yes
checking for dlopen... yes
checking for dlerror... yes
checking for dlsym... yes
checking for dlclose... yes
checking for load... no
checking for loadquery... no
checking for loadbind... no
checking for unload... no
checking for shl_load... no
checking for shl_unload... no
checking for shl_findsym... no
checking what style of signals to use... POSIX_SIGNALS
checking where signal.h is located... /usr/local/lib/gcc-lib/i686-pc-sco3.2v5.0.5/3.0.3/include/sys/signal.h
checking where the RLIMIT macros are located... /usr/include/sys/resource.h
checking if rlim_t is longer than a long... no
checking if the rlim_t is unsigned... yes
checking for rlim_t... yes
checking for /dev/fd filesystem... /dev/fd
checking for RFS superroot directory... no
checking whether we should use the native getcwd... no
checking for NIS... no
checking for NIS+... no
checking for utmp file... /etc/utmp
checking for wtmp file... /etc/wtmp
checking for utmpx file... /etc/utmpx
checking for wtmpx file... /etc/wtmpx
checking for brk() prototype in <unistd.h>... yes
checking for sbrk() prototype in <unistd.h>... yes
checking for ioctl prototype in <sys/ioctl.h>... no
checking for mknod prototype in <sys/stat.h>... yes
checking if named FIFOs work... yes
checking if echo in /bin/sh interprets escape sequences... yes
checking if link() works... yes
checking if kill(pid, 0) returns ESRCH correctly... yes
checking if POSIX sigsuspend() works... yes
checking if tcsetpgrp() actually works... yes
checking if getpwnam() is faked... no
checking what to set MAXJOB to... 50
checking if your system use ELF binaries... yes
checking if your dlsym() needs a leading underscore... 
checking if static/shared library linking is broken... yes
updating cache ./config.cache
creating ./config.status
creating Config/defs.mk
creating Makefile
creating Doc/Makefile
creating Etc/Makefile
creating Src/Makefile
creating Test/Makefile
creating Completion/Makefile
creating Functions/Makefile
creating config.h

zsh configuration
-----------------
zsh version               : 3.1.9
host operating system     : i386-pc-sco3.2v5.0.5
source code location      : .
compiler                  : gcc
preprocessor flags        : 
executable compiler flags : -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2
executable linker flags   :   -s 
library flags             : -lsocket -ldl -ltermcap -lm -lc 
installation basename     : zsh
binary install path       : /usr/local/bin
man page install path     : /usr/local/man
info install path         : /usr/local/info
functions install path    : /usr/local/share/zsh/3.1.9/functions
installed functions       : Core/* Base/* Builtins/* User/* Commands/* Debian/* Linux/* Bsd/* AIX/* X/* Zle/* Prompts/* Misc/* Zftp/*


[-- Attachment #5: makev3.1.9.txt --]
[-- Type: text/plain, Size: 48144 bytes --]

make[1]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src'
Linking with the standard modules.
if test -f mymods.conf; then \
    cat mymods.conf > modules-bltin; \
elif test N = N; then \
    sed -n '/L.* /{s/^.* //;p;}' < ./xmods.conf > modules-bltin; \
else \
    echo > modules-bltin; \
fi
( cd .. && OMIT_MODULES="" \
/bin/sh Src/mkmodindex.sh Src ) \
    > modules.index.tmp
Updated `modules.index'.
cd .. && /bin/sh $top_srcdir/Src/mkmakemod.sh Src Makemod
creating Src/Makemod.in
creating Src/Makemod
make[2]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src'
echo 'timestamp for *.mdd files' > ../Src/modules.stamp
creating Src/Aliases/Makefile.in
creating Src/Aliases/Makefile
make[3]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Aliases'
make[3]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Aliases'
creating Src/Builtins/Makefile.in
creating Src/Builtins/Makefile
make[3]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Builtins'
make[3]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Builtins'
creating Src/Modules/Makefile.in
creating Src/Modules/Makefile
make[3]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Modules'
make[3]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Modules'
creating Src/Zle/Makefile.in
creating Src/Zle/Makefile
make[3]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
make[3]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
make[2]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src'
make[2]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src'
gawk -f ./signames1.awk /usr/local/lib/gcc-lib/i686-pc-sco3.2v5.0.5/3.0.3/include/sys/signal.h >sigtmp.c
gcc -E sigtmp.c >sigtmp.out
gawk -f ./signames2.awk sigtmp.out > signames.c
rm -f sigtmp.c sigtmp.out
grep 'define.*SIGCOUNT' signames.c > sigcount.h
make[3]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src'
make[3]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src'
Updated `zsh.mdh'.
echo 'timestamp for zsh.mdh against zsh.mdd' > zsh.mdhs
gawk -f ../Src/makepro.awk builtin.c Src > builtin.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < builtin.syms) \
	> builtin.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < builtin.syms) \
	> `echo builtin.epro | sed 's/\.epro$/.pro/'`
gawk -f ../Src/makepro.awk compat.c Src > compat.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < compat.syms) \
	> compat.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < compat.syms) \
	> `echo compat.epro | sed 's/\.epro$/.pro/'`
gawk -f ../Src/makepro.awk cond.c Src > cond.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < cond.syms) \
	> cond.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < cond.syms) \
	> `echo cond.epro | sed 's/\.epro$/.pro/'`
gawk -f ../Src/makepro.awk exec.c Src > exec.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < exec.syms) \
	> exec.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < exec.syms) \
	> `echo exec.epro | sed 's/\.epro$/.pro/'`
gawk -f ../Src/makepro.awk glob.c Src > glob.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < glob.syms) \
	> glob.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < glob.syms) \
	> `echo glob.epro | sed 's/\.epro$/.pro/'`
gawk -f ../Src/makepro.awk hashtable.c Src > hashtable.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < hashtable.syms) \
	> hashtable.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < hashtable.syms) \
	> `echo hashtable.epro | sed 's/\.epro$/.pro/'`
gawk -f ../Src/makepro.awk hist.c Src > hist.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < hist.syms) \
	> hist.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < hist.syms) \
	> `echo hist.epro | sed 's/\.epro$/.pro/'`
gawk -f ../Src/makepro.awk init.c Src > init.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < init.syms) \
	> init.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < init.syms) \
	> `echo init.epro | sed 's/\.epro$/.pro/'`
gawk -f ../Src/makepro.awk input.c Src > input.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < input.syms) \
	> input.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < input.syms) \
	> `echo input.epro | sed 's/\.epro$/.pro/'`
gawk -f ../Src/makepro.awk jobs.c Src > jobs.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < jobs.syms) \
	> jobs.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < jobs.syms) \
	> `echo jobs.epro | sed 's/\.epro$/.pro/'`
gawk -f ../Src/makepro.awk lex.c Src > lex.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < lex.syms) \
	> lex.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < lex.syms) \
	> `echo lex.epro | sed 's/\.epro$/.pro/'`
gawk -f ../Src/makepro.awk linklist.c Src > linklist.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < linklist.syms) \
	> linklist.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < linklist.syms) \
	> `echo linklist.epro | sed 's/\.epro$/.pro/'`
gawk -f ../Src/makepro.awk loop.c Src > loop.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < loop.syms) \
	> loop.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < loop.syms) \
	> `echo loop.epro | sed 's/\.epro$/.pro/'`
gawk -f ../Src/makepro.awk math.c Src > math.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < math.syms) \
	> math.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < math.syms) \
	> `echo math.epro | sed 's/\.epro$/.pro/'`
gawk -f ../Src/makepro.awk mem.c Src > mem.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < mem.syms) \
	> mem.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < mem.syms) \
	> `echo mem.epro | sed 's/\.epro$/.pro/'`
gawk -f ../Src/makepro.awk module.c Src > module.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < module.syms) \
	> module.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < module.syms) \
	> `echo module.epro | sed 's/\.epro$/.pro/'`
gawk -f ../Src/makepro.awk options.c Src > options.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < options.syms) \
	> options.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < options.syms) \
	> `echo options.epro | sed 's/\.epro$/.pro/'`
gawk -f ../Src/makepro.awk params.c Src > params.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < params.syms) \
	> params.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < params.syms) \
	> `echo params.epro | sed 's/\.epro$/.pro/'`
gawk -f ../Src/makepro.awk parse.c Src > parse.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < parse.syms) \
	> parse.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < parse.syms) \
	> `echo parse.epro | sed 's/\.epro$/.pro/'`
gawk -f ../Src/makepro.awk pattern.c Src > pattern.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < pattern.syms) \
	> pattern.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < pattern.syms) \
	> `echo pattern.epro | sed 's/\.epro$/.pro/'`
gawk -f ../Src/makepro.awk prompt.c Src > prompt.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < prompt.syms) \
	> prompt.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < prompt.syms) \
	> `echo prompt.epro | sed 's/\.epro$/.pro/'`
gawk -f ../Src/makepro.awk signals.c Src > signals.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < signals.syms) \
	> signals.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < signals.syms) \
	> `echo signals.epro | sed 's/\.epro$/.pro/'`
gawk -f ../Src/makepro.awk signames.c Src > signames.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < signames.syms) \
	> signames.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < signames.syms) \
	> `echo signames.epro | sed 's/\.epro$/.pro/'`
gawk -f ../Src/makepro.awk subst.c Src > subst.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < subst.syms) \
	> subst.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < subst.syms) \
	> `echo subst.epro | sed 's/\.epro$/.pro/'`
gawk -f ../Src/makepro.awk text.c Src > text.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < text.syms) \
	> text.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < text.syms) \
	> `echo text.epro | sed 's/\.epro$/.pro/'`
gawk -f ../Src/makepro.awk utils.c Src > utils.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < utils.syms) \
	> utils.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < utils.syms) \
	> `echo utils.epro | sed 's/\.epro$/.pro/'`
gawk -f ../Src/makepro.awk watch.c Src > watch.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < watch.syms) \
	> watch.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < watch.syms) \
	> `echo watch.epro | sed 's/\.epro$/.pro/'`
make[3]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src'
make[3]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src'
Updated `zsh.mdh'.
make[3]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Aliases'
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
( \
    echo '/** thingies.list                            **/'; \
    echo '/** thingy structures for the known thingies **/'; \
    echo; \
    echo '/* format: T("name", TH_FLAGS, w_widget, t_nextthingy) */'; \
    echo; \
    sed -e 's/#.*//; /^$/d; s/" *,.*/"/' \
	-e 's/^"/T("/; s/$/, 0,/; h' \
	-e 's/-//g; s/^.*"\(.*\)".*/w_\1, t_D\1)/' \
	-e 'H; g; s/\n/ /' \
	< ./iwidgets.list; \
    sed -e 's/#.*//; /^$/d; s/" *,.*/"/' \
	-e 's/^"/T("./; s/$/, TH_IMMORTAL,/; h' \
	-e 's/-//g; s/^.*"\.\(.*\)".*/w_\1, t_\1)/' \
	-e 'H; g; s/\n/ /' \
	< ./iwidgets.list; \
) > thingies.list
( \
    echo '/** zle_things.h                              **/'; \
    echo '/** indices of and pointers to known thingies **/'; \
    echo; \
    echo 'enum {'; \
    sed -n -f ./zle_things.sed < thingies.list; \
    echo '    ZLE_BUILTIN_THINGY_COUNT'; \
    echo '};'; \
) > zle_things.h
make[5]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
make[5]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
Updated `zle.mdh'.
echo 'timestamp for zle.mdh against zle.mdd' > zle.mdhs
gawk -f ../../Src/makepro.awk zle_bindings.c Src/Zle > zle_bindings.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < zle_bindings.syms) \
	> zle_bindings.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < zle_bindings.syms) \
	> `echo zle_bindings.epro | sed 's/\.epro$/.pro/'`
gawk -f ../../Src/makepro.awk zle_hist.c Src/Zle > zle_hist.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < zle_hist.syms) \
	> zle_hist.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < zle_hist.syms) \
	> `echo zle_hist.epro | sed 's/\.epro$/.pro/'`
gawk -f ../../Src/makepro.awk zle_keymap.c Src/Zle > zle_keymap.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < zle_keymap.syms) \
	> zle_keymap.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < zle_keymap.syms) \
	> `echo zle_keymap.epro | sed 's/\.epro$/.pro/'`
gawk -f ../../Src/makepro.awk zle_main.c Src/Zle > zle_main.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < zle_main.syms) \
	> zle_main.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < zle_main.syms) \
	> `echo zle_main.epro | sed 's/\.epro$/.pro/'`
gawk -f ../../Src/makepro.awk zle_misc.c Src/Zle > zle_misc.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < zle_misc.syms) \
	> zle_misc.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < zle_misc.syms) \
	> `echo zle_misc.epro | sed 's/\.epro$/.pro/'`
gawk -f ../../Src/makepro.awk zle_move.c Src/Zle > zle_move.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < zle_move.syms) \
	> zle_move.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < zle_move.syms) \
	> `echo zle_move.epro | sed 's/\.epro$/.pro/'`
gawk -f ../../Src/makepro.awk zle_params.c Src/Zle > zle_params.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < zle_params.syms) \
	> zle_params.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < zle_params.syms) \
	> `echo zle_params.epro | sed 's/\.epro$/.pro/'`
gawk -f ../../Src/makepro.awk zle_refresh.c Src/Zle > zle_refresh.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < zle_refresh.syms) \
	> zle_refresh.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < zle_refresh.syms) \
	> `echo zle_refresh.epro | sed 's/\.epro$/.pro/'`
gawk -f ../../Src/makepro.awk zle_thingy.c Src/Zle > zle_thingy.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < zle_thingy.syms) \
	> zle_thingy.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < zle_thingy.syms) \
	> `echo zle_thingy.epro | sed 's/\.epro$/.pro/'`
gawk -f ../../Src/makepro.awk zle_tricky.c Src/Zle > zle_tricky.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < zle_tricky.syms) \
	> zle_tricky.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < zle_tricky.syms) \
	> `echo zle_tricky.epro | sed 's/\.epro$/.pro/'`
gawk -f ../../Src/makepro.awk zle_utils.c Src/Zle > zle_utils.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < zle_utils.syms) \
	> zle_utils.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < zle_utils.syms) \
	> `echo zle_utils.epro | sed 's/\.epro$/.pro/'`
gawk -f ../../Src/makepro.awk zle_vi.c Src/Zle > zle_vi.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < zle_vi.syms) \
	> zle_vi.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < zle_vi.syms) \
	> `echo zle_vi.epro | sed 's/\.epro$/.pro/'`
gawk -f ../../Src/makepro.awk zle_word.c Src/Zle > zle_word.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < zle_word.syms) \
	> zle_word.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < zle_word.syms) \
	> `echo zle_word.epro | sed 's/\.epro$/.pro/'`
make[5]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
make[5]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
Updated `zle.mdh'.
make[5]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
make[5]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
Updated `complete.mdh'.
echo 'timestamp for complete.mdh against complete.mdd' > complete.mdhs
gawk -f ../../Src/makepro.awk complete.c Src/Zle > complete.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < complete.syms) \
	> complete.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < complete.syms) \
	> `echo complete.epro | sed 's/\.epro$/.pro/'`
gawk -f ../../Src/makepro.awk compcore.c Src/Zle > compcore.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < compcore.syms) \
	> compcore.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < compcore.syms) \
	> `echo compcore.epro | sed 's/\.epro$/.pro/'`
gawk -f ../../Src/makepro.awk compmatch.c Src/Zle > compmatch.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < compmatch.syms) \
	> compmatch.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < compmatch.syms) \
	> `echo compmatch.epro | sed 's/\.epro$/.pro/'`
gawk -f ../../Src/makepro.awk compresult.c Src/Zle > compresult.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < compresult.syms) \
	> compresult.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < compresult.syms) \
	> `echo compresult.epro | sed 's/\.epro$/.pro/'`
make[5]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
make[5]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
Updated `complete.mdh'.
make[5]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
make[5]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
Updated `compctl.mdh'.
echo 'timestamp for compctl.mdh against compctl.mdd' > compctl.mdhs
gawk -f ../../Src/makepro.awk compctl.c Src/Zle > compctl.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < compctl.syms) \
	> compctl.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < compctl.syms) \
	> `echo compctl.epro | sed 's/\.epro$/.pro/'`
make[5]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
make[5]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
Updated `compctl.mdh'.
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Aliases'
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Aliases'
Updated `compctl.mdh'.
echo 'timestamp for compctl.mdh against compctl.mdd' > compctl.mdhs
sed 's,@NAME@,compctl,g' < ./alias.c.in > compctl.c
gawk -f ../../Src/makepro.awk compctl.c Src/Aliases > compctl.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < compctl.syms) \
	> compctl.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < compctl.syms) \
	> `echo compctl.epro | sed 's/\.epro$/.pro/'`
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Aliases'
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Aliases'
Updated `compctl.mdh'.
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
make[4]: `complete.mdh' is up to date.
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Aliases'
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Aliases'
Updated `complete.mdh'.
echo 'timestamp for complete.mdh against complete.mdd' > complete.mdhs
sed 's,@NAME@,complete,g' < ./alias.c.in > complete.c
gawk -f ../../Src/makepro.awk complete.c Src/Aliases > complete.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < complete.syms) \
	> complete.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < complete.syms) \
	> `echo complete.epro | sed 's/\.epro$/.pro/'`
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Aliases'
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Aliases'
Updated `complete.mdh'.
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
make[5]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
make[5]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
Updated `complist.mdh'.
echo 'timestamp for complist.mdh against complist.mdd' > complist.mdhs
gawk -f ../../Src/makepro.awk complist.c Src/Zle > complist.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < complist.syms) \
	> complist.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < complist.syms) \
	> `echo complist.epro | sed 's/\.epro$/.pro/'`
make[5]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
make[5]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
Updated `complist.mdh'.
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Aliases'
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Aliases'
Updated `complist.mdh'.
echo 'timestamp for complist.mdh against complist.mdd' > complist.mdhs
sed 's,@NAME@,complist,g' < ./alias.c.in > complist.c
gawk -f ../../Src/makepro.awk complist.c Src/Aliases > complist.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < complist.syms) \
	> complist.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < complist.syms) \
	> `echo complist.epro | sed 's/\.epro$/.pro/'`
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Aliases'
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Aliases'
Updated `complist.mdh'.
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
make[5]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
make[5]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
Updated `computil.mdh'.
echo 'timestamp for computil.mdh against computil.mdd' > computil.mdhs
gawk -f ../../Src/makepro.awk computil.c Src/Zle > computil.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < computil.syms) \
	> computil.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < computil.syms) \
	> `echo computil.epro | sed 's/\.epro$/.pro/'`
make[5]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
make[5]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
Updated `computil.mdh'.
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Aliases'
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Aliases'
Updated `computil.mdh'.
echo 'timestamp for computil.mdh against computil.mdd' > computil.mdhs
sed 's,@NAME@,computil,g' < ./alias.c.in > computil.c
gawk -f ../../Src/makepro.awk computil.c Src/Aliases > computil.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < computil.syms) \
	> computil.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < computil.syms) \
	> `echo computil.epro | sed 's/\.epro$/.pro/'`
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Aliases'
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Aliases'
Updated `computil.mdh'.
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Modules'
make[5]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Modules'
make[5]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Modules'
Updated `parameter.mdh'.
echo 'timestamp for parameter.mdh against parameter.mdd' > parameter.mdhs
gawk -f ../../Src/makepro.awk parameter.c Src/Modules > parameter.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < parameter.syms) \
	> parameter.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < parameter.syms) \
	> `echo parameter.epro | sed 's/\.epro$/.pro/'`
make[5]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Modules'
make[5]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Modules'
Updated `parameter.mdh'.
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Modules'
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Aliases'
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Aliases'
Updated `parameter.mdh'.
echo 'timestamp for parameter.mdh against parameter.mdd' > parameter.mdhs
sed 's,@NAME@,parameter,g' < ./alias.c.in > parameter.c
gawk -f ../../Src/makepro.awk parameter.c Src/Aliases > parameter.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < parameter.syms) \
	> parameter.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < parameter.syms) \
	> `echo parameter.epro | sed 's/\.epro$/.pro/'`
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Aliases'
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Aliases'
Updated `parameter.mdh'.
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Builtins'
make[5]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Builtins'
make[5]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Builtins'
Updated `rlimits.mdh'.
echo 'timestamp for rlimits.mdh against rlimits.mdd' > rlimits.mdhs
gawk -f ../../Src/makepro.awk rlimits.c Src/Builtins > rlimits.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < rlimits.syms) \
	> rlimits.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < rlimits.syms) \
	> `echo rlimits.epro | sed 's/\.epro$/.pro/'`
make[5]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Builtins'
make[5]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Builtins'
Updated `rlimits.mdh'.
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Builtins'
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Aliases'
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Aliases'
Updated `rlimits.mdh'.
echo 'timestamp for rlimits.mdh against rlimits.mdd' > rlimits.mdhs
sed 's,@NAME@,rlimits,g' < ./alias.c.in > rlimits.c
gawk -f ../../Src/makepro.awk rlimits.c Src/Aliases > rlimits.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < rlimits.syms) \
	> rlimits.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < rlimits.syms) \
	> `echo rlimits.epro | sed 's/\.epro$/.pro/'`
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Aliases'
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Aliases'
Updated `rlimits.mdh'.
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Builtins'
make[5]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Builtins'
make[5]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Builtins'
Updated `sched.mdh'.
echo 'timestamp for sched.mdh against sched.mdd' > sched.mdhs
gawk -f ../../Src/makepro.awk sched.c Src/Builtins > sched.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < sched.syms) \
	> sched.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < sched.syms) \
	> `echo sched.epro | sed 's/\.epro$/.pro/'`
make[5]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Builtins'
make[5]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Builtins'
Updated `sched.mdh'.
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Builtins'
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Aliases'
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Aliases'
Updated `sched.mdh'.
echo 'timestamp for sched.mdh against sched.mdd' > sched.mdhs
sed 's,@NAME@,sched,g' < ./alias.c.in > sched.c
gawk -f ../../Src/makepro.awk sched.c Src/Aliases > sched.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < sched.syms) \
	> sched.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < sched.syms) \
	> `echo sched.epro | sed 's/\.epro$/.pro/'`
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Aliases'
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Aliases'
Updated `sched.mdh'.
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
make[4]: `zle.mdh' is up to date.
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Aliases'
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Aliases'
Updated `zle.mdh'.
echo 'timestamp for zle.mdh against zle.mdd' > zle.mdhs
sed 's,@NAME@,zle,g' < ./alias.c.in > zle.c
gawk -f ../../Src/makepro.awk zle.c Src/Aliases > zle.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < zle.syms) \
	> zle.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < zle.syms) \
	> `echo zle.epro | sed 's/\.epro$/.pro/'`
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Aliases'
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Aliases'
Updated `zle.mdh'.
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
make[5]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
make[5]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
Updated `zleparameter.mdh'.
echo 'timestamp for zleparameter.mdh against zleparameter.mdd' > zleparameter.mdhs
gawk -f ../../Src/makepro.awk zleparameter.c Src/Zle > zleparameter.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < zleparameter.syms) \
	> zleparameter.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < zleparameter.syms) \
	> `echo zleparameter.epro | sed 's/\.epro$/.pro/'`
make[5]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
make[5]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
Updated `zleparameter.mdh'.
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Aliases'
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Aliases'
Updated `zleparameter.mdh'.
echo 'timestamp for zleparameter.mdh against zleparameter.mdd' > zleparameter.mdhs
sed 's,@NAME@,zleparameter,g' < ./alias.c.in > zleparameter.c
gawk -f ../../Src/makepro.awk zleparameter.c Src/Aliases > zleparameter.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < zleparameter.syms) \
	> zleparameter.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < zleparameter.syms) \
	> `echo zleparameter.epro | sed 's/\.epro$/.pro/'`
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Aliases'
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Aliases'
Updated `zleparameter.mdh'.
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Modules'
make[5]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
make[5]: `complete.mdh' is up to date.
make[5]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
make[5]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Modules'
make[5]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Modules'
Updated `zutil.mdh'.
echo 'timestamp for zutil.mdh against zutil.mdd' > zutil.mdhs
gawk -f ../../Src/makepro.awk zutil.c Src/Modules > zutil.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < zutil.syms) \
	> zutil.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < zutil.syms) \
	> `echo zutil.epro | sed 's/\.epro$/.pro/'`
make[5]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Modules'
make[5]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Modules'
Updated `zutil.mdh'.
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Modules'
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Aliases'
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Aliases'
Updated `zutil.mdh'.
echo 'timestamp for zutil.mdh against zutil.mdd' > zutil.mdhs
sed 's,@NAME@,zutil,g' < ./alias.c.in > zutil.c
gawk -f ../../Src/makepro.awk zutil.c Src/Aliases > zutil.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < zutil.syms) \
	> zutil.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < zutil.syms) \
	> `echo zutil.epro | sed 's/\.epro$/.pro/'`
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Aliases'
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Aliases'
Updated `zutil.mdh'.
make[3]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Aliases'
make[3]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Builtins'
make[3]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Builtins'
make[3]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Modules'
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
make[4]: `complete.mdh' is up to date.
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
make[3]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Modules'
make[3]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
make[3]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
make[2]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src'
rm -f stamp-modobjs.tmp
make[2]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src'
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o builtin.o builtin.c
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o compat.o compat.c
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o cond.o cond.c
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o exec.o exec.c
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o glob.o glob.c
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o hashtable.o hashtable.c
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o hist.o hist.c
srcdir='.' MODBINS='modules-bltin' \
XMODCF='./xmods.conf' /bin/sh ./mkbltnmlst.sh bltinmods.list
Updated `zshpaths.h'.
Creating `zshxmods.h'.
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o init.o init.c
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o input.o input.c
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o jobs.o jobs.c
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o lex.o lex.c
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o linklist.o linklist.c
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o loop.o loop.c
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o math.o math.c
math.c: In function `zzlex':
math.c:369: warning: operation on `ptr' may be undefined
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o mem.o mem.c
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o module.o module.c
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o options.o options.c
echo '#define ZSH_VERSION "'3.1.9'"' > version.h
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o params.o params.c
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o parse.o parse.c
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o pattern.o pattern.c
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o prompt.o prompt.c
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o signals.o signals.c
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o signames.o signames.c
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o subst.o subst.c
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o text.o text.c
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o utils.o utils.c
utils.c: In function `noquery':
utils.c:1324: warning: unused variable `c'
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o watch.o watch.c
echo '' builtin.o compat.o cond.o exec.o glob.o hashtable.o hist.o init.o input.o jobs.o lex.o linklist.o loop.o math.o mem.o module.o options.o params.o parse.o pattern.o prompt.o signals.o signames.o subst.o text.o utils.o watch.o >> ../Src/stamp-modobjs.tmp
make[3]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Aliases'
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
make[4]: `compctl.mdh' is up to date.
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o compctl.o compctl.c
echo '' compctl.o | sed 's" " Aliases/"g' >> ../../Src/stamp-modobjs.tmp
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
make[4]: `complete.mdh' is up to date.
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o complete.o complete.c
echo '' complete.o | sed 's" " Aliases/"g' >> ../../Src/stamp-modobjs.tmp
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
make[4]: `complist.mdh' is up to date.
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o complist.o complist.c
echo '' complist.o | sed 's" " Aliases/"g' >> ../../Src/stamp-modobjs.tmp
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
make[4]: `computil.mdh' is up to date.
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o computil.o computil.c
echo '' computil.o | sed 's" " Aliases/"g' >> ../../Src/stamp-modobjs.tmp
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Modules'
make[4]: `parameter.mdh' is up to date.
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Modules'
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o parameter.o parameter.c
echo '' parameter.o | sed 's" " Aliases/"g' >> ../../Src/stamp-modobjs.tmp
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Builtins'
make[4]: `rlimits.mdh' is up to date.
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Builtins'
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o rlimits.o rlimits.c
echo '' rlimits.o | sed 's" " Aliases/"g' >> ../../Src/stamp-modobjs.tmp
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Builtins'
make[4]: `sched.mdh' is up to date.
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Builtins'
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o sched.o sched.c
echo '' sched.o | sed 's" " Aliases/"g' >> ../../Src/stamp-modobjs.tmp
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
make[4]: `zle.mdh' is up to date.
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o zle.o zle.c
echo '' zle.o | sed 's" " Aliases/"g' >> ../../Src/stamp-modobjs.tmp
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
make[4]: `zleparameter.mdh' is up to date.
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o zleparameter.o zleparameter.c
echo '' zleparameter.o | sed 's" " Aliases/"g' >> ../../Src/stamp-modobjs.tmp
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Modules'
make[5]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
make[5]: `complete.mdh' is up to date.
make[5]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Modules'
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o zutil.o zutil.c
echo '' zutil.o | sed 's" " Aliases/"g' >> ../../Src/stamp-modobjs.tmp
make[3]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Aliases'
make[3]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Builtins'
gawk -f ./rlimits.awk /usr/include/sys/resource.h > rlimits.h
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o rlimits.o rlimits.c
echo '' rlimits.o | sed 's" " Builtins/"g' >> ../../Src/stamp-modobjs.tmp
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o sched.o sched.c
echo '' sched.o | sed 's" " Builtins/"g' >> ../../Src/stamp-modobjs.tmp
make[3]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Builtins'
make[3]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Modules'
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o parameter.o parameter.c
echo '' parameter.o | sed 's" " Modules/"g' >> ../../Src/stamp-modobjs.tmp
make[4]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
make[4]: `complete.mdh' is up to date.
make[4]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o zutil.o zutil.c
echo '' zutil.o | sed 's" " Modules/"g' >> ../../Src/stamp-modobjs.tmp
make[3]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Modules'
make[3]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o compctl.o compctl.c
echo '' compctl.o | sed 's" " Zle/"g' >> ../../Src/stamp-modobjs.tmp
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o complete.o complete.c
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o compcore.o compcore.c
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o compmatch.o compmatch.c
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o compresult.o compresult.c
echo '' complete.o compcore.o compmatch.o compresult.o | sed 's" " Zle/"g' >> ../../Src/stamp-modobjs.tmp
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o complist.o complist.c
echo '' complist.o | sed 's" " Zle/"g' >> ../../Src/stamp-modobjs.tmp
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o computil.o computil.c
echo '' computil.o | sed 's" " Zle/"g' >> ../../Src/stamp-modobjs.tmp
( \
    echo '/** widgets.list                               **/'; \
    echo '/** widget structures for the internal widgets **/'; \
    echo; \
    echo '/* format: W(ZLE_FLAGS, t_firstname, functionname) */'; \
    echo; \
    sed -e 's/#.*//; /^$/d; s/-//g' \
	-e 's/^"\(.*\)" *, *\([^ ]*\) *, *\(.*\)/W(\3, t_\1, \2)/' \
	< ./iwidgets.list; \
) > widgets.list
( \
    echo '/** zle_widget.h                                **/'; \
    echo '/** indices of and pointers to internal widgets **/'; \
    echo; \
    echo 'enum {'; \
    sed -n -f ./zle_widget.sed < widgets.list; \
    echo '    ZLE_BUILTIN_WIDGET_COUNT'; \
    echo '};'; \
) > zle_widget.h
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o zle_bindings.o zle_bindings.c
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o zle_hist.o zle_hist.c
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o zle_keymap.o zle_keymap.c
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o zle_main.o zle_main.c
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o zle_misc.o zle_misc.c
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o zle_move.o zle_move.c
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o zle_params.o zle_params.c
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o zle_refresh.o zle_refresh.c
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o zle_thingy.o zle_thingy.c
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o zle_tricky.o zle_tricky.c
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o zle_utils.o zle_utils.c
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o zle_vi.o zle_vi.c
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o zle_word.o zle_word.c
echo '' zle_bindings.o zle_hist.o zle_keymap.o zle_main.o zle_misc.o zle_move.o zle_params.o zle_refresh.o zle_thingy.o zle_tricky.o zle_utils.o zle_vi.o zle_word.o | sed 's" " Zle/"g' >> ../../Src/stamp-modobjs.tmp
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2  -o zleparameter.o zleparameter.c
echo '' zleparameter.o | sed 's" " Zle/"g' >> ../../Src/stamp-modobjs.tmp
make[3]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
make[2]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src'
Updated `stamp-modobjs'.
make[2]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src'
gawk -f ../Src/makepro.awk main.c Src > main.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < main.syms) \
	> main.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < main.syms) \
	> `echo main.epro | sed 's/\.epro$/.pro/'`
gcc -c -I.  -DHAVE_CONFIG_H -D__sco  -Wall -Wno-implicit -Wmissing-prototypes -O2 -o main.o ./main.c
make[2]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src'
make[2]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src'
( echo '#!'; cat builtin.syms compat.syms cond.syms exec.syms glob.syms hashtable.syms hist.syms init.syms input.syms jobs.syms lex.syms linklist.syms loop.syms math.syms mem.syms module.syms options.syms params.syms parse.syms pattern.syms prompt.syms signals.syms signames.syms subst.syms text.syms utils.syms watch.syms  | sed -n '/^X/{s/^X//;p;}' | sort -u ) > zsh.export
make[2]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src'
rm -f zsh
gcc  -s  -o zsh main.o `cat stamp-modobjs`   -lsocket -ldl -ltermcap -lm -lc 
make[2]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src'
make[3]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Aliases'
make[3]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Aliases'
make[3]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Builtins'
make[3]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Builtins'
make[3]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Modules'
make[3]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Modules'
make[3]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
make[3]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src/Zle'
make[2]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src'
make[1]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Src'
make[1]: Entering directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Doc'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/data2/u2/work/ken/src/zsh/zsh-3.1.9/Doc'

^ permalink raw reply	[relevance 1%]

* Re: About 'test' compatibility
  @ 2002-02-26 22:17  3% ` Bart Schaefer
  0 siblings, 0 replies; 200+ results
From: Bart Schaefer @ 2002-02-26 22:17 UTC (permalink / raw)
  To: DervishD; +Cc: zsh-workers

On Tue, 26 Feb 2002, DervishD wrote:

> >No, it's the -d in $DEFAULT that's confusing it.  When $DEFAULT is
> >-d, zsh is treating the above as "if there is a directory named `='
> >..."
>
>     Just curiosity: why BASH doesn't fail here too? The 'test'
> builtin of the Bourne shell has the '-d' too.

It appears that bash gives the infix '=' higher precedence than the prefix
'-d' or the infix '-a':

bash2-2.03$ mkdir '='
bash2-2.03$ if [ "-d" = ]; then echo There is a directory; fi
There is a directory
bash2-2.03$ if [ -d = -x ]; then echo There is a directory; fi
bash2-2.03$ if [ -d = -a x ]; then echo There is a directory; fi
[: too many arguments
bash2-2.03$ if [ -d . -a x ]; then echo There is a directory; fi
There is a directory

I haven't checked whether e.g. POSIX says anything about this.


^ permalink raw reply	[relevance 3%]

* Re: Zsh 3 and ${1+"$@"} (Was: [GNU Autoconf 2.53] testsuite.log: 126 failures)
  @ 2002-04-10 15:52  8% ` Akim Demaille
    0 siblings, 1 reply; 200+ results
From: Akim Demaille @ 2002-04-10 15:52 UTC (permalink / raw)
  To: Peter Stephenson; +Cc: zsh-workers, ab, bug-autoconf, APatche

[-- Attachment #1: Type: text/plain, Size: 418 bytes --]

Thanks to you all for the help!

I'm installing the following patch on Autoconf (I have left its side
effects, such as on configure, so that people can look at its impact).
Feel free to fix my words about Zsh.

Allen, I'll wrap a tarball, once the test suite finished (err... a
couple of hours I guess), will you be able to re-run the test suite on
that tarball?  I expect much less than 126 failures on 163 tests :)


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: diffs.patch --]
[-- Type: text/x-patch, Size: 49563 bytes --]

Index: ChangeLog
from  Akim Demaille  <akim@epita.fr>

	* lib/m4sugar/m4sh.m4 (AS_SHELL_SANITIZE): Install the Zsh
	workaround for ${1+"$@"}.
	* doc/autoconf.texi (Shell Substitutions): Explain it.
	From Oliver Kiddle and Peter Stephenson.

	Have M4sh perform minimal shell sanitizing.

	* lib/m4sugar/m4sh.at (AS_SHELL_SANITIZE): Split the `_AS_PREPARE_*'
	part into...
	(_AS_PREPARE): this new macro.
	(AS_PREPARE): New.
	(AS_INIT): Invoke AS_SHELL_SANITIZE.
	* tests/m4sh.at (AT_DATA_LINENO): Use _AS_PREPARE.

	Adjust Autoconf and Autotest.

	* lib/autoconf/general.m4 (_AC_INIT_DEFAULTS): Don't invoke
	AS_SHELL_SANITIZE, AS_INIT did it, but invoke AS_PREPARE.
	* lib/autotest/general.m4 (AT_INIT): Likewise.
	* lib/autoconf/status.m4 (_AC_OUTPUT_CONFIG_STATUS):
	Invoke _AS_PREPARE (not AS_PREPARE) in addition to
	AS_SHELL_SANITIZE.

	Use this M4sh to generate Autoconf's shell scripts.

	* tests/wrapsh.as: New, precursor of wrapsh.in.
	* tests/Makefile.am: Include lib/freeze.mk to get the dependencies
	on Autotest and M4sh.
	($(TESTSUITE)): Use $(autotest_m4f_dependencies).
	(wrapsh.in): New target.
	* bin/autoconf.as: New, precursor of autoconf.in.
	(autoconf.in): New target.

Index: NEWS
===================================================================
RCS file: /cvsroot/autoconf/autoconf/NEWS,v
retrieving revision 1.229
diff -u -u -r1.229 NEWS
--- NEWS 9 Apr 2002 20:37:10 -0000 1.229
+++ NEWS 10 Apr 2002 15:51:27 -0000
@@ -8,6 +8,16 @@
 
 - AC_PROG_CC_STDC is integrated into AC_PROG_CC.
 
+** Bug fixes
+
+- Spurious complaints from `m4_bmatch' about invalid regular
+  expressions are suppressed.
+
+** Improved Zsh portability
+  Both Autoconf the package, and the scripts it produces, should run
+  more reliably with Zsh.  Bear in mind it is the default Bourne shell
+  on Darwin.
+
 ** Documentation
 
 - Limitations of Make
Index: THANKS
===================================================================
RCS file: /cvsroot/autoconf/autoconf/THANKS,v
retrieving revision 1.85
diff -u -u -r1.85 THANKS
--- THANKS 19 Mar 2002 15:20:58 -0000 1.85
+++ THANKS 10 Apr 2002 15:51:27 -0000
@@ -126,6 +126,7 @@
 Nishio Futoshi              fut_nis@d3.dion.ne.jp
 Noah Elliott                elliott@hera.llnl.gov
 Noah Friedman               friedman@gnu.ai.mit.edu
+Oliver Kiddle               okiddle@totalise.co.uk
 Olly Betts                  olly@survex.com
 Ossama Othman               ossama@debian.org
 Patrick Tullmann            tullmann@cs.utah.edu
@@ -137,6 +138,7 @@
 Pavel Roskin                pavel_roskin@geocities.com
 Peter Eisentraut            peter_e@gmx.net
 Peter Simons                simons@research.cys.de
+Peter Stephenson            pws@csr.com
 Philipp Thomas              kthomas@gwdg.de
 Rainer Orth                 ro@TechFak.Uni-Bielefeld.DE
 Raja R Harinath             harinath@cs.umn.edu
Index: configure
===================================================================
RCS file: /cvsroot/autoconf/autoconf/configure,v
retrieving revision 1.206
diff -u -u -r1.206 configure
--- configure 13 Mar 2002 09:58:41 -0000 1.206
+++ configure 10 Apr 2002 15:51:27 -0000
@@ -8,14 +8,6 @@
 # Free Software Foundation, Inc.
 # This configure script is free software; the Free Software Foundation
 # gives unlimited permission to copy, distribute and modify it.
-if expr a : '\(a\)' >/dev/null 2>&1; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-
-
 ## --------------------- ##
 ## M4sh Initialization.  ##
 ## --------------------- ##
@@ -24,6 +16,9 @@
 if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
   emulate sh
   NULLCMD=:
+  # Zsh performs word splitting on ${1+"$@"}, which is contrary to
+  # our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
 elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
   set -o posix
 fi
@@ -62,8 +57,22 @@
       { LC_MESSAGES=C; export LC_MESSAGES; }
 
 
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+
 # Name of the executable.
-as_me=`(basename "$0") 2>/dev/null ||
+as_me=`$as_basename "$0" ||
 $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
 	 X"$0" : 'X\(//\)$' \| \
 	 X"$0" : 'X\(/\)$' \| \
@@ -74,13 +83,6 @@
   	  /^X\/\(\/\).*/{ s//\1/; q; }
   	  s/.*/./; q'`
 
-# PATH needs CR, and LINENO needs CR and PATH.
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
 
 # The user is always right.
 if test "${PATH_SEPARATOR+set}" != set; then
@@ -95,92 +97,6 @@
   rm -f conftest.sh
 fi
 
-
-  as_lineno_1=$LINENO
-  as_lineno_2=$LINENO
-  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
-  test "x$as_lineno_1" != "x$as_lineno_2" &&
-  test "x$as_lineno_3"  = "x$as_lineno_2"  || {
-  # Find who we are.  Look in the path if we contain no path at all
-  # relative or not.
-  case $0 in
-    *[\\/]* ) as_myself=$0 ;;
-    *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-done
-
-       ;;
-  esac
-  # We did not find ourselves, most probably we were run as `sh COMMAND'
-  # in which case we are not to be found in the path.
-  if test "x$as_myself" = x; then
-    as_myself=$0
-  fi
-  if test ! -f "$as_myself"; then
-    { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2
-   { (exit 1); exit 1; }; }
-  fi
-  case $CONFIG_SHELL in
-  '')
-    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for as_base in sh bash ksh sh5; do
-	 case $as_dir in
-	 /*)
-	   if ("$as_dir/$as_base" -c '
-  as_lineno_1=$LINENO
-  as_lineno_2=$LINENO
-  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
-  test "x$as_lineno_1" != "x$as_lineno_2" &&
-  test "x$as_lineno_3"  = "x$as_lineno_2" ') 2>/dev/null; then
-	     CONFIG_SHELL=$as_dir/$as_base
-	     export CONFIG_SHELL
-	     exec "$CONFIG_SHELL" "$0" ${1+"$@"}
-	   fi;;
-	 esac
-       done
-done
-;;
-  esac
-
-  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
-  # uniformly replaced by the line number.  The first 'sed' inserts a
-  # line-number line before each line; the second 'sed' does the real
-  # work.  The second script uses 'N' to pair each line-number line
-  # with the numbered line, and appends trailing '-' during
-  # substitution so that $LINENO is not a special case at line end.
-  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
-  # second 'sed' script.  Blame Lee E. McMahon for sed's syntax.  :-)
-  sed '=' <$as_myself |
-    sed '
-      N
-      s,$,-,
-      : loop
-      s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
-      t loop
-      s,-$,,
-      s,^['$as_cr_digits']*\n,,
-    ' >$as_me.lineno &&
-  chmod +x $as_me.lineno ||
-    { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
-   { (exit 1); exit 1; }; }
-
-  # Don't try to exec as it changes $[0], causing all sort of problems
-  # (the dirname of $[0] is not the place where we might find the
-  # original and so on.  Autoconf is especially sensible to this).
-  . ./$as_me.lineno
-  # Exit status is that of the last command.
-  exit
-}
-
-
 case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
   *c*,-n*) ECHO_N= ECHO_C='
 ' ECHO_T='	' ;;
@@ -188,48 +104,8 @@
   *)       ECHO_N= ECHO_C='\c' ECHO_T= ;;
 esac
 
-if expr a : '\(a\)' >/dev/null 2>&1; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-rm -f conf$$ conf$$.exe conf$$.file
-echo >conf$$.file
-if ln -s conf$$.file conf$$ 2>/dev/null; then
-  # We could just check for DJGPP; but this test a) works b) is more generic
-  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
-  if test -f conf$$.exe; then
-    # Don't use ln at all; we don't have any links
-    as_ln_s='cp -p'
-  else
-    as_ln_s='ln -s'
-  fi
-elif ln conf$$.file conf$$ 2>/dev/null; then
-  as_ln_s=ln
-else
-  as_ln_s='cp -p'
-fi
-rm -f conf$$ conf$$.exe conf$$.file
-
 as_executable_p="test -f"
 
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
-
-
-# IFS
-# We need space, tab and new line, in precisely that order.
-as_nl='
-'
-IFS=" 	$as_nl"
-
-# CDPATH.
-$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=$PATH_SEPARATOR; export CDPATH; }
-
 
 # Name of the host.
 # hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
@@ -1159,7 +1035,7 @@
 ac_config_sub="$SHELL $ac_aux_dir/config.sub"
 ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
 
-ac_config_files="$ac_config_files config/Makefile"
+          ac_config_files="$ac_config_files config/Makefile"
 
 
 am__api_version="1.6a"
@@ -1519,24 +1395,24 @@
 
 
 # Initialize the test suite and build position independent wrappers.
-ac_config_commands="$ac_config_commands tests/atconfig"
+          ac_config_commands="$ac_config_commands tests/atconfig"
 
 
-ac_config_files="$ac_config_files tests/Makefile tests/atlocal"
+                    ac_config_files="$ac_config_files tests/Makefile tests/atlocal"
 
-ac_config_files="$ac_config_files tests/autoconf:tests/wrapsh.in"
+          ac_config_files="$ac_config_files tests/autoconf:tests/wrapsh.in"
 
-ac_config_files="$ac_config_files tests/autoheader:tests/wrappl.in"
+          ac_config_files="$ac_config_files tests/autoheader:tests/wrappl.in"
 
-ac_config_files="$ac_config_files tests/autom4te:tests/wrappl.in"
+          ac_config_files="$ac_config_files tests/autom4te:tests/wrappl.in"
 
-ac_config_files="$ac_config_files tests/autoreconf:tests/wrappl.in"
+          ac_config_files="$ac_config_files tests/autoreconf:tests/wrappl.in"
 
-ac_config_files="$ac_config_files tests/autoscan:tests/wrappl.in"
+          ac_config_files="$ac_config_files tests/autoscan:tests/wrappl.in"
 
-ac_config_files="$ac_config_files tests/autoupdate:tests/wrappl.in"
+          ac_config_files="$ac_config_files tests/autoupdate:tests/wrappl.in"
 
-ac_config_files="$ac_config_files tests/ifnames:tests/wrappl.in"
+          ac_config_files="$ac_config_files tests/ifnames:tests/wrappl.in"
 
 # Extract the first word of "expr", so it can be a program name with args.
 set dummy expr; ac_word=$2
@@ -1649,7 +1525,7 @@
 fi
 
 # Man pages.
-ac_config_files="$ac_config_files man/Makefile"
+          ac_config_files="$ac_config_files man/Makefile"
 
 
 HELP2MAN=${HELP2MAN-"${am_missing_run}help2man"}
@@ -1708,7 +1584,7 @@
 }
 
 # Emacs modes.
-ac_config_files="$ac_config_files lib/emacs/Makefile"
+          ac_config_files="$ac_config_files lib/emacs/Makefile"
 
 test x"$EMACS" = xt && EMACS=
 for ac_prog in emacs xemacs
@@ -1845,7 +1721,7 @@
 
 
 
-ac_config_files="$ac_config_files Makefile doc/Makefile lib/Makefile lib/Autom4te/Makefile lib/autoscan/Makefile lib/m4sugar/Makefile lib/autoconf/Makefile lib/autotest/Makefile bin/Makefile"
+                                                                                          ac_config_files="$ac_config_files Makefile doc/Makefile lib/Makefile lib/Autom4te/Makefile lib/autoscan/Makefile lib/m4sugar/Makefile lib/autoconf/Makefile lib/autotest/Makefile bin/Makefile"
 
 
 cat >confcache <<\_ACEOF
@@ -1973,7 +1849,6 @@
 _ACEOF
 
 cat >>$CONFIG_STATUS <<\_ACEOF
-
 ## --------------------- ##
 ## M4sh Initialization.  ##
 ## --------------------- ##
@@ -1982,6 +1857,9 @@
 if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
   emulate sh
   NULLCMD=:
+  # Zsh performs word splitting on ${1+"$@"}, which is contrary to
+  # our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
 elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
   set -o posix
 fi
@@ -2020,8 +1898,22 @@
       { LC_MESSAGES=C; export LC_MESSAGES; }
 
 
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+
 # Name of the executable.
-as_me=`(basename "$0") 2>/dev/null ||
+as_me=`$as_basename "$0" ||
 $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
 	 X"$0" : 'X\(//\)$' \| \
 	 X"$0" : 'X\(/\)$' \| \
@@ -2032,6 +1924,7 @@
   	  /^X\/\(\/\).*/{ s//\1/; q; }
   	  s/.*/./; q'`
 
+
 # PATH needs CR, and LINENO needs CR and PATH.
 # Avoid depending upon Character Ranges.
 as_cr_letters='abcdefghijklmnopqrstuvwxyz'
@@ -2099,6 +1992,8 @@
   as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
   test "x$as_lineno_1" != "x$as_lineno_2" &&
   test "x$as_lineno_3"  = "x$as_lineno_2" ') 2>/dev/null; then
+	     $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+	     $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
 	     CONFIG_SHELL=$as_dir/$as_base
 	     export CONFIG_SHELL
 	     exec "$CONFIG_SHELL" "$0" ${1+"$@"}
@@ -2172,6 +2067,12 @@
 fi
 rm -f conf$$ conf$$.exe conf$$.file
 
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p=:
+else
+  as_mkdir_p=false
+fi
+
 as_executable_p="test -f"
 
 # Sed expression to map a string onto a valid CPP name.
@@ -2544,25 +2445,30 @@
   	  /^X\(\/\/\)$/{ s//\1/; q; }
   	  /^X\(\/\).*/{ s//\1/; q; }
   	  s/.*/./; q'`
-  { case "$ac_dir" in
-  [\\/]* | ?:[\\/]* ) as_incr_dir=;;
-  *)                      as_incr_dir=.;;
-esac
-as_dummy="$ac_dir"
-for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do
-  case $as_mkdir_dir in
-    # Skip DOS drivespec
-    ?:) as_incr_dir=$as_mkdir_dir ;;
-    *)
-      as_incr_dir=$as_incr_dir/$as_mkdir_dir
-      test -d "$as_incr_dir" ||
-        mkdir "$as_incr_dir" ||
-	{ { echo "$as_me:$LINENO: error: cannot create \"$ac_dir\"" >&5
-echo "$as_me: error: cannot create \"$ac_dir\"" >&2;}
-   { (exit 1); exit 1; }; }
-    ;;
-  esac
-done; }
+  { if $as_mkdir_p; then
+    mkdir -p "$ac_dir"
+  else
+    as_dir="$ac_dir"
+    as_dirs=
+    while test ! -d "$as_dir"; do
+      as_dirs="$as_dir $as_dirs"
+      as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+         X"$as_dir" : 'X\(//\)[^/]' \| \
+         X"$as_dir" : 'X\(//\)$' \| \
+         X"$as_dir" : 'X\(/\)' \| \
+         .     : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+    done
+    test ! -n "$as_dirs" || mkdir $as_dirs
+  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+   { (exit 1); exit 1; }; }; }
 
   ac_builddir=.
 
Index: bin/Makefile.am
===================================================================
RCS file: /cvsroot/autoconf/autoconf/bin/Makefile.am,v
retrieving revision 1.4
diff -u -u -r1.4 Makefile.am
--- bin/Makefile.am 23 Sep 2001 17:16:43 -0000 1.4
+++ bin/Makefile.am 10 Apr 2002 15:51:27 -0000
@@ -1,7 +1,7 @@
 ## Process this file with automake to create Makefile.in. -*-Makefile-*-
 
 ## Makefile for Autoconf.
-## Copyright 1999, 2000, 2001 Free Software Foundation, Inc.
+## Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
 
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
@@ -22,7 +22,8 @@
               autoconf autoheader autoreconf ifnames autoscan autoupdate
 
 EXTRA_DIST = autoconf.in autoheader.in autoreconf.in autoupdate.in ifnames.in \
-             autoscan.in autom4te.in
+             autoscan.in autom4te.in \
+	     autoconf.as
 
 # Files that should be removed, but which Automake does not know.
 CLEANFILES = $(bin_SCRIPTS)
@@ -46,9 +47,15 @@
 	-e 's,@VERSION\@,$(VERSION),g' \
 	-e 's,@PACKAGE_NAME\@,$(PACKAGE_NAME),g'
 
+# autoconf is written in M4sh.
+AUTOM4SH = $(top_builddir)/tests/autom4te --language M4sh
+$(srcdir)/autoconf.in: $(srcdir)/autoconf.as $(m4sh_m4f_dependencies)
+	$(AUTOM4SH) $(srcdir)/autoconf.as -o $@
+
 ## All the files below depend on configure.ac so that they are rebuilt
 ## when the Autoconf version changes. Unfortunately, suffix rules cannot
 ## have additional dependencies, so we have to use explicit rules.
+
 
 autoconf: $(srcdir)/autoconf.in $(top_srcdir)/configure.ac
 	rm -f autoconf autoconf.tmp
Index: bin/Makefile.in
===================================================================
RCS file: /cvsroot/autoconf/autoconf/bin/Makefile.in,v
retrieving revision 1.10
diff -u -u -r1.10 Makefile.in
--- bin/Makefile.in 8 Mar 2002 12:44:46 -0000 1.10
+++ bin/Makefile.in 10 Apr 2002 15:51:27 -0000
@@ -85,7 +85,8 @@
 
 
 EXTRA_DIST = autoconf.in autoheader.in autoreconf.in autoupdate.in ifnames.in \
-             autoscan.in autom4te.in
+             autoscan.in autom4te.in \
+	     autoconf.as
 
 
 # Files that should be removed, but which Automake does not know.
@@ -106,6 +107,9 @@
 	-e 's,@PACKAGE_NAME\@,$(PACKAGE_NAME),g'
 
 
+# autoconf is written in M4sh.
+AUTOM4SH = $(top_builddir)/tests/autom4te --language M4sh
+
 TAGS_DEPENDENCIES = $(EXTRA_DIST)
 
 letters = abcdefghijklmnopqrstuvwxyz
@@ -294,6 +298,8 @@
 	maintainer-clean-generic mostlyclean mostlyclean-generic tags \
 	uninstall uninstall-am uninstall-binSCRIPTS uninstall-info-am
 
+$(srcdir)/autoconf.in: $(srcdir)/autoconf.as $(m4sh_m4f_dependencies)
+	$(AUTOM4SH) $(srcdir)/autoconf.as -o $@
 
 autoconf: $(srcdir)/autoconf.in $(top_srcdir)/configure.ac
 	rm -f autoconf autoconf.tmp
Index: bin/autoconf.as
===================================================================
RCS file: bin/autoconf.as
diff -N bin/autoconf.as
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ bin/autoconf.as 10 Apr 2002 15:51:27 -0000
@@ -0,0 +1,191 @@
+AS_INIT[]dnl                                            -*- shell-script -*-
+# autoconf -- create `configure' using m4 macros
+# Copyright (C) 1992, 1993, 1994, 1996, 1999, 2000, 2001, 2002
+# Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+usage=["\
+Usage: $0 [OPTION] ... [TEMPLATE-FILE]
+
+Generate a configuration script from a TEMPLATE-FILE if given, or
+\`configure.ac' if present, or else \`configure.in'.  Output is sent
+to the standard output if TEMPLATE-FILE is given, else into
+\`configure'.
+
+Operation modes:
+  -h, --help               print this help, then exit
+  -V, --version            print version number, then exit
+  -v, --verbose            verbosely report processing
+  -d, --debug              don't remove temporary files
+  -I, --include=DIR        look for input files in DIR (cumulative)
+  -f, --force              consider all files obsolete
+  -o, --output=FILE        save output in FILE (stdout is the default)
+  -W, --warnings=CATEGORY  report the warnings falling in CATEGORY [syntax]
+
+Warning categories include:
+  \`cross'         cross compilation issues
+  \`obsolete'      obsolete constructs
+  \`syntax'        dubious syntactic constructs
+  \`all'           all the warnings
+  \`no-CATEGORY'   turn off the warnings on CATEGORY
+  \`none'          turn off all the warnings
+  \`error'         warnings are error
+
+The environment variable \`WARNINGS' is honored.
+
+Tracing:
+  -t, --trace=MACRO     report the list of calls to MACRO
+  -i, --initialization  also trace Autoconf's initialization process
+
+In tracing mode, no configuration script is created.
+
+Report bugs to <bug-autoconf@gnu.org>."]
+
+version=["\
+autoconf (@PACKAGE_NAME@) @VERSION@
+Written by David J. MacKenzie and Akim Demaille.
+
+Copyright 2002 Free Software Foundation, Inc.
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."]
+
+me=`AS_BASENAME([$0])`
+
+help="\
+Try \`$me --help' for more information."
+
+exit_missing_arg="\
+echo \"$me: option \\\`\$1' requires an argument\" >&2
+echo \"\$help\" >&2
+exit 1"
+
+# Variables.
+: ${AUTOM4TE=@autom4te-name@}
+dir=`AS_DIRNAME([$0])`
+outfile=
+verbose=:
+
+# Parse command line.
+while test $# -gt 0 ; do
+  option=[`expr "x$1" : 'x\(--[^=]*\)' \| \
+               "x$1" : 'x\(-.\)'`]
+  optarg=[`expr "x$1" : 'x--[^=]*=\(.*\)' \| \
+               "x$1" : 'x-.\(.*\)'`]
+  case $1 in
+    --version | -V )
+       echo "$version" ; exit 0 ;;
+    --help | -h )
+       echo "$usage"; exit 0 ;;
+
+    --verbose | -v )
+       verbose=echo
+       AUTOM4TE="$AUTOM4TE $1"; shift ;;
+
+    # Arguments passed as is to autom4te.
+    --debug      | -d   | \
+    --force      | -f   | \
+    --include=*  | -I?* | \
+    --warnings=* | -W?* )
+       AUTOM4TE="$AUTOM4TE $1"; shift ;;
+
+    # Options with separated arg passed as is to autom4te.
+    --include | -I | \
+    --warnings | -W )
+       test $# = 1 && eval "$exit_missing_arg"
+       AUTOM4TE="$AUTOM4TE $option $2"
+       shift 2 ;;
+
+    # Obsolete options.
+    --localdir=* | -l?* | --autoconf-dir=* | -A?* | --macrodir=* | -m?* )
+       echo "$me: warning: $option is obsolete, use --include" >&2
+       AUTOM4TE="$AUTOM4TE --include=$optarg"
+       shift ;;
+    --localdir | -l | --autoconf-dir | -A | --macrodir | -m )
+       echo "$me: warning: $option is obsolete, use --include" >&2
+       test $# = 1 && eval "$exit_missing_arg"
+       shift
+       AUTOM4TE="$AUTOM4TE --include=$1"
+       shift ;;
+
+    --trace=* | -t?* )
+       traces="$traces --trace='"`echo "$optarg" | sed "s/'/'\\\\\\\\''/g"`"'"
+       shift ;;
+    --trace | -t )
+       test $# = 1 && eval "$exit_missing_arg"
+       shift
+       traces="$traces --trace='"`echo "$1" | sed "s/'/'\\\\\\\\''/g"`"'"
+       shift ;;
+    --initialization | -i )
+       AUTOM4TE="$AUTOM4TE --melt"
+       shift;;
+
+    --output=* | -o?* )
+       outfile=$optarg
+       shift ;;
+    --output | -o )
+       test $# = 1 && eval "$exit_missing_arg"
+       shift
+       outfile=$1
+       shift ;;
+
+    -- )     # Stop option processing
+       shift; break ;;
+    - )	# Use stdin as input.
+       break ;;
+    -* )
+       exec >&2
+       echo "$me: invalid option $1"
+       echo "$help"
+       exit 1 ;;
+    * )
+       break ;;
+  esac
+done
+
+# Find the input file.
+case $# in
+  0)
+    case `ls configure.ac configure.in 2>/dev/null` in
+      *ac*in )
+        echo "$me: warning: both \`configure.ac' and \`configure.in' are present." >&2
+        echo "$me: warning: proceeding with \`configure.ac'." >&2
+        infile=configure.ac;;
+      *ac ) infile=configure.ac;;
+      *in ) infile=configure.in;;
+      * )
+        echo "$me: no input file" >&2
+        exit 1;;
+    esac
+    test -z "$traces" && test -z "$outfile" && outfile=configure;;
+  1) # autom4te doesn't like `-'.
+     test "x$1" != "x-" && infile=$1 ;;
+  *) exec >&2
+     echo "$me: invalid number of arguments."
+     echo "$help"
+     (exit 1); exit 1 ;;
+esac
+
+# Unless specified, the output is stdout.
+test -z "$outfile" && outfile=-
+
+# Running autom4te.
+run_autom4te="$AUTOM4TE --language=autoconf --output=$outfile"
+# Autom4te expansion.
+eval set dummy "$traces"
+shift
+$verbose "$me: running $run_autom4te "${1+"$@"}" $infile" >&2
+exec $run_autom4te ${1+"$@"} $infile
Index: bin/autoconf.in
===================================================================
RCS file: /cvsroot/autoconf/autoconf/bin/autoconf.in,v
retrieving revision 1.144
diff -u -u -r1.144 autoconf.in
--- bin/autoconf.in 8 Mar 2002 11:46:31 -0000 1.144
+++ bin/autoconf.in 10 Apr 2002 15:51:27 -0000
@@ -1,7 +1,29 @@
-#! @SHELL@
-# -*- shell-script -*-
+#! /bin/sh
+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh performs word splitting on ${1+""}, which is contrary to
+  # our usage.  Disable this feature.
+  alias -g '${1+""}'='""'
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+  set -o posix
+fi
+
 # autoconf -- create `configure' using m4 macros
-# Copyright 1992, 1993, 1994, 1996, 1999, 2000, 2001
+# Copyright (C) 1992, 1993, 1994, 1996, 1999, 2000, 2001, 2002
 # Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
@@ -19,8 +41,6 @@
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
 # 02111-1307, USA.
 
-me=`echo "$0" | sed -e 's,.*[\\/],,'`
-
 usage="\
 Usage: $0 [OPTION] ... [TEMPLATE-FILE]
 
@@ -66,6 +86,17 @@
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
 
+me=`$as_basename $0 ||
+$as_expr X/$0 : '.*/\([^/][^/]*\)/*$' \| \
+	 X$0 : 'X\(//\)$' \| \
+	 X$0 : 'X\(/\)$' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X/$0 |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+  	  /^X\/\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\/\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+
 help="\
 Try \`$me --help' for more information."
 
@@ -74,15 +105,20 @@
 echo \"\$help\" >&2
 exit 1"
 
-# NLS nuisances.
-if test "${LANG+set}"   = set; then LANG=C;   export LANG;   fi
-if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
-if test "${LC_CTYPE+set}"    = set; then LC_CTYPE=C;    export LC_CTYPE;    fi
-if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
-
 # Variables.
 : ${AUTOM4TE=@autom4te-name@}
-dir=`echo "$0" | sed -e 's,[^\\/]*$,,'`
+dir=`(dirname $0) 2>/dev/null ||
+$as_expr X$0 : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+         X$0 : 'X\(//\)[^/]' \| \
+         X$0 : 'X\(//\)$' \| \
+         X$0 : 'X\(/\)' \| \
+         .     : '\(.\)' 2>/dev/null ||
+echo X$0 |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
 outfile=
 verbose=:
 
Index: doc/autoconf.texi
===================================================================
RCS file: /cvsroot/autoconf/autoconf/doc/autoconf.texi,v
retrieving revision 1.608
diff -u -u -r1.608 autoconf.texi
--- doc/autoconf.texi 9 Apr 2002 20:37:11 -0000 1.608
+++ doc/autoconf.texi 10 Apr 2002 15:51:28 -0000
@@ -7412,6 +7412,9 @@
 @c FIXME: Eventually will become a chapter, as it is not related to
 @c programming in M4 per se.
 
+M4sh is aiming at producing portable Bourne shell scripts.  For the time
+being, it is not mature enough to be widely used.
+
 M4sh provides portable alternatives for some common shell constructs
 that unfortunately are not portable in practice.
 
@@ -8460,6 +8463,35 @@
 Unix 4.0 and 5.0, will then replace it with an empty argument.  To be
 portable, use @samp{$@{1+"$@@"@}}.
 
+But that's not the end of the story.  Zsh (3.x and 4.x), when emulating
+the Bourne shell, does perform word splitting on @samp{$@{1+"$@@"@}}...
+
+@example
+zsh $ @kbd{emulate sh}
+zsh $ @kbd{for i in "$@"; do echo $i; done}
+Hello World
+!
+zsh $ @kbd{for i in $@{1+"$@@"@}; do echo $i; done}
+Hello
+World
+!
+@end example
+
+@noindent
+It is not clear whether this is a violation of the Bourne shell
+standard, nevertheless, in this regard Zsh is different from all the
+other shells.  Of course Zsh handles @samp{"$@@"} properly, but we can't
+use it portably...
+
+Fortunately, there is a workaround which relies on Zsh's ``global
+aliases'': let it convert @samp{$@{1+"$@@"@}} into @samp{"$@@"} by
+itself:
+
+@example
+test -n "$@{ZSH_VERSION+set@}" = set && alias -g '$@{1+"$@@"@}'='"$@@"'
+@end example
+
+
 @item $@{@var{var}:-@var{value}@}
 @c Info cannot handle `:' in index entries.
 @c @cindex $@{@var{var}:-@var{value}@}
@@ -8478,6 +8510,8 @@
 otherwise some shells, such as on Digital Unix V 5.0, will die because
 of a ``bad substitution''.
 
+@sp 1
+
 Solaris' @command{/bin/sh} has a frightening bug in its interpretation
 of this.  Imagine you need set a variable to a string containing
 @samp{@}}.  This @samp{@}} character confuses Solaris' @command{/bin/sh}
@@ -9132,6 +9166,12 @@
   echo "$arg"
 done
 @end example
+
+@noindent
+But keep in mind that Zsh, even in Bourne shell emulation mode, performs
+word splitting on @samp{$@{1+"$@@"@}}, see @ref{Shell Substitutions},
+item @samp{$@@}, for more.
+
 
 @item @command{if}
 @c ---------------
Index: lib/autoconf/autoconf.m4
===================================================================
RCS file: /cvsroot/autoconf/autoconf/lib/autoconf/autoconf.m4,v
retrieving revision 1.40
diff -u -u -r1.40 autoconf.m4
--- lib/autoconf/autoconf.m4 5 Feb 2002 08:12:46 -0000 1.40
+++ lib/autoconf/autoconf.m4 10 Apr 2002 15:51:28 -0000
@@ -1,6 +1,6 @@
 # This file is part of Autoconf.                -*- Autoconf -*-
 # Driver that loads the Autoconf macro files.
-# Copyright 1994, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+# Copyright (C) 1994, 1999, 2000, 2001, 2002  Free Software Foundation, Inc.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
Index: lib/autoconf/general.m4
===================================================================
RCS file: /cvsroot/autoconf/autoconf/lib/autoconf/general.m4,v
retrieving revision 1.792
diff -u -u -r1.792 general.m4
--- lib/autoconf/general.m4 4 Mar 2002 15:09:21 -0000 1.792
+++ lib/autoconf/general.m4 10 Apr 2002 15:51:28 -0000
@@ -432,8 +432,6 @@
 m4_define([_AC_INIT_DEFAULTS],
 [m4_divert_push([DEFAULTS])dnl
 
-AS_SHELL_SANITIZE
-
 # Name of the host.
 # hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
 # so uname gets run too.
@@ -1252,6 +1250,7 @@
 # Actually reserved by M4sh.
 m4_pattern_allow([^AS_FLAGS$])
 AS_INIT
+AS_PREPARE
 m4_ifval([$2], [_AC_INIT_PACKAGE($@)])
 _AC_INIT_DEFAULTS
 _AC_INIT_PARSE_ARGS
@@ -1754,9 +1753,9 @@
 # ------------------------------------------
 # The name of shell var CACHE-ID must contain `_cv_' in order to get saved.
 # Should be dnl'ed.  Try to catch common mistakes.
-m4_define([AC_CACHE_VAL],
+m4_defun([AC_CACHE_VAL],
 [m4_bmatch([$2], [AC_DEFINE],
-          [AC_DIAGNOSE(syntax,
+           [AC_DIAGNOSE(syntax,
 [$0($1, ...): suspicious presence of an AC_DEFINE in the second argument, ]dnl
 [where no actions should be taken])])dnl
 AS_VAR_SET_IF([$1],
@@ -1767,7 +1766,7 @@
 # AC_CACHE_CHECK(MESSAGE, CACHE-ID, COMMANDS)
 # -------------------------------------------
 # Do not call this macro with a dnl right behind.
-m4_define([AC_CACHE_CHECK],
+m4_defun([AC_CACHE_CHECK],
 [AC_MSG_CHECKING([$1])
 AC_CACHE_VAL([$2], [$3])dnl
 AC_MSG_RESULT_UNQUOTED([AS_VAR_GET([$2])])])
Index: lib/autoconf/status.m4
===================================================================
RCS file: /cvsroot/autoconf/autoconf/lib/autoconf/status.m4,v
retrieving revision 1.21
diff -u -u -r1.21 status.m4
--- lib/autoconf/status.m4 9 Apr 2002 11:15:33 -0000 1.21
+++ lib/autoconf/status.m4 10 Apr 2002 15:51:28 -0000
@@ -1261,6 +1261,10 @@
 
 cat >>$CONFIG_STATUS <<\_ACEOF
 AS_SHELL_SANITIZE
+dnl Watch out, this is directly the initializations, do not use
+dnl AS_PREPARE, otherwise you'd get it output in the initialization
+dnl of configure, not config.status.
+_AS_PREPARE
 exec AS_MESSAGE_FD>&1
 
 # Open the log real soon, to keep \$[0] and so on meaningful, and to
Index: lib/autotest/general.m4
===================================================================
RCS file: /cvsroot/autoconf/autoconf/lib/autotest/general.m4,v
retrieving revision 1.129
diff -u -u -r1.129 general.m4
--- lib/autotest/general.m4 19 Mar 2002 06:43:17 -0000 1.129
+++ lib/autotest/general.m4 10 Apr 2002 15:51:28 -0000
@@ -94,9 +94,10 @@
 m4_define([AT_ordinal], 0)
 m4_define([AT_banner_ordinal], 0)
 AS_INIT
+AS_PREPARE
 m4_divert_push([DEFAULT])dnl
 
-AS_SHELL_SANITIZE
+AS_PREPARE
 SHELL=${CONFIG_SHELL-/bin/sh}
 
 # How were we run?
Index: lib/m4sugar/m4sh.m4
===================================================================
RCS file: /cvsroot/autoconf/autoconf/lib/m4sugar/m4sh.m4,v
retrieving revision 1.81
diff -u -u -r1.81 m4sh.m4
--- lib/m4sugar/m4sh.m4 4 Apr 2002 13:35:05 -0000 1.81
+++ lib/m4sugar/m4sh.m4 10 Apr 2002 15:51:28 -0000
@@ -137,20 +137,8 @@
 # AS_SHELL_SANITIZE
 # -----------------
 # Try to be as Bourne and/or POSIX as possible.
-#
-# This macro has a very special status.  Normal use of M4sh relies
-# heavily on AS_REQUIRE, so that needed initiatizations (such as
-# _AS_TEST_PREPARE) are performed on need, not on demand.  But
-# Autoconf is the first client of M4sh, and for two reasons: configure
-# and config.status.  Relying on AS_REQUIRE is of course fine for
-# configure, but fails for config.status (which is created by
-# configure).  So we need a means to force the inclusion of the
-# various _AS_PREPARE_* on top of config.status.  That's basically why
-# there are so many _AS_PREPARE_* below, and that's also why it is
-# important not to forget some: config.status needs them.
 m4_defun([AS_SHELL_SANITIZE],
-[
-## --------------------- ##
+[## --------------------- ##
 ## M4sh Initialization.  ##
 ## --------------------- ##
 
@@ -158,6 +146,9 @@
 if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
   emulate sh
   NULLCMD=:
+  [#] Zsh performs word splitting on ${1+"$[@]"}, which is contrary to
+  # our usage.  Disable this feature.
+  alias -g '${1+"$[@]"}'='"$[@]"'
 elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
   set -o posix
 fi
@@ -172,11 +163,30 @@
       { _AS_var=C; export _AS_var; }
 ])
 
-# Name of the executable.
+# Required to use basename.
+_AS_EXPR_PREPARE
 _AS_BASENAME_PREPARE
+
+# Name of the executable.
 as_me=`AS_BASENAME("$[0]")`
 
-# PATH needs CR, and LINENO needs CR and PATH.
+])
+
+
+# _AS_PREPARE
+# -----------
+# This macro has a very special status.  Normal use of M4sh relies
+# heavily on AS_REQUIRE, so that needed initiatizations (such as
+# _AS_TEST_PREPARE) are performed on need, not on demand.  But
+# Autoconf is the first client of M4sh, and for two reasons: configure
+# and config.status.  Relying on AS_REQUIRE is of course fine for
+# configure, but fails for config.status (which is created by
+# configure).  So we need a means to force the inclusion of the
+# various _AS_PREPARE_* on top of config.status.  That's basically why
+# there are so many _AS_PREPARE_* below, and that's also why it is
+# important not to forget some: config.status needs them.
+m4_defun([_AS_PREPARE],
+[# PATH needs CR, and LINENO needs CR and PATH.
 _AS_CR_PREPARE
 _AS_PATH_SEPARATOR_PREPARE
 _AS_LINENO_PREPARE
@@ -200,6 +210,14 @@
 ])
 
 
+# AS_PREPARE
+# ----------
+# Output all the M4sh possible initialization into the initialization
+# diversion.
+m4_defun([AS_PREPARE],
+[m4_divert_text([M4SH-INIT], [_AS_PREPARE])])
+
+
 ## ----------------------------- ##
 ## 2. Wrappers around builtins.  ##
 ## ----------------------------- ##
@@ -508,7 +526,8 @@
 # configure) you'd compare LINENO wrt config.status vs. _oline_ vs
 # configure.
 m4_define([_AS_LINENO_PREPARE],
-[_AS_LINENO_WORKS || {
+[AS_REQUIRE([_AS_CR_PREPARE])dnl
+_AS_LINENO_WORKS || {
   # Find who we are.  Look in the path if we contain no path at all
   # relative or not.
   case $[0] in
@@ -1017,8 +1036,9 @@
 # Forbidden tokens and exceptions.
 m4_pattern_forbid([^_?AS_])
 
-# Bangshe.
+# Bangshe and minimal initialization.
 m4_divert_text([BINSH], [@%:@! /bin/sh])
+m4_divert_text([M4SH-INIT], [AS_SHELL_SANITIZE])
 
 # Let's go!
 m4_wrap([m4_divert_pop([BODY])[]])
Index: man/autoconf.1
===================================================================
RCS file: /cvsroot/autoconf/autoconf/man/autoconf.1,v
retrieving revision 1.62
diff -u -u -r1.62 autoconf.1
--- man/autoconf.1 11 Mar 2002 14:39:00 -0000 1.62
+++ man/autoconf.1 10 Apr 2002 15:51:28 -0000
@@ -1,5 +1,5 @@
-.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.26.
-.TH AUTOCONF "1" "March 2002" "autoconf 2.53a" "User Commands"
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.27.
+.TH AUTOCONF "1" "April 2002" "autoconf 2.53a" "User Commands"
 .SH NAME
 autoconf \- Generate configuration scripts
 .SH SYNOPSIS
Index: man/config.guess.1
===================================================================
RCS file: /cvsroot/autoconf/autoconf/man/config.guess.1,v
retrieving revision 1.13
diff -u -u -r1.13 config.guess.1
--- man/config.guess.1 5 Mar 2002 08:43:46 -0000 1.13
+++ man/config.guess.1 10 Apr 2002 15:51:28 -0000
@@ -1,5 +1,5 @@
-.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.25.
-.TH CONFIG.GUESS "1" "March 2002" "config.guess (2002-03-04)" "User Commands"
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.27.
+.TH CONFIG.GUESS "1" "April 2002" "config.guess (2002-03-20)" "User Commands"
 .SH NAME
 config.guess \- guess the build system triplet
 .SH SYNOPSIS
Index: tests/Makefile.am
===================================================================
RCS file: /cvsroot/autoconf/autoconf/tests/Makefile.am,v
retrieving revision 1.79
diff -u -u -r1.79 Makefile.am
--- tests/Makefile.am 5 Feb 2002 08:28:08 -0000 1.79
+++ tests/Makefile.am 10 Apr 2002 15:51:28 -0000
@@ -1,7 +1,7 @@
 ## Process this file with automake to create Makefile.in. -*-Makefile-*-
 
 ## Makefile for Autoconf testsuite.
-## Copyright 2000, 2001, 2002 Free Software Foundation, Inc.
+## Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
 
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
@@ -21,14 +21,17 @@
 # We don't actually distribute the testsuite, since one only
 # needs m4 to build it, m4 being required anyway to install Autoconf.
 EXTRA_DIST = $(TESTSUITE_AT) atspecific.m4 mktests.sh \
-             atlocal.in package.m4
+             atlocal.in package.m4 wrapsh.as
 
 # Running the uninstalled scripts.
 check_SCRIPTS = autoconf autoheader autoreconf autom4te autoscan autoupdate ifnames
 
-# FIXME: Why doesn't Automake clean these?
 DISTCLEANFILES = atconfig atlocal $(TESTSUITE) $(check_SCRIPTS)
 
+# Import the dependencies on Autotest and M4sh.
+include ../lib/freeze.mk
+
+
 ## ------------ ##
 ## package.m4.  ##
 ## ------------ ##
@@ -45,6 +48,14 @@
 
 
 
+## ---------- ##
+## Wrappers.  ##
+## ---------- ##
+
+$(srcdir)/wrapsh.in: $(srcdir)/wrapsh.as $(m4sh_m4f_dependencies)
+	./autom4te --language=M4sh $(srcdir)/wrapsh.as -o $@
+
+
 ## ------------ ##
 ## Test suite.  ##
 ## ------------ ##
@@ -71,13 +82,10 @@
 # Don't use AUTOM4TE since `make alpha' makes it unavailable although
 # we are allowed to use it (since we ship it).
 AUTOTEST = ./autom4te --language=autotest
-$(TESTSUITE): $(top_srcdir)/lib/m4sugar/m4sugar.m4 \
-	   $(top_srcdir)/lib/m4sugar/m4sh.m4 \
-           $(top_srcdir)/lib/autotest/autotest.m4 \
-           $(top_srcdir)/lib/autotest/general.m4 \
-	   $(srcdir)/package.m4 \
-	   atspecific.m4 \
-           $(TESTSUITE_AT)
+$(TESTSUITE): $(srcdir)/package.m4 \
+	      atspecific.m4 \
+              $(TESTSUITE_AT) \
+	      $(autotest_m4f_dependencies)
 	$(AUTOTEST) -I $(srcdir) suite.at -o $@.tmp
 	mv $@.tmp $@
 
Index: tests/Makefile.in
===================================================================
RCS file: /cvsroot/autoconf/autoconf/tests/Makefile.in,v
retrieving revision 1.112
diff -u -u -r1.112 Makefile.in
--- tests/Makefile.in 8 Mar 2002 12:44:47 -0000 1.112
+++ tests/Makefile.in 10 Apr 2002 15:51:28 -0000
@@ -83,15 +83,69 @@
 # We don't actually distribute the testsuite, since one only
 # needs m4 to build it, m4 being required anyway to install Autoconf.
 EXTRA_DIST = $(TESTSUITE_AT) atspecific.m4 mktests.sh \
-             atlocal.in package.m4
+             atlocal.in package.m4 wrapsh.as
 
 
 # Running the uninstalled scripts.
 check_SCRIPTS = autoconf autoheader autoreconf autom4te autoscan autoupdate ifnames
 
-# FIXME: Why doesn't Automake clean these?
 DISTCLEANFILES = atconfig atlocal $(TESTSUITE) $(check_SCRIPTS)
 
+SUFFIXES = .m4 .m4f
+
+# Do not use AUTOM4TE here, since Makefile.maint (my-distcheck)
+# checks if we are independant of Autoconf by defining AUTOM4TE (and
+# others) to `false'.  But we _ship_ tests/autom4te, so it doesn't
+# apply to us.
+MY_AUTOM4TE = $(top_builddir)/tests/autom4te
+
+AUTOM4TE_CFG = $(top_builddir)/lib/autom4te.cfg
+
+# Factor the dependencies between all the frozen files.
+# Some day we should explain to Automake how to use autom4te to compute
+# the dependencies...
+src_libdir = $(top_srcdir)/lib
+build_libdir = $(top_builddir)/lib
+
+m4f_dependencies = $(MY_AUTOM4TE) $(AUTOM4TE_CFG)
+
+m4sugar_m4f_dependencies = \
+	$(m4f_dependencies)			\
+	$(src_libdir)/m4sugar/m4sugar.m4	\
+	$(build_libdir)/m4sugar/version.m4
+
+
+m4sh_m4f_dependencies = \
+	$(m4sugar_m4f_dependencies)		\
+	$(src_libdir)/m4sugar/m4sh.m4
+
+
+autotest_m4f_dependencies = \
+	$(m4sh_m4f_dependencies)		\
+	$(src_libdir)/autotest/autotest.m4	\
+	$(src_libdir)/autotest/general.m4
+
+
+autoconf_m4f_dependencies = \
+	$(m4sh_m4f_dependencies)		\
+	$(src_libdir)/autoconf/general.m4	\
+	$(src_libdir)/autoconf/autoheader.m4	\
+	$(src_libdir)/autoconf/autoupdate.m4	\
+	$(src_libdir)/autoconf/autotest.m4	\
+	$(src_libdir)/autoconf/status.m4	\
+	$(src_libdir)/autoconf/oldnames.m4	\
+	$(src_libdir)/autoconf/specific.m4	\
+	$(src_libdir)/autoconf/lang.m4		\
+	$(src_libdir)/autoconf/c.m4		\
+	$(src_libdir)/autoconf/fortran.m4	\
+	$(src_libdir)/autoconf/functions.m4	\
+	$(src_libdir)/autoconf/headers.m4	\
+	$(src_libdir)/autoconf/types.m4		\
+	$(src_libdir)/autoconf/libs.m4		\
+	$(src_libdir)/autoconf/programs.m4	\
+	$(src_libdir)/autoconf/autoconf.m4
+
+
 TESTSUITE_GENERATED_AT = \
 	aclang.at acc.at acfortran.at \
 	acgeneral.at acstatus.at \
@@ -149,7 +203,8 @@
 all: all-am
 
 .SUFFIXES:
-$(srcdir)/Makefile.in:  Makefile.am  $(top_srcdir)/configure.ac $(ACLOCAL_M4)
+.SUFFIXES: .m4 .m4f
+$(srcdir)/Makefile.in:  Makefile.am $(srcdir)/../lib/freeze.mk $(top_srcdir)/configure.ac $(ACLOCAL_M4)
 	cd $(top_srcdir) && \
 	  $(AUTOMAKE) --gnu  tests/Makefile
 Makefile:  $(srcdir)/Makefile.in  $(top_builddir)/config.status
@@ -278,6 +333,30 @@
 	maintainer-clean-generic mostlyclean mostlyclean-generic \
 	uninstall uninstall-am uninstall-info-am
 
+$(MY_AUTOM4TE):
+	cd $(top_builddir)/tests && $(MAKE) $(AM_MAKEFLAGS) autom4te
+$(AUTOM4TE_CFG):
+	cd $(top_builddir)/lib && $(MAKE) $(AM_MAKEFLAGS) autom4te.cfg
+
+# When processing the file with diversion disabled, there must be no
+# output but comments and empty lines.
+# If freezing produces output, something went wrong: a bad `divert',
+# or an improper paren etc.
+# It may happen that the output does not end with a end of line, hence
+# force an end of line when reporting errors.
+.m4.m4f:
+	$(MY_AUTOM4TE)				\
+		--language=$*			\
+		--freeze			\
+		--include=$(srcdir)/..		\
+		--include=..			\
+		--output=$@
+
+# For parallel builds.
+$(build_libdir)/m4sugar/version.m4:
+	cd $(build_libdir)/m4sugar && $(MAKE) $(AM_MAKEFLAGS) version.m4
+
+# Import the dependencies on Autotest and M4sh.
 
 $(srcdir)/package.m4: $(top_srcdir)/configure.ac
 	{					\
@@ -288,13 +367,13 @@
 	  echo 'm4_define([AT_PACKAGE_STRING],    [@PACKAGE_STRING@])'; \
 	  echo 'm4_define([AT_PACKAGE_BUGREPORT], [@PACKAGE_BUGREPORT@])'; \
 	} >$(srcdir)/package.m4
-$(TESTSUITE): $(top_srcdir)/lib/m4sugar/m4sugar.m4 \
-	   $(top_srcdir)/lib/m4sugar/m4sh.m4 \
-           $(top_srcdir)/lib/autotest/autotest.m4 \
-           $(top_srcdir)/lib/autotest/general.m4 \
-	   $(srcdir)/package.m4 \
-	   atspecific.m4 \
-           $(TESTSUITE_AT)
+
+$(srcdir)/wrapsh.in: $(srcdir)/wrapsh.as $(m4sh_m4f_dependencies)
+	./autom4te --language=M4sh $(srcdir)/wrapsh.as -o $@
+$(TESTSUITE): $(srcdir)/package.m4 \
+	      atspecific.m4 \
+              $(TESTSUITE_AT) \
+	      $(autotest_m4f_dependencies)
 	$(AUTOTEST) -I $(srcdir) suite.at -o $@.tmp
 	mv $@.tmp $@
 
Index: tests/m4sh.at
===================================================================
RCS file: /cvsroot/autoconf/autoconf/tests/m4sh.at,v
retrieving revision 1.28
diff -u -u -r1.28 m4sh.at
--- tests/m4sh.at 25 Mar 2002 22:02:24 -0000 1.28
+++ tests/m4sh.at 10 Apr 2002 15:51:29 -0000
@@ -2,7 +2,7 @@
 
 AT_BANNER([M4sh.])
 
-# Copyright 2000, 2001 Free Software Foundation, Inc.
+# Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -47,7 +47,7 @@
 if $2; then
   AS@&t@_UNSET([LINENO])
 fi
-AS@&t@_SHELL_SANITIZE
+_AS@&t@_PREPARE
 echo "Line: $3"
 grep 'Line: .*$4' $[0] >/dev/null ||
   AS@&t@_ERROR([cannot find original script])
Index: tests/wrapsh.as
===================================================================
RCS file: tests/wrapsh.as
diff -N tests/wrapsh.as
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ tests/wrapsh.as 10 Apr 2002 15:51:29 -0000
@@ -0,0 +1,5 @@
+AS_INIT
+# Running `$0' as if it were installed.
+me=`echo "$0" | sed -e 's,.*[\\/],,'`
+
+exec @abs_top_builddir@/bin/$me --include @abs_top_builddir@/lib ${1+"$@"}
Index: tests/wrapsh.in
===================================================================
RCS file: /cvsroot/autoconf/autoconf/tests/wrapsh.in,v
retrieving revision 1.2
diff -u -u -r1.2 wrapsh.in
--- tests/wrapsh.in 14 Dec 2001 17:57:29 -0000 1.2
+++ tests/wrapsh.in 10 Apr 2002 15:51:29 -0000
@@ -1,6 +1,82 @@
 #! /bin/sh
-# Running `$0' as if it were installed.
+## --------------------- ##
+## M4sh Initialization.  ##
+## --------------------- ##
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh performs word splitting on ${1+"$@"}, which is contrary to
+  # our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+  set -o posix
+fi
+
+# NLS nuisances.
+# Support unset when possible.
+if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+(set +x; test -n "`(LANG=C; export LANG) 2>&1`") &&
+    { $as_unset LANG || test "${LANG+set}" != set; } ||
+      { LANG=C; export LANG; }
+(set +x; test -n "`(LC_ALL=C; export LC_ALL) 2>&1`") &&
+    { $as_unset LC_ALL || test "${LC_ALL+set}" != set; } ||
+      { LC_ALL=C; export LC_ALL; }
+(set +x; test -n "`(LC_TIME=C; export LC_TIME) 2>&1`") &&
+    { $as_unset LC_TIME || test "${LC_TIME+set}" != set; } ||
+      { LC_TIME=C; export LC_TIME; }
+(set +x; test -n "`(LC_CTYPE=C; export LC_CTYPE) 2>&1`") &&
+    { $as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set; } ||
+      { LC_CTYPE=C; export LC_CTYPE; }
+(set +x; test -n "`(LANGUAGE=C; export LANGUAGE) 2>&1`") &&
+    { $as_unset LANGUAGE || test "${LANGUAGE+set}" != set; } ||
+      { LANGUAGE=C; export LANGUAGE; }
+(set +x; test -n "`(LC_COLLATE=C; export LC_COLLATE) 2>&1`") &&
+    { $as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set; } ||
+      { LC_COLLATE=C; export LC_COLLATE; }
+(set +x; test -n "`(LC_NUMERIC=C; export LC_NUMERIC) 2>&1`") &&
+    { $as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set; } ||
+      { LC_NUMERIC=C; export LC_NUMERIC; }
+(set +x; test -n "`(LC_MESSAGES=C; export LC_MESSAGES) 2>&1`") &&
+    { $as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set; } ||
+      { LC_MESSAGES=C; export LC_MESSAGES; }
+
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
 
-me=`echo "$0" | sed -e 's,.*[\\/],,'`
+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)$' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+  	  /^X\/\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\/\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+
+
+
+# Running `$0' as if it were installed.
+me=`echo "$0" | sed -e 's,.*\\/,,'`
 
 exec @abs_top_builddir@/bin/$me --include @abs_top_builddir@/lib ${1+"$@"}

^ permalink raw reply	[relevance 8%]

* Re: Zsh 3 and ${1+"$@"} (Was: [GNU Autoconf 2.53] testsuite.log: 126 failures)
  @ 2002-04-10 17:32 13%     ` Akim Demaille
  0 siblings, 0 replies; 200+ results
From: Akim Demaille @ 2002-04-10 17:32 UTC (permalink / raw)
  To: Paul Eggert; +Cc: pws, zsh-workers, ab, bug-autoconf, autoconf-patches

>>>>> "Paul" == Paul Eggert <eggert@twinsun.com> writes:

Paul> This line seems incorrect to me.  Shouldn't it be:

>> + alias -g '${1+"$@"}'='"$@"'

Paul> ?

Yep, thanks!  Well, rm it, make, and cvs diff below.  Was not
regenerated at some point :(

Index: bin/autoconf.in
===================================================================
RCS file: /cvsroot/autoconf/autoconf/bin/autoconf.in,v
retrieving revision 1.145
diff -u -u -r1.145 autoconf.in
--- bin/autoconf.in 10 Apr 2002 15:58:19 -0000 1.145
+++ bin/autoconf.in 10 Apr 2002 17:31:42 -0000
@@ -1,26 +1,79 @@
 #! /bin/sh
-if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
-  as_basename=basename
+## --------------------- ##
+## M4sh Initialization.  ##
+## --------------------- ##
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh performs word splitting on ${1+"$@"}, which is contrary to
+  # our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+  set -o posix
+fi
+
+# NLS nuisances.
+# Support unset when possible.
+if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
+  as_unset=unset
 else
-  as_basename=false
+  as_unset=false
 fi
 
+(set +x; test -n "`(LANG=C; export LANG) 2>&1`") &&
+    { $as_unset LANG || test "${LANG+set}" != set; } ||
+      { LANG=C; export LANG; }
+(set +x; test -n "`(LC_ALL=C; export LC_ALL) 2>&1`") &&
+    { $as_unset LC_ALL || test "${LC_ALL+set}" != set; } ||
+      { LC_ALL=C; export LC_ALL; }
+(set +x; test -n "`(LC_TIME=C; export LC_TIME) 2>&1`") &&
+    { $as_unset LC_TIME || test "${LC_TIME+set}" != set; } ||
+      { LC_TIME=C; export LC_TIME; }
+(set +x; test -n "`(LC_CTYPE=C; export LC_CTYPE) 2>&1`") &&
+    { $as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set; } ||
+      { LC_CTYPE=C; export LC_CTYPE; }
+(set +x; test -n "`(LANGUAGE=C; export LANGUAGE) 2>&1`") &&
+    { $as_unset LANGUAGE || test "${LANGUAGE+set}" != set; } ||
+      { LANGUAGE=C; export LANGUAGE; }
+(set +x; test -n "`(LC_COLLATE=C; export LC_COLLATE) 2>&1`") &&
+    { $as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set; } ||
+      { LC_COLLATE=C; export LC_COLLATE; }
+(set +x; test -n "`(LC_NUMERIC=C; export LC_NUMERIC) 2>&1`") &&
+    { $as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set; } ||
+      { LC_NUMERIC=C; export LC_NUMERIC; }
+(set +x; test -n "`(LC_MESSAGES=C; export LC_MESSAGES) 2>&1`") &&
+    { $as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set; } ||
+      { LC_MESSAGES=C; export LC_MESSAGES; }
+
+
+# Required to use basename.
 if expr a : '\(a\)' >/dev/null 2>&1; then
   as_expr=expr
 else
   as_expr=false
 fi
 
-# Be Bourne compatible
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
-  emulate sh
-  NULLCMD=:
-  # Zsh performs word splitting on ${1+""}, which is contrary to
-  # our usage.  Disable this feature.
-  alias -g '${1+""}'='""'
-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
-  set -o posix
+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
 fi
+
+
+# Name of the executable.
+as_me=`$as_basename "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)$' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+  	  /^X\/\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\/\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+
 
 # autoconf -- create `configure' using m4 macros
 # Copyright (C) 1992, 1993, 1994, 1996, 1999, 2000, 2001, 2002



^ permalink raw reply	[relevance 13%]

* RE: PATCH: zselect builtin.
  @ 2002-05-08  5:36  5% ` Borsenkow Andrej
  2002-05-08  9:59  3%   ` Peter Stephenson
  0 siblings, 1 reply; 200+ results
From: Borsenkow Andrej @ 2002-05-08  5:36 UTC (permalink / raw)
  To: 'Peter Stephenson', 'Zsh hackers list'


> 
> Any comments before I commit this?
> 

If we start adding low-level system interface I really wish that we

- put it in separate module (like Perl POSIX)
- or at least under own hierarchy (like zsh/POSIX/select)

I do not know if POSIX is right here; may be just "system" or just "sys"
would be O.K. meaning zsh/sys/select

In which case it would be nice (as Bart already suggested) to have
standard name pattern; posix_select or sys_select (depending upon level
of system independency we are aiming at).

Aso you probably can't fully utilize select without non-blocking I/O.
The simplest way to add it is using fcntl. Which implies yet another
module (or at least builtin). Non-blocking I/O could be used just fine
currently; just use read-kN and test how much has been read; read should
return 0 if anything has been read, non-zero otherwise.

Hmm ... there does not currently seem to be any way to find out how much
has been written ... sys_write/sys_read?

Otherwise as Bart alrady suggested I prefer has as return with keys FD
numbers.

-andrej


^ permalink raw reply	[relevance 5%]

* Re: PATCH: zselect builtin.
  2002-05-08  5:36  5% ` Borsenkow Andrej
@ 2002-05-08  9:59  3%   ` Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2002-05-08  9:59 UTC (permalink / raw)
  To: Zsh hackers list

Borsenkow Andrej wrote:
> If we start adding low-level system interface I really wish that we
> 
> - put it in separate module (like Perl POSIX)
> - or at least under own hierarchy (like zsh/POSIX/select)
> 
> In which case it would be nice (as Bart already suggested) to have
> standard name pattern; posix_select or sys_select (depending upon level
> of system independency we are aiming at).

It's too late: we have stat, the files module, and various other bits
which talk to the system in other ways like TCP.  Unless we want to move
everything around now, I don't see a good reason for putting this
anywhere special.  (`stat' already clashes with various external
commands which do a similar job, unfortunately.)  Until then, separate
modules for each separate interface seems to me the cleanest way
forward.

Why is `posix_select' or `sys_select' an improvement over our current
mini-convention with the `z', which also covers things which aren't
strictly tied to system calls?  To me, anyway, it implies a greater
tie-in to the underlying system call than you get with the shell builtin
--- no fd sets, no maximum fd, no errno handling.  This is a distinct
difference from perl, which tries to emulate the POSIX interface as
closely as possible in such cases.

(By the way, there was an interesting note on the Austin group list today
that the `error' fd's in the select call are really for exceptions, and
the only one currently defined is out-of-band data on a socket.  I may
point this out, since most select manual pages don't.)

> Aso you probably can't fully utilize select without non-blocking I/O.

I don't see this; you can already poll a blocking fd using a zero
timeout.  But some fcntl interface is certainly a possibility.

-- 
Peter Stephenson <pws@csr.com>                  Software Engineer
CSR Ltd., Science Park, Milton Road,
Cambridge, CB4 0WH, UK                          Tel: +44 (0)1223 392070


**********************************************************************
The information transmitted is intended only for the person or
entity to which it is addressed and may contain confidential 
and/or privileged material. 
Any review, retransmission, dissemination or other use of, or
taking of any action in reliance upon, this information by 
persons or entities other than the intended recipient is 
prohibited.  
If you received this in error, please contact the sender and 
delete the material from any computer.
**********************************************************************


^ permalink raw reply	[relevance 3%]

* PATCH: gethostbyaddr() argument in tcp.c
@ 2002-05-14 17:44  3% Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2002-05-14 17:44 UTC (permalink / raw)
  To: Zsh hackers list

This one is entirely cosmetic.  The latest POSIX/SUS/ISO specification
says the first argument is `const void *', which wouldn't cause a
warning; however, solaris uses `const char *', which does.  Converting
explicitly to `const void *' should keep everybody happy, I hope.

Index: Src/Modules/tcp.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/Modules/tcp.c,v
retrieving revision 1.26
diff -u -r1.26 tcp.c
--- Src/Modules/tcp.c	14 May 2002 17:29:53 -0000	1.26
+++ Src/Modules/tcp.c	14 May 2002 17:38:59 -0000
@@ -565,12 +565,12 @@
 
 		if (sess->fd != -1)
 		{
-		    zthost = gethostbyaddr(&(sess->sock.in.sin_addr), sizeof(struct sockaddr_in), AF_INET);
+		    zthost = gethostbyaddr((const void *)&(sess->sock.in.sin_addr), sizeof(struct sockaddr_in), AF_INET);
 		    if (zthost)
 			localname = zthost->h_name;
 		    else
 			localname = ztrdup(inet_ntoa(sess->sock.in.sin_addr));
-		    ztpeer = gethostbyaddr(&(sess->peer.in.sin_addr), sizeof(struct sockaddr_in), AF_INET);
+		    ztpeer = gethostbyaddr((const void *)&(sess->peer.in.sin_addr), sizeof(struct sockaddr_in), AF_INET);
 		    if (ztpeer)
 			remotename = ztpeer->h_name;
 		    else

-- 
Peter Stephenson <pws@csr.com>                  Software Engineer
CSR Ltd., Science Park, Milton Road,
Cambridge, CB4 0WH, UK                          Tel: +44 (0)1223 392070


**********************************************************************
The information transmitted is intended only for the person or
entity to which it is addressed and may contain confidential 
and/or privileged material. 
Any review, retransmission, dissemination or other use of, or
taking of any action in reliance upon, this information by 
persons or entities other than the intended recipient is 
prohibited.  
If you received this in error, please contact the sender and 
delete the material from any computer.
**********************************************************************


^ permalink raw reply	[relevance 3%]

* command substitution gets confused by case parens
@ 2002-05-21  5:48  3% Clint Adams
  2002-05-21 15:07  3% ` Bart Schaefer
  0 siblings, 1 reply; 200+ results
From: Clint Adams @ 2002-05-21  5:48 UTC (permalink / raw)
  To: zsh-workers

According to POSIX, I think, the following should work.

print $(case $TEST in
 abc)
 echo a   
 ;;            
 def)
 echo b   
 ;;   
esac)
zsh: parse error near `;;'


^ permalink raw reply	[relevance 3%]

* Re: command substitution gets confused by case parens
  2002-05-21  5:48  3% command substitution gets confused by case parens Clint Adams
@ 2002-05-21 15:07  3% ` Bart Schaefer
  0 siblings, 0 replies; 200+ results
From: Bart Schaefer @ 2002-05-21 15:07 UTC (permalink / raw)
  To: Clint Adams, zsh-workers

On May 21,  1:48am, Clint Adams wrote:
} Subject: command substitution gets confused by case parens
}
} According to POSIX, I think, the following should work.

Bash2 chokes on it as well:

bash2: command substitution: line 2: syntax error near unexpected token `abc'
bash2: command substitution: line 2: ` abc'

The following works in both shells, and is the reason that the fully-
parenthesized case conditions were introduced, IIRC.

    echo $(case $TEST in
     (abc)
      echo a   
      ;;            
     (def)
      echo b   
      ;;   
    esac)


-- 
Bart Schaefer                                 Brass Lantern Enterprises
http://www.well.com/user/barts              http://www.brasslantern.com

Zsh: http://www.zsh.org | PHPerl Project: http://phperl.sourceforge.net   


^ permalink raw reply	[relevance 3%]

* "command -v"
@ 2002-05-25 23:32  4% Bruce Stephens
  2002-05-26  2:46  0% ` Clint Adams
  0 siblings, 1 reply; 200+ results
From: Bruce Stephens @ 2002-05-25 23:32 UTC (permalink / raw)
  To: zsh-workers

There's a discussion on debian-devel about a bunch of packages using
"command -v" in their scripts, which all debian POSIX shells support,
with the exception of zsh.  ("command -v" isn't in POSIX, apparently,
but it's in other standards.)

Anyway, probably zsh ought to support it, whatever it does.


^ permalink raw reply	[relevance 4%]

* Re: "command -v"
  2002-05-25 23:32  4% "command -v" Bruce Stephens
@ 2002-05-26  2:46  0% ` Clint Adams
  0 siblings, 0 replies; 200+ results
From: Clint Adams @ 2002-05-26  2:46 UTC (permalink / raw)
  To: Bruce Stephens; +Cc: zsh-workers

> There's a discussion on debian-devel about a bunch of packages using
> "command -v" in their scripts, which all debian POSIX shells support,
> with the exception of zsh.  ("command -v" isn't in POSIX, apparently,
> but it's in other standards.)
> 
> Anyway, probably zsh ought to support it, whatever it does.

This might do in a pinch:

command() { case "$1" in -v) shift; whence "$@" ;; *) builtin command
"$@";; esac }


^ permalink raw reply	[relevance 0%]

* Re: PATCH: function parsing
  @ 2002-06-04 16:33  3% ` Bart Schaefer
  2002-06-05 10:56  0%   ` Peter Stephenson
  0 siblings, 1 reply; 200+ results
From: Bart Schaefer @ 2002-06-04 16:33 UTC (permalink / raw)
  To: Peter Stephenson; +Cc: Zsh hackers list

On Tue, 4 Jun 2002, Peter Stephenson wrote:

> % zsh -c 'function func { } this fails to cause a parse error'
> zsh: parse error near `this'
> % zsh -c 'func() { } this fails to cause a parse error'
> %
>
> I'm assuming the first is correct, since the second certainly isn't as
> the text is simply ignored.

While you're at it, any chance you can "fix" redirections following a
function definition?  E.g. per ksh (and possibly per posix) this:

	func() { less } < /etc/termcap

should be equivalent to this:

	func() { { less } < /etc/termcap }

rather than the current zsh equivalent:

	{ func() { less } } < /etc/termcap

Note that:

	func() less < /etc/termcap

is already equivalent to:

	func() { less < /etc/termcap }

so the first case above must be only a small matter of parsing.


^ permalink raw reply	[relevance 3%]

* Re: PATCH: function parsing
  2002-06-04 16:33  3% ` Bart Schaefer
@ 2002-06-05 10:56  0%   ` Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2002-06-05 10:56 UTC (permalink / raw)
  To: Zsh hackers list

Bart Schaefer wrote:
> While you're at it, any chance you can "fix" redirections following a
> function definition?  E.g. per ksh (and possibly per posix) this:
> 
> 	func() { less } < /etc/termcap
> 
> should be equivalent to this:
> 
> 	func() { { less } < /etc/termcap }

I've played with it for a little without success.

I've come to the conclusion the only way to do it will be to rewrite it
internally exactly how you've shown it --- i.e. insert a current-shell
construct (the normal effect of braces) inside the list construct and
attach the redirection to that, but it's a bit of a mess unless we
always parse functions as a current-shell construct.

Maybe later.

-- 
Peter Stephenson <pws@csr.com>                  Software Engineer
CSR Ltd., Science Park, Milton Road,
Cambridge, CB4 0WH, UK                          Tel: +44 (0)1223 392070


**********************************************************************
The information transmitted is intended only for the person or
entity to which it is addressed and may contain confidential 
and/or privileged material. 
Any review, retransmission, dissemination or other use of, or
taking of any action in reliance upon, this information by 
persons or entities other than the intended recipient is 
prohibited.  
If you received this in error, please contact the sender and 
delete the material from any computer.
**********************************************************************


^ permalink raw reply	[relevance 0%]

* The sh substitution problem.
@ 2002-06-10 12:05  2% Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2002-06-10 12:05 UTC (permalink / raw)
  To: Zsh hackers list

namely ${1+"$@"} when using `sh' word-spliting makes a scalar out of "$@"
and splits it later on, with consequent undesirable effects.

I thought I had a way of doing the important cases (i.e. the ones
required for POSIX) simply but it turns out it doesn't work.  We just
have a completely different notion of how a command line word is formed
(because ours is more logical :-)).  So I've given that up.

I have a vague plan for doing it `properly' but it doesn't fill me with
delight:
 - When calling prefork() from multsub(), don't remove nulls (hence
   preserving information about quotes, which are retained as Snull,
   Dnull and Bnull).
 - In multsub(), handle arrays properly, i.e. stick the results in what 
   is currently its second argument.  This will have knock-on effects
   since paramsubst() messes around with val and aval all the time.  The
   way mult_isarr has been hacked in to avoid the calling sequence may
   make this more difficult.  (Ideally we would replace mult_isarr by
   making multsub() always return arrays.  This is probably even harder,
   but I don't understand the details of mult_isarr, which handles
   nested substitutions, well enough to say.)

   [It might be possible to keep val and aval as a pair in a structure,
   a sort of pseudo-parameter, and only convert between scalar and array
   when really necessary with a `forcescalar' or `forcearray'
   function/macro.]
 - Avoid joining words before splitting them (unless it is a forced
   join with a given string).  This changes the current rules but is
   inevitable for getting this to work at all.  This probably also means
   handling certain types of scalar result by joining arrays at this point
   instead of before (even if they are not going to be split).  This is
   also probably tricky because there are umpteen different ways of
   ending up with a scalar.  This is probably where we would have to do
   any joining due to letting multsub() always return an array.  I used
   the word `probably' three times in that paragraph.
 - When splitting, handle a loop over multiple array elements and
   keep track of quotes.  This also fixes:
     % ARGV0=sh zsh
     $ set word
     $ print -l ${1+'this should not be split'} 
     this
     should
     not
     be
     split

This is tricky and I have no idea of its detailed feasibility.  If
anyone wants to try they should.  Otherwise just make comments.

-- 
Peter Stephenson <pws@csr.com>                  Software Engineer
CSR Ltd., Science Park, Milton Road,
Cambridge, CB4 0WH, UK                          Tel: +44 (0)1223 392070


**********************************************************************
The information transmitted is intended only for the person or
entity to which it is addressed and may contain confidential 
and/or privileged material. 
Any review, retransmission, dissemination or other use of, or
taking of any action in reliance upon, this information by 
persons or entities other than the intended recipient is 
prohibited.  
If you received this in error, please contact the sender and 
delete the material from any computer.
**********************************************************************


^ permalink raw reply	[relevance 2%]

* typeset verbosity
@ 2002-06-12 13:42  3% Peter Stephenson
  2002-06-12 14:51  3% ` Oliver Kiddle
  0 siblings, 1 reply; 200+ results
From: Peter Stephenson @ 2002-06-12 13:42 UTC (permalink / raw)
  To: Zsh hackers list

Instead of thinking about hard problems for once, I'd like to get rid of
this annoyance from `typeset' or friends on an existing parameter:

% fn() { local foo; local foo; }
% fn
foo=''
% 

How?

(1) Make the display behaviour optional.  If so, decide when to unset
    the option by default, e.g any sh-style emulation.
(2) Make the display behaviour not work inside functions.  (Making it
    not work on local parameters isn't good enough because of the -g
    flag.)
(3) Make it only work with typeset, or at least not work with local.
(4) Some combination of (1) with the others.

Only (1) can ensure POSIX compatibility.  We could add a flag to display
listed parameters instead.

-- 
Peter Stephenson <pws@csr.com>                  Software Engineer
CSR Ltd., Science Park, Milton Road,
Cambridge, CB4 0WH, UK                          Tel: +44 (0)1223 392070


**********************************************************************
The information transmitted is intended only for the person or
entity to which it is addressed and may contain confidential 
and/or privileged material. 
Any review, retransmission, dissemination or other use of, or
taking of any action in reliance upon, this information by 
persons or entities other than the intended recipient is 
prohibited.  
If you received this in error, please contact the sender and 
delete the material from any computer.
**********************************************************************


^ permalink raw reply	[relevance 3%]

* Re: typeset verbosity
  2002-06-12 13:42  3% typeset verbosity Peter Stephenson
@ 2002-06-12 14:51  3% ` Oliver Kiddle
  0 siblings, 0 replies; 200+ results
From: Oliver Kiddle @ 2002-06-12 14:51 UTC (permalink / raw)
  To: Peter Stephenson; +Cc: zsh-workers

On 12 Jun, Peter wrote:

> (1) Make the display behaviour optional.  If so, decide when to unset
>     the option by default, e.g any sh-style emulation.
> (2) Make the display behaviour not work inside functions.  (Making it
>     not work on local parameters isn't good enough because of the -g
>     flag.)
> (3) Make it only work with typeset, or at least not work with local.
> (4) Some combination of (1) with the others.
> 
> Only (1) can ensure POSIX compatibility.  We could add a flag to display
> listed parameters instead.

For POSIX, we really ought to be accepting the -p flag which displays
the listed parameters but in a different format (in the form of a
typeset command). This typically being -L in zsh has probably been
significant in this not being done before. It might actually be a good
idea to add -p as an alternate form of -L across many builtins.

One possibility which is an extension of (3) would be to make it only
work on typeset but not for all the other typeset variants and then follow
bash in changing the documentation so declare is the recommended version
of the command (it's a better name anyway in my opinion). The
KSH_TYPESET option could be extended to make typeset also work that way
for ksh compatibility. Additionally, we could perhaps add a flag to
typeset and variants which could explicity control whether set parameters
are listed.

A related annoyance - autoload being a sort of typeset variant - is that
autoload ~/.zfunc/*(N) will not end silently if there are no files in
~/.zfunc. Changing this could perhaps be a part of whatever solution is
chosen.

Oliver

This e-mail and any attachment is for authorised use by the intended recipient(s) only.  It may contain proprietary material, confidential information and/or be subject to legal privilege.  It should not be copied, disclosed to, retained or used by, any other party.  If you are not an intended recipient then please promptly delete this e-mail and any attachment and all copies and inform the sender.  Thank you.


^ permalink raw reply	[relevance 3%]

* posix compliance
@ 2002-06-18 22:58  9% Clint Adams
  2002-06-20 18:05  9% ` Jos Backus
  0 siblings, 1 reply; 200+ results
From: Clint Adams @ 2002-06-18 22:58 UTC (permalink / raw)
  To: zsh-workers

The beginnings of a POSIX-compliance test suite are at
http://people.debian.org/~schizo/ , if anyone's interested.

Currently zsh performs better than Debian's ash.


^ permalink raw reply	[relevance 9%]

* Re: posix compliance
  2002-06-18 22:58  9% posix compliance Clint Adams
@ 2002-06-20 18:05  9% ` Jos Backus
  2002-06-20 18:13 10%   ` Bart Schaefer
                     ` (2 more replies)
  0 siblings, 3 replies; 200+ results
From: Jos Backus @ 2002-06-20 18:05 UTC (permalink / raw)
  To: Clint Adams; +Cc: zsh-workers

A quick report from UseNIX: One thing Jordan Hubbard of Apple mentioned was
that our positional parameters ($1, $2, etc.) are assignable whereas they are
not in bash (Chet Ramey, who was also present, confirmed this). The bash
behavior is apparently what POSIX specifies. This was one of the things which
kept Apple from keeping zsh as their /bin/sh, according to him.  Personally I
thought his defense was rather weak: they tested with 3.0.8 and didn't bother
to give the zsh developers any feedback. He also again complained about
executable size and footprint (zsh vs. bash), which I think was addressed
earlier without them giving us any feedback.

Otoh, the next version of OS X will have an updated zsh 4.0.4.

-- 
Jos Backus                 _/  _/_/_/        Santa Clara, CA
                          _/  _/   _/
                         _/  _/_/_/             
                    _/  _/  _/    _/
jos@catnook.com     _/_/   _/_/_/            require 'std/disclaimer'


^ permalink raw reply	[relevance 9%]

* Re: posix compliance
  2002-06-20 18:05  9% ` Jos Backus
@ 2002-06-20 18:13 10%   ` Bart Schaefer
  2002-06-20 19:17  5%     ` Jos Backus
  2002-06-21  5:19  9%   ` Borsenkow Andrej
  2002-06-21 11:35  5%   ` Oliver Kiddle
  2 siblings, 1 reply; 200+ results
From: Bart Schaefer @ 2002-06-20 18:13 UTC (permalink / raw)
  To: Jos Backus; +Cc: zsh-workers

On Thu, 20 Jun 2002, Jos Backus wrote:

> A quick report from UseNIX: One thing Jordan Hubbard of Apple mentioned was
> that our positional parameters ($1, $2, etc.) are assignable whereas they are
> not in bash (Chet Ramey, who was also present, confirmed this). The bash
> behavior is apparently what POSIX specifies.

Assignable positional parameters are an intentional feature.  There's no
way they can cause a problem, because a POSIX conforming shell script must
not even attempt it.  (Even in POSIX the positional parameters can be
replaced with the `set' builtin, so claiming that they should be read-only
does not hold water.)

> He also again complained about executable size and footprint (zsh vs.
> bash), which I think was addressed earlier

I don't have an immediate answer to that, although having looked briefly
at the bash2 web site the other day and it's possible that it now has even
more of its "builtins" as loadable modules than zsh does.


^ permalink raw reply	[relevance 10%]

* Re: posix compliance
  2002-06-20 18:13 10%   ` Bart Schaefer
@ 2002-06-20 19:17  5%     ` Jos Backus
  2002-06-20 21:31 10%       ` Dan Nelson
  0 siblings, 1 reply; 200+ results
From: Jos Backus @ 2002-06-20 19:17 UTC (permalink / raw)
  To: zsh-workers

On Thu, Jun 20, 2002 at 11:13:43AM -0700, Bart Schaefer wrote:
> Assignable positional parameters are an intentional feature.  There's no
> way they can cause a problem, because a POSIX conforming shell script must
> not even attempt it.  (Even in POSIX the positional parameters can be
> replaced with the `set' builtin, so claiming that they should be read-only
> does not hold water.)

Indeed, his argument that things like these were causing them lots of problems
with zsh point to poorly written scripts in the first place. But of course
he's not going to admit that, least of all in public with the bash maintainer
standing next to him.

-- 
Jos Backus                 _/  _/_/_/        Santa Clara, CA
                          _/  _/   _/
                         _/  _/_/_/             
                    _/  _/  _/    _/
jos@catnook.com     _/_/   _/_/_/            require 'std/disclaimer'


^ permalink raw reply	[relevance 5%]

* Re: posix compliance
@ 2002-06-20 21:19  5% Chet Ramey
  2002-06-21  4:30  5% ` Jos Backus
  0 siblings, 1 reply; 200+ results
From: Chet Ramey @ 2002-06-20 21:19 UTC (permalink / raw)
  To: jos; +Cc: zsh-workers

> Indeed, his argument that things like these were causing them lots of problems
> with zsh point to poorly written scripts in the first place. But of course
> he's not going to admit that, least of all in public with the bash maintainer
> standing next to him.

Oh, I wouldn't have minded.  There's a lot of crap out there, and shell
scripts are no exception.

-- 
``The lyf so short, the craft so long to lerne.'' - Chaucer
( ``Discere est Dolere'' -- chet)

Chet Ramey, CWRU    chet@po.CWRU.Edu    http://cnswww.cns.cwru.edu/~chet/


^ permalink raw reply	[relevance 5%]

* Re: posix compliance
  2002-06-20 19:17  5%     ` Jos Backus
@ 2002-06-20 21:31 10%       ` Dan Nelson
  0 siblings, 0 replies; 200+ results
From: Dan Nelson @ 2002-06-20 21:31 UTC (permalink / raw)
  To: zsh-workers

In the last episode (Jun 20), Jos Backus said:
> On Thu, Jun 20, 2002 at 11:13:43AM -0700, Bart Schaefer wrote:
> > Assignable positional parameters are an intentional feature. 
> > There's no way they can cause a problem, because a POSIX conforming
> > shell script must not even attempt it.  (Even in POSIX the
> > positional parameters can be replaced with the `set' builtin, so
> > claiming that they should be read-only does not hold water.)
> 
> Indeed, his argument that things like these were causing them lots of
> problems with zsh point to poorly written scripts in the first place.
> But of course he's not going to admit that, least of all in public
> with the bash maintainer standing next to him.

The only reason I can think of to disallow non-POSIX-sanctioned
behvaiour is to prevent the rampant use of such features, as has
already happened in the Linux "sh == bash" world.  You could even make
the case that zsh in sh emulation mode should allow only what POSIX
says it can do and nothing more.

If we're talking about zsh mode, then I lean the other way and say zsh
can do whatever it wants, as long as what POSIX mandates it does a
certain way, it does.

-- 
	Dan Nelson
	dnelson@allantgroup.com


^ permalink raw reply	[relevance 10%]

* Re: posix compliance
  2002-06-20 21:19  5% Chet Ramey
@ 2002-06-21  4:30  5% ` Jos Backus
  0 siblings, 0 replies; 200+ results
From: Jos Backus @ 2002-06-21  4:30 UTC (permalink / raw)
  To: Chet Ramey; +Cc: zsh-workers

    Hi Chet,

[T'was nice to meet you, btw.]

On Thu, Jun 20, 2002 at 05:19:24PM -0400, Chet Ramey wrote:
> > Indeed, his argument that things like these were causing them lots of
> > problems with zsh point to poorly written scripts in the first place. But
> > of course he's not going to admit that, least of all in public with the
> > bash maintainer standing next to him.
> 
> Oh, I wouldn't have minded.  There's a lot of crap out there, and shell
> scripts are no exception.

Absolutely. I just wish that he had been interested in discussing the real
problems they were undoubtedly having with zsh so they can be fixed; that's
how progress is made.

> ( ``Discere est Dolere'' -- chet)

"Learning is suffering"? My Latin is rusty.

-- 
Jos Backus                 _/  _/_/_/        Santa Clara, CA
                          _/  _/   _/
                         _/  _/_/_/             
                    _/  _/  _/    _/
jos@catnook.com     _/_/   _/_/_/            require 'std/disclaimer'


^ permalink raw reply	[relevance 5%]

* RE: posix compliance
  2002-06-20 18:05  9% ` Jos Backus
  2002-06-20 18:13 10%   ` Bart Schaefer
@ 2002-06-21  5:19  9%   ` Borsenkow Andrej
  2002-06-21 11:35  5%   ` Oliver Kiddle
  2 siblings, 0 replies; 200+ results
From: Borsenkow Andrej @ 2002-06-21  5:19 UTC (permalink / raw)
  To: jos, 'Clint Adams'; +Cc: zsh-workers

> A quick report from UseNIX: One thing Jordan Hubbard of Apple
mentioned was
> that our positional parameters ($1, $2, etc.) are assignable whereas
they
> are
> not in bash (Chet Ramey, who was also present, confirmed this). The
bash
> behavior is apparently what POSIX specifies.

It depends.

SUS V3 (which I hope is quite reliable representation of POSIX) says
that interpretation of

WORD1=WORD2

where WORD1 is not a name is implementation defined. It may be legally
interpreted as assignment.


You are correct that in case of ${WORD1=WORD2} it is prohibited:

${parameter:=word} 
Assign Default Values. If parameter is unset or null, the expansion of
word shall be assigned to parameter. In all cases, the final value of
parameter shall be substituted. Only variables, not positional
parameters or special parameters, can be assigned in this way.

In case of read built-in it is unclear. There are no explicit
restrictions; one may infer that special parameters are invalid only
from this line:

var 
The name of an existing or nonexisting shell variable.

and only due to usage of "name" here.


-andrej


^ permalink raw reply	[relevance 9%]

* Re: posix compliance
  2002-06-20 18:05  9% ` Jos Backus
  2002-06-20 18:13 10%   ` Bart Schaefer
  2002-06-21  5:19  9%   ` Borsenkow Andrej
@ 2002-06-21 11:35  5%   ` Oliver Kiddle
  2002-06-23 17:53  8%     ` Bart Schaefer
  2 siblings, 1 reply; 200+ results
From: Oliver Kiddle @ 2002-06-21 11:35 UTC (permalink / raw)
  To: Zsh workers

On 20 Jun, you wrote:
> A quick report from UseNIX: One thing Jordan Hubbard of Apple mentioned was

Thanks for the update.

> Otoh, the next version of OS X will have an updated zsh 4.0.4.

I wonder if the issue I mentioned in 16853 is going to be a problem for
them then. We ought to come up with a quick fix for 4.0. I'm off on
holiday midway through next week and have a lot of work to finish before
so I can't do anything quick.

I'll be interested to see what these updates are. I'm guessing that
they've cut out a few modules and completion stuff.

Oliver

This e-mail and any attachment is for authorised use by the intended recipient(s) only.  It may contain proprietary material, confidential information and/or be subject to legal privilege.  It should not be copied, disclosed to, retained or used by, any other party.  If you are not an intended recipient then please promptly delete this e-mail and any attachment and all copies and inform the sender.  Thank you.


^ permalink raw reply	[relevance 5%]

* Re: posix compliance
  2002-06-21 11:35  5%   ` Oliver Kiddle
@ 2002-06-23 17:53  8%     ` Bart Schaefer
  0 siblings, 0 replies; 200+ results
From: Bart Schaefer @ 2002-06-23 17:53 UTC (permalink / raw)
  To: Oliver Kiddle, Zsh workers

On Jun 21, 12:35pm, Oliver Kiddle wrote:
} Subject: Re: posix compliance
}
} I wonder if the issue I mentioned in 16853 is going to be a problem for
} them then. We ought to come up with a quick fix for 4.0.

This seems to handle it nicely: only add all the predefined autoloads
when starting up in zsh emulation.  Everything works as usual for any
explicit autoloads set up with zmodload.

Index: Src/mkbltnmlst.sh
===================================================================
RCS file: /extra/cvsroot/zsh/zsh-4.0/Src/mkbltnmlst.sh,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 mkbltnmlst.sh
--- Src/mkbltnmlst.sh	9 Apr 2001 20:14:12 -0000	1.1.1.1
+++ Src/mkbltnmlst.sh	23 Jun 2002 17:43:19 -0000
@@ -20,6 +20,7 @@
 
 exec > $1
 
+echo "  if (emulation == EMULATE_ZSH) {"
 for x_mod in $x_mods; do
     modfile="`grep '^name='$x_mod' ' $CFMOD | sed -e 's/^.* modfile=//' \
       -e 's/ .*//'`"
@@ -60,6 +61,7 @@
     done
     test "x$linked" = xno && echo "#endif"
 done
+echo "  }"
 
 echo
 done_mods=" "

-- 
Bart Schaefer                                 Brass Lantern Enterprises
http://www.well.com/user/barts              http://www.brasslantern.com

Zsh: http://www.zsh.org | PHPerl Project: http://phperl.sourceforge.net   


^ permalink raw reply	[relevance 8%]

* Re: zsh 4.0.5/4.1.0 release soon?
       [not found]     <19337.1028540626@csr.com>
@ 2002-08-05 12:31  2% ` Oliver Kiddle
  0 siblings, 0 replies; 200+ results
From: Oliver Kiddle @ 2002-08-05 12:31 UTC (permalink / raw)
  To: Zsh workers

[-- Attachment #1: Type: text/plain, Size: 1942 bytes --]

On 5 Aug, Peter wrote:
> 
> 4.0.5 has been imminent for some time now, but every time I say I'm
> thinking about releasing it, people say, hang on here's a list of other
> patches to look at.  It looks like no-one has.  I think it's perfectly
> releasable in it's present form, however, so I may be able to sneak it
> out while everyone's on holiday.

I can't see much by way of patches that could go across to 4.0.5. A
quick search for new completion functions which aren't on the 4.0 branch
gives me this list:
_apt-show-versions _debchange _larch _mysqldiff _texinfo _valgrind _limit
I'll apply _texinfo across unless Andrej says otherwise.

Also, we should perhaps either move _mondo out of Completion/Linux or
move _modutils and _valgrind in to join it.

Also, I had lying about patches against both the documentation and
comments in the source code to fix some typos, spellings and poor
wordings. I've attached these below. I'll only change documentation
files on the 4.0 branch though.

> The target for 4.1.0 was to have the parameter support tidied up.
> However, that seems to be receeding into the background, too.  We
> really need to draw up a more limited set of goals since at the moment
> it looks like nobody's got the time for large scale new code.  There's
> plenty of new stuff there in modules and the odd builtin.

Sorry, I've not had much time to look at the parameter stuff. It'd
perhaps be best to put out 4.1.x releases without any single big change.
As you say there is plenty of new stuff.

Oliver



This e-mail and any attachment is for authorised use by the intended recipient(s) only.  It may contain proprietary material, confidential information and/or be subject to legal privilege.  It should not be copied, disclosed to, retained or used by, any other party.  If you are not an intended recipient then please promptly delete this e-mail and any attachment and all copies and inform the sender.  Thank you.

[-- Attachment #2: patch against doc files --]
[-- Type: text/plain, Size: 8695 bytes --]

Index: Doc/Zsh/builtins.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Zsh/builtins.yo,v
retrieving revision 1.46
diff -u -r1.46 builtins.yo
--- Doc/Zsh/builtins.yo	20 Jun 2002 16:39:58 -0000	1.46
+++ Doc/Zsh/builtins.yo	5 Aug 2002 11:40:02 -0000
@@ -656,7 +656,7 @@
 findex(print)
 item(tt(print) [ tt(-bnrslzpNDPoOicm) ] [ tt(-u)var(n) ] [ tt(-f) var(format) ] [ tt(-R) [ tt(-en) ]] [ var(arg) ... ])(
 With the `tt(-f)' option the arguments are printed as described by tt(printf).
-With no flags or with flag `tt(-)', the arguments are printed on
+With no flags or with the flag `tt(-)', the arguments are printed on
 the standard output as described by tt(echo), with the following differences:
 the escape sequence `tt(\M-)var(x)' metafies the character
 var(x) (sets the highest bit),
Index: Doc/Zsh/compsys.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Zsh/compsys.yo,v
retrieving revision 1.159
diff -u -r1.159 compsys.yo
--- Doc/Zsh/compsys.yo	1 Jul 2002 08:25:17 -0000	1.159
+++ Doc/Zsh/compsys.yo	5 Aug 2002 11:40:02 -0000
@@ -274,10 +274,10 @@
 
 The var(function) may actually be a string containing any shell code
 and that string will be executed via the tt(eval) builtin command. 
-This allows to easily define completions for commands that need to call
-one of the completion functions with arguments.  For example to make
-files ending in `tt(.h)' be completed as arguments to the command
-tt(foo), one would use:
+This allows for the easy definition of completions for commands that
+need to call one of the completion functions with arguments.  For
+example to make files ending in `tt(.h)' be completed as arguments to
+the command tt(foo), one would use:
 
 example(compdef '_files -g "*.h"' foo)
 
@@ -568,7 +568,7 @@
 kindex(characters, completion tag)
 item(tt(characters))(
 used for commands like tt(stty) when completing characters; also used
-when completing character classes after a opening bracket
+when completing character classes after an opening bracket
 )
 kindex(colormapids, completion tag)
 item(tt(colormapids))(
@@ -3090,7 +3090,7 @@
 completion is being performed.  The description is given as arguments to
 this function, with each var(spec) describing one option or normal
 argument of the command.  To separate these var(spec)s from the
-options given to tt(_arguments) itself, they can be preceeded by an
+options given to tt(_arguments) itself, they can be preceded by an
 argument containing a single colon.  The forms of var(spec)
 understood are:
 
@@ -4274,7 +4274,7 @@
 value whose argument is to be completed.
 
 Note also that tt(_values) normally adds the character used as the
-separator between values as a auto-removable suffix so that users don't
+separator between values as an auto-removable suffix so that users don't
 have to type it themselves.  But when using a `tt(->)var(string)' action
 tt(_values) can't do that because the matches for the argument will be
 generated by the calling function.  To get the usual behaviour, the
Index: Doc/Zsh/contrib.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Zsh/contrib.yo,v
retrieving revision 1.21
diff -u -r1.21 contrib.yo
--- Doc/Zsh/contrib.yo	5 Jul 2002 10:49:47 -0000	1.21
+++ Doc/Zsh/contrib.yo	5 Aug 2002 11:40:02 -0000
@@ -438,7 +438,7 @@
 down within the buffer, otherwise they search for a history line matching
 the start of the current line.  In this case, however, they search for
 a line which matches the current line up to the current cursor position, in
-the manner of tt(history-begining-search-backward) and tt(-forward), rather
+the manner of tt(history-beginning-search-backward) and tt(-forward), rather
 than the first word on the line.
 )
 tindex(incarg)
@@ -909,7 +909,7 @@
 Each line typed is evaluated as an expression.  The prompt shows a number,
 which corresponds to a positional parameter where the result of that
 calculation is stored.  For example, the result of the calculation on the
-line preceeded by `tt(4> )' is available as tt($4).  Full command line
+line preceded by `tt(4> )' is available as tt($4).  Full command line
 editing, including the history of previous calculations, is available; the
 history is saved in the file tt(~/.zcalc_history).  To exit, enter a blank
 line or type `tt(q)' on its own.
@@ -923,7 +923,7 @@
 into the global namespace.
 
 An extra facility is provided for changing the default output base.  Use,
-for example, `tt([#16])' to display hexadecimal output preceeded by an
+for example, `tt([#16])' to display hexadecimal output preceded by an
 indication of the base, or `tt([##16])' just to display the raw number in
 the given base.  Bases themselves are always specified in decimal.
 `tt([#])' restores the normal output format.
Index: Doc/Zsh/expn.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Zsh/expn.yo,v
retrieving revision 1.42
diff -u -r1.42 expn.yo
--- Doc/Zsh/expn.yo	22 Feb 2002 17:28:05 -0000	1.42
+++ Doc/Zsh/expn.yo	5 Aug 2002 11:40:03 -0000
@@ -1680,11 +1680,11 @@
 up to the next matching character (`tt([)', `tt({)', and `tt(<)' match 
 `tt(])', `tt(})', and `tt(>)' respectively, any other character
 matches itself) is taken as a list of comma-separated
-var(sub-spec)s. Each var(sub-spec) may be either a octal number as
+var(sub-spec)s. Each var(sub-spec) may be either an octal number as
 described above or a list of any of the characters `tt(u)', `tt(g)',
 `tt(o)', and `tt(a)', followed by a `tt(=)', a `tt(PLUS())', or a
 `tt(-)', followed by a list of any of the characters `tt(r)', `tt(w)', 
-`tt(x)', `tt(s)', and `tt(t)', or a octal digit. The first list of
+`tt(x)', `tt(s)', and `tt(t)', or an octal digit. The first list of
 characters specify which access rights are to be checked. If a `tt(u)'
 is given, those for the owner of the file are used, if a `tt(g)' is
 given, those of the group are checked, a `tt(o)' means to test those
@@ -1886,5 +1886,5 @@
 demonstrates how colon modifiers and other qualifiers may be chained
 together.  The ordinary qualifier `tt(.)' is applied first, then the colon
 modifiers in order from left to right.  So if tt(EXTENDED_GLOB) is set and
-the base battern matches the regular file tt(builtin.pro), the shell will
+the base pattern matches the regular file tt(builtin.pro), the shell will
 print `tt(shmiltin.shmo)'.
Index: Doc/Zsh/files.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Zsh/files.yo,v
retrieving revision 1.3
diff -u -r1.3 files.yo
--- Doc/Zsh/files.yo	10 Jul 2001 08:59:18 -0000	1.3
+++ Doc/Zsh/files.yo	5 Aug 2002 11:40:03 -0000
@@ -10,7 +10,7 @@
 pindex(NO_RCS, use of)
 pindex(NO_GLOBAL_RCS, use of)
 vindex(ZDOTDIR, use of)
-@cindex(zshenv)
+cindex(zshenv)
 Commands are first read from tt(/etc/zshenv); this cannot be overridden.
 Subsequent behaviour is modified by the tt(RCS) and
 tt(GLOBAL_RCS) options; the former affects all startup files, while the
Index: Doc/Zsh/params.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Zsh/params.yo,v
retrieving revision 1.15
diff -u -r1.15 params.yo
--- Doc/Zsh/params.yo	21 Feb 2002 13:43:00 -0000	1.15
+++ Doc/Zsh/params.yo	5 Aug 2002 11:40:03 -0000
@@ -707,9 +707,8 @@
 item(tt(fignore) <S> <Z> (tt(FIGNORE) <S>))(
 An array (colon separated list)
 containing the suffixes of files to be ignored
-during filename completion.  However, if the completion generates only files
-which would match if this variable would be ignored, than these files are
-completed anyway.
+during filename completion.  However, if completion only generates files
+with suffixes in this list, then these files are completed anyway.
 )
 vindex(fpath)
 vindex(FPATH)
Index: Doc/Zsh/zle.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Zsh/zle.yo,v
retrieving revision 1.25
diff -u -r1.25 zle.yo
--- Doc/Zsh/zle.yo	4 Jul 2002 10:13:39 -0000	1.25
+++ Doc/Zsh/zle.yo	5 Aug 2002 11:40:03 -0000
@@ -1045,7 +1045,7 @@
 the default behaviour is used, while if it is 1, successive calls will move
 forwards through the history.  The value 0 can be used to indicate that the
 history line examined by the previous execution of the command will be
-reexamined.  Note that negative numbers should be preceeded with a
+reexamined.  Note that negative numbers should be preceded with a
 `tt(-)tt(-)' argument to avoid confusing them with options.
 
 If two arguments are given, the second specifies the word on the command

[-- Attachment #3: patch against src files --]
[-- Type: text/plain, Size: 16988 bytes --]

Index: Src/builtin.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/builtin.c,v
retrieving revision 1.79
diff -u -r1.79 builtin.c
--- Src/builtin.c	1 Aug 2002 15:50:07 -0000	1.79
+++ Src/builtin.c	5 Aug 2002 11:40:03 -0000
@@ -477,8 +477,8 @@
 	hadplus = 0, hadend = 0, sort = 0;
     char **x;
 
-    /* Obsolecent sh compatibility: set - is the same as set +xv *
-     * and set - args is the same as set +xv -- args             */
+    /* Obsolescent sh compatibility: set - is the same as set +xv *
+     * and set - args is the same as set +xv -- args              */
     if (*args && **args == '-' && !args[0][1]) {
 	dosetopt(VERBOSE, 0, 0);
 	dosetopt(XTRACE, 0, 0);
@@ -699,7 +699,7 @@
 /* The main pwd changing function.  The real work is done by other     *
  * functions.  cd_get_dest() does the initial argument processing;     *
  * cd_do_chdir() actually changes directory, if possible; cd_new_pwd() *
- * does the ancilliary processing associated with actually changing    *
+ * does the ancillary processing associated with actually changing    *
  * directory.                                                          */
 
 /**/
@@ -1409,7 +1409,7 @@
     return cmd;
 }
 
-/* Perform old=new substituions.  Uses the asgment structure from zsh.h, *
+/* Perform old=new substitutions.  Uses the asgment structure from zsh.h, *
  * which is essentially a linked list of string,replacement pairs.       */
 
 /**/
@@ -1643,7 +1643,7 @@
 	 * If the original parameter was special and we're creating
 	 * a new one, we need to keep it special.
 	 *
-	 * The -h (hide) flags prevents an existing special being made
+	 * The -h (hide) flag prevents an existing special being made
 	 * local.  It can be applied either to the special or in the
 	 * typeset/local statement for the local variable.
 	 */
@@ -1965,7 +1965,7 @@
 	    off |= bit;
     roff = off;
 
-    /* Sanity checks on the options.  Remove conficting options. */
+    /* Sanity checks on the options.  Remove conflicting options. */
     if (on & PM_FFLOAT) {
 	off |= PM_RIGHT_B | PM_LEFT | PM_RIGHT_Z | PM_UPPER | PM_ARRAY |
 	    PM_HASHED | PM_INTEGER | PM_EFLOAT;
Index: Src/compat.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/compat.c,v
retrieving revision 1.11
diff -u -r1.11 compat.c
--- Src/compat.c	3 Nov 2001 23:39:11 -0000	1.11
+++ Src/compat.c	5 Aug 2002 11:40:03 -0000
@@ -1,5 +1,5 @@
 /*
- * compat.c - compatibiltiy routines for the deprived
+ * compat.c - compatibility routines for the deprived
  *
  * This file is part of zsh, the Z shell.
  *
@@ -377,7 +377,7 @@
 }
 
 /* chdir with arbitrary long pathname.  Returns 0 on success, 0 on normal *
- * faliliure and -2 when chdir failed and the current directory is lost.  */
+ * failure and -2 when chdir failed and the current directory is lost.  */
 
 /**/
 mod_export int
Index: Src/exec.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/exec.c,v
retrieving revision 1.44
diff -u -r1.44 exec.c
--- Src/exec.c	1 Aug 2002 15:06:27 -0000	1.44
+++ Src/exec.c	5 Aug 2002 11:40:03 -0000
@@ -2372,7 +2372,7 @@
 		execute((Cmdnam) hn, cflags & BINF_DASH);
 	    } else {		/* ( ... ) */
 		DPUTS(varspc,
-		      "BUG: assigment before complex command");
+		      "BUG: assignment before complex command");
 		list_pipe = 0;
 		if (subsh_close >= 0)
 		    zclose(subsh_close);
Index: Src/glob.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/glob.c,v
retrieving revision 1.27
diff -u -r1.27 glob.c
--- Src/glob.c	6 May 2002 14:46:11 -0000	1.27
+++ Src/glob.c	5 Aug 2002 11:40:03 -0000
@@ -355,7 +355,7 @@
 
     while (!inserts || (news = dupstring(*inserts++))) {
 	if (colonmod) {
-	    /* Handle the remainder of the qualifer:  e.g. (:r:s/foo/bar/). */
+	    /* Handle the remainder of the qualifier:  e.g. (:r:s/foo/bar/). */
 	    s = colonmod;
 	    modify(&news, &s);
 	}
@@ -685,7 +685,7 @@
 	/* parse single path component */
 	if (!(p1 = patcompile(instr, compflags|PAT_FILET, &instr)))
 	    return NULL;
-	/* then do the remaining path compoents */
+	/* then do the remaining path components */
 	if (*instr == '/' || !*instr) {
 	    int ef = *instr == '/';
 
Index: Src/hashtable.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/hashtable.c,v
retrieving revision 1.11
diff -u -r1.11 hashtable.c
--- Src/hashtable.c	5 Jul 2001 11:43:11 -0000	1.11
+++ Src/hashtable.c	5 Aug 2002 11:40:03 -0000
@@ -156,7 +156,7 @@
 	ht->freenode(oldnode);
 }
 
-/* Add a node to a hash table, returning the old node on replacment. */
+/* Add a node to a hash table, returning the old node on replacement. */
 
 /**/
 HashNode
Index: Src/init.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/init.c,v
retrieving revision 1.24
diff -u -r1.24 init.c
--- Src/init.c	7 Jun 2002 14:44:25 -0000	1.24
+++ Src/init.c	5 Aug 2002 11:40:03 -0000
@@ -805,7 +805,7 @@
     createshfunctable();    /* create hash table for shell functions   */
     createbuiltintable();   /* create hash table for builtin commands  */
     createnameddirtable();  /* create hash table for named directories */
-    createparamtable();     /* create paramater hash table             */
+    createparamtable();     /* create parameter hash table             */
 
     condtab = NULL;
     wrappers = NULL;
Index: Src/lex.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/lex.c,v
retrieving revision 1.22
diff -u -r1.22 lex.c
--- Src/lex.c	8 Jan 2002 15:33:23 -0000	1.22
+++ Src/lex.c	5 Aug 2002 11:40:03 -0000
@@ -122,7 +122,7 @@
 /**/
 mod_export int nocomments;
 
-/* text of puctuation tokens */
+/* text of punctuation tokens */
 
 /**/
 mod_export char *tokstrings[WHILE + 1] = {
Index: Src/math.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/math.c,v
retrieving revision 1.14
diff -u -r1.14 math.c
--- Src/math.c	17 May 2002 15:14:05 -0000	1.14
+++ Src/math.c	5 Aug 2002 11:40:03 -0000
@@ -648,7 +648,7 @@
 		   (a.type != MN_UNSET || what != EQ)) {
 	    /*
 	     * Different types, so coerce to float.
-	     * It may happen during an assigment that the LHS
+	     * It may happen during an assignment that the LHS
 	     * variable is actually an integer, but there's still
 	     * no harm in doing the arithmetic in floating point;
 	     * the assignment will do the correct conversion.
Index: Src/mem.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/mem.c,v
retrieving revision 1.5
diff -u -r1.5 mem.c
--- Src/mem.c	7 Mar 2001 12:58:41 -0000	1.5
+++ Src/mem.c	5 Aug 2002 11:40:03 -0000
@@ -693,7 +693,7 @@
    size of the small blocks held in a memory block, given a pointer to the
    header of it.  M_SBLEN() gives the size of a memory block that can hold
    an array of small blocks, given the size of these small blocks.  M_BSLEN()
-   caculates the size of the small blocks held in a memory block, given the
+   calculates the size of the small blocks held in a memory block, given the
    length of that block (including the header of the memory block.  M_NSMALL
    is the number of possible block sizes that small blocks should be used
    for. */
@@ -1286,7 +1286,7 @@
 	printf("\nThe list of memory blocks. For each block the following\n");
 	printf("information is shown:\n\n");
 	printf("num\tthe number of this block\n");
-	printf("tnum\tlike num but counted separatedly for used and free\n");
+	printf("tnum\tlike num but counted separately for used and free\n");
 	printf("\tblocks\n");
 	printf("addr\tthe address of this block\n");
 	printf("len\tthe length of the block\n");
@@ -1295,7 +1295,7 @@
 	printf("\t  free\tthis block is free\n");
 	printf("\t  small\tthis block is used for an array of small blocks\n");
 	printf("cum\tthe accumulated sizes of the blocks, counted\n");
-	printf("\tseparatedly for used and free blocks\n");
+	printf("\tseparately for used and free blocks\n");
 	printf("\nFor blocks holding small blocks the number of free\n");
 	printf("blocks, the number of used blocks and the size of the\n");
 	printf("blocks is shown. For otherwise used blocks the first few\n");
Index: Src/module.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/module.c,v
retrieving revision 1.9
diff -u -r1.9 module.c
--- Src/module.c	18 May 2001 15:23:09 -0000	1.9
+++ Src/module.c	5 Aug 2002 11:40:03 -0000
@@ -903,7 +903,7 @@
      * If we were passed an alias, we must resolve it to a final
      * module name (and maybe add the corresponding struct), since otherwise
      * we would need to check all modules to see if they happen
-     * to be aliased to the same thing to implement depencies properly.
+     * to be aliased to the same thing to implement dependencies properly.
      *
      * This should mean that an attempt to add an alias which would
      * have the same name as a module which has dependencies is correctly
Index: Src/params.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/params.c,v
retrieving revision 1.64
diff -u -r1.64 params.c
--- Src/params.c	20 Jun 2002 16:39:58 -0000	1.64
+++ Src/params.c	5 Aug 2002 11:40:03 -0000
@@ -225,7 +225,7 @@
 {NULL, NULL},
 #define IPDEF10(A,B,C) {NULL,A,PM_ARRAY|PM_SPECIAL,BR(NULL),SFN(C),GFN(B),stdunsetfn,10,NULL,NULL,NULL,0}
 
-/* The following parameters are not avaible in sh/ksh compatibility *
+/* The following parameters are not available in sh/ksh compatibility *
  * mode. All of these have sh compatible equivalents.                */
 IPDEF1("ARGC", poundgetfn, nullintsetfn, PM_READONLY),
 IPDEF2("HISTCHARS", histcharsgetfn, histcharssetfn, PM_DONTIMPORT),
@@ -678,7 +678,7 @@
 			 paramtab->getnode(paramtab, name));
 
 	DPUTS(oldpm && oldpm->level > locallevel,
-	      "BUG:  old local parameter not deleteed");
+	      "BUG: old local parameter not deleted");
 	if (oldpm && (oldpm->level == locallevel || !(flags & PM_LOCAL))) {
 	    if (!(oldpm->flags & PM_UNSET) || (oldpm->flags & PM_SPECIAL)) {
 		oldpm->flags &= ~PM_UNSET;
@@ -1205,7 +1205,7 @@
 
     *s++ = '[';
     s = parse_subscript(s, dq);	/* Error handled after untokenizing */
-    /* Now we untokenize everthing except INULL() markers so we can check *
+    /* Now we untokenize everything except INULL() markers so we can check *
      * for the '*' and '@' special subscripts.  The INULL()s are removed  *
      * in getarg() after we know whether we're doing reverse indexing.    */
     for (tbrack = *pptr + 1; *tbrack && tbrack != s; tbrack++) {
@@ -2269,7 +2269,7 @@
 	    /*
 	     * Re-export the old value which we removed in typeset_single().
 	     * I don't think we need to test for ALL_EXPORT here, since if
-	     * it was used to export the parameter originally the parmeter
+	     * it was used to export the parameter originally the parameter
 	     * should still have the PM_EXPORTED flag.
 	     */
 	    export_param(oldpm);
Index: Src/parse.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/parse.c,v
retrieving revision 1.36
diff -u -r1.36 parse.c
--- Src/parse.c	7 Jun 2002 14:44:25 -0000	1.36
+++ Src/parse.c	5 Aug 2002 11:40:03 -0000
@@ -93,7 +93,7 @@
  *
  *   WC_LIST
  *     - data contains type (sync, ...)
- *     - follwed by code for this list
+ *     - followed by code for this list
  *     - if not (type & Z_END), followed by next WC_LIST
  *
  *   WC_SUBLIST
@@ -139,7 +139,7 @@
  *     - followed by offset to first string
  *     - followed by length of string table
  *     - followed by number of patterns for body
- *     - follwoed by codes for body
+ *     - followed by codes for body
  *     - followed by strings for body
  *
  *   WC_FOR
Index: Src/pattern.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/pattern.c,v
retrieving revision 1.11
diff -u -r1.11 pattern.c
--- Src/pattern.c	22 Jan 2002 12:40:26 -0000	1.11
+++ Src/pattern.c	5 Aug 2002 11:40:03 -0000
@@ -70,7 +70,7 @@
 
 #include "pattern.pro"
 
-/* Number of active parenthesised expressions allowed in backreferencing */
+/* Number of active parenthesized expressions allowed in backreferencing */
 #define NSUBEXP  9
 
 /* definition	number	opnd?	meaning */
@@ -119,7 +119,7 @@
  *
  *  P_ANY, P_ANYOF:  the operand is a null terminated
  *    string.  Normal characters match as expected.  Characters
- *    in the range Meta+PP_ALPHA..Meta+PP_UNKNWN do the approprate
+ *    in the range Meta+PP_ALPHA..Meta+PP_UNKNWN do the appropriate
  *    Posix range tests.  This relies on imeta returning true for these
  *    characters.  We treat unknown POSIX ranges as never matching.
  *    PP_RANGE means the next two (possibly metafied) characters form
@@ -448,7 +448,7 @@
 }
 
 /*
- * Main body or parenthesised subexpression in pattern
+ * Main body or parenthesized subexpression in pattern
  * Parenthesis (and any ksh_glob gubbins) will have been removed.
  */
 
@@ -830,7 +830,7 @@
     for (;;) {
 	/*
 	 * Check if we have a string. First, we need to make sure
-	 * the string doesn't introduce a ksh-like parenthesised expression.
+	 * the string doesn't introduce a ksh-like parenthesized expression.
 	 */
 	kshchar = '\0';
 	if (isset(KSHGLOB) && *patparse && patparse[1] == Inpar) {
@@ -1972,7 +1972,7 @@
 	     * This is just simple cases, matching one character.
 	     * With approximations, we still handle * this way, since
 	     * no approximation is ever necessary, but other closures
-	     * are handled by the more compicated branching method
+	     * are handled by the more complicated branching method
 	     */
 	    op = P_OP(scan);
 	    /* Note that no counts possibly metafied characters */
Index: Src/prompt.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/prompt.c,v
retrieving revision 1.9
diff -u -r1.9 prompt.c
--- Src/prompt.c	31 Jan 2002 15:13:27 -0000	1.9
+++ Src/prompt.c	5 Aug 2002 11:40:03 -0000
@@ -75,7 +75,7 @@
 
 static char *bufline;
 
-/* bp1 is an auxilliary pointer into the buffer, which when non-NULL is *
+/* bp1 is an auxiliary pointer into the buffer, which when non-NULL is *
  * moved whenever the buffer is reallocated.  It is used when data is   *
  * being temporarily held in the buffer.                                */
 
Index: Src/utils.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/utils.c,v
retrieving revision 1.40
diff -u -r1.40 utils.c
--- Src/utils.c	21 May 2002 11:10:16 -0000	1.40
+++ Src/utils.c	5 Aug 2002 11:40:03 -0000
@@ -2553,7 +2553,7 @@
 
 /* Escape tokens and null characters.  Buf is the string which should be     *
  * escaped.  len is the length of the string.  If len is -1, buf should be   *
- * null terminated.  If len is non-negative and the third paramerer is not   *
+ * null terminated.  If len is non-negative and the third parameter is not   *
  * META_DUP, buf should point to an at least len+1 long memory area.  The    *
  * return value points to the quoted string.  If the given string does not   *
  * contain any special character which should be quoted and the third        *
Index: Src/zsh.h
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/zsh.h,v
retrieving revision 1.39
diff -u -r1.39 zsh.h
--- Src/zsh.h	1 Jul 2002 08:25:17 -0000	1.39
+++ Src/zsh.h	5 Aug 2002 11:40:04 -0000
@@ -476,7 +476,7 @@
 #define MAX_ARRLEN    262144
 
 /********************************************/
-/* Defintions for word code                 */
+/* Definitions for word code                 */
 /********************************************/
 
 typedef unsigned int wordcode;
@@ -680,7 +680,7 @@
 #define WCB_AUTOFN()        wc_bld(WC_AUTOFN, 0)
 
 /********************************************/
-/* Defintions for job table and job control */
+/* Definitions for job table and job control */
 /********************************************/
 
 #ifdef NEED_LINUX_TASKS_H
@@ -1181,7 +1181,7 @@
  * could a lot of other things.
  */
 
-#define SUB_END		0x0001	/* match end instead of begining, % or %%  */
+#define SUB_END		0x0001	/* match end instead of beginning, % or %%  */
 #define SUB_LONG	0x0002	/* % or # doubled, get longest match */
 #define SUB_SUBSTR	0x0004	/* match a substring */
 #define SUB_MATCH	0x0008	/* include the matched portion */
@@ -1486,7 +1486,7 @@
 #define islogin  (isset(LOGINSHELL))
 
 /***********************************************/
-/* Defintions for terminal and display control */
+/* Definitions for terminal and display control */
 /***********************************************/
 
 /* tty state structure */

^ permalink raw reply	[relevance 2%]

* Re: Non-patch: Option arguments
  @ 2002-08-27 11:36  3% ` Oliver Kiddle
  2002-08-27 16:27  0%   ` Peter Stephenson
  0 siblings, 1 reply; 200+ results
From: Oliver Kiddle @ 2002-08-27 11:36 UTC (permalink / raw)
  To: Peter Stephenson; +Cc: Zsh hackers list

On 27 Aug, you wrote:

> I've rewritten the option handling for builtins to improve the currently
> woeful handling of arguments to options.  As I didn't see fit to
> maintain compatibility with the current broken form, this changes
> everything involving options.  So the patch is huge and unless anyone
> screams I will commit it without posting it from home, where I've been
> writing it, in the next couple of days.

That all sounds good.

A couple of points which you may or may not have thought of.
Will there now be an easier way for precommand modifiers to take
options. We could particularly do with this for command where a couple
of the options (-v was it) should be accepted by the posix definition
but it would also be useful in a couple of other cases for bash/ksh
compatibility (exec perhaps). I forget what the problem was previously
with this.

We may need a bit of care over how `-' and `--' options are handled.
Taking Chet Ramey's recent message on -users, I was wondering whether
printf (to take a particular example but it may be applicable to others)
should ignore an initial `--' argument.

Oliver

This e-mail and any attachment is for authorised use by the intended recipient(s) only.  It may contain proprietary material, confidential information and/or be subject to legal privilege.  It should not be copied, disclosed to, retained or used by, any other party.  If you are not an intended recipient then please promptly delete this e-mail and any attachment and all copies and inform the sender.  Thank you.


^ permalink raw reply	[relevance 3%]

* Re: Non-patch: Option arguments
  2002-08-27 11:36  3% ` Oliver Kiddle
@ 2002-08-27 16:27  0%   ` Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2002-08-27 16:27 UTC (permalink / raw)
  To: Zsh hackers list

Oliver Kiddle wrote:
> A couple of points which you may or may not have thought of.
> Will there now be an easier way for precommand modifiers to take
> options. We could particularly do with this for command where a couple
> of the options (-v was it) should be accepted by the posix definition
> but it would also be useful in a couple of other cases for bash/ksh
> compatibility (exec perhaps). I forget what the problem was previously
> with this.

I think this is a different issue, but actually I'm not sure this is
that difficult.

> We may need a bit of care over how `-' and `--' options are handled.
> Taking Chet Ramey's recent message on -users, I was wondering whether
> printf (to take a particular example but it may be applicable to others)
> should ignore an initial `--' argument.

Yes, this is a bit like cd.  Various things like this will need tidying
up later.  There's no code at the moment to handle `--' even if other
arguments looking like options are being passed straight through is
arguments.

-- 
Peter Stephenson <pws@csr.com>                  Software Engineer
CSR Ltd., Science Park, Milton Road,
Cambridge, CB4 0WH, UK                          Tel: +44 (0)1223 692070


**********************************************************************
The information transmitted is intended only for the person or
entity to which it is addressed and may contain confidential 
and/or privileged material. 
Any review, retransmission, dissemination or other use of, or
taking of any action in reliance upon, this information by 
persons or entities other than the intended recipient is 
prohibited.  
If you received this in error, please contact the sender and 
delete the material from any computer.
**********************************************************************


^ permalink raw reply	[relevance 0%]

* PATCH: printf --
@ 2002-09-16 11:44  4% Oliver Kiddle
  0 siblings, 0 replies; 200+ results
From: Oliver Kiddle @ 2002-09-16 11:44 UTC (permalink / raw)
  To: Zsh workers

Reluctantly, I here add removal of an inital `--' to printf to satisfy
POSIX.

Except for cd, command (which we knew anyway) and possibly ulimit, I
think we have it right for other standard commands. I'm not sure in the
case of fg, bg and wait. If my understanding of the POSIX standard is
correct, the builtins which should not ignore an initial `--' are:
break, dot, eval, shift, exec, exit, return, test/[ and continue. Zsh
gets all these right. Also, having noticed that `ARGV0=whatever exec
command' is clever enough to change the command name for the command
and not for exec, I don't think we should follow bash and ksh93 in
giving exec arguments. Though zsh can't easily do the -c functionality
which passes an empty environment.

--- Src/builtin.c	2002-08-28 08:22:23.000000000 +0100
+++ Src/builtin.c	2002-09-15 18:52:11.000000000 +0100
@@ -3024,9 +3024,15 @@
     zulong zulongval;
     char *stringval;
     
-    if (func == BIN_PRINTF)
+    if (func == BIN_PRINTF) {
+	if (!strcmp(*args, "--")) {
+	  if (!*++args) {
+	    zwarnnam(name, "not enough arguments", NULL, 0);
+	    return 1;
+          }
+	}
 	fmt = *args++;
-    else if (OPT_HASARG(ops,'f'))
+    } else if (OPT_HASARG(ops,'f'))
 	fmt = OPT_ARG(ops,'f');
     if (fmt)
 	fmt = getkeystring(fmt, &flen, OPT_ISSET(ops,'b') ? 2 : 0, &nnl);

This e-mail and any attachment is for authorised use by the intended recipient(s) only.  It may contain proprietary material, confidential information and/or be subject to legal privilege.  It should not be copied, disclosed to, retained or used by, any other party.  If you are not an intended recipient then please promptly delete this e-mail and any attachment and all copies and inform the sender.  Thank you.


^ permalink raw reply	[relevance 4%]

* Recursion and shell functions
@ 2002-10-10 19:41  3% DervishD
    0 siblings, 1 reply; 200+ results
From: DervishD @ 2002-10-10 19:41 UTC (permalink / raw)
  To: Zsh

    Hi all :))

    First of all, please excuse this a-bit-off-topic question, but I
need to know if a feature available in zsh is portable.

    I need to do recursion in a directory tree and have two options;
first one is doing a 'for' loop recursively calling the shell
function which performs the actions:

    function () {

        for item
        do
            if [ -d $item ]
            then
                do_some_action
                chmod u+w $item
                cd $item
                function           <-- Overwrites 'item', of course
                chmod u-w $item    <-- Oh-oh... $item is not as before...
                ...
            fi 
        fi
        ...
    }

    Second is using 'find' to do the proper operations, although I
don't want the piece of software dependent on 'find'. The problem is
if I can do recursion safely (well, portably), if it is supported by
POSIX (I can't find a word about it in SuSv3) or at least if it is
common practice: don't want to find a tiny non-interactive shell
failing because of this...

    Just in case you can help me, I need to copy a hierarchy from one
place to another (where some files can be already present) setting
permissions in the process. Other solution I'm considering is doing a
'cp -fpR' over the tree and after that the recursion above for
setting the permissions. This may seems unreasonable (two
recursions...) but it's necessary since the recursive function call
overwrites local variables, and I *cannot* set them as local, since
'local' is not a portable keyword :((( I need 

    Suggestions welcome and thanks in advance :))

    Raúl


^ permalink raw reply	[relevance 3%]

* Re: Recursion and shell functions
  @ 2002-10-10 21:15  3%   ` DervishD
  0 siblings, 0 replies; 200+ results
From: DervishD @ 2002-10-10 21:15 UTC (permalink / raw)
  To: Jason Price; +Cc: Zsh

    Hi Jason :)

> >     First of all, please excuse this a-bit-off-topic question, but I
> > need to know if a feature available in zsh is portable.
> You could re-invent the wheel, but why?
> (cd <your source dir> ; tar -cpvf - .) | ( cd <your dest dir> ; tar -xpf -)

    Thanks for your answer, Jason, but I don't want to make the
software dependent on 'tar'. In fact I don't have tar on my system! I
use 'pax' instead ;))

    The aim is to depend only on the shell and POSIX utilities (like
'cp', 'rm, etc... you know.). I want to impose little or no
dependencies. 'tar' is not a good solution for me, I prefer 'pax',
although is not as extended by now, 'rsync' seems to big for copying
a few bunch of files, and 'ssh'... well...

    Thanks again.

    Raúl


^ permalink raw reply	[relevance 3%]

* PATCH: cap leak
@ 2002-10-11  1:04  3% Clint Adams
  0 siblings, 0 replies; 200+ results
From: Clint Adams @ 2002-10-11  1:04 UTC (permalink / raw)
  To: zsh-workers

This patch is from Martin Waitz, who noticed that caps wouldn't be freed
if(val).

--- Src/utils.c.orig    2002-10-10 23:59:28.000000000 +0200
+++ Src/utils.c 2002-10-11 00:00:55.000000000 +0200
@@ -3670,7 +3670,10 @@ privasserted(void)
 	    cap_flag_value_t val;
 	    cap_value_t n;
 	    for(n = 0; !cap_get_flag(caps, n, CAP_EFFECTIVE, &val); n++)
-		if(val) return 1;
+		if(val) {
+		    cap_free(caps);
+		    return 1;
+		}
 	    cap_free(caps);
 	}
     }


-- System Information:
Debian Release: testing/unstable
Architecture: i386
Kernel: Linux pergament 2.4.19-pergament0 #1 Son Aug 25 17:07:17 CEST 2002 i686
Locale: LANG=C, LC_CTYPE=de_DE@euro

Versions of packages zsh depends on:
ii  debconf                  1.2.10          Debian configuration management sy
ii  libc6                    2.2.5-15        GNU C Library: Shared libraries an
ii  libcap1                  1:1.10-12       support for getting/setting POSIX.
ii  libncurses5              5.2.20020112a-8 Shared libraries for terminal hand

-- debconf information excluded


----- End forwarded message -----


^ permalink raw reply	[relevance 3%]

* Linux 2.5 and Zsh bug
@ 2002-10-18 20:59  4% Stephen Hemminger
  2002-10-18 21:50  0% ` Clint Adams
  0 siblings, 1 reply; 200+ results
From: Stephen Hemminger @ 2002-10-18 20:59 UTC (permalink / raw)
  To: zsh-workers, zsh-workers, zsh-workers, zsh-workers, lkml

When running zsh on a Linux 2.5 kernel, the prompt always has a hash 
sign '#' rather than the normal user '$'.  This probably happens because 
the shell function privasserted() is returning true for all users.  I 
know nothing about Posix capabilities but the zsh code for this looks 
suspicious.

Code in question:
------------------------------------------------------------
/* isolate zsh bug */
#include <stdio.h>
#include <sys/capability.h>

int
privasserted(void)
{
    if(!geteuid()) {
        printf("geteuid() is root\n");
        return 1;
    }
    else  {
        cap_t caps = cap_get_proc();
        if(caps) {
            printf("caps = %p\n", caps);
            /* POSIX doesn't define a way to test whether a capability set *
             * is empty or not.  Typical.  I hope this is 
conforming...    */
            cap_flag_value_t val;
            cap_value_t n;

            for(n = 0; !cap_get_flag(caps, n, CAP_EFFECTIVE, &val); n++) {
                if(val) {
                    printf("capability %#x is %d\n", n, val);
                    cap_free(caps); /* missing in original zsh code 
memory leak */
                    return 1;
                }
            }
            printf("last capability %#x\n", n);

            cap_free(caps);
        }
    }
    return 0;
}

int main(int argc, const char **argv) {
    printf("%s privledged\n", privasserted() ?  "Is" : "Not");
}

------------------------------------------------
On 2.4.18
caps = 0x8049844
last capability 0x1d
Not privledged

On 2.5.43
caps = 0x804a00c
capability 0 is 1
Is privledged




^ permalink raw reply	[relevance 4%]

* Re: Linux 2.5 and Zsh bug
  2002-10-18 20:59  4% Linux 2.5 and Zsh bug Stephen Hemminger
@ 2002-10-18 21:50  0% ` Clint Adams
  0 siblings, 0 replies; 200+ results
From: Clint Adams @ 2002-10-18 21:50 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: zsh-workers, lkml

> When running zsh on a Linux 2.5 kernel, the prompt always has a hash 
> sign '#' rather than the normal user '$'.  This probably happens because 
> the shell function privasserted() is returning true for all users.  I 
> know nothing about Posix capabilities but the zsh code for this looks 
> suspicious.

See this for more info:

http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=163008&repeatmerged=yes


^ permalink raw reply	[relevance 0%]

* Inconsistent signal handling?
@ 2002-10-26  3:22  3% Philippe Troin
  0 siblings, 0 replies; 200+ results
From: Philippe Troin @ 2002-10-26  3:22 UTC (permalink / raw)
  To: zsh-workers

[-- Attachment #1: Type: text/plain, Size: 2508 bytes --]

In init.c, init_signals() says:

    void
    init_signals(void)
    {
        sigchld_mask = signal_mask(SIGCHLD);

        intr();

    #ifndef QDEBUG
        signal_ignore(SIGQUIT);
    #endif

        install_handler(SIGHUP);
        install_handler(SIGCHLD);
    #ifdef SIGWINCH
        install_handler(SIGWINCH);
    #endif
        if (interact) {
            install_handler(SIGALRM);
[1]         signal_ignore(SIGTERM);
        }
        if (jobbing) {
[2]         long ttypgrp;
[2]
[2]         while ((ttypgrp = gettygrp()) != -1 && ttypgrp != mypgrp)
[2]             kill(0, SIGTTIN);
[2]         if (ttypgrp == -1) {
[2]             opts[MONITOR] = 0;
[2]         } else {
[2]             signal_ignore(SIGTTOU);
[2]             signal_ignore(SIGTSTP);
[2]             signal_ignore(SIGTTIN);
[2]             attachtty(mypgrp);
[2]         }
        }
[3]     if (islogin) {
[4]         signal_setmask(signal_mask(0));
        } else if (interact) {
            sigset_t set;

            sigemptyset(&set);
            sigaddset(&set, SIGINT);
            sigaddset(&set, SIGQUIT);
            signal_unblock(set);
        }
    }

My remarks:

 [1] Why do we ignore SIGTERM on interactive sessions? That sounds
     like a bad idea to me.

 [2] See my previous mail <87bs5hc31h.fsf@ceramic.fifi.org>

 [3] Why do we only clean-up the signal mask on login shells? It
     should happen on interactive shells (there can be login
     non-interactive shells, eg. for X11 startup).

 [4] This is not enough to clean-up all inherited signal
     properties. If some signals have been ignored (with
     signal(SIG_IGN)) before zsh was exec()ed, then they are still
     ignored by zsh. exec*() only resets the disposition of signals
     which have a signal handler to SIG_DFL, but leaves SIG_IGNored
     signals as is (this is a POSIX requirement).

I'd suggest changing init_signals to:

void
init_signals(void)
{
    if (interact) {
        int i;
        signal_setmask(signal_mask(0));
        for (i=0; i<NSIG; ++i)
            signal_default(i);
    }
    sigchld_mask = signal_mask(SIGCHLD);

    intr();

#ifndef QDEBUG
    signal_ignore(SIGQUIT);
#endif

    install_handler(SIGHUP);
    install_handler(SIGCHLD);
#ifdef SIGWINCH
    install_handler(SIGWINCH);
#endif
    if (interact) {
        install_handler(SIGALRM);
    }
    if (jobbing) {
        signal_ignore(SIGTTOU);
        signal_ignore(SIGTSTP);
        signal_ignore(SIGTTIN);
    }
}

Patch against 4.0.6 attached.

Phil.

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: zsh-4.0.6-signals.patch --]
[-- Type: text/x-patch, Size: 1304 bytes --]

diff -rc zsh-4.0.6.orig/Src/init.c zsh-4.0.6/Src/init.c
*** zsh-4.0.6.orig/Src/init.c	Fri Oct 25 19:43:15 2002
--- zsh-4.0.6/Src/init.c	Fri Oct 25 20:19:02 2002
***************
*** 842,847 ****
--- 842,853 ----
  void
  init_signals(void)
  {
+     if (interact) {
+ 	int i;
+ 	signal_setmask(signal_mask(0));
+ 	for (i=0; i<NSIG; ++i)
+ 	    signal_default(i);
+     }
      sigchld_mask = signal_mask(SIGCHLD);
  
      intr();
***************
*** 857,887 ****
  #endif
      if (interact) {
  	install_handler(SIGALRM);
- 	signal_ignore(SIGTERM);
      }
      if (jobbing) {
! 	long ttypgrp;
! 
! 	while ((ttypgrp = gettygrp()) != -1 && ttypgrp != mypgrp)
! 	    kill(0, SIGTTIN);
! 	if (ttypgrp == -1) {
! 	    opts[MONITOR] = 0;
! 	} else {
! 	    signal_ignore(SIGTTOU);
! 	    signal_ignore(SIGTSTP);
! 	    signal_ignore(SIGTTIN);
! 	    attachtty(mypgrp);
! 	}
!     }
!     if (islogin) {
! 	signal_setmask(signal_mask(0));
!     } else if (interact) {
! 	sigset_t set;
! 
! 	sigemptyset(&set);
! 	sigaddset(&set, SIGINT);
! 	sigaddset(&set, SIGQUIT);
! 	signal_unblock(set);
      }
  }
  
--- 863,873 ----
  #endif
      if (interact) {
  	install_handler(SIGALRM);
      }
      if (jobbing) {
! 	signal_ignore(SIGTTOU);
! 	signal_ignore(SIGTSTP);
! 	signal_ignore(SIGTTIN);
      }
  }
  

^ permalink raw reply	[relevance 3%]

* What can we do with the drunken libc?
@ 2002-12-19 16:34  3% DervishD
  0 siblings, 0 replies; 200+ results
From: DervishD @ 2002-12-19 16:34 UTC (permalink / raw)
  To: Zsh

    Hi all :))

    Excuse the subject, it's just that I'm starting to be pissed off
by GNUisms... Let's go to the matter. In the GNU libc 'ldd' script,
we can see something like:

    echo $"Usage: ldd [OPTION]... FILE..."

    Obviously, zsh prints '$Usage: ....', but bash prints just
'Usage: ...'. Why? Well, because as the bash documentation says, a
doubled quoted string preceeded by a dollar sign, will cause the
string to be translated according to the current locale. There are a
couple of shell variables involved, too, TEXTDOMAIN and TEXTDOMAINDIR.

    Well. What can we, zsh users, do? First thing is to use bash as
our '/bin/sh' so all that crappy GNUist scripts work as expected
(there are more bashisms). Other thing is making zsh support those
bashist features. And the most difficult, trying to convince the GNU
people to write portable shell scripts that work with any POSIX or
SUSv3 compatible shell...

    In the interim, GNU people gives me the freedom to use bash, bash
or even bash as my /bin/sh if I run GNU libc. That's freedom.

    Just my 0.02 EUR

    Raúl


^ permalink raw reply	[relevance 3%]

* printf and POSIX compliance
@ 2003-02-04 15:44 10% Stephane CHAZELAS
  2003-02-04 18:26 10% ` DervishD
  2003-02-11  8:29  8% ` Oliver Kiddle
  0 siblings, 2 replies; 200+ results
From: Stephane CHAZELAS @ 2003-02-04 15:44 UTC (permalink / raw)
  To: zsh-workers

Hello all, and thank you for the very good job

I read at
http://www.opengroup.org/onlinepubs/007904975/utilities/printf.html
that, according to POSIX:

3- In addition to the escape sequences shown in the Base
   Definitions volume of IEEE Std 1003.1-2001, Chapter 5, File
   Format Notation ( '\\' , '\a' , '\b' , '\f' , '\n' , '\r' ,
   '\t' , '\v' ), "\ddd" , where ddd is a one, two, or
   three-digit octal number, shall be written as a byte with the
   numeric value specified by the octal number.

So

printf '\377\0377' | od -c

should return:
0000000 377 037   7
0000003

zsh printf gives:
0000000   \   3   7   7 377
0000005

zsh man pages says that sames sequences as for echo are
recognized. That's not what POSIX requires.

Note that neither bash nor GNU printf behave better.

The "printf '%b' '\0ooo'" is OK though.

--
Stéphane


^ permalink raw reply	[relevance 10%]

* Re: printf and POSIX compliance
  2003-02-04 15:44 10% printf and POSIX compliance Stephane CHAZELAS
@ 2003-02-04 18:26 10% ` DervishD
  2003-02-05 13:10  9%   ` Stephane CHAZELAS
  2003-02-11  8:29  8% ` Oliver Kiddle
  1 sibling, 1 reply; 200+ results
From: DervishD @ 2003-02-04 18:26 UTC (permalink / raw)
  To: Stephane CHAZELAS; +Cc: zsh-workers

    Hi Stephane :)

> http://www.opengroup.org/onlinepubs/007904975/utilities/printf.html
> that, according to POSIX:

    That is Single Unix Specification, not POSIX, am I wrong?

> 3- In addition to the escape sequences shown in the Base

    Oh, additional sequences, not POSIX ones. Ok, then :)

> Note that neither bash nor GNU printf behave better.

    The GNU printf says in its info manual that '\0ooo' is
interpreted as an octal number, but doesn's say anything about \ooo
where the 'o' are octal digits. It barfs in your example saying that
'\3' is not a valid escape sequence :(( I notified and got fixed a
bug about GNU printf argument handling a time ago, for not being SuS
compliant. Don't know the current status of SuS compliance that GNU
shell utilities have :??? Wait for GNU coreutils.

    BTW, as far as I know, zsh has not a printf builtin.

    Raúl


^ permalink raw reply	[relevance 10%]

* Re: printf and POSIX compliance
  2003-02-04 18:26 10% ` DervishD
@ 2003-02-05 13:10  9%   ` Stephane CHAZELAS
  2003-02-05 13:42  5%     ` Peter Stephenson
  2003-02-05 14:41 10%     ` printf and POSIX compliance DervishD
  0 siblings, 2 replies; 200+ results
From: Stephane CHAZELAS @ 2003-02-05 13:10 UTC (permalink / raw)
  To: zsh-workers

On Tue, Feb 04, 2003 at 07:26:11PM +0100, DervishD wrote:
> > http://www.opengroup.org/onlinepubs/007904975/utilities/printf.html
> > that, according to POSIX:
> 
>     That is Single Unix Specification, not POSIX, am I wrong?

I must confess I've not understood all of this imbroglio of
obscure specifications, but had the rough idea this SUS was a
step forward after POSIX. Well, it's also an IEEE (or maybe Open
Group registered at IEEE???) document and it's publicly
available.

> > 3- In addition to the escape sequences shown in the Base
> 
>     Oh, additional sequences, not POSIX ones. Ok, then :)

No, you misunderstood that point. Read at:
http://www.opengroup.org/onlinepubs/007904975/utilities/printf.html
These are additional sequences over those defined at:
http://www.opengroup.org/onlinepubs/007904975/basedefs/xbd_chap05.html

> > Note that neither bash nor GNU printf behave better.
> 
[...]
>     BTW, as far as I know, zsh has not a printf builtin.

I was actually speaking of printf builtin in zsh developpement
series (4.1.1-dev-x), aka "print -f"

zsh ChangeLog:

  2001-10-05  Oliver Kiddle  <opk@zsh.org>

        * 15851, 15948: Src/builtin.c, Doc/Zsh/builtins.yo: add printf
        builtin with basic POSIX functionality


Actually, the only portable (as far as I know) way to display my
first name with any printf (and ascii chars only) is:

printf '%b' 'St\0351phane'

printf 'St\351phane'
will break GNU and zsh ones (not bash)

printf 'St\0351phane'
will break POSIX (or whatever standard is used in recent unices)
ones (such as HPUX's one) (not bash, GNU nor zsh). I don't know
about ksh93's one.

So, that doesn't really matter if zsh printf adopts one syntax
or another, but it may be wise to pick the one that is more
likely to eventually become standard one day. Maybe the bash
behavior (\351 and \0351 both expanding to é) is the least
worst...

-- 
Stéphane


^ permalink raw reply	[relevance 9%]

* Re: printf and POSIX compliance
  2003-02-05 13:10  9%   ` Stephane CHAZELAS
@ 2003-02-05 13:42  5%     ` Peter Stephenson
  2003-02-11 12:09  4%       ` PATCH: unset -v (was Re: printf and POSIX compliance) Oliver Kiddle
  2003-02-05 14:41 10%     ` printf and POSIX compliance DervishD
  1 sibling, 1 reply; 200+ results
From: Peter Stephenson @ 2003-02-05 13:42 UTC (permalink / raw)
  To: zsh-workers

Stephane CHAZELAS wrote:
> On Tue, Feb 04, 2003 at 07:26:11PM +0100, DervishD wrote:
> > > http://www.opengroup.org/onlinepubs/007904975/utilities/printf.html
> > > that, according to POSIX:
> > 
> >     That is Single Unix Specification, not POSIX, am I wrong?
> 
> I must confess I've not understood all of this imbroglio of
> obscure specifications, but had the rough idea this SUS was a
> step forward after POSIX. Well, it's also an IEEE (or maybe Open
> Group registered at IEEE???) document and it's publicly
> available.

The Austin Group which is revising the standard is steering it through
IEEE, SUS and ISO procedures.  If I've followed the developments
correctly, the 2002 version available at the Open Group site is now
approved by all relevant bodies, with identical wording.

Unfortunately we're a bit erratic at following it; nobody's really got
the time to keep track of it in detail.

-- 
Peter Stephenson <pws@csr.com>                  Software Engineer
CSR Ltd., Science Park, Milton Road,
Cambridge, CB4 0WH, UK                          Tel: +44 (0)1223 692070


**********************************************************************
The information transmitted is intended only for the person or
entity to which it is addressed and may contain confidential 
and/or privileged material. 
Any review, retransmission, dissemination or other use of, or
taking of any action in reliance upon, this information by 
persons or entities other than the intended recipient is 
prohibited.  
If you received this in error, please contact the sender and 
delete the material from any computer.
**********************************************************************


^ permalink raw reply	[relevance 5%]

* Re: printf and POSIX compliance
  2003-02-05 13:10  9%   ` Stephane CHAZELAS
  2003-02-05 13:42  5%     ` Peter Stephenson
@ 2003-02-05 14:41 10%     ` DervishD
  1 sibling, 0 replies; 200+ results
From: DervishD @ 2003-02-05 14:41 UTC (permalink / raw)
  To: zsh-workers

    Hi Stephane :)

> >     That is Single Unix Specification, not POSIX, am I wrong?
> I must confess I've not understood all of this imbroglio of
> obscure specifications

    Neither have I O:)) And the number of specs seems to grow on a
daily basis...

> > > Note that neither bash nor GNU printf behave better.
> [...]
> >     BTW, as far as I know, zsh has not a printf builtin.
> I was actually speaking of printf builtin in zsh developpement
> series (4.1.1-dev-x), aka "print -f"

    Oh, sorry, didn't know that the development branch of zsh
implements a printf builtin O:)

> So, that doesn't really matter if zsh printf adopts one syntax or
> another, but it may be wise to pick the one that is more likely to
> eventually become standard one day. Maybe the bash behavior (\351
> and \0351 both expanding to é) is the least worst...

    I think that is better to stuck to an standard, being that POSIX
or SuS. Since SuS gives its spec freely (I mean, you don't have to
pay for giving free software to the community that is SuS compliant)
I prefer that standard over the rest, but obviously is a personal
choice ;)))

    Being bash-compliant is, IMHO, just a way of standardize bad
behaviour. If GNU printf is broken, non POSIX or SuS compliant, then
submit a bug report. The shellutils developers care about standard
compliance, I've submitted such bug reports in the past.

    Bye :)
    Raúl


^ permalink raw reply	[relevance 10%]

* Re: printf and POSIX compliance
  2003-02-04 15:44 10% printf and POSIX compliance Stephane CHAZELAS
  2003-02-04 18:26 10% ` DervishD
@ 2003-02-11  8:29  8% ` Oliver Kiddle
  1 sibling, 0 replies; 200+ results
From: Oliver Kiddle @ 2003-02-11  8:29 UTC (permalink / raw)
  To: Stephane CHAZELAS; +Cc: zsh-workers

On 4 Feb, you wrote:
> Hello all, and thank you for the very good job
> 
> I read at
> http://www.opengroup.org/onlinepubs/007904975/utilities/printf.html
> that, according to POSIX:
> 
> 3- In addition to the escape sequences shown in the Base
>    Definitions volume of IEEE Std 1003.1-2001, Chapter 5, File
>    Format Notation ( '\\' , '\a' , '\b' , '\f' , '\n' , '\r' ,
>    '\t' , '\v' ), "\ddd" , where ddd is a one, two, or
>    three-digit octal number, shall be written as a byte with the
>    numeric value specified by the octal number.
> 
> So
> 
> printf '\377\0377' | od -c
> 
> should return:
> 0000000 377 037   7
> 0000003

Okay, that's what printf(3) and ksh93's printf do.

> zsh man pages says that sames sequences as for echo are
> recognized. That's not what POSIX requires.

It uses the same code as for echo and $'...' and doing otherwise would
seem a bit unpleasant to me. That said, it seems to be what ksh93 does.
In ksh, $'...' and printf work that way while print does something
different.

Note also that the behaviour of \c should probably be to cancel further
output in printf but it isn't (again because I used the same function
as is used by echo).

It's an easy enough thing to change though. Should I? And what should
it do for print and for posix quotes?

Oliver

This e-mail and any attachment is for authorised use by the intended recipient(s) only.  It may contain proprietary material, confidential information and/or be subject to legal privilege.  It should not be copied, disclosed to, retained or used by, any other party.  If you are not an intended recipient then please promptly delete this e-mail and any attachment and all copies and inform the sender.  Thank you.


^ permalink raw reply	[relevance 8%]

* PATCH: unset -v (was Re: printf and POSIX compliance)
  2003-02-05 13:42  5%     ` Peter Stephenson
@ 2003-02-11 12:09  4%       ` Oliver Kiddle
  0 siblings, 0 replies; 200+ results
From: Oliver Kiddle @ 2003-02-11 12:09 UTC (permalink / raw)
  To: zsh-workers

On 5 Feb, Peter wrote:
> 
> The Austin Group which is revising the standard is steering it through
> IEEE, SUS and ISO procedures.  If I've followed the developments
> correctly, the 2002 version available at the Open Group site is now
> approved by all relevant bodies, with identical wording.
> 
> Unfortunately we're a bit erratic at following it; nobody's really got
> the time to keep track of it in detail.

It seems from it that one of the things it defines is that unset should
take a -v flag to specify that variables are being unset. If neither -f
nor -v is specified, it unsets variables. bash breaks this last
condition (probably because older versions of the standard didn't define
that) so unset -v is used a bit in bash scripts.
Anyway, all we need to do is ignore any -v option to unset. Unless anyone
says otherwise I'll commit this to 4.0 too because it is sufficiently tiny.

Oliver

diff -ur zsh-4.1-20030211/Doc/Zsh/builtins.yo zsh.new/Doc/Zsh/builtins.yo
--- zsh-4.1-20030211/Doc/Zsh/builtins.yo	Fri Feb  7 18:05:39 2003
+++ zsh.new/Doc/Zsh/builtins.yo	Tue Feb 11 12:04:41 2003
@@ -1391,7 +1391,7 @@
 )
 findex(unset)
 cindex(parameters, unsetting)
-item(tt(unset) [ tt(-fm) ] var(name) ...)(
+item(tt(unset) [ tt(-fmv) ] var(name) ...)(
 Each named parameter is unset.
 Local parameters remain local even if unset; they appear unset within scope,
 but the previous value will still reappear when the scope ends.
@@ -1404,6 +1404,9 @@
 be quoted) and all parameters with matching names are unset.  Note that this
 cannot be used when unsetting associative array elements, as the subscript
 will be treated as part of the pattern.
+
+The tt(-v) flag specifies that var(name) refers to parameters. This is the
+default behaviour.
 
 tt(unset -f) is equivalent to tt(unfunction).
 )
diff -ur zsh-4.1-20030211/Src/builtin.c zsh.new/Src/builtin.c
--- zsh-4.1-20030211/Src/builtin.c	Fri Feb  7 18:05:41 2003
+++ zsh.new/Src/builtin.c	Tue Feb 11 11:53:43 2003
@@ -126,7 +126,7 @@
     BUILTIN("unalias", 0, bin_unhash, 1, -1, 0, "m", "a"),
     BUILTIN("unfunction", 0, bin_unhash, 1, -1, 0, "m", "f"),
     BUILTIN("unhash", 0, bin_unhash, 1, -1, 0, "adfm", NULL),
-    BUILTIN("unset", BINF_PSPECIAL, bin_unset, 1, -1, 0, "fm", NULL),
+    BUILTIN("unset", BINF_PSPECIAL, bin_unset, 1, -1, 0, "fmv", NULL),
     BUILTIN("unsetopt", 0, bin_setopt, 0, -1, BIN_UNSETOPT, NULL, NULL),
     BUILTIN("wait", 0, bin_fg, 0, -1, BIN_WAIT, NULL, NULL),
     BUILTIN("whence", 0, bin_whence, 0, -1, 0, "acmpvfsw", NULL),

This e-mail and any attachment is for authorised use by the intended recipient(s) only.  It may contain proprietary material, confidential information and/or be subject to legal privilege.  It should not be copied, disclosed to, retained or used by, any other party.  If you are not an intended recipient then please promptly delete this e-mail and any attachment and all copies and inform the sender.  Thank you.


^ permalink raw reply	[relevance 4%]

* PATCH: usage of test(1) in zshconfig.ac
@ 2003-02-26 18:09  7% Clint Adams
  0 siblings, 0 replies; 200+ results
From: Clint Adams @ 2003-02-26 18:09 UTC (permalink / raw)
  To: zsh-workers

Things like "test $ac_cv_func_tcsetpgrp=yes" will always evaluate to
true, so this patch adds the necessary spaces around the equals sign.
I also went and replaced occurences of -a as a binary operator with the
more portable "&& test".

Index: zshconfig.ac
===================================================================
RCS file: /cvsroot/zsh/zsh/zshconfig.ac,v
retrieving revision 1.31
diff -u -r1.31 zshconfig.ac
--- zshconfig.ac	14 Feb 2003 15:56:35 -0000	1.31
+++ zshconfig.ac	26 Feb 2003 18:06:21 -0000
@@ -235,8 +235,8 @@
 AC_ARG_ENABLE(function-subdirs,
 [  --enable-function-subdirs  install functions in subdirectories])
 
-if test "x${enable_function_subdirs}" != x -a \
-  "x${enable_function_subdirs}" != xno; then
+if test "x${enable_function_subdirs}" != x &&
+  test "x${enable_function_subdirs}" != xno; then
   FUNCTIONS_SUBDIRS=yes
 else
   FUNCTIONS_SUBDIRS=no
@@ -279,7 +279,7 @@
 dnl Gross hack for ReliantUNIX - GCC does not understand getconf options
 dnl For now just disable LFS in this case
 dnl Any takers?
-  if test "$host" = mips-sni-sysv4 -a -n "$GCC"; then
+  if test "$host" = mips-sni-sysv4 && test -n "$GCC"; then
     : 
   else
     zsh_LARGE_FILE_SUPPORT
@@ -501,7 +501,7 @@
 fi
 
 dnl Some SCO systems cannot include both sys/time.h and sys/select.h
-if test $ac_cv_header_sys_time_h = yes -a $ac_cv_header_sys_select_h = yes; then
+if test $ac_cv_header_sys_time_h = yes && test $ac_cv_header_sys_select_h = yes; then
   AC_CACHE_CHECK(for conflicts in sys/time.h and sys/select.h,
   zsh_cv_header_time_h_select_h_conflicts,
   [AC_TRY_COMPILE([#include <sys/time.h>
@@ -753,7 +753,7 @@
   if test $lfs != no -o $zsh_cv_off_t_is_64_bit = yes \
   -o $zsh_cv_ino_t_is_64_bit = yes; then
     AC_CACHE_CHECK(if compiler has a 64 bit type, zsh_cv_64_bit_type,
-    [if test $lfs != yes -a $lfs != no; then
+    [if test $lfs != yes && test $lfs != no; then
       zsh_64_BIT_TYPE(${lfs}, zsh_cv_64_bit_type, force)
      else
        zsh_64_BIT_TYPE(long long, zsh_cv_64_bit_type)
@@ -766,8 +766,8 @@
        dnl As a last resort, if we know off_t has 64 bits, use that as
        dnl the 64-bit integer type.  I don't dare try ino_t since there's
        dnl probably nothing to stop that being unsigned.
-       if test "$zsh_cv_64_bit_type" = no -a \
-       "$zsh_cv_off_t_is_64_bit" = yes; then
+       if test "$zsh_cv_64_bit_type" = no &&
+          test "$zsh_cv_off_t_is_64_bit" = yes; then
          zsh_64_BIT_TYPE(off_t, zsh_cv_64_bit_type)
        fi
      fi])
@@ -1051,13 +1051,13 @@
 dnl -------------
 dnl What style of signal do you have (POSIX, BSD, or SYSV)?
 AC_MSG_CHECKING(what style of signals to use)
-if test $ac_cv_func_sigaction = yes -a $ac_cv_func_sigprocmask = yes; then
+if test $ac_cv_func_sigaction = yes && test $ac_cv_func_sigprocmask = yes; then
   signals_style=POSIX_SIGNALS
   AC_DEFINE(POSIX_SIGNALS)
-elif test $ac_cv_func_sigblock = yes -a $ac_cv_func_sigsetmask = yes; then
+elif test $ac_cv_func_sigblock = yes && test $ac_cv_func_sigsetmask = yes; then
   signals_style=BSD_SIGNALS
   AC_DEFINE(BSD_SIGNALS)
-elif test $ac_cv_func_sighold = yes -a $ac_cv_func_sigrelse = yes; then
+elif test $ac_cv_func_sighold = yes && test $ac_cv_func_sigrelse = yes; then
   signals_style=SYSV_SIGNALS
   AC_DEFINE(SYSV_SIGNALS)
 else
@@ -1132,7 +1132,7 @@
   break
 done
 zsh_cv_path_rlimit_h=$RESOURCE_H
-if test $RESOURCE_H = "/dev/null" -a $ac_cv_func_getrlimit = yes; then
+if test $RESOURCE_H = "/dev/null" && test $ac_cv_func_getrlimit = yes; then
   AC_MSG_WARN(RLIMIT MACROS NOT FOUND:  please report to developers)
 fi])
 RLIMITS_INC_H=$zsh_cv_path_rlimit_h
@@ -1451,7 +1451,7 @@
 dnl if POSIX, test for working sigsuspend().
 dnl for instance, BeOS R4.51 is broken.
 dnl -----------
-if test $signals_style=POSIX_SIGNALS; then
+if test $signals_style = POSIX_SIGNALS; then
     AC_CACHE_CHECK(if POSIX sigsuspend() works,
     zsh_cv_sys_sigsuspend,
     [AC_TRY_RUN([
@@ -1492,7 +1492,7 @@
 dnl if found tcsetpgrp, test to see if it actually works
 dnl for instance, BeOS R4.51 does not support it yet
 dnl -----------
-if test -t 0 -a $ac_cv_func_tcsetpgrp=yes; then
+if test -t 0 && test $ac_cv_func_tcsetpgrp = yes; then
     AC_CACHE_CHECK(if tcsetpgrp() actually works,
     zsh_cv_sys_tcsetpgrp,
     [AC_TRY_RUN([
@@ -1517,7 +1517,7 @@
 dnl for instance, BeOS R4.51 is not multiuser yet, and fakes getpwnam()
 dnl test by looking up two usernames that shouldn't succeed, and compare entry
 dnl -----------
-if test $ac_cv_func_getpwnam=yes; then
+if test $ac_cv_func_getpwnam = yes; then
     AC_CACHE_CHECK(if getpwnam() is faked,
     zsh_cv_sys_getpwnam_faked,
     [AC_TRY_RUN([
@@ -1946,7 +1946,7 @@
   load=
   functions=
   . ${srcdir}/$modfile
-  if test x$name != x -a x"$link" != x; then
+  if test x$name != x && test x"$link" != x; then
     case "$userlist" in
     *" $name "*) # not autogenerated, keep original
                 grep "^name=$name " ${CONFIG_MODULES}.old


^ permalink raw reply	[relevance 7%]

* Re: LC_NUMERIC=fr_FR and floating point arithmetics
  @ 2003-03-10  8:58  8% ` Oliver Kiddle
    0 siblings, 1 reply; 200+ results
From: Oliver Kiddle @ 2003-03-10  8:58 UTC (permalink / raw)
  To: Stephane CHAZELAS; +Cc: Zsh hackers list

On 24 Feb, Stephane CHAZELAS wrote:
> $ LC_NUMERIC=fr_FR ksh93 -c 'float a=1; echo $(( a / 3 ))'
> 0,333333333333
> $ LC_NUMERIC=fr_FR zsh -c 'float a=1; echo $(( a / 3 ))'
> 0,33333333333333331.
>
> zsh seems to assume that "." is the decimal separator which is
> not correct in a french locale.
> 
> I agree this is confusing. A ksh93 script such as
> echo $(( 1. / 3 ))
>
> won't work under french locale.
> (must be echo $(( 1, / 3 )) )

Which is worse in my opinion. $(( 1.1 )) really ought to be interpreted
as a 1 point 1 regardless of locale - it is otherwise impossible to use
decimals in portable shell scripts.

If we didn't have backward and ksh compatibility to consider, I would
be inclined to say that $a for floats and $(( ... )) should always use
the C locale and anyone wanting locale specific output could use printf
(see below) (implementing this is easy; just save the LC_NUMERIC locale
in convfloat()).

But keeping locale handling in output means that scalar parameters
can't be reused in a calculation. And making math evaluation accept
either `.' or whatever the locale dictates is not easy when you
consider that a comma in math evaluation is used as a separator:
  (( a=1, 3.4 ))
Also, because we allow this:
  % a='3 + 4'
  % echo $(( a ))
  7
you can't just interpret the comma in a parameter expansion. So I can't
think of any solution except limiting math evaluation to the C locale.

So what can we do?

I did a grep for mon_decimal_point in /usr/share/i18n/locales to see
if any other characters are used as decimal separators. It indicates
that Portugal use `$' as their decimal separator. Seems weird. Apart
from that it is , or . for the rest of the world except Burkina Faso
who apparently use something outside the normal ASCII range.

Currently, a bug prevents locale handling for printf (on at least some
platforms). The bug causing this is in math.c where it does:
	prev_locale = setlocale(LC_NUMERIC, NULL);
	setlocale(LC_NUMERIC, "POSIX");
The second setlocale call clobbers prev_locale - we have to use
dupstring(). The patch fixes this.

Oliver

diff -ur zsh-latest/Src/math.c localeprob2/Src/math.c
--- zsh-latest/Src/math.c	2002-12-19 10:58:19.000000000 +0000
+++ localeprob2/Src/math.c	2003-03-09 01:13:18.000000000 +0000
@@ -399,12 +399,12 @@
 		    /* it's a float */
 		    yyval.type = MN_FLOAT;
 #ifdef USE_LOCALE
-		    prev_locale = setlocale(LC_NUMERIC, NULL);
+		    prev_locale = dupstring(setlocale(LC_NUMERIC, NULL));
 		    setlocale(LC_NUMERIC, "POSIX");
 #endif
 		    yyval.u.d = strtod(ptr, &nptr);
 #ifdef USE_LOCALE
-		    setlocale(LC_NUMERIC, prev_locale);
+		    if (prev_locale) setlocale(LC_NUMERIC, prev_locale);
 #endif
 		    if (ptr == nptr || *nptr == '.') {
 			zerr("bad floating point constant", NULL, 0);


^ permalink raw reply	[relevance 8%]

* Re: LC_NUMERIC=fr_FR and floating point arithmetics
  @ 2003-03-11 10:35  5%     ` Oliver Kiddle
  2003-03-12  3:32  0%       ` Philippe Troin
  0 siblings, 1 reply; 200+ results
From: Oliver Kiddle @ 2003-03-11 10:35 UTC (permalink / raw)
  To: Zsh workers

Zefram wrote:
> 
> Numeric output should by default be in the input format (C locale)
> so that it can be reused in the expected manner.

Okay, this patch makes it do that.

> If printf is not
> sufficient for rendering numbers in human format, we could add an
> output-using-locale flag to the output format specification syntax of
> $(()) -- there's already syntax to select the radix to use on output.

It would possibly be more useful for $a than $(()) because that is where
all the typeset -F/-E stuff applies. I'll wait and see if there is
demand and if so, a parameter expansion flag could also be added (L and
l are gone along with most of the rest of the alphabet so we'd need to
think of a suitable free letter). If ksh keeps it's current behaviour, a
KSH_something option could perhaps be used.

I consider this patch a bug fix which would imply that I should apply it
to 4.0 but 4.0 doesn't have printf and hence has no way to output floats
in the current locale. I could backport printf, leave the patch out of
4.0 or do something else. Any thoughts?

Note also, that there is no way to input numbers with locale
conventions. If there is demand for a way to do this, we could perhaps
add an option to read so that typeset -F num; read num would do this but
lose math evaluation. Or perhaps add the facility somewhere else.

Oliver

Index: Src/params.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/params.c,v
retrieving revision 1.69
diff -u -r1.69 params.c
--- Src/params.c	31 Oct 2002 18:32:40 -0000	1.69
+++ Src/params.c	11 Mar 2003 10:00:10 -0000
@@ -3417,6 +3417,7 @@
 convfloat(double dval, int digits, int flags, FILE *fout)
 {
     char fmt[] = "%.*e";
+    char *prev_locale, *ret;
 
     /*
      * The difficulty with the buffer size is that a %f conversion
@@ -3451,16 +3452,24 @@
 	    digits--;
 	}
     }
+#ifdef USE_LOCALE
+    prev_locale = dupstring(setlocale(LC_NUMERIC, NULL));
+    setlocale(LC_NUMERIC, "POSIX");
+#endif
     if (fout) {
 	fprintf(fout, fmt, digits, dval);
-	return NULL;
+	ret = NULL;
     } else {
 	VARARR(char, buf, 512 + digits);
 	sprintf(buf, fmt, digits, dval);
 	if (!strchr(buf, 'e') && !strchr(buf, '.'))
 	    strcat(buf, ".");
-	return dupstring(buf);
+	ret = dupstring(buf);
     }
+#ifdef USE_LOCALE
+    if (prev_locale) setlocale(LC_NUMERIC, prev_locale);
+#endif
+    return ret;
 }
 
 /* Start a parameter scope */


^ permalink raw reply	[relevance 5%]

* Re: LC_NUMERIC=fr_FR and floating point arithmetics
  2003-03-11 10:35  5%     ` Oliver Kiddle
@ 2003-03-12  3:32  0%       ` Philippe Troin
  0 siblings, 0 replies; 200+ results
From: Philippe Troin @ 2003-03-12  3:32 UTC (permalink / raw)
  To: Oliver Kiddle; +Cc: Zsh workers

Oliver Kiddle <okiddle@yahoo.co.uk> writes:

> Index: Src/params.c
> ===================================================================
> RCS file: /cvsroot/zsh/zsh/Src/params.c,v
> retrieving revision 1.69
> diff -u -r1.69 params.c
> --- Src/params.c	31 Oct 2002 18:32:40 -0000	1.69
> +++ Src/params.c	11 Mar 2003 10:00:10 -0000
> @@ -3417,6 +3417,7 @@
>  convfloat(double dval, int digits, int flags, FILE *fout)
>  {
>      char fmt[] = "%.*e";
> +    char *prev_locale, *ret;
>  
>      /*
>       * The difficulty with the buffer size is that a %f conversion
> @@ -3451,16 +3452,24 @@
>  	    digits--;
>  	}
>      }
> +#ifdef USE_LOCALE
> +    prev_locale = dupstring(setlocale(LC_NUMERIC, NULL));
> +    setlocale(LC_NUMERIC, "POSIX");
> +#endif
>      if (fout) {
>  	fprintf(fout, fmt, digits, dval);
> -	return NULL;
> +	ret = NULL;
>      } else {
>  	VARARR(char, buf, 512 + digits);
>  	sprintf(buf, fmt, digits, dval);
>  	if (!strchr(buf, 'e') && !strchr(buf, '.'))
>  	    strcat(buf, ".");
> -	return dupstring(buf);
> +	ret = dupstring(buf);
>      }
> +#ifdef USE_LOCALE
> +    if (prev_locale) setlocale(LC_NUMERIC, prev_locale);
> +#endif
> +    return ret;
>  }
>  
>  /* Start a parameter scope */

Aren't you leaking a copy of the current locale (via dupstring())
every time?

Phil.


^ permalink raw reply	[relevance 0%]

* bug in read builtin and Re: PATCH: extra loop tests
  @ 2003-03-26 17:24  3% ` Oliver Kiddle
  0 siblings, 0 replies; 200+ results
From: Oliver Kiddle @ 2003-03-26 17:24 UTC (permalink / raw)
  To: Zsh hackers list

Peter wrote:
> Tests for the enhanced `for' syntax as well as `select' which is now

I've just added a few tests too. In adding tests for read (to cover the
new read -d), I found that read -t 1 -p causes a seg fault:

#0  0x080bb323 in read_poll (fd=-1, readchar=0xbffff0fc, polltty=0, 
    microseconds=1000000) at utils.c:1398
#1  0x0805eec7 in bin_read (name=0x40020248 "read", args=0xbffff170, 
    ops=0xbffff1b0, func=0) at builtin.c:4215
#2  0x08052545 in execbuiltin (args=0x40020210, bn=0x80cbab4) at builtin.c:440

> Extra tests gratefully received, as Felix reminded us, particularly for
> interactive stuff (zle, completion) which I will not be attempting
> myself.

I've not attempted anything for interactive stuff either I'm afraid.
I've also not done anything for \u or the math locale problem because it
would be dependant on the local environment and the test system sets
LANG=C anyway.

> When we finally get the multiple defined limits problem fixed, I will
> produce a test version of 4.1.1.  If tests continue to trickle in, so
> much the better.

Also one of 17797 or 17820 should be committed before a release. I don't
have access to cygwin so can't test 17820.

There have been enough changes to warrant a 4.0.7 before too long.
Any suggestions on stuff which can be merged back from 4.1?

Oliver

Index: Test/.distfiles
===================================================================
RCS file: /cvsroot/zsh/zsh/Test/.distfiles,v
retrieving revision 1.14
diff -u -r1.14 .distfiles
--- Test/.distfiles	17 Dec 2001 17:17:38 -0000	1.14
+++ Test/.distfiles	26 Mar 2003 17:05:03 -0000
@@ -8,6 +8,6 @@
 A04redirect.ztst     D01prompt.ztst       V02zregexparse.ztst
 A05execution.ztst    D02glob.ztst         Y01completion.ztst
 D06subscript.ztst    V01zmodload.ztst     E01options.ztst
-B02typeset.ztst      B03print.ztst        A06assign.ztst
+B02typeset.ztst      B03print.ztst        A06assign.ztst       B04read.ztst
 README
 '
Index: Test/B03print.ztst
===================================================================
RCS file: /cvsroot/zsh/zsh/Test/B03print.ztst,v
retrieving revision 1.5
diff -u -r1.5 B03print.ztst
--- Test/B03print.ztst	27 Aug 2002 21:11:44 -0000	1.5
+++ Test/B03print.ztst	26 Mar 2003 17:05:03 -0000
@@ -199,3 +199,7 @@
 0:argument specified for precision only
 >2
 >000
+
+ printf -- '%s\n' str
+0:initial `--' ignored to satisfy POSIX
+>str
Index: Test/B04read.ztst
===================================================================
RCS file: Test/B04read.ztst
diff -N Test/B04read.ztst
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ Test/B04read.ztst	26 Mar 2003 17:05:03 -0000
@@ -0,0 +1,65 @@
+# Tests for the read builtin
+
+# Tested elsewhere:
+#  reading from a coprocess  A01grammar, A04redirect
+
+# Not tested:
+#  -c/-l/-n (options for compctl functions)
+#  -q/-s (needs a tty)
+
+%test
+
+ read <<<'hello world'
+ print $REPLY
+0:basic read command
+>hello world
+
+ read -A <<<'hello world'
+ print $reply[2]
+0:array read
+>world
+
+ read -k3 -u0 <<<foo:bar
+ print $REPLY
+0:read specified number of chars
+>foo
+
+ read -d: <<<foo:bar
+ print $REPLY
+0:read up to delimiter
+>foo
+
+ print foo:bar|IFS=: read -A
+ print $reply
+0:use different, IFS separator to array
+>foo bar
+
+ print -z hello world; read -z
+ print $REPLY
+0:read from editor buffer stack
+>hello world
+
+ unset REPLY
+ read -E <<<hello
+ print $REPLY
+0:read with echoing and assigning
+>hello
+>hello
+
+ unset REPLY
+ read -e <<<hello
+ print $REPLY
+0:read with echoing but assigning disabled
+>hello
+>
+
+ read -e -t <<<hello
+0:read with test first
+>hello
+
+ SECONDS=0
+ read -e -t 5 <<<hello
+ print $SECONDS
+0:read with timeout (no waiting should occur)
+>hello
+>0
Index: Test/C01arith.ztst
===================================================================
RCS file: /cvsroot/zsh/zsh/Test/C01arith.ztst,v
retrieving revision 1.5
diff -u -r1.5 C01arith.ztst
--- Test/C01arith.ztst	23 Jan 2002 16:28:17 -0000	1.5
+++ Test/C01arith.ztst	26 Mar 2003 17:05:03 -0000
@@ -98,3 +98,7 @@
   print $x
 0:assigning to scalar which contains non-math string
 >32
+
+  print $(( ))
+0:empty math parse e.g. $(( )) acts like a zero
+>0
Index: Test/D02glob.ztst
===================================================================
RCS file: /cvsroot/zsh/zsh/Test/D02glob.ztst,v
retrieving revision 1.1
diff -u -r1.1 D02glob.ztst
--- Test/D02glob.ztst	2 Apr 2001 12:33:33 -0000	1.1
+++ Test/D02glob.ztst	26 Mar 2003 17:05:03 -0000
@@ -16,7 +16,7 @@
     setopt nonullglob nomatch
     print glob.tmp/**/*~(.)#
   }
-
+  
 %test
 
   globtest globtests
@@ -265,3 +265,28 @@
 0:exclusions regression test
 >
 >glob.tmp/a glob.tmp/b glob.tmp/c glob.tmp/dir1 glob.tmp/dir1/a glob.tmp/dir1/b glob.tmp/dir1/c glob.tmp/dir2 glob.tmp/dir2/a glob.tmp/dir2/b glob.tmp/dir2/c
+
+ print glob.tmp/*(/)
+0:Just directories
+>glob.tmp/dir1 glob.tmp/dir2
+
+ print glob.tmp/*(.)
+0:Just files
+>glob.tmp/a glob.tmp/b glob.tmp/c
+
+ print glob.tmp/*(.e^'reply=( glob.tmp/*/${REPLY:t} )'^:t)
+0:Globbing used recursively (inside e glob qualifier)
+>a a b b c c
+
+ print glob.tmp/**/(:h) 
+0:Head modifier
+>. glob.tmp glob.tmp
+
+ print glob.tmp(:r)
+0:Remove extension modifier
+>glob
+
+ print glob.tmp/*(:s/./_/)
+0:Substitute modifier
+>glob_tmp/a glob_tmp/b glob_tmp/c glob_tmp/dir1 glob_tmp/dir2
+


^ permalink raw reply	[relevance 3%]

* PATCH: distribution documentation files
@ 2003-04-04 13:06  2% Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2003-04-04 13:06 UTC (permalink / raw)
  To: Zsh hackers list

Patches for information files in the distribution for 4.1.  I couldn't
think of any obvious incompatibilities with 4.0, can anyone?

The main documentation probably needs a read through again.  In fact, I
suspect the completion documentation still needs a write through.


Index: INSTALL
===================================================================
RCS file: /cvsroot/zsh/zsh/INSTALL,v
retrieving revision 1.11
diff -u -r1.11 INSTALL
--- INSTALL	31 May 2001 11:12:59 -0000	1.11
+++ INSTALL	4 Apr 2003 13:02:39 -0000
@@ -181,7 +181,7 @@
 install the zsh binary, execute the command:
     make install.bin
 Any previous copy of zsh will be renamed "zsh.old"
-                   
+
 To install the dynamically-loadable modules, execute the command:
     make install.modules
 Note that this is required for the shell to operate properly if dynamic
Index: README
===================================================================
RCS file: /cvsroot/zsh/zsh/README,v
retrieving revision 1.9
diff -u -r1.9 README
--- README	28 Jun 2001 17:02:57 -0000	1.9
+++ README	4 Apr 2003 13:02:39 -0000
@@ -5,7 +5,9 @@
 Version
 -------
 
-This is zsh version 4.0.  This is a stable release.
+This is zsh version 4.1.  This is a development release.  However, it has
+been in use over a long period by many people and it is believed to be
+fairly stable.
 
 Installing Zsh
 --------------
@@ -24,38 +26,14 @@
 Possible incompatibilities
 ---------------------------
 
-Some particular differences you may notice between version 3.0 and 4.0
-(mostly based on 3.0.8; there are other differences from earlier versions):
+Some particular differences you may notice since version 4.0:
 
-  o  The options ALWAYS_LAST_PROMPT (return to the line you were
-     editing after displaying completion lists) and LIST_AMBIGUOUS
-     (don't do AUTO_LIST if there was an unambiguous prefix that could be
-     inserted, i.e. only list if it is ambiguous what to insert next) are
-     now set by default.  This is in response to complaints that too many
-     zsh features are never noticed by many users.  To turn them off,
-     just put `unsetopt alwayslastprompt listambiguous' in your
-     .zshrc file.
-  o  The editor commands history-search-{forward,backward} are implemented
-     slightly differently, as are {up,down}-line-or-search.  You may
-     well not notice this, however.
-  o  Cursor keys are now usually bound in both vi command and insert
-     mode.  In the latter case, this may result in a slight delay after
-     hitting ESCAPE to exit insert mode.  Purists who object to this can
-     unbind the appropriate key sequences (see zshzle(1)).  Most beginning
-     users of zsh apparently find the current behaviour preferable.
-  o  History file format is incompatible with versions older than 3.0.6,
-     but this should only affect people who try to share history files
-     between the two versions -- 4.0 can read the old format, 3.0.6 and
-     later can read the new format.  Just beware of INC_APPEND_HISTORY,
-     which could conceivably mix the two.
-  o  Default compctl completions have been removed for some builtin
-     commands.  Either use the new compinit-derived system, use the
-     improved compctls from Misc/compctl-examples, or restore these
-     equivalents yourself:
-	 compctl -b bindkey
-	 compctl -v export typeset vared
-	 compctl -o setopt unsetopt
-         compctl -c which
+The bash-compatibility zle functions described in the zshcontrib manual
+page have been removed as a more configurable set of editing widgets for
+dealing with words have been added.  The following code in .zshrc will set
+up for bash-style word handling:
+  autoload -U select-word-style
+  select-word-style bash
 
 Documentation
 -------------
Index: Etc/CONTRIBUTORS
===================================================================
RCS file: /cvsroot/zsh/zsh/Etc/CONTRIBUTORS,v
retrieving revision 1.9
diff -u -r1.9 CONTRIBUTORS
--- Etc/CONTRIBUTORS	12 Mar 2001 17:39:24 -0000	1.9
+++ Etc/CONTRIBUTORS	4 Apr 2003 13:02:39 -0000
@@ -15,6 +15,52 @@
 been unfairly omitted from this list please mail the current maintainer
 at <coordinator@zsh.org>.
 
+Version 4.1.1
+-------------
+
+Clint Adams <clint@zsh.org>: termcap/terminfo, completion, configuration,
+various modules, networking, prompts
+
+Andrej Borsenkow <bor@zsh.org>: configuration, completion functions, cygwin
+support
+
+Chmouel Bodjnah <chmouel@mandrakesoft.com>: Linux completion support
+
+Wayne Davison <wayned@users.sourceforge.net>: shell history mechanism,
+arithmetic
+
+Zvi Har'El <rl@math.technion.ac.il>: completion functions
+
+Doug Kearns  <djkea2@mugca.its.monash.edu.au>: completion functions
+
+Oliver Kiddle <opk@zsh.org>: builtins, completion, parameters, prompts,
+standards support, tests
+
+Andrew Main <zefram@zsh.org>: zle keymaps, games
+
+Akinori Musha: BSD completion support
+
+Felix Rosencrantz <f_rosenkrantz@yahoo.com>: completion, zle
+
+Bart Schaefer <schaefer@zsh.org>: configuration, parameters, prompts,
+signals, syntax, tests, functions, sanity checking
+
+Adam Spiers <adam@spiers.net>: completion and other functions
+
+Peter Stephenson <pws@zsh.org>: configuration, zle, networking, syntax,
+completion
+
+Tanaka Akira <akr@zsh.org>: completion functions
+
+Philippe Troin <phil@fifi.org>: signals, process groups.
+
+Geoff Wing <gcw@zsh.org>: archiving and distribution network, line editor
+display, configuration
+
+Sven Wischnowsky <wischnow@zsh.org>: internal completion mechanism and
+low-level functions, line editor internals, syntax, wordcode mechanism,
+
+
 Version 4.0.1
 -------------
 
Index: Etc/NEWS
===================================================================
RCS file: /cvsroot/zsh/zsh/Etc/NEWS,v
retrieving revision 1.7
diff -u -r1.7 NEWS
--- Etc/NEWS	4 Mar 2001 18:37:03 -0000	1.7
+++ Etc/NEWS	4 Apr 2003 13:02:39 -0000
@@ -1,7 +1,75 @@
 -------------------------------------
 CHANGES FROM PREVIOUS VERSIONS OF ZSH
 -------------------------------------
-				     
+
+New features between zsh versions 4.0 and 4.1
+---------------------------------------------
+
+Configuration:
+- upgraded to use autoconf post-2.50
+- improved compatibility with other shells through shell options,
+  builtin arguments and improved builtin option parsing
+
+Syntax and builtins:
+- new printf builtin
+- `+=' to append to parameters which works for scalars, arrays and (with
+  pairs) associative arrays.
+- enhanced multiple parameter `for' loops:
+    for key value in key1 value1 key2 value2 ...
+  maintaining full compatibility with POSIX syntax
+
+Add-on modules and functions:
+- zsh/net/tcp module provides builtin interface to TCP through ztcp
+  builtin.  Function suite for interactive and script use with expect-style
+  pattern matching.
+- zsh/net/socket module provides zsocket builtin.
+- zcalc calculator function with full line editing.
+- builtin interface to pcre library
+- zsh/zselect module provides zselect builtin as interface to select
+  system call
+
+Completion system:
+- general improvements to command and context support, low-level functions,
+  display code.
+- in verbose mode, matches with the same description are grouped
+- highly configurable completions for values of specific parameters,
+  specific redirections for specific commands
+- support for bash completion functions (typically zsh native functions are
+  more powerful where available)
+- New completions provided for (some of these may be in later 4.0
+  releases):  valgrind, tidy, texinfo, infocmp, Java classes, larch, limit,
+  locale parameters, netcat, mysqldiff, mt, lsof, elinks, ant, debchange
+  (dch), email addresses, file system types, Perforce, xsltproc.
+
+Line editor:
+- special parameters $PREDISPLAY, $POSTDISPLAY available in function
+  widgets to configure uneditable text (for narrowing)
+- recursive editing
+- supplied widgets read-from-minibuffer, replace-string use these features
+  (more intuitive prompting and argument reading than 4.0)
+- access to killed text vai $CUTBUFFER and $killring
+- supplied highly configurable word widgets forward-word-match etc., can
+  set what constitutes a word interactively or in startup script
+  (implement bash-style behaviour, replacing previous bash-* word widgets)
+- interface to increment search via $LASTSEARCH
+- better handling of keymaps in zle and widgets
+- better support for output from user-defined widgets while zle is active
+- tetris game which runs entirely in zle
+
+Local internal improvements:
+- disowned jobs are automatically restarted
+- line numbers in error messages and $PS4 output are more consistent
+- `=prog' expands only paths, no longer aliases for consistency
+- job display in prompts; `jobs' command output can be piped
+- prompts: new $RPROMPT2, %^, %y, enhanced %{, %}, %_.
+- rand48() function for better randomness in arithmetic
+  (if the corresponding math library function is present)
+- $SECONDS parameter can be made floating point via `typeset -F SECONDS'
+  for better accuracy
+- improvements to command line history mechanism
+- many bugfixes
+
+
 New features in zsh version 4.0.1
 ---------------------------------
 
-- 
Peter Stephenson <pws@csr.com>                  Software Engineer
CSR Ltd., Science Park, Milton Road,
Cambridge, CB4 0WH, UK                          Tel: +44 (0)1223 692070


**********************************************************************
The information transmitted is intended only for the person or
entity to which it is addressed and may contain confidential 
and/or privileged material. 
Any review, retransmission, dissemination or other use of, or
taking of any action in reliance upon, this information by 
persons or entities other than the intended recipient is 
prohibited.  
If you received this in error, please contact the sender and 
delete the material from any computer.
**********************************************************************


^ permalink raw reply	[relevance 2%]

* (Fwd) Re: getopts question
@ 2003-04-15 22:01  0% Bart Schaefer
  0 siblings, 0 replies; 200+ results
From: Bart Schaefer @ 2003-04-15 22:01 UTC (permalink / raw)
  To: zsh-workers

The latest zsh 4.1.x from CVS, and 4.0.x, both print "1" for the test script
quoted below.  Apparently they should print "2".  Commentary?

--- Forwarded mail from David Korn <dgk@research.att.com>

Date: Tue, 15 Apr 2003 16:03:11 -0400 (EDT)
From: David Korn <dgk@research.att.com>
To: shell@research.att.com
Subject: Re: getopts question

Subject: Re: getopts question
--------

> What is the following script supposed to print if invoked as `foo -a'?
> 
> --- snip ---
> #!/bin/sh
> 
> while getopts : f
> do
>     case "$f" in
>     \?)  break;;
>     esac
> done
> 
> echo $OPTIND
> --- snip ---
> 
> On every version of bash but the most recent it printed 1.
> 
> On ash and pdksh it prints 1.
> 
> Chet tells me that 2 is the right thing to print, since recent
> versions of att-ksh print 2 and the posix manual says so.
> 
> This breaks historical practice and is a pain to detect. What's
> the rationale behind the change? I would assume since getopts
> actually did not parse something successfully, it should not
> increment $OPTIND?
> 
> christos
> 

This came up in 1995 when shell conformance tests were being
run on ksh, and I was forced to change the behavior then.

I tried to argue that the behavior was not specified, but  they
disputed my claim.  I have included some e-mail below.
It looks like we are stuck with 2 being the correct behavior.

>> getopts:
>>
>> A while back I had mentioned that some VSC getopts tests failed because
>> OPTIND wasn't incremented after reading a non-option.  The test writers
>> disputed my argument (based on your mail) that the behavior wasn't well
>> specified for error conditions.  They cited POSIX 4.27.2, lines 4631-4633
>> among the evidence that the behavior is specified.  After several exchanges
>> I was convinced by their arguments and made the following change to
>> optget() in libast/misc/optget.c:

Lines 4631-4633 state.
"Each time it is invoked, the getopts utility shall place the value of
the next option in the shell variable specified by the name operand and
the index of the next argument to be processed in the shell variable
OPTIND."

David Korn
research!dgk
dgk@research.att.com
____________________________________________________________
To unsubscribe from this list, please send the following
two-line message to majordomo@research.att.com, in which
your_email_address should be replaced by the address you
used when you subscribed to the list:
unsubscribe shell your_email_address
end


---End of forwarded mail from David Korn <dgk@research.att.com>


^ permalink raw reply	[relevance 0%]

* PATCH: listing options with set -o/+o
@ 2003-05-14 10:14  2% Oliver Kiddle
  0 siblings, 0 replies; 200+ results
From: Oliver Kiddle @ 2003-05-14 10:14 UTC (permalink / raw)
  To: Zsh workers

The most recent POSIX shell definition, states that `set -o' should
"write the current settings of the options to standard output in an
unspecified format" and `set +o' should "write the current option
settings to standard output in a format that is suitable for reinput to
the shell as commands that achieve the same options settings"

There are a few possibilities with respect to the exact format the
output should take. I've done what I think is best but it is very easy
to change so feel free to make other suggestions.

For set -o, I've duplicated what you get from setopt with the
kshoptionprint option.

For set +o, it only prints those options that are in their non-default
state (which is what ksh93 and pdksh do but not bash).

Oliver

Index: Doc/Zsh/builtins.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Zsh/builtins.yo,v
retrieving revision 1.60
diff -u -r1.60 builtins.yo
--- Doc/Zsh/builtins.yo	3 Apr 2003 09:55:48 -0000	1.60
+++ Doc/Zsh/builtins.yo	14 May 2003 10:11:09 -0000
@@ -973,7 +973,7 @@
 cindex(parameters, setting array)
 cindex(array parameters, setting)
 pindex(KSH_ARRAYS, use of)
-item(tt(set) [ {tt(PLUS())|tt(-)}var(options) | {tt(PLUS())|tt(-)}tt(o) var(option_name) ] ... [ {tt(PLUS())|tt(-)}tt(A) [ var(name) ] ] [ var(arg) ... ])(
+item(tt(set) [ {tt(PLUS())|tt(-)}var(options) | {tt(PLUS())|tt(-)}tt(o) [ var(option_name) ] ] ... [ {tt(PLUS())|tt(-)}tt(A) [ var(name) ] ] [ var(arg) ... ])(
 Set the options for the shell and/or set the positional parameters, or
 declare and set an array.  If the tt(-s) option is given, it causes the
 specified arguments to be sorted before assigning them to the positional
@@ -981,7 +981,10 @@
 sort arguments in descending order.  For the meaning of the other flags, see
 ifzman(zmanref(zshoptions))\
 ifnzman(noderef(Options))\
-.  Flags may be specified by name using the tt(-o) option.
+.  Flags may be specified by name using the tt(-o) option. If no option
+name is supplied with tt(-o), the current option states are printed.
+With tt(PLUS()o) they are printed in a form that can be used as input
+to the shell.
 
 If the tt(-A) flag is specified, var(name) is set to an array containing
 the given var(arg)s; if no var(name) is specified, all arrays are printed
Index: Src/builtin.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/builtin.c,v
retrieving revision 1.100
diff -u -r1.100 builtin.c
--- Src/builtin.c	4 Apr 2003 16:47:02 -0000	1.100
+++ Src/builtin.c	14 May 2003 10:11:10 -0000
@@ -562,9 +562,9 @@
 		if (!*++*args)
 		    args++;
 		if (!*args) {
-		    zwarnnam(nam, "string expected after -o", NULL, 0);
+		    printoptionstates(hadplus);
 		    inittyptab();
-		    return 1;
+		    return 0;
 		}
 		if(!(optno = optlookup(*args)))
 		    zwarnnam(nam, "no such option: %s", *args, 0);
Index: Src/options.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/options.c,v
retrieving revision 1.14
diff -u -r1.14 options.c
--- Src/options.c	4 Dec 2002 13:57:51 -0000	1.14
+++ Src/options.c	14 May 2003 10:11:10 -0000
@@ -705,6 +705,33 @@
     return buf;
 }
 
+/* print options for set -o/+o */
+
+/**/
+void
+printoptionstates(int hadplus)
+{
+    scanhashtable(optiontab, 1, 0, OPT_ALIAS, printoptionnodestate, hadplus);
+}
+
+/**/
+static void
+printoptionnodestate(HashNode hn, int hadplus)
+{
+    Optname on = (Optname) hn;
+    int optno = on->optno;
+
+    if (hadplus) {
+        if (defset(on) != isset(optno))
+	    printf("set -o %s%s\n", defset(on) ? "no" : "", on->nam);
+    } else {
+	if (defset(on))
+	    printf("no%-19s %s\n", on->nam, isset(optno) ? "off" : "on");
+	else
+	    printf("%-21s %s\n", on->nam, isset(optno) ? "on" : "off");
+    }
+}
+
 /* Print option list for --help */
 
 /**/


^ permalink raw reply	[relevance 2%]

* Re: Bug#190948: Violation against The Single UNIX ? Specification, Version 2
  @ 2003-05-14 12:57  5%   ` Zefram
  2003-05-14 14:14  0%     ` Peter Stephenson
  0 siblings, 1 reply; 200+ results
From: Zefram @ 2003-05-14 12:57 UTC (permalink / raw)
  To: Peter Stephenson; +Cc: zsh-workers

Peter Stephenson wrote:
>Exactly, it's completely meaningless in zsh.  It is ridiculous for the
>standard to specify how the shell handles line editing,

Yet the standard does.  A vi command line editing mode is defined
by POSIX.  An Emacs mode would also have been in the standard, but the
committee couldn't reach agreement on the details.  (ISTR seeing RMS
named in the credits, I wonder what really went on.)  I think Zle's vi
mode behaviour is incompatible with POSIX on some points, but I really
don't care, because we did better there.

I think we should, at least, arrange that "set -o vi" in an interactive
zsh with zle loaded has the effect of "bindkey -v".  That perserves
the intent of the standard -- that "set -o vi" is the portable way for
a user to select vi-style command line editing -- and we don't have to
go ridiculously out of our way to achieve it.

I suggest having a hook to execute on "set -o vi"; Zle would hook this
when it is loaded, just like the other things it already hooks.  To be
nice to everyone that knows that, despite POSIX, interactive shells do
actually have an Emacs mode too, it would be good to hook "set -o emacs"
as well.  Only these two are required.

-zefram


^ permalink raw reply	[relevance 5%]

* Re: Bug#190948: Violation against The Single UNIX ? Specification, Version 2
  2003-05-14 12:57  5%   ` Bug#190948: Violation against The Single UNIX ? " Zefram
@ 2003-05-14 14:14  0%     ` Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2003-05-14 14:14 UTC (permalink / raw)
  To: zsh-workers

Zefram wrote:
> I suggest having a hook to execute on "set -o vi"; Zle would hook this
> when it is loaded, just like the other things it already hooks.  To be
> nice to everyone that knows that, despite POSIX, interactive shells do
> actually have an Emacs mode too, it would be good to hook "set -o emacs"
> as well.  Only these two are required.
> 
> -zefram

Gives us something to spit at.

Index: Doc/Zsh/options.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Zsh/options.yo,v
retrieving revision 1.27
diff -u -r1.27 options.yo
--- Doc/Zsh/options.yo	4 Dec 2002 13:57:52 -0000	1.27
+++ Doc/Zsh/options.yo	14 May 2003 14:10:42 -0000
@@ -367,6 +367,14 @@
 for examining spelling mistakes for the tt(CORRECT) and tt(CORRECT_ALL)
 options and the tt(spell-word) editor command.
 )
+pindex(EMACS)
+item(tt(EMACS))(
+If ZLE is loaded, turning on this option has the equivalent effect
+of `tt(bindkey -e)'.  In addition, the VI option is unset.
+Turning it off has no effect.  The option setting is
+not guaranteed to reflect the current keymap.  This option is
+provided for compatibility; tt(bindkey) is the recommended interface.
+)
 pindex(EQUALS)
 cindex(filename expansion, =)
 item(tt(EQUALS) <Z>)(
@@ -1192,6 +1200,14 @@
 cindex(input, tracing)
 item(tt(VERBOSE) (tt(-v), ksh: tt(-v)))(
 Print shell input lines as they are read.
+)
+pindex(VI)
+item(tt(VI))(
+If ZLE is loaded, turning on this option has the equivalent effect
+of `tt(bindkey -v)'.  In addition, the EMACS option is unset.
+Turning it off has no effect.  The option setting is
+not guaranteed to reflect the current keymap.  This option is
+provided for compatibility; tt(bindkey) is the recommended interface.
 )
 pindex(XTRACE)
 cindex(tracing, of commands)
Index: Src/init.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/init.c,v
retrieving revision 1.32
diff -u -r1.32 init.c
--- Src/init.c	23 Apr 2003 18:04:48 -0000	1.32
+++ Src/init.c	14 May 2003 14:10:42 -0000
@@ -1112,6 +1112,8 @@
 mod_export ZleVoidIntFn spaceinlineptr = noop_function_int;
 /**/
 mod_export ZleReadFn zlereadptr = autoload_zleread;
+/**/
+mod_export ZleVoidIntFn zlesetkeymapptr = noop_function_int;
 
 #else /* !LINKED_XMOD_zshQszle */
 
@@ -1124,6 +1126,7 @@
 mod_export ZleReadFn zlereadptr = fallback_zleread;
 # endif /* !UNLINKED_XMOD_zshQszle */
 
+mod_export ZleVoidIntFn zlesetkeymapptr = noop_function_int;
 #endif /* !LINKED_XMOD_zshQszle */
 
 /**/
Index: Src/options.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/options.c,v
retrieving revision 1.14
diff -u -r1.14 options.c
--- Src/options.c	4 Dec 2002 13:57:51 -0000	1.14
+++ Src/options.c	14 May 2003 14:10:42 -0000
@@ -107,6 +107,7 @@
 {NULL, "cshjunkiequotes",     OPT_EMULATE|OPT_CSH,	 CSHJUNKIEQUOTES},
 {NULL, "cshnullcmd",	      OPT_EMULATE|OPT_CSH,	 CSHNULLCMD},
 {NULL, "cshnullglob",	      OPT_EMULATE|OPT_CSH,	 CSHNULLGLOB},
+{NULL, "emacs",		      0,			 EMACSMODE},
 {NULL, "equals",	      OPT_EMULATE|OPT_ZSH,	 EQUALS},
 {NULL, "errexit",	      OPT_EMULATE,		 ERREXIT},
 {NULL, "errreturn",	      OPT_EMULATE,		 ERRRETURN},
@@ -204,6 +205,7 @@
 {NULL, "typesetsilent",	      OPT_EMULATE|OPT_BOURNE,	 TYPESETSILENT},
 {NULL, "unset",		      OPT_EMULATE|OPT_BSHELL,	 UNSET},
 {NULL, "verbose",	      0,			 VERBOSE},
+{NULL, "vi",		      0,			 VIMODE},
 {NULL, "xtrace",	      0,			 XTRACE},
 {NULL, "zle",		      OPT_SPECIAL,		 USEZLE},
 {NULL, "braceexpand",	      OPT_ALIAS, /* ksh/bash */	 -IGNOREBRACES},
@@ -679,6 +681,9 @@
     } else if(optno == CDABLEVARS && value) {
 	    return -1;
 #endif /* GETPWNAM_FAKED */
+    } else if ((optno == EMACSMODE || optno == VIMODE) && value) {
+	(*zlesetkeymapptr)(optno);
+	opts[(optno == EMACSMODE) ? VIMODE : EMACSMODE] = 0;
     }
     opts[optno] = value;
     if (optno == BANGHIST || optno == SHINSTDIN)
Index: Src/zsh.h
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/zsh.h,v
retrieving revision 1.46
diff -u -r1.46 zsh.h
--- Src/zsh.h	2 May 2003 10:25:33 -0000	1.46
+++ Src/zsh.h	14 May 2003 14:10:42 -0000
@@ -1418,6 +1418,7 @@
     CSHJUNKIEQUOTES,
     CSHNULLCMD,
     CSHNULLGLOB,
+    EMACSMODE,
     EQUALS,
     ERREXIT,
     ERRRETURN,
@@ -1515,6 +1516,7 @@
     TYPESETSILENT,
     UNSET,
     VERBOSE,
+    VIMODE,
     XTRACE,
     USEZLE,
     DVORAK,
Index: Src/Zle/zle_keymap.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/Zle/zle_keymap.c,v
retrieving revision 1.9
diff -u -r1.9 zle_keymap.c
--- Src/Zle/zle_keymap.c	27 Aug 2002 21:10:34 -0000	1.9
+++ Src/Zle/zle_keymap.c	14 May 2003 14:10:43 -0000
@@ -1370,3 +1370,13 @@
 	func = lastnamed;
     return func;
 }
+
+/**/
+mod_export void
+zlesetkeymap(int mode)
+{
+    Keymap km = openkeymap((mode == VIMODE) ? "viins" : "emacs");
+    if (!km)
+	return;
+    linkkeymap(km, "main", 0);
+}
Index: Src/Zle/zle_main.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/Zle/zle_main.c,v
retrieving revision 1.31
diff -u -r1.31 zle_main.c
--- Src/Zle/zle_main.c	17 Feb 2003 14:07:12 -0000	1.31
+++ Src/Zle/zle_main.c	14 May 2003 14:10:43 -0000
@@ -1363,6 +1363,7 @@
     refreshptr = zrefresh;
     spaceinlineptr = spaceinline;
     zlereadptr = zleread;
+    zlesetkeymapptr = zlesetkeymap;
 
     getkeyptr = getkey;
 
@@ -1446,6 +1447,7 @@
     refreshptr = noop_function;
     spaceinlineptr = noop_function_int;
     zlereadptr = fallback_zleread;
+    zlesetkeymapptr= noop_function_int;
 
     getkeyptr = NULL;
 
Index: Src/Zle/zle_vi.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/Zle/zle_vi.c,v
retrieving revision 1.1.1.9
diff -u -r1.1.1.9 zle_vi.c
--- Src/Zle/zle_vi.c	3 Jul 1999 13:18:04 -0000	1.1.1.9
+++ Src/Zle/zle_vi.c	14 May 2003 14:10:43 -0000
@@ -89,7 +89,7 @@
 startvitext(int im)
 {
     startvichange(im);
-    selectkeymap("main", 1);
+    selectkeymap("viins", 1);
     undoing = 0;
     viinsbegin = cs;
 }
@@ -98,7 +98,7 @@
 int
 vigetkey(void)
 {
-    Keymap mn = openkeymap("main");
+    Keymap mn = openkeymap("viins");
     char m[3], *str;
     Thingy cmd;
 
@@ -351,7 +351,7 @@
     if ((c2 = getvirange(1)) != -1) {
 	ret = 0;
 	forekill(c2 - cs, 0);
-	selectkeymap("main", 1);
+	selectkeymap("viins", 1);
 	viinsbegin = cs;
 	undoing = 0;
     }

-- 
Peter Stephenson <pws@csr.com>                  Software Engineer
CSR Ltd., Science Park, Milton Road,
Cambridge, CB4 0WH, UK                          Tel: +44 (0)1223 692070


**********************************************************************
The information transmitted is intended only for the person or
entity to which it is addressed and may contain confidential 
and/or privileged material. 
Any review, retransmission, dissemination or other use of, or
taking of any action in reliance upon, this information by 
persons or entities other than the intended recipient is 
prohibited.  
If you received this in error, please contact the sender and 
delete the material from any computer.
**********************************************************************


^ permalink raw reply	[relevance 0%]

* Re: local variable assignment and pipelines?
  @ 2003-07-21  9:59  3% ` Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2003-07-21  9:59 UTC (permalink / raw)
  To: zsh-workers

Dan Nelson wrote:
> a=1 | echo $a      -> prints "1" on zsh, prints nothing on ash,pdksh,bash

It's an inevitable but unintended side effect of the way some
substitutions are done by the shell before it forks.  The list given in
subst.c is this one.

/* Do substitutions before fork. These are:
 *  - Process substitution: <(...), >(...), =(...)
 *  - Parameter substitution
 *  - Command substitution
 * Followed by
 *  - Quote removal
 *  - Brace expansion
 *  - Tilde and equals substitution
 */

My guess is this is left undefined by POSIX etc.  The stuff on pipelines
is fairly terse, but there might be something elsewhere since I didn't
look all that closely.

Where you would not want this to happen, and it doesn't, is if the
assignment immediately precedes a command.

pws


**********************************************************************
The information transmitted is intended only for the person or
entity to which it is addressed and may contain confidential 
and/or privileged material. 
Any review, retransmission, dissemination or other use of, or
taking of any action in reliance upon, this information by 
persons or entities other than the intended recipient is 
prohibited.  
If you received this in error, please contact the sender and 
delete the material from any computer.
**********************************************************************


^ permalink raw reply	[relevance 3%]

* [PATCH] make clone try to acquire a controlling tty
@ 2003-07-23  1:12  2% Philippe Troin
  0 siblings, 0 replies; 200+ results
From: Philippe Troin @ 2003-07-23  1:12 UTC (permalink / raw)
  To: zsh-workers

[-- Attachment #1: Type: text/plain, Size: 2684 bytes --]

The enclosed patch makes clone try to acquire a controlling tty. This
makes clone more useful because it enables job control in cloned
sessions.

The patch applies on current cvs head.

Notes about the patch:

 - We don't call TIOCNOTTY if HAVE_SETSID: setsid() automatically
   detaches from the current controlling tty.

 - The logic for dup'ing the newly opened tty is changed for a better
   one.

 - Once the dup'ing of the newly opened tty is done, we try to acquire
   the newly opened tty as a controlling tty. We print a message if
   this fails.

 - We have to reset mypgrp to zero so that init_io() can get its job
   done correctly.

Notes about controlling ttys:

 - Due to the way job control works, it is impossible for a process to
   acquire a controlling tty if another process already acquired it
   since:

     * POSIX mandates that if a session leader dies, all the processes
       in the session loose their controlling tty.

     * Most terminal emulator programs (including screen, but see note
       about screen) acquire a controlling tty before exec'ing their
       target process.

 - This means that the following won't work (the cloned zsh will run,
   but will not have a controlling tty (-> no job control)):

     * Open a new xterm.

     * Run tty in xterm.

     * Run in the xterm:

         exec zsh -c 'trap "" INT QUIT TSTP; while :; do sleep 100000; done'

     * Do a clone in the xterm's tty.

 - However this will work (the cloned zsh will have a controlling tty
   and job control will work):

     * clone /dev/tty<n> or clone /dev/vc/<n> on linux

     * zsh will be able to open cloned shells with job control in a
       screen session as long as the screen "setsid off" command is in
       effect in the screen:

        + Run screen. You're now in screen #0.

        + Enter "setsid off": this is done by typing in:

            ^A : setsid off <RETURN>

        + Create a new screen. You're now in screen #1.

        + The shell in screen 1 has job control disabled (it has no
          controlling tty).
 
        + In screen #1, run:

            tty && exec sleep 1000000

        + Switch back to screen #0: ^A 0

        + Run clone on the tty that was printed in screen #1.

        + Switch back to screen #1: ^A 1

        + You now have a cloned zsh with job control active.

Tested to work OK on Linux (with TIOCNOTTY/TIOCSCTTY controlling tty
acquiring method) and Solaris (with SvR4's O_NOCTTY controlling tty
acquiring method).

Phil.

Changelog entry:

2003-07-22  Philippe Troin  <phil@fifi.org>

	* Src/Modules/clone.c (bin_clone): Try to acquire a controlling
	tty when possible. Report failures. Cleanup.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: zsh-clone-ctty.patch --]
[-- Type: text/x-patch, Size: 1833 bytes --]

Index: clone.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/Modules/clone.c,v
retrieving revision 1.3
diff -b -u -r1.3 clone.c
--- clone.c	27 Aug 2002 21:10:34 -0000	1.3
+++ clone.c	23 Jul 2003 01:07:48 -0000
@@ -43,7 +43,7 @@
 static int
 bin_clone(char *nam, char **args, Options ops, int func)
 {
-    int ttyfd, pid;
+    int ttyfd, pid, cttyfd;
 
     unmetafy(*args, NULL);
     ttyfd = open(*args, O_RDWR|O_NOCTTY);
@@ -57,29 +57,42 @@
 	ppid = getppid();
 	mypid = getpid();
 #ifdef HAVE_SETSID
-	if (setsid() != mypid) {
+	if (setsid() != mypid)
 	    zwarnnam(nam, "failed to create new session: %e", NULL, errno);
-#endif
-#ifdef TIOCNOTTY
+#elif defined(TIOCNOTTY)
 	    if (ioctl(SHTTY, TIOCNOTTY, 0))
-		zwarnnam(nam, "%e", NULL, errno);
+	    zwarnnam(*args, "%e", NULL, errno);
 	    setpgrp(0L, mypid);
 #endif
-#ifdef HAVE_SETSID
-	}
-#endif
-	if (ttyfd) {
-	    close(0);
-	    dup(ttyfd);
-	} else
-	    ttyfd = -1;
-	close(1);
-	close(2);
-	dup(0);
-	dup(0);
+	dup2(ttyfd,0);
+	dup2(ttyfd,1);
+	dup2(ttyfd,2);
+	if (ttyfd > 2)
+	    close(ttyfd);
 	closem(0);
 	close(coprocin);
 	close(coprocout);
+	/* Acquire a controlling terminal */
+	cttyfd = open(*args, O_RDWR);
+	if (cttyfd == -1)
+	    zwarnnam(nam, "%e", NULL, errno);
+	else {
+#ifdef TIOCSCTTY
+	    ioctl(cttyfd, TIOCSCTTY, 0);
+#endif
+	    close(cttyfd);
+	}
+	/* check if we acquired the tty successfully */
+	cttyfd = open("/dev/tty", O_RDWR);
+	if (cttyfd == -1)
+	    zwarnnam(nam, "could not make %s my controlling tty, job control "
+		     "disabled", *args, 0);
+	else
+	    close(cttyfd);
+
+	/* Clear mygrp so that acquire_pgrp() gets the new process group.
+	 * (acquire_pgrp() is called from init_io()) */
+	mypgrp = 0;
 	init_io();
 	setsparam("TTY", ztrdup(ttystrname));
     }

^ permalink raw reply	[relevance 2%]

* Re: Segfault in completion code
  @ 2003-08-01 10:58  2% ` Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2003-08-01 10:58 UTC (permalink / raw)
  To: zsh-workers

Haakon Riiser wrote:
> But, there are still problems when SH_WORD_SPLIT is set.  Here's an
> example that should not depend on my local zsh configuration
> (assuming that "zsh -f" only tries to load /etc/zshenv, which
> does not exist on my system):
> 
>   % /path/to/patched/zsh -f
>   % unset IFS
>   % setopt SH_WORD_SPLIT
>   % autoload -U compinit
>   % compinit
>   % <press completion key>
>   (eval):setopt:1: no such option: globbareglobqualnullglobrcexpand\
>   paramextendedglobunsetNO_markdirsNO_globsubstNO_shwordsplitNO_shglob\
>   NO_kshglobNO_ksharraysNO_cshnullglobNO_allexportNO_aliasesNO_errexit\
>   NO_octalzeroes

The combined effect of shwordsplit and unsetting IFS causes the values
in the list of options to be joined together with no spaces between.
It looks harmless to put it back (IFS might be anything).

However, my patch last night was wrong --- I've checked SUS/Posix 2003
and it says:

IFS (Input Field Separators.) A string treated as a list of characters
    that is used for field splitting and to split lines into fields with
    the read command. If IFS is not set, the shell shall behave as if
    the value of IFS is <space>, <tab>, and <newline>; see Field
    Splitting . Implementations may ignore the value of IFS in the
    environment at the time the shell is invoked, treating IFS as if it
    were not set.

so we should use space to join words.  I don't know why it doesn't allow
you to use no separator, but it doesn't.  This is already handled
correctly in other parts of the shell --- we use a default IFS.  That
fixes the immediate problem above, but as I said IFS might be something
else, so I've still supplied the other hunk.  The following patch
applies on top of last night's fix (now committed).

Index: Src/utils.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/utils.c,v
retrieving revision 1.52
diff -u -r1.52 utils.c
--- Src/utils.c	1 Aug 2003 09:55:41 -0000	1.52
+++ Src/utils.c	1 Aug 2003 10:56:54 -0000
@@ -2058,6 +2058,8 @@
 	if (ifs) {
 	    *p++ = *ifs;
 	    *p++ = *ifs == Meta ? ifs[1] ^ 32 : '\0';
+	} else {
+	    *p++ = ' ';
 	}
 	*p = '\0';
     }
Index: Completion/Base/Core/_main_complete
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/Base/Core/_main_complete,v
retrieving revision 1.7
diff -u -r1.7 _main_complete
--- Completion/Base/Core/_main_complete	26 Feb 2003 16:36:06 -0000	1.7
+++ Completion/Base/Core/_main_complete	1 Aug 2003 10:45:31 -0000
@@ -3,6 +3,8 @@
 # The main loop of the completion code. This is what is called when 
 # completion is attempted from the command line.
 
+# In case non-standard separators are in use.
+local IFS=$' \t\n\0'
 
 # If you want to complete only set or unset options for the unsetopt
 # and setopt builtin, un-comment these lines:

-- 
Peter Stephenson <pws@csr.com>                  Software Engineer
CSR Ltd., Science Park, Milton Road,
Cambridge, CB4 0WH, UK                          Tel: +44 (0)1223 692070


**********************************************************************
The information transmitted is intended only for the person or
entity to which it is addressed and may contain confidential 
and/or privileged material. 
Any review, retransmission, dissemination or other use of, or
taking of any action in reliance upon, this information by 
persons or entities other than the intended recipient is 
prohibited.  
If you received this in error, please contact the sender and 
delete the material from any computer.
**********************************************************************


^ permalink raw reply	[relevance 2%]

* PATCH: options to command builtin
@ 2003-09-10 20:23  2% Oliver Kiddle
  0 siblings, 0 replies; 200+ results
From: Oliver Kiddle @ 2003-09-10 20:23 UTC (permalink / raw)
  To: Zsh workers

This long overdue patch adds support for the various flags to the
command builtin required by posix.

-v and -V are similar to what whence already does. -p uses a default
path to search for commands instead of $path.

Oliver

diff -urw zsh/acconfig.h command-v/acconfig.h
--- zsh/acconfig.h	2003-04-04 15:27:42.000000000 +0200
+++ command-v/acconfig.h	2003-09-10 20:48:49.000000000 +0200
@@ -52,6 +52,9 @@
  * anything                                                          */
 #undef GLOBAL_ZLOGOUT
 
+/* The default path; used when running commands with command -p */
+#undef DEFAULT_PATH
+
 /* Define to 1 if compiler could initialise a union */
 #undef HAVE_UNION_INIT
 
diff -urw zsh/Doc/Zsh/builtins.yo command-v/Doc/Zsh/builtins.yo
--- zsh/Doc/Zsh/builtins.yo	2003-09-03 13:19:05.000000000 +0200
+++ command-v/Doc/Zsh/builtins.yo	2003-09-10 22:15:50.000000000 +0200
@@ -194,7 +194,18 @@
 )
 alias(chdir)(cd)
 module(clone)(zsh/clone)
-prefix(command)
+findex(command)
+item(tt(command) [ tt(-pvV) ] var(simple command))(
+The simple command argument is taken as an external command instead of
+a function or builtin and is executed. If the tt(POSIX_BUILTINS) option
+is set, builtins will also be executed but certain special properties
+of them are suppressed. The tt(-p) flag causes a default path to be
+searched instead of that in tt($path). With the tt(-v) flag, tt(command)
+is similar to tt(whence) and with tt(-V), it is equivalent to tt(whence
+-v).
+
+See also noderef(Precommand Modifiers).
+)
 module(comparguments)(zsh/computil)
 module(compcall)(zsh/compctl)
 module(compctl)(zsh/compctl)
diff -urw zsh/Src/builtin.c command-v/Src/builtin.c
--- zsh/Src/builtin.c	2003-09-03 13:19:08.000000000 +0200
+++ command-v/Src/builtin.c	2003-09-10 20:48:31.000000000 +0200
@@ -2593,7 +2593,7 @@
     return returnval;
 }
 
-/* type, whence, which */
+/* type, whence, which, command */
 
 /**/
 int
@@ -2603,6 +2603,7 @@
     Patprog pprog;
     int returnval = 0;
     int printflags = 0;
+    int aliasflags;
     int csh, all, v, wd;
     int informed;
     char *cnam;
@@ -2624,6 +2625,18 @@
     if (OPT_ISSET(ops,'f'))
 	printflags |= PRINT_WHENCE_FUNCDEF;
 
+    if (func == BIN_COMMAND)
+	if (OPT_ISSET(ops,'V')) {
+	    printflags = aliasflags = PRINT_WHENCE_VERBOSE;
+	    v = 1;
+	} else {
+	    aliasflags = PRINT_LIST;
+	    printflags = PRINT_WHENCE_SIMPLE;
+	    v = 0;
+	}
+    else
+	aliasflags = printflags;
+
     /* With -m option -- treat arguments as a glob patterns */
     if (OPT_ISSET(ops,'m')) {
 	for (; *argv; argv++) {
@@ -2677,7 +2690,7 @@
 
 	    /* Look for alias */
 	    if ((hn = aliastab->getnode(aliastab, *argv))) {
-		aliastab->printnode(hn, printflags);
+		aliastab->printnode(hn, aliasflags);
 		if (!all)
 		    continue;
 		informed = 1;
diff -urw zsh/Src/exec.c command-v/Src/exec.c
--- zsh/Src/exec.c	2003-07-04 11:43:18.000000000 +0200
+++ command-v/Src/exec.c	2003-09-10 22:20:41.000000000 +0200
@@ -143,6 +143,10 @@
     execarith, execautofn
 };
 
+/* structure for command builtin for when it is used with -v or -V */
+static struct builtin commandbn =
+    BUILTIN(0, 0, bin_whence, 0, -1, BIN_COMMAND, "vV", NULL);
+
 /* parse string into a list */
 
 /**/
@@ -243,7 +247,7 @@
  * In zsh this traditionally executes the loop in the current shell, which
  * is nice to have if the loop does something to change the shell, like
  * setting parameters or calling builtins.
- * Putting the loop in a sub-shell makes live easy, because the shell only
+ * Putting the loop in a sub-shell makes life easy, because the shell only
  * has to put it into the job-structure and then treats it as a normal
  * process. Suspending and interrupting is no problem then.
  * Some years ago, zsh either couldn't suspend such things at all, or
@@ -257,7 +261,7 @@
  *  execlist->execpline->execcmd->execwhile->execlist->execpline
  *
  * (when waiting for the grep, ignoring execpline2 for now). At this time,
- * zsh has build two job-table entries for it: one for the cat and one for
+ * zsh has built two job-table entries for it: one for the cat and one for
  * the grep. If the user hits ^Z at this point (and jobbing is used), the 
  * shell is notified that the grep was suspended. The list_pipe flag is
  * used to tell the execpline where it was waiting that it was in a pipeline
@@ -442,7 +446,7 @@
 
 /**/
 void
-execute(Cmdnam not_used_yet, int dash)
+execute(Cmdnam not_used_yet, int dash, int defpath)
 {
     Cmdnam cn;
     char buf[MAXCMDLEN], buf2[MAXCMDLEN];
@@ -451,7 +455,7 @@
     int eno = 0, ee;
 
     arg0 = (char *) peekfirst(args);
-    if (isset(RESTRICTED) && strchr(arg0, '/')) {
+    if (isset(RESTRICTED) && (strchr(arg0, '/') || defpath)) {
 	zerr("%s: restricted", arg0, 0);
 	_exit(1);
     }
@@ -474,8 +478,6 @@
 	zsfree(s);
     }
 
-    cn = (Cmdnam) cmdnamtab->getnode(cmdnamtab, arg0);
-
     /* If ARGV0 is in the commands environment, we use *
      * that as argv[0] for this external command       */
     if (unset(RESTRICTED) && (z = zgetenv("ARGV0"))) {
@@ -507,7 +509,43 @@
 	    break;
 	}
 
-    if (cn) {
+    /* for command -p, search the default path */ 
+    if (defpath) {
+      char *s, pbuf[PATH_MAX];
+      char *dptr, *pe, *ps = DEFAULT_PATH;
+
+      for(;ps;ps = pe ? pe+1 : NULL) {
+	  pe = strchr(ps, ':');
+	  if (*ps == '/') {
+	      s = pbuf;
+	      if (pe)
+		  struncpy(&s, ps, pe-ps);
+	      else
+		  strucpy(&s, ps);
+	      *s++ = '/';
+	      if ((s - pbuf) + strlen(arg0) >= PATH_MAX)
+		  continue;
+	      strucpy(&s, arg0);
+	      if (iscom(pbuf))
+		  break;
+	  }
+      }
+      
+      if (!ps) {
+	  zerr("command not found: %s", arg0, 0);
+	  _exit(127);
+      }
+
+      ee = zexecve(pbuf, argv);
+
+      if ((dptr = strrchr(pbuf, '/')))
+	  *dptr = '\0';
+      if (isgooderr(ee, *pbuf ? pbuf : "/"))
+	  eno = ee;
+
+    } else {
+   
+	if ((cn = (Cmdnam) cmdnamtab->getnode(cmdnamtab, arg0))) {
 	char nn[PATH_MAX], *dptr;
 
 	if (cn->flags & HASHED)
@@ -552,6 +590,8 @@
 	    if (isgooderr(ee, *pp))
 		eno = ee;
 	}
+    }
+
     if (eno)
 	zerr("%e: %s", arg0, eno);
     else
@@ -1692,7 +1732,7 @@
     int save[10];
     int fil, dfil, is_cursh, type, do_exec = 0, i, htok = 0;
     int nullexec = 0, assign = 0, forked = 0;
-    int is_shfunc = 0, is_builtin = 0, is_exec = 0;
+    int is_shfunc = 0, is_builtin = 0, is_exec = 0, use_defpath = 0;
     /* Various flags to the command. */
     int cflags = 0, checked = 0, oautocont = opts[AUTOCONTINUE];
     LinkList redir;
@@ -1782,9 +1822,30 @@
 	    }
 	    cflags &= ~BINF_BUILTIN & ~BINF_COMMAND;
 	    cflags |= hn->flags;
+	    checked = 0;
+	    if (cflags & BINF_COMMAND && nextnode(firstnode(args))) {
+		// check for options to command builtin
+		char *next = (char *) getdata(nextnode(firstnode(args)));
+		char *cmdopt;
+		if (next && *next == '-' && strlen(next) == 2 &&
+		        (cmdopt = strchr("pvV", next[1])))
+		{
+		    if (*cmdopt == 'p') {
+			uremnode(args, firstnode(args));
+			use_defpath = 1;
+			if (nextnode(firstnode(args)))
+			    next = (char *) getdata(nextnode(firstnode(args)));
+		    } else {
+			hn = (HashNode)&commandbn;
+			is_builtin = 1;
+			break;
+		    }
+		}
+		if (!strcmp(next, "--"))
+		     uremnode(args, firstnode(args));   
+	    }
 	    uremnode(args, firstnode(args));
 	    hn = NULL;
-	    checked = 0;
 	    if ((cflags & BINF_COMMAND) && unset(POSIXBUILTINS))
 		break;
 	}
@@ -2401,7 +2462,7 @@
 		    zsfree(STTYval);
 		    STTYval = 0;
 		}
-		execute((Cmdnam) hn, cflags & BINF_DASH);
+		execute((Cmdnam) hn, cflags & BINF_DASH, use_defpath);
 	    } else {		/* ( ... ) */
 		DPUTS(varspc,
 		      "BUG: assignment before complex command");
diff -urw zsh/Src/hashtable.h command-v/Src/hashtable.h
--- zsh/Src/hashtable.h	2002-08-27 23:10:34.000000000 +0200
+++ command-v/Src/hashtable.h	2003-09-10 20:48:31.000000000 +0200
@@ -58,6 +58,7 @@
 #define BIN_DISABLE  24
 #define BIN_ENABLE   25
 #define BIN_PRINTF   26
+#define BIN_COMMAND  27
 
 /* These currently depend on being 0 and 1. */
 #define BIN_SETOPT    0
diff -urw zsh/zshconfig.ac command-v/zshconfig.ac
--- zsh/zshconfig.ac	2003-08-31 11:41:10.000000000 +0200
+++ command-v/zshconfig.ac	2003-09-10 20:48:49.000000000 +0200
@@ -1323,6 +1323,20 @@
 fi
 
 
+dnl --------------------------------------------
+dnl CHECK FOR DEFAULT PATH (used for command -p)
+dnl --------------------------------------------
+AC_CACHE_VAL(zsh_cv_cs_path,
+[if getconf _CS_PATH >/dev/null 2>&1; then
+  zsh_cv_cs_path=`getconf _CS_PATH`
+elif getconf CS_PATH >/dev/null 2>&1; then
+  zsh_cv_cs_path=`getconf CS_PATH`
+else
+  zsh_cv_cs_path="/bin:/usr/bin"
+fi])
+AC_DEFINE_UNQUOTED(DEFAULT_PATH, "$zsh_cv_cs_path")
+
+
 dnl ----------------------------
 dnl CHECK FOR /dev/fd FILESYSTEM
 dnl ----------------------------


^ permalink raw reply	[relevance 2%]

* NSS LDAP/TLS crashing
@ 2003-10-28 13:02  1% Clint Adams
  0 siblings, 0 replies; 200+ results
From: Clint Adams @ 2003-10-28 13:02 UTC (permalink / raw)
  To: zsh-workers; +Cc: 217915-forwarded, Frédéric Gobry

Is there something that zsh is doing that would make zlib or GNUTLS
unhappy somehow?

(4.0.7-5) was nearly identical to 4.0 branch on July 13.

----- Forwarded message from Frédéric Gobry <frederic.gobry@smartdata.ch> -----

Date: Tue, 28 Oct 2003 09:41:37 +0100
From: Frédéric Gobry <frederic.gobry@smartdata.ch>
Subject: Bug#217915: zsh: crash when accessing homedirs provided by LDAP with TLS

Package: zsh
Version: 4.0.7-5
Severity: normal

First of all, I don't know for sure if this problem is in zsh proper,
but it is the only place where it occurs.

I have an LDAP server which contains unix account information. When I
type:

 cd ~user

where user is resolved via LDAP, zsh crashes. This is the stack dump:

#0  0x410893c9 in mallopt () from /lib/libc.so.6
#1  0x410885d3 in malloc () from /lib/libc.so.6
#2  0x0807b2ef in zcalloc ()
#3  0x404f3933 in deflateInit2_ () from /usr/lib/libz.so.1
#4  0x4048731a in _gnutls_comp_init () from /usr/lib/libgnutls.so.7
#5  0x4048d3bf in _gnutls_write_connection_state_init () from /usr/lib/libgnutls.so.7
#6  0x4048429e in _gnutls_get_adv_version () from /usr/lib/libgnutls.so.7
#7  0x40483571 in _gnutls_handshake_common () from /usr/lib/libgnutls.so.7
#8  0x40482f78 in gnutls_handshake () from /usr/lib/libgnutls.so.7
#9  0x4035b8ba in gnutls_SSL_free () from /usr/lib/libldap.so.2
#10 0x4035b9eb in gnutls_SSL_connect () from /usr/lib/libldap.so.2
#11 0x40359a8d in ldap_pvt_tls_init_def_ctx () from /usr/lib/libldap.so.2
#12 0x4035ab13 in ldap_int_tls_start () from /usr/lib/libldap.so.2
#13 0x4035af20 in ldap_start_tls_s () from /usr/lib/libldap.so.2
#14 0x40318e5a in _fini () from /lib/libnss_ldap.so.2
#15 0x40319fca in _fini () from /lib/libnss_ldap.so.2
#16 0x4031a525 in _fini () from /lib/libnss_ldap.so.2
#17 0x4031b649 in _nss_ldap_getpwnam_r () from /lib/libnss_ldap.so.2
#18 0x410be755 in getpwnam_r () from /lib/libc.so.6
#19 0x410be22f in getpwnam () from /lib/libc.so.6
#20 0x080980f5 in getnameddir ()
#21 0x08091ab5 in filesubstr ()
#22 0x08091763 in filesub ()
#23 0x08090f01 in prefork ()
#24 0x08060e9b in execsubst ()
#25 0x0805e809 in execlist ()
#26 0x0805dfc7 in execlist ()
#27 0x0805dd60 in execlist ()
#28 0x0805d8d7 in execode ()
#29 0x0806dd0a in loop ()
#30 0x080701c3 in zsh_main ()
#31 0x08051477 in main ()
#32 0x4102ce3e in __libc_start_main () from /lib/libc.so.6

It seems to occur in the TLS layer, which is part of GNU TLS I
guess. When configuring LDAP not to use TLS, zsh does not crash.
What makes me think that it might be zsh related is that everything
works with bash, and a simple test program that invokes getpwnam works
also. I've run zsh under valgrind, and it detected some access
violations that could lead to unexpected issues like this one.

The (long) valgrind log is appended below. I hope this might be
useful. I can easily perform additional tests if required.




==20890== Memcheck, a.k.a. Valgrind, a memory error detector for x86-linux.
==20890== Copyright (C) 2002-2003, and GNU GPL'd, by Julian Seward.
==20890== Using valgrind-20030725, a program supervision framework for x86-linux.
==20890== Copyright (C) 2000-2003, and GNU GPL'd, by Julian Seward.
==20890== Estimated CPU clock rate is 598 MHz
==20890== For more details, rerun with: -v
==20890== 
==20890== Conditional jump or move depends on uninitialised value(s)
==20890==    at 0x41008ABA: _dl_relocate_object_internal (in /lib/ld-2.3.2.so)
==20890==    by 0x4111DD70: (within /lib/libc-2.3.2.so)
==20890==    by 0x4100B115: _dl_catch_error_internal (in /lib/ld-2.3.2.so)
==20890==    by 0x4111DFDB: _dl_open (in /lib/libc-2.3.2.so)
==20890== 
==20890== Conditional jump or move depends on uninitialised value(s)
==20890==    at 0x41008B05: _dl_relocate_object_internal (in /lib/ld-2.3.2.so)
==20890==    by 0x4111DD70: (within /lib/libc-2.3.2.so)
==20890==    by 0x4100B115: _dl_catch_error_internal (in /lib/ld-2.3.2.so)
==20890==    by 0x4111DFDB: _dl_open (in /lib/libc-2.3.2.so)
==20891== 
==20891== Invalid write of size 4
==20891==    at 0x805CC10: (within /bin/zsh4)
==20891==    by 0x805D0B2: execute (in /bin/zsh4)
==20891==    by 0x8060013: (within /bin/zsh4)
==20891==    by 0x805E808: (within /bin/zsh4)
==20891==    Address 0x40CAC124 is 0 bytes after a block of size 176 alloc'd
==20891==    at 0x40015CE9: realloc (vg_replace_malloc.c:299)
==20891==    by 0x4104258C: (within /lib/libc-2.3.2.so)
==20891==    by 0x410424B7: putenv (in /lib/libc-2.3.2.so)
==20891==    by 0x8084608: addenv (in /bin/zsh4)
==20892== 
==20892== Invalid write of size 4
==20892==    at 0x805CC10: (within /bin/zsh4)
==20892==    by 0x805D0B2: execute (in /bin/zsh4)
==20892==    by 0x8060013: (within /bin/zsh4)
==20892==    by 0x805E808: (within /bin/zsh4)
==20892==    Address 0x40CAC124 is 0 bytes after a block of size 176 alloc'd
==20892==    at 0x40015CE9: realloc (vg_replace_malloc.c:299)
==20892==    by 0x4104258C: (within /lib/libc-2.3.2.so)
==20892==    by 0x410424B7: putenv (in /lib/libc-2.3.2.so)
==20892==    by 0x8084608: addenv (in /bin/zsh4)
==20894== 
==20894== Invalid write of size 4
==20894==    at 0x805CC10: (within /bin/zsh4)
==20894==    by 0x805D0B2: execute (in /bin/zsh4)
==20894==    by 0x8060013: (within /bin/zsh4)
==20894==    by 0x805E808: (within /bin/zsh4)
==20894==    Address 0x40CAC124 is 0 bytes after a block of size 176 alloc'd
==20894==    at 0x40015CE9: realloc (vg_replace_malloc.c:299)
==20894==    by 0x4104258C: (within /lib/libc-2.3.2.so)
==20894==    by 0x410424B7: putenv (in /lib/libc-2.3.2.so)
==20894==    by 0x8084608: addenv (in /bin/zsh4)
==20896== discard syms in /lib/libnss_compat-2.3.2.so due to munmap()
==20896== discard syms in /lib/libnss_nis-2.3.2.so due to munmap()
==20896== discard syms in /lib/libnss_files-2.3.2.so due to munmap()
==20896== 
==20896== ERROR SUMMARY: 14 errors from 2 contexts (suppressed: 0 from 0)
==20896== malloc/free: in use at exit: 241480 bytes in 10216 blocks.
==20896== malloc/free: 15821 allocs, 5605 frees, 1865477 bytes allocated.
==20896== For a detailed leak analysis,  rerun with: --leak-check=yes
==20896== For counts of detected errors, rerun with: -v
==20897== 
==20897== Invalid write of size 4
==20897==    at 0x805CC10: (within /bin/zsh4)
==20897==    by 0x805D0B2: execute (in /bin/zsh4)
==20897==    by 0x8060013: (within /bin/zsh4)
==20897==    by 0x805E808: (within /bin/zsh4)
==20897==    Address 0x40CAC124 is 0 bytes after a block of size 176 alloc'd
==20897==    at 0x40015CE9: realloc (vg_replace_malloc.c:299)
==20897==    by 0x4104258C: (within /lib/libc-2.3.2.so)
==20897==    by 0x410424B7: putenv (in /lib/libc-2.3.2.so)
==20897==    by 0x8084608: addenv (in /bin/zsh4)
==20898== 
==20898== Invalid write of size 4
==20898==    at 0x805CC10: (within /bin/zsh4)
==20898==    by 0x805D0B2: execute (in /bin/zsh4)
==20898==    by 0x8060013: (within /bin/zsh4)
==20898==    by 0x805E808: (within /bin/zsh4)
==20898==    Address 0x40CAC124 is 0 bytes after a block of size 176 alloc'd
==20898==    at 0x40015CE9: realloc (vg_replace_malloc.c:299)
==20898==    by 0x4104258C: (within /lib/libc-2.3.2.so)
==20898==    by 0x410424B7: putenv (in /lib/libc-2.3.2.so)
==20898==    by 0x8084608: addenv (in /bin/zsh4)
==20890== 
==20890== Conditional jump or move depends on uninitialised value(s)
==20890==    at 0x4211F154: __memp_fopen_int_4001 (in /usr/lib/libdb-4.1.so)
==20890==    by 0x4211EB93: (within /usr/lib/libdb-4.1.so)
==20890==    by 0x420D83D3: __db_dbenv_setup_4001 (in /usr/lib/libdb-4.1.so)
==20890==    by 0x420E7E8F: __db_dbopen_4001 (in /usr/lib/libdb-4.1.so)
==20890== 
==20890== Conditional jump or move depends on uninitialised value(s)
==20890==    at 0x4100896A: _dl_relocate_object_internal (in /lib/ld-2.3.2.so)
==20890==    by 0x4111DD70: (within /lib/libc-2.3.2.so)
==20890==    by 0x4100B115: _dl_catch_error_internal (in /lib/ld-2.3.2.so)
==20890==    by 0x4111DFDB: _dl_open (in /lib/libc-2.3.2.so)
==20890== 
==20890== Conditional jump or move depends on uninitialised value(s)
==20890==    at 0x41008976: _dl_relocate_object_internal (in /lib/ld-2.3.2.so)
==20890==    by 0x4111DD70: (within /lib/libc-2.3.2.so)
==20890==    by 0x4100B115: _dl_catch_error_internal (in /lib/ld-2.3.2.so)
==20890==    by 0x4111DFDB: _dl_open (in /lib/libc-2.3.2.so)
==20890== 
==20890== Syscall param open(pathname) contains uninitialised or unaddressable byte(s)
==20890==    at 0x410E1778: __libc_open (in /lib/libc-2.3.2.so)
==20890==    by 0x41081207: _IO_file_fopen (in /lib/libc-2.3.2.so)
==20890==    by 0x4107745C: (within /lib/libc-2.3.2.so)
==20890==    by 0x410774BD: _IO_fopen (in /lib/libc-2.3.2.so)
==20890==    Address 0x0 is not stack'd, malloc'd or free'd
==20890== 
==20890== Conditional jump or move depends on uninitialised value(s)
==20890==    at 0x423CF008: gcry_mpi_print (in /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x423A7982: (within /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x423A7D7E: gcry_sexp_build (in /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x4231FA14: (within /usr/lib/libgnutls.so.7.0.9)
==20890== 
==20890== Conditional jump or move depends on uninitialised value(s)
==20890==    at 0x423CF008: gcry_mpi_print (in /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x423A7982: (within /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x423A7D7E: gcry_sexp_build (in /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x4231FA34: (within /usr/lib/libgnutls.so.7.0.9)
==20890== 
==20890== Conditional jump or move depends on uninitialised value(s)
==20890==    at 0x423CF008: gcry_mpi_print (in /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x423A7982: (within /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x423A7D7E: gcry_sexp_build (in /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x423AE3C2: gcry_pk_encrypt (in /usr/lib/libgcrypt.so.1.5.1)
==20890== 
==20890== Conditional jump or move depends on uninitialised value(s)
==20890==    at 0x423CEF6C: gcry_mpi_print (in /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x4231F29C: _gnutls_mpi_print (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x4232EF1B: _gnutls_gen_dh_common_client_kx (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x4231AF2B: _gnutls_send_client_kx_message (in /usr/lib/libgnutls.so.7.0.9)
==20890== 
==20890== Invalid write of size 4
==20890==    at 0x4242A8D3: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x423223BE: _gnutls_write_connection_state_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x4231929D: (within /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C01478 is not stack'd, malloc'd or free'd
==20890== 
==20890== Invalid write of size 4
==20890==    at 0x4242A8D9: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x423223BE: _gnutls_write_connection_state_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x4231929D: (within /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C01460 is 0 bytes inside a block of size 1 alloc'd
==20890==    at 0x400156F1: malloc (vg_replace_malloc.c:153)
==20890==    by 0x807B2EE: zcalloc (in /bin/zsh4)
==20890==    by 0x4242A8B3: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890== 
==20890== Invalid write of size 4
==20890==    at 0x4242A8DB: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x423223BE: _gnutls_write_connection_state_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x4231929D: (within /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C01488 is 16 bytes before a block of size 6 alloc'd
==20890==    at 0x400156F1: malloc (vg_replace_malloc.c:153)
==20890==    by 0x807B1CE: zalloc (in /bin/zsh4)
==20890==    by 0x809097E: ztrdup (in /bin/zsh4)
==20890==    by 0x807FF27: copyparam (in /bin/zsh4)
==20890== 
==20890== Invalid write of size 4
==20890==    at 0x4242A8E5: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x423223BE: _gnutls_write_connection_state_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x4231929D: (within /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C01484 is not stack'd, malloc'd or free'd
==20890== 
==20890== Invalid write of size 4
==20890==    at 0x4242A8EC: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x423223BE: _gnutls_write_connection_state_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x4231929D: (within /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C0148C is 12 bytes before a block of size 6 alloc'd
==20890==    at 0x400156F1: malloc (vg_replace_malloc.c:153)
==20890==    by 0x807B1CE: zalloc (in /bin/zsh4)
==20890==    by 0x809097E: ztrdup (in /bin/zsh4)
==20890==    by 0x807FF27: copyparam (in /bin/zsh4)
==20890== 
==20890== Invalid write of size 4
==20890==    at 0x4242A8F7: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x423223BE: _gnutls_write_connection_state_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x4231929D: (within /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C014A8 is 10 bytes after a block of size 6 alloc'd
==20890==    at 0x400156F1: malloc (vg_replace_malloc.c:153)
==20890==    by 0x807B1CE: zalloc (in /bin/zsh4)
==20890==    by 0x809097E: ztrdup (in /bin/zsh4)
==20890==    by 0x807FF27: copyparam (in /bin/zsh4)
==20890== 
==20890== Invalid write of size 4
==20890==    at 0x4242A8FE: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x423223BE: _gnutls_write_connection_state_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x4231929D: (within /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C014A4 is 6 bytes after a block of size 6 alloc'd
==20890==    at 0x400156F1: malloc (vg_replace_malloc.c:153)
==20890==    by 0x807B1CE: zalloc (in /bin/zsh4)
==20890==    by 0x809097E: ztrdup (in /bin/zsh4)
==20890==    by 0x807FF27: copyparam (in /bin/zsh4)
==20890== 
==20890== Invalid write of size 4
==20890==    at 0x4242A907: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x423223BE: _gnutls_write_connection_state_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x4231929D: (within /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C014AC is 14 bytes after a block of size 6 alloc'd
==20890==    at 0x400156F1: malloc (vg_replace_malloc.c:153)
==20890==    by 0x807B1CE: zalloc (in /bin/zsh4)
==20890==    by 0x809097E: ztrdup (in /bin/zsh4)
==20890==    by 0x807FF27: copyparam (in /bin/zsh4)
==20890== 
==20890== Invalid write of size 4
==20890==    at 0x4242A917: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x423223BE: _gnutls_write_connection_state_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x4231929D: (within /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C014B0 is not stack'd, malloc'd or free'd
==20890== 
==20890== Invalid read of size 4
==20890==    at 0x4242A923: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x423223BE: _gnutls_write_connection_state_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x4231929D: (within /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C01484 is not stack'd, malloc'd or free'd
==20890== 
==20890== Invalid write of size 4
==20890==    at 0x4242A93B: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x423223BE: _gnutls_write_connection_state_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x4231929D: (within /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C01490 is 8 bytes before a block of size 6 alloc'd
==20890==    at 0x400156F1: malloc (vg_replace_malloc.c:153)
==20890==    by 0x807B1CE: zalloc (in /bin/zsh4)
==20890==    by 0x809097E: ztrdup (in /bin/zsh4)
==20890==    by 0x807FF27: copyparam (in /bin/zsh4)
==20890== 
==20890== Invalid read of size 4
==20890==    at 0x4242A942: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x423223BE: _gnutls_write_connection_state_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x4231929D: (within /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C01484 is not stack'd, malloc'd or free'd
==20890== 
==20890== Invalid read of size 4
==20890==    at 0x4242A961: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x423223BE: _gnutls_write_connection_state_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x4231929D: (within /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C014A4 is 6 bytes after a block of size 6 alloc'd
==20890==    at 0x400156F1: malloc (vg_replace_malloc.c:153)
==20890==    by 0x807B1CE: zalloc (in /bin/zsh4)
==20890==    by 0x809097E: ztrdup (in /bin/zsh4)
==20890==    by 0x807FF27: copyparam (in /bin/zsh4)
==20890== 
==20890== Invalid write of size 4
==20890==    at 0x4242A977: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x423223BE: _gnutls_write_connection_state_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x4231929D: (within /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C0149C is 4 bytes inside a block of size 6 alloc'd
==20890==    at 0x400156F1: malloc (vg_replace_malloc.c:153)
==20890==    by 0x807B1CE: zalloc (in /bin/zsh4)
==20890==    by 0x809097E: ztrdup (in /bin/zsh4)
==20890==    by 0x807FF27: copyparam (in /bin/zsh4)
==20890== 
==20890== Invalid write of size 4
==20890==    at 0x4242A984: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x423223BE: _gnutls_write_connection_state_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x4231929D: (within /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C02AF4 is 168 bytes inside a block of size 1064 free'd
==20890==    at 0x400159D1: free (vg_replace_malloc.c:220)
==20890==    by 0x423A6019: gcry_free (in /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x423B0584: (within /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x4231BB93: _gnutls_hmac_deinit (in /usr/lib/libgnutls.so.7.0.9)
==20890== 
==20890== Invalid read of size 4
==20890==    at 0x4242A993: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x423223BE: _gnutls_write_connection_state_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x4231929D: (within /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C02AF4 is 168 bytes inside a block of size 1064 free'd
==20890==    at 0x400159D1: free (vg_replace_malloc.c:220)
==20890==    by 0x423A6019: gcry_free (in /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x423B0584: (within /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x4231BB93: _gnutls_hmac_deinit (in /usr/lib/libgnutls.so.7.0.9)
==20890== 
==20890== Invalid read of size 4
==20890==    at 0x4242A9AB: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x423223BE: _gnutls_write_connection_state_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x4231929D: (within /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C02AF4 is 168 bytes inside a block of size 1064 free'd
==20890==    at 0x400159D1: free (vg_replace_malloc.c:220)
==20890==    by 0x423A6019: gcry_free (in /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x423B0584: (within /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x4231BB93: _gnutls_hmac_deinit (in /usr/lib/libgnutls.so.7.0.9)
==20890== 
==20890== Invalid write of size 4
==20890==    at 0x4242A9B1: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x423223BE: _gnutls_write_connection_state_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x4231929D: (within /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C01468 is 7 bytes after a block of size 1 alloc'd
==20890==    at 0x400156F1: malloc (vg_replace_malloc.c:153)
==20890==    by 0x807B2EE: zcalloc (in /bin/zsh4)
==20890==    by 0x4242A8B3: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890== 
==20890== Invalid write of size 4
==20890==    at 0x4242A9BA: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x423223BE: _gnutls_write_connection_state_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x4231929D: (within /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C0146C is 11 bytes after a block of size 1 alloc'd
==20890==    at 0x400156F1: malloc (vg_replace_malloc.c:153)
==20890==    by 0x807B2EE: zcalloc (in /bin/zsh4)
==20890==    by 0x4242A8B3: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890== 
==20890== Invalid read of size 4
==20890==    at 0x4242A9BD: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x423223BE: _gnutls_write_connection_state_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x4231929D: (within /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C01490 is 8 bytes before a block of size 6 alloc'd
==20890==    at 0x400156F1: malloc (vg_replace_malloc.c:153)
==20890==    by 0x807B1CE: zalloc (in /bin/zsh4)
==20890==    by 0x809097E: ztrdup (in /bin/zsh4)
==20890==    by 0x807FF27: copyparam (in /bin/zsh4)
==20890== 
==20890== Conditional jump or move depends on uninitialised value(s)
==20890==    at 0x4242A9D0: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x423223BE: _gnutls_write_connection_state_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x4231929D: (within /usr/lib/libgnutls.so.7.0.9)
==20890== 
==20890== Invalid write of size 4
==20890==    at 0x4242A9E2: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x423223BE: _gnutls_write_connection_state_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x4231929D: (within /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C02AFC is 176 bytes inside a block of size 1064 free'd
==20890==    at 0x400159D1: free (vg_replace_malloc.c:220)
==20890==    by 0x423A6019: gcry_free (in /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x423B0584: (within /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x4231BB93: _gnutls_hmac_deinit (in /usr/lib/libgnutls.so.7.0.9)
==20890== 
==20890== Invalid write of size 4
==20890==    at 0x4242A9F4: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x423223BE: _gnutls_write_connection_state_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x4231929D: (within /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C014DC is 11 bytes after a block of size 1 alloc'd
==20890==    at 0x400156F1: malloc (vg_replace_malloc.c:153)
==20890==    by 0x807B2EE: zcalloc (in /bin/zsh4)
==20890==    by 0x4242A932: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890== 
==20890== Invalid write of size 4
==20890==    at 0x4242A9FA: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x423223BE: _gnutls_write_connection_state_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x4231929D: (within /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C02AF0 is 164 bytes inside a block of size 1064 free'd
==20890==    at 0x400159D1: free (vg_replace_malloc.c:220)
==20890==    by 0x423A6019: gcry_free (in /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x423B0584: (within /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x4231BB93: _gnutls_hmac_deinit (in /usr/lib/libgnutls.so.7.0.9)
==20890== 
==20890== Invalid write of size 1
==20890==    at 0x4242AA00: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x423223BE: _gnutls_write_connection_state_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x4231929D: (within /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C0147D is not stack'd, malloc'd or free'd
==20890== 
==20890== Invalid write of size 4
==20890==    at 0x4242AA04: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x423223BE: _gnutls_write_connection_state_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x4231929D: (within /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C014E0 is 15 bytes after a block of size 1 alloc'd
==20890==    at 0x400156F1: malloc (vg_replace_malloc.c:153)
==20890==    by 0x807B2EE: zcalloc (in /bin/zsh4)
==20890==    by 0x4242A932: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890== 
==20890== Invalid read of size 4
==20890==    at 0x4242ABF7: deflateReset (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AA11: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x423223BE: _gnutls_write_connection_state_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C01468 is 7 bytes after a block of size 1 alloc'd
==20890==    at 0x400156F1: malloc (vg_replace_malloc.c:153)
==20890==    by 0x807B2EE: zcalloc (in /bin/zsh4)
==20890==    by 0x4242A8B3: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890== 
==20890== Invalid read of size 4
==20890==    at 0x4242ABFA: deflateReset (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AA11: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x423223BE: _gnutls_write_connection_state_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C01478 is not stack'd, malloc'd or free'd
==20890== 
==20890== Invalid write of size 4
==20890==    at 0x4242AC14: deflateReset (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AA11: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x423223BE: _gnutls_write_connection_state_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C01474 is not stack'd, malloc'd or free'd
==20890== 
==20890== Invalid write of size 4
==20890==    at 0x4242AC1B: deflateReset (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AA11: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x423223BE: _gnutls_write_connection_state_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C01470 is 15 bytes after a block of size 1 alloc'd
==20890==    at 0x400156F1: malloc (vg_replace_malloc.c:153)
==20890==    by 0x807B2EE: zcalloc (in /bin/zsh4)
==20890==    by 0x4242A8B3: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890== 
==20890== Invalid write of size 4
==20890==    at 0x4242AC2C: deflateReset (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AA11: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x423223BE: _gnutls_write_connection_state_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C01480 is not stack'd, malloc'd or free'd
==20890== 
==20890== Invalid write of size 4
==20890==    at 0x4242AC3D: deflateReset (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AA11: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x423223BE: _gnutls_write_connection_state_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C01464 is 3 bytes after a block of size 1 alloc'd
==20890==    at 0x400156F1: malloc (vg_replace_malloc.c:153)
==20890==    by 0x807B2EE: zcalloc (in /bin/zsh4)
==20890==    by 0x4242A8B3: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890== 
==20890== Invalid write of size 4
==20890==    at 0x4242C707: _tr_init (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AC47: deflateReset (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AA11: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C01F70 is 4 bytes before a block of size 128 free'd
==20890==    at 0x400159D1: free (vg_replace_malloc.c:220)
==20890==    by 0x423A6019: gcry_free (in /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x423B057C: (within /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x4231BB93: _gnutls_hmac_deinit (in /usr/lib/libgnutls.so.7.0.9)
==20890== 
==20890== Invalid write of size 4
==20890==    at 0x4242C713: _tr_init (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AC47: deflateReset (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AA11: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C01F78 is 4 bytes inside a block of size 128 free'd
==20890==    at 0x400159D1: free (vg_replace_malloc.c:220)
==20890==    by 0x423A6019: gcry_free (in /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x423B057C: (within /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x4231BB93: _gnutls_hmac_deinit (in /usr/lib/libgnutls.so.7.0.9)
==20890== 
==20890== Invalid write of size 4
==20890==    at 0x4242C71F: _tr_init (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AC47: deflateReset (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AA11: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C01F7C is 8 bytes inside a block of size 128 free'd
==20890==    at 0x400159D1: free (vg_replace_malloc.c:220)
==20890==    by 0x423A6019: gcry_free (in /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x423B057C: (within /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x4231BB93: _gnutls_hmac_deinit (in /usr/lib/libgnutls.so.7.0.9)
==20890== 
==20890== Invalid write of size 4
==20890==    at 0x4242C72B: _tr_init (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AC47: deflateReset (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AA11: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C01F84 is 16 bytes inside a block of size 128 free'd
==20890==    at 0x400159D1: free (vg_replace_malloc.c:220)
==20890==    by 0x423A6019: gcry_free (in /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x423B057C: (within /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x4231BB93: _gnutls_hmac_deinit (in /usr/lib/libgnutls.so.7.0.9)
==20890== 
==20890== Invalid write of size 4
==20890==    at 0x4242C737: _tr_init (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AC47: deflateReset (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AA11: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C01F88 is 20 bytes inside a block of size 128 free'd
==20890==    at 0x400159D1: free (vg_replace_malloc.c:220)
==20890==    by 0x423A6019: gcry_free (in /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x423B057C: (within /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x4231BB93: _gnutls_hmac_deinit (in /usr/lib/libgnutls.so.7.0.9)
==20890== 
==20890== Invalid write of size 4
==20890==    at 0x4242C745: _tr_init (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AC47: deflateReset (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AA11: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C01F90 is 28 bytes inside a block of size 128 free'd
==20890==    at 0x400159D1: free (vg_replace_malloc.c:220)
==20890==    by 0x423A6019: gcry_free (in /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x423B057C: (within /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x4231BB93: _gnutls_hmac_deinit (in /usr/lib/libgnutls.so.7.0.9)
==20890== 
==20890== Invalid write of size 2
==20890==    at 0x4242C74D: _tr_init (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AC47: deflateReset (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AA11: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C02B10 is 196 bytes inside a block of size 1064 free'd
==20890==    at 0x400159D1: free (vg_replace_malloc.c:220)
==20890==    by 0x423A6019: gcry_free (in /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x423B0584: (within /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x4231BB93: _gnutls_hmac_deinit (in /usr/lib/libgnutls.so.7.0.9)
==20890== 
==20890== Invalid write of size 4
==20890==    at 0x4242C759: _tr_init (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AC47: deflateReset (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AA11: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C02B14 is 200 bytes inside a block of size 1064 free'd
==20890==    at 0x400159D1: free (vg_replace_malloc.c:220)
==20890==    by 0x423A6019: gcry_free (in /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x423B0584: (within /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x4231BB93: _gnutls_hmac_deinit (in /usr/lib/libgnutls.so.7.0.9)
==20890== 
==20890== More than 50 errors detected.  Subsequent errors
==20890== will still be recorded, but in less detail than before.
==20890== 
==20890== Invalid write of size 4
==20890==    at 0x4242C75F: _tr_init (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AC47: deflateReset (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AA11: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C02B0C is 192 bytes inside a block of size 1064 free'd
==20890==    at 0x400159D1: free (vg_replace_malloc.c:220)
==20890==    by 0x423A6019: gcry_free (in /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x423B0584: (within /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x4231BB93: _gnutls_hmac_deinit (in /usr/lib/libgnutls.so.7.0.9)
==20890== 
==20890== Invalid write of size 2
==20890==    at 0x4242C782: (within /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AC47: deflateReset (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AA11: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C014EC is not stack'd, malloc'd or free'd
==20890== 
==20890== Invalid write of size 2
==20890==    at 0x4242C7A2: (within /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AC47: deflateReset (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AA11: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C01DE0 is 708 bytes inside a block of size 1064 free'd
==20890==    at 0x400159D1: free (vg_replace_malloc.c:220)
==20890==    by 0x423A6019: gcry_free (in /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x423B0584: (within /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x423B0A07: gcry_md_ctl (in /usr/lib/libgcrypt.so.1.5.1)
==20890== 
==20890== Invalid write of size 2
==20890==    at 0x4242C7B4: (within /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AC47: deflateReset (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AA11: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C01ED4 is 952 bytes inside a block of size 1064 free'd
==20890==    at 0x400159D1: free (vg_replace_malloc.c:220)
==20890==    by 0x423A6019: gcry_free (in /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x423B0584: (within /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x423B0A07: gcry_md_ctl (in /usr/lib/libgcrypt.so.1.5.1)
==20890== 
==20890== Invalid write of size 2
==20890==    at 0x4242C7C9: (within /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AC47: deflateReset (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AA11: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C018EC is 552 bytes inside a block of size 1064 free'd
==20890==    at 0x400159D1: free (vg_replace_malloc.c:220)
==20890==    by 0x423A6019: gcry_free (in /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x423B0584: (within /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x4231BB93: _gnutls_hmac_deinit (in /usr/lib/libgnutls.so.7.0.9)
==20890== 
==20890== Invalid write of size 4
==20890==    at 0x4242C7D2: (within /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AC47: deflateReset (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AA11: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C02B04 is 184 bytes inside a block of size 1064 free'd
==20890==    at 0x400159D1: free (vg_replace_malloc.c:220)
==20890==    by 0x423A6019: gcry_free (in /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x423B0584: (within /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x4231BB93: _gnutls_hmac_deinit (in /usr/lib/libgnutls.so.7.0.9)
==20890== 
==20890== Invalid write of size 4
==20890==    at 0x4242C7DA: (within /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AC47: deflateReset (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AA11: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C02B00 is 180 bytes inside a block of size 1064 free'd
==20890==    at 0x400159D1: free (vg_replace_malloc.c:220)
==20890==    by 0x423A6019: gcry_free (in /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x423B0584: (within /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x4231BB93: _gnutls_hmac_deinit (in /usr/lib/libgnutls.so.7.0.9)
==20890== 
==20890== Invalid write of size 4
==20890==    at 0x4242C7E2: (within /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AC47: deflateReset (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AA11: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C02B08 is 188 bytes inside a block of size 1064 free'd
==20890==    at 0x400159D1: free (vg_replace_malloc.c:220)
==20890==    by 0x423A6019: gcry_free (in /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x423B0584: (within /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x4231BB93: _gnutls_hmac_deinit (in /usr/lib/libgnutls.so.7.0.9)
==20890== 
==20890== Invalid write of size 4
==20890==    at 0x4242C7E8: (within /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AC47: deflateReset (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AA11: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C02AF8 is 172 bytes inside a block of size 1064 free'd
==20890==    at 0x400159D1: free (vg_replace_malloc.c:220)
==20890==    by 0x423A6019: gcry_free (in /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x423B0584: (within /usr/lib/libgcrypt.so.1.5.1)
==20890==    by 0x4231BB93: _gnutls_hmac_deinit (in /usr/lib/libgnutls.so.7.0.9)
==20890== 
==20890== Invalid read of size 4
==20890==    at 0x4242B586: (within /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AC4F: deflateReset (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AA11: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C01484 is not stack'd, malloc'd or free'd
==20890== 
==20890== Invalid read of size 4
==20890==    at 0x4242B589: (within /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AC4F: deflateReset (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AA11: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C014A4 is 6 bytes after a block of size 6 alloc'd
==20890==    at 0x400156F1: malloc (vg_replace_malloc.c:153)
==20890==    by 0x807B1CE: zalloc (in /bin/zsh4)
==20890==    by 0x809097E: ztrdup (in /bin/zsh4)
==20890==    by 0x807FF27: copyparam (in /bin/zsh4)
==20890== 
==20890== Invalid write of size 4
==20890==    at 0x4242B58E: (within /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AC4F: deflateReset (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AA11: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C01494 is 4 bytes before a block of size 6 alloc'd
==20890==    at 0x400156F1: malloc (vg_replace_malloc.c:153)
==20890==    by 0x807B1CE: zalloc (in /bin/zsh4)
==20890==    by 0x809097E: ztrdup (in /bin/zsh4)
==20890==    by 0x807FF27: copyparam (in /bin/zsh4)
==20890== 
==20890== Use of uninitialised value of size 4
==20890==    at 0x4242B598: (within /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AC4F: deflateReset (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AA11: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890== 
==20890== Invalid write of size 2
==20890==    at 0x4242B598: (within /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AC4F: deflateReset (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AA11: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C1C1BE is 2458 bytes inside a block of size 4096 free'd
==20890==    at 0x400159D1: free (vg_replace_malloc.c:220)
==20890==    by 0x8065790: zglob (in /bin/zsh4)
==20890==    by 0x809154E: globlist (in /bin/zsh4)
==20890==    by 0x805F0C5: (within /bin/zsh4)
==20890== 
==20890== Use of uninitialised value of size 4
==20890==    at 0x4108EAEB: memset (in /lib/libc-2.3.2.so)
==20890==    by 0x4242B5B0: (within /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AC4F: deflateReset (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AA11: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890== 
==20890== Invalid write of size 4
==20890==    at 0x4108EAEB: memset (in /lib/libc-2.3.2.so)
==20890==    by 0x4242B5B0: (within /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AC4F: deflateReset (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AA11: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    Address 0x41C0C1C0 is 0 bytes inside a block of size 1 alloc'd
==20890==    at 0x400156F1: malloc (vg_replace_malloc.c:153)
==20890==    by 0x807B2EE: zcalloc (in /bin/zsh4)
==20890==    by 0x4242A970: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890== 
==20890== Invalid write of size 1
==20890==    at 0x4108EAF2: memset (in /lib/libc-2.3.2.so)
==20890==    by 0x4242B5B0: (within /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AC4F: deflateReset (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AA11: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    Address 0x41C1C1BC is 2456 bytes inside a block of size 4096 free'd
==20890==    at 0x400159D1: free (vg_replace_malloc.c:220)
==20890==    by 0x8065790: zglob (in /bin/zsh4)
==20890==    by 0x809154E: globlist (in /bin/zsh4)
==20890==    by 0x805F0C5: (within /bin/zsh4)
==20890== 
==20890== Invalid write of size 4
==20890==    at 0x4242B5B1: (within /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AC4F: deflateReset (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AA11: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C014C4 is 12 bytes before a block of size 1 alloc'd
==20890==    at 0x400156F1: malloc (vg_replace_malloc.c:153)
==20890==    by 0x807B2EE: zcalloc (in /bin/zsh4)
==20890==    by 0x4242A932: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890== 
==20890== Invalid read of size 4
==20890==    at 0x4242B5B8: (within /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AC4F: deflateReset (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AA11: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C014DC is 11 bytes after a block of size 1 alloc'd
==20890==    at 0x400156F1: malloc (vg_replace_malloc.c:153)
==20890==    by 0x807B2EE: zcalloc (in /bin/zsh4)
==20890==    by 0x4242A932: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890== 
==20890== Invalid write of size 4
==20890==    at 0x4242B5C1: (within /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AC4F: deflateReset (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AA11: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C014B4 is not stack'd, malloc'd or free'd
==20890== 
==20890== Invalid write of size 4
==20890==    at 0x4242B5C8: (within /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AC4F: deflateReset (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AA11: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C014CC is 4 bytes before a block of size 1 alloc'd
==20890==    at 0x400156F1: malloc (vg_replace_malloc.c:153)
==20890==    by 0x807B2EE: zcalloc (in /bin/zsh4)
==20890==    by 0x4242A932: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890== 
==20890== Invalid write of size 4
==20890==    at 0x4242B5DA: (within /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AC4F: deflateReset (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AA11: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C014D0 is 0 bytes inside a block of size 1 alloc'd
==20890==    at 0x400156F1: malloc (vg_replace_malloc.c:153)
==20890==    by 0x807B2EE: zcalloc (in /bin/zsh4)
==20890==    by 0x4242A932: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890== 
==20890== Invalid write of size 4
==20890==    at 0x4242B5E1: (within /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AC4F: deflateReset (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AA11: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C014B8 is not stack'd, malloc'd or free'd
==20890== 
==20890== Invalid write of size 4
==20890==    at 0x4242B5E8: (within /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AC4F: deflateReset (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AA11: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C014C0 is 16 bytes before a block of size 1 alloc'd
==20890==    at 0x400156F1: malloc (vg_replace_malloc.c:153)
==20890==    by 0x807B2EE: zcalloc (in /bin/zsh4)
==20890==    by 0x4242A932: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890== 
==20890== Invalid write of size 4
==20890==    at 0x4242B5EF: (within /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AC4F: deflateReset (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AA11: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C014D8 is 7 bytes after a block of size 1 alloc'd
==20890==    at 0x400156F1: malloc (vg_replace_malloc.c:153)
==20890==    by 0x807B2EE: zcalloc (in /bin/zsh4)
==20890==    by 0x4242A932: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890== 
==20890== Invalid write of size 4
==20890==    at 0x4242B5F6: (within /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AC4F: deflateReset (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AA11: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C014A0 is 2 bytes after a block of size 6 alloc'd
==20890==    at 0x400156F1: malloc (vg_replace_malloc.c:153)
==20890==    by 0x807B1CE: zalloc (in /bin/zsh4)
==20890==    by 0x809097E: ztrdup (in /bin/zsh4)
==20890==    by 0x807FF27: copyparam (in /bin/zsh4)
==20890== 
==20890== Invalid write of size 4
==20890==    at 0x4242B5FD: (within /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AC4F: deflateReset (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AA11: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C014E4 is not stack'd, malloc'd or free'd
==20890== 
==20890== Invalid write of size 4
==20890==    at 0x4242B608: (within /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AC4F: deflateReset (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AA11: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C014E8 is not stack'd, malloc'd or free'd
==20890== 
==20890== Invalid write of size 4
==20890==    at 0x4242B613: (within /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AC4F: deflateReset (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4242AA11: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)
==20890==    Address 0x41C014D4 is 3 bytes after a block of size 1 alloc'd
==20890==    at 0x400156F1: malloc (vg_replace_malloc.c:153)
==20890==    by 0x807B2EE: zcalloc (in /bin/zsh4)
==20890==    by 0x4242A932: deflateInit2_ (in /usr/lib/libz.so.1.1.4)
==20890==    by 0x4231C319: _gnutls_comp_init (in /usr/lib/libgnutls.so.7.0.9)

valgrind: vg_malloc2.c:312 (mk_plain_bszW): Assertion `bszW != 0' failed.

sched status:

Thread 1: status = Runnable, associated_mx = 0x0, associated_cv = 0x0
==20890==    at 0x400156F1: malloc (vg_replace_malloc.c:153)
==20890==    by 0x4231B92D: _gnutls_hash_copy (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x4231719E: _gnutls_finished (in /usr/lib/libgnutls.so.7.0.9)
==20890==    by 0x423175C8: _gnutls_send_finished (in /usr/lib/libgnutls.so.7.0.9)


Note: see also the FAQ.txt in the source distribution.
It contains workarounds to several common problems.

If that doesn't help, please report this bug to: jseward@acm.org

In the bug report, send all the above text, the valgrind
version, and what Linux distro you are using.  Thanks.





-- System Information:
Debian Release: testing/unstable
Architecture: i386
Kernel: Linux rhin 2.4.22 #1 Wed Aug 27 11:35:06 CEST 2003 i686
Locale: LANG=en_US.ISO8859-1, LC_CTYPE=en_US.ISO8859-1

Versions of packages zsh depends on:
ii  debconf                   1.3.15         Debian configuration management sy
ii  libc6                     2.3.2-7        GNU C Library: Shared libraries an
ii  libcap1                   1:1.10-12      support for getting/setting POSIX.
ii  libncurses5               5.3.20030719-1 Shared libraries for terminal hand

-- debconf information:
* zsh/rcmove: 


----- End forwarded message -----


^ permalink raw reply	[relevance 1%]

* Freebsd configure misses <curses.h> and <term.h>
@ 2003-11-19  1:30  1% Peter Whaite
  0 siblings, 0 replies; 200+ results
From: Peter Whaite @ 2003-11-19  1:30 UTC (permalink / raw)
  To: zsh-workers

[-- Attachment #1: Type: text/plain, Size: 1382 bytes --]

For some time now I have been trying to compile CVS zsh on a freebsd 
machine.  It fails on Src/Modules/terminfo.c

gcc -c -I. -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DHAVE_CONFIG_H 
-DMODULE -Wall -Wmissing-prototypes -O2 -fPIC -o terminfo..o terminfo.c
terminfo.c: In function `bin_echoti':
terminfo.c:74: warning: implicit declaration of function `tigetnum'
terminfo.c:79: warning: implicit declaration of function `tigetflag'
terminfo.c:91: warning: implicit declaration of function `tigetstr'
terminfo.c:117: warning: implicit declaration of function `putp'
terminfo.c:119: warning: implicit declaration of function `tparm'
terminfo.c: In function `boot_':
terminfo.c:381: warning: implicit declaration of function `setupterm'
terminfo.c:381: `ERR' undeclared (first use in this function)
terminfo.c:381: (Each undeclared identifier is reported only once
terminfo.c:381: for each function it appears in.)
*** Error code 1

Stop in /usr/home/peta/src/zsh/Src/Modules.

I find config.h has #defined neither HAVE_CURSES_H nor HAVE_TERM_H, but 
both these header files are in /usr/include, and both contain the 
missing declarations.  If I #define HAVE_CURSES_H manually then it 
compiles and tests OK.

% uname -a
FreeBSD whaite.com 4.6-RELEASE FreeBSD 4.6-RELEASE #1: Wed Aug 28 
15:22:40 EST 2002     root@whaite.com:/usr/src/sys/compile/WHAITE  i386

config.log attached.


[-- Attachment #2: config.log --]
[-- Type: text/plain, Size: 137763 bytes --]

This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.

It was created by configure, which was
generated by GNU Autoconf 2.53.  Invocation command line was

  $ ./configure 

## --------- ##
## Platform. ##
## --------- ##

hostname = whaite.com
uname -m = i386
uname -r = 2.4.2
uname -s = Linux
uname -v = FreeBSD 4.6-RELEASE #1: Wed Aug 28 15:22:40 EST 2002
    root@wh

/usr/bin/uname -p = i386
/bin/uname -X     = unknown

/bin/arch              = unknown
/usr/bin/arch -k       = unknown
/usr/convex/getsysinfo = unknown
hostinfo               = unknown
/bin/machine           = unknown
/usr/bin/oslevel       = unknown
/bin/universe          = unknown

PATH: .
PATH: /home/peta/bin
PATH: /usr/local/bin
PATH: /sbin
PATH: /bin
PATH: /usr/sbin
PATH: /usr/bin
PATH: /usr/games
PATH: /usr/local/sbin
PATH: /usr/X11R6/bin
PATH: /usr/compat/linux/usr/bin
PATH: /usr/compat/linux/bin
PATH: /usr/compat/linux/sbin
PATH: /home/peta/usr/bin


## ----------- ##
## Core tests. ##
## ----------- ##

configure:1263: checking build system type
configure:1281: result: i386-pc-linux-gnulibc1
configure:1289: checking host system type
configure:1303: result: i386-pc-linux-gnulibc1
configure:1759: checking for gcc
configure:1759: found /usr/bin/gcc
configure:1759: result: gcc
configure:1994: checking for C compiler version
configure:2000: gcc --version </dev/null >&5
2.95.3
configure:2000: $? = 0
configure:2005: gcc -v </dev/null >&5
Using builtin specs.
gcc version 2.95.3 20010315 (release) [FreeBSD]
configure:2005: $? = 0
configure:2010: gcc -V </dev/null >&5
gcc: argument to `-V' is missing
configure:2010: $? = 1
configure:2035: checking for C compiler default output
configure:2071: gcc    conftest.c  >&5
configure:2071: $? = 0
configure:2074: result: a.out
configure:2079: checking whether the C compiler works
configure:2102: ./a.out
configure:2102: $? = 0
configure:2103: result: yes
configure:2110: checking whether we are cross compiling
configure:2112: result: no
configure:2115: checking for suffix of executables
configure:2139: gcc -o conftest    conftest.c  >&5
configure:2139: $? = 0
configure:2142: result: 
configure:2148: checking for suffix of object files
configure:2193: gcc -c   conftest.c >&5
configure:2193: $? = 0
configure:2194: result: o
configure:2198: checking whether we are using the GNU C compiler
configure:2245: gcc -c   conftest.c >&5
configure:2245: $? = 0
configure:2245: test -s conftest.o
configure:2245: $? = 0
configure:2246: result: yes
configure:2252: checking whether gcc accepts -g
configure:2294: gcc -c -g  conftest.c >&5
configure:2294: $? = 0
configure:2294: test -s conftest.o
configure:2294: $? = 0
configure:2295: result: yes
configure:2427: gcc -c   conftest.c >&5
conftest.c:2: syntax error before `me'
configure:2427: $? = 1
configure: failed program was:
#ifndef __cplusplus
  choke me
#endif
configure:2486: checking whether large file support needs explicit enabling
configure:2486: result: yes
configure:2548: checking how to run the C preprocessor
configure:2649: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:2649: $? = 0
configure:2649: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:2650: ac_nonexistent.h: No such file or directory
configure:2649: $? = 1
configure: failed program was:
#line 2649 "configure"
#include "confdefs.h"
#include <ac_nonexistent.h>
configure:2650: result: gcc -E
configure:2726: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:2726: $? = 0
configure:2726: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:2727: ac_nonexistent.h: No such file or directory
configure:2726: $? = 1
configure: failed program was:
#line 2726 "configure"
#include "confdefs.h"
#include <ac_nonexistent.h>
configure:2786: checking whether gcc needs -traditional
configure:2787: termio.h: No such file or directory
configure:2786: result: no
configure:2787: checking for gcc option to accept ANSI C
configure:2872: gcc  -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:2872: $? = 0
configure:2872: test -s conftest.o
configure:2872: $? = 0
configure:2882: result: none needed
configure:2884: checking for an ANSI C-conforming const
configure:2972: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure: In function `main':
configure:3006: warning: unused variable `s'
configure:3026: warning: unused variable `foo'
configure:2993: warning: unused variable `zero'
configure:2987: warning: unused variable `x'
configure:3005: warning: `t' might be used uninitialized in this function
configure:3023: warning: `b' might be used uninitialized in this function
configure:2972: $? = 0
configure:2972: test -s conftest.o
configure:2972: $? = 0
configure:2973: result: yes
configure:2989: checking for gcc option to accept ANSI C
configure:3052: gcc -c  -Wall -Wmissing-prototypes -O2  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:3052: $? = 0
configure:3052: test -s conftest.o
configure:3052: $? = 0
configure:3053: result: 
configure:3060: checking whether to use prototypes
configure:3084: result: yes
configure:3089: checking for working alloca.h
configure:3131: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c  >&5
configure:3132: alloca.h: No such file or directory
configure:3131: $? = 1
configure: failed program was:
#line 3131 "configure"
#include "confdefs.h"
#include <alloca.h>
#ifdef F77_DUMMY_MAIN
#  ifdef __cplusplus
     extern "C"
#  endif
   int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
char *p = (char *) alloca (2 * sizeof (int));
  ;
  return 0;
}
configure:3132: result: no
configure:3142: checking for alloca
configure:3204: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c  >&5
configure: In function `main':
configure:3235: warning: unused variable `p'
configure:3204: $? = 0
configure:3204: test -s conftest
configure:3204: $? = 0
configure:3205: result: yes
configure:3395: checking if the compiler supports union initialisation
configure:3437: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:3437: $? = 0
configure:3437: test -s conftest.o
configure:3437: $? = 0
configure:3438: result: yes
configure:3447: checking if signed to unsigned casting is broken
configure:3481: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c  >&5
configure:3482: warning: return-type defaults to `int'
configure:3481: $? = 0
configure:3481: ./conftest
configure:3481: $? = 1
configure: program exited with status 1
configure: failed program was:
#line 3481 "configure"
#include "confdefs.h"
main(){return((int)(unsigned char)((char) -1) == 255);}
configure:3482: result: no
configure:3491: checking if the compiler supports variable-length arrays
configure:3533: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure: In function `main':
configure:3544: size of array `a' is too large
configure:3544: warning: unused variable `a'
configure:3544: warning: unused variable `i'
configure:3533: $? = 1
configure: failed program was:
#line 3533 "configure"
#include "confdefs.h"
int foo(), n;
#ifdef F77_DUMMY_MAIN
#  ifdef __cplusplus
     extern "C"
#  endif
   int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
int i[foo()], a[n+1];
  ;
  return 0;
}
configure:3534: result: no
configure:3543: checking whether make sets ${MAKE}
configure:3570: result: yes
configure:3583: checking for a BSD-compatible install
configure:3637: result: /usr/bin/install -c
configure:3685: checking for gawk
configure:3685: result: no
configure:3685: checking for mawk
configure:3685: result: no
configure:3685: checking for nawk
configure:3685: result: no
configure:3685: checking for awk
configure:3685: found /usr/bin/awk
configure:3685: result: awk
configure:3686: checking whether ln works
configure:3709: result: yes
configure:3748: checking for yodl
configure:3748: found /home/peta/usr/bin/yodl
configure:3748: result: yodl
configure:3789: checking for ansi2knr
configure:3789: result: no
configure:3867: checking for dirent.h that defines DIR
configure:3867: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:3867: $? = 0
configure:3867: test -s conftest.o
configure:3867: $? = 0
configure:3867: result: yes
configure:4087: checking for library containing opendir
configure:4087: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c  >&5
configure:4087: $? = 0
configure:4087: test -s conftest
configure:4087: $? = 0
configure:4087: result: none required
configure:4089: checking for ANSI C header files
configure:4215: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:4215: $? = 0
configure:4215: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c  >&5
configure:4215: $? = 0
configure:4215: ./conftest
configure:4215: $? = 0
configure:4216: result: yes
configure:4226: checking whether time.h and sys/time.h may both be included
configure:4272: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4272: $? = 0
configure:4272: test -s conftest.o
configure:4272: $? = 0
configure:4273: result: yes
configure:4283: checking whether stat file-mode macros are broken
configure:4328: result: no
configure:4338: checking for sys/wait.h that is POSIX.1 compatible
configure:4390: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4390: $? = 0
configure:4390: test -s conftest.o
configure:4390: $? = 0
configure:4391: result: yes
configure:4405: checking for pcre-config
configure:4436: result: no
configure:4497: checking for sys/types.h
configure:4497: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4497: $? = 0
configure:4497: test -s conftest.o
configure:4497: $? = 0
configure:4497: result: yes
configure:4497: checking for sys/stat.h
configure:4497: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4497: $? = 0
configure:4497: test -s conftest.o
configure:4497: $? = 0
configure:4497: result: yes
configure:4497: checking for stdlib.h
configure:4497: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4497: $? = 0
configure:4497: test -s conftest.o
configure:4497: $? = 0
configure:4497: result: yes
configure:4497: checking for string.h
configure:4497: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4497: $? = 0
configure:4497: test -s conftest.o
configure:4497: $? = 0
configure:4497: result: yes
configure:4497: checking for memory.h
configure:4497: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4497: $? = 0
configure:4497: test -s conftest.o
configure:4497: $? = 0
configure:4497: result: yes
configure:4497: checking for strings.h
configure:4497: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4497: $? = 0
configure:4497: test -s conftest.o
configure:4497: $? = 0
configure:4497: result: yes
configure:4497: checking for inttypes.h
configure:4497: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4497: $? = 0
configure:4497: test -s conftest.o
configure:4497: $? = 0
configure:4497: result: yes
configure:4497: checking for stdint.h
configure:4497: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4533: stdint.h: No such file or directory
configure:4497: $? = 1
configure: failed program was:
#line 4497 "configure"
#include "confdefs.h"
#include <stdio.h>
#if HAVE_SYS_TYPES_H
# include <sys/types.h>
#endif
#if HAVE_SYS_STAT_H
# include <sys/stat.h>
#endif
#if STDC_HEADERS
# include <stdlib.h>
# include <stddef.h>
#else
# if HAVE_STDLIB_H
#  include <stdlib.h>
# endif
#endif
#if HAVE_STRING_H
# if !STDC_HEADERS && HAVE_MEMORY_H
#  include <memory.h>
# endif
# include <string.h>
#endif
#if HAVE_STRINGS_H
# include <strings.h>
#endif
#if HAVE_INTTYPES_H
# include <inttypes.h>
#else
# if HAVE_STDINT_H
#  include <stdint.h>
# endif
#endif
#if HAVE_UNISTD_H
# include <unistd.h>
#endif

#include <stdint.h>
configure:4497: result: no
configure:4497: checking for unistd.h
configure:4497: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4497: $? = 0
configure:4497: test -s conftest.o
configure:4497: $? = 0
configure:4497: result: yes
configure:4649: checking sys/time.h usability
configure:4649: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4649: $? = 0
configure:4649: test -s conftest.o
configure:4649: $? = 0
configure:4649: result: yes
configure:4649: checking sys/time.h presence
configure:4649: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:4649: $? = 0
configure:4649: result: yes
configure:4649: checking for sys/time.h
configure:4649: result: yes
configure:4649: checking sys/times.h usability
configure:4649: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4649: $? = 0
configure:4649: test -s conftest.o
configure:4649: $? = 0
configure:4649: result: yes
configure:4649: checking sys/times.h presence
configure:4649: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:4649: $? = 0
configure:4649: result: yes
configure:4649: checking for sys/times.h
configure:4649: result: yes
configure:4649: checking sys/select.h usability
configure:4649: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4649: $? = 0
configure:4649: test -s conftest.o
configure:4649: $? = 0
configure:4649: result: yes
configure:4649: checking sys/select.h presence
configure:4649: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:4649: $? = 0
configure:4649: result: yes
configure:4649: checking for sys/select.h
configure:4649: result: yes
configure:4649: checking termcap.h usability
configure:4649: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4649: $? = 0
configure:4649: test -s conftest.o
configure:4649: $? = 0
configure:4649: result: yes
configure:4649: checking termcap.h presence
configure:4649: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:4649: $? = 0
configure:4649: result: yes
configure:4649: checking for termcap.h
configure:4649: result: yes
configure:4649: checking termio.h usability
configure:4649: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4684: termio.h: No such file or directory
configure:4649: $? = 1
configure: failed program was:
#line 4649 "configure"
#include "confdefs.h"
#include <stdio.h>
#if HAVE_SYS_TYPES_H
# include <sys/types.h>
#endif
#if HAVE_SYS_STAT_H
# include <sys/stat.h>
#endif
#if STDC_HEADERS
# include <stdlib.h>
# include <stddef.h>
#else
# if HAVE_STDLIB_H
#  include <stdlib.h>
# endif
#endif
#if HAVE_STRING_H
# if !STDC_HEADERS && HAVE_MEMORY_H
#  include <memory.h>
# endif
# include <string.h>
#endif
#if HAVE_STRINGS_H
# include <strings.h>
#endif
#if HAVE_INTTYPES_H
# include <inttypes.h>
#else
# if HAVE_STDINT_H
#  include <stdint.h>
# endif
#endif
#if HAVE_UNISTD_H
# include <unistd.h>
#endif
#include <termio.h>
configure:4649: result: no
configure:4649: checking termio.h presence
configure:4649: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:4650: termio.h: No such file or directory
configure:4649: $? = 1
configure: failed program was:
#line 4649 "configure"
#include "confdefs.h"
#include <termio.h>
configure:4649: result: no
configure:4649: checking for termio.h
configure:4649: result: no
configure:4649: checking termios.h usability
configure:4649: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4649: $? = 0
configure:4649: test -s conftest.o
configure:4649: $? = 0
configure:4649: result: yes
configure:4649: checking termios.h presence
configure:4649: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:4649: $? = 0
configure:4649: result: yes
configure:4649: checking for termios.h
configure:4649: result: yes
configure:4649: checking sys/param.h usability
configure:4649: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4649: $? = 0
configure:4649: test -s conftest.o
configure:4649: $? = 0
configure:4649: result: yes
configure:4649: checking sys/param.h presence
configure:4649: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:4649: $? = 0
configure:4649: result: yes
configure:4649: checking for sys/param.h
configure:4649: result: yes
configure:4649: checking sys/filio.h usability
configure:4649: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4649: $? = 0
configure:4649: test -s conftest.o
configure:4649: $? = 0
configure:4649: result: yes
configure:4649: checking sys/filio.h presence
configure:4649: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:4649: $? = 0
configure:4649: result: yes
configure:4649: checking for sys/filio.h
configure:4649: result: yes
configure:4649: checking for string.h
configure:4649: result: yes
configure:4649: checking for memory.h
configure:4649: result: yes
configure:4649: checking limits.h usability
configure:4649: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4649: $? = 0
configure:4649: test -s conftest.o
configure:4649: $? = 0
configure:4649: result: yes
configure:4649: checking limits.h presence
configure:4649: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:4649: $? = 0
configure:4649: result: yes
configure:4649: checking for limits.h
configure:4649: result: yes
configure:4649: checking fcntl.h usability
configure:4649: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4649: $? = 0
configure:4649: test -s conftest.o
configure:4649: $? = 0
configure:4649: result: yes
configure:4649: checking fcntl.h presence
configure:4649: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:4649: $? = 0
configure:4649: result: yes
configure:4649: checking for fcntl.h
configure:4649: result: yes
configure:4649: checking libc.h usability
configure:4649: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4684: libc.h: No such file or directory
configure:4649: $? = 1
configure: failed program was:
#line 4649 "configure"
#include "confdefs.h"
#include <stdio.h>
#if HAVE_SYS_TYPES_H
# include <sys/types.h>
#endif
#if HAVE_SYS_STAT_H
# include <sys/stat.h>
#endif
#if STDC_HEADERS
# include <stdlib.h>
# include <stddef.h>
#else
# if HAVE_STDLIB_H
#  include <stdlib.h>
# endif
#endif
#if HAVE_STRING_H
# if !STDC_HEADERS && HAVE_MEMORY_H
#  include <memory.h>
# endif
# include <string.h>
#endif
#if HAVE_STRINGS_H
# include <strings.h>
#endif
#if HAVE_INTTYPES_H
# include <inttypes.h>
#else
# if HAVE_STDINT_H
#  include <stdint.h>
# endif
#endif
#if HAVE_UNISTD_H
# include <unistd.h>
#endif
#include <libc.h>
configure:4649: result: no
configure:4649: checking libc.h presence
configure:4649: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:4650: libc.h: No such file or directory
configure:4649: $? = 1
configure: failed program was:
#line 4649 "configure"
#include "confdefs.h"
#include <libc.h>
configure:4649: result: no
configure:4649: checking for libc.h
configure:4649: result: no
configure:4649: checking sys/utsname.h usability
configure:4649: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4649: $? = 0
configure:4649: test -s conftest.o
configure:4649: $? = 0
configure:4649: result: yes
configure:4649: checking sys/utsname.h presence
configure:4649: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:4649: $? = 0
configure:4649: result: yes
configure:4649: checking for sys/utsname.h
configure:4649: result: yes
configure:4649: checking sys/resource.h usability
configure:4649: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4649: $? = 0
configure:4649: test -s conftest.o
configure:4649: $? = 0
configure:4649: result: yes
configure:4649: checking sys/resource.h presence
configure:4649: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:4649: $? = 0
configure:4649: result: yes
configure:4649: checking for sys/resource.h
configure:4649: result: yes
configure:4649: checking locale.h usability
configure:4649: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4649: $? = 0
configure:4649: test -s conftest.o
configure:4649: $? = 0
configure:4649: result: yes
configure:4649: checking locale.h presence
configure:4649: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:4649: $? = 0
configure:4649: result: yes
configure:4649: checking for locale.h
configure:4649: result: yes
configure:4649: checking errno.h usability
configure:4649: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4649: $? = 0
configure:4649: test -s conftest.o
configure:4649: $? = 0
configure:4649: result: yes
configure:4649: checking errno.h presence
configure:4649: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:4649: $? = 0
configure:4649: result: yes
configure:4649: checking for errno.h
configure:4649: result: yes
configure:4649: checking stdio.h usability
configure:4649: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4649: $? = 0
configure:4649: test -s conftest.o
configure:4649: $? = 0
configure:4649: result: yes
configure:4649: checking stdio.h presence
configure:4649: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:4649: $? = 0
configure:4649: result: yes
configure:4649: checking for stdio.h
configure:4649: result: yes
configure:4649: checking for stdlib.h
configure:4649: result: yes
configure:4649: checking for unistd.h
configure:4649: result: yes
configure:4649: checking sys/capability.h usability
configure:4649: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4684: sys/capability.h: No such file or directory
configure:4649: $? = 1
configure: failed program was:
#line 4649 "configure"
#include "confdefs.h"
#include <stdio.h>
#if HAVE_SYS_TYPES_H
# include <sys/types.h>
#endif
#if HAVE_SYS_STAT_H
# include <sys/stat.h>
#endif
#if STDC_HEADERS
# include <stdlib.h>
# include <stddef.h>
#else
# if HAVE_STDLIB_H
#  include <stdlib.h>
# endif
#endif
#if HAVE_STRING_H
# if !STDC_HEADERS && HAVE_MEMORY_H
#  include <memory.h>
# endif
# include <string.h>
#endif
#if HAVE_STRINGS_H
# include <strings.h>
#endif
#if HAVE_INTTYPES_H
# include <inttypes.h>
#else
# if HAVE_STDINT_H
#  include <stdint.h>
# endif
#endif
#if HAVE_UNISTD_H
# include <unistd.h>
#endif
#include <sys/capability.h>
configure:4649: result: no
configure:4649: checking sys/capability.h presence
configure:4649: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:4650: sys/capability.h: No such file or directory
configure:4649: $? = 1
configure: failed program was:
#line 4649 "configure"
#include "confdefs.h"
#include <sys/capability.h>
configure:4649: result: no
configure:4649: checking for sys/capability.h
configure:4649: result: no
configure:4649: checking utmp.h usability
configure:4649: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4649: $? = 0
configure:4649: test -s conftest.o
configure:4649: $? = 0
configure:4649: result: yes
configure:4649: checking utmp.h presence
configure:4649: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:4649: $? = 0
configure:4649: result: yes
configure:4649: checking for utmp.h
configure:4649: result: yes
configure:4649: checking utmpx.h usability
configure:4649: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4684: utmpx.h: No such file or directory
configure:4649: $? = 1
configure: failed program was:
#line 4649 "configure"
#include "confdefs.h"
#include <stdio.h>
#if HAVE_SYS_TYPES_H
# include <sys/types.h>
#endif
#if HAVE_SYS_STAT_H
# include <sys/stat.h>
#endif
#if STDC_HEADERS
# include <stdlib.h>
# include <stddef.h>
#else
# if HAVE_STDLIB_H
#  include <stdlib.h>
# endif
#endif
#if HAVE_STRING_H
# if !STDC_HEADERS && HAVE_MEMORY_H
#  include <memory.h>
# endif
# include <string.h>
#endif
#if HAVE_STRINGS_H
# include <strings.h>
#endif
#if HAVE_INTTYPES_H
# include <inttypes.h>
#else
# if HAVE_STDINT_H
#  include <stdint.h>
# endif
#endif
#if HAVE_UNISTD_H
# include <unistd.h>
#endif
#include <utmpx.h>
configure:4649: result: no
configure:4649: checking utmpx.h presence
configure:4649: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:4650: utmpx.h: No such file or directory
configure:4649: $? = 1
configure: failed program was:
#line 4649 "configure"
#include "confdefs.h"
#include <utmpx.h>
configure:4649: result: no
configure:4649: checking for utmpx.h
configure:4649: result: no
configure:4649: checking for sys/types.h
configure:4649: result: yes
configure:4649: checking pwd.h usability
configure:4649: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4649: $? = 0
configure:4649: test -s conftest.o
configure:4649: $? = 0
configure:4649: result: yes
configure:4649: checking pwd.h presence
configure:4649: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:4649: $? = 0
configure:4649: result: yes
configure:4649: checking for pwd.h
configure:4649: result: yes
configure:4649: checking grp.h usability
configure:4649: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4649: $? = 0
configure:4649: test -s conftest.o
configure:4649: $? = 0
configure:4649: result: yes
configure:4649: checking grp.h presence
configure:4649: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:4649: $? = 0
configure:4649: result: yes
configure:4649: checking for grp.h
configure:4649: result: yes
configure:4649: checking poll.h usability
configure:4649: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4649: $? = 0
configure:4649: test -s conftest.o
configure:4649: $? = 0
configure:4649: result: yes
configure:4649: checking poll.h presence
configure:4649: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:4649: $? = 0
configure:4649: result: yes
configure:4649: checking for poll.h
configure:4649: result: yes
configure:4649: checking sys/mman.h usability
configure:4649: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4649: $? = 0
configure:4649: test -s conftest.o
configure:4649: $? = 0
configure:4649: result: yes
configure:4649: checking sys/mman.h presence
configure:4649: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:4649: $? = 0
configure:4649: result: yes
configure:4649: checking for sys/mman.h
configure:4649: result: yes
configure:4649: checking netinet/in_systm.h usability
configure:4649: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4649: $? = 0
configure:4649: test -s conftest.o
configure:4649: $? = 0
configure:4649: result: yes
configure:4649: checking netinet/in_systm.h presence
configure:4649: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:4649: $? = 0
configure:4649: result: yes
configure:4649: checking for netinet/in_systm.h
configure:4649: result: yes
configure:4649: checking pcre.h usability
configure:4649: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4684: pcre.h: No such file or directory
configure:4649: $? = 1
configure: failed program was:
#line 4649 "configure"
#include "confdefs.h"
#include <stdio.h>
#if HAVE_SYS_TYPES_H
# include <sys/types.h>
#endif
#if HAVE_SYS_STAT_H
# include <sys/stat.h>
#endif
#if STDC_HEADERS
# include <stdlib.h>
# include <stddef.h>
#else
# if HAVE_STDLIB_H
#  include <stdlib.h>
# endif
#endif
#if HAVE_STRING_H
# if !STDC_HEADERS && HAVE_MEMORY_H
#  include <memory.h>
# endif
# include <string.h>
#endif
#if HAVE_STRINGS_H
# include <strings.h>
#endif
#if HAVE_INTTYPES_H
# include <inttypes.h>
#else
# if HAVE_STDINT_H
#  include <stdint.h>
# endif
#endif
#if HAVE_UNISTD_H
# include <unistd.h>
#endif
#include <pcre.h>
configure:4649: result: no
configure:4649: checking pcre.h presence
configure:4649: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:4650: pcre.h: No such file or directory
configure:4649: $? = 1
configure: failed program was:
#line 4649 "configure"
#include "confdefs.h"
#include <pcre.h>
configure:4649: result: no
configure:4649: checking for pcre.h
configure:4649: result: no
configure:4649: checking langinfo.h usability
configure:4649: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4649: $? = 0
configure:4649: test -s conftest.o
configure:4649: $? = 0
configure:4649: result: yes
configure:4649: checking langinfo.h presence
configure:4649: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:4649: $? = 0
configure:4649: result: yes
configure:4649: checking for langinfo.h
configure:4649: result: yes
configure:4649: checking wchar.h usability
configure:4649: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4649: $? = 0
configure:4649: test -s conftest.o
configure:4649: $? = 0
configure:4649: result: yes
configure:4649: checking wchar.h presence
configure:4649: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:4649: $? = 0
configure:4649: result: yes
configure:4649: checking for wchar.h
configure:4649: result: yes
configure:4649: checking stddef.h usability
configure:4649: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4649: $? = 0
configure:4649: test -s conftest.o
configure:4649: $? = 0
configure:4649: result: yes
configure:4649: checking stddef.h presence
configure:4649: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:4649: $? = 0
configure:4649: result: yes
configure:4649: checking for stddef.h
configure:4649: result: yes
configure:4880: checking dlfcn.h usability
configure:4880: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4880: $? = 0
configure:4880: test -s conftest.o
configure:4880: $? = 0
configure:4880: result: yes
configure:4880: checking dlfcn.h presence
configure:4880: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:4880: $? = 0
configure:4880: result: yes
configure:4880: checking for dlfcn.h
configure:4880: result: yes
configure:4880: checking dl.h usability
configure:4880: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4915: dl.h: No such file or directory
configure:4880: $? = 1
configure: failed program was:
#line 4880 "configure"
#include "confdefs.h"
#include <stdio.h>
#if HAVE_SYS_TYPES_H
# include <sys/types.h>
#endif
#if HAVE_SYS_STAT_H
# include <sys/stat.h>
#endif
#if STDC_HEADERS
# include <stdlib.h>
# include <stddef.h>
#else
# if HAVE_STDLIB_H
#  include <stdlib.h>
# endif
#endif
#if HAVE_STRING_H
# if !STDC_HEADERS && HAVE_MEMORY_H
#  include <memory.h>
# endif
# include <string.h>
#endif
#if HAVE_STRINGS_H
# include <strings.h>
#endif
#if HAVE_INTTYPES_H
# include <inttypes.h>
#else
# if HAVE_STDINT_H
#  include <stdint.h>
# endif
#endif
#if HAVE_UNISTD_H
# include <unistd.h>
#endif
#include <dl.h>
configure:4880: result: no
configure:4880: checking dl.h presence
configure:4880: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:4881: dl.h: No such file or directory
configure:4880: $? = 1
configure: failed program was:
#line 4880 "configure"
#include "confdefs.h"
#include <dl.h>
configure:4880: result: no
configure:4880: checking for dl.h
configure:4880: result: no
configure:4935: checking for conflicts in sys/time.h and sys/select.h
configure:4935: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure: In function `main':
configure:4947: warning: unused variable `i'
configure:4935: $? = 0
configure:4935: test -s conftest.o
configure:4935: $? = 0
configure:4935: result: no
configure:4937: checking POSIX termios
configure:4982: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c  >&5
configure:4982: $? = 0
configure:4982: test -s conftest
configure:4982: $? = 0
configure:4983: result: yes
configure:5035: checking TIOCGWINSZ in termios.h
configure:5035: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c  >&5
configure: In function `main':
configure:5047: warning: unused variable `x'
configure:5035: $? = 0
configure:5035: test -s conftest
configure:5035: $? = 0
configure:5035: result: yes
configure:5192: checking sys/ptem.h usability
configure:5192: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:5227: sys/ptem.h: No such file or directory
configure:5192: $? = 1
configure: failed program was:
#line 5192 "configure"
#include "confdefs.h"
#include <stdio.h>
#if HAVE_SYS_TYPES_H
# include <sys/types.h>
#endif
#if HAVE_SYS_STAT_H
# include <sys/stat.h>
#endif
#if STDC_HEADERS
# include <stdlib.h>
# include <stddef.h>
#else
# if HAVE_STDLIB_H
#  include <stdlib.h>
# endif
#endif
#if HAVE_STRING_H
# if !STDC_HEADERS && HAVE_MEMORY_H
#  include <memory.h>
# endif
# include <string.h>
#endif
#if HAVE_STRINGS_H
# include <strings.h>
#endif
#if HAVE_INTTYPES_H
# include <inttypes.h>
#else
# if HAVE_STDINT_H
#  include <stdint.h>
# endif
#endif
#if HAVE_UNISTD_H
# include <unistd.h>
#endif
#include <sys/ptem.h>
configure:5192: result: no
configure:5192: checking sys/ptem.h presence
configure:5192: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:5193: sys/ptem.h: No such file or directory
configure:5192: $? = 1
configure: failed program was:
#line 5192 "configure"
#include "confdefs.h"
#include <sys/ptem.h>
configure:5192: result: no
configure:5192: checking for sys/ptem.h
configure:5192: result: no
configure:5203: checking for printf in -lc
configure:5255: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -lc   >&5
configure:5255: $? = 0
configure:5255: test -s conftest
configure:5255: $? = 0
configure:5256: result: yes
configure:5264: checking for pow in -lm
configure:5316: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -lm   -lc >&5
configure:5316: $? = 0
configure:5316: test -s conftest
configure:5316: $? = 0
configure:5317: result: yes
configure:5453: checking for library containing tgetent
configure:5553: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -lm  -lc >&5
/tmp/ccnnSsSV.o: In function `main':
/tmp/ccnnSsSV.o(.text+0x7): undefined reference to `tgetent'
configure:5553: $? = 1
configure: failed program was:
#line 5553 "configure"
#include "confdefs.h"

/* Override any gcc2 internal prototype to avoid an error.  */
#ifdef __cplusplus
extern "C"
#endif
/* We use char because int might match the return type of a gcc2
   builtin and then its argument prototype would still apply.  */
char tgetent ();
#ifdef F77_DUMMY_MAIN
#  ifdef __cplusplus
     extern "C"
#  endif
   int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
tgetent ();
  ;
  return 0;
}
configure:5553: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo  -lm  -lc >&5
configure:5553: $? = 0
configure:5553: test -s conftest
configure:5553: $? = 0
configure:5554: result: -ltinfo
configure:6214: checking for library containing yp_all
configure:6314: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:6314: $? = 0
configure:6314: test -s conftest
configure:6314: $? = 0
configure:6315: result: none required
configure:6393: checking for dlopen in -ldl
configure:6393: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl  -ltinfo -lm  -lc >&5
/usr/libexec/elf/ld: cannot find -ldl
configure:6393: $? = 1
configure: failed program was:
#line 6393 "configure"
#include "confdefs.h"

/* Override any gcc2 internal prototype to avoid an error.  */
#ifdef __cplusplus
extern "C"
#endif
/* We use char because int might match the return type of a gcc2
   builtin and then its argument prototype would still apply.  */
char dlopen ();
#ifdef F77_DUMMY_MAIN
#  ifdef __cplusplus
     extern "C"
#  endif
   int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
dlopen ();
  ;
  return 0;
}
configure:6393: result: no
configure:6396: checking for cap_get_proc in -lcap
configure:6448: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -lcap  -ltinfo -lm  -lc >&5
/usr/libexec/elf/ld: cannot find -lcap
configure:6448: $? = 1
configure: failed program was:
#line 6448 "configure"
#include "confdefs.h"

/* Override any gcc2 internal prototype to avoid an error.  */
#ifdef __cplusplus
extern "C"
#endif
/* We use char because int might match the return type of a gcc2
   builtin and then its argument prototype would still apply.  */
char cap_get_proc ();
#ifdef F77_DUMMY_MAIN
#  ifdef __cplusplus
     extern "C"
#  endif
   int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
cap_get_proc ();
  ;
  return 0;
}
configure:6449: result: no
configure:6462: checking for socket in -lsocket
configure:6514: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -lsocket  -ltinfo -lm  -lc >&5
/usr/libexec/elf/ld: cannot find -lsocket
configure:6514: $? = 1
configure: failed program was:
#line 6514 "configure"
#include "confdefs.h"

/* Override any gcc2 internal prototype to avoid an error.  */
#ifdef __cplusplus
extern "C"
#endif
/* We use char because int might match the return type of a gcc2
   builtin and then its argument prototype would still apply.  */
char socket ();
#ifdef F77_DUMMY_MAIN
#  ifdef __cplusplus
     extern "C"
#  endif
   int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
socket ();
  ;
  return 0;
}
configure:6515: result: no
configure:6528: checking for iconv in -liconv
configure:6580: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -liconv  -ltinfo -lm  -lc >&5
/usr/libexec/elf/ld: cannot find -liconv
configure:6580: $? = 1
configure: failed program was:
#line 6580 "configure"
#include "confdefs.h"

/* Override any gcc2 internal prototype to avoid an error.  */
#ifdef __cplusplus
extern "C"
#endif
/* We use char because int might match the return type of a gcc2
   builtin and then its argument prototype would still apply.  */
char iconv ();
#ifdef F77_DUMMY_MAIN
#  ifdef __cplusplus
     extern "C"
#  endif
   int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
iconv ();
  ;
  return 0;
}
configure:6581: result: no
configure:6593: checking for library containing pcre_compile
configure:6693: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
/tmp/ccLJRVbg.o: In function `main':
/tmp/ccLJRVbg.o(.text+0x7): undefined reference to `pcre_compile'
configure:6693: $? = 1
configure: failed program was:
#line 6693 "configure"
#include "confdefs.h"

/* Override any gcc2 internal prototype to avoid an error.  */
#ifdef __cplusplus
extern "C"
#endif
/* We use char because int might match the return type of a gcc2
   builtin and then its argument prototype would still apply.  */
char pcre_compile ();
#ifdef F77_DUMMY_MAIN
#  ifdef __cplusplus
     extern "C"
#  endif
   int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
pcre_compile ();
  ;
  return 0;
}
configure:6693: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -lpcre  -ltinfo -lm  -lc >&5
/usr/libexec/elf/ld: cannot find -lpcre
configure:6693: $? = 1
configure: failed program was:
#line 6693 "configure"
#include "confdefs.h"

/* Override any gcc2 internal prototype to avoid an error.  */
#ifdef __cplusplus
extern "C"
#endif
/* We use char because int might match the return type of a gcc2
   builtin and then its argument prototype would still apply.  */
char pcre_compile ();
#ifdef F77_DUMMY_MAIN
#  ifdef __cplusplus
     extern "C"
#  endif
   int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
pcre_compile ();
  ;
  return 0;
}
configure:6694: result: no
configure:6702: checking if an include file defines ospeed
configure:6750: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:6750: $? = 0
configure:6750: test -s conftest
configure:6750: $? = 0
configure:6751: result: yes
configure:6819: checking return type of signal handlers
configure:6871: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure: In function `main':
configure:6892: warning: unused variable `i'
configure:6871: $? = 0
configure:6871: test -s conftest.o
configure:6871: $? = 0
configure:6872: result: void
configure:6880: checking for pid_t
configure:6925: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:6925: $? = 0
configure:6925: test -s conftest.o
configure:6925: $? = 0
configure:6926: result: yes
configure:6938: checking for off_t
configure:6983: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:6983: $? = 0
configure:6983: test -s conftest.o
configure:6983: $? = 0
configure:6984: result: yes
configure:6996: checking for ino_t
configure:7041: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:7041: $? = 0
configure:7041: test -s conftest.o
configure:7041: $? = 0
configure:7042: result: yes
configure:7054: checking for mode_t
configure:7099: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:7099: $? = 0
configure:7099: test -s conftest.o
configure:7099: $? = 0
configure:7100: result: yes
configure:7112: checking for uid_t in sys/types.h
configure:7132: result: yes
configure:7147: checking for size_t
configure:7192: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:7192: $? = 0
configure:7192: test -s conftest.o
configure:7192: $? = 0
configure:7193: result: yes
configure:7206: checking if long is 64 bits
configure:7240: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:7240: $? = 0
configure:7240: ./conftest
configure:7240: $? = 1
configure: program exited with status 1
configure: failed program was:
#line 7240 "configure"
#include "confdefs.h"
int main() { return sizeof(long) < 8; }
configure:7241: result: no
configure:7705: checking if off_t is 64 bit
configure:7705: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:7709: warning: return-type defaults to `int'
configure:7705: $? = 0
configure:7705: ./conftest
configure:7705: $? = 0
configure:7705: result: yes
configure:7705: checking if ino_t is 64 bit
configure:7705: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:7709: warning: return-type defaults to `int'
configure:7705: $? = 0
configure:7705: ./conftest
configure:7705: $? = 1
configure: program exited with status 1
configure: failed program was:
#line 7705 "configure"
#include "confdefs.h"

#include <sys/types.h>

main() { return sizeof(ino_t) < 8; }

configure:7705: result: no
configure:7705: checking if compiler has a 64 bit type
configure:7705: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:7712: warning: return-type defaults to `int'
configure: In function `main':
configure:7714: warning: unused variable `bar'
configure:7705: $? = 0
configure:7705: ./conftest
configure:7705: $? = 0
configure:7705: result: long long
configure:7705: checking for a corresponding unsigned 64 bit type
configure:7705: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:7712: warning: return-type defaults to `int'
configure: In function `main':
configure:7714: warning: unused variable `bar'
configure:7705: $? = 0
configure:7705: ./conftest
configure:7705: $? = 0
configure:7705: result: unsigned long long
configure:7707: checking for sigset_t
configure:7750: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure: In function `main':
configure:7762: warning: unused variable `tempsigset'
configure:7750: $? = 0
configure:7750: test -s conftest.o
configure:7750: $? = 0
configure:7751: result: yes
configure:7760: checking for struct timezone
configure:7807: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure: In function `main':
configure:7822: warning: unused variable `testvar'
configure:7807: $? = 0
configure:7807: test -s conftest.o
configure:7807: $? = 0
configure:7808: result: yes
configure:7818: checking for struct utmp
configure:7868: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure: In function `main':
configure:7886: warning: unused variable `testvar'
configure:7868: $? = 0
configure:7868: test -s conftest.o
configure:7868: $? = 0
configure:7869: result: yes
configure:7878: checking for struct utmpx
configure:7928: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure: In function `main':
configure:7946: storage size of `testvar' isn't known
configure:7946: warning: unused variable `testvar'
configure:7928: $? = 1
configure: failed program was:
#line 7928 "configure"
#include "confdefs.h"

#ifdef HAVE_SYS_TYPES_H
# include <sys/types.h>
#endif
#ifdef HAVE_UTMPX_H
# include <utmpx.h>
#endif

#ifdef F77_DUMMY_MAIN
#  ifdef __cplusplus
     extern "C"
#  endif
   int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
struct utmpx testvar;
  ;
  return 0;
}
configure:7929: result: no
configure:7939: checking for ut_host in struct utmp
configure:7989: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure: In function `main':
configure:8007: warning: statement with no effect
configure:7989: $? = 0
configure:7989: test -s conftest.o
configure:7989: $? = 0
configure:7990: result: yes
configure:7999: checking for ut_host in struct utmpx
configure:8049: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure: In function `main':
configure:8067: storage size of `testvar' isn't known
configure:8067: warning: unused variable `testvar'
configure:8049: $? = 1
configure: failed program was:
#line 8049 "configure"
#include "confdefs.h"

#ifdef HAVE_SYS_TYPES_H
# include <sys/types.h>
#endif
#ifdef HAVE_UTMPX_H
# include <utmpx.h>
#endif

#ifdef F77_DUMMY_MAIN
#  ifdef __cplusplus
     extern "C"
#  endif
   int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
struct utmpx testvar; testvar.ut_host;
  ;
  return 0;
}
configure:8050: result: no
configure:8059: checking for ut_xtime in struct utmpx
configure:8109: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure: In function `main':
configure:8127: storage size of `testvar' isn't known
configure:8127: warning: unused variable `testvar'
configure:8109: $? = 1
configure: failed program was:
#line 8109 "configure"
#include "confdefs.h"

#ifdef HAVE_SYS_TYPES_H
# include <sys/types.h>
#endif
#ifdef HAVE_UTMPX_H
# include <utmpx.h>
#endif

#ifdef F77_DUMMY_MAIN
#  ifdef __cplusplus
     extern "C"
#  endif
   int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
struct utmpx testvar; testvar.ut_xtime;
  ;
  return 0;
}
configure:8110: result: no
configure:8119: checking for ut_tv in struct utmpx
configure:8169: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure: In function `main':
configure:8187: storage size of `testvar' isn't known
configure:8187: warning: unused variable `testvar'
configure:8169: $? = 1
configure: failed program was:
#line 8169 "configure"
#include "confdefs.h"

#ifdef HAVE_SYS_TYPES_H
# include <sys/types.h>
#endif
#ifdef HAVE_UTMPX_H
# include <utmpx.h>
#endif

#ifdef F77_DUMMY_MAIN
#  ifdef __cplusplus
     extern "C"
#  endif
   int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
struct utmpx testvar; testvar.ut_tv;
  ;
  return 0;
}
configure:8170: result: no
configure:8180: checking for d_ino in struct dirent
configure:8230: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure: In function `main':
configure:8248: warning: statement with no effect
configure:8230: $? = 0
configure:8230: test -s conftest.o
configure:8230: $? = 0
configure:8231: result: yes
configure:8240: checking for d_stat in struct dirent
configure:8290: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure: In function `main':
configure:8308: structure has no member named `d_stat'
configure:8290: $? = 1
configure: failed program was:
#line 8290 "configure"
#include "confdefs.h"

#ifdef HAVE_SYS_TYPES_H
# include <sys/types.h>
#endif
#ifdef HAVE_DIRENT_H
# include <dirent.h>
#endif

#ifdef F77_DUMMY_MAIN
#  ifdef __cplusplus
     extern "C"
#  endif
   int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
struct dirent testvar; testvar.d_stat;
  ;
  return 0;
}
configure:8291: result: no
configure:8300: checking for d_ino in struct direct
configure:8356: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure: In function `main':
configure:8380: storage size of `testvar' isn't known
configure:8380: warning: unused variable `testvar'
configure:8356: $? = 1
configure: failed program was:
#line 8356 "configure"
#include "confdefs.h"

#ifdef HAVE_SYS_TYPES_H
# include <sys/types.h>
#endif
#ifdef HAVE_SYS_NDIR_H
# include <sys/ndir.h>
#endif
#ifdef HAVE_SYS_DIR_H
# include <sys/dir.h>
#endif
#ifdef HAVE_NDIR_H
# include <ndir.h>
#endif

#ifdef F77_DUMMY_MAIN
#  ifdef __cplusplus
     extern "C"
#  endif
   int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
struct direct testvar; testvar.d_ino;
  ;
  return 0;
}
configure:8357: result: no
configure:8366: checking for d_stat in struct direct
configure:8422: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure: In function `main':
configure:8446: storage size of `testvar' isn't known
configure:8446: warning: unused variable `testvar'
configure:8422: $? = 1
configure: failed program was:
#line 8422 "configure"
#include "confdefs.h"

#ifdef HAVE_SYS_TYPES_H
# include <sys/types.h>
#endif
#ifdef HAVE_SYS_NDIR_H
# include <sys/ndir.h>
#endif
#ifdef HAVE_SYS_DIR_H
# include <sys/dir.h>
#endif
#ifdef HAVE_NDIR_H
# include <ndir.h>
#endif

#ifdef F77_DUMMY_MAIN
#  ifdef __cplusplus
     extern "C"
#  endif
   int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
struct direct testvar; testvar.d_stat;
  ;
  return 0;
}
configure:8423: result: no
configure:8433: checking for sin6_scope_id in struct sockaddr_in6
configure:8481: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure: In function `main':
configure:8497: warning: statement with no effect
configure:8481: $? = 0
configure:8481: test -s conftest.o
configure:8481: $? = 0
configure:8482: result: yes
configure:8492: checking if we need our own h_errno
configure:8534: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8534: $? = 0
configure:8534: test -s conftest
configure:8534: $? = 0
configure:8535: result: no
configure:8725: checking for strftime
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for difftime
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for gettimeofday
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for select
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for poll
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for readlink
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for faccessx
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
/tmp/cc1Wii99.o: In function `main':
/tmp/cc1Wii99.o(.text+0x9): undefined reference to `faccessx'
configure:8725: $? = 1
configure: failed program was:
#line 8725 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
    which can conflict with char faccessx (); below.  */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error.  */
#ifdef __cplusplus
extern "C"
#endif
/* We use char because int might match the return type of a gcc2
   builtin and then its argument prototype would still apply.  */
char faccessx ();
char (*f) ();

#ifdef F77_DUMMY_MAIN
#  ifdef __cplusplus
     extern "C"
#  endif
   int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
/* The GNU C library defines this for functions which it implements
    to always fail with ENOSYS.  Some functions are actually named
    something starting with __ and the normal name is an alias.  */
#if defined (__stub_faccessx) || defined (__stub___faccessx)
choke me
#else
f = faccessx;
#endif

  ;
  return 0;
}
configure:8725: result: no
configure:8725: checking for fchdir
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for ftruncate
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for fstat
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for lstat
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for lchown
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for fseeko
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for ftello
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for mkfifo
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for _mktemp
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for mkstemp
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for waitpid
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for wait3
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for sigaction
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for sigblock
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for sighold
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
/tmp/ccpdHMsK.o: In function `main':
/tmp/ccpdHMsK.o(.text+0x9): undefined reference to `sighold'
configure:8725: $? = 1
configure: failed program was:
#line 8725 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
    which can conflict with char sighold (); below.  */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error.  */
#ifdef __cplusplus
extern "C"
#endif
/* We use char because int might match the return type of a gcc2
   builtin and then its argument prototype would still apply.  */
char sighold ();
char (*f) ();

#ifdef F77_DUMMY_MAIN
#  ifdef __cplusplus
     extern "C"
#  endif
   int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
/* The GNU C library defines this for functions which it implements
    to always fail with ENOSYS.  Some functions are actually named
    something starting with __ and the normal name is an alias.  */
#if defined (__stub_sighold) || defined (__stub___sighold)
choke me
#else
f = sighold;
#endif

  ;
  return 0;
}
configure:8725: result: no
configure:8725: checking for sigrelse
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
/tmp/ccTJGaqo.o: In function `main':
/tmp/ccTJGaqo.o(.text+0x9): undefined reference to `sigrelse'
configure:8725: $? = 1
configure: failed program was:
#line 8725 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
    which can conflict with char sigrelse (); below.  */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error.  */
#ifdef __cplusplus
extern "C"
#endif
/* We use char because int might match the return type of a gcc2
   builtin and then its argument prototype would still apply.  */
char sigrelse ();
char (*f) ();

#ifdef F77_DUMMY_MAIN
#  ifdef __cplusplus
     extern "C"
#  endif
   int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
/* The GNU C library defines this for functions which it implements
    to always fail with ENOSYS.  Some functions are actually named
    something starting with __ and the normal name is an alias.  */
#if defined (__stub_sigrelse) || defined (__stub___sigrelse)
choke me
#else
f = sigrelse;
#endif

  ;
  return 0;
}
configure:8725: result: no
configure:8725: checking for sigsetmask
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for sigprocmask
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for killpg
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for setpgid
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for setpgrp
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for tcsetpgrp
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for tcgetattr
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for nice
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for gethostname
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for gethostbyname2
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for getipnodebyname
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for inet_aton
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for inet_pton
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for inet_ntop
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for getlogin
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for getpwent
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for getpwnam
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for getpwuid
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for getgrgid
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for getgrnam
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for initgroups
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for nis_list
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
/tmp/ccsYgESM.o: In function `main':
/tmp/ccsYgESM.o(.text+0x9): undefined reference to `nis_list'
configure:8725: $? = 1
configure: failed program was:
#line 8725 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
    which can conflict with char nis_list (); below.  */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error.  */
#ifdef __cplusplus
extern "C"
#endif
/* We use char because int might match the return type of a gcc2
   builtin and then its argument prototype would still apply.  */
char nis_list ();
char (*f) ();

#ifdef F77_DUMMY_MAIN
#  ifdef __cplusplus
     extern "C"
#  endif
   int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
/* The GNU C library defines this for functions which it implements
    to always fail with ENOSYS.  Some functions are actually named
    something starting with __ and the normal name is an alias.  */
#if defined (__stub_nis_list) || defined (__stub___nis_list)
choke me
#else
f = nis_list;
#endif

  ;
  return 0;
}
configure:8725: result: no
configure:8725: checking for setuid
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for seteuid
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for setreuid
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for setresuid
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for setsid
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for memcpy
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8735: warning: conflicting types for built-in function `memcpy'
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for memmove
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for strstr
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for strerror
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for cap_get_proc
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
/tmp/ccb11OwO.o: In function `main':
/tmp/ccb11OwO.o(.text+0x9): undefined reference to `cap_get_proc'
configure:8725: $? = 1
configure: failed program was:
#line 8725 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
    which can conflict with char cap_get_proc (); below.  */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error.  */
#ifdef __cplusplus
extern "C"
#endif
/* We use char because int might match the return type of a gcc2
   builtin and then its argument prototype would still apply.  */
char cap_get_proc ();
char (*f) ();

#ifdef F77_DUMMY_MAIN
#  ifdef __cplusplus
     extern "C"
#  endif
   int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
/* The GNU C library defines this for functions which it implements
    to always fail with ENOSYS.  Some functions are actually named
    something starting with __ and the normal name is an alias.  */
#if defined (__stub_cap_get_proc) || defined (__stub___cap_get_proc)
choke me
#else
f = cap_get_proc;
#endif

  ;
  return 0;
}
configure:8725: result: no
configure:8725: checking for getrlimit
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for setlocale
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for uname
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for signgam
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for putenv
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for getenv
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for brk
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for sbrk
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for pathconf
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for sysconf
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for tgetent
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for tigetflag
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for tigetnum
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for tigetstr
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for setupterm
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for pcre_compile
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
/tmp/ccPTpwFH.o: In function `main':
/tmp/ccPTpwFH.o(.text+0x9): undefined reference to `pcre_compile'
configure:8725: $? = 1
configure: failed program was:
#line 8725 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
    which can conflict with char pcre_compile (); below.  */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error.  */
#ifdef __cplusplus
extern "C"
#endif
/* We use char because int might match the return type of a gcc2
   builtin and then its argument prototype would still apply.  */
char pcre_compile ();
char (*f) ();

#ifdef F77_DUMMY_MAIN
#  ifdef __cplusplus
     extern "C"
#  endif
   int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
/* The GNU C library defines this for functions which it implements
    to always fail with ENOSYS.  Some functions are actually named
    something starting with __ and the normal name is an alias.  */
#if defined (__stub_pcre_compile) || defined (__stub___pcre_compile)
choke me
#else
f = pcre_compile;
#endif

  ;
  return 0;
}
configure:8725: result: no
configure:8725: checking for pcre_study
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
/tmp/cchdQDsX.o: In function `main':
/tmp/cchdQDsX.o(.text+0x9): undefined reference to `pcre_study'
configure:8725: $? = 1
configure: failed program was:
#line 8725 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
    which can conflict with char pcre_study (); below.  */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error.  */
#ifdef __cplusplus
extern "C"
#endif
/* We use char because int might match the return type of a gcc2
   builtin and then its argument prototype would still apply.  */
char pcre_study ();
char (*f) ();

#ifdef F77_DUMMY_MAIN
#  ifdef __cplusplus
     extern "C"
#  endif
   int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
/* The GNU C library defines this for functions which it implements
    to always fail with ENOSYS.  Some functions are actually named
    something starting with __ and the normal name is an alias.  */
#if defined (__stub_pcre_study) || defined (__stub___pcre_study)
choke me
#else
f = pcre_study;
#endif

  ;
  return 0;
}
configure:8725: result: no
configure:8725: checking for pcre_exec
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
/tmp/cczRVrKb.o: In function `main':
/tmp/cczRVrKb.o(.text+0x9): undefined reference to `pcre_exec'
configure:8725: $? = 1
configure: failed program was:
#line 8725 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
    which can conflict with char pcre_exec (); below.  */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error.  */
#ifdef __cplusplus
extern "C"
#endif
/* We use char because int might match the return type of a gcc2
   builtin and then its argument prototype would still apply.  */
char pcre_exec ();
char (*f) ();

#ifdef F77_DUMMY_MAIN
#  ifdef __cplusplus
     extern "C"
#  endif
   int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
/* The GNU C library defines this for functions which it implements
    to always fail with ENOSYS.  Some functions are actually named
    something starting with __ and the normal name is an alias.  */
#if defined (__stub_pcre_exec) || defined (__stub___pcre_exec)
choke me
#else
f = pcre_exec;
#endif

  ;
  return 0;
}
configure:8725: result: no
configure:8725: checking for nl_langinfo
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for erand48
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for open_memstream
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
/tmp/ccFqZGpe.o: In function `main':
/tmp/ccFqZGpe.o(.text+0x9): undefined reference to `open_memstream'
configure:8725: $? = 1
configure: failed program was:
#line 8725 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
    which can conflict with char open_memstream (); below.  */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error.  */
#ifdef __cplusplus
extern "C"
#endif
/* We use char because int might match the return type of a gcc2
   builtin and then its argument prototype would still apply.  */
char open_memstream ();
char (*f) ();

#ifdef F77_DUMMY_MAIN
#  ifdef __cplusplus
     extern "C"
#  endif
   int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
/* The GNU C library defines this for functions which it implements
    to always fail with ENOSYS.  Some functions are actually named
    something starting with __ and the normal name is an alias.  */
#if defined (__stub_open_memstream) || defined (__stub___open_memstream)
choke me
#else
f = open_memstream;
#endif

  ;
  return 0;
}
configure:8725: result: no
configure:8725: checking for wctomb
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8725: $? = 0
configure:8725: test -s conftest
configure:8725: $? = 0
configure:8725: result: yes
configure:8725: checking for iconv
configure:8725: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
/tmp/ccp3mq0a.o: In function `main':
/tmp/ccp3mq0a.o(.text+0x9): undefined reference to `iconv'
configure:8725: $? = 1
configure: failed program was:
#line 8725 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
    which can conflict with char iconv (); below.  */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error.  */
#ifdef __cplusplus
extern "C"
#endif
/* We use char because int might match the return type of a gcc2
   builtin and then its argument prototype would still apply.  */
char iconv ();
char (*f) ();

#ifdef F77_DUMMY_MAIN
#  ifdef __cplusplus
     extern "C"
#  endif
   int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
/* The GNU C library defines this for functions which it implements
    to always fail with ENOSYS.  Some functions are actually named
    something starting with __ and the normal name is an alias.  */
#if defined (__stub_iconv) || defined (__stub___iconv)
choke me
#else
f = iconv;
#endif

  ;
  return 0;
}
configure:8725: result: no
configure:8727: checking for working strcoll
configure:8776: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8776: $? = 0
configure:8776: ./conftest
configure:8776: $? = 0
configure:8777: result: yes
configure:8788: checking if tgetent accepts NULL
configure:8840: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8843: warning: return-type defaults to `int'
configure: In function `main':
configure:8845: warning: implicit declaration of function `tgetent'
configure:8850: warning: implicit declaration of function `tgetstr'
configure:8851: warning: implicit declaration of function `creat'
configure:8840: $? = 0
configure:8840: ./conftest
configure:8840: $? = 0
configure:8841: result: yes
configure:8849: checking if tgetent returns 0 on success
configure:8901: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:8904: warning: return-type defaults to `int'
configure: In function `main':
configure:8906: warning: implicit declaration of function `tgetent'
configure:8911: warning: implicit declaration of function `tgetstr'
configure:8912: warning: implicit declaration of function `creat'
configure:8901: $? = 0
configure:8901: ./conftest
configure:8901: $? = 0
configure:8902: result: no
configure:9029: checking for stdlib.h
configure:9029: result: yes
configure:9029: checking for unistd.h
configure:9029: result: yes
configure:9105: checking for getpagesize
configure:9105: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:9105: $? = 0
configure:9105: test -s conftest
configure:9105: $? = 0
configure:9105: result: yes
configure:9107: checking for working mmap
configure:9266: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:9266: $? = 0
configure:9266: ./conftest
configure:9266: $? = 0
configure:9267: result: yes
configure:9356: checking for munmap
configure:9356: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:9356: $? = 0
configure:9356: test -s conftest
configure:9356: $? = 0
configure:9356: result: yes
configure:9356: checking for msync
configure:9356: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:9356: $? = 0
configure:9356: test -s conftest
configure:9356: $? = 0
configure:9356: result: yes
configure:9420: checking whether getpgrp requires zero arguments
configure:9420: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure: In function `main':
configure:9464: too many arguments to function `getpgrp'
configure:9420: $? = 1
configure: failed program was:
#line 9420 "configure"
#include "confdefs.h"
#include <stdio.h>
#if HAVE_SYS_TYPES_H
# include <sys/types.h>
#endif
#if HAVE_SYS_STAT_H
# include <sys/stat.h>
#endif
#if STDC_HEADERS
# include <stdlib.h>
# include <stddef.h>
#else
# if HAVE_STDLIB_H
#  include <stdlib.h>
# endif
#endif
#if HAVE_STRING_H
# if !STDC_HEADERS && HAVE_MEMORY_H
#  include <memory.h>
# endif
# include <string.h>
#endif
#if HAVE_STRINGS_H
# include <strings.h>
#endif
#if HAVE_INTTYPES_H
# include <inttypes.h>
#else
# if HAVE_STDINT_H
#  include <stdint.h>
# endif
#endif
#if HAVE_UNISTD_H
# include <unistd.h>
#endif
#ifdef F77_DUMMY_MAIN
#  ifdef __cplusplus
     extern "C"
#  endif
   int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
getpgrp (0);
  ;
  return 0;
}
configure:9420: result: yes
configure:9510: checking for dlopen
configure:9510: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:9510: $? = 0
configure:9510: test -s conftest
configure:9510: $? = 0
configure:9510: result: yes
configure:9510: checking for dlerror
configure:9510: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:9510: $? = 0
configure:9510: test -s conftest
configure:9510: $? = 0
configure:9510: result: yes
configure:9510: checking for dlsym
configure:9510: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:9510: $? = 0
configure:9510: test -s conftest
configure:9510: $? = 0
configure:9510: result: yes
configure:9510: checking for dlclose
configure:9510: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:9510: $? = 0
configure:9510: test -s conftest
configure:9510: $? = 0
configure:9510: result: yes
configure:9510: checking for load
configure:9510: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
/tmp/ccYorOvk.o: In function `main':
/tmp/ccYorOvk.o(.text+0x9): undefined reference to `load'
configure:9510: $? = 1
configure: failed program was:
#line 9510 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
    which can conflict with char load (); below.  */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error.  */
#ifdef __cplusplus
extern "C"
#endif
/* We use char because int might match the return type of a gcc2
   builtin and then its argument prototype would still apply.  */
char load ();
char (*f) ();

#ifdef F77_DUMMY_MAIN
#  ifdef __cplusplus
     extern "C"
#  endif
   int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
/* The GNU C library defines this for functions which it implements
    to always fail with ENOSYS.  Some functions are actually named
    something starting with __ and the normal name is an alias.  */
#if defined (__stub_load) || defined (__stub___load)
choke me
#else
f = load;
#endif

  ;
  return 0;
}
configure:9510: result: no
configure:9510: checking for loadquery
configure:9510: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
/tmp/cc6YKifp.o: In function `main':
/tmp/cc6YKifp.o(.text+0x9): undefined reference to `loadquery'
configure:9510: $? = 1
configure: failed program was:
#line 9510 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
    which can conflict with char loadquery (); below.  */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error.  */
#ifdef __cplusplus
extern "C"
#endif
/* We use char because int might match the return type of a gcc2
   builtin and then its argument prototype would still apply.  */
char loadquery ();
char (*f) ();

#ifdef F77_DUMMY_MAIN
#  ifdef __cplusplus
     extern "C"
#  endif
   int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
/* The GNU C library defines this for functions which it implements
    to always fail with ENOSYS.  Some functions are actually named
    something starting with __ and the normal name is an alias.  */
#if defined (__stub_loadquery) || defined (__stub___loadquery)
choke me
#else
f = loadquery;
#endif

  ;
  return 0;
}
configure:9510: result: no
configure:9510: checking for loadbind
configure:9510: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
/tmp/cchkWUCe.o: In function `main':
/tmp/cchkWUCe.o(.text+0x9): undefined reference to `loadbind'
configure:9510: $? = 1
configure: failed program was:
#line 9510 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
    which can conflict with char loadbind (); below.  */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error.  */
#ifdef __cplusplus
extern "C"
#endif
/* We use char because int might match the return type of a gcc2
   builtin and then its argument prototype would still apply.  */
char loadbind ();
char (*f) ();

#ifdef F77_DUMMY_MAIN
#  ifdef __cplusplus
     extern "C"
#  endif
   int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
/* The GNU C library defines this for functions which it implements
    to always fail with ENOSYS.  Some functions are actually named
    something starting with __ and the normal name is an alias.  */
#if defined (__stub_loadbind) || defined (__stub___loadbind)
choke me
#else
f = loadbind;
#endif

  ;
  return 0;
}
configure:9510: result: no
configure:9510: checking for unload
configure:9510: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
/tmp/ccisyjpF.o: In function `main':
/tmp/ccisyjpF.o(.text+0x9): undefined reference to `unload'
configure:9510: $? = 1
configure: failed program was:
#line 9510 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
    which can conflict with char unload (); below.  */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error.  */
#ifdef __cplusplus
extern "C"
#endif
/* We use char because int might match the return type of a gcc2
   builtin and then its argument prototype would still apply.  */
char unload ();
char (*f) ();

#ifdef F77_DUMMY_MAIN
#  ifdef __cplusplus
     extern "C"
#  endif
   int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
/* The GNU C library defines this for functions which it implements
    to always fail with ENOSYS.  Some functions are actually named
    something starting with __ and the normal name is an alias.  */
#if defined (__stub_unload) || defined (__stub___unload)
choke me
#else
f = unload;
#endif

  ;
  return 0;
}
configure:9510: result: no
configure:9510: checking for shl_load
configure:9510: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
/tmp/cco9Cvo6.o: In function `main':
/tmp/cco9Cvo6.o(.text+0x9): undefined reference to `shl_load'
configure:9510: $? = 1
configure: failed program was:
#line 9510 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
    which can conflict with char shl_load (); below.  */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error.  */
#ifdef __cplusplus
extern "C"
#endif
/* We use char because int might match the return type of a gcc2
   builtin and then its argument prototype would still apply.  */
char shl_load ();
char (*f) ();

#ifdef F77_DUMMY_MAIN
#  ifdef __cplusplus
     extern "C"
#  endif
   int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
/* The GNU C library defines this for functions which it implements
    to always fail with ENOSYS.  Some functions are actually named
    something starting with __ and the normal name is an alias.  */
#if defined (__stub_shl_load) || defined (__stub___shl_load)
choke me
#else
f = shl_load;
#endif

  ;
  return 0;
}
configure:9510: result: no
configure:9510: checking for shl_unload
configure:9510: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
/tmp/ccIi65mr.o: In function `main':
/tmp/ccIi65mr.o(.text+0x9): undefined reference to `shl_unload'
configure:9510: $? = 1
configure: failed program was:
#line 9510 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
    which can conflict with char shl_unload (); below.  */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error.  */
#ifdef __cplusplus
extern "C"
#endif
/* We use char because int might match the return type of a gcc2
   builtin and then its argument prototype would still apply.  */
char shl_unload ();
char (*f) ();

#ifdef F77_DUMMY_MAIN
#  ifdef __cplusplus
     extern "C"
#  endif
   int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
/* The GNU C library defines this for functions which it implements
    to always fail with ENOSYS.  Some functions are actually named
    something starting with __ and the normal name is an alias.  */
#if defined (__stub_shl_unload) || defined (__stub___shl_unload)
choke me
#else
f = shl_unload;
#endif

  ;
  return 0;
}
configure:9510: result: no
configure:9510: checking for shl_findsym
configure:9510: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
/tmp/ccPPRaUd.o: In function `main':
/tmp/ccPPRaUd.o(.text+0x9): undefined reference to `shl_findsym'
configure:9510: $? = 1
configure: failed program was:
#line 9510 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
    which can conflict with char shl_findsym (); below.  */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error.  */
#ifdef __cplusplus
extern "C"
#endif
/* We use char because int might match the return type of a gcc2
   builtin and then its argument prototype would still apply.  */
char shl_findsym ();
char (*f) ();

#ifdef F77_DUMMY_MAIN
#  ifdef __cplusplus
     extern "C"
#  endif
   int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
/* The GNU C library defines this for functions which it implements
    to always fail with ENOSYS.  Some functions are actually named
    something starting with __ and the normal name is an alias.  */
#if defined (__stub_shl_findsym) || defined (__stub___shl_findsym)
choke me
#else
f = shl_findsym;
#endif

  ;
  return 0;
}
configure:9510: result: no
configure:9513: checking what style of signals to use
configure:9544: result: POSIX_SIGNALS
configure:9547: checking where signal.h is located
configure:9586: result: /usr/include/sys/signal.h
configure:9590: checking where error names are located
configure:9618: result: /usr/include/errno.h
configure:9622: checking where the RLIMIT macros are located
configure:9639: result: /usr/include/sys/resource.h
configure:9647: checking if rlim_t is longer than a long
configure:9686: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:9692: warning: return-type defaults to `int'
configure:9686: $? = 0
configure:9686: ./conftest
configure:9686: $? = 0
configure:9687: result: yes
configure:9802: checking if rlim_t is a quad
configure:9802: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:9809: warning: return-type defaults to `int'
configure:9802: $? = 0
configure:9802: ./conftest
configure:9802: $? = 0
configure:9802: result: yes
configure:9804: checking for rlim_t
configure:9851: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure: In function `main':
configure:9867: warning: unused variable `l'
configure:9851: $? = 0
configure:9851: test -s conftest.o
configure:9851: $? = 0
configure:9852: result: yes
configure:9863: checking for limit RLIMIT_AIO_MEM
configure:9910: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure: In function `main':
configure:9927: `RLIMIT_AIO_MEM' undeclared (first use in this function)
configure:9927: (Each undeclared identifier is reported only once
configure:9927: for each function it appears in.)
configure:9910: $? = 1
configure: failed program was:
#line 9910 "configure"
#include "confdefs.h"

#include <sys/types.h>
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#endif
#include <sys/resource.h>
#ifdef F77_DUMMY_MAIN
#  ifdef __cplusplus
     extern "C"
#  endif
   int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
RLIMIT_AIO_MEM
  ;
  return 0;
}
configure:9911: result: no
configure:9920: checking for limit RLIMIT_AIO_OPS
configure:9967: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure: In function `main':
configure:9984: `RLIMIT_AIO_OPS' undeclared (first use in this function)
configure:9984: (Each undeclared identifier is reported only once
configure:9984: for each function it appears in.)
configure:9967: $? = 1
configure: failed program was:
#line 9967 "configure"
#include "confdefs.h"

#include <sys/types.h>
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#endif
#include <sys/resource.h>
#ifdef F77_DUMMY_MAIN
#  ifdef __cplusplus
     extern "C"
#  endif
   int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
RLIMIT_AIO_OPS
  ;
  return 0;
}
configure:9968: result: no
configure:9977: checking for limit RLIMIT_AS
configure:10024: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure: In function `main':
configure:10041: `RLIMIT_AS' undeclared (first use in this function)
configure:10041: (Each undeclared identifier is reported only once
configure:10041: for each function it appears in.)
configure:10024: $? = 1
configure: failed program was:
#line 10024 "configure"
#include "confdefs.h"

#include <sys/types.h>
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#endif
#include <sys/resource.h>
#ifdef F77_DUMMY_MAIN
#  ifdef __cplusplus
     extern "C"
#  endif
   int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
RLIMIT_AS
  ;
  return 0;
}
configure:10025: result: no
configure:10034: checking for limit RLIMIT_LOCKS
configure:10081: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure: In function `main':
configure:10098: `RLIMIT_LOCKS' undeclared (first use in this function)
configure:10098: (Each undeclared identifier is reported only once
configure:10098: for each function it appears in.)
configure:10081: $? = 1
configure: failed program was:
#line 10081 "configure"
#include "confdefs.h"

#include <sys/types.h>
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#endif
#include <sys/resource.h>
#ifdef F77_DUMMY_MAIN
#  ifdef __cplusplus
     extern "C"
#  endif
   int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
RLIMIT_LOCKS
  ;
  return 0;
}
configure:10082: result: no
configure:10091: checking for limit RLIMIT_MEMLOCK
configure:10138: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure: In function `main':
configure:10154: warning: statement with no effect
configure:10138: $? = 0
configure:10138: test -s conftest.o
configure:10138: $? = 0
configure:10139: result: yes
configure:10148: checking for limit RLIMIT_NPROC
configure:10195: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure: In function `main':
configure:10211: warning: statement with no effect
configure:10195: $? = 0
configure:10195: test -s conftest.o
configure:10195: $? = 0
configure:10196: result: yes
configure:10205: checking for limit RLIMIT_NOFILE
configure:10252: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure: In function `main':
configure:10268: warning: statement with no effect
configure:10252: $? = 0
configure:10252: test -s conftest.o
configure:10252: $? = 0
configure:10253: result: yes
configure:10262: checking for limit RLIMIT_PTHREAD
configure:10309: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure: In function `main':
configure:10326: `RLIMIT_PTHREAD' undeclared (first use in this function)
configure:10326: (Each undeclared identifier is reported only once
configure:10326: for each function it appears in.)
configure:10309: $? = 1
configure: failed program was:
#line 10309 "configure"
#include "confdefs.h"

#include <sys/types.h>
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#endif
#include <sys/resource.h>
#ifdef F77_DUMMY_MAIN
#  ifdef __cplusplus
     extern "C"
#  endif
   int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
RLIMIT_PTHREAD
  ;
  return 0;
}
configure:10310: result: no
configure:10319: checking for limit RLIMIT_RSS
configure:10366: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure: In function `main':
configure:10382: warning: statement with no effect
configure:10366: $? = 0
configure:10366: test -s conftest.o
configure:10366: $? = 0
configure:10367: result: yes
configure:10376: checking for limit RLIMIT_SBSIZE
configure:10423: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure: In function `main':
configure:10439: warning: statement with no effect
configure:10423: $? = 0
configure:10423: test -s conftest.o
configure:10423: $? = 0
configure:10424: result: yes
configure:10433: checking for limit RLIMIT_TCACHE
configure:10480: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure: In function `main':
configure:10497: `RLIMIT_TCACHE' undeclared (first use in this function)
configure:10497: (Each undeclared identifier is reported only once
configure:10497: for each function it appears in.)
configure:10480: $? = 1
configure: failed program was:
#line 10480 "configure"
#include "confdefs.h"

#include <sys/types.h>
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#endif
#include <sys/resource.h>
#ifdef F77_DUMMY_MAIN
#  ifdef __cplusplus
     extern "C"
#  endif
   int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
RLIMIT_TCACHE
  ;
  return 0;
}
configure:10481: result: no
configure:10490: checking for limit RLIMIT_VMEM
configure:10537: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure: In function `main':
configure:10554: `RLIMIT_VMEM' undeclared (first use in this function)
configure:10554: (Each undeclared identifier is reported only once
configure:10554: for each function it appears in.)
configure:10537: $? = 1
configure: failed program was:
#line 10537 "configure"
#include "confdefs.h"

#include <sys/types.h>
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#endif
#include <sys/resource.h>
#ifdef F77_DUMMY_MAIN
#  ifdef __cplusplus
     extern "C"
#  endif
   int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
RLIMIT_VMEM
  ;
  return 0;
}
configure:10538: result: no
configure:10548: checking if RLIMIT_VMEM and RLIMIT_RSS are the same
configure:10595: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:10595: $? = 0
configure:10595: ./conftest
configure:10595: $? = 1
configure: program exited with status 1
configure: failed program was:
#line 10595 "configure"
#include "confdefs.h"

#include <sys/types.h>
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#endif
#include <sys/resource.h>
int main()
{
int ret = 1;
#if defined(HAVE_RLIMIT_VMEM) && defined(HAVE_RLIMIT_RSS)
if (RLIMIT_RSS == RLIMIT_VMEM) ret = 0;
#endif
return ret;
}
configure:10596: result: no
configure:10607: checking if RLIMIT_VMEM and RLIMIT_AS are the same
configure:10654: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:10654: $? = 0
configure:10654: ./conftest
configure:10654: $? = 1
configure: program exited with status 1
configure: failed program was:
#line 10654 "configure"
#include "confdefs.h"

#include <sys/types.h>
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#endif
#include <sys/resource.h>
int main()
{
int ret = 1;
#if defined(HAVE_RLIMIT_VMEM) && defined(HAVE_RLIMIT_AS)
if (RLIMIT_AS == RLIMIT_VMEM) ret = 0;
#endif
return ret;
}
configure:10655: result: no
configure:10684: checking for /dev/fd filesystem
configure:10693: result: /dev/fd
configure:10702: checking for RFS superroot directory
configure:10709: result: no
configure:10718: checking whether we should use the native getcwd
configure:10728: result: no
configure:10737: checking for NIS
configure:10745: result: no
configure:10754: checking for NIS+
configure:10763: result: no
configure:10772: checking for utmp file
configure:10784: result: /var/run/utmp
configure:10793: checking for wtmp file
configure:10805: result: /var/log/wtmp
configure:10814: checking for utmpx file
configure:10826: result: no
configure:10835: checking for wtmpx file
configure:10847: result: no
configure:10857: checking for brk() prototype in <unistd.h>
configure:10900: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:10902: conflicting types for `brk'
/usr/include/unistd.h:120: previous declaration of `brk'
configure: In function `main':
configure:10912: warning: unused variable `i'
configure:10900: $? = 1
configure: failed program was:
#line 10900 "configure"
#include "confdefs.h"
#include <unistd.h>
double brk();
#ifdef F77_DUMMY_MAIN
#  ifdef __cplusplus
     extern "C"
#  endif
   int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
int i;
  ;
  return 0;
}
configure:10901: result: yes
configure:10910: checking for sbrk() prototype in <unistd.h>
configure:10953: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:10955: conflicting types for `sbrk'
/usr/include/unistd.h:188: previous declaration of `sbrk'
configure: In function `main':
configure:10965: warning: unused variable `i'
configure:10953: $? = 1
configure: failed program was:
#line 10953 "configure"
#include "confdefs.h"
#include <unistd.h>
double sbrk();
#ifdef F77_DUMMY_MAIN
#  ifdef __cplusplus
     extern "C"
#  endif
   int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
int i;
  ;
  return 0;
}
configure:10954: result: yes
configure:11069: checking for ioctl prototype in <sys/ioctl.h>
configure:11069: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:11071: conflicting types for `ioctl'
/usr/include/sys/ioccom.h:70: previous declaration of `ioctl'
configure: In function `main':
configure:11081: warning: unused variable `i'
configure:11069: $? = 1
configure: failed program was:
#line 11069 "configure"
#include "confdefs.h"
#include <sys/ioctl.h>
   int ioctl(double x);
#ifdef F77_DUMMY_MAIN
#  ifdef __cplusplus
     extern "C"
#  endif
   int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
int i;
  ;
  return 0;
}
configure:11069: result: yes
configure:11069: checking for mknod prototype in <sys/stat.h>
configure:11069: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure: In function `main':
configure:11081: warning: unused variable `i'
configure:11069: $? = 0
configure:11069: test -s conftest.o
configure:11069: $? = 0
configure:11069: result: no
configure:11125: checking if named FIFOs work
configure:11186: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:11191: warning: return-type defaults to `int'
configure: In function `main':
configure:11195: warning: implicit declaration of function `unlink'
configure:11197: warning: implicit declaration of function `mkfifo'
configure:11202: warning: implicit declaration of function `fork'
configure:11207: warning: implicit declaration of function `read'
configure:11210: warning: implicit declaration of function `write'
configure:11186: $? = 0
configure:11186: ./conftest
configure:11186: $? = 0
configure:11187: result: yes
configure:11195: checking if echo in /bin/sh interprets escape sequences
configure:11206: result: no
configure:11215: checking if link() works
configure:11267: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:11272: warning: return-type defaults to `int'
configure:11267: $? = 0
configure:11267: ./conftest
configure:11267: $? = 0
configure:11268: result: yes
configure:11277: checking if kill(pid, 0) returns ESRCH correctly
configure:11321: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:11327: warning: return-type defaults to `int'
configure:11321: $? = 0
configure:11321: ./conftest
configure:11321: $? = 0
configure:11322: result: yes
configure:11400: checking if POSIX sigsuspend() works
configure:11400: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:11406: warning: no previous prototype for `handler'
configure:11408: warning: return-type defaults to `int'
configure: In function `main':
configure:11425: warning: control reaches end of non-void function
configure:11400: $? = 0
configure:11400: ./conftest
configure:11400: $? = 0
configure:11400: result: yes
configure:11454: checking if tcsetpgrp() actually works
configure:11454: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:11458: warning: return-type defaults to `int'
configure:11454: $? = 0
configure:11454: ./conftest
configure:11454: $? = 0
configure:11454: result: yes
configure:11512: checking if getpwnam() is faked
configure:11512: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:11515: warning: return-type defaults to `int'
configure: In function `main':
configure:11518: warning: implicit declaration of function `sprintf'
configure:11518: warning: implicit declaration of function `getpid'
configure:11518: warning: implicit declaration of function `rand'
configure:11512: $? = 0
configure:11512: ./conftest
configure:11512: $? = 0
configure:11512: result: no
configure:11517: checking base type of the third argument to accept
configure:11568: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:11568: $? = 0
configure:11568: test -s conftest.o
configure:11568: $? = 0
configure:11569: result: socklen_t
configure:11916: checking if your system uses ELF binaries
configure:11916: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:11921: warning: return-type defaults to `int'
configure: In function `main':
configure:11928: warning: implicit declaration of function `read'
configure:11916: $? = 0
configure:11916: ./conftest
configure:11916: $? = 0
configure:11916: result: yes
configure:11916: checking if your dlsym() needs a leading underscore
configure:11916: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fPIC conftest.c 1>&5
conftest.c:1: warning: return-type defaults to `int'
conftest.c:1: warning: no previous prototype for `fred'
conftest.c: In function `fred':
conftest.c:1: warning: control reaches end of non-void function
configure:11916: $? = 0
configure:11916: gcc  -shared -o conftest.so conftest.o 1>&5
configure:11916: $? = 0
configure:11916: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:11946: warning: return-type defaults to `int'
configure:11916: $? = 0
configure:11916: ./conftest
configure:11916: $? = 0
configure:11916: result: no
configure:12329: checking if environ is available in shared libraries
configure:12329: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fPIC conftest1.c 1>&5
conftest1.c:3: warning: no previous prototype for `zsh_getaddr1'
configure:12329: $? = 0
configure:12329: gcc -o conftest1.so  -shared conftest1.o -ltinfo -lm  -lc 1>&5
configure:12329: $? = 0
configure:12329: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fPIC conftest2.c 1>&5
conftest2.c:3: warning: no previous prototype for `zsh_getaddr2'
configure:12329: $? = 0
configure:12329: gcc -o conftest2.so  -shared conftest2.o -ltinfo -lm  -lc 1>&5
configure:12329: $? = 0
configure:12329: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:12359: warning: return-type defaults to `int'
configure:12329: $? = 0
configure:12329: ./conftest
configure:12329: $? = 0
configure:12329: result: yes
configure:12329: checking if tgetent is available in shared libraries
configure:12329: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fPIC conftest1.c 1>&5
conftest1.c:3: warning: no previous prototype for `zsh_getaddr1'
configure:12329: $? = 0
configure:12329: gcc -o conftest1.so  -shared conftest1.o -ltinfo -lm  -lc 1>&5
configure:12329: $? = 0
configure:12329: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fPIC conftest2.c 1>&5
conftest2.c:3: warning: no previous prototype for `zsh_getaddr2'
configure:12329: $? = 0
configure:12329: gcc -o conftest2.so  -shared conftest2.o -ltinfo -lm  -lc 1>&5
configure:12329: $? = 0
configure:12329: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:12359: warning: return-type defaults to `int'
configure:12329: $? = 0
configure:12329: ./conftest
configure:12329: $? = 0
configure:12329: result: yes
configure:12329: checking if tigetstr is available in shared libraries
configure:12329: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fPIC conftest1.c 1>&5
conftest1.c:3: warning: no previous prototype for `zsh_getaddr1'
configure:12329: $? = 0
configure:12329: gcc -o conftest1.so  -shared conftest1.o -ltinfo -lm  -lc 1>&5
configure:12329: $? = 0
configure:12329: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fPIC conftest2.c 1>&5
conftest2.c:3: warning: no previous prototype for `zsh_getaddr2'
configure:12329: $? = 0
configure:12329: gcc -o conftest2.so  -shared conftest2.o -ltinfo -lm  -lc 1>&5
configure:12329: $? = 0
configure:12329: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:12359: warning: return-type defaults to `int'
configure:12329: $? = 0
configure:12329: ./conftest
configure:12329: $? = 0
configure:12329: result: yes
configure:12897: checking if name clashes in shared objects are OK
configure:12897: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fPIC conftest1.c 1>&5
conftest1.c:1: warning: no previous prototype for `fred'
configure:12897: $? = 0
configure:12897: gcc -o conftest1.so  -shared conftest1.o -ltinfo -lm  -lc 1>&5
configure:12897: $? = 0
configure:12897: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fPIC conftest2.c 1>&5
conftest2.c:1: warning: no previous prototype for `fred'
configure:12897: $? = 0
configure:12897: gcc -o conftest2.so  -shared conftest2.o -ltinfo -lm  -lc 1>&5
configure:12897: $? = 0
configure:12897: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:12928: warning: return-type defaults to `int'
configure:12897: $? = 0
configure:12897: ./conftest
configure:12897: $? = 0
configure:12897: result: yes
configure:12897: checking for working RTLD_GLOBAL
configure:12897: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fPIC conftest1.c 1>&5
conftest1.c:1: warning: no previous prototype for `fred'
configure:12897: $? = 0
configure:12897: gcc -o conftest1.so  -shared conftest1.o -ltinfo -lm  -lc 1>&5
configure:12897: $? = 0
configure:12897: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fPIC conftest2.c 1>&5
conftest2.c:1: warning: no previous prototype for `barney'
configure:12897: $? = 0
configure:12897: gcc -o conftest2.so  -shared conftest2.o -ltinfo -lm  -lc 1>&5
configure:12897: $? = 0
configure:12897: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:12927: warning: return-type defaults to `int'
configure:12897: $? = 0
configure:12897: ./conftest
configure:12897: $? = 0
configure:12897: result: yes
configure:12897: checking whether symbols in the executable are available
configure:12897: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fPIC conftest1.c 1>&5
conftest1.c:1: warning: no previous prototype for `barney'
configure:12897: $? = 0
configure:12897: gcc -o conftest1.so  -shared conftest1.o -ltinfo -lm  -lc 1>&5
configure:12897: $? = 0
configure:12897: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -rdynamic conftest.c -ltinfo -lm  -lc >&5
configure:12927: warning: return-type defaults to `int'
configure:12937: warning: no previous prototype for `fred'
configure:12897: $? = 0
configure:12897: ./conftest
configure:12897: $? = 0
configure:12897: result: yes
configure:12897: checking whether executables can be stripped
configure:12897: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fPIC conftest1.c 1>&5
conftest1.c:1: warning: no previous prototype for `barney'
configure:12897: $? = 0
configure:12897: gcc -o conftest1.so  -shared conftest1.o -ltinfo -lm  -lc 1>&5
configure:12897: $? = 0
configure:12897: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -rdynamic -s conftest.c -ltinfo -lm  -lc >&5
configure:12927: warning: return-type defaults to `int'
configure:12937: warning: no previous prototype for `fred'
configure:12897: $? = 0
configure:12897: ./conftest
configure:12897: $? = 0
configure:12897: result: yes
configure:12897: checking whether libraries can be stripped
configure:12897: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fPIC conftest1.c 1>&5
conftest1.c:1: warning: no previous prototype for `fred'
configure:12897: $? = 0
configure:12897: gcc -o conftest1.so  -shared -s conftest1.o -ltinfo -lm  -lc 1>&5
configure:12897: $? = 0
configure:12897: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo -lm  -lc >&5
configure:12927: warning: return-type defaults to `int'
configure:12897: $? = 0
configure:12897: ./conftest
configure:12897: $? = 0
configure:12897: result: yes
configure:13125: creating ./config.status

## ---------------------- ##
## Running config.status. ##
## ---------------------- ##

This file was extended by config.status, which was
generated by GNU Autoconf 2.53.  Invocation command line was

  CONFIG_FILES    = 
  CONFIG_HEADERS  = 
  CONFIG_LINKS    = 
  CONFIG_COMMANDS = 
  $ ./config.status 

on whaite.com

config.status:804: creating Config/defs.mk
config.status:804: creating Makefile
config.status:804: creating Doc/Makefile
config.status:804: creating Etc/Makefile
config.status:804: creating Src/Makefile
config.status:804: creating Test/Makefile
config.status:1367: creating config.h
config.status:1426: executing default-1 commands
config.status:1426: executing default commands

## ---------------- ##
## Cache variables. ##
## ---------------- ##

ac_cv_build='i386-pc-linux-gnulibc1'
ac_cv_build_alias='i386-pc-linux-gnulibc1'
ac_cv_c_compiler_gnu='yes'
ac_cv_c_const='yes'
ac_cv_env_CC_set=''
ac_cv_env_CC_value=''
ac_cv_env_CFLAGS_set=''
ac_cv_env_CFLAGS_value=''
ac_cv_env_CPPFLAGS_set=''
ac_cv_env_CPPFLAGS_value=''
ac_cv_env_CPP_set=''
ac_cv_env_CPP_value=''
ac_cv_env_LDFLAGS_set=''
ac_cv_env_LDFLAGS_value=''
ac_cv_env_build_alias_set=''
ac_cv_env_build_alias_value=''
ac_cv_env_host_alias_set=''
ac_cv_env_host_alias_value=''
ac_cv_env_target_alias_set=''
ac_cv_env_target_alias_value=''
ac_cv_exeext=''
ac_cv_func__mktemp='yes'
ac_cv_func_alloca_works='yes'
ac_cv_func_brk='yes'
ac_cv_func_cap_get_proc='no'
ac_cv_func_difftime='yes'
ac_cv_func_dlclose='yes'
ac_cv_func_dlerror='yes'
ac_cv_func_dlopen='yes'
ac_cv_func_dlsym='yes'
ac_cv_func_erand48='yes'
ac_cv_func_faccessx='no'
ac_cv_func_fchdir='yes'
ac_cv_func_fseeko='yes'
ac_cv_func_fstat='yes'
ac_cv_func_ftello='yes'
ac_cv_func_ftruncate='yes'
ac_cv_func_getenv='yes'
ac_cv_func_getgrgid='yes'
ac_cv_func_getgrnam='yes'
ac_cv_func_gethostbyname2='yes'
ac_cv_func_gethostname='yes'
ac_cv_func_getipnodebyname='yes'
ac_cv_func_getlogin='yes'
ac_cv_func_getpagesize='yes'
ac_cv_func_getpgrp_void='yes'
ac_cv_func_getpwent='yes'
ac_cv_func_getpwnam='yes'
ac_cv_func_getpwuid='yes'
ac_cv_func_getrlimit='yes'
ac_cv_func_gettimeofday='yes'
ac_cv_func_iconv='no'
ac_cv_func_inet_aton='yes'
ac_cv_func_inet_ntop='yes'
ac_cv_func_inet_pton='yes'
ac_cv_func_initgroups='yes'
ac_cv_func_killpg='yes'
ac_cv_func_lchown='yes'
ac_cv_func_load='no'
ac_cv_func_loadbind='no'
ac_cv_func_loadquery='no'
ac_cv_func_lstat='yes'
ac_cv_func_memcpy='yes'
ac_cv_func_memmove='yes'
ac_cv_func_mkfifo='yes'
ac_cv_func_mkstemp='yes'
ac_cv_func_mmap_fixed_mapped='yes'
ac_cv_func_msync='yes'
ac_cv_func_munmap='yes'
ac_cv_func_nice='yes'
ac_cv_func_nis_list='no'
ac_cv_func_nl_langinfo='yes'
ac_cv_func_open_memstream='no'
ac_cv_func_pathconf='yes'
ac_cv_func_pcre_compile='no'
ac_cv_func_pcre_exec='no'
ac_cv_func_pcre_study='no'
ac_cv_func_poll='yes'
ac_cv_func_putenv='yes'
ac_cv_func_readlink='yes'
ac_cv_func_sbrk='yes'
ac_cv_func_select='yes'
ac_cv_func_seteuid='yes'
ac_cv_func_setlocale='yes'
ac_cv_func_setpgid='yes'
ac_cv_func_setpgrp='yes'
ac_cv_func_setresuid='yes'
ac_cv_func_setreuid='yes'
ac_cv_func_setsid='yes'
ac_cv_func_setuid='yes'
ac_cv_func_setupterm='yes'
ac_cv_func_shl_findsym='no'
ac_cv_func_shl_load='no'
ac_cv_func_shl_unload='no'
ac_cv_func_sigaction='yes'
ac_cv_func_sigblock='yes'
ac_cv_func_sighold='no'
ac_cv_func_signgam='yes'
ac_cv_func_sigprocmask='yes'
ac_cv_func_sigrelse='no'
ac_cv_func_sigsetmask='yes'
ac_cv_func_strcoll_works='yes'
ac_cv_func_strerror='yes'
ac_cv_func_strftime='yes'
ac_cv_func_strstr='yes'
ac_cv_func_sysconf='yes'
ac_cv_func_tcgetattr='yes'
ac_cv_func_tcsetpgrp='yes'
ac_cv_func_tgetent='yes'
ac_cv_func_tigetflag='yes'
ac_cv_func_tigetnum='yes'
ac_cv_func_tigetstr='yes'
ac_cv_func_uname='yes'
ac_cv_func_unload='no'
ac_cv_func_wait3='yes'
ac_cv_func_waitpid='yes'
ac_cv_func_wctomb='yes'
ac_cv_header_dirent_dirent_h='yes'
ac_cv_header_dl_h='no'
ac_cv_header_dlfcn_h='yes'
ac_cv_header_errno_h='yes'
ac_cv_header_fcntl_h='yes'
ac_cv_header_grp_h='yes'
ac_cv_header_inttypes_h='yes'
ac_cv_header_langinfo_h='yes'
ac_cv_header_libc_h='no'
ac_cv_header_limits_h='yes'
ac_cv_header_locale_h='yes'
ac_cv_header_memory_h='yes'
ac_cv_header_netinet_in_systm_h='yes'
ac_cv_header_pcre_h='no'
ac_cv_header_poll_h='yes'
ac_cv_header_pwd_h='yes'
ac_cv_header_stat_broken='no'
ac_cv_header_stdc='yes'
ac_cv_header_stddef_h='yes'
ac_cv_header_stdint_h='no'
ac_cv_header_stdio_h='yes'
ac_cv_header_stdlib_h='yes'
ac_cv_header_string_h='yes'
ac_cv_header_strings_h='yes'
ac_cv_header_sys_capability_h='no'
ac_cv_header_sys_filio_h='yes'
ac_cv_header_sys_mman_h='yes'
ac_cv_header_sys_param_h='yes'
ac_cv_header_sys_ptem_h='no'
ac_cv_header_sys_resource_h='yes'
ac_cv_header_sys_select_h='yes'
ac_cv_header_sys_stat_h='yes'
ac_cv_header_sys_time_h='yes'
ac_cv_header_sys_times_h='yes'
ac_cv_header_sys_types_h='yes'
ac_cv_header_sys_utsname_h='yes'
ac_cv_header_sys_wait_h='yes'
ac_cv_header_termcap_h='yes'
ac_cv_header_termio_h='no'
ac_cv_header_termios_h='yes'
ac_cv_header_time='yes'
ac_cv_header_unistd_h='yes'
ac_cv_header_utmp_h='yes'
ac_cv_header_utmpx_h='no'
ac_cv_header_wchar_h='yes'
ac_cv_host='i386-pc-linux-gnulibc1'
ac_cv_host_alias='i386-pc-linux-gnulibc1'
ac_cv_lib_c_printf='yes'
ac_cv_lib_cap_cap_get_proc='no'
ac_cv_lib_dl_dlopen='no'
ac_cv_lib_iconv_iconv='no'
ac_cv_lib_m_pow='yes'
ac_cv_lib_socket_socket='no'
ac_cv_objext='o'
ac_cv_path_install='/usr/bin/install -c'
ac_cv_prog_AWK='awk'
ac_cv_prog_CPP='gcc -E'
ac_cv_prog_LN='ln'
ac_cv_prog_YODL='yodl'
ac_cv_prog_ac_ct_CC='gcc'
ac_cv_prog_cc_g='yes'
ac_cv_prog_cc_stdc=''
ac_cv_prog_gcc_traditional='no'
ac_cv_prog_make_make_set='yes'
ac_cv_search_opendir='none required'
ac_cv_search_pcre_compile='no'
ac_cv_search_tgetent='-ltinfo'
ac_cv_search_yp_all='none required'
ac_cv_type_ino_t='yes'
ac_cv_type_mode_t='yes'
ac_cv_type_off_t='yes'
ac_cv_type_pid_t='yes'
ac_cv_type_signal='void'
ac_cv_type_size_t='yes'
ac_cv_type_uid_t='yes'
ac_cv_working_alloca_h='no'
fp_cv_prog_cc_stdc=''
zsh_cv_64_bit_type='long long'
zsh_cv_64_bit_utype='unsigned long long'
zsh_cv_c_broken_signed_to_unsigned_casting='no'
zsh_cv_c_have_union_init='yes'
zsh_cv_c_variable_length_arrays='no'
zsh_cv_cs_path='/bin:/usr/bin'
zsh_cv_decl_h_errno_use_local='no'
zsh_cv_decl_ospeed_include_defines='yes'
zsh_cv_func_dlsym_needs_underscore='no'
zsh_cv_func_tgetent_accepts_null='yes'
zsh_cv_func_tgetent_zero_success='no'
zsh_cv_have_RLIMIT_AIO_MEM='no'
zsh_cv_have_RLIMIT_AIO_OPS='no'
zsh_cv_have_RLIMIT_AS='no'
zsh_cv_have_RLIMIT_LOCKS='no'
zsh_cv_have_RLIMIT_MEMLOCK='yes'
zsh_cv_have_RLIMIT_NOFILE='yes'
zsh_cv_have_RLIMIT_NPROC='yes'
zsh_cv_have_RLIMIT_PTHREAD='no'
zsh_cv_have_RLIMIT_RSS='yes'
zsh_cv_have_RLIMIT_SBSIZE='yes'
zsh_cv_have_RLIMIT_TCACHE='no'
zsh_cv_have_RLIMIT_VMEM='no'
zsh_cv_header_sys_ioctl_h_ioctl_proto='yes'
zsh_cv_header_sys_stat_h_mknod_proto='no'
zsh_cv_header_termios_h_tiocgwinsz='yes'
zsh_cv_header_time_h_select_h_conflicts='no'
zsh_cv_header_unistd_h_brk_proto='yes'
zsh_cv_header_unistd_h_sbrk_proto='yes'
zsh_cv_ino_t_is_64_bit='no'
zsh_cv_long_is_64_bit='no'
zsh_cv_off_t_is_64_bit='yes'
zsh_cv_path_errno_h='/usr/include/errno.h'
zsh_cv_path_rlimit_h='/usr/include/sys/resource.h'
zsh_cv_path_signal_h='/usr/include/sys/signal.h'
zsh_cv_path_utmp='/var/run/utmp'
zsh_cv_path_utmpx='no'
zsh_cv_path_wtmp='/var/log/wtmp'
zsh_cv_path_wtmpx='no'
zsh_cv_prog_sh_echo_escape='no'
zsh_cv_rlim_t_is_longer='yes'
zsh_cv_rlim_t_is_quad_t='yes'
zsh_cv_rlimit_vmem_is_as='no'
zsh_cv_rlimit_vmem_is_rss='no'
zsh_cv_shared_environ='yes'
zsh_cv_shared_tgetent='yes'
zsh_cv_shared_tigetstr='yes'
zsh_cv_struct_member_struct_direct_d_ino='no'
zsh_cv_struct_member_struct_direct_d_stat='no'
zsh_cv_struct_member_struct_dirent_d_ino='yes'
zsh_cv_struct_member_struct_dirent_d_stat='no'
zsh_cv_struct_member_struct_sockaddr_in6_sin6_scope_id='yes'
zsh_cv_struct_member_struct_utmp_ut_host='yes'
zsh_cv_struct_member_struct_utmpx_ut_host='no'
zsh_cv_struct_member_struct_utmpx_ut_tv='no'
zsh_cv_struct_member_struct_utmpx_ut_xtime='no'
zsh_cv_sys_dynamic_clash_ok='yes'
zsh_cv_sys_dynamic_execsyms='yes'
zsh_cv_sys_dynamic_rtld_global='yes'
zsh_cv_sys_dynamic_strip_exe='yes'
zsh_cv_sys_dynamic_strip_lib='yes'
zsh_cv_sys_elf='yes'
zsh_cv_sys_fifo='yes'
zsh_cv_sys_getpwnam_faked='no'
zsh_cv_sys_killesrch='yes'
zsh_cv_sys_link='yes'
zsh_cv_sys_nis='no'
zsh_cv_sys_nis_plus='no'
zsh_cv_sys_path_dev_fd='/dev/fd'
zsh_cv_sys_posix_termios='yes'
zsh_cv_sys_sigsuspend='yes'
zsh_cv_sys_superroot='no'
zsh_cv_sys_tcsetpgrp='yes'
zsh_cv_type_exists_struct_timezone='yes'
zsh_cv_type_exists_struct_utmp='yes'
zsh_cv_type_exists_struct_utmpx='no'
zsh_cv_type_rlim_t='yes'
zsh_cv_type_sigset_t='yes'
zsh_cv_type_socklen_t='socklen_t'
zsh_cv_use_getcwd='no'

## ----------- ##
## confdefs.h. ##
## ----------- ##

#define PACKAGE_NAME ""
#define PACKAGE_TARNAME ""
#define PACKAGE_VERSION ""
#define PACKAGE_STRING ""
#define PACKAGE_BUGREPORT ""
#define MACHTYPE "i386"
#define VENDOR "pc"
#define OSTYPE "linux-gnulibc1"
#define GLOBAL_ZSHENV "/etc/zshenv"
#define GLOBAL_ZSHRC "/etc/zshrc"
#define GLOBAL_ZPROFILE "/etc/zprofile"
#define GLOBAL_ZLOGIN "/etc/zlogin"
#define GLOBAL_ZLOGOUT "/etc/zlogout"
#define RESTRICTED_R 1
#define CONFIG_LOCALE 1
#define PROTOTYPES 1
#define HAVE_ALLOCA 1
#define HAVE_UNION_INIT 1
#define HAVE_DIRENT_H 1
#define STDC_HEADERS 1
#define TIME_WITH_SYS_TIME 1
#define HAVE_SYS_WAIT_H 1
#define HAVE_SYS_TYPES_H 1
#define HAVE_SYS_STAT_H 1
#define HAVE_STDLIB_H 1
#define HAVE_STRING_H 1
#define HAVE_MEMORY_H 1
#define HAVE_STRINGS_H 1
#define HAVE_INTTYPES_H 1
#define HAVE_UNISTD_H 1
#define HAVE_SYS_TIME_H 1
#define HAVE_SYS_TIMES_H 1
#define HAVE_SYS_SELECT_H 1
#define HAVE_TERMCAP_H 1
#define HAVE_TERMIOS_H 1
#define HAVE_SYS_PARAM_H 1
#define HAVE_SYS_FILIO_H 1
#define HAVE_STRING_H 1
#define HAVE_MEMORY_H 1
#define HAVE_LIMITS_H 1
#define HAVE_FCNTL_H 1
#define HAVE_SYS_UTSNAME_H 1
#define HAVE_SYS_RESOURCE_H 1
#define HAVE_LOCALE_H 1
#define HAVE_ERRNO_H 1
#define HAVE_STDIO_H 1
#define HAVE_STDLIB_H 1
#define HAVE_UNISTD_H 1
#define HAVE_UTMP_H 1
#define HAVE_SYS_TYPES_H 1
#define HAVE_PWD_H 1
#define HAVE_GRP_H 1
#define HAVE_POLL_H 1
#define HAVE_SYS_MMAN_H 1
#define HAVE_NETINET_IN_SYSTM_H 1
#define HAVE_LANGINFO_H 1
#define HAVE_WCHAR_H 1
#define HAVE_STDDEF_H 1
#define HAVE_DLFCN_H 1
#define HAVE_LIBM 1
#define HAVE_OSPEED 1
#define RETSIGTYPE void
#define OFF_T_IS_64_BIT 1
#define ZSH_64_BIT_TYPE long long
#define ZSH_64_BIT_UTYPE unsigned long long
#define HAVE_STRUCT_TIMEZONE 1
#define HAVE_STRUCT_UTMP 1
#define HAVE_STRUCT_UTMP_UT_HOST 1
#define HAVE_STRUCT_DIRENT_D_INO 1
#define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
#define HAVE_STRFTIME 1
#define HAVE_DIFFTIME 1
#define HAVE_GETTIMEOFDAY 1
#define HAVE_SELECT 1
#define HAVE_POLL 1
#define HAVE_READLINK 1
#define HAVE_FCHDIR 1
#define HAVE_FTRUNCATE 1
#define HAVE_FSTAT 1
#define HAVE_LSTAT 1
#define HAVE_LCHOWN 1
#define HAVE_FSEEKO 1
#define HAVE_FTELLO 1
#define HAVE_MKFIFO 1
#define HAVE__MKTEMP 1
#define HAVE_MKSTEMP 1
#define HAVE_WAITPID 1
#define HAVE_WAIT3 1
#define HAVE_SIGACTION 1
#define HAVE_SIGBLOCK 1
#define HAVE_SIGSETMASK 1
#define HAVE_SIGPROCMASK 1
#define HAVE_KILLPG 1
#define HAVE_SETPGID 1
#define HAVE_SETPGRP 1
#define HAVE_TCSETPGRP 1
#define HAVE_TCGETATTR 1
#define HAVE_NICE 1
#define HAVE_GETHOSTNAME 1
#define HAVE_GETHOSTBYNAME2 1
#define HAVE_GETIPNODEBYNAME 1
#define HAVE_INET_ATON 1
#define HAVE_INET_PTON 1
#define HAVE_INET_NTOP 1
#define HAVE_GETLOGIN 1
#define HAVE_GETPWENT 1
#define HAVE_GETPWNAM 1
#define HAVE_GETPWUID 1
#define HAVE_GETGRGID 1
#define HAVE_GETGRNAM 1
#define HAVE_INITGROUPS 1
#define HAVE_SETUID 1
#define HAVE_SETEUID 1
#define HAVE_SETREUID 1
#define HAVE_SETRESUID 1
#define HAVE_SETSID 1
#define HAVE_MEMCPY 1
#define HAVE_MEMMOVE 1
#define HAVE_STRSTR 1
#define HAVE_STRERROR 1
#define HAVE_GETRLIMIT 1
#define HAVE_SETLOCALE 1
#define HAVE_UNAME 1
#define HAVE_SIGNGAM 1
#define HAVE_PUTENV 1
#define HAVE_GETENV 1
#define HAVE_BRK 1
#define HAVE_SBRK 1
#define HAVE_PATHCONF 1
#define HAVE_SYSCONF 1
#define HAVE_TGETENT 1
#define HAVE_TIGETFLAG 1
#define HAVE_TIGETNUM 1
#define HAVE_TIGETSTR 1
#define HAVE_SETUPTERM 1
#define HAVE_NL_LANGINFO 1
#define HAVE_ERAND48 1
#define HAVE_WCTOMB 1
#define HAVE_STRCOLL 1
#define TGETENT_ACCEPTS_NULL 1
#define TGETENT_SUCCESS 1
#define HAVE_STDLIB_H 1
#define HAVE_UNISTD_H 1
#define HAVE_GETPAGESIZE 1
#define HAVE_MMAP 1
#define HAVE_MUNMAP 1
#define HAVE_MSYNC 1
#define GETPGRP_VOID 1
#define HAVE_DLOPEN 1
#define HAVE_DLERROR 1
#define HAVE_DLSYM 1
#define HAVE_DLCLOSE 1
#define POSIX_SIGNALS 1
#define POSIX_SIGNALS 1
#define RLIM_T_IS_QUAD_T 1
#define HAVE_RLIMIT_MEMLOCK 1
#define HAVE_RLIMIT_NPROC 1
#define HAVE_RLIMIT_NOFILE 1
#define HAVE_RLIMIT_RSS 1
#define HAVE_RLIMIT_SBSIZE 1
#define DEFAULT_PATH "/bin:/usr/bin"
#define PATH_DEV_FD "/dev/fd"
#define PATH_UTMP_FILE "/var/run/utmp"
#define PATH_WTMP_FILE "/var/log/wtmp"
#define HAVE_BRK_PROTO 1
#define HAVE_SBRK_PROTO 1
#define HAVE_IOCTL_PROTO 1
#define HAVE_FIFOS 1
#define SH_USE_BSD_ECHO 1
#define HAVE_LINK 1
#define SOCKLEN_T socklen_t
#define DYNAMIC_NAME_CLASH_OK 1
#define DYNAMIC 1
#define DL_EXT "so"

configure: exit 0

^ permalink raw reply	[relevance 1%]

* Re: 4.0.8 stills thinks Linux hasn't /dev/ptmx
  @ 2003-12-18 17:52  3% ` Peter Stephenson
  2003-12-18 20:59  0%   ` DervishD
  0 siblings, 1 reply; 200+ results
From: Peter Stephenson @ 2003-12-18 17:52 UTC (permalink / raw)
  To: Zsh Workers

DervishD wrote:
>     I've downloaded Zsh 4.0.8 and in Src/Modules/zpty.c, /dev/ptmx is
> only used if one of __SVR4, sinix or __CYGWIN__ is defined.

This isn't something we'd fix on 4.0.8, anyway, which is now being
declared dead.  (At least, if 4.0.8 compiles; I'm on holiday after
tomorrow, so it would be a good idea to tell me before.)

It's certainly a possibility for 4.1.  It will required testing for
grantpt, unlockpt and ptsname, which seem to be present but undocumented
(anywhere that I can see), thought chances are they're basically
POSIX-compatible.  So ideally it should be done by someone who knows
what they're doing.

-- 
Peter Stephenson <pws@csr.com>                  Software Engineer
CSR Ltd., Science Park, Milton Road,
Cambridge, CB4 0WH, UK                          Tel: +44 (0)1223 692070


**********************************************************************
This email and any files transmitted with it are confidential and
intended solely for the use of the individual or entity to whom they
are addressed. If you have received this email in error please notify
the system manager.

This footnote also confirms that this email message has been swept by
MIMEsweeper for the presence of computer viruses.

www.mimesweeper.com
**********************************************************************


^ permalink raw reply	[relevance 3%]

* Re: 4.0.8 stills thinks Linux hasn't /dev/ptmx
  2003-12-18 17:52  3% ` Peter Stephenson
@ 2003-12-18 20:59  0%   ` DervishD
  0 siblings, 0 replies; 200+ results
From: DervishD @ 2003-12-18 20:59 UTC (permalink / raw)
  To: Peter Stephenson; +Cc: Zsh Workers

    Hi Peter :)

 * Peter Stephenson <pws@csr.com> dixit:
> >     I've downloaded Zsh 4.0.8 and in Src/Modules/zpty.c, /dev/ptmx is
> > only used if one of __SVR4, sinix or __CYGWIN__ is defined.
> This isn't something we'd fix on 4.0.8, anyway, which is now being
> declared dead.  (At least, if 4.0.8 compiles; I'm on holiday after
> tomorrow, so it would be a good idea to tell me before.)

    OK, don't worry because this is not urgent, at least I have the
old mechanism working on Linux (on any Linux, I suppose). This
definitely can wait.

    I haven't build 4.0.8 yet, so I cannot tell if it builds, but
certainly this problem didn't prevent it from building in the past,
so no reason for failing exist now, neither.
 
> It's certainly a possibility for 4.1.  It will required testing for
> grantpt, unlockpt and ptsname, which seem to be present but undocumented
> (anywhere that I can see), thought chances are they're basically
> POSIX-compatible.  So ideally it should be done by someone who knows
> what they're doing.

    I'm not able to write the autoconf recipes, sorry, and I'm not an
ptmx expert O:), but if I can lend a hand, just tell me.

    Happy holidays :)

    Raúl Núñez de Arenas Coronado

-- 
Linux Registered User 88736
http://www.pleyades.net & http://raul.pleyades.net/


^ permalink raw reply	[relevance 0%]

* Thread developing on austin-group about LINES/COLUMNS
@ 2003-12-19  0:55  2% Bart Schaefer
  0 siblings, 0 replies; 200+ results
From: Bart Schaefer @ 2003-12-19  0:55 UTC (permalink / raw)
  To: zsh-workers

I read it that this suggests that zsh is currently not POSIX-compliant
with respect to LINES/COLUMNS.  The proposed change to the standard would
be closer to zsh's behavior, but would require those variables to lose
their auto-update behavior in the event that they are explicitly assigned,
which I do not believe zsh presently provides for.



---------- Forwarded message ----------
Date: Thu, 18 Dec 2003 16:34:15 -0800
From: Jason Zions <jasonzio@winse.microsoft.com>
To: Paul Eggert <eggert@twinsun.com>, David Korn <dgk@research.att.com>
Cc: austin-group-l@opengroup.org
Subject: RE: LINES and COLUMNS variables
Resent-Date: 19 Dec 2003 00:34:45 -0000
Resent-From: austin-group-l@opengroup.org
Resent-To: austin-group-l@opengroup.org

Bummer. I seem to recall this is pretty common (and useful) behavior. 

-----Original Message-----
From: Paul Eggert [mailto:eggert@twinsun.com] 
Sent: Thursday, December 18, 2003 4:17 PM
To: David Korn
Cc: austin-group-l@opengroup.org
Subject: Re: LINES and COLUMNS variables

At Thu, 18 Dec 2003 09:59:20 -0500 (EST), David Korn
<dgk@research.att.com> writes:

> Is a shell that changes the value of LINES and/or COLUMNS when the 
> window size changes a conforming shell?

I'd say no.
<http://www.opengroup.org/onlinepubs/007904975/basedefs/xbd_chap08.html#
tag_08>
says "The implementation adds or changes environment variables named in
IEEE Std 1003.1-2001 only as specified in IEEE Std 1003.1-2001."
The standard doesn't say that the shell changes the value of LINES
and/or COLUMNS, so a conforming shell cannot change them.






---------- Forwarded message ----------
Date: Thu, 18 Dec 2003 16:45:08 -0800
From: Bruce Korb <bkorb@veritas.com>
To: Paul Eggert <eggert@twinsun.com>
Cc: David Korn <dgk@research.att.com>, austin-group-l@opengroup.org
Subject: Re: LINES and COLUMNS variables
Resent-Date: 19 Dec 2003 00:47:35 -0000
Resent-From: austin-group-l@opengroup.org
Resent-To: austin-group-l@opengroup.org

Paul Eggert wrote:
> 
> At Thu, 18 Dec 2003 09:59:20 -0500 (EST), David Korn <dgk@research.att.com> writes:
> 
> > Is a shell that changes the value of LINES and/or COLUMNS when
> > the window size changes a conforming shell?
> 
> I'd say no.
> <http://www.opengroup.org/onlinepubs/007904975/basedefs/xbd_chap08.html#tag_08>
> says "The implementation adds or changes environment variables named
> in IEEE Std 1003.1-2001 only as specified in IEEE Std 1003.1-2001."
> The standard doesn't say that the shell changes the value of LINES
> and/or COLUMNS, so a conforming shell cannot change them.

Cool.  Let's change the standard.  The primary purpose of the standard
is to specify a workable set of requirements that conform to most current
implementations.  The whole idea behind the LINES and COLUMNS is to make it
possible work with text screens of sizes that differ from 24X80.

Now, that said, it can be reasonably argued that if someone says,
``COLUMNS=132'' then the shell should not willy-nilly go changing it
automatically.  There are already some variables that are in some sense
magical and they lose their magic when they are explicitly assigned to.
Treating these two as magical would make sense:  a conforming implementation
ought to be able to set and alter them until somebody goes and makes
an explicit assignment.  Making it necessary for users to know how to
configure functions to handle resizing automatically puts too much of
a burden on them.  I hate it when vi thinks my screen size is different
from what it is.  Dynamic LINES and COLUMNS is better for a human
usable interface perspective.

Regards, Bruce



^ permalink raw reply	[relevance 2%]

* Re: Possible bug in zsh
       [not found]     <20040103230931.GA63684@quark.localdomain>
@ 2004-01-04 17:43  0% ` Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2004-01-04 17:43 UTC (permalink / raw)
  To: zsh-workers

Vincent Stemen wrote:
> -T trapsasync
> 
>     When waiting for a child, execute traps immediately.  If this option
>     is not set, traps are executed after the child exits, as specified in
>     IEEE Std 1003.2 (``POSIX.2'') This nonstandard option is useful for
>     putting guarding shells around children that block signals.  The
>     surrounding shell may kill the child or it may just return control to
>     the tty and leave the child alone, like this:
> 
>         sh -T -c "trap 'exit 1' 2 ; some-blocking-program"

Does it mean that when the shell gets SIGINT while waiting for a
programme it normally doesn't execute the trap until the wait has finally
returned succesfully, but with this option it does?  Isn't there a race
in any case?

-- 
Peter Stephenson <pws@pwstephenson.fsnet.co.uk>
Work: pws@csr.com
Web: http://www.pwstephenson.fsnet.co.uk


^ permalink raw reply	[relevance 0%]

* PATCH: fix configure good and proper.
@ 2004-02-14 18:43  2% Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2004-02-14 18:43 UTC (permalink / raw)
  To: Zsh hackers list

I've spent my afternoon updating configure to fit better with the latest
features.  I will commit the changes immediately --- it's only been
tried on Debian and Mandrake, so expect a certain amount of pain
elsewhere.  However, the changes went a lot smoother than I expected.
(Plus Bluetooth means I can write this on the sofa.  No, I don't want
your stinking 802.11 :-).)  (I did try in a directory separate from the
source directory, however.)

The main change is for config.modules.  Autoconf now allows files
generated by commands to be treated in the same way as files generated
by substitution, so config.modules is much less of an exception.  The
file is still generated by building and running config.modules.sh; this
is now always run from config.status.  However, that has been changed so
that the information gleaned from configure is built into it.  Its only
job is to see if the user has set `auto=no'. otherwise it simply outputs
the string which was stored when configure was run.  This is basically
what Oliver suggested.

Together with this patch, acconfig.h needs to be deleted.

I have not reapplied the changes to attempt to improve terminfo
configuration.  That will need rewriting; also, we need to avoid a
problem with checking term.h before we know it compiles.

I have also not looked at an ordering problem with sys/ptem.h which will
need investigating; it doesn't exist here.  There is probably a
prerequisite header.

--- /pwshome/zsh/sourceforge/zsh/Config/config.mk	Sun May 20 23:24:30 2001
+++ Config/config.mk	Sat Feb 14 18:03:38 2004
@@ -35,8 +35,8 @@
 
 Makefile: Makefile.in $(dir_top)/config.status $(CONFIG_INCS)
 	cd $(dir_top) && \
-	  CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
+	  $(SHELL) ./config.status `echo $(subdir)/$@ | sed 's%^./%%'`
 
 $(dir_top)/Config/defs.mk: $(sdir_top)/Config/defs.mk.in $(dir_top)/config.status
 	cd $(dir_top) && \
-	  CONFIG_FILES=Config/defs.mk CONFIG_HEADERS= $(SHELL) ./config.status
+	  $(SHELL) ./config.status Config/defs.mk
--- /pwshome/zsh/sourceforge/zsh/Makefile.in	Sat Jan 17 17:41:35 2004
+++ Makefile.in	Sat Feb 14 18:04:20 2004
@@ -117,7 +117,7 @@
 @CLEAN_MK@
 
 distclean-here:
-	rm -f Makefile config.h config.status config.log config.cache config.modules stamp-h Config/defs.mk
+	rm -f Makefile config.h config.status config.log config.cache config.modules config.modules.sh stamp-h Config/defs.mk
 
 realclean-here:
 	cd $(sdir) && rm -f config.h.in stamp-h.in configure
@@ -134,13 +134,11 @@
 $(sdir)/configure: $(sdir)/aclocal.m4 $(sdir)/aczsh.m4 $(sdir)/configure.ac
 	cd $(sdir) && autoconf
 
-config.h: stamp-h
-stamp-h: $(sdir)/config.h.in config.status
-	cd $(dir_top) && \
-	  CONFIG_FILES= CONFIG_HEADERS=$(subdir)/config.h $(SHELL) ./config.status
+config.h config.modules: $(sdir)/config.h.in config.status
+	cd $(dir_top) && $(SHELL) ./config.status $@
 
 $(sdir)/config.h.in: $(sdir)/stamp-h.in
-$(sdir)/stamp-h.in: $(sdir)/configure.ac $(sdir)/acconfig.h \
+$(sdir)/stamp-h.in: $(sdir)/configure.ac \
 		$(sdir)/aclocal.m4 $(sdir)/aczsh.m4
 	cd $(sdir) && autoheader
 	echo > $(sdir)/stamp-h.in
--- /pwshome/zsh/sourceforge/zsh/Src/Modules/system.mdd	Sat Aug 30 18:56:18 2003
+++ Src/Modules/system.mdd	Sat Feb 14 18:14:23 2004
@@ -23,5 +23,9 @@
 
 errcount.h: errnames.c
 	grep 'define.*ERRCOUNT' errnames.c > $@
+
+clean-here: clean.system
+clean.system:
+	rm -f errcount.h errnames.c
 Make
 
--- /pwshome/zsh/sourceforge/zsh/Src/mkmakemod.sh	Sat Jun  9 01:04:26 2001
+++ Src/mkmakemod.sh	Sat Feb 14 16:25:30 2004
@@ -466,21 +466,11 @@
 fi
 
 if $second_stage ; then
-    if grep 'Hack for autoconf-2.13' ./config.status > /dev/null 2>&1 ; then
-        bang=\!
-    else
-	bang=
-    fi
-
     trap "rm -f $the_subdir/${the_makefile}" 1 2 15
 
-    # The standard config.status requires the pathname for the .in file to
-    # be relative to the top of the source tree.  As we have it in the build
-    # tree, this is a problem.  zsh's configure script edits config.status,
-    # adding the feature that an input filename starting with "!" has the
-    # "!" removed and is not mangled further.
-    CONFIG_FILES=$the_subdir/${the_makefile}:$bang$the_subdir/${the_makefile}.in CONFIG_HEADERS= ${CONFIG_SHELL-/bin/sh} ./config.status
-
+    ${CONFIG_SHELL-/bin/sh} ./config.status \
+	--file=$the_subdir/${the_makefile}:$the_subdir/${the_makefile}.in ||
+    return 1
 fi
 
 exit 0
--- /pwshome/zsh/sourceforge/zsh/aczsh.m4	Sat Apr  5 19:17:37 2003
+++ aczsh.m4	Sat Feb 14 17:54:58 2004
@@ -594,8 +594,11 @@
   zsh_cv_path_$1=no
 done
 ])
+AH_TEMPLATE([PATH_]translit($1, [a-z], [A-Z])[_FILE],
+[Define to be location of ]$1[ file.])
 if test $zsh_cv_path_$1 != no; then
-  AC_DEFINE_UNQUOTED(PATH_[]translit($1, [a-z], [A-Z])[]_FILE, "$zsh_cv_path_$1")
+  AC_DEFINE_UNQUOTED([PATH_]translit($1, [a-z], [A-Z])[_FILE],
+  "$zsh_cv_path_$1")
 fi
 ])
 
@@ -610,8 +613,10 @@
 [zsh_cv_type_exists_[]translit($2, [ ], [_])=yes],
 [zsh_cv_type_exists_[]translit($2, [ ], [_])=no])
 ])
+AH_TEMPLATE([HAVE_]translit($2, [ a-z], [_A-Z]),
+[Define to 1 if ]$2[ is defined by a system header])
 if test $zsh_cv_type_exists_[]translit($2, [ ], [_]) = yes; then
-  AC_DEFINE(HAVE_[]translit($2, [ a-z], [_A-Z]))
+  AC_DEFINE([HAVE_]translit($2, [ a-z], [_A-Z]))
 fi
 ])
 
@@ -627,8 +632,10 @@
 [zsh_cv_struct_member_[]translit($2, [ ], [_])_$3=yes],
 [zsh_cv_struct_member_[]translit($2, [ ], [_])_$3=no])
 ])
+AH_TEMPLATE([HAVE_]translit($2_$3, [ a-z], [_A-Z]),
+[Define if your system's ]$2[ has a member named ]$3[.])
 if test $zsh_cv_struct_member_[]translit($2, [ ], [_])_$3 = yes; then
-  AC_DEFINE(HAVE_[]translit($2_$3, [ a-z], [_A-Z]))
+  AC_DEFINE([HAVE_]translit($2_$3, [ a-z], [_A-Z]))
 fi
 ])
 
@@ -707,12 +714,15 @@
       zsh_cv_type_socklen_t=int
     fi]
   )
-  AC_DEFINE_UNQUOTED([SOCKLEN_T], [$zsh_cv_type_socklen_t])]
+  AC_DEFINE_UNQUOTED([SOCKLEN_T], [$zsh_cv_type_socklen_t],
+  [Define to the base type of the third argument of accept])]
 )
 
 dnl Check for limit $1 e.g. RLIMIT_RSS.
 AC_DEFUN(zsh_LIMIT_PRESENT,
-[AC_CACHE_CHECK([for limit $1],
+[AH_TEMPLATE([HAVE_]$1,
+[Define to 1 if ]$1[ is present (whether or not as a macro).])
+AC_CACHE_CHECK([for limit $1],
 zsh_cv_have_$1,
 [AC_TRY_COMPILE([
 #include <sys/types.h>
--- /pwshome/zsh/sourceforge/zsh/configure.ac	Sat Jan 17 17:41:40 2004
+++ configure.ac	Sat Feb 14 17:56:55 2004
@@ -39,9 +39,12 @@
 dnl Find out machine type, vendor, and operating system
 dnl What type of host is this?
 AC_CANONICAL_HOST
-AC_DEFINE_UNQUOTED(MACHTYPE, "$host_cpu")
-AC_DEFINE_UNQUOTED(VENDOR,   "$host_vendor")
-AC_DEFINE_UNQUOTED(OSTYPE,   "$host_os")
+AC_DEFINE_UNQUOTED(MACHTYPE, "$host_cpu",
+[Define to be the machine type (microprocessor class or machine model).])
+AC_DEFINE_UNQUOTED(VENDOR,   "$host_vendor",
+[Define to be a string corresponding the vendor of the machine.])
+AC_DEFINE_UNQUOTED(OSTYPE,   "$host_os",
+[Define to be the name of the operating system.])
 
 dnl -----------------------------
 dnl CHECKING COMMAND LINE OPTIONS
@@ -54,6 +57,8 @@
 
 dnl Do you want to debug zsh?
 ifdef([zsh-debug],[undefine([zsh-debug])])dnl
+AH_TEMPLATE([DEBUG],
+[Define to 1 if you want to debug zsh.])
 AC_ARG_ENABLE(zsh-debug,
 [  --enable-zsh-debug         compile with debug code and debugger symbols],
 [if test x$enableval = xyes; then
@@ -62,6 +67,8 @@
 
 dnl Do you want zsh memory allocation routines.
 ifdef([zsh-mem],[undefine([zsh-mem])])dnl
+AH_TEMPLATE([ZSH_MEM],
+[Define to 1 if you want to use zsh's own memory allocation routines])
 AC_ARG_ENABLE(zsh-mem,
 [  --enable-zsh-mem           compile with zsh memory allocation routines],
 [if test x$enableval = xyes; then
@@ -70,6 +77,8 @@
 
 dnl Do you want to debug zsh memory allocation routines.
 ifdef([zsh-mem-debug],[undefine([zsh-mem-debug])])dnl
+AH_TEMPLATE([ZSH_MEM_DEBUG],
+[Define to 1 if you want to debug zsh memory allocation routines.])
 AC_ARG_ENABLE(zsh-mem-debug,
 [  --enable-zsh-mem-debug     debug zsh memory allocation routines],
 [if test x$enableval = xyes; then
@@ -77,6 +86,8 @@
 fi])
 
 dnl Do you want to print warnings when errors in memory allocation.
+AH_TEMPLATE([ZSH_MEM_WARNING],
+[Define to 1 if you want to turn on warnings of memory allocation errors])
 ifdef([zsh-mem-warning],[undefine([zsh-mem-warning])])dnl
 AC_ARG_ENABLE(zsh-mem-warning,
 [  --enable-zsh-mem-warning   print warnings for errors in memory allocation],
@@ -86,6 +97,8 @@
 
 dnl Do you want to turn on error checking for free().
 ifdef([zsh-secure-free],[undefine([zsh-secure-free])])dnl
+AH_TEMPLATE([ZSH_SECURE_FREE],
+[Define to 1 if you want to turn on memory checking for free().])
 AC_ARG_ENABLE(zsh-secure-free,
 [  --enable-zsh-secure-free   turn on error checking for free()],
 [if test x$enableval = xyes; then
@@ -95,6 +108,9 @@
 dnl Do you want debugging information on internal hash tables.
 dnl This turns on the `hashinfo' builtin command.
 ifdef([zsh-hash-debug],[undefine([zsh-hash-debug])])dnl
+AH_TEMPLATE([ZSH_HASH_DEBUG],
+[Define to 1 if you want to get debugging information on internal
+ hash tables.  This turns on the `hashinfo' builtin.])
 AC_ARG_ENABLE(zsh-hash-debug,
 [  --enable-zsh-hash-debug    turn on debugging of internal hash tables],
 [if test x$enableval = xyes; then
@@ -116,6 +132,9 @@
 else
   zshenv="$etcdir/zshenv"
 fi])
+AH_TEMPLATE([GLOBAL_ZSHENV],
+[The global file to source absolutely first whenever zsh is run;
+ if undefined, don't source anything.])
 if test "x$zshenv" != xno; then
   AC_DEFINE_UNQUOTED(GLOBAL_ZSHENV, "$zshenv")
 fi
@@ -129,6 +148,9 @@
 else
   zshrc="$etcdir/zshrc"
 fi])
+AH_TEMPLATE([GLOBAL_ZSHRC],
+[The global file to source whenever zsh is run;
+ if undefined, don't source anything])
 if test "x$zshrc" != xno; then
   AC_DEFINE_UNQUOTED(GLOBAL_ZSHRC, "$zshrc")
 fi
@@ -142,6 +164,9 @@
 else
   zprofile="$etcdir/zprofile"
 fi])
+AH_TEMPLATE([GLOBAL_ZPROFILE],
+[The global file to source whenever zsh is run as a login shell,
+ before zshrc is read; if undefined, don't source anything.])
 if test "x$zprofile" != xno; then
   AC_DEFINE_UNQUOTED(GLOBAL_ZPROFILE, "$zprofile")
 fi
@@ -155,6 +180,9 @@
 else
   zlogin="$etcdir/zlogin"
 fi])
+AH_TEMPLATE([GLOBAL_ZLOGIN],
+[The global file to source whenever zsh is run as a login shell;
+ if undefined, don't source anything])
 if test "x$zlogin" != xno; then
   AC_DEFINE_UNQUOTED(GLOBAL_ZLOGIN, "$zlogin")
 fi
@@ -168,6 +196,10 @@
 else
   zlogout="$etcdir/zlogout"
 fi])
+AH_TEMPLATE([GLOBAL_ZLOGOUT],
+[The global file to source whenever zsh was run as a login shell.
+ This is sourced right before exiting.  If undefined, don't source
+ anything.])
 if test "x$zlogout" != xno; then
   AC_DEFINE_UNQUOTED(GLOBAL_ZLOGOUT, "$zlogout")
 fi
@@ -192,6 +224,10 @@
 
 dnl Do you want to disable restricted on r* commands
 ifdef([restricted-r],[undefine([restricted-r])])dnl
+AH_TEMPLATE([RESTRICTED_R],
+[Undefine this if you don't want to get a restricted shell
+ when zsh is exec'd with basename that starts with r.
+ By default this is defined.])
 AC_ARG_ENABLE(restricted-r,
 [  --disable-restricted-r     turn off r* invocation for restricted shell],
 [if test x$enableval = xyes; then
@@ -201,6 +237,8 @@
 )
 
 dnl Do you want to disable use of locale functions
+AH_TEMPLATE([CONFIG_LOCALE],
+[Undefine if you don't want local features.  By default this is defined.])
 AC_ARG_ENABLE([locale],
 [  --disable-locale           turn off locale features],
 [if test x$enableval = xyes; then
@@ -250,6 +288,8 @@
 
 dnl Do you want maildir support?
 ifdef([maildir_support],[undefine([maildir_support])])dnl
+AH_TEMPLATE([MAILDIR_SUPPORT],
+[Define for Maildir support])
 AC_ARG_ENABLE(maildir-support,
 [  --enable-maildir-support   enable maildir support in MAIL and MAILPATH],
 [if test x$enableval = xyes; then
@@ -258,6 +298,8 @@
 
 dnl Do you want to set a maximum function depth?
 ifdef([max_function_depth],[undefine([max_function_depth])])dnl
+AH_TEMPLATE([MAX_FUNCTION_DEPTH],
+[Define for function depth limits])
 AC_ARG_ENABLE(max-function-depth,
 [  --enable-max-function-depth=MAX   limit function depth to MAX],
 [if test x$enableval = xyes; then
@@ -360,10 +402,6 @@
 AC_PROG_GCC_TRADITIONAL     dnl Do we need -traditional flag for gcc.
 AC_C_CONST                  dnl Does compiler support `const'.
 
-AC_CYGWIN                   dnl Check for cygwin environment
-
-AC_EXEEXT                   dnl Check for executable extension, e.g. .exe
-
 fp_PROG_CC_STDC
 AC_MSG_CHECKING([whether to use prototypes])
 if test ."$ansi2knr" = .yes || test ."$ansi2knr" = .no; then
@@ -376,6 +414,8 @@
     ansi2knr=no
   fi
 fi
+AH_TEMPLATE([PROTOTYPES],
+[Define to 1 if ANSI function prototypes are usable.])
 if test "$ansi2knr" = yes; then
   AC_MSG_RESULT(${msg}no)
   U=_
@@ -394,6 +434,8 @@
 [AC_TRY_COMPILE([union{void *p;long l;}u={0};], [u.l=1;],
   zsh_cv_c_have_union_init=yes,
   zsh_cv_c_have_union_init=no)])
+AH_TEMPLATE([HAVE_UNION_INIT],
+[Define to 1 if the compiler can initialise a union.])
 if test $zsh_cv_c_have_union_init = yes; then
   AC_DEFINE(HAVE_UNION_INIT)
 fi
@@ -405,6 +447,8 @@
   zsh_cv_c_broken_signed_to_unsigned_casting=yes,
   zsh_cv_c_broken_signed_to_unsigned_casting=no,
   zsh_cv_c_broken_signed_to_unsigned_casting=no)])
+AH_TEMPLATE([BROKEN_SIGNED_TO_UNSIGNED_CASTING],
+[Define to 1 if compiler incorrectly cast signed to unsigned.])
 if test $zsh_cv_c_broken_signed_to_unsigned_casting = yes; then
   AC_DEFINE(BROKEN_SIGNED_TO_UNSIGNED_CASTING)
 fi
@@ -415,6 +459,8 @@
 [AC_TRY_COMPILE([int foo(), n;], [int i[foo()], a[n+1];],
   zsh_cv_c_variable_length_arrays=yes,
   zsh_cv_c_variable_length_arrays=no)])
+AH_TEMPLATE([HAVE_VARIABLE_LENGTH_ARRAYS],
+[Define to 1 if compiler supports variable-length arrays])
 if test $zsh_cv_c_variable_length_arrays = yes; then
   AC_DEFINE(HAVE_VARIABLE_LENGTH_ARRAYS)
 fi
@@ -466,6 +512,8 @@
 fi
 
 dnl Some SCO systems cannot include both sys/time.h and sys/select.h
+AH_TEMPLATE([TIME_H_SELECT_H_CONFLICTS],
+[Define if sys/time.h and sys/select.h cannot be both included.])
 if test $ac_cv_header_sys_time_h = yes && test $ac_cv_header_sys_select_h = yes; then
   AC_CACHE_CHECK(for conflicts in sys/time.h and sys/select.h,
   zsh_cv_header_time_h_select_h_conflicts,
@@ -498,6 +546,8 @@
   zsh_cv_header_termios_h_tiocgwinsz=no
 fi
  
+AH_TEMPLATE([GWINSZ_IN_SYS_IOCTL],
+[Define if your system defines TIOCGWINSZ in sys/ioctl.h.])
 if test $zsh_cv_header_termios_h_tiocgwinsz = no; then
   AC_CACHE_CHECK(TIOCGWINSZ in sys/ioctl.h,
   zsh_cv_header_sys_ioctl_h_tiocgwinsz,
@@ -511,6 +561,8 @@
   fi
 fi
  
+AH_TEMPLATE([WINSIZE_IN_PTEM],
+[Define if your system defines `struct winsize' in sys/ptem.h.])
 AC_CHECK_HEADER([sys/ptem.h], AC_DEFINE(WINSIZE_IN_PTEM))
 
 dnl -------------------
@@ -543,6 +595,20 @@
   *)             termcap_curses_order="tinfo termcap curses ncurses" ;;
 esac])dnl
 
+AH_TEMPLATE([HAVE_BOOLCODES],
+[Define if you have the termcap boolcodes symbol.])
+AH_TEMPLATE([HAVE_NUMCODES],
+[Define if you have the termcap numcodes symbol.])
+AH_TEMPLATE([HAVE_STRCODES],
+[Define if you have the termcap strcodes symbol.])
+AH_TEMPLATE([HAVE_BOOLNAMES],
+[Define if you have the terminfo boolnames symbol.])
+AH_TEMPLATE([HAVE_NUMNAMES],
+[Define if you have the terminfo numnames symbol.])
+AH_TEMPLATE([HAVE_STRNAMES],
+[Define if you have the terminfo strnames symbol.])
+AH_TEMPLATE([TERM_H_NEEDS_CURSES_H],
+[Define if term.h chokes without curses.h.])
 AC_SEARCH_LIBS(tgetent, [$termcap_curses_order])
 case "$LIBS" in
 *curses*)
@@ -658,6 +724,10 @@
   zsh_cv_decl_ospeed_must_define=no)])
 fi
 
+AH_TEMPLATE([HAVE_OSPEED],
+[Define to 1 if your termcap library has the ospeed variable])
+AH_TEMPLATE([MUST_DEFINE_OSPEED],
+[Define to 1 if you have ospeed, but it is not defined in termcap.h])
 if test $zsh_cv_decl_ospeed_include_defines = yes; then
   AC_DEFINE(HAVE_OSPEED)
 elif test $zsh_cv_decl_ospeed_must_define = yes; then
@@ -688,6 +758,25 @@
 zsh_cv_long_is_64_bit=no,
 zsh_cv_long_is_64_bit=no)])
 
+AH_TEMPLATE([ino_t],
+[Define to `unsigned long' if <sys/types.h> doesn't define.])
+AH_TEMPLATE([LONG_IS_64_BIT],
+[Definitions used when a long is less than eight byte, to try to
+ provide some support for eight byte operations.
+
+ Note that ZSH_64_BIT_TYPE, OFF_T_IS_64_BIT, INO_T_IS_64_BIT do *not* get
+ defined if long is already 64 bits, since in that case no special handling
+ is required.
+
+ Define to 1 if long is 64 bits])
+AH_TEMPLATE([ZSH_64_BIT_TYPE],
+[Define to a 64 bit integer type if there is one, but long is shorter.])
+AH_TEMPLATE([ZSH_64_BIT_UTYPE],
+[Define to an unsigned variant of ZSH_64_BIT_TYPE if that is defined.])
+AH_TEMPLATE([OFF_T_IS_64_BIT],
+[Define to 1 if off_t is 64 bit (for large file support)])
+AH_TEMPLATE([INO_T_IS_64_BIT],
+[Define to 1 if ino_t is 64 bit (for large file support).])
 if test $zsh_cv_long_is_64_bit = yes; then
   AC_DEFINE(LONG_IS_64_BIT)
 else
@@ -765,6 +854,8 @@
 [#include <sys/types.h>
 #include <signal.h>], [sigset_t tempsigset;],
   zsh_cv_type_sigset_t=yes, zsh_cv_type_sigset_t=no)])
+AH_TEMPLATE([sigset_t],
+[Define to `unsigned int' if <sys/types.h> or <signal.h> doesn't define])
 if test $zsh_cv_type_sigset_t = no; then
   AC_DEFINE(sigset_t, unsigned int)
 fi
@@ -883,6 +974,8 @@
 ], struct sockaddr_in6, sin6_scope_id)
 
 dnl Check for h_errno external variable
+AH_TEMPLATE([USE_LOCAL_H_ERRNO],
+[Define to 1 if h_errno is not defined by the system.])
 AC_CACHE_CHECK(if we need our own h_errno,
   zsh_cv_decl_h_errno_use_local,
   [AC_TRY_LINK( ,[extern int h_errno; h_errno = 0;],
@@ -935,6 +1028,8 @@
 dnl  in tgetstr().
 dnl  Under Cygwin test program crashes but exit code is still 0. So,
 dnl  we test for a file that porgram should create
+AH_TEMPLATE([TGETENT_ACCEPTS_NULL],
+[Define to 1 if tgetent() accepts NULL as a buffer.])
 AC_CACHE_CHECK(if tgetent accepts NULL,
 zsh_cv_func_tgetent_accepts_null,
 [AC_TRY_RUN([
@@ -986,6 +1081,8 @@
   fi,
   zsh_cv_func_tgetent_zero_success=no,
   zsh_cv_func_tgetent_zero_success=no)])
+AH_TEMPLATE([TGETENT_SUCCESS],
+[Define to what tgetent() returns on success (0 on HP-UX X/Open curses).])
 if test $zsh_cv_func_tgetent_zero_success = yes; then
   AC_DEFINE(TGETENT_SUCCESS, 0)
 else
@@ -1018,6 +1115,14 @@
 dnl CHECK SIGNALS
 dnl -------------
 dnl What style of signal do you have (POSIX, BSD, or SYSV)?
+AH_TEMPLATE([POSIX_SIGNALS],
+[Define to 1 if you use POSIX style signal handling.])
+AH_TEMPLATE([BSD_SIGNALS],
+[Define to 1 if you use BSD style signal handling (and can block signals).])
+AH_TEMPLATE([SYSV_SIGNALS],
+[Define to 1 if you use SYS style signal handling (and can block signals).])
+AH_TEMPLATE([NO_SIGNAL_BLOCKING],
+[Define to 1 if you have no signal blocking at all (bummer).])
 AC_MSG_CHECKING(what style of signals to use)
 if test $ac_cv_func_sigaction = yes && test $ac_cv_func_sigprocmask = yes; then
   signals_style=POSIX_SIGNALS
@@ -1151,6 +1256,14 @@
 dnl ------------------
 dnl rlimit type checks
 dnl ------------------
+AH_TEMPLATE([RLIM_T_IS_QUAD_T],
+[Define to 1 if struct rlimit uses quad_t.])
+AH_TEMPLATE([RLIM_T_IS_LONG_LONG],
+[Define to 1 if struct rlimit uses long long])
+AH_TEMPLATE([RLIM_T_IS_UNSIGNED],
+[Define to 1 if struct rlimit uses unsigned.])
+AH_TEMPLATE([rlim_t],
+[Define to the type used in struct rlimit.])
 DEFAULT_RLIM_T=long
 AC_CACHE_CHECK(if rlim_t is longer than a long,
 zsh_cv_rlim_t_is_longer,
@@ -1240,6 +1353,8 @@
 zsh_LIMIT_PRESENT(RLIMIT_TCACHE)
 zsh_LIMIT_PRESENT(RLIMIT_VMEM)
 
+AH_TEMPLATE([RLIMIT_VMEM_IS_RSS],
+[Define to 1 if RLIMIT_VMEM and RLIMIT_RSS both exist and are equal.])
 AC_CACHE_CHECK(if RLIMIT_VMEM and RLIMIT_RSS are the same,
 zsh_cv_rlimit_vmem_is_rss,
 [AC_TRY_RUN([
@@ -1265,6 +1380,8 @@
 fi
 
 
+AH_TEMPLATE([RLIMIT_VMEM_IS_AS],
+[Define to 1 if RLIMIT_VMEM and RLIMIT_AS both exist and are equal.])
 AC_CACHE_CHECK(if RLIMIT_VMEM and RLIMIT_AS are the same,
 zsh_cv_rlimit_vmem_is_as,
 [AC_TRY_RUN([
@@ -1301,12 +1418,15 @@
 else
   zsh_cv_cs_path="/bin:/usr/bin"
 fi])
-AC_DEFINE_UNQUOTED(DEFAULT_PATH, "$zsh_cv_cs_path")
+AC_DEFINE_UNQUOTED(DEFAULT_PATH, "$zsh_cv_cs_path",
+[The default path; used when running commands with command -p])
 
 
 dnl ----------------------------
 dnl CHECK FOR /dev/fd FILESYSTEM
 dnl ----------------------------
+AH_TEMPLATE([PATH_DEV_FD],
+[Define to the path of the /dev/fd filesystem.])
 AC_CACHE_CHECK(for /dev/fd filesystem, zsh_cv_sys_path_dev_fd,
 [for zsh_cv_sys_path_dev_fd in /proc/self/fd /dev/fd no; do
    test x`echo ok|cat $zsh_cv_sys_path_dev_fd/0 2>/dev/null` = xok && break
@@ -1320,6 +1440,8 @@
 dnl ---------------------------------
 AC_CACHE_CHECK(for RFS superroot directory, zsh_cv_sys_superroot,
 [test -d /../.LOCALROOT && zsh_cv_sys_superroot=yes || zsh_cv_sys_superroot=no])
+AH_TEMPLATE([HAVE_SUPERROOT],
+[Define to 1 if you have RFS superroot directory.])
 if test $zsh_cv_sys_superroot = yes; then
   AC_DEFINE(HAVE_SUPERROOT)
 fi
@@ -1331,6 +1453,8 @@
     *QNX*) zsh_cv_use_getcwd=yes ;;
     *) zsh_cv_use_getcwd=no ;;
  esac])
+AH_TEMPLATE([USE_GETCWD],
+[Define to 1 if you need to use the native getcwd.])
 if test $zsh_cv_use_getcwd = yes; then
   AC_DEFINE(USE_GETCWD)
 fi
@@ -1338,6 +1462,8 @@
 dnl -------------
 dnl CHECK FOR NIS
 dnl -------------
+AH_TEMPLATE([HAVE_NIS],
+[Define to 1 if you have NIS.])
 AC_CACHE_CHECK(for NIS, zsh_cv_sys_nis,
 [test -f /usr/bin/ypcat && /usr/bin/ypcat passwd.byname > /dev/null 2>&1 && \
 zsh_cv_sys_nis=yes || zsh_cv_sys_nis=no])
@@ -1348,6 +1474,8 @@
 dnl -----------------
 dnl CHECK FOR NISPLUS
 dnl -----------------
+AH_TEMPLATE([HAVE_NIS_PLUS],
+[Define to 1 if you have NISPLUS.])
 AC_CACHE_CHECK(for NIS+, zsh_cv_sys_nis_plus,
 [test $ac_cv_func_nis_list = yes && test -f /usr/bin/nisls && \
  /usr/bin/nisls > /dev/null 2>&1 && \
@@ -1372,6 +1500,8 @@
 [AC_TRY_COMPILE([#include <unistd.h>
 double brk();], [int i;],
 zsh_cv_header_unistd_h_brk_proto=no, zsh_cv_header_unistd_h_brk_proto=yes)])
+AH_TEMPLATE([HAVE_BRK_PROTO],
+[Define to 1 if there is a prototype defined for brk() on your system.])
 if test $zsh_cv_header_unistd_h_brk_proto = yes; then
   AC_DEFINE(HAVE_BRK_PROTO)
 fi
@@ -1381,6 +1511,8 @@
 [AC_TRY_COMPILE([#include <unistd.h>
 double sbrk();], [int i;],
 zsh_cv_header_unistd_h_sbrk_proto=no, zsh_cv_header_unistd_h_sbrk_proto=yes)])
+AH_TEMPLATE([HAVE_SBRK_PROTO],
+[Define to 1 if there is a prototype defined for sbrk() on your system.])
 if test $zsh_cv_header_unistd_h_sbrk_proto = yes; then
   AC_DEFINE(HAVE_SBRK_PROTO)
 fi
@@ -1389,6 +1521,10 @@
 dnl ioctl and mknod prototypes for OSF
 dnl ----------------------------------
 
+AH_TEMPLATE([HAVE_IOCTL_PROTO],
+[Define to 1 if there is a prototype defined for ioctl() on your system])
+AH_TEMPLATE([HAVE_MKNOD_PROTO],
+[Define to 1 if there is a prototype defined for mknod() on your system])
 if test "$ac_cv_prog_cc_stdc" != no; then
   AC_CACHE_CHECK(for ioctl prototype in <sys/ioctl.h>,
   zsh_cv_header_sys_ioctl_h_ioctl_proto,
@@ -1413,6 +1549,8 @@
 dnl -------------------
 dnl select() defined in <sys/socket.h>, ie BeOS R4.51
 dnl -------------------
+AH_TEMPLATE([SELECT_IN_SYS_SOCKET_H],
+[Define to 1 if select() is defined in <sys/socket.h>, ie BeOS R4.51])
 if test $ac_cv_header_sys_select_h != yes; then
   AC_CACHE_CHECK(for select() in <sys/socket.h>,
   zsh_cv_header_socket_h_select_proto,
@@ -1460,6 +1598,8 @@
   zsh_cv_sys_fifo=yes,
   zsh_cv_sys_fifo=no,
   zsh_cv_sys_fifo=yes)])
+AH_TEMPLATE([HAVE_FIFOS],
+[Define to 1 if system has working FIFOs.])
 if test $zsh_cv_sys_fifo = yes; then
   AC_DEFINE(HAVE_FIFOS)
 fi
@@ -1473,6 +1613,8 @@
 else
   zsh_cv_prog_sh_echo_escape=yes
 fi])
+AH_TEMPLATE([SH_USE_BSD_ECHO],
+[Define to 1 if /bin/sh does not interpret \ escape sequences.])
 if test $zsh_cv_prog_sh_echo_escape = no; then
   AC_DEFINE(SH_USE_BSD_ECHO)
 fi
@@ -1505,6 +1647,8 @@
   zsh_cv_sys_link=yes,
   zsh_cv_sys_link=no,
   zsh_cv_sys_link=yes)])
+AH_TEMPLATE([HAVE_LINK],
+[Define to 1 if system has working link().])
 if test $zsh_cv_sys_link = yes; then
   AC_DEFINE(HAVE_LINK)
 fi
@@ -1529,6 +1673,8 @@
   zsh_cv_sys_killesrch=yes,
   zsh_cv_sys_killesrch=no,
   zsh_cv_sys_killesrch=yes)])
+AH_TEMPLATE([BROKEN_KILL_ESRCH],
+[Define to 1 if kill(pid, 0) doesn't return ESRCH, ie BeOS R4.51.])
 if test $zsh_cv_sys_killesrch = no; then
   AC_DEFINE(BROKEN_KILL_ESRCH)
 fi
@@ -1537,6 +1683,8 @@
 dnl if POSIX, test for working sigsuspend().
 dnl for instance, BeOS R4.51 is broken.
 dnl -----------
+AH_TEMPLATE([BROKEN_POSIX_SIGSUSPEND],
+Define to 1 if sigsuspend() is broken, ie BeOS R4.51.])
 if test $signals_style = POSIX_SIGNALS; then
     AC_CACHE_CHECK(if POSIX sigsuspend() works,
     zsh_cv_sys_sigsuspend,
@@ -1578,6 +1726,8 @@
 dnl if found tcsetpgrp, test to see if it actually works
 dnl for instance, BeOS R4.51 does not support it yet
 dnl -----------
+AH_TEMPLATE([BROKEN_TCSETPGRP],
+[Define to 1 if tcsetpgrp() doesn't work, ie BeOS R4.51.])
 if test -t 0 && test $ac_cv_func_tcsetpgrp = yes; then
     AC_CACHE_CHECK(if tcsetpgrp() actually works,
     zsh_cv_sys_tcsetpgrp,
@@ -1603,6 +1753,8 @@
 dnl for instance, BeOS R4.51 is not multiuser yet, and fakes getpwnam()
 dnl test by looking up two usernames that shouldn't succeed, and compare entry
 dnl -----------
+AH_TEMPLATE([GETPWNAM_FAKED],
+[Define to 1 if getpwnam() is faked, ie BeOS R4.51.])
 if test $ac_cv_func_getpwnam = yes; then
     AC_CACHE_CHECK(if getpwnam() is faked,
     zsh_cv_sys_getpwnam_faked,
@@ -1637,6 +1789,8 @@
 dnl ---------------
 dnl dynamic loading
 dnl ---------------
+AH_TEMPLATE([HPUXDYNAMIC],
+[Define to 1 if you want to use dynamically loaded modules on HPUX 10.])
 L=N
 INSTLIB="install.bin-\$(L)"
 UNINSTLIB="uninstall.bin-\$(L)"
@@ -1674,6 +1828,10 @@
 
 test -n "$GCC" && LDARG=-Wl,
 
+AH_TEMPLATE([DLSYM_NEEDS_UNDERSCORE],
+[Define to 1 if an underscore has to be prepended to dlsym() argument.])
+AH_TEMPLATE([DYNAMIC_NAME_CLASH_OK],
+[Define to 1 if multiple modules defining the same symbol are OK.])
 if test "x$aixdynamic" = xyes; then
   DL_EXT="${DL_EXT=so}"
   DLLD="${DLLD=$CC}"
@@ -1943,6 +2101,8 @@
   RTLD_GLOBAL_OK=no
 fi
 
+AH_TEMPLATE([DYNAMIC],
+[Define to 1 if you want to use dynamically loaded modules.])
 if test "x$dynamic" = xyes; then
   D=D
   AC_DEFINE(DYNAMIC)dnl
@@ -1950,6 +2110,8 @@
   D=N
 fi
 
+AH_TEMPLATE([AIXDYNAMIC],
+[Define to 1 if you want to use dynamically loaded modules on AIX.])
 if test "x$aixdynamic" = xyes; then
   E=E
   AC_DEFINE(AIXDYNAMIC)dnl
@@ -1971,7 +2133,8 @@
   EXTRAZSHOBJS="$EXTRAZSHOBJS zsh.res.o"
 fi
 
-AC_DEFINE_UNQUOTED(DL_EXT, "$DL_EXT")dnl
+AC_DEFINE_UNQUOTED(DL_EXT, "$DL_EXT",
+[The extension used for dynamically loaded modules.])dnl
 AC_SUBST(D)dnl
 AC_SUBST(DL_EXT)dnl
 AC_SUBST(DLLD)dnl
@@ -2004,6 +2167,9 @@
   userlist="`sed -e '/^#/d' -e '/auto=y/d' -e 's/ .*/ /' -e 's/^name=/ /' \
         ${CONFIG_MODULES}`"
   mv ${CONFIG_MODULES} ${CONFIG_MODULES}.old
+else
+  # Save testing for existence each time.
+  echo > ${CONFIG_MODULES}.old
 fi
 (echo "# Edit this file to change the way modules are loaded."
 echo "# The format is strict; do not break lines or add extra spaces."
@@ -2032,65 +2198,106 @@
 echo "#"
 echo "# You should not change the values for the pseudo-module zsh/main,"
 echo "# which is the main shell (apart from the functions entry)."
+EOM
+dnl The autoconf macros are only available in configure, not
+dnl config.status, and only change when configure is rerun.
+dnl So we need to run the autoconf tests here and store the results.
+dnl We then generate config.modules, preserving any user-generated
+dnl information, from config.status.
 for modfile in `cd ${srcdir}; echo */*.mdd */*/*.mdd`; do
   name=
   link=
   load=
   functions=
+  result=
   . ${srcdir}/$modfile
   if test x$name != x && test x"$link" != x; then
-    case "$userlist" in
-    *" $name "*) # not autogenerated, keep original
-                grep "^name=$name " ${CONFIG_MODULES}.old
-		;;
-    *) case "$link" in
-	  *\ *) eval "link=\`$link\`"
-	       ;;
-       esac
-       case "${load}" in
-	y*) load=" load=yes"
+    case "$link" in
+      *\ *) eval "link=\`$link\`"
 	    ;;
-	 *) load=" load=no"
-	    ;;
-       esac
-       if test "x$functions" != x; then
-         # N.B. no additional quotes
-         f=" functions=$functions"
-       else
-         f=
-       fi
-       case "$link" in
-	 static) echo "name=$name modfile=$modfile link=static auto=yes${load}$f"
-	         ;;
-	 dynamic) if test $dynamic != no; then
-		    echo "name=$name modfile=$modfile link=dynamic\
+    esac
+    case "${load}" in
+      y*) load=" load=yes"
+	  ;;
+      *) load=" load=no"
+	 ;;
+    esac
+    if test "x$functions" != x; then
+      # N.B. no additional quotes
+      f=" functions=$functions"
+    else
+      f=
+    fi
+    case "$link" in
+      static) result="name=$name modfile=$modfile link=static auto=yes${load}$f"
+	      ;;
+      dynamic) if test $dynamic != no; then
+		  result="name=$name modfile=$modfile link=dynamic\
  auto=yes${load}$f"
-		  else
-		    echo "name=$name modfile=$modfile link=no\
+	       else
+		 result="name=$name modfile=$modfile link=no\
  auto=yes load=no$f"
-		  fi
-		  ;;
-	 either) if test $dynamic != no; then
-		   echo "name=$name modfile=$modfile link=dynamic\
+	       fi
+	       ;;
+      either) if test $dynamic != no; then
+		result="name=$name modfile=$modfile link=dynamic\
  auto=yes${load}$f"
-		 else
-		   echo "name=$name modfile=$modfile link=static\
+	      else
+		result="name=$name modfile=$modfile link=static\
  auto=yes${load}$f"
-		 fi
-		 ;;
-	      *) echo "name=$name modfile=$modfile link=no auto=yes load=no$f"
-		 ;;
-       esac
-       ;;
+	      fi
+	      ;;
+       *) result="name=$name modfile=$modfile link=no auto=yes load=no$f"
+	  ;;
     esac
+dnl $result is the default output for config.modules.  We generate
+dnl code to check if we should use this.
+cat <<EOM >> ${CONFIG_MODULES}.sh
+case "\$userlist" in
+  *" $name "*) grep "^name=$name " \${CONFIG_MODULES}.old;;
+  *) echo "$result";;
+esac
+EOM
   fi
-done) >${CONFIG_MODULES}
+done
+cat <<\EOM >> ${CONFIG_MODULES}.sh
+) >${CONFIG_MODULES}
 rm -f ${CONFIG_MODULES}.old
 EOM
-AC_OUTPUT_COMMANDS(,[if test -z "\$CONFIG_FILES\$CONFIG_HEADERS"; then
-`cat ./${CONFIG_MODULES}.sh && rm -f ./${CONFIG_MODULES}.sh`
-fi])
-. ./${CONFIG_MODULES}.sh
+
+dnl AH_TOP replaces the code which used to appear at the top
+dnl of acconfig.h.
+AH_TOP([/***** begin user configuration section *****/
+
+/* Define this to be the location of your password file */
+#define PASSWD_FILE "/etc/passwd"
+
+/* Define this to be the name of your NIS/YP password *
+ * map (if applicable)                                */
+#define PASSWD_MAP "passwd.byname"
+
+/* Define to 1 if you want user names to be cached */
+#define CACHE_USERNAMES 1
+
+/* Define to 1 if system supports job control */
+#define JOB_CONTROL 1
+
+/* Define this if you use "suspended" instead of "stopped" */
+#define USE_SUSPENDED 1
+ 
+/* The default history buffer size in lines */
+#define DEFAULT_HISTSIZE 30
+
+/* The default editor for the fc builtin */
+#define DEFAULT_FCEDIT "vi"
+
+/* The default prefix for temporary files */
+#define DEFAULT_TMPPREFIX "/tmp/zsh"
+
+/***** end of user configuration section            *****/
+/***** shouldn't have to change anything below here *****/
+
+])
 
 CLEAN_MK="${srcdir}/Config/clean.mk"
 CONFIG_MK="${srcdir}/Config/config.mk"
@@ -2103,9 +2310,11 @@
 AC_SUBST_FILE(DEFS_MK)dnl
 AC_SUBST_FILE(VERSION_MK)dnl
 
-AC_OUTPUT(Config/defs.mk Makefile Doc/Makefile Etc/Makefile Src/Makefile \
-Test/Makefile,
-[test -z "$CONFIG_HEADERS" || echo > stamp-h])
+AC_CONFIG_FILES(Config/defs.mk Makefile Doc/Makefile Etc/Makefile \
+Src/Makefile Test/Makefile)
+AC_CONFIG_COMMANDS([config.modules], [. config.modules.sh])
+
+AC_OUTPUT
 
 eval "zshbin1=${bindir}"
 eval "zshbin2=${zshbin1}"

-- 
Peter Stephenson <pws@pwstephenson.fsnet.co.uk>
Work: pws@csr.com
Web: http://www.pwstephenson.fsnet.co.uk


^ permalink raw reply	[relevance 2%]

* PATCH: ptmx part 2
  @ 2004-02-20 15:21  8% ` Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2004-02-20 15:21 UTC (permalink / raw)
  To: Zsh hackers list

Peter Stephenson wrote:
> One course of action:
> 
> - Define _GNU_SOURCE for Linux only --- we've got enough testers to make
> it fairly painless to find out if this causes compilation problems.
> (Defining _XOPEN_SOURCE directly is harder since you've got to work
> out the version number.)
> - Check for the function definitions, particularly ptsname(), to make
> sure.
> - Only let the streams stuff cause havoc on Solaris.

This works on RedHat 9 and Solaris 8.

The check for the ptsname() prototype is a bit of a hack, since I don't
know how to do this properly.  I declare it as int ptsname(), i.e. the
same as the implicit definition, and if that causes an error I assume it
was properly prototyped.

Index: configure.ac
===================================================================
RCS file: /cvsroot/zsh/zsh/configure.ac,v
retrieving revision 1.7
diff -u -r1.7 configure.ac
--- configure.ac	18 Feb 2004 13:33:08 -0000	1.7
+++ configure.ac	20 Feb 2004 14:47:48 -0000
@@ -1802,8 +1802,6 @@
 dnl We need to open it read/write, so make sure it is writeable.
 dnl Yet another test which won't work when cross-compiling.
 dnl ---------------
-AH_TEMPLATE([HAVE_DEV_PTMX],
-[Define to 1 if your system can use /dev/ptmx for creating ptys.])
 AC_CACHE_CHECK(if your system has /dev/ptmx,
 ac_cv_have_dev_ptmx,
 [if test -w /dev/ptmx; then
@@ -1811,10 +1809,38 @@
 else
   ac_cv_have_dev_ptmx=no
 fi])
-if test $ac_cv_have_dev_ptmx = yes; then
-  AC_DEFINE(HAVE_DEV_PTMX)
+
+dnl --------
+dnl Check if the ptmx functions are usable.
+dnl We need to be able to find the prototypes, which may
+dnl require non-POSIX source definitions.  So test to see
+dnl if ptsname is correctly recognised as returning a char *.
+dnl We do this by making sure a program where ptsname() is declared
+dnl as returning int does *not* compile.
+dnl On Linux we need the XOPEN extensions.  The easiest way to get
+dnl these is by defining _GNU_SOURCE.
+dnl -------
+AH_TEMPLATE([USE_DEV_PTMX],
+[Define to 1 if all the kit for using /dev/ptmx for ptys is available.])
+if test $ac_cv_have_dev_ptmx = yes && \
+   test $ac_cv_func_grantpt = yes && \
+   test $ac_cv_func_unlockpt = yes && \
+   test $ac_cv_func_ptsname = yes; then
+   AC_CACHE_CHECK([if /dev/ptmx is usable],
+   ac_cv_use_dev_ptmx,
+   [AC_TRY_COMPILE([#ifdef __linux
+#define _GNU_SOURCE 1
+#endif
+#include <stdlib.h>
+int ptsname();], ,
+   ac_cv_use_dev_ptmx=no,
+   ac_cv_use_dev_ptmx=yes)])
+   if test $ac_cv_use_dev_ptmx = yes; then
+     AC_DEFINE(USE_DEV_PTMX)
+   fi
 fi
 
+
 dnl ---------------
 dnl dynamic loading
 dnl ---------------
Index: Src/system.h
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/system.h,v
retrieving revision 1.17
diff -u -r1.17 system.h
--- Src/system.h	25 Jun 2003 14:48:38 -0000	1.17
+++ Src/system.h	20 Feb 2004 14:47:49 -0000
@@ -37,6 +37,14 @@
 #endif
 #endif
 
+#ifdef __linux
+/*
+ * Turn on numerous extensions.
+ * This is in order to get the functions for manipulating /dev/ptmx.
+ */
+#define _GNU_SOURCE 1
+#endif
+
 /* NeXT has half-implemented POSIX support *
  * which currently fools configure         */
 #ifdef __NeXT__
Index: Src/Modules/zpty.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/Modules/zpty.c,v
retrieving revision 1.28
diff -u -r1.28 zpty.c
--- Src/Modules/zpty.c	17 Feb 2004 13:53:40 -0000	1.28
+++ Src/Modules/zpty.c	20 Feb 2004 14:47:49 -0000
@@ -154,8 +154,7 @@
     return NULL;
 }
 
-#if defined(HAVE_DEV_PTMX) && defined(HAVE_GRANTPT) && \
-    defined(HAVE_PTSNAME) && defined(HAVE_UNLOCKPT)
+#ifdef USE_DEV_PTMX
 
 #ifdef HAVE_SYS_STROPTS_H
 #include <sys/stropts.h>
@@ -190,7 +189,7 @@
 	close(mfd);
 	return 1;
     }
-#if defined(I_FIND) && defined(I_PUSH)
+#if defined(I_FIND) && defined(I_PUSH) && defined(__SVR4)
     /*
      * Use if STREAMS is available.  The test is probably OK,
      * but we could use e.g. the sys/stropts.h test.
Index: Src/Zle/iwidgets.list
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/Zle/iwidgets.list,v
retrieving revision 1.4
diff -u -r1.4 iwidgets.list
--- Src/Zle/iwidgets.list	1 Jul 2002 09:54:48 -0000	1.4
+++ Src/Zle/iwidgets.list	20 Feb 2004 14:47:49 -0000
@@ -56,7 +56,7 @@
 "expand-word", expandword, 0
 "forward-char", forwardchar, 0
 "forward-word", forwardword, 0
-"get-line", getline, 0
+"get-line", zgetline, 0
 "gosmacs-transpose-chars", gosmacstransposechars, 0
 "history-beginning-search-backward", historybeginningsearchbackward, 0
 "history-beginning-search-forward", historybeginningsearchforward, 0
Index: Src/Zle/zle_hist.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/Zle/zle_hist.c,v
retrieving revision 1.9
diff -u -r1.9 zle_hist.c
--- Src/Zle/zle_hist.c	6 Dec 2002 23:24:07 -0000	1.9
+++ Src/Zle/zle_hist.c	20 Feb 2004 14:47:49 -0000
@@ -660,9 +660,10 @@
     return ret;
 }
 
+/* Renamed to avoid clash with library function */
 /**/
 int
-getline(char **args)
+zgetline(char **args)
 {
     char *s = (char *)getlinknode(bufstack);
 

-- 
Peter Stephenson <pws@csr.com>                  Software Engineer
CSR Ltd., Science Park, Milton Road,
Cambridge, CB4 0WH, UK                          Tel: +44 (0)1223 692070


**********************************************************************
This email and any files transmitted with it are confidential and
intended solely for the use of the individual or entity to whom they
are addressed. If you have received this email in error please notify
the system manager.

This footnote also confirms that this email message has been swept by
MIMEsweeper for the presence of computer viruses.

www.mimesweeper.com
**********************************************************************


^ permalink raw reply	[relevance 8%]

* Re: 4.2.0-pre-2
  @ 2004-03-04 13:59  5% ` Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2004-03-04 13:59 UTC (permalink / raw)
  To: Zsh hackers list, Ibraheem Umaru-Mohammed

Ibraheem Umaru-Mohammed wrote:
> Ok. I have included the capabilities.h which seems to have the "opaque"
> definition for cap_t. Below is the result of running grep through
> /usr/include:

Thanks for the info... The important thing is if you managed to get
it to compile.  I don't see a prototype for cap_get_proc there.
The only thing I can see is to add the flag I suggested earlier.

If anyone has the ability to fix this properly, please do.

I've just noticed that the `term.h' problem hasn't gone away.
It looks like configure should test for curses.h first, then see if
it can include term.h using

#ifdef HAVE_CURSES_H
#include <curses.h>
#endif
#include <term.h>

and if that works unconditionally use term.h, so getting rid of the
current `needs curses.h' flag.

It would be great if someone else had a chance to do that.  I only have
limited time for all these endless configuration changes.


Index: configure.ac
===================================================================
RCS file: /cvsroot/zsh/zsh/configure.ac,v
retrieving revision 1.12
diff -u -r1.12 configure.ac
--- configure.ac	3 Mar 2004 19:38:00 -0000	1.12
+++ configure.ac	4 Mar 2004 13:47:44 -0000
@@ -313,6 +313,11 @@
 AC_HELP_STRING([--enable-pcre],
 [enable the search for the pcre library (may create run-time library dependencies)]))
 
+dnl Do you want to look for capability support?
+AC_ARG_ENABLE(cap,
+AC_HELP_STRING([--enable-cap],
+[enable the search for POSIX capabilities (may require additional headers to be added by hand)]))
+
 dnl ------------------
 dnl CHECK THE COMPILER
 dnl ------------------
@@ -709,7 +714,9 @@
   AC_CHECK_LIB(dl, dlopen)
 fi
 
-AC_CHECK_LIB(cap, cap_get_proc)
+if test x$enable_cap = xyes; then
+  AC_CHECK_LIB(cap, cap_get_proc)
+fi
 
 AC_CHECK_LIB(socket, socket)
 
@@ -1029,7 +1036,6 @@
 	       initgroups nis_list \
 	       setuid seteuid setreuid setresuid setsid \
 	       memcpy memmove strstr strerror \
-	       cap_get_proc \
 	       getrlimit \
 	       setlocale \
 	       uname \
@@ -1045,6 +1051,10 @@
 	       grantpt unlockpt ptsname)
 AC_FUNC_STRCOLL
 
+if test x$enable_cap = xyes; then
+  AC_CHECK_FUNCS(cap_get_proc)
+fi
+
 dnl  Check if tgetent accepts NULL (and will allocate its own termcap buffer)
 dnl  Some termcaps reportedly accept a zero buffer, but then dump core
 dnl  in tgetstr().
Index: INSTALL
===================================================================
RCS file: /cvsroot/zsh/zsh/INSTALL,v
retrieving revision 1.13
diff -u -r1.13 INSTALL
--- INSTALL	1 Mar 2004 17:58:53 -0000	1.13
+++ INSTALL	4 Mar 2004 13:47:44 -0000
@@ -359,20 +359,32 @@
 None of this is relevant for 64-bit systems; zsh should compile and run
 without problems if (sizeof(long) == 8).
 
-Searching for `pcre'
---------------------
+Searching for additional features
+---------------------------------
+
+Various additional features are turned off by default to avoid
+compatibility problems.
+
+--enable-pcre:
 
 Zsh has a module which allows the pcre regular expression library to be
 used via shell builtins.  Compiling this library into the shell with
 dynamic loading (the default where available) produces a dependency on the
 library libpcre.so.  This is a problem on systems where zsh needs to be
-available at boot before the directory containing libpcre.so (for
-example /usr/lib or /usr/local/lib) is mounted.  For this reason,
-pcre support will only be searched for if the option --enable-pcre
-is passed to configure.
+available at boot before the directory containing libpcre.so (for example
+/usr/lib or /usr/local/lib) is mounted.  For this reason, pcre support will
+only be searched for if the option --enable-pcre is passed to configure.
 
 (Future versions of the shell may have a better fix for this problem.)
 
+--enable-cap:
+
+This searches for POSIX capabilities; if found, the `cap' library
+is available and the shell will use these to determine if the
+shell is running in some privileged mode.  This is turned off by
+default as on some systems non-standard headers (in particular AIX) are
+required.  A direct fix for that problem would be appreciated.
+
 Options For Configure
 ---------------------
 

-- 
Peter Stephenson <pws@csr.com>                  Software Engineer
CSR Ltd., Science Park, Milton Road,
Cambridge, CB4 0WH, UK                          Tel: +44 (0)1223 692070


**********************************************************************
This email and any files transmitted with it are confidential and
intended solely for the use of the individual or entity to whom they
are addressed. If you have received this email in error please notify
the system manager.

This footnote also confirms that this email message has been swept by
MIMEsweeper for the presence of computer viruses.

www.mimesweeper.com
**********************************************************************


^ permalink raw reply	[relevance 5%]

* Re: PATCH: case-insensitive globbing
  @ 2004-03-08 13:49  3%     ` James Devenish
  2004-03-08 16:36  0%       ` Peter Stephenson
  0 siblings, 1 reply; 200+ results
From: James Devenish @ 2004-03-08 13:49 UTC (permalink / raw)
  To: Zsh hackers list

In message <20040308124027.GA15505@mail.guild.uwa.edu.au>
on Mon, Mar 08, 2004 at 08:40:27PM +0800, James Devenish wrote:
> In message <5792.1078749261@csr.com>
> on Mon, Mar 08, 2004 at 12:34:21PM +0000, Peter Stephenson wrote:
> > > % ls /tmp/blah
> > > DATE
> > > % rehash
> > > % where date
> > > /tmp/blah/date
> > > /bin/date

But, now I note:

% where DATE
/tmp/blah/DATE
/bin/DATE

So...fair enough. An odd experience, but does make sense. For all I
know, this might even be an Apply kludge to make ported POSIX software
work in a case-insensitive environment (I haven't looked at how zsh
queries the OS for these files). [BTW: I received your reply after I
had already written this e-mail.] On a related note:

% ls -l =date
-r-xr-xr-x  1 root  wheel  19276 24 Sep 14:51 /bin/date*
% ls -l =DATE
-r-xr-xr-x  1 admin  wheel  19276 24 Sep 14:51 /tmp/blah/DATE*

Not complaining about this -- just pointing it out so that everyone's
aware of it. I don't know how this and other such letter-case issues are
handled in Cygwin. Perhaps there could be a footnote to the caseglob


^ permalink raw reply	[relevance 3%]

* [frederik@ugcs.caltech.edu: Bug#236748: zsh: associative array documentation reference broken]
@ 2004-03-08 15:23  3% Clint Adams
  0 siblings, 0 replies; 200+ results
From: Clint Adams @ 2004-03-08 15:23 UTC (permalink / raw)
  To: zsh-workers; +Cc: 236748-forwarded

The wording is different in >= 4.0.9, but "Subscript Flags" is still the
reference.  The entire thread is available at
http://bugs.debian.org/236748

----- Forwarded message from Frederik Eaton <frederik@ugcs.caltech.edu> -----

Date: Sun, 07 Mar 2004 18:44:50 -0800
From: Frederik Eaton <frederik@ugcs.caltech.edu>
To: Debian Bug Tracking System <submit@bugs.debian.org>
Subject: Bug#236748: zsh: associative array documentation reference broken

Package: zsh
Version: 4.0.8-1
Severity: minor

The zshparam man page says:

 For associative arrays, `[*]' or `[@]' evaluate to all the values
 (not the keys, but see Subscript Flags below), in no particular
 order.

There is nothing relevant to this syntax under Subscript Flags. My
guess is that something was moved from Subscript Flags in this page to
Parameter Expansion Flags in zshexpn. Also, it would be helpful if the
reference told the reader where to look in the referred-to section,
rather than making him read all of the entries.

The above sentence should probably read:

 For associative arrays, `[*]' or `[@]' evaluate to all the values
 (not the keys, but see the documentation for the 'k' flag under
 Parameter Expansion Flags in zshexpn(1)), in no particular order.

Thanks.

-- System Information:
Debian Release: testing/unstable
Architecture: powerpc
Kernel: Linux a5.repetae.net 2.4.22-powerpc #1 jeu déc 18 10:17:34 CET 2003 ppc
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8

Versions of packages zsh depends on:
ii  debconf                   1.2.35         Debian configuration management sy
ii  libc6                     2.3.2.ds1-11   GNU C Library: Shared libraries an
ii  libcap1                   1:1.10-12      support for getting/setting POSIX.
ii  libncurses5               5.3.20030719-4 Shared libraries for terminal hand
ii  passwd                    1:4.0.3-16     Change and administer password and

-- debconf information:
* zsh/rcmove: 


----- End forwarded message -----


^ permalink raw reply	[relevance 3%]

* Re: PATCH: case-insensitive globbing
  2004-03-08 13:49  3%     ` James Devenish
@ 2004-03-08 16:36  0%       ` Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2004-03-08 16:36 UTC (permalink / raw)
  To: James Devenish, Zsh hackers list

James Devenish wrote:
> In message <20040308124027.GA15505@mail.guild.uwa.edu.au>
> on Mon, Mar 08, 2004 at 08:40:27PM +0800, James Devenish wrote:
> > In message <5792.1078749261@csr.com>
> > on Mon, Mar 08, 2004 at 12:34:21PM +0000, Peter Stephenson wrote:
> > > > % ls /tmp/blah
> > > > DATE
> > > > % rehash
> > > > % where date
> > > > /tmp/blah/date
> > > > /bin/date
> 
> But, now I note:
> 
> % where DATE
> /tmp/blah/DATE
> /bin/DATE
> 
> So...fair enough. An odd experience, but does make sense. For all I
> know, this might even be an Apply kludge to make ported POSIX software
> work in a case-insensitive environment (I haven't looked at how zsh
> queries the OS for these files). [BTW: I received your reply after I
> had already written this e-mail.] On a related note:
> 
> % ls -l =date
> -r-xr-xr-x  1 root  wheel  19276 24 Sep 14:51 /bin/date*
> % ls -l =DATE
> -r-xr-xr-x  1 admin  wheel  19276 24 Sep 14:51 /tmp/blah/DATE*
> 
> Not complaining about this -- just pointing it out so that everyone's
> aware of it. I don't know how this and other such letter-case issues are
> handled in Cygwin. Perhaps there could be a footnote to the caseglob

The difference is that `where' is looking for all occurrence, so is
explicitly searching for either /path/to/date or /path/to/DATE.  If that
matches, it will not try to normalise the name.  This is the only
arguable bug; I know you're not arguing it is a bug, but it's the only
candidate for any change that I can see.  However, it requires special
knowledge about the filing system.

On the other hand, `=' is just looking at the hash table for where
either date or DATE lives.  This gets created once and for all the first
time it searches the directory or when you do `rehash'.  In this case it
browses the directory, so gets the canonical name.

-- 
Peter Stephenson <pws@csr.com>                  Software Engineer
CSR Ltd., Science Park, Milton Road,
Cambridge, CB4 0WH, UK                          Tel: +44 (0)1223 692070


**********************************************************************
This email and any files transmitted with it are confidential and
intended solely for the use of the individual or entity to whom they
are addressed. If you have received this email in error please notify
the system manager.

This footnote also confirms that this email message has been swept by
MIMEsweeper for the presence of computer viruses.

www.mimesweeper.com
**********************************************************************


^ permalink raw reply	[relevance 0%]

* Re: PATCH: terminfo configuration redux
  @ 2004-03-09  6:18  3% ` Felix Rosencrantz
  0 siblings, 0 replies; 200+ results
From: Felix Rosencrantz @ 2004-03-09  6:18 UTC (permalink / raw)
  To: Peter Stephenson, Zsh hackers list

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset=us-ascii, Size: 1012 bytes --]

Here is the output of configure pulling out lines containing term|curses:
checking termcap.h usability... yes
checking termcap.h presence... yes
checking for termcap.h... yes
checking termio.h usability... yes
checking termio.h presence... yes
checking for termio.h... yes
checking termios.h usability... yes
checking termios.h presence... yes
checking for termios.h... yes
checking POSIX termios... yes
checking TIOCGWINSZ in termios.h... no
checking for library containing tgetent... -ltermcap
checking for library containing tigetflag... -lcurses
checking curses.h usability... no
checking curses.h presence... no
checking for curses.h... no
checking for Solaris 8 curses.h mistake... no
checking term.h usability... no
checking term.h presence... no
checking for term.h... no
checking for setupterm... yes
library flags             : -ldl -lnsl -lcurses -ltermcap -lm  -lc

-FR.


__________________________________
Do you Yahoo!?
Yahoo! Search - Find what you’re looking for faster
http://search.yahoo.com


^ permalink raw reply	[relevance 3%]

* Re: Bug#239070: zsh: scp completion expands * too soon (patch)
       [not found]     <200403201750.i2KHo83C009843@soup.in.ql.org>
@ 2004-03-20 21:42  0% ` Clint Adams
  0 siblings, 0 replies; 200+ results
From: Clint Adams @ 2004-03-20 21:42 UTC (permalink / raw)
  To: Jay Berkenbilt, 239070; +Cc: zsh-workers

I think the tmda-like thing on the zsh lists probably blocked your
message, so I'm just going to quote your entire report in reply.

On Sat, Mar 20, 2004 at 12:50:08PM -0500, Jay Berkenbilt wrote:
> Package: zsh
> Version: 4.1.1-11
> Severity: normal
> Tags: patch
> 
> This bug is present in the current zsh in CVS as well, so I have cc'ed
> zsh-workers@sunsite.dk.  I hope that works.  I am not a subscriber to
> that list.
> 
> In a recent upgrade to zsh, completion for scp broke when resolving
> remote files.  There are two problems: wildcards are expanded too
> soon, and completion through symbolic links to directories doesn't
> work right (no trailing slash is provided).  These should rightfully
> be reported as two separate bug reports, but the two bugs are caused
> by the same line of code, which makes it hard to send two separate
> patches. :-)
> 
> I have verified that both of these bugs are reproducible with a
> generic vanilla uncustomized account whose sole zsh initialization is
> 
> autoload -U compinit
> compinit
> 
> These problems are not caused by anything special about my
> environment.
> 
> I have a machine "apex" that is (at the moment) a Red Hat Linux
> machine, and my local machine is running sid.  If I do
> 
> ssh apex:/ [TAB]
> 
> I see a list of all the files and directories that are common to the
> two machines.  The "apex" machine has the directory /shares, but my
> local machine does not.  If I do
> 
> ssh apex:/shares/ [TAB]
> 
> zsh generously appends "./" to the commandline.
> 
> This trace excerpt clearly shows what's happening.  The _remote_files
> function in /usr/share/zsh/4.1.1/functions/Completion/Unix/_ssh calls
> _call_program
> (/usr/share/zsh/4.1.1/functions/Completion/Base/_call_program) which
> ultimately ends up doing eval "$argv[2,-1]" which causes all the wild
> cards to be expanded.  It appears that _call_program is not providing
> any advantage here because the zstyle check that it makes will
> probably always be false here, but my understanding of zstyle is
> murky.  (If I am reading this right, then the zstyle check is seeing
> whether the user has configured completion so that this should be
> completed as a command instead of as files.  Or something close to
> that.)  In any case, using it clearly causes problems and fixing
> _call_function to prevent wildcard expansion could have any number of
> unanticipated side effects.
> 
> Here's the trace excerpt from ssh apex:/ [TAB]:
> 
> +_ssh:238> compset -P '*:'
> +_ssh:239> _remote_files
> +_remote_files:2> local expl remfiles remdispf remdispd args suf 'ret=1'
> +_remote_files:4> zstyle -T :completion::complete:scp:argument-rest:files remote-access
> +_remote_files:5> zparseopts -D -E -a args p: 1 2 4 6 F:
> +_remote_files:6> remfiles=+_remote_files:1> _call_program files ssh -a -x apex ls -d1F '/*'
> +_call_program:3> local tmp
> +_call_program:5> zstyle -s :completion::complete:scp:argument-rest:files command tmp
> +_call_program:12> eval 'ssh -a -x apex ls -d1F /*'
> +(eval):1> ssh -a -x apex ls -d1F /bin /boot /cdrom /cdrom0 /dark /dark2 /dev /etc /fc1 /floppy /home /initrd /initrd.img /initrd.img.old /lib /lost+found /mnt /opt /proc /projects /.rnd /root /sbin /smb /sys /systems /tmp /tmp-Xhack /u1 /u2 /usr /var /vmlinuz /vmlinuz.old
> +_remote_files:6> remfiles=( bin/ boot/ dev/ etc/ home@ initrd/ lib/ lost+found/ mnt/ opt/ proc/ projects@ root/ sbin/ smb/ systems/ tmp/ usr/ var/ ) 
> 
> This patch corrects this problem by simply removing the call to
> _call_program.
> 
> The other problem (symbolically linked directories) is easily resolved
> by adding the "L" flag to "ls" in addition to the -d1F flags.  This
> results in symbolic links to directories being treated like normal
> directories which is what you want when completing.
> 
> Here's the patch.
> 
> ------8<------
> --- _ssh.qdist	2004-03-13 16:32:00.000000000 -0500
> +++ _ssh	2004-03-20 12:16:50.000000000 -0500
> @@ -6,7 +6,7 @@
>  
>    if zstyle -T ":completion:${curcontext}:files" remote-access; then
>      zparseopts -D -E -a args p: 1 2 4 6 F:
> -    remfiles=(${(M)${(f)"$(_call_program files ssh $args -a -x ${IPREFIX%:} ls -d1F ${(Q)PREFIX%%[^./][^/]#}\* 2>/dev/null)"}%%[^/]#(|/)})
> +    remfiles=(${(M)${(f)"$(ssh $args -a -x ${IPREFIX%:} ls -d1FL ${(Q)PREFIX%%[^./][^/]#}\* 2>/dev/null)"}%%[^/]#(|/)})
>      compset -P '*/'
>      compset -S '/*' || suf='remote file'
>  
> ------8<------
> 
> In CVS, this bug was introduced between revision 1.20 and 1.21 of the
> _ssh file.  There is no explanation as to why this change was made.
> Hopefully this fix can make it into zsh before 4.2.0 and into Debian
> one way or another.
> 
> 
> -- System Information:
> Debian Release: testing/unstable
>   APT prefers unstable
>   APT policy: (500, 'unstable')
> Architecture: i386 (i686)
> Kernel: Linux 2.4.25-q
> Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8
> 
> Versions of packages zsh depends on:
> ii  debconf                     1.4.16       Debian configuration management sy
> ii  libc6                       2.3.2.ds1-11 GNU C Library: Shared libraries an
> ii  libcap1                     1:1.10-13    support for getting/setting POSIX.
> ii  libncurses5                 5.4-2        Shared libraries for terminal hand
> ii  passwd                      1:4.0.3-21   Change and administer password and
> 
> -- debconf information:
>   zsh/rcmove: 

> --- _ssh.qdist	2004-03-13 16:32:00.000000000 -0500
> +++ _ssh	2004-03-20 12:16:50.000000000 -0500
> @@ -6,7 +6,7 @@
>  
>    if zstyle -T ":completion:${curcontext}:files" remote-access; then
>      zparseopts -D -E -a args p: 1 2 4 6 F:
> -    remfiles=(${(M)${(f)"$(_call_program files ssh $args -a -x ${IPREFIX%:} ls -d1F ${(Q)PREFIX%%[^./][^/]#}\* 2>/dev/null)"}%%[^/]#(|/)})
> +    remfiles=(${(M)${(f)"$(ssh $args -a -x ${IPREFIX%:} ls -d1FL ${(Q)PREFIX%%[^./][^/]#}\* 2>/dev/null)"}%%[^/]#(|/)})
>      compset -P '*/'
>      compset -S '/*' || suf='remote file'
>  


^ permalink raw reply	[relevance 0%]

* zsh-4.1.1 and trap '...' DEBUG: a bug or a feature?
@ 2004-03-23 17:54  2% Nelson H. F. Beebe
  2004-03-23 18:20  3% ` Wayne Davison
  0 siblings, 1 reply; 200+ results
From: Nelson H. F. Beebe @ 2004-03-23 17:54 UTC (permalink / raw)
  To: zsh-workers; +Cc: beebe

We are finishing up a book on shell programming, and in the course of
documenting the handling of DEBUG traps, I found unexpected behavior
in zsh-4.1.1, which I have installed on about 20 flavors of Unix at my
site.

Consider the following test file:

	% cat debug-trap
	trap 'echo This is an EXIT trap' EXIT
	trap 'echo This is a DEBUG trap' DEBUG
	pwd
	pwd
	pwd
	pwd

Now watch this behavior (recorded on an IA-64 system, unless otherwise
noted).

First, bash:

	% /local/build/icc/bash-2.05b.p7/bash --version
	GNU bash, version 2.05b.0(1)-release (ia64-unknown-linux-gnu)

	# That is the latest bash version 2.05b with all 7 released patches installed

	% /local/build/icc/bash-2.05b.p7/bash debug-trap
	This is a DEBUG trap
	/tmp
	This is a DEBUG trap
	/tmp
	This is a DEBUG trap
	/tmp
	This is a DEBUG trap
	/tmp
	This is a DEBUG trap
	This is an EXIT trap

Tests showed that the bash behavior depends critically on the patch
level; I'm in the process of upgrading my systems to have 2.05b with
all 7 patches.

Next zsh-4.1.1 (the latest):

	% zsh debug-trap
	This is a DEBUG trap
	/tmp
	This is a DEBUG trap
	/tmp
	This is a DEBUG trap
	/tmp
	This is a DEBUG trap
	/tmp
	This is a DEBUG trap
	This is an EXIT trap
	This is a DEBUG trap

Notice that zsh takes one final DEBUG trap that bash does not.  That
seems undesirable, because the EXIT trap code is documented in sh and
ksh to be the last code executed, and is invoked in response to either
normal termination, or an explicit exit statement.

Is this a bug, or a feature?

>From the zsh manual in the info system, I found this paragraph:

     If SIG is ZERR then ARG will be executed after each command with a
     nonzero exit status.  If SIG is DEBUG then ARG will be executed
     after each command.  If SIG is 0 or EXIT and the trap statement is
     executed inside the body of a function, then the command ARG is
     executed after the function completes.  If SIG is 0 or EXIT and
     the trap statement is not executed inside the body of a function,
     then the command ARG is executed when the shell terminates.

The last sentence implies that it is a feature, but perhaps it should
be reconsidered, and made to do what bash and ksh93 do, or else an
explanation should be offered in the manual of why a different choice
was made. Remember, unnecessary implementation differences create
portability headaches, and make life hard for documenters and authors
who have to explain, or even defend, the differences to their readers.

I checked that the extra invocation of the DEBUG trap does not spoil
the intended exit code:

	% cat exit.sh
	#! /bin/sh
	trap "ls -l $0; echo 'Check the exit status: it should be 49.'" EXIT
	trap "echo This is a DEBUG trap" DEBUG

	echo Leaving $0 with exit code 49
	exit 49

	% zsh ./exit.sh
	This is a DEBUG trap
	Leaving ./exit.sh with exit code 49
	This is a DEBUG trap
	-rwxrwxr-x  1 beebe staff 162 Mar 23 10:44 ./exit.sh
	This is a DEBUG trap
	Check the exit status: it should be 49.
	This is a DEBUG trap

	% echo $?
	49

POSIX (IEEE Std 1003.1-2001) does not include the DEBUG trap, so there
is no independent guidance there.

-------------------------------------------------------------------------------
- Nelson H. F. Beebe                    Tel: +1 801 581 5254                  -
- University of Utah                    FAX: +1 801 581 4148                  -
- Department of Mathematics, 110 LCB    Internet e-mail: beebe@math.utah.edu  -
- 155 S 1400 E RM 233                       beebe@acm.org  beebe@computer.org -
- Salt Lake City, UT 84112-0090, USA    URL: http://www.math.utah.edu/~beebe  -
-------------------------------------------------------------------------------


^ permalink raw reply	[relevance 2%]

* Re: zsh-4.1.1 and trap '...' DEBUG: a bug or a feature?
  2004-03-23 17:54  2% zsh-4.1.1 and trap '...' DEBUG: a bug or a feature? Nelson H. F. Beebe
@ 2004-03-23 18:20  3% ` Wayne Davison
  0 siblings, 0 replies; 200+ results
From: Wayne Davison @ 2004-03-23 18:20 UTC (permalink / raw)
  To: Nelson H. F. Beebe; +Cc: zsh-workers

On Tue, Mar 23, 2004 at 10:54:22AM -0700, Nelson H. F. Beebe wrote:
> Notice that zsh takes one final DEBUG trap that bash does not.

This is because your EXIT trap had one command in it.  If it had two
commands, you would have seen two final DEBUG trap executions.  One
way to avoid this is to turn off DEBUG in the exit trap:

trap 'trap - DEBUG; echo This is an EXIT trap' EXIT
trap 'echo This is a DEBUG trap' DEBUG
pwd
pwd
pwd
pwd

That would duplicate the bash behavior you saw.  However, I don't know
if this is proper POSIX behavior or not.

..wayne..


^ permalink raw reply	[relevance 3%]

* Re: (Fwd) printf for converting numbers to letters, bug?
  @ 2004-03-26 17:00  3% ` Clint Adams
  2004-03-27 23:53  3%   ` Bart Schaefer
  0 siblings, 1 reply; 200+ results
From: Clint Adams @ 2004-03-26 17:00 UTC (permalink / raw)
  To: Bart Schaefer; +Cc: zsh-workers

> Looks like "%c" is interpreting the argument as a string and printing
> the first character thereof.  It should work more like %d, shouldn't it?

Not according to POSIX; the argument to %b, %c, or %s is to be
interpreted as a string.

If we had octal brace expansion, he could do something like
printf "%b\n" \\0{101..145}


^ permalink raw reply	[relevance 3%]

* Re: printf for converting numbers to letters, bug?
  2004-03-26 17:00  3% ` Clint Adams
@ 2004-03-27 23:53  3%   ` Bart Schaefer
  0 siblings, 0 replies; 200+ results
From: Bart Schaefer @ 2004-03-27 23:53 UTC (permalink / raw)
  To: zsh-workers

On Mar 26, 12:00pm, Clint Adams wrote:
} Subject: Re: (Fwd) printf for converting numbers to letters, bug?
}
} > Looks like "%c" is interpreting the argument as a string and printing
} > the first character thereof.  It should work more like %d, shouldn't it?
} 
} Not according to POSIX; the argument to %b, %c, or %s is to be
} interpreted as a string.

Just to clarify my earlier comment:

Zsh is (as of 4.2.0) behaving such that, given x='101',

	printf "%c" $x
and
	print -r $x[1]

produce the same output.  That behavior is nearly useless.  (It is how
/usr/bin/printf on Linux works, though, so I guess it can be interpreted
as a compatibility issue.)
 
} If we had octal brace expansion, he could do something like
} printf "%b\n" \\0{101..145}

If %b interprets the string \0101 as an octal number and prints the
corresponding character, why shouldn't %c interpret the string 101 as a
decimal number and print the corresponding character?

I've just been looking at

  http://www.opengroup.org/onlinepubs/007904975/utilities/printf.html

I notice that although it mentions %b, there's NO definition of %b on any
of the pages it cross-references:

  http://www.opengroup.org/onlinepubs/007904975/basedefs/xbd_chap05.html
  http://www.opengroup.org/onlinepubs/007904975/functions/printf.html

Where is %b defined?


^ permalink raw reply	[relevance 3%]

* (Fwd) [shell] posix conformance for special built-ins
@ 2004-03-30  0:04  9% Bart Schaefer
  0 siblings, 0 replies; 200+ results
From: Bart Schaefer @ 2004-03-30  0:04 UTC (permalink / raw)
  To: zsh-workers


--- Forwarded mail from David Korn <dgk@research.att.com>

Date: Mon, 29 Mar 2004 10:00:27 -0500 (EST)
From: David Korn <dgk@research.att.com>
To: shell@research.att.com
Subject: [shell] posix conformance for special built-ins 

Subject: posix conformance for special built-ins 
--------

Here is an excerpt from mail from a user that shows different results
for different shells.
> 
> In two places, I have a construct like this:
> 
> 	. foo || source foo || true
> 
> To my surprise, in testing I found that ksh bails out with an error if
> foo does not exist, rather than simply succeeding because of the true
> at the end of the conditional.  Here is what I found for various shells:
> 
> 	$ ksh88
> 	$ . foo || source foo || true
>         /bin/ksh: foo:  not found
>         $ echo $?
>         1
> 
> 	$ ksh93
>         $ . foo || source foo || true
>         /bin/ksh: foo:  not found
>         $ echo $?
>         1
> 
>         $ bash
>         $ . foo || source foo || true
>         bash: foo: No such file or directory
>         bash: foo: No such file or directory
>         $ echo  $?
>         0
> 
>         $ zsh
>         % . foo || source foo || true
>         .: no such file or directory: foo
>         source: no such file or directory: foo
>         % echo  $?
>         0
> 
>         % /bin/sh
>         $ . foo || source foo || true
>         foo: not found
>         $ echo $?
>         1
> 
>         % pdksh
>         $ . foo || source foo || true
>         pdksh: .: foo: not found
>         $ echo $?
>         1
> 
>         $ csh
>         . foo || source foo || true
>         /usr/local/bin/.: Permission denied.
>         foo: No such file or directory
>         echo $status
>         1
> 
>         $ tcsh
>         % . foo || source foo || true
>         /usr/local/bin/.: Permission denied.
>         foo: No such file or directory.
>         % echo $status
>         1
> 
> So, is the behavior of ksh88 and ksh93 in ". foo || source foo || true"
> a bug or a feature?
> 
> -----------------------------------------------------------------------------
> - Nelson H. F. Beebe                    Tel: +1 801 581 5254
> - University of Utah                    FAX: +1 801 581 4148
> - Department of Mathematics, 110 LCB    Internet e-mail: beebe@math.utah.edu
> - 155 S 1400 E RM 233                       beebe@acm.org  beebe@computer.org
> - Salt Lake City, UT 84112-0090, USA    URL: http://www.math.utah.edu/~beebe
> -----------------------------------------------------------------------------
> 

This behavior is required by the POSIX and X/Open standards.  In section
section 2.8.1 of the 1003.1-2001 standard  it states,
"For a non-interactive shell, an error condition encountered by a
special built-in shall cause the shell to write a diagnostic message
to standard error and exit as shown in the following table:"
In the following table, it lists Dot script not found, "Shall Exit".

While I don't like this behavior, it was inherited from the Bourne shell.
The standard added 'command' to get around this behavior, so that
	command . foo || source foo || true
would give you the behavior that you want.

So unless we can get the standard changed we are stuck with this behavior.
Thus, bash and zsh are non-conforming.  It would be nice to say that
the shell only bails out in cases for which set -e would have caused
it to exit, but this would require a change to the standard.

David Korn
dgk@research.att.com
_______________________________________________
shell mailing list
shell@research.att.com
https://mailman.research.att.com/mailman/listinfo/shell


---End of forwarded mail from David Korn <dgk@research.att.com>

--- Forwarded mail from chet@po.cwru.edu

Date: Mon, 29 Mar 2004 11:37:35 -0500
From: Chet Ramey <chet@caleb.ins.cwru.edu>
To: dgk@research.att.com
Subject: Re: [shell] posix conformance for special built-ins
Cc: shell@research.att.com
Reply-To: chet@po.cwru.edu

> This behavior is required by the POSIX and X/Open standards.  In section
> section 2.8.1 of the 1003.1-2001 standard  it states,
> "For a non-interactive shell, an error condition encountered by a
> special built-in shall cause the shell to write a diagnostic message
> to standard error and exit as shown in the following table:"
> In the following table, it lists Dot script not found, "Shall Exit".
> 
> While I don't like this behavior, it was inherited from the Bourne shell.
> The standard added 'command' to get around this behavior, so that
> 	command . foo || source foo || true
> would give you the behavior that you want.
> 
> So unless we can get the standard changed we are stuck with this behavior.
> Thus, bash and zsh are non-conforming.  It would be nice to say that
> the shell only bails out in cases for which set -e would have caused
> it to exit, but this would require a change to the standard.

This is one of the things bash enables in `posix mode'.

Chet

-- 
``The lyf so short, the craft so long to lerne.'' - Chaucer
( ``Discere est Dolere'' -- chet )
						Live...Laugh...Love
Chet Ramey, ITS, CWRU    chet@po.cwru.edu    http://tiswww.tis.cwru.edu/~chet/
_______________________________________________
shell mailing list
shell@research.att.com
https://mailman.research.att.com/mailman/listinfo/shell


---End of forwarded mail from chet@po.cwru.edu


^ permalink raw reply	[relevance 9%]

* RE: zsh and line breaks
  @ 2004-04-02  9:49  3% ` Dave Korn
  2004-04-02 16:59  3%   ` Peter A. Castro
  0 siblings, 1 reply; 200+ results
From: Dave Korn @ 2004-04-02  9:49 UTC (permalink / raw)
  To: zsh-workers, cygwin

> -----Original Message-----
> From: cygwin-owner On Behalf Of Peter A. Castro
> Sent: 01 April 2004 22:21

>   In system.h I've added a #define in the #ifdef 
> __CYGWIN__ section of:
> #define ORO_TEXT | O_TEXT
> And for the #else case:
> #define ORO_TEXT
> 
> Then in code which needs it I have modified it to look like this:
> 
> if ((fd = open(name, O_RDONLY ORO_TEXT)) < 0) {
> 
> It's really just utilizing the macro ability of the compiler, 
> and it's a
> style judgement call.  I don't have a problem with it, obviously, but
> others might look at it and wonder how it could possible 
> compile if they
> didn't look in system.h first.  If you think that might present
> confusion, then I'll change it to be explicitly "| OR_TEXT" and have
> #define O_TEXT to be 0 if not defined at all.
> 
> Any thoughts on this?

  It's pretty reasonable but as you say could be confusing.  Here's another
approach that might seem nicer because it's kind of function-like:

#ifdef __CYGWIN__
#define MAYBE_ADD_O_TEXT_FLAG(x) (O_TEXT | (x))
#else
#define MAYBE_ADD_O_TEXT_FLAG(x) (x)
#endif

Then say

if ((fd = open(name, MAYBE_ADD_O_TEXT_FLAG(O_RDONLY))) < 0) {

You might well want to choose a better name for the function-like macro than
that, but I think the pattern is slightly clearer.

> The primary problem is with running scripts with CR/LFs.  
> That gets fixed
> with adding O_TEXT everywhere.  A secondary problem is with redirected
> input and/or output which is processed by the shell.
> 
> I've been reviewing this problem and I think maybe I've been 
> attacking it
> incorrectly.  I had though that adding O_TEXT everywhere 
> would solve this
> problem.  However, the environment is complicating things :)
> 
> Here's the deal:

>  So where the file located in the filesystem 
> determines
> the default handling of translation when opened as a text file.
> This is for normal unix style coding of opens without any O_TEXT or
> O_BINARY cruft.
> 
> Now, adding an explicit O_TEXT or O_BINARY forces one mode or 
> the other,
> ignoring the filesystem mount attributes.  The problem is, I 
> don't want
> to force the mode, 
> 
> Thanks for listening.  Any suggestions are welcome.

  Doesn't the POSIX standard specify something about shells should open
stdin, stdout and stderr in textmode?  IOW, aren't you obliged to force the
mode?



    cheers, 
      DaveK
-- 
Can't think of a witty .sigline today....


^ permalink raw reply	[relevance 3%]

* RE: zsh and line breaks
  2004-04-02  9:49  3% ` Dave Korn
@ 2004-04-02 16:59  3%   ` Peter A. Castro
  0 siblings, 0 replies; 200+ results
From: Peter A. Castro @ 2004-04-02 16:59 UTC (permalink / raw)
  To: Dave Korn; +Cc: zsh-workers, cygwin

On Fri, 2 Apr 2004, Dave Korn wrote:

Hi Dave,

> > -----Original Message-----
> > From: cygwin-owner On Behalf Of Peter A. Castro
> > Sent: 01 April 2004 22:21
>
> >   In system.h I've added a #define in the #ifdef
> > __CYGWIN__ section of:
> > #define ORO_TEXT | O_TEXT
> > And for the #else case:
> > #define ORO_TEXT
> >
> > Then in code which needs it I have modified it to look like this:
> >
> > if ((fd = open(name, O_RDONLY ORO_TEXT)) < 0) {
> >
> > It's really just utilizing the macro ability of the compiler,
> > and it's a
> > style judgement call.  I don't have a problem with it, obviously, but
> > others might look at it and wonder how it could possible
> > compile if they
> > didn't look in system.h first.  If you think that might present
> > confusion, then I'll change it to be explicitly "| OR_TEXT" and have
> > #define O_TEXT to be 0 if not defined at all.
> >
> > Any thoughts on this?
>
>   It's pretty reasonable but as you say could be confusing.  Here's another
> approach that might seem nicer because it's kind of function-like:
>
> #ifdef __CYGWIN__
> #define MAYBE_ADD_O_TEXT_FLAG(x) (O_TEXT | (x))
> #else
> #define MAYBE_ADD_O_TEXT_FLAG(x) (x)
> #endif
>
> Then say
>
> if ((fd = open(name, MAYBE_ADD_O_TEXT_FLAG(O_RDONLY))) < 0) {
>
> You might well want to choose a better name for the function-like macro than
> that, but I think the pattern is slightly clearer.

It's always interesting to see how people solve the same problem using a
different style.  Yes, I'd though of using a wrapper macro, but decided I
didn't want to change mainline code that much.  I'm really looking for
something that's pretty non-intrusive.  Corinna just emailed a possible
solution, which may be the best yet because it works at a lower level and
wouldn't require all of those 43 open calls to be changed!

> > The primary problem is with running scripts with CR/LFs.
> > That gets fixed
> > with adding O_TEXT everywhere.  A secondary problem is with redirected
> > input and/or output which is processed by the shell.
> >
> > I've been reviewing this problem and I think maybe I've been
> > attacking it
> > incorrectly.  I had though that adding O_TEXT everywhere
> > would solve this
> > problem.  However, the environment is complicating things :)
> >
> > Here's the deal:
>
> >  So where the file located in the filesystem
> > determines
> > the default handling of translation when opened as a text file.
> > This is for normal unix style coding of opens without any O_TEXT or
> > O_BINARY cruft.
> >
> > Now, adding an explicit O_TEXT or O_BINARY forces one mode or
> > the other,
> > ignoring the filesystem mount attributes.  The problem is, I
> > don't want
> > to force the mode,
> >
> > Thanks for listening.  Any suggestions are welcome.
>
>   Doesn't the POSIX standard specify something about shells should open
> stdin, stdout and stderr in textmode?  IOW, aren't you obliged to force the
> mode?

The posix standard specifies a textmode should be used, but says nothing
about what really constitues a "textmode".  Textmode means adding line
termination according to the platform definitions.  However, in the case
of Cygwin, I believe we are supposed to honor the mode of the filesystem
as much as possible, which means sometimes line termination has CRs and
sometimes it doesn't.  One thing is for sure: reading script files
directly must remove CRs.  Everthing else is up for discussion :)
I'm going to experiment with Corinna's idea and see what happens first.
If that doesn't work, I'll have to continue my analysis of what the code
does with those opened files.

>     cheers,
>       DaveK

-- 
Peter A. Castro <doctor@fruitbat.org> or <Peter.Castro@oracle.com>
	"Cats are just autistic Dogs" -- Dr. Tony Attwood


^ permalink raw reply	[relevance 3%]

* [ejb@ql.org: Bug#243385: zsh: rsync completion expands * too soon]
@ 2004-04-13  1:21  2% Clint Adams
  0 siblings, 0 replies; 200+ results
From: Clint Adams @ 2004-04-13  1:21 UTC (permalink / raw)
  To: zsh-workers; +Cc: 243385-forwarded, ejb

I assume that this is a quoting issue again.

----- Forwarded message from Jay Berkenbilt <ejb@ql.org> -----

Date: Mon, 12 Apr 2004 15:59:30 -0400
From: Jay Berkenbilt <ejb@ql.org>
To: Debian Bug Tracking System <submit@bugs.debian.org>
Subject: Bug#243385: zsh: rsync completion expands * too soon

Package: zsh
Version: 4.1.1-14
Severity: normal
Tags: patch

(Unless zsh-workers has been reconfigured since my last bug report,
the X-Debbugs-CC to zsh-workers will fail and this bug will not have
been reported upstream.)

This is essentially identical to what I reported in Debian bug 239070
for scp: the same bug existed with rsync's completion function.  The
attached patch removes "_call_program files" from the ssh line used to
generate remote files and also adds the -L flag to ls, just like my
earlier patch to _ssh.  I have dispensed with a lengthy explanation
because it is essentially identical to the one I included in bug
239070, the fix to which appears to have been accepted upstream.

This patch is to /usr/share/zsh/4.1.1/functions/Completion/Unix/_rsync.

-------8<--------
--- _rsync~	2004-03-25 13:29:33.000000000 -0500
+++ _rsync	2004-04-09 18:14:08.000000000 -0400
@@ -37,7 +37,7 @@
 
   if zstyle -T ":completion:${curcontext}:" remote-access; then
     slash=/
-    remfiles=(${(f)"$(_call_program files ssh -a -x ${words[CURRENT]%:*} ls -d1F ${${${words[CURRENT
+    remfiles=(${(f)"$(ssh -a -x ${words[CURRENT]%:*} ls -d1FL ${${${words[CURRENT
 ]#*:}:h}/${slash}(#e)/}/\* 2>/dev/null)"})
 
     remdispf=(${remfiles:#*/})
-------8<--------

This patch causes rsync completion to work properly for remote files
when you have ssh access to the remote system.  It still doesn't
behave quite as well as scp completion (rsync host:/path/ TAB doesn't
show alternatives unless you type at least one character after the /),
but at least it behaves as well as it did before the _call_program
function call was added.

A grep for '_call_program files ssh' suggests that this may be the
only place left that has this particular bug.  Too bad I didn't think
to do that last time. :-)

Please let me know if additional information is required or if I
should have repeated the information to substantiate this patch.

-- System Information:
Debian Release: testing/unstable
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: i386 (i686)
Kernel: Linux 2.4.25-1-686-smp
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8

Versions of packages zsh depends on:
ii  debconf                     1.4.16       Debian configuration management sy
ii  libc6                       2.3.2.ds1-11 GNU C Library: Shared libraries an
ii  libcap1                     1:1.10-13    support for getting/setting POSIX.
ii  libncurses5                 5.4-2        Shared libraries for terminal hand
ii  passwd                      1:4.0.3-21   Change and administer password and

-- debconf information:
  zsh/rcmove: 

--- _rsync~	2004-03-25 13:29:33.000000000 -0500
+++ _rsync	2004-04-09 18:14:08.000000000 -0400
@@ -37,7 +37,7 @@
 
   if zstyle -T ":completion:${curcontext}:" remote-access; then
     slash=/
-    remfiles=(${(f)"$(_call_program files ssh -a -x ${words[CURRENT]%:*} ls -d1F ${${${words[CURRENT
+    remfiles=(${(f)"$(ssh -a -x ${words[CURRENT]%:*} ls -d1FL ${${${words[CURRENT
 ]#*:}:h}/${slash}(#e)/}/\* 2>/dev/null)"})
 
     remdispf=(${remfiles:#*/})


----- End forwarded message -----


^ permalink raw reply	[relevance 2%]

* Re: FreeBSD compatability feature request
       [not found]     ` <21533.1082374109@csr.com>
@ 2004-04-21  8:21  0%   ` Vincent Stemen
  2004-04-21 11:05  2%     ` PATCH: (2) " Peter Stephenson
  0 siblings, 1 reply; 200+ results
From: Vincent Stemen @ 2004-04-21  8:21 UTC (permalink / raw)
  To: zsh-workers

On Mon, Apr 19, 2004 at 12:28:29PM +0100, Peter Stephenson wrote:
> Vincent Stemen wrote:
> > Here is the FreeBSD manual entry:
> > 
> >   -T trapsasync
> >         When waiting for a child, execute traps immediately.  If this
> >         option is not set, traps are executed after the child exits,
> >         as specified in IEEE Std 1003.2 (``POSIX.2'') This nonstandard
> >         option is useful for putting guarding shells around children
> >         that block signals.  The surrounding shell may kill the child
> >         or it may just return control to the tty and leave the child
> >         alone, like this:
> > 
> >            sh -T -c "trap 'exit 1' 2 ; some-blocking-program"
> 
> Good(ish) news...
> 
> Just tried this out, and it looks like the `trapsasync' behaviour
> is the standard (and only) one in zsh.  Hence it doesn't conform to
> POSIX (which isn't likely to be an earth-shattering revelation to zsh
> regulars).
> 
> This means that almost everything we need for both behaviours is already
> there.  It remains to add the option TRAPS_ASYNC, turned on by default
> in non-Bourne mode for compatibility, and make sure we can still handle
> SIGCHLD when the option is unset.
> 
> Someone already had the foresight to handle sh options separately, so -T
> does the right thing in sh or ksh emulation and the example you gave
> should now work as expected.
> 
> Further follow-ups should probably go to zsh-workers.
> 

Ok, I applied the patch to zsh-4.2.0 and tested under
FreeBSD-5.2.1-RELEASE.  It seems to work just fine.  I did not test the
actual signal handling but FreeBSD was able to boot without getting errors
from the init scripts that use "set -T". I was also pleased to find that
the other problem is fixed in 4.2.0 where eval was returning the result of
the last run command if eval was given a null argument.  Previously, that
had caused eval to return false in one of the scripts causing the rootfs
to stay mounted read only, which of course caused many other errors.

After replacing /bin/sh with zsh, it was able to fully boot up and
initialize the system except for one other problem, which appears to be a
different bug in sh emulation mode.  It hangs when running the nfsd init
script.  If I <cntl>c out of it, the rest of the system comes up, but
without NFS.

I finally isolated the problem.  Below is a small script, called t, that
reproduces it.

# cat t

_find_processes()
{
    ps | while read pid command
    do
        echo "pid=$pid  $command"
    done >&2

    echo "xxx Exited loop xxxxxxxxxxxxxxxxxxxxxxx" >&2
}

xxx=$(_find_processes)

#--- end of script -------

If I run it by calling zsh as sh, it hangs on the read command after the
last line of output from ps and I have to break out of it.

root@quark # ./sh t
pid=PID  TT  STAT      TIME COMMAND
pid=24781  p0  I      0:00.02 su
pid=24782  p0  I      0:00.23 su (zsh)
..
..
pid=578  v6  IWs+   0:00.00 /usr/libexec/getty Pc ttyv6
pid=579  v7  IWs+   0:00.00 /usr/libexec/getty Pc ttyv7
^C
root@quark # 

If I run it as zsh, it works properly.

root@quark # ./zsh t
pid=PID  TT  STAT      TIME COMMAND
pid=24781  p0  I      0:00.02 su
pid=24782  p0  I      0:00.23 su (zsh)
..
..
pid=578  v6  IWs+   0:00.00 /usr/libexec/getty Pc ttyv6
pid=579  v7  IWs+   0:00.00 /usr/libexec/getty Pc ttyv7
xxx Exited loop xxxxxxxxxxxxxxxxxxxxxxx
root@quark #

It only hangs when the function is called from inside of $() or back
ticks.  Calling it outside of that worked correctly.

Regards,
Vincent

-- 
Vincent Stemen
Avoid the VeriSign/Network Solutions domain registration trap!
http://www.InetAddresses.net


^ permalink raw reply	[relevance 0%]

* PATCH: (2) Re: FreeBSD compatability feature request
  2004-04-21  8:21  0%   ` FreeBSD compatability feature request Vincent Stemen
@ 2004-04-21 11:05  2%     ` Peter Stephenson
  2004-04-22  8:59  0%       ` Vincent Stemen
  0 siblings, 1 reply; 200+ results
From: Peter Stephenson @ 2004-04-21 11:05 UTC (permalink / raw)
  To: Vincent Stemen, Zsh hackers list

OK, plan B.

I am now frightened about what happens when any signals are blocked
while we are waiting for a child.  So instead of doing that, I propose
queuing traps separately from signals.  This can't cause any races,
since no extra signal or process handling is involved.  The code is a
bit more verbose, but should be much safer.  This patches on top of the
other one.

Again, this should be exactly equivalent to 4.2.0 unless TRAPS_ASYNC is
unset (POSIX compatibility mode).

This ought to fix the hang.

Index: Src/jobs.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/jobs.c,v
retrieving revision 1.26
diff -u -r1.26 jobs.c
--- Src/jobs.c	19 Apr 2004 16:02:22 -0000	1.26
+++ Src/jobs.c	21 Apr 2004 10:40:30 -0000
@@ -994,11 +994,8 @@
     int q = queue_signal_level();
     Job jn = jobtab + job;
 
-    queue_not_sigchld++;
-    if (isset(TRAPSASYNC))
-	dont_queue_signals();
-    else
-	queue_signals();
+    dont_queue_signals();
+    queue_traps();
     child_block();		 /* unblocked during child_suspend() */
     if (jn->procs || jn->auxprocs) { /* if any forks were done         */
 	jn->stat |= STAT_LOCKED;
@@ -1029,10 +1026,8 @@
 	numpipestats = 1;
     }
     child_unblock();
+    dont_queue_traps();
     restore_queue_signals(q);
-    if (!queueing_enabled)
-	run_queued_signals();
-    queue_not_sigchld--;
 }
 
 /* wait for running job to finish */
Index: Src/signals.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/signals.c,v
retrieving revision 1.26
diff -u -r1.26 signals.c
--- Src/signals.c	19 Apr 2004 16:02:22 -0000	1.26
+++ Src/signals.c	21 Apr 2004 10:40:30 -0000
@@ -49,12 +49,19 @@
 /* Variables used by signal queueing */
 
 /**/
-mod_export int queueing_enabled, queue_front, queue_rear, queue_not_sigchld;
+mod_export int queueing_enabled, queue_front, queue_rear;
 /**/
 mod_export int signal_queue[MAX_QUEUE_SIZE];
 /**/
 mod_export sigset_t signal_mask_queue[MAX_QUEUE_SIZE];
 
+/* Variables used by trap queueing */
+
+/**/
+mod_export int trap_queueing_enabled, trap_queue_front, trap_queue_rear;
+/**/
+mod_export int trap_queue[MAX_QUEUE_SIZE];
+
 /* This is only used on machines that don't understand signal sets.  *
  * On SYSV machines this will represent the signals that are blocked *
  * (held) using sighold.  On machines which can't block signals at   *
@@ -426,7 +433,7 @@
 #endif
 
     /* Are we queueing signals now?      */
-    if (queueing_enabled && (sig != SIGCHLD || !queue_not_sigchld)) {
+    if (queueing_enabled) {
         int temp_rear = ++queue_rear % MAX_QUEUE_SIZE;
 
 	DPUTS(temp_rear == queue_front, "BUG: signal queue full");
@@ -1058,5 +1065,17 @@
     if ((sigtrapped[sig] & ZSIG_IGNORED) || !sigfuncs[sig] || errflag)
 	return;
 
+    /* Adapted from signal queueing in zhandler */
+    if (trap_queueing_enabled && !isset(TRAPSASYNC)) {
+	int temp_rear = ++trap_queue_rear % MAX_QUEUE_SIZE;
+
+	DPUTS(temp_rear == trap_queue_front, "BUG: trap queue full");
+	if (temp_rear != trap_queue_front) {
+	    trap_queue_rear = temp_rear;
+	    trap_queue[trap_queue_rear] = sig;
+	}
+	return;
+    }
+
     dotrapargs(sig, sigtrapped+sig, sigfuncs[sig]);
 }
Index: Src/signals.h
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/signals.h,v
retrieving revision 1.4
diff -u -r1.4 signals.h
--- Src/signals.h	18 Jun 2001 07:24:23 -0000	1.4
+++ Src/signals.h	21 Apr 2004 10:40:30 -0000
@@ -101,6 +101,23 @@
 
 #define restore_queue_signals(q) (queueing_enabled = (q))
 
+/*
+ * Similar (but simpler) mechanism used for queueing traps.
+ * Only needed if NO_TRAPS_ASYNC is set.
+ */
+#define queue_traps()	(trap_queueing_enabled++)
+
+#define run_queued_traps() do { \
+    while (trap_queue_front != trap_queue_rear) { /* while traps in queue */ \
+	trap_queue_front = (trap_queue_front + 1) % MAX_QUEUE_SIZE; \
+	dotrap(trap_queue[trap_queue_front]);  /* handle queued trap   */ \
+    } \
+} while (0)
+
+#define dont_queue_traps() do { \
+    trap_queueing_enabled = 0; \
+    run_queued_traps(); \
+} while (0)
 
 /* Make some signal functions faster. */
 
-- 
Peter Stephenson <pws@csr.com>                  Software Engineer
CSR Ltd., Science Park, Milton Road,
Cambridge, CB4 0WH, UK                          Tel: +44 (0)1223 692070


**********************************************************************
This email and any files transmitted with it are confidential and
intended solely for the use of the individual or entity to whom they
are addressed. If you have received this email in error please notify
the system manager.

This footnote also confirms that this email message has been swept by
MIMEsweeper for the presence of computer viruses.

www.mimesweeper.com
**********************************************************************


^ permalink raw reply	[relevance 2%]

* Re: PATCH: (2) Re: FreeBSD compatability feature request
  2004-04-21 11:05  2%     ` PATCH: (2) " Peter Stephenson
@ 2004-04-22  8:59  0%       ` Vincent Stemen
  2004-04-22  9:59  4%         ` Peter Stephenson
  2004-04-30 21:26  2%         ` PATCH: (3) " Peter Stephenson
  0 siblings, 2 replies; 200+ results
From: Vincent Stemen @ 2004-04-22  8:59 UTC (permalink / raw)
  To: Zsh hackers list

On Wed, Apr 21, 2004 at 12:05:00PM +0100, Peter Stephenson wrote:
> OK, plan B.
> 
> I am now frightened about what happens when any signals are blocked
> while we are waiting for a child.  So instead of doing that, I propose
> queuing traps separately from signals.  This can't cause any races,
> since no extra signal or process handling is involved.  The code is a
> bit more verbose, but should be much safer.  This patches on top of the
> other one.
> 
> Again, this should be exactly equivalent to 4.2.0 unless TRAPS_ASYNC is
> unset (POSIX compatibility mode).
> 
> This ought to fix the hang.

Hi Peter.

I applied the patch.  It definitely fixed the hanging problem.  I can
now plug it in place of /bin/sh on FreeBSD and all the init scripts
seem to run properly without errors when booting the system.

However, I actually tested the signal handling this time and, unless I
am not understanding the trapsasync mode enough to test properly, I
don't think it is working.  If I understand it correctly, with "set -T"
shouldn't the parent process immediately get any signals it has trapped
even if a child process it is waiting on has disabled the signals?

With that in mind, I tested it with two scripts, sigtrap and sigblock.

quark # cat sigtrap

echo "sigtrap: trapping SIGINT and calling sigblock"
set -T
trap 'echo Got signal. Exiting.; exit' 2
./sigblock
echo "sigtrap: Exiting normally"


quark # cat sigblock

echo "sigblock: blocking SIGINT and sleeping"
trap '' 2
sleep 5


quark # ./sh sigtrap
sigtrap: trapping SIGINT and calling sigblock
sigblock: blocking SIGINT and sleeping
^C^Csigblock: exiting
Got signal. Exiting.
quark #


After hitting <cntl>c, it completed the 5 second delay before printing
"sigblock: exiting".  It behaved the same whether I had the "set -T" in
the script or not.  I was expecting sigtrap to immediately print "Got
signal. Exiting." when I hit <cntl>c with trapsasync set.

Be aware if you test this under Linux that Linux, at least as of the
2.4.x kernels about a year ago the last time I tested it, does not pass
signals on to the parent process like FreeBSD does.  So you may not see
the "Got signal" message from the parent sigtrap process.  In the past,
I always had to check for a 130 return code from every child process
(which was a pain) to know if the user hit <cntl>c so I can call my
signal handling routine.  I was not able to have dependable signal traps
in my scripts because you could not always depend on the child returning
130 when it got interrupted.

-- 
Vincent Stemen
Avoid the VeriSign/Network Solutions domain registration trap!
Read how Network Solutions (NSI) was involved in stealing our domain name.
http://www.InetAddresses.net


^ permalink raw reply	[relevance 0%]

* Re: PATCH: (2) Re: FreeBSD compatability feature request
  2004-04-22  8:59  0%       ` Vincent Stemen
@ 2004-04-22  9:59  4%         ` Peter Stephenson
  2004-04-22 10:17  4%           ` Peter Stephenson
  2004-04-30 21:26  2%         ` PATCH: (3) " Peter Stephenson
  1 sibling, 1 reply; 200+ results
From: Peter Stephenson @ 2004-04-22  9:59 UTC (permalink / raw)
  To: Vincent Stemen; +Cc: Zsh hackers list

Vincent Stemen wrote:
> However, I actually tested the signal handling this time and, unless I
> am not understanding the trapsasync mode enough to test properly, I
> don't think it is working.  If I understand it correctly, with "set -T"
> shouldn't the parent process immediately get any signals it has trapped
> even if a child process it is waiting on has disabled the signals?

I think you're right.  I didn't do anything with basic signal handling
(which I don't know much about), just rewrote the way traps are queued.
It looks like it will need someone to rewire the signal handling not to
block other signals in this case.  The function is signal_suspend() in
signals.c which calls sigfillset() then removes SIGCHLD from the blocked
set.

However, that now gives us three different modes: the original zsh one,
POSIX where all traps are deferred, and this mode where signals are
delivered straight through.  So one option isn't enough.  Presumably
TRAPS_ASYNC should be off for the standard zsh behaviour, on for the new
behaviour, and we need another option for POSIX which will be overridden
if TRAPS_ASYNC is set.  Yuk.

-- 
Peter Stephenson <pws@csr.com>                  Software Engineer
CSR Ltd., Science Park, Milton Road,
Cambridge, CB4 0WH, UK                          Tel: +44 (0)1223 692070


**********************************************************************
This email and any files transmitted with it are confidential and
intended solely for the use of the individual or entity to whom they
are addressed. If you have received this email in error please notify
the system manager.

This footnote also confirms that this email message has been swept by
MIMEsweeper for the presence of computer viruses.

www.mimesweeper.com
**********************************************************************


^ permalink raw reply	[relevance 4%]

* Re: PATCH: (2) Re: FreeBSD compatability feature request
  2004-04-22  9:59  4%         ` Peter Stephenson
@ 2004-04-22 10:17  4%           ` Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2004-04-22 10:17 UTC (permalink / raw)
  To: Vincent Stemen, Zsh hackers list

Peter Stephenson wrote:
> However, that now gives us three different modes: the original zsh one,
> POSIX where all traps are deferred, and this mode where signals are
> delivered straight through.  So one option isn't enough.  Presumably
> TRAPS_ASYNC should be off for the standard zsh behaviour, on for the new
> behaviour, and we need another option for POSIX which will be overridden
> if TRAPS_ASYNC is set.  Yuk.

Actually (sorry to generate all the traffic) it's possible I was getting
confused...

Zsh will usually block other signals while waiting for SIGCHLD.  This
may be all that POSIX requires.  What it doesn't do (and why I was able
to get asynchronous traps working) is ensure that traps don't run if it
stops waiting, for example because a different process exited.  I
originally tested this by running a background functions which exited,
generating a SIGCHLD, which caused all queued signals to be delivered.

Hence it's possible that the queueing traps thing is a red herring, that
zsh is sufficiently POSIX compliant by default, and all we need is the
ability to receive signals other than SIGCHLD while waiting for a child.
(It's a bit late to back out now.)

If anybody actually knows anything about all this, their views would be
especially welcome.

-- 
Peter Stephenson <pws@csr.com>                  Software Engineer
CSR Ltd., Science Park, Milton Road,
Cambridge, CB4 0WH, UK                          Tel: +44 (0)1223 692070


**********************************************************************
This email and any files transmitted with it are confidential and
intended solely for the use of the individual or entity to whom they
are addressed. If you have received this email in error please notify
the system manager.

This footnote also confirms that this email message has been swept by
MIMEsweeper for the presence of computer viruses.

www.mimesweeper.com
**********************************************************************


^ permalink raw reply	[relevance 4%]

* [stevenk@debian.org: Bug#246306: zsh: completion file for apt-move]
@ 2004-04-28 13:10  3% Clint Adams
  0 siblings, 0 replies; 200+ results
From: Clint Adams @ 2004-04-28 13:10 UTC (permalink / raw)
  To: zsh-workers; +Cc: stevenk, 246306

----- Forwarded message from Steve Kowalik <stevenk@debian.org> -----

Date: Wed, 28 Apr 2004 20:48:48 +1000
From: Steve Kowalik <stevenk@debian.org>
To: Debian Bug Tracking System <submit@bugs.debian.org>
Subject: Bug#246306: zsh: completion file for apt-move

Package: zsh
Version: 4.2.0-5
Severity: wishlist

Hi,

	I have written a completion function for apt-move.

-- System Information:
Debian Release: testing/unstable
  APT prefers unstable
  APT policy: (500, 'unstable'), (1, 'experimental')
Architecture: i386 (i686)
Kernel: Linux 2.6.5-1-k7-smp
Locale: LANG=C, LC_CTYPE=C

Versions of packages zsh depends on:
ii  debconf                     1.4.24       Debian configuration management sy
ii  libc6                       2.3.2.ds1-12 GNU C Library: Shared libraries an
ii  libcap1                     1:1.10-14    support for getting/setting POSIX.
ii  libncurses5                 5.4-3        Shared libraries for terminal hand
ii  passwd                      1:4.0.3-26   Change and administer password and

-- debconf information:
  zsh/rcmove: 

-- 
					Steve
"Why does everyone say 'Relax' when they're about to do something terrible?"
         - Ensign Harry Kim, USS Voyager


#compdef apt-move

local state line

_arguments \
  '-c[Specify an alternative configuration file]' \
  '-d[Override the DIST setting]' \
  '-f[Override the MAXDELETE setting]' \
  '-q[Be quiet; suppress normal output]' \
  '-t[Show what apt-move would do, but do not actually do anything]' \
  '1: :->cmds' \
  '*: :->args' && return 0

case $state in
  cmds)
    cmds=('get:update your master files from local apt' \
          'getlocal:alias of get' \
          'fsck:fix broken repositories' \
          'move:move cache files into mirror tree' \
          'movefile:move files into the repository' \
          'delete:delete obsolete packages' \
          'packages:create new local Packages files' \
          'update:alias for: get move delete packages' \
          'local:alias for: move delete packages' \
          'localupdate:alias for: getlocal move delete packages' \
          'mirror:update your local mirror from remote rsync site' \
          'sync:same as mirror, but only gets packages that you currently have installed on your system' \
          'exclude:prints a list of all packages EXCLUDED from the mirror by the .exclude file' \
          'listbin:prints lists of packages which can serve as the input to mirrorbin(mirror,sync,repo)' \
          'listsrc:same as listbin, but lists source packages' \
          'mirrorbin:same as mirror, but gets the packages specified on stdin' \
          'mirrorsrc:same as mirrorbin, but gets source packages')
      _describe -t commands 'apt-move command' cmds && return 0
  ;;
  args)
    case $line[1] in
	  get|getlocal)
	    # A directory or nothing
		_files -/
	  ;;
	  movefile)
	    # A .dsc or a .deb
		_files -g "*.d{sc,eb}"
	  ;;
	esac
  ;;
esac

return 1


----- End forwarded message -----


^ permalink raw reply	[relevance 3%]

* PATCH: (3) Re: FreeBSD compatability feature request
  2004-04-22  8:59  0%       ` Vincent Stemen
  2004-04-22  9:59  4%         ` Peter Stephenson
@ 2004-04-30 21:26  2%         ` Peter Stephenson
  2004-05-01  1:45  0%           ` Vincent Stemen
  2004-05-04  7:17  0%           ` PATCH: (3) - FreeBSD compatability issue resolved Vincent Stemen
  1 sibling, 2 replies; 200+ results
From: Peter Stephenson @ 2004-04-30 21:26 UTC (permalink / raw)
  To: Vincent Stemen, Zsh hackers list

Patch to apply on top of previous goes to attempt to handle TRAPS_ASYNC
the way I think is intended.  It's basically an `if' with a
sigemptyset() inside it, hope no one was expecting anything sophisticated.

It doesn't fix the behaviour I noted, that without the option any child
exiting, not just the one the shell is currently expecting, causes traps
to be run.  Probably that's not a big issue; I should really check the
wording of POSIX.

So I think that's it... Vincent?

Index: Doc/Zsh/options.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Zsh/options.yo,v
retrieving revision 1.31
diff -u -r1.31 options.yo
--- Doc/Zsh/options.yo	19 Apr 2004 16:02:22 -0000	1.31
+++ Doc/Zsh/options.yo	30 Apr 2004 21:15:10 -0000
@@ -1191,11 +1191,11 @@
 )
 pindex(TRAPS_ASYNC)
 cindex(traps, asynchronous)
-item(tt(TRAPS_ASYNC) <C> <Z>)(
-While waiting for a program to exit, run traps immediately.  Otherwise
-the trap is run after the program has exited.  Note this does not affect
-the point at which traps are run for any case other than when the shell is
-waiting for a child process.
+item(tt(TRAPS_ASYNC))(
+While waiting for a program to exit, handle signals and run traps
+immediately.  Otherwise the trap is run after a child process has exited.
+Note this does not affect the point at which traps are run for any case
+other than when the shell is waiting for a child process.
 )
 pindex(TYPESET_SILENT)
 item(tt(TYPESET_SILENT))(
Index: Src/jobs.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/jobs.c,v
retrieving revision 1.27
diff -u -r1.27 jobs.c
--- Src/jobs.c	21 Apr 2004 11:21:24 -0000	1.27
+++ Src/jobs.c	30 Apr 2004 21:15:19 -0000
@@ -971,14 +971,14 @@
 
     /* child_block() around this loop in case #ifndef WNOHANG */
     dont_queue_signals();
-    child_block();		/* unblocked in child_suspend() */
+    child_block();		/* unblocked in signal_suspend() */
     while (!errflag && (kill(pid, 0) >= 0 || errno != ESRCH)) {
 	if (first)
 	    first = 0;
 	else
 	    kill(pid, SIGCONT);
 
-	child_suspend(SIGINT);
+	signal_suspend(SIGCHLD, SIGINT);
 	child_block();
     }
     child_unblock();
@@ -995,8 +995,7 @@
     Job jn = jobtab + job;
 
     dont_queue_signals();
-    queue_traps();
-    child_block();		 /* unblocked during child_suspend() */
+    child_block();		 /* unblocked during signal_suspend() */
     if (jn->procs || jn->auxprocs) { /* if any forks were done         */
 	jn->stat |= STAT_LOCKED;
 	if (jn->stat & STAT_CHANGED)
@@ -1004,7 +1003,7 @@
 	while (!errflag && jn->stat &&
 	       !(jn->stat & STAT_DONE) &&
 	       !(interact && (jn->stat & STAT_STOPPED))) {
-	    child_suspend(sig);
+	    signal_suspend(SIGCHLD, sig);
 	    /* Commenting this out makes ^C-ing a job started by a function
 	       stop the whole function again.  But I guess it will stop
 	       something else from working properly, we have to find out
@@ -1026,7 +1025,6 @@
 	numpipestats = 1;
     }
     child_unblock();
-    dont_queue_traps();
     restore_queue_signals(q);
 }
 
Index: Src/options.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/options.c,v
retrieving revision 1.18
diff -u -r1.18 options.c
--- Src/options.c	19 Apr 2004 16:02:22 -0000	1.18
+++ Src/options.c	30 Apr 2004 21:15:22 -0000
@@ -203,7 +203,7 @@
 {NULL, "singlelinezle",	      OPT_KSH,			 SINGLELINEZLE},
 {NULL, "sunkeyboardhack",     0,			 SUNKEYBOARDHACK},
 {NULL, "transientrprompt",    0,			 TRANSIENTRPROMPT},
-{NULL, "trapsasync",	      OPT_EMULATE|OPT_NONBOURNE, TRAPSASYNC},
+{NULL, "trapsasync",	      0,			 TRAPSASYNC},
 {NULL, "typesetsilent",	      OPT_EMULATE|OPT_BOURNE,	 TYPESETSILENT},
 {NULL, "unset",		      OPT_EMULATE|OPT_BSHELL,	 UNSET},
 {NULL, "verbose",	      0,			 VERBOSE},
Index: Src/signals.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/signals.c,v
retrieving revision 1.27
diff -u -r1.27 signals.c
--- Src/signals.c	21 Apr 2004 11:21:34 -0000	1.27
+++ Src/signals.c	30 Apr 2004 21:15:24 -0000
@@ -350,11 +350,15 @@
     sigset_t oset;
 #endif /* BROKEN_POSIX_SIGSUSPEND */
 
-    sigfillset(&set);
-    sigdelset(&set, sig);
-    sigdelset(&set, SIGHUP);  /* still don't know why we add this? */
-    if (sig2)
-        sigdelset(&set, sig2);
+    if (isset(TRAPSASYNC)) {
+	sigemptyset(&set);
+    } else {
+	sigfillset(&set);
+	sigdelset(&set, sig);
+	sigdelset(&set, SIGHUP);  /* still don't know why we add this? */
+	if (sig2)
+	    sigdelset(&set, sig2);
+    }
 #ifdef BROKEN_POSIX_SIGSUSPEND
     sigprocmask(SIG_SETMASK, &set, &oset);
     pause();
@@ -366,11 +370,15 @@
 # ifdef BSD_SIGNALS
     sigset_t set;
 
-    sigfillset(&set);
-    sigdelset(&set, sig);
-    if (sig2)
-      sigdelset(&set, sig2);
-    ret = sigpause(set);
+    if (isset(TRAPSASYNC)) {
+	sigemptyset(&set);
+    } else {
+	sigfillset(&set);
+	sigdelset(&set, sig);
+	if (sig2)
+	    sigdelset(&set, sig2);
+	ret = sigpause(set);
+    }
 # else
 #  ifdef SYSV_SIGNALS
     ret = sigpause(sig);
@@ -426,7 +434,7 @@
     do_jump = suspend_longjmp;              /* do we need to longjmp to signal_suspend */
     suspend_longjmp = 0;                    /* In case a SIGCHLD somehow arrives       */
 
-    if (sig == SIGCHLD) {                   /* Traps can cause nested child_suspend()  */
+    if (sig == SIGCHLD) {                   /* Traps can cause nested signal_suspend()  */
         if (do_jump)
             jump_to = suspend_jmp_buf;      /* Copy suspend_jmp_buf                    */
     }
@@ -1065,17 +1073,5 @@
     if ((sigtrapped[sig] & ZSIG_IGNORED) || !sigfuncs[sig] || errflag)
 	return;
 
-    /* Adapted from signal queueing in zhandler */
-    if (trap_queueing_enabled && !isset(TRAPSASYNC)) {
-	int temp_rear = ++trap_queue_rear % MAX_QUEUE_SIZE;
-
-	DPUTS(temp_rear == trap_queue_front, "BUG: trap queue full");
-	if (temp_rear != trap_queue_front) {
-	    trap_queue_rear = temp_rear;
-	    trap_queue[trap_queue_rear] = sig;
-	}
-	return;
-    }
-
     dotrapargs(sig, sigtrapped+sig, sigfuncs[sig]);
 }
Index: Src/signals.h
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/signals.h,v
retrieving revision 1.5
diff -u -r1.5 signals.h
--- Src/signals.h	21 Apr 2004 11:21:34 -0000	1.5
+++ Src/signals.h	30 Apr 2004 21:15:24 -0000
@@ -58,7 +58,6 @@
  
 #define child_block()      signal_block(sigchld_mask)
 #define child_unblock()    signal_unblock(sigchld_mask)
-#define child_suspend(S)   signal_suspend(SIGCHLD, S)
 
 /* ignore a signal */
 #define signal_ignore(S)   signal(S, SIG_IGN)
@@ -101,24 +100,6 @@
 
 #define restore_queue_signals(q) (queueing_enabled = (q))
 
-/*
- * Similar (but simpler) mechanism used for queueing traps.
- * Only needed if NO_TRAPS_ASYNC is set.
- */
-#define queue_traps()	(trap_queueing_enabled++)
-
-#define run_queued_traps() do { \
-    while (trap_queue_front != trap_queue_rear) { /* while traps in queue */ \
-	trap_queue_front = (trap_queue_front + 1) % MAX_QUEUE_SIZE; \
-	dotrap(trap_queue[trap_queue_front]);  /* handle queued trap   */ \
-    } \
-} while (0)
-
-#define dont_queue_traps() do { \
-    trap_queueing_enabled = 0; \
-    run_queued_traps(); \
-} while (0)
-
 /* Make some signal functions faster. */
 
 #ifdef POSIX_SIGNALS

-- 
Peter Stephenson <pws@pwstephenson.fsnet.co.uk>
Work: pws@csr.com
Web: http://www.pwstephenson.fsnet.co.uk


^ permalink raw reply	[relevance 2%]

* Re: PATCH: (3) Re: FreeBSD compatability feature request
  2004-04-30 21:26  2%         ` PATCH: (3) " Peter Stephenson
@ 2004-05-01  1:45  0%           ` Vincent Stemen
  2004-05-01  2:23  0%             ` Vincent Stemen
  2004-05-04  7:17  0%           ` PATCH: (3) - FreeBSD compatability issue resolved Vincent Stemen
  1 sibling, 1 reply; 200+ results
From: Vincent Stemen @ 2004-05-01  1:45 UTC (permalink / raw)
  To: Zsh hackers list

On Fri, Apr 30, 2004 at 10:26:24PM +0100, Peter Stephenson wrote:
> Patch to apply on top of previous goes to attempt to handle TRAPS_ASYNC
> the way I think is intended.  It's basically an `if' with a
> sigemptyset() inside it, hope no one was expecting anything sophisticated.
> 
> It doesn't fix the behaviour I noted, that without the option any child
> exiting, not just the one the shell is currently expecting, causes traps
> to be run.  Probably that's not a big issue; I should really check the
> wording of POSIX.
> 
> So I think that's it... Vincent?

Hi Peter.

I applied the patch and, unfortunately, it did not seem to change the
behavior at all under FreeBSD.  It still waits for the child to exit
before processing the signal in the parent even though "set -T" is
used.  Does your patch work under Linux using the two small test
scripts, sigtrap, and sigblock, that I posted the other day?

Vincent

-- 
Vincent Stemen
Avoid the VeriSign/Network Solutions domain registration trap!
Read how Network Solutions (NSI) was involved in stealing our domain name.
http://www.InetAddresses.net


^ permalink raw reply	[relevance 0%]

* Re: PATCH: (3) Re: FreeBSD compatability feature request
  2004-05-01  1:45  0%           ` Vincent Stemen
@ 2004-05-01  2:23  0%             ` Vincent Stemen
  0 siblings, 0 replies; 200+ results
From: Vincent Stemen @ 2004-05-01  2:23 UTC (permalink / raw)
  To: Zsh hackers list

On Fri, Apr 30, 2004 at 08:45:30PM -0500, Vincent Stemen wrote:
> On Fri, Apr 30, 2004 at 10:26:24PM +0100, Peter Stephenson wrote:
> > Patch to apply on top of previous goes to attempt to handle TRAPS_ASYNC
> > the way I think is intended.  It's basically an `if' with a
> > sigemptyset() inside it, hope no one was expecting anything sophisticated.
> > 
> > It doesn't fix the behaviour I noted, that without the option any child
> > exiting, not just the one the shell is currently expecting, causes traps
> > to be run.  Probably that's not a big issue; I should really check the
> > wording of POSIX.
> > 
> > So I think that's it... Vincent?
> 
> Hi Peter.
> 
> I applied the patch and, unfortunately, it did not seem to change the
> behavior at all under FreeBSD.  It still waits for the child to exit
> before processing the signal in the parent even though "set -T" is
> used.  Does your patch work under Linux using the two small test
> scripts, sigtrap, and sigblock, that I posted the other day?

I take that back.  My mistake.  I accidently tested it running as zsh
so it was not in sh compatibility mode.  It does appear to work
correctly.  Thank you very much.  I will do some more testing with the
FreeBSD init scripts and let you know if I encounter any other
problems.

Regards,
Vincent

-- 
Vincent Stemen
Avoid the VeriSign/Network Solutions domain registration trap!
Read how Network Solutions (NSI) was involved in stealing our domain name.
http://www.InetAddresses.net


^ permalink raw reply	[relevance 0%]

* Re: PATCH: (3) - FreeBSD compatability issue resolved
  2004-04-30 21:26  2%         ` PATCH: (3) " Peter Stephenson
  2004-05-01  1:45  0%           ` Vincent Stemen
@ 2004-05-04  7:17  0%           ` Vincent Stemen
  1 sibling, 0 replies; 200+ results
From: Vincent Stemen @ 2004-05-04  7:17 UTC (permalink / raw)
  To: Zsh hackers list

On Fri, Apr 30, 2004 at 10:26:24PM +0100, Peter Stephenson wrote:
> Patch to apply on top of previous goes to attempt to handle TRAPS_ASYNC
> the way I think is intended.  It's basically an `if' with a
> sigemptyset() inside it, hope no one was expecting anything sophisticated.
> 
> It doesn't fix the behaviour I noted, that without the option any child
> exiting, not just the one the shell is currently expecting, causes traps
> to be run.  Probably that's not a big issue; I should really check the
> wording of POSIX.
> 
> So I think that's it... Vincent?

Just following up with a status report.  I did further testing, running the
FreeBSD boot and shutdown scripts and, so far as I can tell, everything is
working great as a plug in replacement for /bin/sh now.  Nice work!

The only minor thing I noticed is some warnings I get when I compile:

parameter.c: In function `scanpmparameters':
parameter.c:191: warning: dereferencing type-punned pointer will break strict-aliasing rules
parameter.c: In function `scanpmcommands':
parameter.c:330: warning: dereferencing type-punned pointer will break strict-aliasing rules

...etc, etc.


I saw in the list archive, that you discussed this back in February.  I did
not know the status of it so I thought I would mention it in case you were
unaware these warnings were still being produced under FreeBSD.  I am
compiling with gcc-3.2.2.

Thanks again, Peter, for quickly addressing the FreeBSD sh compatibility
signal issue.

Best regards,
Vincent

-- 
Vincent Stemen
Avoid the VeriSign/Network Solutions domain registration trap!
Read how Network Solutions (NSI) was involved in stealing our domain name.
http://www.InetAddresses.net


^ permalink raw reply	[relevance 0%]

* Discussion of POSIX "cd" changes from austin-group
@ 2004-05-11 14:47  2% Bart Schaefer
  0 siblings, 0 replies; 200+ results
From: Bart Schaefer @ 2004-05-11 14:47 UTC (permalink / raw)
  To: zsh-workers

I don't know if anyone else is following this stuff any more, but this is
probably relevant to zsh.  I *think* zsh already has the behavior of first
trying to cd based on $PWD and then trying again with a literal path if
that fails, so it avoids the bug noted by Andries Brouwer -- but not in
the way that the proposed aardvark would require.

Visit the austin-group archives for the full thread, this is just the tail
of the thread so far.  I'm pointing this out now rather than wait for the
actual aardvark because I'll be away from email for a while starting the
end of this week.

I guess it's just as well I've never gotten around to rewriting the guts
of bin_cd().


---------- Forwarded message ----------
Date: Mon, 10 May 2004 17:21:05 +0100
From: Geoff Clare <gwc@opengroup.org>
To: austin-group-l@opengroup.org
Subject: Re: cd, relative paths, and PATH_MAX
Resent-Date: 10 May 2004 16:21:33 -0000
Resent-From: austin-group-l@opengroup.org
Resent-To: austin-group-l@opengroup.org

Based on the discussion so far, I have made a first attempt at some
editing instructions to go in an aardvark.  They include a fix for the
problem that Chet identified in step 8.

Any comments?

Action:

Replace step 7 with the following:

    "7.  If the -P option is in effect, proceed to step 9."

(Note that most of the old step 7 text reappears in the new step 10
below.)

Replace step 8b with the following:

    "b.  For each dot-dot component, if there is a preceding component
         and it is neither root nor dot-dot, then:

	   i.  If the preceding component does not refer (in the
	   context of pathname resolution with symbolic links followed)
	   to a directory, then the cd utility shall display an
	   appropriate error message and no further steps shall be
	   taken.

	   ii. The preceding component, all slashes separating the
	   preceding component from dot-dot, dot-dot and all slashes
	   separating dot-dot from the following component (if any)
	   shall be deleted."

Insert a new step 9:

    "9.  If curpath is longer than {PATH_MAX} bytes (including the
	 terminating null) and the directory operand was not longer
	 than {PATH_MAX} bytes (including the terminating null), then
	 curpath shall be converted from an absolute pathname to an
	 equivalent relative pathname if possible.  This conversion
	 shall always be considered possible if the value of PWD is
	 an initial substring of curpath.  Whether or not it is
	 considered possible under other circumstances is
	 implementation-dependent."

Replace the old step 9 with the following:

    "10. The cd utility shall then perform actions equivalent to the
	 chdir() function called with curpath as the path argument.
	 If these actions fail for any reason, the cd utility shall
	 display an appropriate error message and the remainder of
	 this step shall not be executed.  If the -P option is not in
	 effect, the PWD environment variable shall be set to the
	 value that curpath had on entry to step 9 (i.e. before
	 conversion to a relative pathname).  If the -P option is in
	 effect, the PWD environment variable shall be set to an
	 absolute pathname for the current working directory and shall
	 not contain filename components that, in the context of
	 pathname resolution, refer to a file of type symbolic link.
	 If there is insufficient permission on the new directory, or
	 on any parent of that directory, to determine the current
	 working directory, the value of the PWD environment variable
	 is unspecified."

-- 
Geoff Clare <g.clare@opengroup.org>
The Open Group, Apex Plaza, Forbury Road, Reading, RG1 1AX, England



---------- Forwarded message ----------
Date: Tue, 11 May 2004 10:10:21 +0100
From: Geoff Clare <gwc@opengroup.org>
To: austin-group-l@opengroup.org
Subject: Re: cd, relative paths, and PATH_MAX
Resent-Date: 11 May 2004 09:10:44 -0000
Resent-From: austin-group-l@opengroup.org
Resent-To: austin-group-l@opengroup.org

Seeds, Glen <Glen.Seeds@Cognos.COM> wrote, on 10 May 2004:
>
> "Whether or not it is considered possible under other circumstances is
> implementation-dependent."
> 
> Available options here are "implementation defined" or "unspecified".

Thanks.  On re-reading step 9 I see that there is a problem with the
"substring" condition.  It would require conversion if, for example,
PWD is "/home/user1" and curpath is "/home/user12345/something".
I have also realised that just saying it can be considered possible
does not affect the length condition in the way that I had intended.

I have changed "implementation-dependent" to "unspecified", fixed
the substring condition, and added a new sentence on the end about
the length condition.  The new step 9 in full is:

    "9.  If curpath is longer than {PATH_MAX} bytes (including the
	 terminating null) and the directory operand was not longer
	 than {PATH_MAX} bytes (including the terminating null), then
	 curpath shall be converted from an absolute pathname to an
	 equivalent relative pathname if possible.  This conversion
	 shall always be considered possible if the value of PWD, with
	 a trailing slash added if it does not already have one, is an
	 initial substring of curpath.  Whether or not it is
	 considered possible under other circumstances is unspecified.
	 Implementations may also apply this conversion if curpath is
	 not longer than {PATH_MAX} bytes or the directory operand was
	 longer than {PATH_MAX} bytes."

-- 
Geoff Clare <g.clare@opengroup.org>
The Open Group, Apex Plaza, Forbury Road, Reading, RG1 1AX, England



---------- Forwarded message ----------
Date: Tue, 11 May 2004 14:49:27 +0100
From: Geoff Clare <gwc@opengroup.org>
To: austin-group-l@opengroup.org
Subject: Re: cd, relative paths, and PATH_MAX
Resent-Date: 11 May 2004 13:49:47 -0000
Resent-From: austin-group-l@opengroup.org
Resent-To: austin-group-l@opengroup.org

Andries Brouwer <Andries.Brouwer@cwi.nl> wrote, on 11 May 2004:
>
> > > Suppose the current working directory has a subdirectory abc,
> > > and I want to change the current working directory there, what do I do?
[snip]
> > use "cd ./abc" and make sure that you don't ever set PWD directly
> > (or unset it).
> 
> No, that is not the right answer.
> What sometimes happens is that some directory lower in the tree
> gets renamed. So I do not touch PWD, and the inode that is my
> current working directory does not change, but PWD no longer
> is a pathname that points to it.

Okay, I see the problem now.

Since cd's logical directory handling is fundamentally dependent on
PWD, I think the answer you want ought to be "cd -P ./abc".  However,
the spec doesn't currently require that to work.  (Nor would my
proposed modified text, in its current form.)

The simplest fix would be for the new step 9 to require that
conversion back to a relative path is always done if the -P option
is in effect.  A more elegant fix might be not to convert to an
absolute path in the first place when -P is in effect.  I.e. with -P,
step 6 would set curpath to the operand and step 9 would be skipped.
In the latter case an implementation could still do a conversion
to absolute path and back to relative (like ksh does), as the
behaviour seen by applications (or interactive users) would be the
same.

Unless someone can suggest a reason for preferring the simpler fix,
I'm inclined to go for the more elegant one.

-- 
Geoff Clare <g.clare@opengroup.org>
The Open Group, Apex Plaza, Forbury Road, Reading, RG1 1AX, England


^ permalink raw reply	[relevance 2%]

* Re: RANDOMSMALL <range> [ <seed> ]
  @ 2004-06-08 21:20  3% ` Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2004-06-08 21:20 UTC (permalink / raw)
  To: Zsh hackers list

> Zsh's RANDOM function is deficient.

It's limited by POSIX, though I haven't checked how much.  Look at the
math function rand48 in the zsh/mathfunc package --- search zshmodules.

-- 
Peter Stephenson <pws@pwstephenson.fsnet.co.uk>
Work: pws@csr.com
Web: http://www.pwstephenson.fsnet.co.uk


^ permalink raw reply	[relevance 3%]

* [hugo@larve.net: Bug#261775: zsh: Space in filenames completion bug for rsync]
@ 2004-07-28 15:37  3% Clint Adams
  0 siblings, 0 replies; 200+ results
From: Clint Adams @ 2004-07-28 15:37 UTC (permalink / raw)
  To: zsh-workers; +Cc: 261775-forwarded

----- Forwarded message from Hugo Haas <hugo@larve.net> -----

Hi.

Here is the issue.

  hugo@buena ~> rsync foobar:/tmp/a<tab>
  /tmp/a b               /tmp/aaaaaaa
  /tmp/aaa/

With another <tab>:

  hugo@buena ~> rsync foobar:/tmp/a\ b

Finally, running the command:

  hugo@buena ~> rsync foobar:/tmp/a\ b .

I get:

  hugo@buena ~> rsync foobar:/tmp/a\ b .
  receiving file list ...
  link_stat "/tmp/a" failed: No such file or directory
  link_stat "/home/hugo/b" failed: No such file or directory
  0 files to consider
  client: nothing to do: perhaps you need to specify some filenames or the --recursive option?
  rsync error: some files could not be transferred (code 23) at main.c(653)

Backslashes should be "triple-escaped" like the scp completion does.

Regards,

Hugo

-- System Information:
Debian Release: testing/unstable
  APT prefers testing
  APT policy: (900, 'testing')
Architecture: i386 (i686)
Kernel: Linux 2.6.7
Locale: LANG=C, LC_CTYPE=C (ignored: LC_ALL set to en_US.UTF-8)

Versions of packages zsh depends on:
ii  debconf                     1.4.29       Debian configuration management sy
ii  libc6                       2.3.2.ds1-13 GNU C Library: Shared libraries an
ii  libcap1                     1:1.10-14    support for getting/setting POSIX.
ii  libncurses5                 5.4-4        Shared libraries for terminal hand
ii  passwd                      1:4.0.3-29   Change and administer password and

-- debconf information excluded

-- 
Hugo Haas - http://larve.net/people/hugo/

----- End forwarded message -----


^ permalink raw reply	[relevance 3%]

* PATCH: truncation warning
@ 2004-08-09 17:37  7% Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2004-08-09 17:37 UTC (permalink / raw)
  To: Zsh hackers list

This doesn't fix the problem to do with the inconsistent sizes of
parameters and internal variables, but how does everybody feel about
truncating a string converted to a number if necessary and warning when
that happens?

With 64-bit arithmetic, for example:

% integer foo=-0x8000000000000000
% print $foo
-16#8000000000000000
% integer foo=-0x8000000000000001
zsh: number truncated after 15 digits: 8000000000000001
% print $foo
-16#800000000000000

Raising an error would in principle be possible, but would need some
rewriting since it looks like errflag is being reset in cases like those
above and is not being tested between the call to zstrtol and the
assignment.  The current assumption is that zstrtol() always works, and
it's heavily used, so this isn't a simple change.  In fact, it's likely
to be a nightmare to make really consistent since a lot of the uses are
deep in the bowels of the shell.

The special case of the smallest negative integer accounts for most of
the code in the patch.  In particular, the math parser had to be
rewritten to parse the value as a single constant.  (This means
`- 0x8000000000000000' doesn't work, but actually that agrees with my
understanding of the grammar:  it consists of two tokens, the second of
which isn't a representable integer.)

Index: Src/math.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/math.c,v
retrieving revision 1.20
diff -u -r1.20 math.c
--- Src/math.c	13 May 2004 20:04:24 -0000	1.20
+++ Src/math.c	9 Aug 2004 17:34:52 -0000
@@ -186,6 +186,68 @@
 /* 50 */  LR|OP_OPF, RL|OP_E2, LR|OP_OPF
 };
 
+static int
+lexconstant(void)
+{
+#ifdef USE_LOCALE
+    char *prev_locale;
+#endif
+    char *nptr;
+
+    nptr = ptr;
+    if (*nptr == '-')
+	nptr++;
+
+    if (*nptr == '0')
+    {
+	nptr++;
+	if (*nptr == 'x' || *nptr == 'X') {
+	    /* Let zstrtol parse number with base */
+	    yyval.u.l = zstrtol(ptr, &ptr, 0);
+	    /* Should we set lastbase here? */
+	    lastbase = 16;
+	    return NUM;
+	}
+	else if (isset(OCTALZEROES) &&
+		 (memchr(nptr, '.', strlen(nptr)) == NULL) &&
+		 idigit(*nptr)) {
+	    yyval.u.l = zstrtol(ptr, &ptr, 0);
+	    lastbase = 8;
+	    return NUM;
+	}
+    }
+
+    while (idigit(*nptr))
+	nptr++;
+
+    if (*nptr == '.' || *nptr == 'e' || *nptr == 'E') {
+	/* it's a float */
+	yyval.type = MN_FLOAT;
+#ifdef USE_LOCALE
+	prev_locale = dupstring(setlocale(LC_NUMERIC, NULL));
+	setlocale(LC_NUMERIC, "POSIX");
+#endif
+	yyval.u.d = strtod(ptr, &nptr);
+#ifdef USE_LOCALE
+	if (prev_locale) setlocale(LC_NUMERIC, prev_locale);
+#endif
+	if (ptr == nptr || *nptr == '.') {
+	    zerr("bad floating point constant", NULL, 0);
+	    return EOI;
+	}
+	ptr = nptr;
+    } else {
+	/* it's an integer */
+	yyval.u.l = zstrtol(ptr, &ptr, 10);
+
+	if (*ptr == '#') {
+	    ptr++;
+	    yyval.u.l = zstrtol(ptr, &ptr, lastbase = yyval.u.l);
+	}
+    }
+    return NUM;
+}
+
 /**/
 int outputradix;
 
@@ -193,9 +255,6 @@
 static int
 zzlex(void)
 {
-#ifdef USE_LOCALE
-    char *prev_locale;
-#endif
     int cct = 0;
     yyval.type = MN_INTEGER;
 
@@ -220,7 +279,14 @@
 		ptr++;
 		return MINUSEQ;
 	    }
-	    return (unary) ? UMINUS : MINUS;
+	    if (unary) {
+		if (idigit(*ptr) || *ptr == '.') {
+		    ptr--;
+		    return lexconstant();
+		} else
+		    return UMINUS;
+	    } else
+		return MINUS;
 	case '(':
 	    return M_INPAR;
 	case ')':
@@ -376,52 +442,10 @@
 	case '\t':
 	case '\n':
 	    break;
-	case '0':
-	    if (*ptr == 'x' || *ptr == 'X') {
-		ptr++;
-		/* Should we set lastbase here? */
-		yyval.u.l = zstrtol(ptr, &ptr, lastbase = 16);
-		return NUM;
-	    }
-	    else if (isset(OCTALZEROES) &&
-		    (memchr(ptr, '.', strlen(ptr)) == NULL) &&
-		     idigit(*ptr)) {
-	        yyval.u.l = zstrtol(ptr, &ptr, lastbase = 8);
-		return NUM;
-	    }
 	/* Fall through! */
 	default:
-	    if (idigit(*--ptr) || *ptr == '.') {
-		char *nptr;
-		for (nptr = ptr; idigit(*nptr); nptr++);
-
-		if (*nptr == '.' || *nptr == 'e' || *nptr == 'E') {
-		    /* it's a float */
-		    yyval.type = MN_FLOAT;
-#ifdef USE_LOCALE
-		    prev_locale = dupstring(setlocale(LC_NUMERIC, NULL));
-		    setlocale(LC_NUMERIC, "POSIX");
-#endif
-		    yyval.u.d = strtod(ptr, &nptr);
-#ifdef USE_LOCALE
-		    if (prev_locale) setlocale(LC_NUMERIC, prev_locale);
-#endif
-		    if (ptr == nptr || *nptr == '.') {
-			zerr("bad floating point constant", NULL, 0);
-			return EOI;
-		    }
-		    ptr = nptr;
-		} else {
-		    /* it's an integer */
-		    yyval.u.l = zstrtol(ptr, &ptr, 10);
-
-		    if (*ptr == '#') {
-			ptr++;
-			yyval.u.l = zstrtol(ptr, &ptr, lastbase = yyval.u.l);
-		    }
-		}
-		return NUM;
-	    }
+	    if (idigit(*--ptr) || *ptr == '.')
+		return lexconstant();
 	    if (*ptr == '#') {
 		if (*++ptr == '\\' || *ptr == '#') {
 		    int v;
Index: Src/utils.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/utils.c,v
retrieving revision 1.63
diff -u -r1.63 utils.c
--- Src/utils.c	2 Jun 2004 22:14:26 -0000	1.63
+++ Src/utils.c	9 Aug 2004 17:34:54 -0000
@@ -1261,7 +1261,8 @@
 mod_export zlong
 zstrtol(const char *s, char **t, int base)
 {
-    zlong ret = 0;
+    const char *inp, *trunc = NULL;
+    zulong calc = 0, newcalc = 0;
     int neg;
 
     while (inblank(*s))
@@ -1280,16 +1281,54 @@
 	else
 	    base = 8;
     }
+    inp = s;
     if (base <= 10)
-	for (; *s >= '0' && *s < ('0' + base); s++)
-	    ret = ret * base + *s - '0';
+	for (; *s >= '0' && *s < ('0' + base); s++) {
+	    if (trunc)
+		continue;
+	    newcalc = calc * base + *s - '0';
+	    if (newcalc < calc)
+	    {
+	      trunc = s;
+	      continue;
+	    }
+	    calc = newcalc;
+	}
     else
 	for (; idigit(*s) || (*s >= 'a' && *s < ('a' + base - 10))
-	     || (*s >= 'A' && *s < ('A' + base - 10)); s++)
-	    ret = ret * base + (idigit(*s) ? (*s - '0') : (*s & 0x1f) + 9);
+	     || (*s >= 'A' && *s < ('A' + base - 10)); s++) {
+	    if (trunc)
+		continue;
+	    newcalc = calc*base + (idigit(*s) ? (*s - '0') : (*s & 0x1f) + 9);
+	    if (newcalc < calc)
+	    {
+		trunc = s;
+		continue;
+	    }
+	    calc = newcalc;
+	}
+
+    /*
+     * Special case: check for a number that was just too long for
+     * signed notation.
+     * Extra special case: the lowest negative number would trigger
+     * the first test, but is actually representable correctly.
+     * This is a 1 in the top bit, all others zero, so test for
+     * that explicitly.
+     */
+    if (!trunc && (zlong)calc < 0 &&
+	(!neg || calc & ~((zulong)1 << (8*sizeof(zulong)-1))))
+    {
+	trunc = s - 1;
+	calc /= base;
+    }
+
+    if (trunc)
+	zwarn("number truncated after %d digits: %s", inp, trunc - inp);
+
     if (t)
 	*t = (char *)s;
-    return neg ? -ret : ret;
+    return neg ? -(zlong)calc : (zlong)calc;
 }
 
 /**/

-- 
Peter Stephenson <pws@csr.com>                  Software Engineer
CSR Ltd., Science Park, Milton Road,
Cambridge, CB4 0WH, UK                          Tel: +44 (0)1223 692070


**********************************************************************
This email and any files transmitted with it are confidential and
intended solely for the use of the individual or entity to whom they
are addressed. If you have received this email in error please notify
the system manager.

This footnote also confirms that this email message has been swept by
MIMEsweeper for the presence of computer viruses.

www.mimesweeper.com
**********************************************************************


^ permalink raw reply	[relevance 7%]

* history probs, build probs
@ 2004-08-19  6:57  2% Denis Lagno
  0 siblings, 0 replies; 200+ results
From: Denis Lagno @ 2004-08-19  6:57 UTC (permalink / raw)
  To: zsh-workers

Hi,

I use zsh-4.0.6 on NetBSD-current.
I repeatedly (probably monthly or bimonthly) observe partial
losing of history.  I lose last events, not oldest.  
History file got truncated at a sector boundary.
Of course it can be FFS softdeps related issue,
but I lose no other things.

My history related settings are:

export HISTSIZE=500000
export HISTFILE=~/.zhistory
export SAVEHIST=500000
setopt HIST_SAVE_NO_DUPS
setopt EXTENDED_HISTORY
setopt INC_APPEND_HISTORY

FWIW ~/.zhistory is symlink to other location.
Maybe symlink triggers some race condition saving history??

So I decided to build zsh-current checked out from cvs repository.
I have problems building it, both with GNU make or BSD make:

$ ./Util/preconfig
cd . && ./.preconfig

$ ./configure
configuring for zsh 4.2.1-dev-1
checking build system type... unknown-unknown-netbsd2.0G
checking host system type... unknown-unknown-netbsd2.0G
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables... 
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ANSI C... none needed
checking whether large file support needs explicit enabling... no
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines... 
checking for egrep... /usr/bin/grep -E
checking whether gcc needs -traditional... no
checking for an ANSI C-conforming const... yes
checking for gcc option to accept ANSI C... 
checking whether to use prototypes... yes
checking for working alloca.h... no
checking for alloca... yes
checking if the compiler supports union initialisation... yes
checking if signed to unsigned casting is broken... no
checking if the compiler supports variable-length arrays... yes
checking whether make sets $(MAKE)... yes
checking for a BSD-compatible install... /usr/bin/install -c
checking for gawk... no
checking for mawk... no
checking for nawk... no
checking for awk... awk
checking whether ln works... yes
checking for yodl... no
checking for ansi2knr... no
checking for dirent.h that defines DIR... yes
checking for library containing opendir... none required
checking for ANSI C header files... yes
checking whether time.h and sys/time.h may both be included... yes
checking whether stat file-mode macros are broken... no
checking for sys/wait.h that is POSIX.1 compatible... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking sys/times.h usability... yes
checking sys/times.h presence... yes
checking for sys/times.h... yes
checking sys/select.h usability... yes
checking sys/select.h presence... yes
checking for sys/select.h... yes
checking termcap.h usability... yes
checking termcap.h presence... yes
checking for termcap.h... yes
checking termio.h usability... no
checking termio.h presence... no
checking for termio.h... no
checking termios.h usability... yes
checking termios.h presence... yes
checking for termios.h... yes
checking sys/param.h usability... yes
checking sys/param.h presence... yes
checking for sys/param.h... yes
checking sys/filio.h usability... yes
checking sys/filio.h presence... yes
checking for sys/filio.h... yes
checking for string.h... (cached) yes
checking for memory.h... (cached) yes
checking limits.h usability... yes
checking limits.h presence... yes
checking for limits.h... yes
checking fcntl.h usability... yes
checking fcntl.h presence... yes
checking for fcntl.h... yes
checking libc.h usability... no
checking libc.h presence... no
checking for libc.h... no
checking sys/utsname.h usability... yes
checking sys/utsname.h presence... yes
checking for sys/utsname.h... yes
checking sys/resource.h usability... yes
checking sys/resource.h presence... yes
checking for sys/resource.h... yes
checking locale.h usability... yes
checking locale.h presence... yes
checking for locale.h... yes
checking errno.h usability... yes
checking errno.h presence... yes
checking for errno.h... yes
checking stdio.h usability... yes
checking stdio.h presence... yes
checking for stdio.h... yes
checking for stdlib.h... (cached) yes
checking for unistd.h... (cached) yes
checking sys/capability.h usability... no
checking sys/capability.h presence... no
checking for sys/capability.h... no
checking utmp.h usability... yes
checking utmp.h presence... yes
checking for utmp.h... yes
checking utmpx.h usability... yes
checking utmpx.h presence... yes
checking for utmpx.h... yes
checking for sys/types.h... (cached) yes
checking pwd.h usability... yes
checking pwd.h presence... yes
checking for pwd.h... yes
checking grp.h usability... yes
checking grp.h presence... yes
checking for grp.h... yes
checking poll.h usability... yes
checking poll.h presence... yes
checking for poll.h... yes
checking sys/mman.h usability... yes
checking sys/mman.h presence... yes
checking for sys/mman.h... yes
checking netinet/in_systm.h usability... yes
checking netinet/in_systm.h presence... yes
checking for netinet/in_systm.h... yes
checking pcre.h usability... no
checking pcre.h presence... no
checking for pcre.h... no
checking langinfo.h usability... yes
checking langinfo.h presence... yes
checking for langinfo.h... yes
checking wchar.h usability... yes
checking wchar.h presence... yes
checking for wchar.h... yes
checking stddef.h usability... yes
checking stddef.h presence... yes
checking for stddef.h... yes
checking sys/stropts.h usability... no
checking sys/stropts.h presence... no
checking for sys/stropts.h... no
checking dlfcn.h usability... yes
checking dlfcn.h presence... yes
checking for dlfcn.h... yes
checking dl.h usability... no
checking dl.h presence... no
checking for dl.h... no
checking for conflicts in sys/time.h and sys/select.h... no
checking POSIX termios... yes
checking TIOCGWINSZ in termios.h... yes
checking for streams headers including struct winsize... no
checking for printf in -lc... yes
checking for pow in -lm... yes
checking for library containing tgetent... -ltermcap
checking for library containing tigetflag... no
checking curses.h usability... yes
checking curses.h presence... yes
checking for curses.h... yes
checking term.h usability... no
checking term.h presence... no
checking for term.h... no
checking for library containing yp_all... none required
checking for dlopen in -ldl... no
checking for socket in -lsocket... no
checking for iconv in -liconv... no
checking if an include file defines ospeed... yes
checking return type of signal handlers... void
checking for pid_t... yes
checking for off_t... yes
checking for ino_t... yes
checking for mode_t... yes
checking for uid_t in sys/types.h... yes
checking for size_t... yes
checking if long is 64 bits... no
checking if off_t is 64 bit... yes
checking if ino_t is 64 bit... no
checking if compiler has a 64 bit type... long long
checking for a corresponding unsigned 64 bit type... unsigned long long
checking for sigset_t... yes
checking for struct timezone... yes
checking for struct utmp... yes
checking for struct utmpx... yes
checking for ut_host in struct utmp... yes
checking for ut_host in struct utmpx... yes
checking for ut_xtime in struct utmpx... yes
checking for ut_tv in struct utmpx... yes
checking for d_ino in struct dirent... yes
checking for d_stat in struct dirent... no
checking for d_ino in struct direct... no
checking for d_stat in struct direct... no
checking for sin6_scope_id in struct sockaddr_in6... yes
checking if we need our own h_errno... no
checking for strftime... yes
checking for difftime... yes
checking for gettimeofday... yes
checking for select... yes
checking for poll... yes
checking for readlink... yes
checking for faccessx... no
checking for fchdir... yes
checking for ftruncate... yes
checking for fstat... yes
checking for lstat... yes
checking for lchown... yes
checking for fseeko... yes
checking for ftello... yes
checking for mkfifo... yes
checking for _mktemp... yes
checking for mkstemp... yes
checking for waitpid... yes
checking for wait3... yes
checking for sigaction... yes
checking for sigblock... yes
checking for sighold... yes
checking for sigrelse... yes
checking for sigsetmask... yes
checking for sigprocmask... yes
checking for killpg... yes
checking for setpgid... yes
checking for setpgrp... yes
checking for tcsetpgrp... yes
checking for tcgetattr... yes
checking for nice... yes
checking for gethostname... yes
checking for gethostbyname2... yes
checking for getipnodebyname... no
checking for inet_aton... yes
checking for inet_pton... yes
checking for inet_ntop... yes
checking for getlogin... yes
checking for getpwent... yes
checking for getpwnam... yes
checking for getpwuid... yes
checking for getgrgid... yes
checking for getgrnam... yes
checking for initgroups... yes
checking for nis_list... no
checking for setuid... yes
checking for seteuid... yes
checking for setreuid... yes
checking for setresuid... no
checking for setsid... yes
checking for memcpy... yes
checking for memmove... yes
checking for strstr... yes
checking for strerror... yes
checking for getrlimit... yes
checking for setlocale... yes
checking for uname... yes
checking for signgam... yes
checking for putenv... yes
checking for getenv... yes
checking for brk... yes
checking for sbrk... yes
checking for pathconf... yes
checking for sysconf... yes
checking for tgetent... yes
checking for tigetflag... no
checking for tigetnum... no
checking for tigetstr... no
checking for setupterm... no
checking for pcre_compile... no
checking for pcre_study... no
checking for pcre_exec... no
checking for nl_langinfo... yes
checking for erand48... yes
checking for open_memstream... no
checking for wctomb... yes
checking for iconv... yes
checking for grantpt... yes
checking for unlockpt... yes
checking for ptsname... yes
checking for htons... yes
checking for ntohs... yes
checking for working strcoll... yes
checking if tgetent accepts NULL... no
checking if tgetent returns 0 on success... no
checking for stdlib.h... (cached) yes
checking for unistd.h... (cached) yes
checking for getpagesize... yes
checking for working mmap... yes
checking for munmap... yes
checking for msync... yes
checking whether getpgrp requires zero arguments... yes
checking for dlopen... yes
checking for dlerror... yes
checking for dlsym... yes
checking for dlclose... yes
checking for load... no
checking for loadquery... no
checking for loadbind... no
checking for unload... no
checking for shl_load... no
checking for shl_unload... no
checking for shl_findsym... no
checking what style of signals to use... POSIX_SIGNALS
checking where signal.h is located... /usr/include/sys/signal.h
checking where error names are located... /usr/include/sys/errno.h
checking where the RLIMIT macros are located... /usr/include/sys/resource.h
checking if rlim_t is longer than a long... yes
checking if rlim_t is a quad... yes
checking for rlim_t... yes
checking for limit RLIMIT_AIO_MEM... no
checking for limit RLIMIT_AIO_OPS... no
checking for limit RLIMIT_AS... no
checking for limit RLIMIT_LOCKS... no
checking for limit RLIMIT_MEMLOCK... yes
checking for limit RLIMIT_NPROC... yes
checking for limit RLIMIT_NOFILE... yes
checking for limit RLIMIT_PTHREAD... no
checking for limit RLIMIT_RSS... yes
checking for limit RLIMIT_SBSIZE... yes
checking for limit RLIMIT_TCACHE... no
checking for limit RLIMIT_VMEM... no
checking if RLIMIT_VMEM and RLIMIT_RSS are the same... no
checking if RLIMIT_VMEM and RLIMIT_AS are the same... no
checking for /dev/fd filesystem... /proc/self/fd
checking for RFS superroot directory... no
checking whether we should use the native getcwd... no
checking for NIS... no
checking for NIS+... no
checking for utmp file... /var/run/utmp
checking for wtmp file... /var/log/wtmp
checking for utmpx file... /var/run/utmpx
checking for wtmpx file... /var/log/wtmpx
checking for brk() prototype in <unistd.h>... yes
checking for sbrk() prototype in <unistd.h>... yes
checking for ioctl prototype in <sys/ioctl.h>... yes
checking for mknod prototype in <sys/stat.h>... yes
checking if named FIFOs work... yes
checking if echo in /bin/sh interprets escape sequences... no
checking if link() works... yes
checking if kill(pid, 0) returns ESRCH correctly... yes
checking if POSIX sigsuspend() works... yes
checking if tcsetpgrp() actually works... yes
checking if getpwnam() is faked... no
checking base type of the third argument to accept... socklen_t
checking if your system has /dev/ptmx... yes
checking if /dev/ptmx is usable... yes
checking if your system uses ELF binaries... yes
checking if your dlsym() needs a leading underscore... no
checking if environ is available in shared libraries... yes
checking if tgetent is available in shared libraries... yes
checking if name clashes in shared objects are OK... yes
checking for working RTLD_GLOBAL... yes
checking whether symbols in the executable are available... no
checking whether executables can be stripped... yes
checking whether libraries can be stripped... yes
./configure:15456: functions: attempt to set slice of associative array
configure: creating ./config.status
config.status: creating Config/defs.mk
config.status: creating Makefile
config.status: creating Doc/Makefile
config.status: creating Etc/Makefile
config.status: creating Src/Makefile
config.status: creating Test/Makefile
config.status: creating config.h
config.status: executing config.modules commands
creating ./config.modules
config.status: executing stamp-h commands

zsh configuration
-----------------
zsh version               : 4.2.1-dev-1
host operating system     : unknown-unknown-netbsd2.0G
source code location      : .
compiler                  : gcc
preprocessor flags        : 
executable compiler flags :  -Wall -Wmissing-prototypes -O2
module compiler flags     :  -Wall -Wmissing-prototypes -O2 -fPIC
executable linker flags   :   -s 
module linker flags       :   -s -Wl,-x -shared --whole-archive
library flags             : -ltermcap -lm  -lc
installation basename     : zsh
binary install path       : /usr/local/bin
man page install path     : /usr/local/man
info install path         : /usr/local/info
functions install path    : /usr/local/share/zsh/4.2.1-dev-1/functions
See config.modules for installed modules and functions.

$ gmake
gmake[1]: Entering directory `/volatile/worksrc/zsh/Src'
cd .. && /bin/sh $top_srcdir/Src/mkmakemod.sh Src Makemod
creating Src/Makemod.in
config.status: creating Src/Makemod
gmake[2]: Entering directory `/volatile/worksrc/zsh/Src'
echo 'timestamp for *.mdd files' > ../Src/modules.stamp
gmake[2]: Leaving directory `/volatile/worksrc/zsh/Src'
gmake[2]: Entering directory `/volatile/worksrc/zsh/Src'
gmake[2]: Leaving directory `/volatile/worksrc/zsh/Src'
rm -f stamp-modobjs.tmp
gmake[2]: Entering directory `/volatile/worksrc/zsh/Src'
gmake[2]: Leaving directory `/volatile/worksrc/zsh/Src'
mv: rename stamp-modobjs.tmp to stamp-modobjs: No such file or directory
Updated `stamp-modobjs'.
rm -f libzsh-4.2.1-dev-1.so
gcc  -s -Wl,-x -shared --whole-archive -o libzsh-4.2.1-dev-1.so  `cat stamp-modobjs` -ltermcap -lm  -lc
cat: stamp-modobjs: No such file or directory
gmake[2]: Entering directory `/volatile/worksrc/zsh/Src'
gcc -c -I.  -DHAVE_CONFIG_H -Wall -Wmissing-prototypes -O2 -fPIC -o main.o main.c
main.c:30:19: zsh.mdh: No such file or directory
main.c:31:20: main.pro: No such file or directory
main.c: In function `main':
main.c:93: warning: implicit declaration of function `zsh_main'
gmake[2]: *** [main.o] Error 1
gmake[2]: Leaving directory `/volatile/worksrc/zsh/Src'
gmake[1]: *** [main.o] Error 2
gmake[1]: Leaving directory `/volatile/worksrc/zsh/Src'
gmake: *** [all] Error 1

$ make
rm -f stamp-modobjs.tmp
mv: rename stamp-modobjs.tmp to stamp-modobjs: No such file or directory
Updated `stamp-modobjs'.
rm -f libzsh-4.2.1-dev-1.so
gcc  -s -Wl,-x -shared --whole-archive -o libzsh-4.2.1-dev-1.so  `cat stamp-modobjs` -ltermcap -lm  -lc
cat: stamp-modobjs: No such file or directory
gcc -c -I.  -DHAVE_CONFIG_H -Wall -Wmissing-prototypes -O2 -fPIC -o main.o main.c
main.c:30:19: zsh.mdh: No such file or directory
main.c:31:20: main.pro: No such file or directory
main.c: In function `main':
main.c:93: warning: implicit declaration of function `zsh_main'
*** Error code 1

Stop.
make: stopped in /var/worksrc/zsh/Src
*** Error code 1

Stop.
make: stopped in /var/worksrc/zsh/Src
*** Error code 1

Stop.
make: stopped in /var/worksrc/zsh

--
Denis Lagno,
PGP key fingerprint: F94F F38F 1895 E673 4374 9D63 2B9E FAB3 8E83 584C


^ permalink raw reply	[relevance 2%]

* [vincent@vinc17.org: Bug#269769: zsh: sabcmd completion doesn't work]
@ 2004-09-03 14:02  4% Clint Adams
  0 siblings, 0 replies; 200+ results
From: Clint Adams @ 2004-09-03 14:02 UTC (permalink / raw)
  To: zsh-workers

I get the same behavior.

----- Forwarded message from Vincent Lefevre <vincent@vinc17.org> -----

Date: Fri, 3 Sep 2004 14:05:59 +0200
From: Vincent Lefevre <vincent@vinc17.org>
To: Debian Bug Tracking System <submit@bugs.debian.org>
Subject: Bug#269769: zsh: sabcmd completion doesn't work

Package: zsh
Version: 4.2.1-3
Severity: normal

zsh refuses to complete on stylesheet and XML filenames for sabcmd.
For instance:

$ zsh -f
greux% autoload -U compinit
greux% compinit
greux% ls
file1.xsl
greux% sabcmd [TAB]
file1.xsl

I just get the menu, but the completion doesn't work.

-- System Information:
Debian Release: 3.1
  APT prefers unstable
  APT policy: (500, 'unstable'), (500, 'testing')
Architecture: i386 (i686)
Kernel: Linux 2.6.8
Locale: LANG=POSIX, LC_CTYPE=en_US.ISO8859-1

Versions of packages zsh depends on:
ii  debconf                     1.4.34       Debian configuration management sy
ii  libc6                       2.3.2.ds1-16 GNU C Library: Shared libraries an
ii  libcap1                     1:1.10-14    support for getting/setting POSIX.
ii  libncurses5                 5.4-4        Shared libraries for terminal hand
ii  passwd                      1:4.0.3-30   Change and administer password and

-- debconf information excluded

----- End forwarded message -----


^ permalink raw reply	[relevance 4%]

* Re: Any comments on users/7883 ?
  @ 2004-09-06 12:45  4% ` Oliver Kiddle
  2004-09-06 13:15  0%   ` Peter Stephenson
  0 siblings, 1 reply; 200+ results
From: Oliver Kiddle @ 2004-09-06 12:45 UTC (permalink / raw)
  To: zsh-workers

 --- Peter Stephenson <pws@csr.com> wrote: 

> The error message for 'command -v blub' is now `no such builtin: -v'.
> Is that correct?  I don't see any documentation for the fact that the
> -v argument isn't handled when posixbuiltins is set.

The POSIX specification for command -v says: "Otherwise, no output
shall be written and the exit status shall reflect that the name was
not found." So it shouldn't print an error message.

I would have thought that -v should be handled when posixbuiltins is
set. It is only there because of POSIX to begin with.

Oliver


	
	
		
___________________________________________________________ALL-NEW Yahoo! Messenger - all new features - even more fun!  http://uk.messenger.yahoo.com


^ permalink raw reply	[relevance 4%]

* Re: Any comments on users/7883 ?
  2004-09-06 12:45  4% ` Oliver Kiddle
@ 2004-09-06 13:15  0%   ` Peter Stephenson
  2004-09-07  5:24  4%     ` Bart Schaefer
  0 siblings, 1 reply; 200+ results
From: Peter Stephenson @ 2004-09-06 13:15 UTC (permalink / raw)
  To: zsh-workers

=?iso-8859-1?q?Oliver=20Kiddle?= wrote:
>  --- Peter Stephenson <pws@csr.com> wrote: 
> 
> > The error message for 'command -v blub' is now `no such builtin: -v'.
> > Is that correct?  I don't see any documentation for the fact that the
> > -v argument isn't handled when posixbuiltins is set.
> 
> The POSIX specification for command -v says: "Otherwise, no output
> shall be written and the exit status shall reflect that the name was
> not found." So it shouldn't print an error message.

That's just because command -v wasn't recognised as a command with an
option.  It works properly when the shell gets that far.

> I would have thought that -v should be handled when posixbuiltins is
> set. It is only there because of POSIX to begin with.

I think this is the answer.  It may be just an oversight.  The second
hunk now doesn't get reached, but the change seems right anyway.

The test hn == (HashNode)&commandbn now gets an error message about
`dereferencing type-punned pointer', even though it's obviously never
dereferenced.

I still don't properly understand the logic here.

Index: Src/exec.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/exec.c,v
retrieving revision 1.70
diff -u -r1.70 exec.c
--- Src/exec.c	3 Sep 2004 09:47:49 -0000	1.70
+++ Src/exec.c	6 Sep 2004 13:15:17 -0000
@@ -1939,8 +1939,18 @@
 		return;
 	    }
 
+	    /*
+	     * Quit looking for a command
+	     * - if there was an error, or
+	     * - if we have checked that the hash entry is suitable, or
+	     * - if we are using the command prefix and either
+	     *   - we are not using POSIXBUILTINS, or
+	     *   - we have determined there are options which would
+	     *     require us to use the command builtin.
+	     */
 	    if (errflag || checked ||
-		(unset(POSIXBUILTINS) && (cflags & BINF_COMMAND)))
+		((cflags & BINF_COMMAND) &&
+		 (unset(POSIXBUILTINS) || hn == (HashNode)&commandbn)))
 		break;
 
 	    cmdarg = (char *) peekfirst(args);
@@ -1950,7 +1960,7 @@
 		break;
 	    }
 	    if (!(hn = builtintab->getnode(builtintab, cmdarg))) {
-		if (cflags & BINF_BUILTIN) {
+		if ((cflags & BINF_BUILTIN) || is_builtin) {
 		    zwarn("no such builtin: %s", cmdarg, 0);
 		    lastval = 1;
                     opts[AUTOCONTINUE] = oautocont;

-- 
Peter Stephenson <pws@csr.com>                  Software Engineer
CSR Ltd., Science Park, Milton Road,
Cambridge, CB4 0WH, UK                          Tel: +44 (0)1223 692070


**********************************************************************
This email and any files transmitted with it are confidential and
intended solely for the use of the individual or entity to whom they
are addressed. If you have received this email in error please notify
the system manager.

This footnote also confirms that this email message has been swept by
MIMEsweeper for the presence of computer viruses.

www.mimesweeper.com
**********************************************************************


^ permalink raw reply	[relevance 0%]

* Re: Any comments on users/7883 ?
  2004-09-06 13:15  0%   ` Peter Stephenson
@ 2004-09-07  5:24  4%     ` Bart Schaefer
  0 siblings, 0 replies; 200+ results
From: Bart Schaefer @ 2004-09-07  5:24 UTC (permalink / raw)
  To: zsh-workers

On Mon, 6 Sep 2004, Peter Stephenson wrote:

> Bart Schaefer wrote:
> > It fixes a crash bug, so it should either get committed or someone should 
> > deduce the better fix to which I alluded.
> 
> Isn't this the correct fix?

I don't think so ...

(It looks like nobody understands this code, me included.  Did Zefram 
write it, originally?)

> The problem with hn being NULL is because the later code uses is_builtin 
> which assumes it isn't NULL.

No, the problem is that hn started out valid and then was improperly 
clobbered with a NULL.  The question is whether to simply prevent the
clobbering, or to avoid the entire code path that includes clobbering.

[Oliver's reply elided because Peter already quoted it.]

On Mon, 6 Sep 2004, Peter Stephenson wrote:

> =?iso-8859-1?q?Oliver=20Kiddle?= wrote:
> > I would have thought that -v should be handled when posixbuiltins is
> > set. It is only there because of POSIX to begin with.
> 
> I think this is the answer.  It may be just an oversight.  The second
> hunk now doesn't get reached, but the change seems right anyway.

I think you found the right "if" branch test to modify, but I'm not yet 
convinced you've got the test right.  Skipping ahead to the patch:

> +	     * Quit looking for a command
> +	     * - if there was an error, or
> +	     * - if we have checked that the hash entry is suitable, or

"we have checked that the hash entry is suitable" is not AFAICT what the 
"checked" boolean means.  If we've found any hash entry, it's always 
"suitable," again AFAICT.  Rather, "checked" means that it's OK to apply 
MAGIC_EQUAL_SUBST, according to the comment up around line 1805.  (Maybe 
its semantics have been overloaded?)

> +	     * - if we are using the command prefix and either
> +	     *   - we are not using POSIXBUILTINS, or
> +	     *   - we have determined there are options which would
> +	     *     require us to use the command builtin.

This is the key bit here.  I think the right fix is to check "is_builtin"
not "hn == (HashNode)&commandbn" -- and that it's not necessary to && it
with (cflags & BINF_COMMAND) the way you have.

There are only two ways "is_builtin" could be true at that point.  One,
we've loaded a builtin from a module (line 1821); two, we've decided we
need commandbn (line 1848).  In either case it's unecessary to call
builtintab->getnode() again, although in the former case it's harmless.

(Is it just me, or is there a crash waiting to happen at line 1828 in the
event of a badly written module?)

> The test hn == (HashNode)&commandbn now gets an error message about
> `dereferencing type-punned pointer', even though it's obviously never
> dereferenced.

On some hardware architectures, even loading a pointer into a register to 
compare it to another pointer is equivalent (in terms of causing faults) 
to a dereference.  Or so says the logic behind C99.

> I still don't properly understand the logic here.

I think among the three of us we're finally getting close.  Another patch
for consideration (I've dropped your second hunk because now it's really
impossible for is_builtin to be true at that point):

Index: Src/exec.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/exec.c,v
retrieving revision 1.70
diff -u -r1.70 exec.c
--- Src/exec.c	3 Sep 2004 09:47:49 -0000	1.70
+++ Src/exec.c	7 Sep 2004 05:22:15 -0000
@@ -1825,7 +1825,7 @@
 		    load_module(((Builtin) hn)->optstr);
 		    hn = builtintab->getnode(builtintab, cmdarg);
 		}
-		assign = (hn->flags & BINF_MAGICEQUALS);
+		assign = (hn && (hn->flags & BINF_MAGICEQUALS));
 		break;
 	    }
 	    cflags &= ~BINF_BUILTIN & ~BINF_COMMAND;
@@ -1939,7 +1939,18 @@
 		return;
 	    }
 
-	    if (errflag || checked ||
+	    /*
+	     * Quit looking for a command if:
+	     * - there was an error; or
+	     * - we checked the simple cases needing MAGIC_EQUAL_SUBST; or
+	     * - we know we already found a builtin (because either:
+	     *   - we loaded a builtin from a module, or
+	     *   - we have determined there are options which would
+	     *     require us to use the "command" builtin); or
+	     * - we aren't using POSIX and so BINF_COMMAND indicates a zsh
+	     *   precommand modifier is being used in place of the builtin
+	     */
+	    if (errflag || checked || is_builtin ||
 		(unset(POSIXBUILTINS) && (cflags & BINF_COMMAND)))
 		break;
 


^ permalink raw reply	[relevance 4%]

* [joshk@triplehelix.org: Bug#271196: makefile completion catches some delayed expansions as targets]
@ 2004-09-11 23:16  3% Clint Adams
  0 siblings, 0 replies; 200+ results
From: Clint Adams @ 2004-09-11 23:16 UTC (permalink / raw)
  To: zsh-workers

I can reproduce this, but only if use-perl is off.

----- Forwarded message from Joshua Kwan <joshk@triplehelix.org> -----

I have this in a debian/rules file:

ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
CFLAGS := -g -O0 -Wall
else
CFLAGS := -g -O2 -Wall
endif

Completion shows:

% make -f debian/rules
CFLAGS             build-arch         build-stamp-indep
binary             build-indep        clean
build              build-stamp-arch   install

CFLAGS shouldn't get flagged as a target.

The complete debian/rules is attached.

-- System Information:
Debian Release: 3.1
  APT prefers unstable
  APT policy: (500, 'unstable'), (499, 'testing'), (1, 'experimental')
Architecture: i386 (i686)
Kernel: Linux 2.6.9-rc1
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (ignored: LC_ALL set to en_US.UTF-8)

Versions of packages zsh depends on:
ii  debconf                     1.4.34       Debian configuration management sy
ii  libc6                       2.3.2.ds1-16 GNU C Library: Shared libraries an
ii  libcap1                     1:1.10-14    support for getting/setting POSIX.
ii  libncurses5                 5.4-4        Shared libraries for terminal hand
ii  passwd                      1:4.0.3-30.1 Change and administer password and

-- debconf information excluded

#!/usr/bin/make -f
# debian/rules for devscripts, based on the example file rules.indep.

# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1

ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
CFLAGS := -g -O0 -Wall
else
CFLAGS := -g -O2 -Wall
endif

# Here we perform some checks to ensure that we haven't goofed or left
# debugging code around or ... before we build the package
test: test-stamp
test-stamp:
	# debugging info in bts?
	if grep -q '\$$debug *= *1' bts.pl; then exit 1; else exit 0; fi
	touch test-stamp

build-indep: build-stamp-indep
build-stamp-indep: test-stamp
	dh_testdir
	touch build-stamp-indep

build-arch: build-stamp-arch
build-stamp-arch: test-stamp
	dh_testdir
	$(MAKE) CFLAGS='$(CFLAGS)'
	touch build-stamp-arch

build: build-arch build-indep

clean:
	dh_testdir
	dh_testroot
	-$(MAKE) clean
	rm -f build-stamp* test-stamp
	dh_clean

install: build
	dh_testdir
	dh_testroot
	dh_clean -k
	dh_installdirs
	$(MAKE) DESTDIR=$(CURDIR)/debian/devscripts install

# Build architecture-independent files here.
binary-indep: build-indep
# We have nothing to do

# Build architecture-dependent files here.
binary-arch: build-arch install
	dh_testdir
	dh_testroot
	dh_installdocs README
	dh_installexamples
#	This is now done by the make install command above
#	dh_installman
	dh_link /usr/share/devscripts/conf.default \
		/usr/share/doc/devscripts/devscripts.conf.ex
	dh_installchangelogs
	dh_strip
	dh_compress
	dh_fixperms
	dh_installdeb
	dh_perl
	dh_shlibdeps
	dh_gencontrol
	dh_md5sums
	dh_builddeb

binary: binary-indep binary-arch

.PHONY: build-arch build-indep build clean binary-indep binary-arch binary \
	install

# Local variables:
# mode: makefile
# End:


----- End forwarded message -----


^ permalink raw reply	[relevance 3%]

* Re: PATCH: zsh-4.2.1: unset does not follow spec
  @ 2004-09-23  7:54  3%     ` Bart Schaefer
  2004-09-23  9:20  5%       ` Peter Stephenson
  2004-09-23  9:26  3%       ` Oliver Kiddle
  0 siblings, 2 replies; 200+ results
From: Bart Schaefer @ 2004-09-23  7:54 UTC (permalink / raw)
  To: zsh-workers

On Wed, 22 Sep 2004, Matthias B. wrote:

> On Wed, 22 Sep 2004 08:28:03 -0700 (PDT) Bart Schaefer
> <schaefer@brasslantern.com> wrote:
> 
> > It appears to me that FreeBSD and Zsh are interpreting "could not be 
> > unset" to include variables that were not set in the first place. 
> 
> Arguing over the letter of a specification is not useful.

Firstly, I was stating a theory, not arguing a position.  Secondly, one 
can't start from the premise of "X does not follow the letter of the 
specification" and then dismiss all discussion of what the letter _is_.

> When your boss tells you to hammer a nail into the wall at spot X, you 
> go there and find that there is already a nail, what do you do?

Wrong question.  When your boss tells you to pull a nail out of the wall 
at spot X and bring it to him, and you go there and find that there is no 
nail to pull, what do you do?  Do you think he'll appreciate it if you
never tell him why he didn't get his nail?

That's not the right question either, but it's closer.  The right question 
is more like:  When your boss tells you to pull a nail out of the wall at 
spot X, and you go there and find that there is no nail to pull and no 
hole where one used to be, how do you find out whether your boss cares 
about the hole?

Nevertheless:

> BTW, the behaviour of unset should, I think, depend on the UNSET option.
> If UNSET is off, then unset should report an error if the variable is
> already unset.

This is actually what I was going to suggest.

(Is it time for "emulate posix"?)


^ permalink raw reply	[relevance 3%]

* Re: PATCH: zsh-4.2.1: unset does not follow spec
  2004-09-23  7:54  3%     ` Bart Schaefer
@ 2004-09-23  9:20  5%       ` Peter Stephenson
  2004-09-23  9:26  3%       ` Oliver Kiddle
  1 sibling, 0 replies; 200+ results
From: Peter Stephenson @ 2004-09-23  9:20 UTC (permalink / raw)
  To: zsh-workers

Bart Schaefer wrote:
> (Is it time for "emulate posix"?)

I suppose it's plausible, since the addition is transparent.  We
currently have something along the lines of sh being traditional Bourne
shell, ksh and being more or less a superset of sh (though somebody
pointed out a few weeks ago that ksh doesn't seem to have the effect of
sh_file_expansion).  Given that there are differences between ksh and
posix, a new option would probably be necessary.

However, the only use of posix would be to switch to it automatically in
the appropriate place.  If you have to trigger it by hand it's too late
for most of the places where people want to guarantee Posix compliance.
How would that be triggered?  Some (gag) environment variable?

-- 
Peter Stephenson <pws@csr.com>                  Software Engineer
CSR Ltd., Science Park, Milton Road,
Cambridge, CB4 0WH, UK                          Tel: +44 (0)1223 692070


**********************************************************************
This email and any files transmitted with it are confidential and
intended solely for the use of the individual or entity to whom they
are addressed. If you have received this email in error please notify
the system manager.

This footnote also confirms that this email message has been swept by
MIMEsweeper for the presence of computer viruses.

www.mimesweeper.com
**********************************************************************


^ permalink raw reply	[relevance 5%]

* Re: PATCH: zsh-4.2.1: unset does not follow spec
  2004-09-23  7:54  3%     ` Bart Schaefer
  2004-09-23  9:20  5%       ` Peter Stephenson
@ 2004-09-23  9:26  3%       ` Oliver Kiddle
  2004-09-23 16:14  4%         ` Bart Schaefer
  1 sibling, 1 reply; 200+ results
From: Oliver Kiddle @ 2004-09-23  9:26 UTC (permalink / raw)
  To: zsh-workers

Bart wrote:
> > BTW, the behaviour of unset should, I think, depend on the UNSET option.
> > If UNSET is off, then unset should report an error if the variable is
> > already unset.
> 
> This is actually what I was going to suggest.

Nice try but the unset option (or nounset to be precise) is one of the
options defined in the POSIX specification.

Even if that were not the case, I would disagree. The unset option deals
with variable expansions and I don't see why it would be useful to
overload it with control of this issue. A user's preference on the two
issues wouldn't necessarily correlate.

The specification looks fairly clear to me (zsh is wrong) and I can't
see why anyone would be sufficiently attached to the old behaviour to
want an option for it.

> (Is it time for "emulate posix"?)

Possibly.

How would it differ from "emulate sh"?

Oliver


^ permalink raw reply	[relevance 3%]

* Re: PATCH: zsh-4.2.1: unset does not follow spec
  2004-09-23  9:26  3%       ` Oliver Kiddle
@ 2004-09-23 16:14  4%         ` Bart Schaefer
  0 siblings, 0 replies; 200+ results
From: Bart Schaefer @ 2004-09-23 16:14 UTC (permalink / raw)
  To: zsh-workers

On Thu, 23 Sep 2004, Oliver Kiddle wrote:

> The specification looks fairly clear to me (zsh is wrong)

On Thu, 23 Sep 2004, Geoff Clare wrote:
> 
> I would say that a non-zero exit for "unset" is definitely an error, but 
> the standard is unclear as to whether "unset" is required to treat an 
> attempt to unset a variable that was not previously set as an ordinary 
> error (as opposed to a "utility syntax error", which is definitely not 
> allowed).
> 
> -- 
> Geoff Clare, opengroup.org

I don't really have a strong opinion either way (I can't remember EVER
testing the exit status of "unset" but I suppose it could affect the
shell in the case of "setopt errexit"), but I don't think it's as cut
and dried as it should be.

(Back to Oliver)
On Thu, 23 Sep 2004, Oliver Kiddle wrote:
> 
> > (Is it time for "emulate posix"?)
> 
> Possibly.
> 
> How would it differ from "emulate sh"?

At the moment, it might not.  If, however, we were to discover a case 
where POSIX specifies behavior that differs from historic /bin/sh 
behavior, we might want a plain way to get either one.

Also, although "emulate" has so far been limited to setting options, it 
might be worth considering whether it should also modify the environment, 
e.g., exporting POSIXLY_CORRECT or UNIX95 or whatever.  However, what it 
exported would depend on compile-time configuration, which although it 
could be OS-specific could not be architecture-specific, making trouble
on binary-compatible platforms that use different techniques to achieve
POSIX conformance.  So, I'm not sure.


^ permalink raw reply	[relevance 4%]

* More POSIX developments
@ 2004-09-25  2:08  9% Bart Schaefer
  2004-09-27 11:04  6% ` Peter Stephenson
  0 siblings, 1 reply; 200+ results
From: Bart Schaefer @ 2004-09-25  2:08 UTC (permalink / raw)
  To: zsh-workers

According to today's minutes of the yesterday's austin-group teleconf:

-----
It was agreed so far that

test asdf -ge 0 

is a syntax error and is expected to return  something greater than 1
-----

In zsh's builtin test, of course, "asdf -ge 0" is interpreted in math 
context, and is equivalent to (( asdf >= 0 )) and thus to "$asdf -ge 0".  
The (( )) form is still considered OK, but the test -ge form is (or soon 
will be) required to fail.

Yet another case where "emulate posix" might be useful.  An idea that 
occurs to me is that we could introduce hidden options, that is, having
no name that could be referenced via "setopt" but that are switched on
and off in groups, only via "emulate".


^ permalink raw reply	[relevance 9%]

* Re: More POSIX developments
  2004-09-25  2:08  9% More POSIX developments Bart Schaefer
@ 2004-09-27 11:04  6% ` Peter Stephenson
  2004-10-02 21:23  5%   ` Bart Schaefer
  0 siblings, 1 reply; 200+ results
From: Peter Stephenson @ 2004-09-27 11:04 UTC (permalink / raw)
  To: zsh-workers

Bart Schaefer wrote:
> According to today's minutes of the yesterday's austin-group teleconf:
> 
> -----
> It was agreed so far that
> 
> test asdf -ge 0 
> 
> is a syntax error and is expected to return  something greater than 1
> -----
> 
> In zsh's builtin test, of course, "asdf -ge 0" is interpreted in math 
> context, and is equivalent to (( asdf >= 0 )) and thus to "$asdf -ge 0".  
> The (( )) form is still considered OK, but the test -ge form is (or soon 
> will be) required to fail.
> 
> Yet another case where "emulate posix" might be useful.  An idea that 
> occurs to me is that we could introduce hidden options, that is, having
> no name that could be referenced via "setopt" but that are switched on
> and off in groups, only via "emulate".

Well, [[ ... ]] has always been the preferred zsh way of doing things,
with [ and test for compatibility, so it's at least plausible that the
latter should simply implement POSIX.  The documentation clearly says
test was "added for compatibility", as well as vaguely indicating it's
"like" conditional expressions.  So there is some wiggle room this time.

Returning "something greater than 1" for an error is nastier to code,
since the main function involved, evalcond(), returns statuses the other
way round.  Hence a lot of return statuses need flipping.

The following patch, which I won't commit until we've decided which way
to go, tries to cover the bases by making test work (more) like POSIX
while leaving [[ ... ]] the way it is.  The errors now return status 2
from evalcond, but for backward compatibility [[ ... ]] turns them into
shell errors.

Quite possibly I've missed something, but this is about the minimal
damage we can inflict without an option.

The existing tests still all pass, although the new code means new tests
should be added.  Also, the documentation needs clarifying whatever we
decide to do.

I needed to add an extra warning function to choose between the cases
where we have a builtin name and where the code is called internally as
a condition.  Does anyone know if there's a reason zwarnnam handles the
absence of a command name in a strange way?  In other words, could I
remove zwarnnamopt and make zwarnnam behave like that?  The current
behaviour of zwarnnam without a command name doesn't look very useful:
it outputs a space and then the error message.  However, I haven't
checked all the zillion calls to it and maybe it's designed to be output
after another message.

Index: Src/builtin.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/builtin.c,v
retrieving revision 1.126
diff -u -r1.126 builtin.c
--- Src/builtin.c	9 Sep 2004 10:12:47 -0000	1.126
+++ Src/builtin.c	27 Sep 2004 10:56:12 -0000
@@ -4846,7 +4846,7 @@
     state.strs = prog->strs;
 
 
-    return !evalcond(&state);
+    return evalcond(&state, name);
 }
 
 /* display a time, provided in units of 1/60s, as minutes and seconds */
Index: Src/cond.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/cond.c,v
retrieving revision 1.5
diff -u -r1.5 cond.c
--- Src/cond.c	1 Aug 2002 15:06:26 -0000	1.5
+++ Src/cond.c	27 Sep 2004 10:56:12 -0000
@@ -37,15 +37,26 @@
     "-ne", "-lt", "-gt", "-le", "-ge"
 };
 
+/*
+ * Evaluate a conditional expression given the arguments.
+ * If fromtest is set, the caller is the test or [ builtin;
+ * with the pointer giving the name of the command.
+ * for POSIX conformance this supports a more limited range
+ * of functionality.
+ *
+ * Return status is the final shell status, i.e. 0 for true,
+ * 1 for false and 2 for error.
+ */
+
 /**/
 int
-evalcond(Estate state)
+evalcond(Estate state, char *fromtest)
 {
     struct stat *st;
     char *left, *right;
     Wordcode pcode;
     wordcode code;
-    int ctype, htok = 0;
+    int ctype, htok = 0, ret;
 
  rec:
 
@@ -58,24 +69,28 @@
     case COND_NOT:
 	if (tracingcond)
 	    fprintf(xtrerr, " %s", condstr[ctype]);
-	return !evalcond(state);
+	ret = evalcond(state, fromtest);
+	if (ret == 2)
+	    return ret;
+	else
+	    return !ret;
     case COND_AND:
-	if (evalcond(state)) {
+	if (!(ret = evalcond(state, fromtest))) {
 	    if (tracingcond)
 		fprintf(xtrerr, " %s", condstr[ctype]);
 	    goto rec;
 	} else {
 	    state->pc = pcode + (WC_COND_SKIP(code) + 1);
-	    return 0;
+	    return ret;
 	}
     case COND_OR:
-	if (!evalcond(state)) {
+	if ((ret = evalcond(state, fromtest)) == 1) {
 	    if (tracingcond)
 		fprintf(xtrerr, " %s", condstr[ctype]);
 	    goto rec;
 	} else {
 	    state->pc = pcode + (WC_COND_SKIP(code) + 1);
-	    return 1;
+	    return ret;
 	}
     case COND_MOD:
     case COND_MODI:
@@ -99,12 +114,13 @@
 	    if ((cd = getconddef((ctype == COND_MODI), name + 1, 1))) {
 		if (ctype == COND_MOD &&
 		    (l < cd->min || (cd->max >= 0 && l > cd->max))) {
-		    zerr("unrecognized condition: `%s'", name, 0);
-		    return 0;
+		    zwarnnamopt(fromtest, "unrecognized condition: `%s'",
+				name, 0);
+		    return 2;
 		}
 		if (tracingcond)
 		    tracemodcond(name, strs, ctype == COND_MODI);
-		return cd->handler(strs, cd->condid);
+		return !cd->handler(strs, cd->condid);
 	    }
 	    else {
 		char *s = strs[0];
@@ -115,16 +131,20 @@
 		if (name && name[0] == '-' &&
 		    (cd = getconddef(0, name + 1, 1))) {
 		    if (l < cd->min || (cd->max >= 0 && l > cd->max)) {
-			zerr("unrecognized condition: `%s'", name, 0);
-			return 0;
+			zwarnnamopt(fromtest, "unrecognized condition: `%s'",
+				    name, 0);
+			return 2;
 		    }
 		    if (tracingcond)
 			tracemodcond(name, strs, ctype == COND_MODI);
-		    return cd->handler(strs, cd->condid);
-		} else
-		    zerr("unrecognized condition: `%s'", name, 0);
+		    return !cd->handler(strs, cd->condid);
+		} else {
+		    zwarnnamopt(fromtest,
+				"unrecognized condition: `%s'", name, 0);
+		}
 	    }
-	    return 0;
+	    /* module not found, error */
+	    return 2;
 	}
     }
     left = ecgetstr(state, EC_DUPTOK, &htok);
@@ -159,8 +179,34 @@
 
     if (ctype >= COND_EQ && ctype <= COND_GE) {
 	mnumber mn1, mn2;
-	mn1 = matheval(left);
-	mn2 = matheval(right);
+	if (fromtest) {
+	    /*
+	     * For test and [, the expressions must be base 10 integers,
+	     * not integer expressions.
+	     */
+	    char *eptr, *err;
+
+	    mn1.u.l = zstrtol(left, &eptr, 10);
+	    if (!*eptr)
+	    {
+		mn2.u.l = zstrtol(right, &eptr, 10);
+		err = right;
+	    }
+	    else
+		err = left;
+
+	    if (*eptr)
+	    {
+		zwarnnamopt(fromtest, "integer expression expected: %s",
+			    err, 0);
+		return 2;
+	    }
+
+	    mn1.type = mn2.type = MN_INTEGER;
+	} else {
+	    mn1 = matheval(left);
+	    mn2 = matheval(right);
+	}
 
 	if (((mn1.type|mn2.type) & (MN_INTEGER|MN_FLOAT)) ==
 	    (MN_INTEGER|MN_FLOAT)) {
@@ -176,23 +222,23 @@
 	}
 	switch(ctype) {
 	case COND_EQ:
-	    return (mn1.type & MN_FLOAT) ? (mn1.u.d == mn2.u.d) :
-		(mn1.u.l == mn2.u.l);
+	    return !((mn1.type & MN_FLOAT) ? (mn1.u.d == mn2.u.d) :
+		     (mn1.u.l == mn2.u.l));
 	case COND_NE:
-	    return (mn1.type & MN_FLOAT) ? (mn1.u.d != mn2.u.d) :
-		(mn1.u.l != mn2.u.l);
+	    return !((mn1.type & MN_FLOAT) ? (mn1.u.d != mn2.u.d) :
+		     (mn1.u.l != mn2.u.l));
 	case COND_LT:
-	    return (mn1.type & MN_FLOAT) ? (mn1.u.d < mn2.u.d) :
-		(mn1.u.l < mn2.u.l);
+	    return !((mn1.type & MN_FLOAT) ? (mn1.u.d < mn2.u.d) :
+		     (mn1.u.l < mn2.u.l));
 	case COND_GT:
-	    return (mn1.type & MN_FLOAT) ? (mn1.u.d > mn2.u.d) :
-		(mn1.u.l > mn2.u.l);
+	    return !((mn1.type & MN_FLOAT) ? (mn1.u.d > mn2.u.d) :
+		     (mn1.u.l > mn2.u.l));
 	case COND_LE:
-	    return (mn1.type & MN_FLOAT) ? (mn1.u.d <= mn2.u.d) :
-		(mn1.u.l <= mn2.u.l);
+	    return !((mn1.type & MN_FLOAT) ? (mn1.u.d <= mn2.u.d) :
+		     (mn1.u.l <= mn2.u.l));
 	case COND_GE:
-	    return (mn1.type & MN_FLOAT) ? (mn1.u.d >= mn2.u.d) :
-		(mn1.u.l >= mn2.u.l);
+	    return !((mn1.type & MN_FLOAT) ? (mn1.u.d >= mn2.u.d) :
+		     (mn1.u.l >= mn2.u.l));
 	}
     }
 
@@ -215,81 +261,83 @@
 			!strcmp(opat, right) && pprog != dummy_patprog2);
 
 		if (!(pprog = patcompile(right, (save ? PAT_ZDUP : PAT_STATIC),
-					 NULL)))
-		    zerr("bad pattern: %s", right, 0);
+					 NULL))) {
+		    zwarnnamopt(fromtest, "bad pattern: %s", right, 0);
+		    return 2;
+		}
 		else if (save)
 		    state->prog->pats[npat] = pprog;
 	    }
 	    state->pc += 2;
 	    test = (pprog && pattry(pprog, left));
 
-	    return (ctype == COND_STREQ ? test : !test);
+	    return !(ctype == COND_STREQ ? test : !test);
 	}
     case COND_STRLT:
-	return strcmp(left, right) < 0;
+	return !(strcmp(left, right) < 0);
     case COND_STRGTR:
-	return strcmp(left, right) > 0;
+	return !(strcmp(left, right) > 0);
     case 'e':
     case 'a':
-	return (doaccess(left, F_OK));
+	return (!doaccess(left, F_OK));
     case 'b':
-	return (S_ISBLK(dostat(left)));
+	return (!S_ISBLK(dostat(left)));
     case 'c':
-	return (S_ISCHR(dostat(left)));
+	return (!S_ISCHR(dostat(left)));
     case 'd':
-	return (S_ISDIR(dostat(left)));
+	return (!S_ISDIR(dostat(left)));
     case 'f':
-	return (S_ISREG(dostat(left)));
+	return (!S_ISREG(dostat(left)));
     case 'g':
-	return (!!(dostat(left) & S_ISGID));
+	return (!(dostat(left) & S_ISGID));
     case 'k':
-	return (!!(dostat(left) & S_ISVTX));
+	return (!(dostat(left) & S_ISVTX));
     case 'n':
-	return (!!strlen(left));
+	return (!strlen(left));
     case 'o':
-	return (optison(left));
+	return (optison(fromtest, left));
     case 'p':
-	return (S_ISFIFO(dostat(left)));
+	return (!S_ISFIFO(dostat(left)));
     case 'r':
-	return (doaccess(left, R_OK));
+	return (!doaccess(left, R_OK));
     case 's':
-	return ((st = getstat(left)) && !!(st->st_size));
+	return !((st = getstat(left)) && !!(st->st_size));
     case 'S':
-	return (S_ISSOCK(dostat(left)));
+	return (!S_ISSOCK(dostat(left)));
     case 'u':
-	return (!!(dostat(left) & S_ISUID));
+	return (!(dostat(left) & S_ISUID));
     case 'w':
-	return (doaccess(left, W_OK));
+	return (!doaccess(left, W_OK));
     case 'x':
 	if (privasserted()) {
 	    mode_t mode = dostat(left);
-	    return (mode & S_IXUGO) || S_ISDIR(mode);
+	    return !((mode & S_IXUGO) || S_ISDIR(mode));
 	}
-	return doaccess(left, X_OK);
+	return !doaccess(left, X_OK);
     case 'z':
-	return (!strlen(left));
+	return !!(strlen(left));
     case 'h':
     case 'L':
-	return (S_ISLNK(dolstat(left)));
+	return (!S_ISLNK(dolstat(left)));
     case 'O':
-	return ((st = getstat(left)) && st->st_uid == geteuid());
+	return !((st = getstat(left)) && st->st_uid == geteuid());
     case 'G':
-	return ((st = getstat(left)) && st->st_gid == getegid());
+	return !((st = getstat(left)) && st->st_gid == getegid());
     case 'N':
-	return ((st = getstat(left)) && st->st_atime <= st->st_mtime);
+	return !((st = getstat(left)) && st->st_atime <= st->st_mtime);
     case 't':
-	return isatty(mathevali(left));
+	return !isatty(mathevali(left));
     case COND_NT:
     case COND_OT:
 	{
 	    time_t a;
 
 	    if (!(st = getstat(left)))
-		return 0;
+		return 1;
 	    a = st->st_mtime;
 	    if (!(st = getstat(right)))
-		return 0;
-	    return (ctype == COND_NT) ? a > st->st_mtime : a < st->st_mtime;
+		return 2;
+	    return !((ctype == COND_NT) ? a > st->st_mtime : a < st->st_mtime);
 	}
     case COND_EF:
 	{
@@ -297,17 +345,18 @@
 	    ino_t i;
 
 	    if (!(st = getstat(left)))
-		return 0;
+		return 1;
 	    d = st->st_dev;
 	    i = st->st_ino;
 	    if (!(st = getstat(right)))
-		return 0;
-	    return d == st->st_dev && i == st->st_ino;
+		return 1;
+	    return !(d == st->st_dev && i == st->st_ino);
 	}
     default:
-	zerr("bad cond code", NULL, 0);
+	zwarnnamopt(fromtest, "bad cond code", NULL, 0);
+	return 2;
     }
-    return 0;
+    return 1;
 }
 
 
@@ -371,9 +420,13 @@
 }
 
 
+/*
+ * optison returns evalcond-friendly statuses (true, false, error).
+ */
+
 /**/
 static int
-optison(char *s)
+optison(char *name, char *s)
 {
     int i;
 
@@ -382,12 +435,12 @@
     else
 	i = optlookup(s);
     if (!i) {
-	zerr("no such option: %s", s, 0);
-	return 0;
+	zwarnnamopt(name, "no such option: %s", s, 0);
+	return 2;
     } else if(i < 0)
-	return unset(-i);
+	return !unset(-i);
     else
-	return isset(i);
+	return !isset(i);
 }
 
 /**/
Index: Src/exec.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/exec.c,v
retrieving revision 1.71
diff -u -r1.71 exec.c
--- Src/exec.c	8 Sep 2004 08:24:41 -0000	1.71
+++ Src/exec.c	27 Sep 2004 10:56:13 -0000
@@ -3187,7 +3187,13 @@
 	tracingcond++;
     }
     cmdpush(CS_COND);
-    stat = !evalcond(state);
+    stat = evalcond(state, NULL);
+    /*
+     * 2 indicates a syntax error.  For compatibility, turn this
+     * into a shell error.
+     */
+    if (stat == 2)
+	errflag = 1;
     cmdpop();
     if (isset(XTRACE)) {
 	fprintf(xtrerr, " ]]\n");
Index: Src/utils.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/utils.c,v
retrieving revision 1.65
diff -u -r1.65 utils.c
--- Src/utils.c	17 Sep 2004 09:25:42 -0000	1.65
+++ Src/utils.c	27 Sep 2004 10:56:15 -0000
@@ -110,6 +110,22 @@
     zerrmsg(fmt, str, num);
 }
 
+/*
+ * zwarnnamopt is used in cases for code which is called both
+ * from a builtin (cmd non-NULL) and internally (cmd NULL).
+ * Is there a good reason zwarnnam doesn't do this?
+ */
+
+/**/
+mod_export void
+zwarnnamopt(const char *cmd, const char *fmt, const char *str, int num)
+{
+    if (cmd)
+	zwarnnam(cmd, fmt, str, num);
+    else
+	zwarn(fmt, str, num);
+}
+
 #ifdef __CYGWIN__
 /*
  * This works around an occasional problem with dllwrap on Cygwin, seen

-- 
Peter Stephenson <pws@csr.com>                  Software Engineer
CSR Ltd., Science Park, Milton Road,
Cambridge, CB4 0WH, UK                          Tel: +44 (0)1223 692070


**********************************************************************
This email and any files transmitted with it are confidential and
intended solely for the use of the individual or entity to whom they
are addressed. If you have received this email in error please notify
the system manager.

This footnote also confirms that this email message has been swept by
MIMEsweeper for the presence of computer viruses.

www.mimesweeper.com
**********************************************************************


^ permalink raw reply	[relevance 6%]

* Re: More POSIX developments
  2004-09-27 11:04  6% ` Peter Stephenson
@ 2004-10-02 21:23  5%   ` Bart Schaefer
  2004-10-04 10:23  4%     ` Peter Stephenson
  0 siblings, 1 reply; 200+ results
From: Bart Schaefer @ 2004-10-02 21:23 UTC (permalink / raw)
  To: zsh-workers

Finally got a chance to look at this.

On Mon, 27 Sep 2004, Peter Stephenson wrote:

> The following patch, which I won't commit until we've decided which way
> to go, tries to cover the bases by making test work (more) like POSIX
> while leaving [[ ... ]] the way it is.  The errors now return status 2
> from evalcond, but for backward compatibility [[ ... ]] turns them into
> shell errors.

I think this would be OK.

> I needed to add an extra warning function to choose between the cases
> where we have a builtin name and where the code is called internally as
> a condition.  Does anyone know if there's a reason zwarnnam handles the
> absence of a command name in a strange way?

I paged through a grep of all the calls to zwarnnam(), and there don't
seem to be any that intentionally get passed a NULL first argument, so it
probably is just defensive programming.

> In other words, could I remove zwarnnamopt and make zwarnnam behave like 
> that?

I think that'd be safe, but I wouldn't object to a second opinion.


^ permalink raw reply	[relevance 5%]

* Re: More POSIX developments
  2004-10-02 21:23  5%   ` Bart Schaefer
@ 2004-10-04 10:23  4%     ` Peter Stephenson
  2004-10-04 10:49  5%       ` Oliver Kiddle
  2004-10-25 16:05  5%       ` Bart Schaefer
  0 siblings, 2 replies; 200+ results
From: Peter Stephenson @ 2004-10-04 10:23 UTC (permalink / raw)
  To: zsh-workers

Bart Schaefer wrote:
> Finally got a chance to look at this.
> 
> On Mon, 27 Sep 2004, Peter Stephenson wrote:
> 
> > The following patch, which I won't commit until we've decided which way
> > to go, tries to cover the bases by making test work (more) like POSIX
> > while leaving [[ ... ]] the way it is.  The errors now return status 2
> > from evalcond, but for backward compatibility [[ ... ]] turns them into
> > shell errors.
> 
> I think this would be OK.

Yes, the more I think about it the less likely it is that someone using
"test" or "[" syntax wants anything other than standard-compliant
behaviour.

> > In other words, could I remove zwarnnamopt and make zwarnnam behave like 
> > that?
> 
> I think that'd be safe, but I wouldn't object to a second opinion.

I made the change and none of the tests failed.  I think it's neater to
do it like this and see if any problems turn up.

Before I commit the patch, here's some proposed documentation.

Index: Doc/Zsh/builtins.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Zsh/builtins.yo,v
retrieving revision 1.70
diff -u -r1.70 builtins.yo
--- Doc/Zsh/builtins.yo	30 Jun 2004 11:10:45 -0000	1.70
+++ Doc/Zsh/builtins.yo	4 Oct 2004 10:21:15 -0000
@@ -1124,6 +1124,11 @@
 item(tt([) [ var(arg) ... ] tt(]))(
 Like the system version of tt(test).  Added for compatibility;
 use conditional expressions instead (see noderef(Conditional Expressions)).
+The main differences are:  this command is not handled syntactically, so for
+example an empty variable expansion may cause an argument to be omitted;
+syntax errors cause status 2 to be returned instead of a shell error; and
+arithmetic operators expect integer arguments rather than arithemetic
+expressions.
 )
 findex(times)
 cindex(shell, timing)

-- 
Peter Stephenson <pws@csr.com>                  Software Engineer
CSR Ltd., Science Park, Milton Road,
Cambridge, CB4 0WH, UK                          Tel: +44 (0)1223 692070


**********************************************************************
This email and any files transmitted with it are confidential and
intended solely for the use of the individual or entity to whom they
are addressed. If you have received this email in error please notify
the system manager.

This footnote also confirms that this email message has been swept by
MIMEsweeper for the presence of computer viruses.

www.mimesweeper.com
**********************************************************************


^ permalink raw reply	[relevance 4%]

* Re: More POSIX developments
  2004-10-04 10:23  4%     ` Peter Stephenson
@ 2004-10-04 10:49  5%       ` Oliver Kiddle
  2004-10-25 16:05  5%       ` Bart Schaefer
  1 sibling, 0 replies; 200+ results
From: Oliver Kiddle @ 2004-10-04 10:49 UTC (permalink / raw)
  To: zsh-workers

Peter wrote:

> Before I commit the patch, here's some proposed documentation.
> 
>  item(tt([) [ var(arg) ... ] tt(]))(
>  Like the system version of tt(test).  Added for compatibility;
>  use conditional expressions instead (see noderef(Conditional Expressions)).
> +The main differences are:  this command is not handled syntactically, so for
> +example an empty variable expansion may cause an argument to be omitted;
> +syntax errors cause status 2 to be returned instead of a shell error; and
> +arithmetic operators expect integer arguments rather than arithemetic
> +expressions.

Reading that, it isn't clear whether the differences listed are relative
to "the system version of test" or to Conditional Expressions.

Oliver


^ permalink raw reply	[relevance 5%]

* Re: bug with for and time
  @ 2004-10-07 15:25  3%               ` Dan Nelson
  2004-10-08 13:14  0%                 ` Peter Stephenson
  0 siblings, 1 reply; 200+ results
From: Dan Nelson @ 2004-10-07 15:25 UTC (permalink / raw)
  To: Peter Stephenson; +Cc: zsh-workers

In the last episode (Oct 07), Peter Stephenson said:
> I can vaguely remember that the getrusage() fields which didn't
> correspond to times were dropped when we switched to autoconf, simply
> because it became hard to test for all the fields.  I didn't notice
> getrusage() disappearing entirely then, but it certainly must have at
> some point.

I did some mailinglist searches, and back in 1999, workers-2526 says
that getrusage was removed because it wasn't POSIX and the autoconf
test was too complex. It is now, though, and was in SUS as far back as
1997.  Unfortunately, only two struct members are defined:

        struct timeval ru_utime  User time used.
        struct timeval ru_stime  System time used.

Fortunately, the remaining members defined by AIX, FreeBSD, Linux,
Solaris, and Tru64 are identical.  Solaris doesn't fill in ru_ixrss or
ru_isrss (%X and %D), but they are in the struct.  Testing for each
member individually if you wanted to wouldn't be hard, anyway.  One
AC_CHECK_MEMBERS call with 14 arguments is all that's needed, plus the
appropriate #if defined checks around each resource in the TIMEFMT
expansion code.

-- 
	Dan Nelson
	dnelson@allantgroup.com


^ permalink raw reply	[relevance 3%]

* Re: bug with for and time
  2004-10-07 15:25  3%               ` Dan Nelson
@ 2004-10-08 13:14  0%                 ` Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2004-10-08 13:14 UTC (permalink / raw)
  To: zsh-workers

Dan Nelson wrote:
> I did some mailinglist searches, and back in 1999, workers-2526 says
> that getrusage was removed because it wasn't POSIX and the autoconf
> test was too complex.

There's another issue... we used to get the usage for a child by calling
wait3(), which can set a struct rusage.  (Modern systems have wait4,
which allows you to wait for a particular PID, but it looks like we
don't actually use that anyway.)  However, this isn't part of the latest
standards.  So the only standardised way of doing it is to call
getrusage and subtract all appropriate elements.  With some (maximum
value), you can't actually tell for sure whether it's applicable to the
last child or not.

Maybe we should prefer wait3(), which is widely available, and do the
best we can elsewhere, but it's not ideal.  Still, both wait3() and the
additional rusage elements came from BSD; maybe I can rely on either
both or neither being available and skip the case where we can't tie
usage to individual processes.

> One AC_CHECK_MEMBERS call with 14 arguments is all that's needed, plus the
> appropriate #if defined checks around each resource in the TIMEFMT
> expansion code.

This bit I can easily get working.

-- 
Peter Stephenson <pws@csr.com>                  Software Engineer
CSR Ltd., Science Park, Milton Road,
Cambridge, CB4 0WH, UK                          Tel: +44 (0)1223 692070


**********************************************************************
This email and any files transmitted with it are confidential and
intended solely for the use of the individual or entity to whom they
are addressed. If you have received this email in error please notify
the system manager.

This footnote also confirms that this email message has been swept by
MIMEsweeper for the presence of computer viruses.

www.mimesweeper.com
**********************************************************************


^ permalink raw reply	[relevance 0%]

* Pattern changes, part 2
@ 2004-10-18 11:47  2% Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2004-10-18 11:47 UTC (permalink / raw)
  To: Zsh hackers list

I did some more work on pattern matching over the weekend.  The main
idea is to make it easier to handle multibyte characters by using
the normal string representation whenever convenient.  All tests still
pass.

- The test string is now unmetafied for comparing against the pattern.
  Literal strings in the pattern are also unmetafied.  I've turned
  the METAINCs in the pattern matcher into CHARINCs where appropriate;
  this is currently a trivial increment but is a placeholder to say "go
  to next character".  (There is no change in places where the string
  remains metafied which will still need more thought.)  The new code
  should be significantly more efficient during pattern matching,
  since it doesn't have to test for Meta characters in many
  places, although I haven't benchmarked it.

- Character sets [...] are still metafied; we need the special
  characters to indicate ranges and Posix ctype names.

- Pure strings are still metafied.  (These are signalled by a special
  flag indicating the value stored is a string rather than the normal
  pattern programme.)  It became clear that changing this would be
  inefficient, particularly in globbing where we use the result of the
  pattern matcher to add to the (metafied) path buffer.  There are
  actually two cases:
  o We can spot immediately that the string doesn't have special
    characters.  This is the normal case and is handled fairly
    efficiently.
  o There are special characters around but nonetheless the string is a
    pure string.  There is one case where we need to handle this
    properly, which is when the string in question is ".." or ".", since
    those are never matched by globbing.  An example where this could
    occur would be a path segment (#i).. with extended globbing.  Here,
    we only find out we have a pure string after unmetafying into the
    pattern programme, so we need to metafy again.  This isn't so hot,
    but it's actually a rare corner case.

- The interface used by parameter substitutions has been tidied up.
  o The call patmatchlen() gets the length of the match, so that nothing
    outside pattern.c needs pointers into the test string.  This was
    necessary since the strings may now be reallocated, but is neater
    anyway.  (This is the metafied length, which is what the parameter
    code needs --- and this will probably continue, I don't thinks
    there's a case for unmetafying there.  There is some minor
    inefficiency in counting metafiable characters in the matched part
    of the trial string.)
  o The horrible global patoffset has disappeared.  Now the offset to
    be added to indices into parameters is passed as an argument.  I
    should have done it this way all along.

- Minor fix for numeric ranges: <num-> will now match any integer that
  is too large to represent in the internal integer type.  This has
  worked for <-> for some time, but it wasn't special-cased if there was a
  lower range.

I will commit this directly (with a ChangeLog entry, this time).

By the way, we really need a lot more tests which require the use of the
Meta character, and not just for pattern matching.  Adding this while
the character representation is in flux is probably not particularly
useful, however.

-- 
Peter Stephenson <pws@csr.com>                  Software Engineer
CSR Ltd., Science Park, Milton Road,
Cambridge, CB4 0WH, UK                          Tel: +44 (0)1223 692070


**********************************************************************
This email and any files transmitted with it are confidential and
intended solely for the use of the individual or entity to whom they
are addressed. If you have received this email in error please notify
the system manager.

This footnote also confirms that this email message has been swept by
MIMEsweeper for the presence of computer viruses.

www.mimesweeper.com
**********************************************************************


^ permalink raw reply	[relevance 2%]

* zsh/bash incompatibilities
@ 2004-10-25 13:06  4% Matthias B.
  2004-10-25 13:20  3% ` DervishD
  2004-10-25 15:14  0% ` Peter Stephenson
  0 siblings, 2 replies; 200+ results
From: Matthias B. @ 2004-10-25 13:06 UTC (permalink / raw)
  To: zsh-workers

[-- Attachment #1: Type: text/plain, Size: 700 bytes --]

I've encountered several things where zsh's behaviour (in sh-mode) differs
from that of bash (in sh-mode). 

The attached script demonstrates the differences. When /bin/sh is bash,
the output is

ab
\y
$


When /bin/sh is zsh, the output is

a
b
y
\44


I'm undecided about which \ treatment inside of $'..' I prefer, so I guess
looking to what POSIX says is best. Regarding zsh's refusal to interpret
octal escapes that don't start with 0, I find that very annoying and it's
certainly not what most people expect. There are scripts out there that
will fail with sh=zsh because of this. I think this should be changed
(regardless of what POSIX says).

MSB

-- 
Indecision is the key to flexibility.


[-- Attachment #2: bash_zsh_differences --]
[-- Type: text/plain, Size: 50 bytes --]

#!/bin/sh
echo $'a\
b'

echo $'\y'

echo -e '\44'

^ permalink raw reply	[relevance 4%]

* Re: zsh/bash incompatibilities
  2004-10-25 13:06  4% zsh/bash incompatibilities Matthias B.
@ 2004-10-25 13:20  3% ` DervishD
  2004-10-25 15:14  0% ` Peter Stephenson
  1 sibling, 0 replies; 200+ results
From: DervishD @ 2004-10-25 13:20 UTC (permalink / raw)
  To: Matthias B.; +Cc: zsh-workers

    Hi Matthias :)

 * Matthias B. <msbREMOVE-THIS@winterdrache.de> dixit:
> I'm undecided about which \ treatment inside of $'..'

    Mmm, AFAIK, POSIX doesn't specify $'...' quoting (at least SUSv3
doesn't do it? Moreover, $'...' quoting in bash is different (per
manual) from zsh $'...' quoting.

    In bash, escape sequences within $'...' are replaced as if they
were inside ANSI C code. Zsh processes anything inside $'...' as if
the builtin 'print' was interpreting that. These two behaviours are
different and are documented as such (see the info manual for bash
and for zsh). I'm not sure about which behaviour should work when
doing 'sh' emulation, since 'sh' shouldn't have such quoting.

    I don't have a position about the octal sequences, anyway, so I
won't give an opinion about it.

    Raúl Núñez de Arenas Coronado

-- 
Linux Registered User 88736
http://www.dervishd.net & http://www.pleyades.net/


^ permalink raw reply	[relevance 3%]

* Re: zsh/bash incompatibilities
  2004-10-25 13:06  4% zsh/bash incompatibilities Matthias B.
  2004-10-25 13:20  3% ` DervishD
@ 2004-10-25 15:14  0% ` Peter Stephenson
  1 sibling, 0 replies; 200+ results
From: Peter Stephenson @ 2004-10-25 15:14 UTC (permalink / raw)
  To: zsh-workers

"Matthias B." wrote:
> I'm undecided about which \ treatment inside of $'..' I prefer, so I guess
> looking to what POSIX says is best.

I've been looking for some standardized definition of this and can't
find one, offhand.   It doesn't seem to be in The Open Group Base
Specifications, issue 6, which is the latest standard I know of.  Does
anyone have a pointer?

-- 
Peter Stephenson <pws@csr.com>                  Software Engineer
CSR Ltd., Science Park, Milton Road,
Cambridge, CB4 0WH, UK                          Tel: +44 (0)1223 692070


**********************************************************************
This email and any files transmitted with it are confidential and
intended solely for the use of the individual or entity to whom they
are addressed. If you have received this email in error please notify
the system manager.

This footnote also confirms that this email message has been swept by
MIMEsweeper for the presence of computer viruses.

www.mimesweeper.com
**********************************************************************


^ permalink raw reply	[relevance 0%]

* Re: More POSIX developments
  2004-10-04 10:23  4%     ` Peter Stephenson
  2004-10-04 10:49  5%       ` Oliver Kiddle
@ 2004-10-25 16:05  5%       ` Bart Schaefer
  1 sibling, 0 replies; 200+ results
From: Bart Schaefer @ 2004-10-25 16:05 UTC (permalink / raw)
  To: Peter Stephenson; +Cc: zsh-workers

On Mon, 4 Oct 2004, Peter Stephenson wrote:

> Yes, the more I think about it the less likely it is that someone using 
> "test" or "[" syntax wants anything other than standard-compliant 
> behaviour.

Just to keep things entertaining, this discusson was just revived on the 
austin-group list, and Geoff Clare is arguing in favor of permitting the
extension ...


^ permalink raw reply	[relevance 5%]

* [vincent@vinc17.org: Bug#278368: zsh-beta: svn completions no longer work]
@ 2004-10-26 14:48  4% Clint Adams
  0 siblings, 0 replies; 200+ results
From: Clint Adams @ 2004-10-26 14:48 UTC (permalink / raw)
  To: zsh-workers; +Cc: 278368-forwarded

This problem seems to have sprouted up between 10/14 and 10/18.
Roughly.

----- Forwarded message from Vincent Lefevre <vincent@vinc17.org> -----

Package: zsh-beta
Version: 4.2.1-dev-1+20041022-1
Severity: normal

When I do a completion like "svn st [TAB]" in a working copy, I get
the following error message:

_arguments:comparguments:208: invalid argument: display

Removing the .zcompdump file and restarting zsh had no effect on this
problem.

Completions still work with zsh from the zsh package (/bin/zsh4).

Note: I have subversion version 1.0.9-2 (current unstable).

-- System Information:
Debian Release: 3.1
  APT prefers testing
  APT policy: (900, 'testing'), (200, 'unstable')
Architecture: powerpc (ppc)
Kernel: Linux 2.6.8
Locale: LANG=POSIX, LC_CTYPE=en_US.ISO8859-1

Versions of packages zsh-beta depends on:
ii  libc6                       2.3.2.ds1-18 GNU C Library: Shared libraries an
ii  libcap1                     1:1.10-14    support for getting/setting POSIX.
ii  libncurses5                 5.4-4        Shared libraries for terminal hand
ii  libpcre3                    4.5-1.1      Perl 5 Compatible Regular Expressi
ii  passwd                      1:4.0.3-30.2 Change and administer password and

-- no debconf information

----- End forwarded message -----


^ permalink raw reply	[relevance 4%]

* Re: SUGGESTION: kill -l could show numbers, too (+CLD vs CHLD)
  @ 2004-11-18 16:39  3%   ` Stephane Chazelas
  2004-11-18 17:22  3%     ` Peter Stephenson
  0 siblings, 1 reply; 200+ results
From: Stephane Chazelas @ 2004-11-18 16:39 UTC (permalink / raw)
  To: zsh-workers

On Thu, Nov 18, 2004 at 04:05:17PM +0000, Peter Stephenson wrote:
> Christian =?iso-8859-1?Q?H=F6ltje?= wrote:
> > I have a suggestion for the kill builtin:
> > 
> > It would be nice if when you did '-l' to show the list of signal
> > that it show the signal number.
> 
> Not quite as convenient, but try this function:
> 
> kill-l() {
>   for i in {1..$#signals}; do
>     print $((i-1))\) SIG$signals[$i]
>   done | pr -t5
> }
[...]

Or, to avoid "pr":

kill-l () {
        local -a s
        for i in {1..$#signals}
        do
                s[i]="$((i-1))) SIG$signals[$i]"
        done
        print -C5 $s
}

BTW, I noted some discrepancies on the result of kill -l between
various shells and /bin/kill on that Linux-i386:

bash    bin     csh     dash    ksh     pdksh   zsh     

ABRT    ABRT    ABRT    ABRT    IOT     ABRT    ABRT
        STKFLT  STKFLT  16      SIG16   STKFLT  STKFLT
CHLD    CHLD    CHLD    CHLD    CHLD    CHLD    CLD
IO      POLL    POLL    IO      POLL    IO      POLL
SYS     SYS     SYS     SYS     SYS     UNUSED  SYS


Why SIGCLD and not SIGCHLD for zsh?

SUSv3 (POSIX) seems to require SIGCHLD
http://www.opengroup.org/onlinepubs/009695399/basedefs/signal.h.html
http://www.opengroup.org/onlinepubs/009695399/utilities/trap.html

-- 
Stéphane


^ permalink raw reply	[relevance 3%]

* Re: SUGGESTION: kill -l could show numbers, too (+CLD vs CHLD)
  2004-11-18 16:39  3%   ` SUGGESTION: kill -l could show numbers, too (+CLD vs CHLD) Stephane Chazelas
@ 2004-11-18 17:22  3%     ` Peter Stephenson
  2004-11-19  9:59  3%       ` Peter Stephenson
  0 siblings, 1 reply; 200+ results
From: Peter Stephenson @ 2004-11-18 17:22 UTC (permalink / raw)
  To: zsh-workers

Stephane Chazelas wrote:
> Why SIGCLD and not SIGCHLD for zsh?

It's an artefact of this sort of thing in header files:

#define	SIGCLD		SIGCHLD	/* Same as SIGCHLD (System V).  */
#define	SIGCHLD		17	/* Child status has changed (POSIX).  */

We pick the first one, assuming that's to be preferred.

The following explicitly prefers SIGCHLD.  Any other multiple signals
can be handled similarly.  I'm not sure about SIGPOLL.

Maybe we should think about mapping alternatives so that both kill -CLD
and kill -CHLD work.

Index: Src/signames2.awk
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/signames2.awk,v
retrieving revision 1.3
diff -u -r1.3 signames2.awk
--- Src/signames2.awk	12 Mar 2004 09:59:24 -0000	1.3
+++ Src/signames2.awk	18 Nov 2004 17:15:22 -0000
@@ -12,6 +12,7 @@
     split(sigtail, tmp)
     signam = substr(tmp[1], 4, 20)
     signum = tmp[2]
+    if (signam == "CHLD" && sig[signum] == "CLD")  sig[signum] = ""
     if (sig[signum] == "") {
 	sig[signum] = signam
 	if (0 + max < 0 + signum && signum < 60)

-- 
Peter Stephenson <pws@csr.com>                  Software Engineer
CSR PLC, Churchill House, Cambridge Business Park, Cowley Road
Cambridge, CB4 0WZ, UK                          Tel: +44 (0)1223 692070


**********************************************************************
This email and any files transmitted with it are confidential and
intended solely for the use of the individual or entity to whom they
are addressed. If you have received this email in error please notify
the system manager.

This footnote also confirms that this email message has been swept by
MIMEsweeper for the presence of computer viruses.

www.mimesweeper.com
**********************************************************************


^ permalink raw reply	[relevance 3%]

* Re: SUGGESTION: kill -l could show numbers, too (+CLD vs CHLD)
  2004-11-18 17:22  3%     ` Peter Stephenson
@ 2004-11-19  9:59  3%       ` Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2004-11-19  9:59 UTC (permalink / raw)
  To: zsh-workers

Peter Stephenson wrote:
> The following explicitly prefers SIGCHLD.  Any other multiple signals
> can be handled similarly.  I'm not sure about SIGPOLL.

It looks like SIGPOLL is standardised, though from X/Open rather than
Posix, while SIGIO isn't (although it has a long history, too).  So I've
made it prefer SIGPOLL to SIGIO.  This doesn't actually change anything
on Linux.

I'm working on something to allow variants on input.  This is easy
enough for kill, the real killer is function-style traps.

-- 
Peter Stephenson <pws@csr.com>                  Software Engineer
CSR PLC, Churchill House, Cambridge Business Park, Cowley Road
Cambridge, CB4 0WZ, UK                          Tel: +44 (0)1223 692070


**********************************************************************
This email and any files transmitted with it are confidential and
intended solely for the use of the individual or entity to whom they
are addressed. If you have received this email in error please notify
the system manager.

This footnote also confirms that this email message has been swept by
MIMEsweeper for the presence of computer viruses.

www.mimesweeper.com
**********************************************************************


^ permalink raw reply	[relevance 3%]

* More POSIX shell standards stuff
@ 2004-11-22 16:00  4% Bart Schaefer
  0 siblings, 0 replies; 200+ results
From: Bart Schaefer @ 2004-11-22 16:00 UTC (permalink / raw)
  To: zsh-workers

The first one involves the -P option of "cd", and the second one has to do 
with the changes PWS made a couple months ago to the "test" builtin.  In 
the latter case, it looks like they're going to decide to bless zsh's 
original behavior, so we might want to consider backing out the change or 
making a setopt for it.



---------- Forwarded message ----------
Date: Mon, 22 Nov 2004 12:56:42 GMT
From: Andrew Josey <ajosey@opengroup.org>
To: austin-group-l@opengroup.org
Subject: Document [Austin-037:XCU:cd:cd relative paths  Proposed ] created
Resent-Date: 22 Nov 2004 12:58:13 -0000
Resent-From: austin-group-l@opengroup.org
Resent-To: austin-group-l@opengroup.org

This message is generated by The Open Group's web service 
because you are a subscriber to the austin-group-l list

A document has just been created by Andrew Josey.

Web:       Austin Group Interpretations
Title:     Austin-037:XCU:cd:cd relative paths  Proposed 
URL:       http://www.opengroup.org/austin/interps/protected/doc.tpl?gdid=6230

Further details:-

This addresses a number of defects identified with how the cd utility handles
symbolic links.



---------- Forwarded message ----------
Date: Mon, 22 Nov 2004 12:58:06 GMT
From: Andrew Josey <ajosey@opengroup.org>
To: austin-group-l@opengroup.org
Subject: Document [Austin-038:XCU:test/shell:arithmetic expansion  Proposed ]
    created
Resent-Date: 22 Nov 2004 12:59:36 -0000
Resent-From: austin-group-l@opengroup.org
Resent-To: austin-group-l@opengroup.org

This message is generated by The Open Group's web service 
because you are a subscriber to the austin-group-l list

A document has just been created by Andrew Josey.

Web:       Austin Group Interpretations
Title:     Austin-038:XCU:test/shell:arithmetic expansion  Proposed 
URL:       http://www.opengroup.org/austin/interps/protected/doc.tpl?gdid=6231

Further details:-

This addresses the question of what constitutes a number in XCU test and shell
arithmetic expansion.


^ permalink raw reply	[relevance 4%]

* [jjminar@fastmail.fm: Bug#266785: zsh: The elite2 prompt displays the tty incorrectly]
@ 2004-11-24  5:01  2% Clint Adams
  0 siblings, 0 replies; 200+ results
From: Clint Adams @ 2004-11-24  5:01 UTC (permalink / raw)
  To: zsh-workers; +Cc: 266785-forwarded, 266785-submitter

I'm gonna commit this instead, as I don't have a position on the "/" to
"|" change.


Index: Functions/Prompts/prompt_elite2_setup
===================================================================
RCS file: /cvsroot/zsh/zsh/Functions/Prompts/prompt_elite2_setup,v
retrieving revision 1.1.1.3
diff -u -r1.1.1.3 prompt_elite2_setup
--- Functions/Prompts/prompt_elite2_setup	18 Nov 1999 15:15:27 -0000	1.1.1.3
+++ Functions/Prompts/prompt_elite2_setup	24 Nov 2004 04:55:33 -0000
@@ -25,13 +25,12 @@
     : ${(P)varname=$(echo -n "\\0$code")}
   done
 
-  local tty=`tty|cut -d/ -f3`
   local text="%{$fg_no_bold[$text_col]%}"
   local parens="%{$fg_bold[$parens_col]%}"
   local punctuation_color="%{$fg_bold[grey]%}"
   local reset="%{$reset_color%}"
 
-  PS1="$punctuation_colorÚ$textÄ$parens($text%n$punctuation_color@$text%m$parens)$textÄ$parens($text%!$punctuation_color/$text$tty$parens)$textÄ$parens($text%D{%I:%M%P}$punctuation_color:$text%D{%m/%d/%y}$parens)$textÄ$punctuation_color-$reset$prompt_newline$punctuation_colorÀ$textÄ$parens($text%#$punctuation_color:$text%~$parens)$textÄ$punctuation_color-$reset " 
+  PS1="$punctuation_colorÚ$textÄ$parens($text%n$punctuation_color@$text%m$parens)$textÄ$parens($text%!$punctuation_color/$text%y$parens)$textÄ$parens($text%D{%I:%M%P}$punctuation_color:$text%D{%m/%d/%y}$parens)$textÄ$punctuation_color-$reset$prompt_newline$punctuation_colorÀ$textÄ$parens($text%#$punctuation_color:$text%~$parens)$textÄ$punctuation_color-$reset " 
 
   PS2="$parensÄ$textÄ$punctuation_color-$reset "
 

----- Forwarded message from Jan Minar <jjminar@fastmail.fm> -----

Date: Thu, 19 Aug 2004 07:32:37 +0200
From: Jan Minar <jjminar@fastmail.fm>
To: Debian Bug Tracking System <maintonly@bugs.debian.org>
Subject: Bug#266785: zsh: The elite2 prompt displays the tty incorrectly

Package: zsh
Version: 4.0.4-33
Severity: minor
Tags: patch

The elite2 prompt is incorrect -- the tty bit is OK for /dev/*, but it
fails with /dev/*/* (devpts, i.e. all X terminals a.o.).  I see no
difference between using cut(1) and %y.  I also changed the delimiter,
so it plays more nicely with the fact the dashes are now part of the tty
name.

The incorrect prompt:

	(jan@kontryhel)(31337/pts)(05:15am:08/19/04)-
                              ^^^
The guilty line:

	local tty=`tty|cut -d/ -f3`
                               ^^^ should read -f3-

The corrected prompt:

	(jan@kontryhel)(31337|pts/1)(05:15am:08/19/04)-
                             ^   ^^
The patch:

--- /usr/share/zsh/4.0.4/functions/Prompts/prompt_elite2_setup.ORIG	Sat Jun 12 02:35:53 2004
+++ /usr/share/zsh/4.0.4/functions/Prompts/prompt_elite2_setup	Sat Jun 12 02:38:52 2004
@@ -25,13 +25,13 @@
     : ${(P)varname=$(echo -n "\\0$code")}
   done
 
-  local tty=`tty|cut -d/ -f3`
+  local tty=%y
   local text="%{$fg_no_bold[$text_col]%}"
   local parens="%{$fg_bold[$parens_col]%}"
   local punctuation_color="%{$fg_bold[grey]%}"
   local reset="%{$reset_color%}"
 
-  PS1="$punctuation_colorÚ$textÄ$parens($text%n$punctuation_color@$text%m$parens)$textÄ$parens($text%!$punctuation_color/$text$tty$parens)$textÄ$parens($text%D{%I:%M%P}$punctuation_color:$text%D{%m/%d/%y}$parens)$textÄ$punctuation_color-$reset$prompt_newline$punctuation_colorŔ$textÄ$parens($text%#$punctuation_color:$text%~$parens)$textÄ$punctuation_color-$reset " 
+  PS1="$punctuation_colorÚ$textÄ$parens($text%n$punctuation_color@$text%m$parens)$textÄ$parens($text%!$punctuation_color|$text$tty$parens)$textÄ$parens($text%D{%I:%M%P}$punctuation_color:$text%D{%m/%d/%y}$parens)$textÄ$punctuation_color-$reset$prompt_newline$punctuation_colorŔ$textÄ$parens($text%#$punctuation_color:$text%~$parens)$textÄ$punctuation_color-$reset " 
 
   PS2="$parensÄ$textÄ$punctuation_color-$reset "
 

Cheers,
Jan.

-- System Information
Debian Release: 3.0
Architecture: i386
Kernel: Linux kontryhel 2.4.27-jan #2 Tue Aug 17 11:10:35 CEST 2004 i686
Locale: LANG=C, LC_CTYPE=cs_CZ.ISO-8859-2

Versions of packages zsh depends on:
ii  libc6                    2.2.5-11.5      GNU C Library: Shared libraries an
ii  libcap1                  1:1.10-12       support for getting/setting POSIX.
ii  libncurses5              5.2.20020112a-7 Shared libraries for terminal hand

-- 
   "To me, clowns aren't funny. In fact, they're kind of scary. I've wondered
 where this started and I think it goes back to the time I went to the circus,
			  and a clown killed my dad."



----- End forwarded message -----


^ permalink raw reply	[relevance 2%]

* and lists and suspended processes
@ 2005-01-03  4:15  4% Clint Adams
  0 siblings, 0 replies; 200+ results
From: Clint Adams @ 2005-01-03  4:15 UTC (permalink / raw)
  To: zsh-workers; +Cc: 288323-forwarded, 288323-submitter

Should zsh wait for a suspended process to exit before continuing along
the sublist?

----- Forwarded message from Branden Robinson <branden@debian.org> -----

Things like:

foo && bar && baz

are a basic POSIX shell feature, and Bash doesn't handle them right.

Try:

echo one && sleep 10 && echo two

While, in the sleep, background the command with CTRL-Z.

The 'echo two' will run immediately.  This is wrong.  The sleep has no exit
status yet because it has not exited, and the && and || connectives must
only be evaluated once the preceding command has exited.  Until then, the
command in question *has* no exit status.  The box with Schroedinger's Cat
in it has not yet been opened.

ash, dash, pdksh, and zsh are also buggy, but instead they never run "echo
two" at all.  It appears that of Debian's allegedly POSIX-compliant shells
have this problem, except for posh.

Here are some speculations/argument from #debian-devel as to what may be
going on:

08:42PM|<asuffield> Overfiend: what you have in bash is bloody broken
   conditionals. I can't see how to fix it, and I can't stand looking
   at bash any longer to figure it out
08:42PM|<asuffield> it passes WUNTRACED to wait() when job control is
   enabled, so that it can spot jobs which have been sent SIGSTOP
08:43PM|<asuffield> somewhere in the pipeline logic is a missing check
   for WIFSTOPPED on the status code, to see if the process is really
   dead yet or not
08:49PM|<asuffield> look, WSTOPCODE() and WEXITCODE() are the same
   macro. zsh is calling WEXITCODE() and treating it as the exit code,
   and this is *INCORRECT*, because WIFEXITED() is false and WIFSTOPPED()
   is true
08:51PM|<Keybuk> and zsh documents that it won't continue a pipeline if
   the process is terminated by an unhandled signal
08:52PM|<Keybuk> so zsh is being correct, just different to bash
08:52PM|<asuffield> zsh has incorrectly interpreted the result from wait()
   as if the process had been terminated
08:52PM|<asuffield> the process has been stopped. this is a different
   event


^ permalink raw reply	[relevance 4%]

* POSIX (austin-group) interpretations
@ 2005-01-06 16:05  3% Bart Schaefer
  0 siblings, 0 replies; 200+ results
From: Bart Schaefer @ 2005-01-06 16:05 UTC (permalink / raw)
  To: zsh-workers

Three from the latest batch that are either directly or potentially of 
interest to zsh development.  In particular, Austin-038 now permits the 
extended arithmetic behavior of the "test" builtin that was recently 
*removed* from zsh.


---------- Forwarded message ----------
Date: Thu, 6 Jan 2005 13:54:30 GMT
From: Andrew Josey <ajosey@opengroup.org>
To: austin-group-l@opengroup.org
Subject: Document [Austin-037:XCU:cd:cd relative paths  Approved] updated
Resent-Date: 6 Jan 2005 13:55:11 -0000
Resent-From: austin-group-l@opengroup.org
Resent-To: austin-group-l@opengroup.org

This message is generated by The Open Group's web service 
because you are a subscriber to the austin-group-l list

A document has just been updated by Andrew Josey.

Web:       Austin Group Interpretations
Title:     Austin-037:XCU:cd:cd relative paths  Approved
URL:       http://www.opengroup.org/austin/interps/doc.tpl?gdid=6230

Further details:-

This addresses a number of defects identified with how the cd utility handles
symbolic links.

----
To unsubscribe from this and/or other mailing lists administered by
The Open Group please visit http://www.opengroup.org/sophocles/unsubscribe.tpl
or send a request to webmaster@opengroup.org (please include the text
of this message). 



---------- Forwarded message ----------
Date: Thu, 6 Jan 2005 13:55:55 GMT
From: Andrew Josey <ajosey@opengroup.org>
To: austin-group-l@opengroup.org
Subject: Document [Austin-038:XCU:test/shell:arithmetic expansion  Approved]
    updated
Resent-Date: 6 Jan 2005 13:56:20 -0000
Resent-From: austin-group-l@opengroup.org
Resent-To: austin-group-l@opengroup.org

This message is generated by The Open Group's web service 
because you are a subscriber to the austin-group-l list

A document has just been updated by Andrew Josey.

Web:       Austin Group Interpretations
Title:     Austin-038:XCU:test/shell:arithmetic expansion  Approved
URL:       http://www.opengroup.org/austin/interps/doc.tpl?gdid=6231

Further details:-

This addresses the question of what constitutes a number in XCU test and shell
arithmetic expansion.

----
To unsubscribe from this and/or other mailing lists administered by
The Open Group please visit http://www.opengroup.org/sophocles/unsubscribe.tpl
or send a request to webmaster@opengroup.org (please include the text
of this message). 



---------- Forwarded message ----------
Date: Thu, 6 Jan 2005 13:59:13 GMT
From: Andrew Josey <ajosey@opengroup.org>
To: austin-group-l@opengroup.org
Subject: Document [Austin-041:XSH:strptime:leading zeroes  Approved] updated
Resent-Date: 6 Jan 2005 13:59:48 -0000
Resent-From: austin-group-l@opengroup.org
Resent-To: austin-group-l@opengroup.org

This message is generated by The Open Group's web service 
because you are a subscriber to the austin-group-l list

A document has just been updated by Andrew Josey.

Web:       Austin Group Interpretations
Title:     Austin-041:XSH:strptime:leading zeroes  Approved
URL:       http://www.opengroup.org/austin/interps/doc.tpl?gdid=6234

Further details:-

Leading zeroes permitted

----
To unsubscribe from this and/or other mailing lists administered by
The Open Group please visit http://www.opengroup.org/sophocles/unsubscribe.tpl
or send a request to webmaster@opengroup.org (please include the text
of this message). 


^ permalink raw reply	[relevance 3%]

* Re: Bug#289442: zsh: completions do not respect LC_COLLATE
       [not found]     <E1CnUVX-0005Di-00@nozomi>
@ 2005-01-09 15:35  0% ` Clint Adams
  0 siblings, 0 replies; 200+ results
From: Clint Adams @ 2005-01-09 15:35 UTC (permalink / raw)
  To: zsh-workers, Benjamin Hill (Mako), 289442-forwarded

> Thanks for maintaining zsh Clint!
> 
> AFAICT, results returned by tab completions to do not respect
> LC_COLLATE. Preferabley, zsh should sort completions according to
> whatever LC_COLLATE is set to at the time the completions are
> presented.
> 
> To reproduce the bug, go into a directory with upper case and
> lowercase filenames. Set LC_COLLATE to C or POSIX and you should see
> case sensative sorting for a command like ls and in the completions of
> the ls command. Now set LC_COLLATE to, for example, en_US.UTF-8 which
> sorts case insensatively. The behavior will be changed for ls but not
> for tab completions of ls from within zsh.
> 
> Invoking zsh with the LC_COLLATE set does not alter this behavior.

There were some concerns with locale-specific collation order in the
past with respect to surprise data loss when globbing.

http://www.zsh.org/mla/users/1998/msg00740.html

http://www.zsh.org/mla/workers/1999/msg02226.html

However, the real issue with your sorting problem seems to be the use of
a comparison function that ignores locale and behaves differently
depending on the setting of the NUMERIC_GLOB_SORT option.

I think we could change the character comparison at the end of
setbpcmp() to a strcoll(), or do setxfrm()'s at the beginning.


^ permalink raw reply	[relevance 0%]

* Re: Some groundwork for Unicode in Zle
  @ 2005-01-11 15:09  3% ` DervishD
  0 siblings, 0 replies; 200+ results
From: DervishD @ 2005-01-11 15:09 UTC (permalink / raw)
  To: Peter Stephenson; +Cc: Zsh hackers list

    Hi Peter :)

 * Peter Stephenson <pws@csr.com> dixit:
> I'm still not sure how to test whether a multibyte
> string is invalid rather than incomplete.

    AFAIK, mbrtowc returns -1 for invalid and -2 for incomplete (and
a 0 for the NULL widechar). Although the return value is 'size_t' is
nearly impossible for the function to return (size_t) -1 (or -2) for
a *correct* conversion in UTF-8. I think there is a safe bet to
assume that even an ill-formed operating system not honoring C99 will
have SIZE_MAX greater than 8 XDDDDD

    I haven't used myself the restartable set of multibyte functions,
so please take a look at SUS, POSIX or whatever to see the gory
details for this function. I've used SUS for reference.
 
    Raúl Núñez de Arenas Coronado

-- 
Linux Registered User 88736
http://www.dervishd.net & http://www.pleyades.net/
It's my PC and I'll cry if I want to...


^ permalink raw reply	[relevance 3%]

* POSIX conformance in coreutils
@ 2005-01-12  1:01  8% Vin Shelton
  2005-01-12  9:18  9% ` Stephane Chazelas
  2005-01-12 10:27  5% ` POSIX conformance in coreutils Peter Stephenson
  0 siblings, 2 replies; 200+ results
From: Vin Shelton @ 2005-01-12  1:01 UTC (permalink / raw)
  To: zsh-workers

GNU coreutils (at least versions 5.2.1 and 5.3.0) enforce POSIX
conformance, so they don't like 'tail -1', instead they require
'tail -n 1'.

This causes problems in E01options.tst:

  # Count the number of directories on the stack.  Don't care what they are.
  dircount() { dirs -v | tail -1 | awk '{ print $1 + 1}'; }

tail: `-1' option is obsolete; use `-n 1'
Try `tail --help' for more information.


It's easy enough to change the E01options.tst script to use 'test -n
1', but that's probably not the right thing to do.

We could also add

_POSIX2_VERSION=199209

to the test.  This would probably not break older versions of tail,
and would force new versions of tail to accept the old syntax.  Patch
attached:

Index: ChangeLog
===================================================================
RCS file: /cvsroot/zsh/zsh/ChangeLog,v
retrieving revision 1.2463
diff -a -u -U0 -r1.2463 ChangeLog
--- ChangeLog	10 Jan 2005 18:43:19 -0000	1.2463
+++ ChangeLog	12 Jan 2005 00:58:28 -0000
@@ -0,0 +1,5 @@
+2005-01-11  Vin Shelton  <acs@xemacs.org>
+
+	* Test/E01options.ztst: Add _POSIX2_VERSION=199209 to silence new
+	coreutils' versions of tail.
+
Index: Test/E01options.ztst
===================================================================
RCS file: /cvsroot/zsh/zsh/Test/E01options.ztst,v
retrieving revision 1.13
diff -a -u -r1.13 E01options.ztst
--- Test/E01options.ztst	9 Sep 2004 15:03:31 -0000	1.13
+++ Test/E01options.ztst	12 Jan 2005 00:58:32 -0000
@@ -116,7 +116,7 @@
 >scalar
   
   # Count the number of directories on the stack.  Don't care what they are.
-  dircount() { dirs -v | tail -1 | awk '{ print $1 + 1}'; }
+  dircount() { dirs -v | _POSIX2_VERSION=199209 tail -1 | awk '{ print $1 + 1}'; }
   unsetopt autopushd
   cd tmpcd
   dircount

HTH,
  Vin


^ permalink raw reply	[relevance 8%]

* Re: POSIX conformance in coreutils
  2005-01-12  1:01  8% POSIX conformance in coreutils Vin Shelton
@ 2005-01-12  9:18  9% ` Stephane Chazelas
  2005-01-12 16:12  9%   ` POSIX conformance in Solaris Danek Duvall
  2005-01-12 10:27  5% ` POSIX conformance in coreutils Peter Stephenson
  1 sibling, 1 reply; 200+ results
From: Stephane Chazelas @ 2005-01-12  9:18 UTC (permalink / raw)
  To: zsh-workers

On Tue, Jan 11, 2005 at 08:01:26PM -0500, Vin Shelton wrote:
> GNU coreutils (at least versions 5.2.1 and 5.3.0) enforce POSIX
> conformance, so they don't like 'tail -1', instead they require
> 'tail -n 1'.
> 
> This causes problems in E01options.tst:
> 
>   # Count the number of directories on the stack.  Don't care what they are.
>   dircount() { dirs -v | tail -1 | awk '{ print $1 + 1}'; }
> 
> tail: `-1' option is obsolete; use `-n 1'
> Try `tail --help' for more information.
[...]

YMMV.

~$ tail --version
tail (coreutils) 5.2.1
[...]
~$ tail -1 /dev/null
~$

tail -n 1, even if POSIX, is not portable. I think I've come
across a system where it was not supported recently (maybe
Solaris).


>   dircount() { dirs -v | tail -1 | awk '{ print $1 + 1}'; }

Maybe:

dircount() { print $((${${(z)${(f)"$(dirs -v)"}[-1]}[1]} + 1)); }

Or:

dircount() { dirs -v | awk '{n=$1}END{print n+1}'; }

-- 
Stéphane


^ permalink raw reply	[relevance 9%]

* Re: POSIX conformance in coreutils
  2005-01-12  1:01  8% POSIX conformance in coreutils Vin Shelton
  2005-01-12  9:18  9% ` Stephane Chazelas
@ 2005-01-12 10:27  5% ` Peter Stephenson
  2005-01-12 10:42  5%   ` Stephane Chazelas
  2005-01-12 14:19 10%   ` Vin Shelton
  1 sibling, 2 replies; 200+ results
From: Peter Stephenson @ 2005-01-12 10:27 UTC (permalink / raw)
  To: zsh-workers

Vin Shelton wrote:
> GNU coreutils (at least versions 5.2.1 and 5.3.0) enforce POSIX
> conformance, so they don't like 'tail -1', instead they require
> 'tail -n 1'.

Might the environment variable POSIXLY_CORRECT be set?  That seems to be
the effect here.  We could unset it explicitly if that's the case.

Index: Test/ztst.zsh
===================================================================
RCS file: /cvsroot/zsh/zsh/Test/ztst.zsh,v
retrieving revision 1.19
diff -u -r1.19 ztst.zsh
--- Test/ztst.zsh	26 Jul 2004 13:18:14 -0000	1.19
+++ Test/ztst.zsh	12 Jan 2005 10:26:43 -0000
@@ -28,6 +28,9 @@
 [[ -n $LC_COLLATE ]] && LC_COLLATE=C
 [[ -n $LANG ]] && LANG=C
 
+# POSIXLY_CORRECT can cause spurious error messages with "tail -<num>".
+unset POSIXLY_CORRECT
+
 # Set the module load path to correspond to this build of zsh.
 # This Modules directory should have been created by "make check".
 [[ -d Modules/zsh ]] && module_path=( $PWD/Modules )

-- 
Peter Stephenson <pws@csr.com>                  Software Engineer
CSR PLC, Churchill House, Cambridge Business Park, Cowley Road
Cambridge, CB4 0WZ, UK                          Tel: +44 (0)1223 692070


**********************************************************************
This email and any files transmitted with it are confidential and
intended solely for the use of the individual or entity to whom they
are addressed. If you have received this email in error please notify
the system manager.

This footnote also confirms that this email message has been swept by
MIMEsweeper for the presence of computer viruses.

www.mimesweeper.com
**********************************************************************


^ permalink raw reply	[relevance 5%]

* Re: POSIX conformance in coreutils
  2005-01-12 10:27  5% ` POSIX conformance in coreutils Peter Stephenson
@ 2005-01-12 10:42  5%   ` Stephane Chazelas
  2005-01-12 14:19 10%   ` Vin Shelton
  1 sibling, 0 replies; 200+ results
From: Stephane Chazelas @ 2005-01-12 10:42 UTC (permalink / raw)
  To: zsh-workers

On Wed, Jan 12, 2005 at 10:27:01AM +0000, Peter Stephenson wrote:
> Vin Shelton wrote:
> > GNU coreutils (at least versions 5.2.1 and 5.3.0) enforce POSIX
> > conformance, so they don't like 'tail -1', instead they require
> > 'tail -n 1'.
> 
> Might the environment variable POSIXLY_CORRECT be set?  That seems to be
> the effect here.  We could unset it explicitly if that's the case.
[...]

As Vin said, it's more about the _POSIX2_VERSION env variable and
the default value (defined at compile time of it).

_POSIX2_VERSION=199209 tail -1

should be OK, whatever the value of POSIXLY_CORRECT for
coreutils 5.2.1 at least.

(unset POSIXLY_CORRECT; _POSIX2_VERSION=200112 tail -1)
tail: `-1' option is obsolete; use `-n 1'
Try `tail --help' for more information.


But I seem to remember there was also a warning message in some
other version, and it may not have been triggered by the same
envvar values... sigh.

-- 
Stéphane


^ permalink raw reply	[relevance 5%]

* Re: POSIX conformance in coreutils
  2005-01-12 10:27  5% ` POSIX conformance in coreutils Peter Stephenson
  2005-01-12 10:42  5%   ` Stephane Chazelas
@ 2005-01-12 14:19 10%   ` Vin Shelton
  2005-01-12 15:58  9%     ` Peter Stephenson
  2005-01-12 16:18 11%     ` Bart Schaefer
  1 sibling, 2 replies; 200+ results
From: Vin Shelton @ 2005-01-12 14:19 UTC (permalink / raw)
  To: Peter Stephenson; +Cc: zsh-workers

Peter Stephenson <pws@csr.com> writes:

> Vin Shelton wrote:
>> GNU coreutils (at least versions 5.2.1 and 5.3.0) enforce POSIX
>> conformance, so they don't like 'tail -1', instead they require
>> 'tail -n 1'.
>
> Might the environment variable POSIXLY_CORRECT be set?  That seems to be
> the effect here.  We could unset it explicitly if that's the case.
>
> Index: Test/ztst.zsh
> ===================================================================
> RCS file: /cvsroot/zsh/zsh/Test/ztst.zsh,v
> retrieving revision 1.19
> diff -u -r1.19 ztst.zsh
> --- Test/ztst.zsh	26 Jul 2004 13:18:14 -0000	1.19
> +++ Test/ztst.zsh	12 Jan 2005 10:26:43 -0000
> @@ -28,6 +28,9 @@
>  [[ -n $LC_COLLATE ]] && LC_COLLATE=C
>  [[ -n $LANG ]] && LANG=C
>  
> +# POSIXLY_CORRECT can cause spurious error messages with "tail -<num>".
> +unset POSIXLY_CORRECT
> +
>  # Set the module load path to correspond to this build of zsh.
>  # This Modules directory should have been created by "make check".
>  [[ -d Modules/zsh ]] && module_path=( $PWD/Modules )
>

Hi Peter,

I checked and I do not have POSIXLY_CORRECT set.  Here's what the
'Standards conformance' section of the coreutils info says:

  In a few cases, the GNU utilities' default behavior is incompatible
  with the POSIX standard.  To suppress these incompatibilities, define
  the `POSIXLY_CORRECT' environment variable.  Unless you are checking
  for POSIX conformance, you probably do not need to define
  `POSIXLY_CORRECT'.

  Newer versions of POSIX are occasionally incompatible with older
  versions.  For example, older versions of POSIX required the command
  `sort +1' to sort based on the second and succeeding fields in each
  input line, but starting with POSIX 1003.1-2001 the same command is
  required to sort the file named `+1', and you must instead use the
  command `sort -k 2' to get the field-based sort.

  The GNU utilities normally conform to the version of POSIX that is
  standard for your system.  To cause them to conform to a different
  version of POSIX, define the `_POSIX2_VERSION' environment variable to
  a value of the form YYYYMM specifying the year and month the standard
  was adopted.  Two values are currently supported for `_POSIX2_VERSION':
  `199209' stands for POSIX 1003.2-1992, and `200112' stands for POSIX
  1003.1-2001.  For example, if you are running older software that
  assumes an older version of POSIX and uses `sort +1', `head -10', or
  `tail +10', you can work around the compatibility problems by setting
  `_POSIX2_VERSION=199209' in your environment.

This sentence: "The GNU utilities normally conform to the version of
POSIX that is standard for your system" seems to indicate that some
kind of inference is going on.

I don't have a strong opinion about how we fix this.  Either one of
Stephane's proposed solutions works just as well.

  - Vin


^ permalink raw reply	[relevance 10%]

* Re: POSIX conformance in coreutils
  2005-01-12 14:19 10%   ` Vin Shelton
@ 2005-01-12 15:58  9%     ` Peter Stephenson
  2005-02-23 16:36  5%       ` Oliver Kiddle
  2005-01-12 16:18 11%     ` Bart Schaefer
  1 sibling, 1 reply; 200+ results
From: Peter Stephenson @ 2005-01-12 15:58 UTC (permalink / raw)
  To: zsh-workers

Vin Shelton wrote:
> I checked and I do not have POSIXLY_CORRECT set.  Here's what the
> 'Standards conformance' section of the coreutils info says:

It doesn't look like we can expect much sense, then.

Here is a more heavyweight change.

Index: Test/ztst.zsh
===================================================================
RCS file: /cvsroot/zsh/zsh/Test/ztst.zsh,v
retrieving revision 1.20
diff -u -r1.20 ztst.zsh
--- Test/ztst.zsh	12 Jan 2005 10:32:20 -0000	1.20
+++ Test/ztst.zsh	12 Jan 2005 15:56:50 -0000
@@ -28,9 +28,6 @@
 [[ -n $LC_COLLATE ]] && LC_COLLATE=C
 [[ -n $LANG ]] && LANG=C
 
-# POSIXLY_CORRECT can cause spurious error messages with "tail -<num>".
-unset POSIXLY_CORRECT
-
 # Set the module load path to correspond to this build of zsh.
 # This Modules directory should have been created by "make check".
 [[ -d Modules/zsh ]] && module_path=( $PWD/Modules )
@@ -60,6 +57,33 @@
 
 integer ZTST_testfailed
 
+# This is POSIX nonsense.  Because of the vague feeling someone, somewhere
+# may one day need to examine the arguments of "tail" using a standard
+# option parser, every Unix user in the world is expected to switch
+# to using "tail -n NUM" instead of "tail -NUM".  Older versions of
+# tail don't support this.
+tail() {
+  emulate -L zsh
+
+  if [[ -z $TAIL_SUPPORTS_MINUS_N ]]; then
+    local test
+    test=$(echo "foo\nbar" | command tail -n 1 2>/dev/null)
+    if [[ $test = bar ]]; then
+      TAIL_SUPPORTS_MINUS_N=1
+    else
+      TAIL_SUPPORTS_MINUS_N=0
+    fi
+  fi
+
+  integer argi=${argv[(i)-<->]}
+
+  if [[ $argi -le $# && $TAIL_SUPPORTS_MINUS_N = 1 ]]; then
+    argv[$argi]=(-n ${argv[$argi][2,-1]})
+  fi
+
+  command tail "$argv[@]"
+}
+
 # The source directory is not necessarily the current directory,
 # but if $0 doesn't contain a `/' assume it is.
 if [[ $0 = */* ]]; then


-- 
Peter Stephenson <pws@csr.com>                  Software Engineer
CSR PLC, Churchill House, Cambridge Business Park, Cowley Road
Cambridge, CB4 0WZ, UK                          Tel: +44 (0)1223 692070


**********************************************************************
This email and any files transmitted with it are confidential and
intended solely for the use of the individual or entity to whom they
are addressed. If you have received this email in error please notify
the system manager.

This footnote also confirms that this email message has been swept by
MIMEsweeper for the presence of computer viruses.

www.mimesweeper.com
**********************************************************************


^ permalink raw reply	[relevance 9%]

* Re: POSIX conformance in Solaris
  2005-01-12  9:18  9% ` Stephane Chazelas
@ 2005-01-12 16:12  9%   ` Danek Duvall
  0 siblings, 0 replies; 200+ results
From: Danek Duvall @ 2005-01-12 16:12 UTC (permalink / raw)
  To: zsh-workers

On Wed, Jan 12, 2005 at 09:18:00AM +0000, Stephane Chazelas wrote:

> tail -n 1, even if POSIX, is not portable. I think I've come
> across a system where it was not supported recently (maybe
> Solaris).

Very possible.  When POSIX introduces an interface that would break
compatibility with already released Solaris commands, the functionality
gets stuck in /usr/xpg?.  So in this case /usr/bin/tail doesn't require (or
even support) -n, while /usr/xpg4/bin/tail supports (but doesn't require)
it.

Danek


^ permalink raw reply	[relevance 9%]

* Re: POSIX conformance in coreutils
  2005-01-12 14:19 10%   ` Vin Shelton
  2005-01-12 15:58  9%     ` Peter Stephenson
@ 2005-01-12 16:18 11%     ` Bart Schaefer
  1 sibling, 0 replies; 200+ results
From: Bart Schaefer @ 2005-01-12 16:18 UTC (permalink / raw)
  To: zsh-workers

On Jan 12,  9:19am, Vin Shelton wrote:
} Subject: Re: POSIX conformance in coreutils
}
} 'Standards conformance' section of the coreutils info says:
} 
}   Newer versions of POSIX are occasionally incompatible with older
}   versions.  For example, older versions of POSIX required the command
}   `sort +1' to sort based on the second and succeeding fields in each
}   input line, but starting with POSIX 1003.1-2001 the same command is
}   required to sort the file named `+1', and you must instead use the
}   command `sort -k 2' to get the field-based sort.

This is, by the way, only the GNU coreutils maintainer's interpretation
of the POSIX requirements; there was quite a lengthy argument about this
on the austin-group mailing list back in October 2004 or so, though I
don't recall whether an "official" resolution was ever approved.  At the
least there was not an agreement that this behavior really is required,
so far as I could tell.


^ permalink raw reply	[relevance 11%]

* separate module-linking patch for 4.2.2
@ 2005-01-12 19:52  1% Clint Adams
  0 siblings, 0 replies; 200+ results
From: Clint Adams @ 2005-01-12 19:52 UTC (permalink / raw)
  To: zsh-workers

Unless I've accidentally deleted a hunk, this is the current patch I'm
using to link zsh/cap and zsh/pcre with different library sets than the
rest of the modules.  It is a suboptimal solution.

--- zsh-4.2.2.orig/aclocal.m4
+++ zsh-4.2.2/aclocal.m4
@@ -1,59 +1,5 @@
-# Local additions to Autoconf macros.
-# Copyright (C) 1992, 1994 Free Software Foundation, Inc.
-# Francois Pinard <pinard@iro.umontreal.ca>, 1992.
-
-# @defmac fp_PROG_CC_STDC
-# @maindex PROG_CC_STDC
-# @ovindex CC
-# If the C compiler in not in ANSI C mode by default, try to add an option
-# to output variable @code{CC} to make it so.  This macro tries various
-# options that select ANSI C on some system or another.  It considers the
-# compiler to be in ANSI C mode if it defines @code{__STDC__} to 1 and
-# handles function prototypes correctly.
-# 
-# If you use this macro, you should check after calling it whether the C
-# compiler has been set to accept ANSI C; if not, the shell variable
-# @code{fp_cv_prog_cc_stdc} is set to @samp{no}.  If you wrote your source
-# code in ANSI C, you can make an un-ANSIfied copy of it by using the
-# program @code{ansi2knr}, which comes with Ghostscript.
-# @end defmac
-
-define(fp_PROG_CC_STDC,
-[AC_CACHE_CHECK(for ${CC-cc} option to accept ANSI C,
-fp_cv_prog_cc_stdc,
-[fp_cv_prog_cc_stdc=no
-ac_save_CFLAGS="$CFLAGS"
-# Don't try gcc -ansi; that turns off useful extensions and
-# breaks some systems' header files.
-# AIX			-qlanglvl=ansi
-# Ultrix and OSF/1	-std1
-# HP-UX			-Ae  or  -Aa -D_HPUX_SOURCE
-# SVR4			-Xc
-#  For HP-UX, we try -Ae first; this turns on ANSI but also extensions,
-#  as well as defining _HPUX_SOURCE, and we can then use long long.
-#  We keep the old version for backward compatibility.
-for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" -Xc
-do
-  CFLAGS="$ac_save_CFLAGS $ac_arg"
-  AC_TRY_COMPILE(
-[#ifndef __STDC__
-choke me
-#endif	
-], [int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};],
-[fp_cv_prog_cc_stdc="$ac_arg"; break])
-done
-CFLAGS="$ac_save_CFLAGS"
-])
-case "x$fp_cv_prog_cc_stdc" in
-  x|xno) ;;
-  *) CC="$CC $fp_cv_prog_cc_stdc" ;;
-esac
-])
-
-AC_DEFUN(AC_PROG_LN,
-[AC_MSG_CHECKING(whether ln works)
+AC_DEFUN([AC_PROG_LN],
+[AC_MSG_CHECKING([whether ln works])
 AC_CACHE_VAL(ac_cv_prog_LN,
 [rm -f conftestdata conftestlink
 echo > conftestdata
@@ -74,4 +20,67 @@
 AC_SUBST(LN)dnl
 ])
 
+# Check to see how 'make' treats includes.	-*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 2
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+	@echo done
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# We grep out `Entering directory' and `Leaving directory'
+# messages which can occur if `w' ends up in MAKEFLAGS.
+# In particular we don't look at `^make:' because GNU make might
+# be invoked under some other name (usually "gmake"), in which
+# case it prints its new name instead of `make'.
+if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
+   am__include=include
+   am__quote=
+   _am_result=GNU
+fi
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
+      am__include=.include
+      am__quote="\""
+      _am_result=BSD
+   fi
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+
 builtin(include, aczsh.m4)
--- zsh-4.2.2.orig/configure.ac
+++ zsh-4.2.2/configure.ac
@@ -310,16 +310,6 @@
 [AC_DEFINE(MAX_FUNCTION_DEPTH, 4096)]
 )
 
-dnl Do you want to look for pcre support?
-AC_ARG_ENABLE(pcre,
-AC_HELP_STRING([--enable-pcre],
-[enable the search for the pcre library (may create run-time library dependencies)]))
-
-dnl Do you want to look for capability support?
-AC_ARG_ENABLE(cap,
-AC_HELP_STRING([--enable-cap],
-[enable the search for POSIX capabilities (may require additional headers to be added by hand)]))
-
 dnl ------------------
 dnl CHECK THE COMPILER
 dnl ------------------
@@ -419,7 +409,6 @@
   darwin*) CPP="$CPP -traditional-cpp" ;;
 esac
 
-fp_PROG_CC_STDC
 AC_MSG_CHECKING([whether to use prototypes])
 if test ."$ansi2knr" = .yes || test ."$ansi2knr" = .no; then
   msg="(overridden) "
@@ -511,24 +500,12 @@
 AC_HEADER_STAT
 AC_HEADER_SYS_WAIT
 
-oldcflags="$CFLAGS"
-if test x$enable_pcre = xyes; then
-AC_CHECK_PROG([PCRECONF], pcre-config, pcre-config)
-dnl Typically (meaning on this single RedHat 9 box in front of me)
-dnl pcre-config --cflags produces a -I output which needs to go into
-dnl CPPFLAGS else configure's preprocessor tests don't pick it up,
-dnl producing a warning.
-if test "x$ac_cv_prog_PCRECONF" = xpcre-config; then
-  CPPFLAGS="$CPPFLAGS `pcre-config --cflags`"
-fi
-fi
-
 AC_CHECK_HEADERS(sys/time.h sys/times.h sys/select.h termcap.h termio.h \
 		 termios.h sys/param.h sys/filio.h string.h memory.h \
 		 limits.h fcntl.h libc.h sys/utsname.h sys/resource.h \
 		 locale.h errno.h stdio.h stdlib.h unistd.h sys/capability.h \
 		 utmp.h utmpx.h sys/types.h pwd.h grp.h poll.h sys/mman.h \
-		 netinet/in_systm.h pcre.h langinfo.h wchar.h stddef.h \
+		 netinet/in_systm.h langinfo.h wchar.h stddef.h \
 		 sys/stropts.h)
 if test $dynamic = yes; then
   AC_CHECK_HEADERS(dlfcn.h)
@@ -617,15 +594,15 @@
 AC_ARG_WITH(curses-terminfo,
 [  --with-curses-terminfo     use terminfo support from curses library],
 [if test x$withval = xyes; then
-  termcap_curses_order="tinfo curses ncurses termcap"
+  termcap_curses_order="curses ncurses termcap"
   AC_SEARCH_LIBS(tigetstr, [$termcap_curses_order])
 else
-  termcap_curses_order="tinfo termcap curses ncurses"
+  termcap_curses_order="termcap curses ncurses"
 fi],
 [case "$host_os" in
   hpux10.*|hpux11.*|solaris*)
       termcap_curses_order="Hcurses curses ncurses termcap" ;;
-  *)             termcap_curses_order="tinfo termcap curses ncurses" ;;
+  *)             termcap_curses_order="termcap curses ncurses" ;;
 esac])dnl
 
 AH_TEMPLATE([HAVE_BOOLCODES],
@@ -721,19 +698,10 @@
   AC_CHECK_LIB(dl, dlopen)
 fi
 
-if test x$enable_cap = xyes; then
-  AC_CHECK_LIB(cap, cap_get_proc)
-fi
-
 AC_CHECK_LIB(socket, socket)
 
 AC_CHECK_LIB(iconv, iconv)
 
-if test x$enable_pcre = xyes; then
-dnl pcre-config should probably be employed here
-AC_SEARCH_LIBS(pcre_compile, pcre)
-fi
-
 dnl ---------------------
 dnl CHECK TERMCAP LIBRARY
 dnl ---------------------
@@ -1051,7 +1019,6 @@
 	       brk sbrk \
 	       pathconf sysconf \
 	       tgetent tigetflag tigetnum tigetstr setupterm \
-	       pcre_compile pcre_study pcre_exec \
 	       nl_langinfo \
 	       erand48 open_memstream \
 	       wctomb iconv \
@@ -1059,10 +1026,6 @@
 	       htons ntohs)
 AC_FUNC_STRCOLL
 
-if test x$enable_cap = xyes; then
-  AC_CHECK_FUNCS(cap_get_proc)
-fi
-
 dnl  Check if tgetent accepts NULL (and will allocate its own termcap buffer)
 dnl  Some termcaps reportedly accept a zero buffer, but then dump core
 dnl  in tgetstr().
@@ -2454,10 +2417,14 @@
 AC_SUBST_FILE(DEFS_MK)dnl
 AC_SUBST_FILE(VERSION_MK)dnl
 
+AM_MAKE_INCLUDE
+
 AC_CONFIG_FILES(Config/defs.mk Makefile Doc/Makefile Etc/Makefile \
-Src/Makefile Test/Makefile)
+Src/Makefile Test/Makefile Src/mkmakemod.sh.in)
 AC_CONFIG_COMMANDS([config.modules], [. ./config.modules.sh])
 AC_CONFIG_COMMANDS([stamp-h], [echo >stamp-h])
+AC_CONFIG_COMMANDS([Src/mkmakemod.sh],
+		   [sed "s/_@_/@/g" Src/mkmakemod.sh.in >Src/mkmakemod.sh])
 
 AC_OUTPUT
 
@@ -2498,4 +2465,3 @@
 echo "See config.modules for installed modules and functions.
 "
 
-
--- zsh-4.2.2.orig/Src/Makefile.in
+++ zsh-4.2.2/Src/Makefile.in
@@ -109,17 +109,24 @@
 
 @CONFIG_MK@
 
-Makemod prep: $(CONFIG_INCS) $(dir_top)/config.modules
+Makemod prep: $(CONFIG_INCS) $(dir_top)/config.modules mkmakemod.sh
 	@case $(sdir_top) in \
 	    /*) top_srcdir=$(sdir_top) ;; \
 	    *) top_srcdir=$(subdir)/$(sdir_top) ;; \
 	esac; \
 	export top_srcdir; \
 	echo 'cd $(dir_top) && $(SHELL)' \
-	    '$$top_srcdir/$(subdir)/mkmakemod.sh $(subdir) Makemod'; \
+	    '$(subdir)/mkmakemod.sh $(subdir) Makemod'; \
 	cd $(dir_top) && \
-	    $(SHELL) $$top_srcdir/$(subdir)/mkmakemod.sh $(subdir) Makemod
+	    $(SHELL) $(subdir)/mkmakemod.sh $(subdir) Makemod
 	@$(MAKE) -f Makemod $(MAKEDEFS) prep || rm -f Makemod
+
+mkmakemod.sh: $(dir_top)/config.status mkmakemod.sh.in
+	$(dir_top)/../config.status
+
+mkmakemod.sh.in: mkmakemod.sh.in.in
+	$(dir_top)/../config.status
+
 .PHONY: prep
 
 FORCE:
@@ -191,6 +198,7 @@
 clean-here:
 	rm -f modules.stamp zsh$(EXEEXT)
 	rm -f libzsh-*.$(DL_EXT)
+	rm -f mkmakemod.sh.in mkmakemod.sh
 .PHONY: clean-here
 
 distclean-here:
--- zsh-4.2.2.orig/Src/Makemod.in.in
+++ zsh-4.2.2/Src/Makemod.in.in
@@ -111,7 +111,7 @@
 	for subdir in $$subdirs; do \
 	    dir=$(subdir)/$$subdir; \
 	    test -d $$dir || mkdir $$dir; \
-	    $(SHELL) $$top_srcdir/Src/mkmakemod.sh $$dir Makefile || exit 1; \
+	    $(SHELL) Src/mkmakemod.sh $$dir Makefile || exit 1; \
 	    ( cd $$dir && $(MAKE) $(MAKEDEFS) $@ ) || exit 1; \
 	done
 .PHONY: prep
@@ -149,7 +149,8 @@
 .PHONY: mostlyclean-here
 
 clean-here:
-	rm -f *.o.c *.syms *.pro *.epro *.mdh *.mdhi *.mdhs *.mdh.tmp
+	rm -f *.o.c *.syms *.pro *.epro *.mdh *.mdhi *.mdhs *.mdh.tmp \
+	*.configure *.ach config.cache config.status config.log *.rules
 .PHONY: clean-here
 
 distclean-here:
@@ -173,11 +174,11 @@
 	esac; \
 	export top_srcdir; \
 	echo 'cd $(dir_top) && $(SHELL)' \
-	    '$$top_srcdir/Src/mkmakemod.sh -m $(subdir) $(makefile)'; \
+	    'Src/mkmakemod.sh -m $(subdir) $(makefile)'; \
 	cd $(dir_top) && \
-	    $(SHELL) $$top_srcdir/Src/mkmakemod.sh -m $(subdir) $(makefile)
+	    $(SHELL) Src/mkmakemod.sh -m $(subdir) $(makefile)
 
-$(makefile).in: $(sdir_src)/mkmakemod.sh $(sdir_src)/Makemod.in.in $(MDDS) \
+$(makefile).in: $(dir_top)/Src/mkmakemod.sh $(sdir_src)/Makemod.in.in $(MDDS) \
 	$(dir_top)/config.modules
 	@case $(sdir_top) in \
 	    /*) top_srcdir=$(sdir_top) ;; \
@@ -185,7 +186,6 @@
 	esac; \
 	export top_srcdir; \
 	echo 'cd $(dir_top) && $(SHELL)' \
-	    '$$top_srcdir/Src/mkmakemod.sh -i $(subdir) $(makefile)'; \
+	    'Src/mkmakemod.sh -i $(subdir) $(makefile)'; \
 	cd $(dir_top) && \
-	    $(SHELL) $$top_srcdir/Src/mkmakemod.sh -i $(subdir) $(makefile)
-
+	    $(SHELL) Src/mkmakemod.sh -i $(subdir) $(makefile)
--- zsh-4.2.2.orig/Src/Modules/.cvsignore
+++ zsh-4.2.2/Src/Modules/.cvsignore
@@ -15,3 +15,4 @@
 *.swp
 errnames.c errcount.h
 *.dll
+*.rules
--- zsh-4.2.2.orig/Src/Modules/cap.mdd
+++ zsh-4.2.2/Src/Modules/cap.mdd
@@ -5,3 +5,5 @@
 autobins="cap getcap setcap"
 
 objects="cap.o"
+
+autoconf=yes
--- zsh-4.2.2.orig/Src/Modules/cap.c
+++ zsh-4.2.2/Src/Modules/cap.c
@@ -29,6 +29,7 @@
 
 #include "cap.mdh"
 #include "cap.pro"
+#include "cap.ach"
 
 #ifdef HAVE_CAP_GET_PROC
 
--- zsh-4.2.2.orig/Src/Modules/pcre.mdd
+++ zsh-4.2.2/Src/Modules/pcre.mdd
@@ -1,7 +1,9 @@
 name=zsh/pcre
-link=`if test x$enable_pcre = xyes; then echo dynamic; else echo no; fi`
+link=dynamic
 load=no
 
 autobins="pcre_compile pcre_study pcre_match"
 
 objects="pcre.o"
+
+autoconf=yes
--- zsh-4.2.2.orig/Src/Modules/pcre.c
+++ zsh-4.2.2/Src/Modules/pcre.c
@@ -30,6 +30,7 @@
 
 #include "pcre.mdh"
 #include "pcre.pro"
+#include "pcre.ach"
 
 #define CPCRE_PLAIN 0
 
--- zsh-4.2.2.orig/Src/mkmakemod.sh.in.in
+++ zsh-4.2.2/Src/mkmakemod.sh.in.in
@@ -0,0 +1,494 @@
+#!/bin/sh
+#
+# mkmakemod.sh: generate Makefile.in files for module building
+#
+# Options:
+#   -m = file is already generated; only build the second stage
+#   -i = do not build second stage
+#
+# Args:
+#   $1 = subdirectory to look in, relative to $top_srcdir
+#   $2 = final output filename, within the $1 directory
+#
+# This script must be run from the top-level build directory, and $top_srcdir
+# must be set correctly in the environment.
+#
+# This looks in $1, and uses all the *.mdd files there.  Each .mdd file
+# defines one module.  The .mdd file is actually a shell script, which will
+# be sourced.  It may define the following shell variables:
+#
+#   name            name of this module
+#   moddeps         modules on which this module depends (default none)
+#   nozshdep        non-empty indicates no dependence on the `zsh/main' pseudo-module
+#   alwayslink      if non-empty, always link the module into the executable
+#   autobins        builtins defined by the module, for autoloading
+#   autoinfixconds  infix condition codes defined by the module, for
+#                   autoloading (without the leading `-')
+#   autoprefixconds like autoinfixconds, but for prefix condition codes
+#   autoparams      parameters defined by the module, for autoloading
+#   automathfuncs   math functions defined by the module, for autoloading
+#   objects         .o files making up this module (*must* be defined)
+#   proto           .syms files for this module (default generated from $objects)
+#   headers         extra headers for this module (default none)
+#   hdrdeps         extra headers on which the .mdh depends (default none)
+#   otherincs       extra headers that are included indirectly (default none)
+#
+# The .mdd file may also include a Makefile.in fragment between lines
+# `:<<\Make' and `Make' -- this will be copied into Makemod.in.
+#
+# The resulting Makemod.in knows how to build each module that is defined.
+# For each module in also knows how to build a .mdh file.  Each source file
+# should #include the .mdh file for the module it is a part of.  The .mdh
+# file #includes the .mdh files for any module dependencies, then each of
+# $headers, and then each .epro (for global declarations).  It will
+# be recreated if any of the dependency .mdh files changes, or if any of
+# $headers or $hdrdeps changes.  When anything depends on it, all the .epros
+# and $otherincs will be made up to date, but the .mdh file won't actually
+# be rebuilt if those files change.
+#
+# The order of sections of the output file is thus:
+#   simple generated macros
+#   macros generated from *.mdd
+#   included Makemod.in.in
+#   rules generated from *.mdd
+# The order dependencies are basically that the generated macros are required
+# in Makemod.in.in, but some of the macros that it creates are needed in the
+# later rules.
+#
+
+# sed script to normalise a pathname
+sed_normalise='
+    s,^,/,
+    s,$,/,
+    :1
+    s,/\./,/,
+    t1
+    :2
+    s,/[^/.][^/]*/\.\./,/,
+    s,/\.[^/.][^/]*/\.\./,/,
+    s,/\.\.[^/][^/]*/\.\./,/,
+    t2
+    s,^/$,.,
+    s,^/,,
+    s,\(.\)/$,\1,
+'
+
+# decide which stages to process
+first_stage=true
+second_stage=true
+if test ."$1" = .-m; then
+    shift
+    first_stage=false
+elif test ."$1" = .-i; then
+    shift
+    second_stage=false
+fi
+
+top_srcdir=`echo $top_srcdir | sed "$sed_normalise"`
+the_subdir=$1
+the_makefile=$2
+
+if $first_stage; then
+
+    dir_top=`echo $the_subdir | sed 's,[^/][^/]*,..,g'`
+
+    trap "rm -f $the_subdir/${the_makefile}.in" 1 2 15
+    echo "creating $the_subdir/${the_makefile}.in"
+    exec 3>&1 >$the_subdir/${the_makefile}.in
+    echo "##### ${the_makefile}.in generated automatically by mkmakemod.sh"
+    echo "##### DO NOT EDIT!"
+    echo
+    echo "##### ===== DEFINITIONS ===== #####"
+    echo
+    echo "makefile = ${the_makefile}"
+    echo "dir_top = ${dir_top}"
+    echo "subdir = ${the_subdir}"
+    echo
+
+    bin_mods=`grep link=static ./config.modules | \
+    sed -e '/^#/d' -e 's/ .*/ /' -e 's/^name=/ /'`
+    dyn_mods="`grep link=dynamic ./config.modules | \
+    sed -e '/^#/d' -e 's/ .*/ /' -e 's/^name=/ /'`"
+    module_list="${bin_mods}${dyn_mods}"
+
+    # check both 2.13 and 2.50 syntax
+    if grep '%_@_D_@_%D%' config.status >/dev/null ||
+       grep ',_@_D_@_,D,' config.status >/dev/null; then
+	is_dynamic=true
+    else
+	is_dynamic=false
+    fi
+
+    here_mddnames=
+    all_subdirs=
+    all_modobjs=
+    all_modules=
+    all_mdds=
+    all_mdhs=
+    all_proto=
+    lastsub=//
+    for module in $module_list; do
+        modfile="`grep '^name='$module' ' ./config.modules | \
+	  sed -e 's/^.* modfile=//' -e 's/ .*//'`"
+	case $modfile in
+	    $the_subdir/$lastsub/*) ;;
+	    $the_subdir/*/*)
+		lastsub=`echo $modfile | sed 's,^'$the_subdir'/,,;s,/[^/]*$,,'`
+		case "$all_subdirs " in
+		    *" $lastsub "* ) ;;
+		    * )
+			all_subdirs="$all_subdirs $lastsub"
+		    ;;
+		esac
+		;;
+	    $the_subdir/*)
+		mddname=`echo $modfile | sed 's,^.*/,,;s,\.mdd$,,'`
+		here_mddnames="$here_mddnames $mddname"
+		build=$is_dynamic
+		case $is_dynamic_@_$bin_mods in
+		    *" $module "*)
+			build=true
+			all_modobjs="$all_modobjs modobjs.${mddname}" ;;
+		    true_@_*)
+			all_modules="$all_modules ${mddname}.\$(DL_EXT)" ;;
+		esac
+		all_mdds="$all_mdds ${mddname}.mdd"
+		$build && all_mdhs="$all_mdhs ${mddname}.mdh"
+		$build && all_proto="$all_proto proto.${mddname}"
+		;;
+	esac
+    done
+    echo "MODOBJS =$all_modobjs"
+    echo "MODULES =$all_modules"
+    echo "MDDS    =$all_mdds"
+    echo "MDHS    =$all_mdhs"
+    echo "PROTOS  =$all_proto"
+    echo "SUBDIRS =$all_subdirs"
+    echo
+    echo "ENTRYOBJ = \$(dir_src)/modentry..o"
+    echo "NNTRYOBJ ="
+    echo "ENTRYOPT = -emodentry"
+    echo "NNTRYOPT ="
+    echo
+
+    echo "##### ===== INCLUDING Makemod.in.in ===== #####"
+    echo
+    cat $top_srcdir/Src/Makemod.in.in
+    echo
+
+    case $the_subdir in
+	Src) modobjs_sed= ;;
+	Src/*) modobjs_sed="| sed 's\" \" "`echo $the_subdir | sed 's,^Src/,,'`"/\"g' " ;;
+	*) modobjs_sed="| sed 's\" \" ../$the_subdir/\"g' " ;;
+    esac
+
+    other_mdhs=
+    remote_mdhs=
+    other_exports=
+    remote_exports=
+    other_modules=
+    remote_modules=
+    for mddname in $here_mddnames; do
+
+	unset name moddeps nozshdep alwayslink hasexport
+	unset autobins autoinfixconds autoprefixconds autoparams automathfuncs
+	unset objects proto headers hdrdeps otherincs autoconf achfile
+	. $top_srcdir/$the_subdir/${mddname}.mdd
+	q_name=`echo $name | sed 's,Q,Qq,g;s,_,Qu,g;s,/,Qs,g'`
+	test -n "${moddeps+set}" || moddeps=
+	test -n "$nozshdep" || moddeps="$moddeps zsh/main"
+	test -n "${proto+set}" ||
+	    proto=`echo $objects '' | sed 's,\.o ,.syms ,g'`
+
+	dobjects=`echo $objects '' | sed 's,\.o ,..o ,g'`
+	modhdeps=
+	mododeps=
+	exportdeps=
+	imports=
+	q_moddeps=
+	for dep in $moddeps; do
+	    depfile="`grep '^name='$dep' ' ./config.modules | \
+	      sed -e 's/^.* modfile=//' -e 's/ .*//'`"
+	    q_dep=`echo $dep | sed 's,Q,Qq,g;s,_,Qu,g;s,/,Qs,g'`
+	    q_moddeps="$q_moddeps $q_dep"
+	    eval `echo $depfile | sed 's,/\([^/]*\)\.mdd$,;depbase=\1,;s,^,loc=,'`
+	    case "$binmod" in
+		*" $dep "* )
+		    dep=zsh/main
+		;;
+	    esac
+
+	    case $the_subdir in
+		$loc)
+		    mdh="${depbase}.mdh"
+		    export="${depbase}.export"
+		    case "$dep" in
+			zsh/main )
+			    mdll="\$(dir_top)/Src/libzsh-\$(VERSION).\$(DL_EXT) "
+			;;
+			* )
+			    mdll="${depbase}.\$(DL_EXT) "
+			;;
+		    esac
+		    ;;
+		$loc/*)
+		    mdh="\$(dir_top)/$loc/${depbase}.mdh"
+		    case "$other_mdhs " in
+			*" $mdh "*) ;;
+			*) other_mdhs="$other_mdhs $mdh" ;;
+		    esac
+		    export="\$(dir_top)/$loc/${depbase}.export"
+		    case "$other_exports " in
+			*" $export "*) ;;
+			*) other_exports="$other_exports $export" ;;
+		    esac
+		    case "$dep" in
+			zsh/main )
+			    mdll="\$(dir_top)/Src/libzsh-\$(VERSION).\$(DL_EXT) "
+			;;
+			* )
+			    mdll="\$(dir_top)/$loc/${depbase}.\$(DL_EXT) "
+			;;
+		    esac
+		    case "$other_modules " in
+			*" $mdll "*) ;;
+			*) other_modules="$other_modules $mdll" ;;
+		    esac
+		    ;;
+		*)
+		    mdh="\$(dir_top)/$loc/${depbase}.mdh"
+		    case "$remote_mdhs " in
+			*" $mdh "*) ;;
+			*) remote_mdhs="$remote_mdhs $mdh" ;;
+		    esac
+		    export="\$(dir_top)/$loc/${depbase}.export"
+		    case "$remote_exports " in
+			*" $export "*) ;;
+			*) remote_exports="$remote_exports $export" ;;
+		    esac
+		    case "$dep" in
+			zsh/main )
+			    mdll="\$(dir_top)/Src/libzsh-\$(VERSION).\$(DL_EXT) "
+			;;
+			* )
+			    mdll="\$(dir_top)/$loc/${depbase}.\$(DL_EXT) "
+			;;
+		    esac
+		    case "$remote_modules " in
+			*" $mdll "*) ;;
+			*) remote_modules="$remote_modules $mdll" ;;
+		    esac
+		    ;;
+	    esac
+	    modhdeps="$modhdeps $mdh"
+	    exportdeps="$exportdeps $export"
+	    imports="$imports \$(IMPOPT)$export"
+	    case "$mododeps " in
+		*" $mdll "* )
+		    :
+		;;
+		* )
+		    mododeps="$mododeps $mdll"
+		;;
+	    esac
+	done
+
+	echo "##### ===== DEPENDENCIES GENERATED FROM ${mddname}.mdd ===== #####"
+	echo
+	echo "MODOBJS_${mddname} = $objects"
+	echo "MODDOBJS_${mddname} = $dobjects \$(_@_E_@_NTRYOBJ)"
+	echo "SYMS_${mddname} = $proto"
+	echo "EPRO_${mddname} = "`echo $proto '' | sed 's,\.syms ,.epro ,g'`
+	echo "INCS_${mddname} = \$(EPRO_${mddname}) $otherincs"
+	echo "EXPIMP_${mddname} = $imports \$(EXPOPT)$mddname.export"
+	echo "NXPIMP_${mddname} ="
+	echo "LINKMODS_${mddname} = $mododeps"
+	echo "NOLINKMODS_${mddname} = "
+	echo
+	echo "proto.${mddname}: \$(EPRO_${mddname})"
+	echo "\$(SYMS_${mddname}): \$(PROTODEPS)"
+	echo
+	echo "${mddname}.export: \$(SYMS_${mddname})"
+	echo "	( echo '#!'; cat \$(SYMS_${mddname}) | sed -n '/^X/{s/^X//;p;}' | sort -u ) > \$_@_"
+	echo
+	echo "modobjs.${mddname}: \$(MODOBJS_${mddname})"
+	echo "	echo '' \$(MODOBJS_${mddname}) $modobjs_sed>> \$(dir_src)/stamp-modobjs.tmp"
+	echo
+
+	if test -n "$autoconf"; then
+#	    touch ${the_subdir}/${mddname}.rules
+	    echo "@am__include@ @am__quote@${mddname}.rules@am__quote@"
+	    echo
+	    echo "${mddname}.ach ${mddname}.rules: \$(sdir_src)/Modules/${mddname}.configure"
+	    echo "	\$(sdir_src)/Modules/${mddname}.configure"
+	    echo "	touch ${mddname}.ach"
+	    echo
+	    echo "\$(sdir_src)/Modules/${mddname}.configure: \$(sdir_src)/Modules/${mddname}.configure.ac \$(sdir_src)/Modules/${mddname}.ach.in"
+	    echo "	cd \$(sdir_src)/Modules && autoconf ${mddname}.configure.ac >${mddname}.configure"
+	    echo "	chmod +x \$(sdir_src)/Modules/${mddname}.configure"
+	    echo
+	    echo "\$(sdir_src)/Modules/${mddname}.ach.in:"
+	    echo "	cd \$(sdir_src)/Modules && autoheader ${mddname}.configure.ac"
+	achfile="${mddname}.ach"
+	fi
+
+	if test -z "$alwayslink"; then
+	    case " $all_modules" in *" ${mddname}."*)
+		echo "install.modules-here: install.modules.${mddname}"
+		echo "uninstall.modules-here: uninstall.modules.${mddname}"
+		echo
+	    ;; esac
+	    instsubdir=`echo $name | sed 's,^,/,;s,/[^/]*$,,'`
+	    echo "install.modules.${mddname}: ${mddname}.\$(DL_EXT)"
+	    echo "	\$(SHELL) \$(sdir_top)/mkinstalldirs \$(DESTDIR)\$(MODDIR)${instsubdir}"
+	    echo "	\$(INSTALL_PROGRAM) \$(STRIPFLAGS) ${mddname}.\$(DL_EXT) \$(DESTDIR)\$(MODDIR)/${name}.\$(DL_EXT)"
+	    echo
+	    echo "uninstall.modules.${mddname}:"
+	    echo "	rm -f \$(DESTDIR)\$(MODDIR)/${name}.\$(DL_EXT)"
+	    echo
+	    echo "${mddname}.\$(DL_EXT): \$(MODDOBJS_${mddname}) ${mddname}.export $exportdeps \$(_@_LINKMODS_@__${mddname})"
+	    echo '	rm -f $_@_'
+	    echo "	\$(DLLINK) \$(_@_E_@_XPIMP_$mddname) \$(_@_E_@_NTRYOPT) \$(MODDOBJS_${mddname}) \$(_@_LINKMODS_@__${mddname}) \$(LIBS) \$(EXTRALIBS_${mddname}) "
+	    echo
+	fi
+	echo "${mddname}.mdhi: ${mddname}.mdhs \$(INCS_${mddname})"
+	echo "	_@_test -f \$_@_ || echo 'do not delete this file' > \$_@_"
+	echo
+	echo "${mddname}.mdhs: ${mddname}.mdd"
+	echo "	_@_\$(MAKE) -f \$(makefile) \$(MAKEDEFS) ${mddname}.mdh.tmp"
+	echo "	_@_if cmp -s ${mddname}.mdh ${mddname}.mdh.tmp; then \\"
+	echo "	    rm -f ${mddname}.mdh.tmp; \\"
+	echo "	    echo \"\\\`${mddname}.mdh' is up to date.\"; \\"
+	echo "	else \\"
+	echo "	    mv -f ${mddname}.mdh.tmp ${mddname}.mdh; \\"
+	echo "	    echo \"Updated \\\`${mddname}.mdh'.\"; \\"
+	echo "	fi"
+	echo "	echo 'timestamp for ${mddname}.mdh against ${mddname}.mdd' > \$_@_"
+	echo
+	echo "${mddname}.mdh: ${modhdeps} ${headers} ${hdrdeps} ${mddname}.mdhi"
+	echo "	_@_\$(MAKE) -f \$(makefile) \$(MAKEDEFS) ${mddname}.mdh.tmp"
+	echo "	_@_mv -f ${mddname}.mdh.tmp ${mddname}.mdh"
+	echo "	_@_echo \"Updated \\\`${mddname}.mdh'.\""
+	echo
+	echo "${mddname}.mdh.tmp:"
+	echo "	_@_( \\"
+	echo "	    echo '#ifndef have_${q_name}_module'; \\"
+	echo "	    echo '#define have_${q_name}_module'; \\"
+	echo "	    echo; \\"
+	echo "	    echo '# ifndef IMPORTING_MODULE_${q_name}'; \\"
+	echo "	    if test _@_SHORTBOOTNAMES_@_ = yes; then \\"
+	echo "		echo '#  ifndef MODULE'; \\"
+	echo "	    fi; \\"
+	echo "	    echo '#   define boot_ boot_${q_name}'; \\"
+	echo "	    echo '#   define cleanup_ cleanup_${q_name}'; \\"
+	echo "	    echo '#   define setup_ setup_${q_name}'; \\"
+	echo "	    echo '#   define finish_ finish_${q_name}'; \\"
+	echo "	    if test _@_SHORTBOOTNAMES_@_ = yes; then \\"
+	echo "		echo '#  endif /* !MODULE */'; \\"
+	echo "	    fi; \\"
+	echo "	    echo '# endif /* !IMPORTING_MODULE_${q_name} */'; \\"
+	echo "	    echo; \\"
+	if test -n "$moddeps"; then (
+	    set x $q_moddeps
+	    echo "	    echo '/* Module dependencies */'; \\"
+	    for hdep in $modhdeps; do
+		shift
+		echo "	    echo '# define IMPORTING_MODULE_${1} 1'; \\"
+		echo "	    echo '# include \"${hdep}\"'; \\"
+	    done
+	    echo "	    echo; \\"
+	) fi
+	if test -n "$headers"; then
+	    echo "	    echo '/* Extra headers for this module */'; \\"
+	    echo "	    for hdr in $headers; do \\"
+	    echo "		if test -f \$\$hdr; then \\"
+	    echo "		    echo '# include \"'\$\$hdr'\"'; \\"
+	    echo "		else \\"
+	    echo "		    echo '# include \"\$(sdir)/'\$\$hdr'\"'; \\"
+	    echo "		fi; \\"
+	    echo "	    done; \\"
+	    echo "	    echo; \\"
+	fi
+	if test -n "$proto"; then
+	    echo "	    echo '# undef mod_import_variable'; \\"
+	    echo "	    echo '# undef mod_import_function'; \\"
+	    echo "	    echo '# if defined(IMPORTING_MODULE_${q_name}) &&  defined(MODULE)'; \\"
+	    echo "	    echo '#  define mod_import_variable _@_MOD_IMPORT_VARIABLE_@_'; \\"
+	    echo "	    echo '#  define mod_import_function _@_MOD_IMPORT_FUNCTION_@_'; \\"
+	    echo "	    echo '# else'; \\"
+	    echo "	    echo '#  define mod_import_function'; \\"
+	    echo "	    echo '#  define mod_import_variable'; \\"
+	    echo "	    echo '# endif /* IMPORTING_MODULE_${q_name} && MODULE */'; \\"
+	    echo "	    for epro in \$(EPRO_${mddname}); do \\"
+	    echo "		echo '# include \"'\$\$epro'\"'; \\"
+	    echo "	    done; \\"
+	    echo "	    echo '# undef mod_import_variable'; \\"
+	    echo "	    echo '# define mod_import_variable'; \\"
+	    echo "	    echo '# undef mod_import_variable'; \\"
+	    echo "	    echo '# define mod_import_variable'; \\"
+	    echo "	    echo '# ifndef mod_export'; \\"
+	    echo "	    echo '#  define mod_export _@_MOD_EXPORT_@_'; \\"
+	    echo "	    echo '# endif /* mod_export */'; \\"
+	    echo "	    echo; \\"
+	fi
+	echo "	    echo '#endif /* !have_${q_name}_module */'; \\"
+	echo "	) > \$_@_"
+	echo
+	echo "\$(MODOBJS_${mddname}) \$(MODDOBJS_${mddname}): ${mddname}.mdh $achfile"
+	sed -e '/^ *: *<< *\\Make *$/,/^Make$/!d' \
+	    -e 's/^ *: *<< *\\Make *$//; /^Make$/d' \
+	    < $top_srcdir/$the_subdir/${mddname}.mdd
+	echo
+
+    done
+
+    if test -n "$remote_mdhs$other_mdhs$remote_exports$other_exports$remote_modules$other_modules"; then
+	echo "##### ===== DEPENDENCIES FOR REMOTE MODULES ===== #####"
+	echo
+	for mdh in $remote_mdhs; do
+	    echo "$mdh: FORCE"
+	    echo "	_@_cd _@_%_@_ && \$(MAKE) \$(MAKEDEFS) _@_%_@_$mdh"
+	    echo
+	done | sed 's,^\(.*\)_@_%_@_\(.*\)_@_%_@_\(.*\)/\([^/]*\)$,\1\3\2\4,'
+	if test -n "$other_mdhs"; then
+	    echo "${other_mdhs}:" | sed 's,^ ,,'
+	    echo "	false # should only happen with make -n"
+	    echo
+	fi
+	for export in $remote_exports; do
+	    echo "$export: FORCE"
+	    echo "	_@_cd _@_%_@_ && \$(MAKE) \$(MAKEDEFS) _@_%_@_$export"
+	    echo
+	done | sed 's,^\(.*\)_@_%_@_\(.*\)_@_%_@_\(.*\)/\([^/]*\)$,\1\3\2\4,'
+	if test -n "$other_exports"; then
+	    echo "${other_exports}:" | sed 's,^ ,,'
+	    echo "	false # should only happen with make -n"
+	    echo
+	fi
+	for mdll in $remote_modules; do
+	    echo "$mdll: FORCE"
+	    echo "	_@_cd _@_%_@_ && \$(MAKE) \$(MAKEDEFS) _@_%_@_$mdll"
+	    echo
+	done | sed 's,^\(.*\)_@_%_@_\(.*\)_@_%_@_\(.*\)/\([^/]*\)$,\1\3\2\4,'
+	if test -n "$other_modules"; then
+	    echo "${other_modules}:" | sed 's,^ ,,'
+	    echo "	false # should only happen with make -n"
+	    echo
+	fi
+    fi
+
+    echo "##### End of ${the_makefile}.in"
+
+    exec >&3 3>&-
+
+fi
+
+if $second_stage ; then
+    trap "rm -f $the_subdir/${the_makefile}" 1 2 15
+
+    ${CONFIG_SHELL-/bin/sh} ./config.status \
+	--file=$the_subdir/${the_makefile}:$the_subdir/${the_makefile}.in ||
+    return 1
+fi
+
+exit 0


^ permalink raw reply	[relevance 1%]

* Re: unknown limits message
       [not found]     <20050119110447.GA1489@vandal.simcon-mt.de>
@ 2005-01-19 12:20  5% ` Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2005-01-19 12:20 UTC (permalink / raw)
  To: Andrei A. Voropaev, Zsh hackers list

"Andrei A. Voropaev" wrote:
> Hi!
> 
> Sorry if this message duplicates some other already, but searching in
> archives didn't produce it. When compiling zsh-4.2.1 on my system I got
> the warning about unknown limits. I'm using very new kernel, so
> maybe it is worth mentioning :) Here's the rlimits.h

Thanks, this is indeed new.  The patch below is actually against 4.2.3;
4.2.2 will be the same but 4.2.1 may be different, although probably not
very much.

I've updated my /usr/include/asm/resources.h (I'm on Linux 2.6.10 as
supplied as an update for Fedora Core 3) and tested this.

I also added bash-compatible option letters for ulimit.

I reordered the switch for ulimit output to be more logical, but it
doesn't affect the actual output which is in limit order, not order of
the switches.  This is reasonable rational even if it's not immediately
clear to the user that there is a rationale, I think.

I note bash allows you to seee the pipe size, which isn't actually a
limit.  You can't modify it, either.

Index: configure.ac
===================================================================
RCS file: /cvsroot/zsh/zsh/configure.ac,v
retrieving revision 1.22
diff -u -r1.22 configure.ac
--- configure.ac	14 Jan 2005 13:04:49 -0000	1.22
+++ configure.ac	19 Jan 2005 12:07:23 -0000
@@ -1392,6 +1392,8 @@
 zsh_LIMIT_PRESENT(RLIMIT_SBSIZE)
 zsh_LIMIT_PRESENT(RLIMIT_TCACHE)
 zsh_LIMIT_PRESENT(RLIMIT_VMEM)
+zsh_LIMIT_PRESENT(RLIMIT_SIGPENDING)
+zsh_LIMIT_PRESENT(RLIMIT_MSGQUEUE)
 
 AH_TEMPLATE([RLIMIT_VMEM_IS_RSS],
 [Define to 1 if RLIMIT_VMEM and RLIMIT_RSS both exist and are equal.])
Index: Doc/Zsh/builtins.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Zsh/builtins.yo,v
retrieving revision 1.73
diff -u -r1.73 builtins.yo
--- Doc/Zsh/builtins.yo	7 Dec 2004 16:55:02 -0000	1.73
+++ Doc/Zsh/builtins.yo	19 Jan 2005 12:07:24 -0000
@@ -679,7 +679,9 @@
 sitem(tt(maxpthreads))(Maximum number of threads per process.)
 sitem(tt(memorylocked))(Maximum amount of memory locked in RAM.)
 sitem(tt(memoryuse))(Maximum resident set size.)
+sitem(tt(msgqueue))(Maximum number of bytes in POSIX message queues.)
 sitem(tt(resident))(Maximum resident set size.)
+sitem(tt(sigpending))(Maximum number of pending signals.)
 sitem(tt(sockbufsize))(Maximum size of all socket buffers.)
 sitem(tt(stacksize))(Maximum stack size for each process.)
 sitem(tt(vmemorysize))(Maximum amount of virtual memory.)
@@ -1441,7 +1443,7 @@
 findex(ulimit)
 cindex(resource limits)
 cindex(limits, resource)
-item(tt(ulimit) [ [ tt(-SHacdflmnpstv) | tt(-N) var(resource) [ var(limit) ] ... ])(
+item(tt(ulimit) [ [ tt(-SHacdfilmnpqstvx) | tt(-N) var(resource) [ var(limit) ] ... ])(
 Set or display resource limits of the shell and the processes started by
 the shell.  The value of var(limit) can be a number in the unit specified
 below or the value `tt(unlimited)'.  By default, only soft limits are
@@ -1462,14 +1464,17 @@
 sitem(tt(-c))(512-byte blocks on the size of core dumps.)
 sitem(tt(-d))(K-bytes on the size of the data segment.)
 sitem(tt(-f))(512-byte blocks on the size of files written.)
+sitem(tt(-i))(The number of pending signals.)
 sitem(tt(-l))(K-bytes on the size of locked-in memory.)
 sitem(tt(-m))(K-bytes on the size of physical memory.)
 sitem(tt(-n))(open file descriptors.)
+sitem(tt(-q))(Bytes in POSIX message queues.)
 sitem(tt(-s))(K-bytes on the size of the stack.)
 sitem(tt(-t))(CPU seconds to be used.)
 sitem(tt(-u))(processes available to the user.)
 sitem(tt(-v))(K-bytes on the size of virtual memory.  On some systems this
 refers to the limit called `address space'.)
+sitem(tt(-x))(The number of locks on files.)
 endsitem()
 
 A resource may also be specified by integer in the form `tt(-N)
Index: Src/Builtins/rlimits.awk
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/Builtins/rlimits.awk,v
retrieving revision 1.5
diff -u -r1.5 rlimits.awk
--- Src/Builtins/rlimits.awk	21 Aug 2001 20:05:33 -0000	1.5
+++ Src/Builtins/rlimits.awk	19 Jan 2005 12:07:24 -0000
@@ -45,6 +45,8 @@
 	    if (limnam == "STACK")   { msg[limnum] = "Mstacksize" }
 	    if (limnam == "TCACHE")  { msg[limnum] = "Ncachedthreads" }
 	    if (limnam == "VMEM")    { msg[limnum] = "Mvmemorysize" }
+	    if (limnam == "SIGPENDING") { msg[limnum] = "Nsigpending" }
+	    if (limnam == "MSGQUEUE") { msg[limnum] = "Nmsgqueue" }
         }
     }
 }
Index: Src/Builtins/rlimits.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/Builtins/rlimits.c,v
retrieving revision 1.12
diff -u -r1.12 rlimits.c
--- Src/Builtins/rlimits.c	30 Jun 2004 11:10:46 -0000	1.12
+++ Src/Builtins/rlimits.c	19 Jan 2005 12:07:24 -0000
@@ -208,13 +208,9 @@
 	limit = (hard) ? limits[lim].rlim_max : limits[lim].rlim_cur;
     /* display the appropriate heading */
     switch (lim) {
-    case RLIMIT_CPU:
-	if (head)
-	    printf("-t: cpu time (seconds)         ");
-	break;
-    case RLIMIT_FSIZE:
+    case RLIMIT_CORE:
 	if (head)
-	    printf("-f: file size (blocks)         ");
+	    printf("-c: core file size (blocks)    ");
 	if (limit != RLIM_INFINITY)
 	    limit /= 512;
 	break;
@@ -224,18 +220,26 @@
 	if (limit != RLIM_INFINITY)
 	    limit /= 1024;
 	break;
-    case RLIMIT_STACK:
+    case RLIMIT_FSIZE:
 	if (head)
-	    printf("-s: stack size (kbytes)        ");
+	    printf("-f: file size (blocks)         ");
 	if (limit != RLIM_INFINITY)
-	    limit /= 1024;
+	    limit /= 512;
 	break;
-    case RLIMIT_CORE:
+# ifdef HAVE_RLIMIT_SIGPENDING
+    case RLIMIT_SIGPENDING:
 	if (head)
-	    printf("-c: core file size (blocks)    ");
+	    printf("-i: pending signals            ");
+	break;
+# endif
+# ifdef HAVE_RLIMIT_MEMLOCK
+    case RLIMIT_MEMLOCK:
+	if (head)
+	    printf("-l: locked-in-memory size (kb) ");
 	if (limit != RLIM_INFINITY)
-	    limit /= 512;
+	    limit /= 1024;
 	break;
+# endif /* HAVE_RLIMIT_MEMLOCK */
 /* If RLIMIT_VMEM and RLIMIT_RSS are defined and equal, avoid *
  * duplicate case statement.  Observed on QNX Neutrino 6.1.0. */
 # if defined(HAVE_RLIMIT_RSS) && !defined(RLIMIT_VMEM_IS_RSS)
@@ -246,34 +250,46 @@
 	    limit /= 1024;
 	break;
 # endif /* HAVE_RLIMIT_RSS */
-# ifdef HAVE_RLIMIT_MEMLOCK
-    case RLIMIT_MEMLOCK:
+# if defined(HAVE_RLIMIT_VMEM) && defined(HAVE_RLIMIT_RSS) && defined(RLIMIT_VMEM_IS_RSS)
+    case RLIMIT_VMEM:
 	if (head)
-	    printf("-l: locked-in-memory size (kb) ");
+	    printf("-m: memory size (kb)           ");
 	if (limit != RLIM_INFINITY)
 	    limit /= 1024;
 	break;
-# endif /* HAVE_RLIMIT_MEMLOCK */
-# ifdef HAVE_RLIMIT_NPROC
-    case RLIMIT_NPROC:
-	if (head)
-	    printf("-u: processes                  ");
-	break;
-# endif /* HAVE_RLIMIT_NPROC */
+# endif /* HAVE_RLIMIT_VMEM */
 # ifdef HAVE_RLIMIT_NOFILE
     case RLIMIT_NOFILE:
 	if (head)
 	    printf("-n: file descriptors           ");
 	break;
 # endif /* HAVE_RLIMIT_NOFILE */
-# ifdef HAVE_RLIMIT_VMEM
+# ifdef HAVE_RLIMIT_MSGQUEUE
+    case RLIMIT_MSGQUEUE:
+	if (head)
+	    printf("-q: bytes in POSIX msg queues  ");
+	break;
+# endif
+    case RLIMIT_STACK:
+	if (head)
+	    printf("-s: stack size (kbytes)        ");
+	if (limit != RLIM_INFINITY)
+	    limit /= 1024;
+	break;
+    case RLIMIT_CPU:
+	if (head)
+	    printf("-t: cpu time (seconds)         ");
+	break;
+# ifdef HAVE_RLIMIT_NPROC
+    case RLIMIT_NPROC:
+	if (head)
+	    printf("-u: processes                  ");
+	break;
+# endif /* HAVE_RLIMIT_NPROC */
+# if defined(HAVE_RLIMIT_VMEM) && (!defined(HAVE_RLIMIT_RSS) || !defined(RLIMIT_VMEM_IS_RSS))
     case RLIMIT_VMEM:
 	if (head)
-#  if defined(HAVE_RLIMIT_RSS) && defined(RLIMIT_VMEM_IS_RSS)
-	    printf("-m: memory size (kb)           ");
-#  else
 	    printf("-v: virtual memory size (kb)   ");
-#  endif
 	if (limit != RLIM_INFINITY)
 	    limit /= 1024;
 	break;
@@ -286,18 +302,12 @@
 	    limit /= 1024;
 	break;
 # endif /* HAVE_RLIMIT_AS */
-# ifdef HAVE_RLIMIT_TCACHE
-    case RLIMIT_TCACHE:
-	if (head)
-	    printf("-N %2d: cached threads          ", RLIMIT_TCACHE);
-	break;
-# endif /* HAVE_RLIMIT_TCACHE */
-# ifdef HAVE_RLIMIT_AIO_OPS
-    case RLIMIT_AIO_OPS:
+# ifdef HAVE_RLIMIT_LOCKS
+    case RLIMIT_LOCKS:
 	if (head)
-	    printf("-N %2d: AIO operations          ", RLIMIT_AIO_OPS);
+	    printf("-x: file locks                 ");
 	break;
-# endif /* HAVE_RLIMIT_AIO_OPS */
+# endif /* HAVE_RLIMIT_LOCKS */
 # ifdef HAVE_RLIMIT_AIO_MEM
     case RLIMIT_AIO_MEM:
 	if (head)
@@ -306,6 +316,18 @@
 	    limit /= 1024;
 	break;
 # endif /* HAVE_RLIMIT_AIO_MEM */
+# ifdef HAVE_RLIMIT_AIO_OPS
+    case RLIMIT_AIO_OPS:
+	if (head)
+	    printf("-N %2d: AIO operations          ", RLIMIT_AIO_OPS);
+	break;
+# endif /* HAVE_RLIMIT_AIO_OPS */
+# ifdef HAVE_RLIMIT_TCACHE
+    case RLIMIT_TCACHE:
+	if (head)
+	    printf("-N %2d: cached threads          ", RLIMIT_TCACHE);
+	break;
+# endif /* HAVE_RLIMIT_TCACHE */
 # ifdef HAVE_RLIMIT_SBSIZE
     case RLIMIT_SBSIZE:
 	if (head)
@@ -320,12 +342,6 @@
 	    printf("-N %2d: threads per process     ", RLIMIT_PTHREAD);
 	break;
 # endif /* HAVE_RLIMIT_PTHREAD */
-# ifdef HAVE_RLIMIT_LOCKS
-    case RLIMIT_LOCKS:
-	if (head)
-	    printf("-N %2d: file locks              ", RLIMIT_LOCKS);
-	break;
-# endif /* HAVE_RLIMIT_LOCKS */
     default:
 	if (head)
 	    printf("-N %2d:                         ", lim);
@@ -745,6 +761,21 @@
 #  endif
 		    break;
 # endif /* HAVE_RLIMIT_VMEM */
+# ifdef HAVE_RLIMIT_LOCKS
+		case 'x':
+		    res = RLIMIT_LOCKS;
+		    break;
+# endif
+# ifdef HAVE_RLIMIT_SIGPENDING
+		case 'i':
+		    res = RLIMIT_SIGPENDING;
+		    break;
+# endif
+# ifdef HAVE_RLIMIT_MSGQUEUES
+		case 'q':
+		    res = RLIMIT_MSGQUEUES;
+		    break;
+# endif
 		default:
 		    /* unrecognised limit */
 		    zwarnnam(name, "bad option: -%c", NULL, *options);

-- 
Peter Stephenson <pws@csr.com>                  Software Engineer
CSR PLC, Churchill House, Cambridge Business Park, Cowley Road
Cambridge, CB4 0WZ, UK                          Tel: +44 (0)1223 692070


**********************************************************************
This email and any files transmitted with it are confidential and
intended solely for the use of the individual or entity to whom they
are addressed. If you have received this email in error please notify
the system manager.

This footnote also confirms that this email message has been swept by
MIMEsweeper for the presence of computer viruses.

www.mimesweeper.com
**********************************************************************


^ permalink raw reply	[relevance 5%]

* Re: trap .. EXIT doesn't execute when exit is due to a signal
  @ 2005-02-12 21:29  3%   ` Bart Schaefer
  2005-02-14 15:33  0%     ` Peter Stephenson
  0 siblings, 1 reply; 200+ results
From: Bart Schaefer @ 2005-02-12 21:29 UTC (permalink / raw)
  To: Dan Nelson, Matthias B.; +Cc: Zsh hackers list

On Feb 12,  3:04pm, Dan Nelson wrote:
} Subject: Re: trap .. EXIT doesn't execute when exit is due to a signal
}
} In the last episode (Feb 12), Matthias B. said:
} > trap ... EXIT doesn't execute ... when the shell is terminated due to
} > a signal (e.g. Ctrl-C). I think this is a bug. It's certainly
} > undesirable, because it causes cleanup tasks to not be executed. Bash
} > doesn't have this problem.
} 
} zsh-users 3513 describes what is happening here, I think.  Ash and
} /Solaris bin/sh have the same behaviour.

Yep, that's exactly it.

It just occured to me that it may very well be the case that bash is
using the POSIX atexit() handler to execute its exit traps, which I
believe would handle the situation described in 3513 without having
to do any special handling of SIGINT.

However, I'm not positive that covers all the cases in which zsh runs
the exit trap, and it'd have to be used carefully to be sure the exit
trap wasn't run more than once.


^ permalink raw reply	[relevance 3%]

* Re: trap .. EXIT doesn't execute when exit is due to a signal
  2005-02-12 21:29  3%   ` Bart Schaefer
@ 2005-02-14 15:33  0%     ` Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2005-02-14 15:33 UTC (permalink / raw)
  To: Zsh hackers list

Bart Schaefer wrote:
> It just occured to me that it may very well be the case that bash is
> using the POSIX atexit() handler to execute its exit traps, which I
> believe would handle the situation described in 3513 without having
> to do any special handling of SIGINT.
> 
> However, I'm not positive that covers all the cases in which zsh runs
> the exit trap, and it'd have to be used carefully to be sure the exit
> trap wasn't run more than once.

No, it's not good enough for traps exiting functions.  bash only has an
EXIT trap for the whole shell.

bash-2.05b$ fn() { trap 'echo exiting' EXIT; echo fn run; }
bash-2.05b$ fn
fn run
bash-2.05b$ exit
exit
exiting

You couldn't use atexit() to fix the problem in zsh.  You'd need to
return from the interrupt and unwind the call stack to the top, then
exit.

It is a nuisance that EXIT traps aren't always run, however.

-- 
Peter Stephenson <pws@csr.com>                  Software Engineer
CSR PLC, Churchill House, Cambridge Business Park, Cowley Road
Cambridge, CB4 0WZ, UK                          Tel: +44 (0)1223 692070


**********************************************************************
This email and any files transmitted with it are confidential and
intended solely for the use of the individual or entity to whom they
are addressed. If you have received this email in error please notify
the system manager.

**********************************************************************


^ permalink raw reply	[relevance 0%]

* rlimits.awk bug with new glibc
@ 2005-02-18 14:16  2% Vincent Lefevre
  0 siblings, 0 replies; 200+ results
From: Vincent Lefevre @ 2005-02-18 14:16 UTC (permalink / raw)
  To: zsh-workers

[-- Attachment #1: Type: text/plain, Size: 613 bytes --]

Concerning my limit problem on Opteron (see my messages in zsh-users),
rlimits.awk (in Src/Builtins) doesn't work with the new
/usr/include/bits/resource.h file from the glibc (attached).
It produces:

/** rlimits.h                              **/
/** architecture-customized limits for zsh **/

#define ZSH_NLIMITS 0

static char const *recs[ZSH_NLIMITS] = {
};

static int limtype[ZSH_NLIMITS] = {
};

-- 
Vincent Lefèvre <vincent@vinc17.org> - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / SPACES project at LORIA

[-- Attachment #2: resource.h --]
[-- Type: text/plain, Size: 6626 bytes --]

/* Bit values & structures for resource limits.  Linux version.
   Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2004
   Free Software Foundation, Inc.
   This file is part of the GNU C Library.

   The GNU C Library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.

   The GNU C Library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.

   You should have received a copy of the GNU Lesser General Public
   License along with the GNU C Library; if not, write to the Free
   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
   02111-1307 USA.  */

#ifndef _SYS_RESOURCE_H
# error "Never use <bits/resource.h> directly; include <sys/resource.h> instead."
#endif

#include <bits/types.h>

/* Transmute defines to enumerations.  The macro re-definitions are
   necessary because some programs want to test for operating system
   features with #ifdef RUSAGE_SELF.  In ISO C the reflexive
   definition is a no-op.  */

/* Kinds of resource limit.  */
enum __rlimit_resource
{
  /* Per-process CPU limit, in seconds.  */
  RLIMIT_CPU = 0,
#define RLIMIT_CPU RLIMIT_CPU

  /* Largest file that can be created, in bytes.  */
  RLIMIT_FSIZE = 1,
#define	RLIMIT_FSIZE RLIMIT_FSIZE

  /* Maximum size of data segment, in bytes.  */
  RLIMIT_DATA = 2,
#define	RLIMIT_DATA RLIMIT_DATA

  /* Maximum size of stack segment, in bytes.  */
  RLIMIT_STACK = 3,
#define	RLIMIT_STACK RLIMIT_STACK

  /* Largest core file that can be created, in bytes.  */
  RLIMIT_CORE = 4,
#define	RLIMIT_CORE RLIMIT_CORE

  /* Largest resident set size, in bytes.
     This affects swapping; processes that are exceeding their
     resident set size will be more likely to have physical memory
     taken from them.  */
  __RLIMIT_RSS = 5,
#define	RLIMIT_RSS __RLIMIT_RSS

  /* Number of open files.  */
  RLIMIT_NOFILE = 7,
  __RLIMIT_OFILE = RLIMIT_NOFILE, /* BSD name for same.  */
#define RLIMIT_NOFILE RLIMIT_NOFILE
#define RLIMIT_OFILE __RLIMIT_OFILE

  /* Address space limit.  */
  RLIMIT_AS = 9,
#define RLIMIT_AS RLIMIT_AS

  /* Number of processes.  */
  __RLIMIT_NPROC = 6,
#define RLIMIT_NPROC __RLIMIT_NPROC

  /* Locked-in-memory address space.  */
  __RLIMIT_MEMLOCK = 8,
#define RLIMIT_MEMLOCK __RLIMIT_MEMLOCK

  /* Maximum number of file locks.  */
  __RLIMIT_LOCKS = 10,
#define RLIMIT_LOCKS __RLIMIT_LOCKS

  /* Maximum number of pending signals.  */
  __RLIMIT_SIGPENDING = 11,
#define RLIMIT_SIGPENDING __RLIMIT_SIGPENDING

  /* Maximum bytes in POSIX message queues.  */
  __RLIMIT_MSGQUEUE = 12,
#define RLIMIT_MSGQUEUE __RLIMIT_MSGQUEUE

  __RLIMIT_NLIMITS = 13,
  __RLIM_NLIMITS = __RLIMIT_NLIMITS
#define RLIMIT_NLIMITS __RLIMIT_NLIMITS
#define RLIM_NLIMITS __RLIM_NLIMITS
};

/* Value to indicate that there is no limit.  */
#ifndef __USE_FILE_OFFSET64
# define RLIM_INFINITY ((unsigned long int)(~0UL))
#else
# define RLIM_INFINITY 0xffffffffffffffffuLL
#endif

#ifdef __USE_LARGEFILE64
# define RLIM64_INFINITY 0xffffffffffffffffuLL
#endif

/* We can represent all limits.  */
#define RLIM_SAVED_MAX	RLIM_INFINITY
#define RLIM_SAVED_CUR	RLIM_INFINITY


/* Type for resource quantity measurement.  */
#ifndef __USE_FILE_OFFSET64
typedef __rlim_t rlim_t;
#else
typedef __rlim64_t rlim_t;
#endif
#ifdef __USE_LARGEFILE64
typedef __rlim64_t rlim64_t;
#endif

struct rlimit
  {
    /* The current (soft) limit.  */
    rlim_t rlim_cur;
    /* The hard limit.  */
    rlim_t rlim_max;
  };

#ifdef __USE_LARGEFILE64
struct rlimit64
  {
    /* The current (soft) limit.  */
    rlim64_t rlim_cur;
    /* The hard limit.  */
    rlim64_t rlim_max;
 };
#endif

/* Whose usage statistics do you want?  */
enum __rusage_who
{
  /* The calling process.  */
  RUSAGE_SELF = 0,
#define RUSAGE_SELF RUSAGE_SELF

  /* All of its terminated child processes.  */
  RUSAGE_CHILDREN = -1
#define RUSAGE_CHILDREN RUSAGE_CHILDREN
};

#define __need_timeval
#include <bits/time.h>		/* For `struct timeval'.  */

/* Structure which says how much of each resource has been used.  */
struct rusage
  {
    /* Total amount of user time used.  */
    struct timeval ru_utime;
    /* Total amount of system time used.  */
    struct timeval ru_stime;
    /* Maximum resident set size (in kilobytes).  */
    long int ru_maxrss;
    /* Amount of sharing of text segment memory
       with other processes (kilobyte-seconds).  */
    long int ru_ixrss;
    /* Amount of data segment memory used (kilobyte-seconds).  */
    long int ru_idrss;
    /* Amount of stack memory used (kilobyte-seconds).  */
    long int ru_isrss;
    /* Number of soft page faults (i.e. those serviced by reclaiming
       a page from the list of pages awaiting reallocation.  */
    long int ru_minflt;
    /* Number of hard page faults (i.e. those that required I/O).  */
    long int ru_majflt;
    /* Number of times a process was swapped out of physical memory.  */
    long int ru_nswap;
    /* Number of input operations via the file system.  Note: This
       and `ru_oublock' do not include operations with the cache.  */
    long int ru_inblock;
    /* Number of output operations via the file system.  */
    long int ru_oublock;
    /* Number of IPC messages sent.  */
    long int ru_msgsnd;
    /* Number of IPC messages received.  */
    long int ru_msgrcv;
    /* Number of signals delivered.  */
    long int ru_nsignals;
    /* Number of voluntary context switches, i.e. because the process
       gave up the process before it had to (usually to wait for some
       resource to be available).  */
    long int ru_nvcsw;
    /* Number of involuntary context switches, i.e. a higher priority process
       became runnable or the current process used up its time slice.  */
    long int ru_nivcsw;
  };

/* Priority limits.  */
#define PRIO_MIN	-20	/* Minimum priority a process can have.  */
#define PRIO_MAX	20	/* Maximum priority a process can have.  */

/* The type of the WHICH argument to `getpriority' and `setpriority',
   indicating what flavor of entity the WHO argument specifies.  */
enum __priority_which
{
  PRIO_PROCESS = 0,		/* WHO is a process ID.  */
#define PRIO_PROCESS PRIO_PROCESS
  PRIO_PGRP = 1,		/* WHO is a process group ID.  */
#define PRIO_PGRP PRIO_PGRP
  PRIO_USER = 2			/* WHO is a user ID.  */
#define PRIO_USER PRIO_USER
};

^ permalink raw reply	[relevance 2%]

* Re: POSIX conformance in coreutils
  2005-01-12 15:58  9%     ` Peter Stephenson
@ 2005-02-23 16:36  5%       ` Oliver Kiddle
       [not found]             ` <okiddle@yahoo.co.uk>
  0 siblings, 1 reply; 200+ results
From: Oliver Kiddle @ 2005-02-23 16:36 UTC (permalink / raw)
  To: zsh-workers

On 12 Jan, Peter wrote:
> Vin Shelton wrote:
> > I checked and I do not have POSIXLY_CORRECT set.  Here's what the
> > 'Standards conformance' section of the coreutils info says:
> 
> It doesn't look like we can expect much sense, then.
> 
> Here is a more heavyweight change.

> +  if [[ -z $TAIL_SUPPORTS_MINUS_N ]]; then

Would it perhaps be easier to just use something like this:

  tail() {
    local arr
    arr=( ${(f)"$(</dev/fd/0)"} )
    print -lr -- $arr[${1:--10},-1]
  }

It's shorter and potentially tests other zsh features as a side-effect
(such as emulating /dev/fd in redirections).

Oliver


^ permalink raw reply	[relevance 5%]

* Re: POSIX conformance in coreutils
       [not found]             ` <okiddle@yahoo.co.uk>
@ 2005-02-23 18:24  5%           ` Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2005-02-23 18:24 UTC (permalink / raw)
  To: zsh-workers

Oliver Kiddle wrote:
> Would it perhaps be easier to just use something like this:
> 
>   tail() {
>     local arr
>     arr=( ${(f)"$(</dev/fd/0)"} )
>     print -lr -- $arr[${1:--10},-1]
>   }
> 
> It's shorter and potentially tests other zsh features as a side-effect
> (such as emulating /dev/fd in redirections).

I don't think /dev/fd is currently faked to that extent.  There's
special handling for tests, and /dev/fd is sometimes used to *implement*
process substitution, but it won't handle it specially there.  You could
build up arr some other way, of course.

-- 
Peter Stephenson <pws@csr.com>                  Software Engineer
CSR PLC, Churchill House, Cambridge Business Park, Cowley Road
Cambridge, CB4 0WZ, UK                          Tel: +44 (0)1223 692070


**********************************************************************
This email and any files transmitted with it are confidential and
intended solely for the use of the individual or entity to whom they
are addressed. If you have received this email in error please notify
the system manager.

**********************************************************************


^ permalink raw reply	[relevance 5%]

* Re: Field splitting with trailing non-whitespace IFS characters (fwd)
@ 2005-03-07 20:49  3% Bart Schaefer
  0 siblings, 0 replies; 200+ results
From: Bart Schaefer @ 2005-03-07 20:49 UTC (permalink / raw)
  To: zsh-workers

Anybody want to (or want me to) say anything more about this to the
austin-group list?


---------- Forwarded message ----------
Date: Mon, 7 Mar 2005 09:50:52 +0000
From: Geoff Clare <gwc@opengroup.org>
To: austin-group-l@opengroup.org
Subject: Re: Field splitting with trailing non-whitespace IFS characters
Resent-Date: 7 Mar 2005 09:51:17 -0000
Resent-From: austin-group-l@opengroup.org
Resent-To: austin-group-l@opengroup.org

Assuming there is consensus that Glenn's test script reflects the
intended POSIX requirements, I propose the following changes to
XCU6 to clarify the standard and to correct the defect identified
on the read page.

In 2.5.3 Shell Variables:

Delete "(Input Field Separators.) " from the beginning of the IFS
description.

On the sh page under ENVIRONMENT VARIABLES:

Delete "(Input Field Separators.) " from the beginning of the IFS
description.

Add to RATIONALE on the sh page:

"The name IFS was originally an abbreviation of Input Field Separators,
however this name is misleading as the IFS characters are actually
used as field terminators."

In 2.6.5 Field Splitting, paragraph 2:

Change "The shell shall treat each character of the IFS as a delimiter
and use the delimiters to split the results of parameter expansion and
command substitution into fields."

to "The shell shall treat each character of the IFS as a delimiter
and use the delimiters as field terminators to split the results of
parameter expansion and command substitution into fields."

On the read page:

Change "If there are fewer var operands specified than there are
fields, the leftover fields and their intervening separators shall be
assigned to the last var."

to "If there are fewer var operands specified than there are fields,
the last var shall be set to a value comprising the following elements:

    * the field that corresponds to the last var in the normal
      assignment sequence described above,
    * the delimiter(s) that follow the field corresponding to the
      last var, and
    * the remaining fields and their delimiters."


Any comments before I submit these as an aardvark?

-- 
Geoff Clare <g.clare@opengroup.org>
The Open Group, Thames Tower, Station Road, Reading, RG1 1LX, England


^ permalink raw reply	[relevance 3%]

* Unsetting a variable that was not previously set [kind of update]
@ 2005-03-09 14:14  3% Michael Prokop
  0 siblings, 0 replies; 200+ results
From: Michael Prokop @ 2005-03-09 14:14 UTC (permalink / raw)
  To: zsh-workers

Hello,

I noticed a "problem" when unsetting variable(s):

% cat foo1
#!/bin/sh -e
a=b
unset a && echo foo
unset a && echo bar
% ./foo1
foo

% cat foo2
#!/bin/sh -e
a=b
unset a && echo foo
unset c && echo bar
% ./foo2
foo


I found the thread "Unsetting a variable that was not previously
set" -> http://www.zsh.org/mla/users/2003/msg00312.html in the
zsh-ml-archive.

According to http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=297137
bash3, dash and posh handle it in another way than zsh does.

That's what Chet [from bash] said about bash's behaviour (according
to <URL:http://www.zsh.org/mla/users/2003/msg00314.html>) ->

|    I got a bug report or two, and decided that the new behavior is
|    what POSIX.2 intended.  It seems to be what sh has always
|    done.

As this behaviour broke the hotplug-system on my Linux
Live-CD-system where zsh is used as /bin/sh I would like to know if
this behaviour of zsh might be changed in future or if I should fix
such scripts on my own.

thx && regards,
-mika-
-- 
 ,'"`.         http://www.michael-prokop.at/
(  grml.org -» Linux for texttool-users and sysadmins
 `._,          http://www.grml.org/


^ permalink raw reply	[relevance 3%]

* Re: problem redeclaring path variable (ksh incompatibility)
  @ 2005-03-17 16:50  3% ` Bart Schaefer
  2005-03-17 21:42  4%   ` Michael Wardle
  0 siblings, 1 reply; 200+ results
From: Bart Schaefer @ 2005-03-17 16:50 UTC (permalink / raw)
  To: Michael Wardle, zsh-workers

On Mar 18,  1:31am, Michael Wardle wrote:
} 
} I have a script that uses the identifier "path" local to a function.  It 
} works as intended in bash and all the versions of ksh I've tried it on, 
} but not in zsh, which gives an error message similar to this:
} addpath:typeset:6: path: can't assign initial value for array

Zsh does not fully emulate the POSIX shell unless it is invoked under the
name "sh".  The "emulate" command is not sufficient; it only changes the
setopts, not the set of special variables etc. that are predeclared at
startup time.  Hence the "path" variable exists and is special and may
only be overridden locally to a function by using "typeset -h path=...".

Try running your test script with ARGV0=sh in the environment and note
the difference in behavior.
 
} It turns out that neither "typeset path=" nor "typeset path=value" 
} create a local scalar, which doesn't meet my expectations.  Strangely, 
} however, "typeset path" does.

No, it doesn't.  Nowhere in your test script is $path a scalar.

zsh% func() { emulate ksh; typeset path ; path=scalar ; typeset path }
zsh% func
path=(scalar)
zsh% 

If we were going to attempt to change this, the right way would be to add
a new option, perhaps called LOCAL_SPECIALS, which would be on by default.
"emulate sh" et al. would unset this option.  When NO_LOCAL_SPECIALS, the
typeset builtin would behave as if the -h option were always present.

Other, less desirable approaches might be to tie this behavior to the
POSIX_BUILTINS or KSH_TYPESET options.  Possibly it should be tied to
KSH_TYPESET even if LOCAL_SPECIALS is added.


^ permalink raw reply	[relevance 3%]

* Re: problem redeclaring path variable (ksh incompatibility)
  2005-03-17 16:50  3% ` Bart Schaefer
@ 2005-03-17 21:42  4%   ` Michael Wardle
  0 siblings, 0 replies; 200+ results
From: Michael Wardle @ 2005-03-17 21:42 UTC (permalink / raw)
  To: Bart Schaefer; +Cc: zsh-workers

Hi Bart

Thanks for your reply.

> Try running your test script with ARGV0=sh in the environment and note
> the difference in behavior.

It didn't appear to make any difference.  Are you sure this hides $path, 
or are you just suggesting this should be the normal way to invoke zsh 
any time I want it to conform closely to POSIX shell?

In any case, thanks for pointing out that feature.  I discovered this 
difference when asking zsh to read my general POSIX/Korn shell .shrc, so 
it is clear I should enable any sh/ksh compliance features before doing 
so.  I'll definitely investigate it some more.

> } It turns out that neither "typeset path=" nor "typeset path=value" 
> } create a local scalar, which doesn't meet my expectations.  Strangely, 
> } however, "typeset path" does.
> 
> No, it doesn't.  Nowhere in your test script is $path a scalar.

I had assumed it was since subsequent attempts to assign scalar (string) 
values to it succeed, and its global value is restored outside of the 
function.

So this works:
typeset path
path=
path="scalar"

But this doesn't:
typeset path=
path="scalar"

And neither does this:
typeset path=""
path="scalar"

> zsh% func() { emulate ksh; typeset path ; path=scalar ; typeset path }
> zsh% func
> path=(scalar)

Assuming a -m flag to the final typeset, this certainly verifies what 
you said.

Thanks


^ permalink raw reply	[relevance 4%]

Results 401-600 of ~2400   |  | reverse | sort options + mbox downloads above
-- links below jump to the message on this page --
2001-07-09 22:35     Proposal to standardize the shell Peter Stephenson
2001-07-10 11:40  5% ` Oliver Kiddle
2001-07-10  8:39  2% PATCH: Documentation indexing, prompt expansion doc Bart Schaefer
2001-07-10 15:42  3% Re: Proposal to standardize the shell David Korn
2001-07-12 16:01  4% long/short options Andrej Borsenkow
2001-07-13  8:07  0% ` Sven Wischnowsky
2001-07-13 12:10  6% PATCH: 4.1: cygwin mount Andrej Borsenkow
2001-07-14  7:05  3% a fix for _chown Akinori MUSHA
2001-07-17 11:00  0% ` Oliver Kiddle
2001-07-17 23:42  0%   ` David Terrell
2001-07-22 22:47     Enhanced shell Peter Stephenson
2001-07-23 11:13  3% ` Oliver Kiddle
2001-07-23 11:38  0%   ` Peter Stephenson
2001-07-23 18:03  3%     ` Bart Schaefer
2001-07-24 13:42  2%       ` Oliver Kiddle
2001-07-29  9:53  4% ` Zefram
2001-07-29 22:07  0%   ` Peter Stephenson
2001-07-30  1:34  4%     ` Bart Schaefer
2001-07-30  2:19  2%   ` Bart Schaefer
2001-07-29 22:11  4% Enhanced shell standard. summary Peter Stephenson
2001-08-03 18:14  4% Function syntax Bart Schaefer
2001-08-06 14:46  4% (Fwd) Re: Value of $0 Bart Schaefer
2001-08-22 15:54     Quoted parameter parsing glitch Bart Schaefer
2001-08-22 16:21  3% ` Borsenkow Andrej
2001-08-22 16:59  4%   ` Bart Schaefer
2001-08-22 18:25  0%     ` Borsenkow Andrej
2001-08-26 17:26           ` Bart Schaefer
2001-08-26 17:59             ` Borsenkow Andrej
2001-08-27  7:22  4%           ` Bart Schaefer
2001-09-08 21:07     PATCH: ztcp Clint Adams
2001-09-09 18:31     ` Bart Schaefer
2001-09-09 22:01       ` Clint Adams
2001-09-09 23:30  4%     ` Bart Schaefer
2001-09-10  0:06  0%       ` Clint Adams
2001-09-18 17:29     trap for EXIT doesn't catch exit? Bart Schaefer
2001-09-19 10:35  2% ` PATCH: " Peter Stephenson
     [not found]     <20010918165111.B17411@greux.loria.fr>
     [not found]     ` <20010918155339.20305.qmail@web12504.mail.yahoo.com>
2001-09-19 14:17  0%   ` hp/ux terminfo Clint Adams
2001-09-20 19:10  3% PATCH: printf builtin Oliver Kiddle
2001-09-24 10:50     Peter Stephenson
2001-09-25 17:17  4% ` Oliver Kiddle
2001-09-25 17:57  0%   ` Peter Stephenson
2001-10-05  1:35  6% PATCH: utf8 for _mount -t vfat Clint Adams
2001-10-12 14:03  3% questions - calling matheval() for printf Oliver Kiddle
2001-10-15 12:54  3% ` Peter Stephenson
2001-10-15 17:11  2%   ` Oliver Kiddle
2001-10-13  7:39     differences between the two branches Bart Schaefer
2000-10-14 19:02  4% ` Peter Stephenson
2001-10-16 17:08  2%   ` Bart Schaefer
2001-10-15 11:20  2% PATCH: arithmetic evaluation for printf Oliver Kiddle
2001-10-16 11:09  4% ` Oliver Kiddle
2001-10-15 11:52  9% behaviour of %q format specifier Oliver Kiddle
2001-10-18 14:15  2% PATCH: specifying arguments in printf formats Oliver Kiddle
2001-10-18 23:44     unlimited file descripters causes problems for zsh-4.0.2 Matthew Braun
2001-10-19 16:40     ` Bart Schaefer
2001-10-19 17:56       ` Bart Schaefer
2001-10-21 19:07         ` Bart Schaefer
2001-10-21 20:17  3%       ` Bart Schaefer
2001-10-22 11:00  1% Make error on Mac OS X 10.1 Steven Farrier
2001-10-25 17:20  4% Mac OS X /bin/sh was zsh, to be replaced with bash Jos Backus
2001-10-25 17:40  0% ` Peter Stephenson
2001-10-25 18:09  3% ` Oliver Kiddle
2001-10-25 18:20       ` Jos Backus
2001-10-25 19:00  4%     ` Oliver Kiddle
2001-11-15 19:10  1% 4.1.0-dev-3 Peter Stephenson
2002-01-14 18:47     PATCH: += parameter assignments Bart Schaefer
2002-01-16 14:43  3% ` Oliver Kiddle
2002-01-27 20:21  3% [tbm@cyrius.com: Bug#130817: zsh's echo doesn't error if device is full] Clint Adams
2002-01-27 20:24  3% [goswin.brederlow@student.uni-tuebingen.de: Bug#131063: zsh: read -r removes \ in \\] Clint Adams
2002-01-30 10:26  3% Andrew Josey: Press Release Peter Stephenson
2002-01-31  3:20  3% problems with RANDOM in subshells Clint Adams
2002-01-31  3:46     Zefram
2002-01-31 11:07  3% ` Peter Stephenson
2002-02-05 19:01     zsh: can't find terminal definition on vt100 rangarao.ragavendran
2002-02-12 16:55  4% ` PATCH: " Bart Schaefer
     [not found]     <Pine.BSF.4.40.0202122237320.98397-100000@brasslantern.com>
2002-02-13 22:35  1% ` Help with compile problem Ken Moorley
2002-02-26 21:39     About 'test' compatibility DervishD
2002-02-26 22:17  3% ` Bart Schaefer
2002-04-09 11:59     Zsh 3 and ${1+"$@"} (Was: [GNU Autoconf 2.53] testsuite.log: 126 failures) Peter Stephenson
2002-04-10 15:52  8% ` Akim Demaille
2002-04-10 17:09       ` Paul Eggert
2002-04-10 17:32 13%     ` Akim Demaille
2002-05-07 11:25     PATCH: zselect builtin Peter Stephenson
2002-05-08  5:36  5% ` Borsenkow Andrej
2002-05-08  9:59  3%   ` Peter Stephenson
2002-05-14 17:44  3% PATCH: gethostbyaddr() argument in tcp.c Peter Stephenson
2002-05-21  5:48  3% command substitution gets confused by case parens Clint Adams
2002-05-21 15:07  3% ` Bart Schaefer
2002-05-25 23:32  4% "command -v" Bruce Stephens
2002-05-26  2:46  0% ` Clint Adams
2002-06-04 16:18     PATCH: function parsing Peter Stephenson
2002-06-04 16:33  3% ` Bart Schaefer
2002-06-05 10:56  0%   ` Peter Stephenson
2002-06-10 12:05  2% The sh substitution problem Peter Stephenson
2002-06-12 13:42  3% typeset verbosity Peter Stephenson
2002-06-12 14:51  3% ` Oliver Kiddle
2002-06-18 22:58  9% posix compliance Clint Adams
2002-06-20 18:05  9% ` Jos Backus
2002-06-20 18:13 10%   ` Bart Schaefer
2002-06-20 19:17  5%     ` Jos Backus
2002-06-20 21:31 10%       ` Dan Nelson
2002-06-21  5:19  9%   ` Borsenkow Andrej
2002-06-21 11:35  5%   ` Oliver Kiddle
2002-06-23 17:53  8%     ` Bart Schaefer
2002-06-20 21:19  5% Chet Ramey
2002-06-21  4:30  5% ` Jos Backus
     [not found]     <19337.1028540626@csr.com>
2002-08-05 12:31  2% ` zsh 4.0.5/4.1.0 release soon? Oliver Kiddle
2002-08-27 10:48     Non-patch: Option arguments Peter Stephenson
2002-08-27 11:36  3% ` Oliver Kiddle
2002-08-27 16:27  0%   ` Peter Stephenson
2002-09-16 11:44  4% PATCH: printf -- Oliver Kiddle
2002-10-10 19:41  3% Recursion and shell functions DervishD
2002-10-10 20:02     ` Jason Price
2002-10-10 21:15  3%   ` DervishD
2002-10-11  1:04  3% PATCH: cap leak Clint Adams
2002-10-18 20:59  4% Linux 2.5 and Zsh bug Stephen Hemminger
2002-10-18 21:50  0% ` Clint Adams
2002-10-26  3:22  3% Inconsistent signal handling? Philippe Troin
2002-12-19 16:34  3% What can we do with the drunken libc? DervishD
2003-02-04 15:44 10% printf and POSIX compliance Stephane CHAZELAS
2003-02-04 18:26 10% ` DervishD
2003-02-05 13:10  9%   ` Stephane CHAZELAS
2003-02-05 13:42  5%     ` Peter Stephenson
2003-02-11 12:09  4%       ` PATCH: unset -v (was Re: printf and POSIX compliance) Oliver Kiddle
2003-02-05 14:41 10%     ` printf and POSIX compliance DervishD
2003-02-11  8:29  8% ` Oliver Kiddle
2003-02-24 17:45     LC_NUMERIC=fr_FR and floating point arithmetics Stephane CHAZELAS
2003-03-10  8:58  8% ` Oliver Kiddle
2003-03-10 19:25       ` Zefram
2003-03-11 10:35  5%     ` Oliver Kiddle
2003-03-12  3:32  0%       ` Philippe Troin
2003-02-26 18:09  7% PATCH: usage of test(1) in zshconfig.ac Clint Adams
2003-03-26 14:16     PATCH: extra loop tests Peter Stephenson
2003-03-26 17:24  3% ` bug in read builtin and " Oliver Kiddle
2003-04-04 13:06  2% PATCH: distribution documentation files Peter Stephenson
2003-04-15 22:01  0% (Fwd) Re: getopts question Bart Schaefer
2003-05-14 10:14  2% PATCH: listing options with set -o/+o Oliver Kiddle
2003-05-14 11:07     Bug#190948: Violation against The Single UNIX ® Specification, Version 2 Oliver Kiddle
2003-05-14 12:40     ` Peter Stephenson
2003-05-14 12:57  5%   ` Bug#190948: Violation against The Single UNIX ? " Zefram
2003-05-14 14:14  0%     ` Peter Stephenson
2003-07-18 21:58     local variable assignment and pipelines? Dan Nelson
2003-07-21  9:59  3% ` Peter Stephenson
2003-07-23  1:12  2% [PATCH] make clone try to acquire a controlling tty Philippe Troin
2003-07-31 21:33     Segfault in completion code Haakon Riiser
2003-08-01 10:58  2% ` Peter Stephenson
2003-09-10 20:23  2% PATCH: options to command builtin Oliver Kiddle
2003-10-28 13:02  1% NSS LDAP/TLS crashing Clint Adams
2003-11-19  1:30  1% Freebsd configure misses <curses.h> and <term.h> Peter Whaite
2003-12-18 12:36     4.0.8 stills thinks Linux hasn't /dev/ptmx DervishD
2003-12-18 17:52  3% ` Peter Stephenson
2003-12-18 20:59  0%   ` DervishD
2003-12-19  0:55  2% Thread developing on austin-group about LINES/COLUMNS Bart Schaefer
     [not found]     <20040103230931.GA63684@quark.localdomain>
2004-01-04 17:43  0% ` Possible bug in zsh Peter Stephenson
2004-02-14 18:43  2% PATCH: fix configure good and proper Peter Stephenson
2004-02-18 22:02     jobs not listing all commands Peter Stephenson
2004-02-20 15:21  8% ` PATCH: ptmx part 2 Peter Stephenson
2004-03-04 13:12     4.2.0-pre-2 Ibraheem Umaru-Mohammed
2004-03-04 13:59  5% ` 4.2.0-pre-2 Peter Stephenson
     [not found]     <20040308122200.GA13641@mail.guild.uwa.edu.au>
2004-03-08 12:34     ` PATCH: case-insensitive globbing Peter Stephenson
2004-03-08 12:40       ` James Devenish
2004-03-08 13:49  3%     ` James Devenish
2004-03-08 16:36  0%       ` Peter Stephenson
2004-03-08 15:23  3% [frederik@ugcs.caltech.edu: Bug#236748: zsh: associative array documentation reference broken] Clint Adams
2004-03-08 17:39     PATCH: terminfo configuration redux Peter Stephenson
2004-03-09  6:18  3% ` Felix Rosencrantz
     [not found]     <200403201750.i2KHo83C009843@soup.in.ql.org>
2004-03-20 21:42  0% ` Bug#239070: zsh: scp completion expands * too soon (patch) Clint Adams
2004-03-23 17:54  2% zsh-4.1.1 and trap '...' DEBUG: a bug or a feature? Nelson H. F. Beebe
2004-03-23 18:20  3% ` Wayne Davison
2004-03-26 16:42     (Fwd) printf for converting numbers to letters, bug? Bart Schaefer
2004-03-26 17:00  3% ` Clint Adams
2004-03-27 23:53  3%   ` Bart Schaefer
2004-03-30  0:04  9% (Fwd) [shell] posix conformance for special built-ins Bart Schaefer
2004-04-01 21:20     zsh and line breaks Peter A. Castro
2004-04-02  9:49  3% ` Dave Korn
2004-04-02 16:59  3%   ` Peter A. Castro
2004-04-13  1:21  2% [ejb@ql.org: Bug#243385: zsh: rsync completion expands * too soon] Clint Adams
     [not found]     <20040417222222.GA27230@quark.hightek.org>
     [not found]     ` <21533.1082374109@csr.com>
2004-04-21  8:21  0%   ` FreeBSD compatability feature request Vincent Stemen
2004-04-21 11:05  2%     ` PATCH: (2) " Peter Stephenson
2004-04-22  8:59  0%       ` Vincent Stemen
2004-04-22  9:59  4%         ` Peter Stephenson
2004-04-22 10:17  4%           ` Peter Stephenson
2004-04-30 21:26  2%         ` PATCH: (3) " Peter Stephenson
2004-05-01  1:45  0%           ` Vincent Stemen
2004-05-01  2:23  0%             ` Vincent Stemen
2004-05-04  7:17  0%           ` PATCH: (3) - FreeBSD compatability issue resolved Vincent Stemen
2004-04-28 13:10  3% [stevenk@debian.org: Bug#246306: zsh: completion file for apt-move] Clint Adams
2004-05-11 14:47  2% Discussion of POSIX "cd" changes from austin-group Bart Schaefer
2004-06-08 18:09     RANDOMSMALL <range> [ <seed> ] Dave Yost
2004-06-08 21:20  3% ` Peter Stephenson
2004-07-28 15:37  3% [hugo@larve.net: Bug#261775: zsh: Space in filenames completion bug for rsync] Clint Adams
2004-08-09 17:37  7% PATCH: truncation warning Peter Stephenson
2004-08-19  6:57  2% history probs, build probs Denis Lagno
2004-09-03 14:02  4% [vincent@vinc17.org: Bug#269769: zsh: sabcmd completion doesn't work] Clint Adams
2004-09-06 12:08     Any comments on users/7883 ? Peter Stephenson
2004-09-06 12:45  4% ` Oliver Kiddle
2004-09-06 13:15  0%   ` Peter Stephenson
2004-09-07  5:24  4%     ` Bart Schaefer
2004-09-11 23:16  3% [joshk@triplehelix.org: Bug#271196: makefile completion catches some delayed expansions as targets] Clint Adams
2004-09-22 15:04     PATCH: zsh-4.2.1: unset does not follow spec Sean C. Farley
2004-09-22 15:28     ` Bart Schaefer
2004-09-22 18:55       ` Matthias B.
2004-09-23  7:54  3%     ` Bart Schaefer
2004-09-23  9:20  5%       ` Peter Stephenson
2004-09-23  9:26  3%       ` Oliver Kiddle
2004-09-23 16:14  4%         ` Bart Schaefer
2004-09-25  2:08  9% More POSIX developments Bart Schaefer
2004-09-27 11:04  6% ` Peter Stephenson
2004-10-02 21:23  5%   ` Bart Schaefer
2004-10-04 10:23  4%     ` Peter Stephenson
2004-10-04 10:49  5%       ` Oliver Kiddle
2004-10-25 16:05  5%       ` Bart Schaefer
2004-10-04 15:31     bug with for and time Nathan Sidwell
2004-10-04 16:10     ` Peter Stephenson
2004-10-05  9:38       ` Matthias B.
2004-10-05 18:18         ` Dan Nelson
2004-10-06 11:48           ` Matthias B.
2004-10-06 17:06             ` Peter Stephenson
2004-10-06 17:53               ` Dan Nelson
2004-10-07  9:37                 ` Peter Stephenson
2004-10-07 15:25  3%               ` Dan Nelson
2004-10-08 13:14  0%                 ` Peter Stephenson
2004-10-18 11:47  2% Pattern changes, part 2 Peter Stephenson
2004-10-25 13:06  4% zsh/bash incompatibilities Matthias B.
2004-10-25 13:20  3% ` DervishD
2004-10-25 15:14  0% ` Peter Stephenson
2004-10-26 14:48  4% [vincent@vinc17.org: Bug#278368: zsh-beta: svn completions no longer work] Clint Adams
2004-11-18 14:52     SUGGESTION: kill -l could show numbers, too Christian Höltje
2004-11-18 16:05     ` Peter Stephenson
2004-11-18 16:39  3%   ` SUGGESTION: kill -l could show numbers, too (+CLD vs CHLD) Stephane Chazelas
2004-11-18 17:22  3%     ` Peter Stephenson
2004-11-19  9:59  3%       ` Peter Stephenson
2004-11-22 16:00  4% More POSIX shell standards stuff Bart Schaefer
2004-11-24  5:01  2% [jjminar@fastmail.fm: Bug#266785: zsh: The elite2 prompt displays the tty incorrectly] Clint Adams
2005-01-03  4:15  4% and lists and suspended processes Clint Adams
2005-01-06 16:05  3% POSIX (austin-group) interpretations Bart Schaefer
     [not found]     <E1CnUVX-0005Di-00@nozomi>
2005-01-09 15:35  0% ` Bug#289442: zsh: completions do not respect LC_COLLATE Clint Adams
2005-01-11 13:52     Some groundwork for Unicode in Zle Peter Stephenson
2005-01-11 15:09  3% ` DervishD
2005-01-12  1:01  8% POSIX conformance in coreutils Vin Shelton
2005-01-12  9:18  9% ` Stephane Chazelas
2005-01-12 16:12  9%   ` POSIX conformance in Solaris Danek Duvall
2005-01-12 10:27  5% ` POSIX conformance in coreutils Peter Stephenson
2005-01-12 10:42  5%   ` Stephane Chazelas
2005-01-12 14:19 10%   ` Vin Shelton
2005-01-12 15:58  9%     ` Peter Stephenson
2005-02-23 16:36  5%       ` Oliver Kiddle
     [not found]             ` <okiddle@yahoo.co.uk>
2005-02-23 18:24  5%           ` Peter Stephenson
2005-01-12 16:18 11%     ` Bart Schaefer
2005-01-12 19:52  1% separate module-linking patch for 4.2.2 Clint Adams
     [not found]     <20050119110447.GA1489@vandal.simcon-mt.de>
2005-01-19 12:20  5% ` unknown limits message Peter Stephenson
2005-02-12 11:26     trap .. EXIT doesn't execute when exit is due to a signal Matthias B.
2005-02-12 21:04     ` Dan Nelson
2005-02-12 21:29  3%   ` Bart Schaefer
2005-02-14 15:33  0%     ` Peter Stephenson
2005-02-18 14:16  2% rlimits.awk bug with new glibc Vincent Lefevre
2005-03-07 20:49  3% Field splitting with trailing non-whitespace IFS characters (fwd) Bart Schaefer
2005-03-09 14:14  3% Unsetting a variable that was not previously set [kind of update] Michael Prokop
2005-03-17 14:31     problem redeclaring path variable (ksh incompatibility) Michael Wardle
2005-03-17 16:50  3% ` Bart Schaefer
2005-03-17 21:42  4%   ` Michael Wardle

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).