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: |
* Re: problem redeclaring path variable (ksh incompatibility)
  @ 2005-03-18  2:42  4%     ` Bart Schaefer
  0 siblings, 0 replies; 200+ results
From: Bart Schaefer @ 2005-03-18  2:42 UTC (permalink / raw)
  To: Michael Wardle; +Cc: zsh-workers

On Mar 18,  8:42am, Michael Wardle wrote:
} Subject: Re: problem redeclaring path variable (ksh incompatibility)
}
} > 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.

Er, I was assuming, because you were posting to a zsh mailing list, that
your usual shell was zsh, which is possibly a bad assumption.  That is,
ARGV0 is magic to zsh -- not to the new zsh being started up, but to the
currently running zsh that is printing your PS1 prompt.  If your login
shell is bash or ksh, the ARGV0=sh isn't going to make any difference.

So, first start an interactive zsh, and then from the prompt of that,
run "ARGV0=sh zsh -p yourtestscript", and NOT "ARGV0=sh yourtestscript".

Or, do "ln -s `which zsh` /tmp/sh" and then "/tmp/sh -p yourtestscript".

} Are you sure this hides $path

It causes it never to become set in the first place.

} 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?

If you want zsh to conform closely to the POSIX shell you have to make a
link to it whose pathname ends in "sh" (actually any string starting with
the letter "s" other than "su" will work) and run it via that link.  The
trick with ARGV0 is a zsh-ism that simulates having done so.

} So this works:
} typeset path
} path=
} path="scalar"

This declares a local path, but it inherits the special features of the
global path.  It then makes it empty (redundant), and finally makes it
a single-element array.

} But this doesn't:
} typeset path=
} path="scalar"

It doesn't work because "typeset path=" fails *entirely* when it prints
the "can't assign initial value" error message; consequently you have
not succeeded in declaring "path" to be local, and the assigment affects
the global.

} And neither does this:
} typeset path=""
} path="scalar"

Same problem.

} > 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.

Right, I forgot the -m is required in 4.2.  I tried it in 4.0, in which
older version "emulate ksh" does not imply "setopt TYPESET_SILENT".


^ permalink raw reply	[relevance 4%]

* Problem with the configure script (2.4.2)
@ 2005-03-15 16:38  1% Mike Dowling
  2005-03-19 15:44  0% ` Philippe Troin
  2005-03-19 15:52  0% ` Andrey Borzenkov
  0 siblings, 2 replies; 200+ results
From: Mike Dowling @ 2005-03-15 16:38 UTC (permalink / raw)
  To: zsh-workers

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

Hello,

I cannot get configure to produce a Makefile or a config.h file.  I
suspect that the problem lies with me, but I would be very grateful for
any hints as to how I can solve the problem.

#./configure

produces lots of output, as usual, and perminates with

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... yes
checking if link() works... yes
checking if kill(pid, 0) returns ESRCH correctly... yes
checking if POSIX sigsuspend() works... yes

Everything looks fine, until I enter

#make
make: *** No targets specified and no makefile found.  Stop.

But there's no Make file.  config.log also looks inoccuous enough
(attached).

What could possibly be going wrong?

Cheers,
Mike Dowling

[-- Attachment #2: config.log --]
[-- Type: text/plain, Size: 332077 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.59.  Invocation command line was

  $ ./configure 

## --------- ##
## Platform. ##
## --------- ##

hostname = moocow.localhost
uname -m = i686
uname -r = 2.6.11.2
uname -s = Linux
uname -v = #3 Sun Mar 13 10:32:04 CET 2005

/usr/bin/uname -p = unknown
/bin/uname -X     = unknown

/bin/arch              = i686
/usr/bin/arch -k       = unknown
/usr/convex/getsysinfo = unknown
hostinfo               = unknown
/bin/machine           = unknown
/usr/bin/oslevel       = unknown
/bin/universe          = unknown

PATH: //bin
PATH: /sbin
PATH: /usr/sbin
PATH: /bin
PATH: /usr/bin
PATH: /usr/bin/X11
PATH: /usr/local/bin
PATH: /usr/local/X11/bin


## ----------- ##
## Core tests. ##
## ----------- ##

configure:1374: checking build system type
configure:1392: result: i686-pc-linux-gnu
configure:1400: checking host system type
configure:1414: result: i686-pc-linux-gnu
configure:1885: checking for gcc
configure:1901: found /usr/bin/gcc
configure:1911: result: gcc
configure:2155: checking for C compiler version
configure:2158: gcc --version </dev/null >&5
gcc (GCC) 3.4.1
Copyright (C) 2004 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.

configure:2161: $? = 0
configure:2163: gcc -v </dev/null >&5
Reading specs from /usr/lib/gcc/i686-pc-linux-gnu/3.4.1/specs
Configured with: ../gcc-3.4.1/configure --prefix=/usr --disable-nls
Thread model: posix
gcc version 3.4.1
configure:2166: $? = 0
configure:2168: gcc -V </dev/null >&5
gcc: `-V' option must have argument
configure:2171: $? = 1
configure:2194: checking for C compiler default output file name
configure:2197: gcc    conftest.c  >&5
configure:2200: $? = 0
configure:2246: result: a.out
configure:2251: checking whether the C compiler works
configure:2257: ./a.out
configure:2260: $? = 0
configure:2277: result: yes
configure:2284: checking whether we are cross compiling
configure:2286: result: no
configure:2289: checking for suffix of executables
configure:2291: gcc -o conftest    conftest.c  >&5
configure:2294: $? = 0
configure:2319: result: 
configure:2325: checking for suffix of object files
configure:2346: gcc -c   conftest.c >&5
configure:2349: $? = 0
configure:2371: result: o
configure:2375: checking whether we are using the GNU C compiler
configure:2399: gcc -c   conftest.c >&5
configure:2405: $? = 0
configure:2409: test -z 
			 || test ! -s conftest.err
configure:2412: $? = 0
configure:2415: test -s conftest.o
configure:2418: $? = 0
configure:2431: result: yes
configure:2437: checking whether gcc accepts -g
configure:2458: gcc -c -g  conftest.c >&5
configure:2464: $? = 0
configure:2468: test -z 
			 || test ! -s conftest.err
configure:2471: $? = 0
configure:2474: test -s conftest.o
configure:2477: $? = 0
configure:2488: result: yes
configure:2505: checking for gcc option to accept ANSI C
configure:2575: gcc  -c   conftest.c >&5
configure:2581: $? = 0
configure:2585: test -z 
			 || test ! -s conftest.err
configure:2588: $? = 0
configure:2591: test -s conftest.o
configure:2594: $? = 0
configure:2612: result: none needed
configure:2630: gcc -c   conftest.c >&5
conftest.c:2: error: parse error before "me"
configure:2636: $? = 1
configure: failed program was:
| #ifndef __cplusplus
|   choke me
| #endif
configure:2774: checking whether large file support needs explicit enabling
configure:2803: result: yes
configure:2882: checking how to run the C preprocessor
configure:2917: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:2923: $? = 0
configure:2955: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
conftest.c:20:28: ac_nonexistent.h: No such file or directory
configure:2961: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| /* end confdefs.h.  */
| #include <ac_nonexistent.h>
configure:3000: result: gcc -E
configure:3024: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:3030: $? = 0
configure:3062: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
conftest.c:20:28: ac_nonexistent.h: No such file or directory
configure:3068: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| /* end confdefs.h.  */
| #include <ac_nonexistent.h>
configure:3112: checking for egrep
configure:3122: result: grep -E
configure:3128: checking whether gcc needs -traditional
configure:3170: result: no
configure:3176: checking for an ANSI C-conforming const
configure:3243: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
conftest.c: In function `main':
conftest.c:47: warning: unused variable `s'
conftest.c:67: warning: unused variable `foo'
conftest.c:28: warning: unused variable `x'
conftest.c:34: warning: unused variable `zero'
conftest.c:64: warning: 'b' might be used uninitialized in this function
conftest.c:46: warning: 't' might be used uninitialized in this function
configure:3249: $? = 0
configure:3253: test -z 
			 || test ! -s conftest.err
configure:3256: $? = 0
configure:3259: test -s conftest.o
configure:3262: $? = 0
configure:3273: result: yes
configure:3287: checking for gcc option to accept ANSI C
configure:3327: gcc -c  -Wall -Wmissing-prototypes -O2  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:3333: $? = 0
configure:3337: test -z 
			 || test ! -s conftest.err
configure:3340: $? = 0
configure:3343: test -s conftest.o
configure:3346: $? = 0
configure:3359: result: 
configure:3366: checking whether to use prototypes
configure:3385: result: yes
configure:3397: checking for working alloca.h
configure:3418: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c  >&5
conftest.c: In function `main':
conftest.c:25: warning: unused variable `p'
configure:3424: $? = 0
configure:3428: test -z 
			 || test ! -s conftest.err
configure:3431: $? = 0
configure:3434: test -s conftest
configure:3437: $? = 0
configure:3449: result: yes
configure:3459: checking for alloca
configure:3500: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c  >&5
conftest.c: In function `main':
conftest.c:46: warning: unused variable `p'
configure:3506: $? = 0
configure:3510: test -z 
			 || test ! -s conftest.err
configure:3513: $? = 0
configure:3516: test -s conftest
configure:3519: $? = 0
configure:3531: result: yes
configure:3754: checking if the compiler supports union initialisation
configure:3775: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:3781: $? = 0
configure:3785: test -z 
			 || test ! -s conftest.err
configure:3788: $? = 0
configure:3791: test -s conftest.o
configure:3794: $? = 0
configure:3805: result: yes
configure:3816: checking if signed to unsigned casting is broken
configure:3833: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c  >&5
conftest.c:24: warning: return type defaults to `int'
configure:3836: $? = 0
configure:3838: ./conftest
configure:3841: $? = 1
configure: program exited with status 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| /* end confdefs.h.  */
| main(){return((int)(unsigned char)((char) -1) == 255);}
configure:3855: result: no
configure:3866: checking if the compiler supports variable-length arrays
configure:3887: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
conftest.c: In function `main':
conftest.c:28: warning: unused variable `i'
conftest.c:28: warning: unused variable `a'
configure:3893: $? = 0
configure:3897: test -z 
			 || test ! -s conftest.err
configure:3900: $? = 0
configure:3903: test -s conftest.o
configure:3906: $? = 0
configure:3917: result: yes
configure:3928: checking whether make sets $(MAKE)
configure:3948: result: yes
configure:3969: checking for a BSD-compatible install
configure:4024: result: //bin/install -c
configure:4038: checking for gawk
configure:4054: found //bin/gawk
configure:4064: result: gawk
configure:4073: checking whether ln works
configure:4091: result: yes
configure:4101: checking for yodl
configure:4130: result: no
configure:4142: checking for ansi2knr
configure:4171: result: no
configure:4198: checking for dirent.h that defines DIR
configure:4222: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4228: $? = 0
configure:4232: test -z 
			 || test ! -s conftest.err
configure:4235: $? = 0
configure:4238: test -s conftest.o
configure:4241: $? = 0
configure:4252: result: yes
configure:4265: checking for library containing opendir
configure:4295: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c  >&5
configure:4301: $? = 0
configure:4305: test -z 
			 || test ! -s conftest.err
configure:4308: $? = 0
configure:4311: test -s conftest
configure:4314: $? = 0
configure:4384: result: none required
configure:4520: checking for ANSI C header files
configure:4545: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4551: $? = 0
configure:4555: test -z 
			 || test ! -s conftest.err
configure:4558: $? = 0
configure:4561: test -s conftest.o
configure:4564: $? = 0
configure:4653: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c  >&5
conftest.c: In function `main':
conftest.c:43: warning: implicit declaration of function `exit'
configure:4656: $? = 0
configure:4658: ./conftest
configure:4661: $? = 0
configure:4676: result: yes
configure:4686: checking whether time.h and sys/time.h may both be included
configure:4711: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4717: $? = 0
configure:4721: test -z 
			 || test ! -s conftest.err
configure:4724: $? = 0
configure:4727: test -s conftest.o
configure:4730: $? = 0
configure:4741: result: yes
configure:4751: checking whether stat file-mode macros are broken
configure:4799: result: no
configure:4809: checking for sys/wait.h that is POSIX.1 compatible
configure:4840: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4846: $? = 0
configure:4850: test -z 
			 || test ! -s conftest.err
configure:4853: $? = 0
configure:4856: test -s conftest.o
configure:4859: $? = 0
configure:4870: result: yes
configure:4937: checking for sys/types.h
configure:4953: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4959: $? = 0
configure:4963: test -z 
			 || test ! -s conftest.err
configure:4966: $? = 0
configure:4969: test -s conftest.o
configure:4972: $? = 0
configure:4983: result: yes
configure:4937: checking for sys/stat.h
configure:4953: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4959: $? = 0
configure:4963: test -z 
			 || test ! -s conftest.err
configure:4966: $? = 0
configure:4969: test -s conftest.o
configure:4972: $? = 0
configure:4983: result: yes
configure:4937: checking for stdlib.h
configure:4953: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4959: $? = 0
configure:4963: test -z 
			 || test ! -s conftest.err
configure:4966: $? = 0
configure:4969: test -s conftest.o
configure:4972: $? = 0
configure:4983: result: yes
configure:4937: checking for string.h
configure:4953: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4959: $? = 0
configure:4963: test -z 
			 || test ! -s conftest.err
configure:4966: $? = 0
configure:4969: test -s conftest.o
configure:4972: $? = 0
configure:4983: result: yes
configure:4937: checking for memory.h
configure:4953: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4959: $? = 0
configure:4963: test -z 
			 || test ! -s conftest.err
configure:4966: $? = 0
configure:4969: test -s conftest.o
configure:4972: $? = 0
configure:4983: result: yes
configure:4937: checking for strings.h
configure:4953: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4959: $? = 0
configure:4963: test -z 
			 || test ! -s conftest.err
configure:4966: $? = 0
configure:4969: test -s conftest.o
configure:4972: $? = 0
configure:4983: result: yes
configure:4937: checking for inttypes.h
configure:4953: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4959: $? = 0
configure:4963: test -z 
			 || test ! -s conftest.err
configure:4966: $? = 0
configure:4969: test -s conftest.o
configure:4972: $? = 0
configure:4983: result: yes
configure:4937: checking for stdint.h
configure:4953: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4959: $? = 0
configure:4963: test -z 
			 || test ! -s conftest.err
configure:4966: $? = 0
configure:4969: test -s conftest.o
configure:4972: $? = 0
configure:4983: result: yes
configure:4937: checking for unistd.h
configure:4953: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:4959: $? = 0
configure:4963: test -z 
			 || test ! -s conftest.err
configure:4966: $? = 0
configure:4969: test -s conftest.o
configure:4972: $? = 0
configure:4983: result: yes
configure:5049: checking sys/time.h usability
configure:5061: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:5067: $? = 0
configure:5071: test -z 
			 || test ! -s conftest.err
configure:5074: $? = 0
configure:5077: test -s conftest.o
configure:5080: $? = 0
configure:5090: result: yes
configure:5094: checking sys/time.h presence
configure:5104: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:5110: $? = 0
configure:5130: result: yes
configure:5165: checking for sys/time.h
configure:5172: result: yes
configure:5049: checking sys/times.h usability
configure:5061: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:5067: $? = 0
configure:5071: test -z 
			 || test ! -s conftest.err
configure:5074: $? = 0
configure:5077: test -s conftest.o
configure:5080: $? = 0
configure:5090: result: yes
configure:5094: checking sys/times.h presence
configure:5104: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:5110: $? = 0
configure:5130: result: yes
configure:5165: checking for sys/times.h
configure:5172: result: yes
configure:5049: checking sys/select.h usability
configure:5061: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:5067: $? = 0
configure:5071: test -z 
			 || test ! -s conftest.err
configure:5074: $? = 0
configure:5077: test -s conftest.o
configure:5080: $? = 0
configure:5090: result: yes
configure:5094: checking sys/select.h presence
configure:5104: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:5110: $? = 0
configure:5130: result: yes
configure:5165: checking for sys/select.h
configure:5172: result: yes
configure:5049: checking termcap.h usability
configure:5061: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:5067: $? = 0
configure:5071: test -z 
			 || test ! -s conftest.err
configure:5074: $? = 0
configure:5077: test -s conftest.o
configure:5080: $? = 0
configure:5090: result: yes
configure:5094: checking termcap.h presence
configure:5104: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:5110: $? = 0
configure:5130: result: yes
configure:5165: checking for termcap.h
configure:5172: result: yes
configure:5049: checking termio.h usability
configure:5061: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:5067: $? = 0
configure:5071: test -z 
			 || test ! -s conftest.err
configure:5074: $? = 0
configure:5077: test -s conftest.o
configure:5080: $? = 0
configure:5090: result: yes
configure:5094: checking termio.h presence
configure:5104: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:5110: $? = 0
configure:5130: result: yes
configure:5165: checking for termio.h
configure:5172: result: yes
configure:5049: checking termios.h usability
configure:5061: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:5067: $? = 0
configure:5071: test -z 
			 || test ! -s conftest.err
configure:5074: $? = 0
configure:5077: test -s conftest.o
configure:5080: $? = 0
configure:5090: result: yes
configure:5094: checking termios.h presence
configure:5104: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:5110: $? = 0
configure:5130: result: yes
configure:5165: checking for termios.h
configure:5172: result: yes
configure:5049: checking sys/param.h usability
configure:5061: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:5067: $? = 0
configure:5071: test -z 
			 || test ! -s conftest.err
configure:5074: $? = 0
configure:5077: test -s conftest.o
configure:5080: $? = 0
configure:5090: result: yes
configure:5094: checking sys/param.h presence
configure:5104: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:5110: $? = 0
configure:5130: result: yes
configure:5165: checking for sys/param.h
configure:5172: result: yes
configure:5049: checking sys/filio.h usability
configure:5061: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
conftest.c:79:23: sys/filio.h: No such file or directory
configure:5067: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_H 1
| /* end 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/filio.h>
configure:5090: result: no
configure:5094: checking sys/filio.h presence
configure:5104: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
conftest.c:45:23: sys/filio.h: No such file or directory
configure:5110: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_H 1
| /* end confdefs.h.  */
| #include <sys/filio.h>
configure:5130: result: no
configure:5165: checking for sys/filio.h
configure:5172: result: no
configure:5040: checking for string.h
configure:5045: result: yes
configure:5040: checking for memory.h
configure:5045: result: yes
configure:5049: checking limits.h usability
configure:5061: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:5067: $? = 0
configure:5071: test -z 
			 || test ! -s conftest.err
configure:5074: $? = 0
configure:5077: test -s conftest.o
configure:5080: $? = 0
configure:5090: result: yes
configure:5094: checking limits.h presence
configure:5104: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:5110: $? = 0
configure:5130: result: yes
configure:5165: checking for limits.h
configure:5172: result: yes
configure:5049: checking fcntl.h usability
configure:5061: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:5067: $? = 0
configure:5071: test -z 
			 || test ! -s conftest.err
configure:5074: $? = 0
configure:5077: test -s conftest.o
configure:5080: $? = 0
configure:5090: result: yes
configure:5094: checking fcntl.h presence
configure:5104: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:5110: $? = 0
configure:5130: result: yes
configure:5165: checking for fcntl.h
configure:5172: result: yes
configure:5049: checking libc.h usability
configure:5061: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
conftest.c:83:18: libc.h: No such file or directory
configure:5067: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_LIMITS_H 1
| #define HAVE_FCNTL_H 1
| /* end 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:5090: result: no
configure:5094: checking libc.h presence
configure:5104: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
conftest.c:49:18: libc.h: No such file or directory
configure:5110: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_LIMITS_H 1
| #define HAVE_FCNTL_H 1
| /* end confdefs.h.  */
| #include <libc.h>
configure:5130: result: no
configure:5165: checking for libc.h
configure:5172: result: no
configure:5049: checking sys/utsname.h usability
configure:5061: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:5067: $? = 0
configure:5071: test -z 
			 || test ! -s conftest.err
configure:5074: $? = 0
configure:5077: test -s conftest.o
configure:5080: $? = 0
configure:5090: result: yes
configure:5094: checking sys/utsname.h presence
configure:5104: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:5110: $? = 0
configure:5130: result: yes
configure:5165: checking for sys/utsname.h
configure:5172: result: yes
configure:5049: checking sys/resource.h usability
configure:5061: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:5067: $? = 0
configure:5071: test -z 
			 || test ! -s conftest.err
configure:5074: $? = 0
configure:5077: test -s conftest.o
configure:5080: $? = 0
configure:5090: result: yes
configure:5094: checking sys/resource.h presence
configure:5104: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:5110: $? = 0
configure:5130: result: yes
configure:5165: checking for sys/resource.h
configure:5172: result: yes
configure:5049: checking locale.h usability
configure:5061: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:5067: $? = 0
configure:5071: test -z 
			 || test ! -s conftest.err
configure:5074: $? = 0
configure:5077: test -s conftest.o
configure:5080: $? = 0
configure:5090: result: yes
configure:5094: checking locale.h presence
configure:5104: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:5110: $? = 0
configure:5130: result: yes
configure:5165: checking for locale.h
configure:5172: result: yes
configure:5049: checking errno.h usability
configure:5061: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:5067: $? = 0
configure:5071: test -z 
			 || test ! -s conftest.err
configure:5074: $? = 0
configure:5077: test -s conftest.o
configure:5080: $? = 0
configure:5090: result: yes
configure:5094: checking errno.h presence
configure:5104: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:5110: $? = 0
configure:5130: result: yes
configure:5165: checking for errno.h
configure:5172: result: yes
configure:5049: checking stdio.h usability
configure:5061: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:5067: $? = 0
configure:5071: test -z 
			 || test ! -s conftest.err
configure:5074: $? = 0
configure:5077: test -s conftest.o
configure:5080: $? = 0
configure:5090: result: yes
configure:5094: checking stdio.h presence
configure:5104: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:5110: $? = 0
configure:5130: result: yes
configure:5165: checking for stdio.h
configure:5172: result: yes
configure:5040: checking for stdlib.h
configure:5045: result: yes
configure:5040: checking for unistd.h
configure:5045: result: yes
configure:5049: checking sys/capability.h usability
configure:5061: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
conftest.c:90:28: sys/capability.h: No such file or directory
configure:5067: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_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
| /* end 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:5090: result: no
configure:5094: checking sys/capability.h presence
configure:5104: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
conftest.c:56:28: sys/capability.h: No such file or directory
configure:5110: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_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
| /* end confdefs.h.  */
| #include <sys/capability.h>
configure:5130: result: no
configure:5165: checking for sys/capability.h
configure:5172: result: no
configure:5049: checking utmp.h usability
configure:5061: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:5067: $? = 0
configure:5071: test -z 
			 || test ! -s conftest.err
configure:5074: $? = 0
configure:5077: test -s conftest.o
configure:5080: $? = 0
configure:5090: result: yes
configure:5094: checking utmp.h presence
configure:5104: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:5110: $? = 0
configure:5130: result: yes
configure:5165: checking for utmp.h
configure:5172: result: yes
configure:5049: checking utmpx.h usability
configure:5061: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:5067: $? = 0
configure:5071: test -z 
			 || test ! -s conftest.err
configure:5074: $? = 0
configure:5077: test -s conftest.o
configure:5080: $? = 0
configure:5090: result: yes
configure:5094: checking utmpx.h presence
configure:5104: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:5110: $? = 0
configure:5130: result: yes
configure:5165: checking for utmpx.h
configure:5172: result: yes
configure:5040: checking for sys/types.h
configure:5045: result: yes
configure:5049: checking pwd.h usability
configure:5061: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:5067: $? = 0
configure:5071: test -z 
			 || test ! -s conftest.err
configure:5074: $? = 0
configure:5077: test -s conftest.o
configure:5080: $? = 0
configure:5090: result: yes
configure:5094: checking pwd.h presence
configure:5104: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:5110: $? = 0
configure:5130: result: yes
configure:5165: checking for pwd.h
configure:5172: result: yes
configure:5049: checking grp.h usability
configure:5061: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:5067: $? = 0
configure:5071: test -z 
			 || test ! -s conftest.err
configure:5074: $? = 0
configure:5077: test -s conftest.o
configure:5080: $? = 0
configure:5090: result: yes
configure:5094: checking grp.h presence
configure:5104: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:5110: $? = 0
configure:5130: result: yes
configure:5165: checking for grp.h
configure:5172: result: yes
configure:5049: checking poll.h usability
configure:5061: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:5067: $? = 0
configure:5071: test -z 
			 || test ! -s conftest.err
configure:5074: $? = 0
configure:5077: test -s conftest.o
configure:5080: $? = 0
configure:5090: result: yes
configure:5094: checking poll.h presence
configure:5104: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:5110: $? = 0
configure:5130: result: yes
configure:5165: checking for poll.h
configure:5172: result: yes
configure:5049: checking sys/mman.h usability
configure:5061: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:5067: $? = 0
configure:5071: test -z 
			 || test ! -s conftest.err
configure:5074: $? = 0
configure:5077: test -s conftest.o
configure:5080: $? = 0
configure:5090: result: yes
configure:5094: checking sys/mman.h presence
configure:5104: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:5110: $? = 0
configure:5130: result: yes
configure:5165: checking for sys/mman.h
configure:5172: result: yes
configure:5049: checking netinet/in_systm.h usability
configure:5061: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:5067: $? = 0
configure:5071: test -z 
			 || test ! -s conftest.err
configure:5074: $? = 0
configure:5077: test -s conftest.o
configure:5080: $? = 0
configure:5090: result: yes
configure:5094: checking netinet/in_systm.h presence
configure:5104: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:5110: $? = 0
configure:5130: result: yes
configure:5165: checking for netinet/in_systm.h
configure:5172: result: yes
configure:5049: checking pcre.h usability
configure:5061: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
conftest.c:98:18: pcre.h: No such file or directory
configure:5067: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_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_UTMPX_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
| /* end 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:5090: result: no
configure:5094: checking pcre.h presence
configure:5104: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
conftest.c:64:18: pcre.h: No such file or directory
configure:5110: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_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_UTMPX_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
| /* end confdefs.h.  */
| #include <pcre.h>
configure:5130: result: no
configure:5165: checking for pcre.h
configure:5172: result: no
configure:5049: checking langinfo.h usability
configure:5061: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:5067: $? = 0
configure:5071: test -z 
			 || test ! -s conftest.err
configure:5074: $? = 0
configure:5077: test -s conftest.o
configure:5080: $? = 0
configure:5090: result: yes
configure:5094: checking langinfo.h presence
configure:5104: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:5110: $? = 0
configure:5130: result: yes
configure:5165: checking for langinfo.h
configure:5172: result: yes
configure:5049: checking wchar.h usability
configure:5061: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:5067: $? = 0
configure:5071: test -z 
			 || test ! -s conftest.err
configure:5074: $? = 0
configure:5077: test -s conftest.o
configure:5080: $? = 0
configure:5090: result: yes
configure:5094: checking wchar.h presence
configure:5104: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:5110: $? = 0
configure:5130: result: yes
configure:5165: checking for wchar.h
configure:5172: result: yes
configure:5049: checking stddef.h usability
configure:5061: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:5067: $? = 0
configure:5071: test -z 
			 || test ! -s conftest.err
configure:5074: $? = 0
configure:5077: test -s conftest.o
configure:5080: $? = 0
configure:5090: result: yes
configure:5094: checking stddef.h presence
configure:5104: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:5110: $? = 0
configure:5130: result: yes
configure:5165: checking for stddef.h
configure:5172: result: yes
configure:5049: checking sys/stropts.h usability
configure:5061: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:5067: $? = 0
configure:5071: test -z 
			 || test ! -s conftest.err
configure:5074: $? = 0
configure:5077: test -s conftest.o
configure:5080: $? = 0
configure:5090: result: yes
configure:5094: checking sys/stropts.h presence
configure:5104: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:5110: $? = 0
configure:5130: result: yes
configure:5165: checking for sys/stropts.h
configure:5172: result: yes
configure:5049: checking iconv.h usability
configure:5061: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:5067: $? = 0
configure:5071: test -z 
			 || test ! -s conftest.err
configure:5074: $? = 0
configure:5077: test -s conftest.o
configure:5080: $? = 0
configure:5090: result: yes
configure:5094: checking iconv.h presence
configure:5104: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:5110: $? = 0
configure:5130: result: yes
configure:5165: checking for iconv.h
configure:5172: result: yes
configure:5200: checking dlfcn.h usability
configure:5212: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:5218: $? = 0
configure:5222: test -z 
			 || test ! -s conftest.err
configure:5225: $? = 0
configure:5228: test -s conftest.o
configure:5231: $? = 0
configure:5241: result: yes
configure:5245: checking dlfcn.h presence
configure:5255: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:5261: $? = 0
configure:5281: result: yes
configure:5316: checking for dlfcn.h
configure:5323: result: yes
configure:5350: checking dl.h usability
configure:5362: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
conftest.c:104:16: dl.h: No such file or directory
configure:5368: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_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_UTMPX_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_SYS_STROPTS_H 1
| #define HAVE_ICONV_H 1
| #define HAVE_DLFCN_H 1
| /* end 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:5391: result: no
configure:5395: checking dl.h presence
configure:5405: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
conftest.c:70:16: dl.h: No such file or directory
configure:5411: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_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_UTMPX_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_SYS_STROPTS_H 1
| #define HAVE_ICONV_H 1
| #define HAVE_DLFCN_H 1
| /* end confdefs.h.  */
| #include <dl.h>
configure:5431: result: no
configure:5466: checking for dl.h
configure:5473: result: no
configure:5491: checking for conflicts in sys/time.h and sys/select.h
configure:5513: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
conftest.c: In function `main':
conftest.c:75: warning: unused variable `i'
configure:5519: $? = 0
configure:5523: test -z 
			 || test ! -s conftest.err
configure:5526: $? = 0
configure:5529: test -s conftest.o
configure:5532: $? = 0
configure:5543: result: no
configure:5553: checking POSIX termios
configure:5577: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c  >&5
configure:5583: $? = 0
configure:5587: test -z 
			 || test ! -s conftest.err
configure:5590: $? = 0
configure:5593: test -s conftest
configure:5596: $? = 0
configure:5608: result: yes
configure:5612: checking TIOCGWINSZ in termios.h
configure:5634: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c  >&5
conftest.c: In function `main':
conftest.c:75: error: `TIOCGWINSZ' undeclared (first use in this function)
conftest.c:75: error: (Each undeclared identifier is reported only once
conftest.c:75: error: for each function it appears in.)
conftest.c:75: warning: unused variable `x'
configure:5640: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_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_UTMPX_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_SYS_STROPTS_H 1
| #define HAVE_ICONV_H 1
| #define HAVE_DLFCN_H 1
| /* end confdefs.h.  */
| #include <sys/types.h>
| #include <termios.h>
| int
| main ()
| {
| int x = TIOCGWINSZ;
|   ;
|   return 0;
| }
configure:5665: result: no
configure:5674: checking TIOCGWINSZ in sys/ioctl.h
configure:5696: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c  >&5
conftest.c: In function `main':
conftest.c:75: warning: unused variable `x'
configure:5702: $? = 0
configure:5706: test -z 
			 || test ! -s conftest.err
configure:5709: $? = 0
configure:5712: test -s conftest
configure:5715: $? = 0
configure:5727: result: yes
configure:5739: checking for streams headers including struct winsize
configure:5761: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
conftest.c:71:24: sys/stream.h: No such file or directory
conftest.c:72:22: sys/ptem.h: No such file or directory
conftest.c: In function `main':
conftest.c:77: error: storage size of 'wsz' isn't known
conftest.c:77: warning: unused variable `wsz'
configure:5767: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_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_UTMPX_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_SYS_STROPTS_H 1
| #define HAVE_ICONV_H 1
| #define HAVE_DLFCN_H 1
| #define GWINSZ_IN_SYS_IOCTL 1
| /* end confdefs.h.  */
| #include <sys/stream.h>
| #include <sys/ptem.h>
| int
| main ()
| {
| struct winsize wsz
|   ;
|   return 0;
| }
configure:5791: result: no
configure:5801: checking for printf in -lc
configure:5831: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -lc   >&5
conftest.c:78: warning: conflicting types for built-in function 'printf'
configure:5837: $? = 0
configure:5841: test -z 
			 || test ! -s conftest.err
configure:5844: $? = 0
configure:5847: test -s conftest
configure:5850: $? = 0
configure:5863: result: yes
configure:5871: checking for pow in -lm
configure:5901: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -lm   -lc >&5
conftest.c:78: warning: conflicting types for built-in function 'pow'
configure:5907: $? = 0
configure:5911: test -z 
			 || test ! -s conftest.err
configure:5914: $? = 0
configure:5917: test -s conftest
configure:5920: $? = 0
configure:5933: result: yes
configure:6101: checking for library containing tgetent
configure:6131: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -lm  -lc >&5
/tmp/ccSjMa8i.o(.text+0xd): In function `main':
: undefined reference to `tgetent'
collect2: ld returned 1 exit status
configure:6137: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_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_UTMPX_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_SYS_STROPTS_H 1
| #define HAVE_ICONV_H 1
| #define HAVE_DLFCN_H 1
| #define GWINSZ_IN_SYS_IOCTL 1
| #define HAVE_LIBM 1
| /* end 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 ();
| int
| main ()
| {
| tgetent ();
|   ;
|   return 0;
| }
configure:6186: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo  -lm  -lc >&5
/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/../../../../i686-pc-linux-gnu/bin/ld: cannot find -ltinfo
collect2: ld returned 1 exit status
configure:6192: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_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_UTMPX_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_SYS_STROPTS_H 1
| #define HAVE_ICONV_H 1
| #define HAVE_DLFCN_H 1
| #define GWINSZ_IN_SYS_IOCTL 1
| #define HAVE_LIBM 1
| /* end 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 ();
| int
| main ()
| {
| tgetent ();
|   ;
|   return 0;
| }
configure:6186: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltermcap  -lm  -lc >&5
configure:6192: $? = 0
configure:6196: test -z 
			 || test ! -s conftest.err
configure:6199: $? = 0
configure:6202: test -s conftest
configure:6205: $? = 0
configure:6220: result: -ltermcap
configure:6227: checking for library containing tigetflag
configure:6257: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltermcap -lm  -lc >&5
/tmp/cckhwUaS.o(.text+0xd): In function `main':
: undefined reference to `tigetflag'
collect2: ld returned 1 exit status
configure:6263: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_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_UTMPX_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_SYS_STROPTS_H 1
| #define HAVE_ICONV_H 1
| #define HAVE_DLFCN_H 1
| #define GWINSZ_IN_SYS_IOCTL 1
| #define HAVE_LIBM 1
| /* end 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 tigetflag ();
| int
| main ()
| {
| tigetflag ();
|   ;
|   return 0;
| }
configure:6312: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltinfo  -ltermcap -lm  -lc >&5
/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/../../../../i686-pc-linux-gnu/bin/ld: cannot find -ltinfo
collect2: ld returned 1 exit status
configure:6318: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_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_UTMPX_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_SYS_STROPTS_H 1
| #define HAVE_ICONV_H 1
| #define HAVE_DLFCN_H 1
| #define GWINSZ_IN_SYS_IOCTL 1
| #define HAVE_LIBM 1
| /* end 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 tigetflag ();
| int
| main ()
| {
| tigetflag ();
|   ;
|   return 0;
| }
configure:6312: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ltermcap  -ltermcap -lm  -lc >&5
/tmp/ccE7ognf.o(.text+0xd): In function `main':
: undefined reference to `tigetflag'
collect2: ld returned 1 exit status
configure:6318: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_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_UTMPX_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_SYS_STROPTS_H 1
| #define HAVE_ICONV_H 1
| #define HAVE_DLFCN_H 1
| #define GWINSZ_IN_SYS_IOCTL 1
| #define HAVE_LIBM 1
| /* end 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 tigetflag ();
| int
| main ()
| {
| tigetflag ();
|   ;
|   return 0;
| }
configure:6312: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -lcurses  -ltermcap -lm  -lc >&5
configure:6318: $? = 0
configure:6322: test -z 
			 || test ! -s conftest.err
configure:6325: $? = 0
configure:6328: test -s conftest
configure:6331: $? = 0
configure:6346: result: -lcurses
configure:6367: checking curses.h usability
configure:6379: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:6385: $? = 0
configure:6389: test -z 
			 || test ! -s conftest.err
configure:6392: $? = 0
configure:6395: test -s conftest.o
configure:6398: $? = 0
configure:6408: result: yes
configure:6412: checking curses.h presence
configure:6422: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:6428: $? = 0
configure:6448: result: yes
configure:6483: checking for curses.h
configure:6490: result: yes
configure:6579: checking term.h usability
configure:6591: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:6597: $? = 0
configure:6601: test -z 
			 || test ! -s conftest.err
configure:6604: $? = 0
configure:6607: test -s conftest.o
configure:6610: $? = 0
configure:6620: result: yes
configure:6624: checking term.h presence
configure:6634: gcc -E -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c
configure:6640: $? = 0
configure:6660: result: yes
configure:6695: checking for term.h
configure:6702: result: yes
configure:6710: checking if term.h needs curses.h
configure:6728: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
conftest.c: In function `main':
conftest.c:78: warning: initialization discards qualifiers from pointer target type
conftest.c:78: warning: unused variable `test'
configure:6734: $? = 0
configure:6738: test -z 
			 || test ! -s conftest.err
configure:6741: $? = 0
configure:6744: test -s conftest.o
configure:6747: $? = 0
configure:6774: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
conftest.c: In function `main':
conftest.c:79: warning: initialization discards qualifiers from pointer target type
conftest.c:79: warning: unused variable `test'
configure:6780: $? = 0
configure:6784: test -z 
			 || test ! -s conftest.err
configure:6787: $? = 0
configure:6790: test -s conftest.o
configure:6793: $? = 0
configure:6812: result: no
configure:6816: checking if boolcodes is available
configure:6837: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -lcurses -ltermcap -lm  -lc >&5
conftest.c: In function `main':
conftest.c:81: warning: initialization discards qualifiers from pointer target type
conftest.c:81: warning: implicit declaration of function `printf'
configure:6843: $? = 0
configure:6847: test -z 
			 || test ! -s conftest.err
configure:6850: $? = 0
configure:6853: test -s conftest
configure:6856: $? = 0
configure:6870: result: yes
configure:6872: checking if numcodes is available
configure:6893: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -lcurses -ltermcap -lm  -lc >&5
conftest.c: In function `main':
conftest.c:82: warning: initialization discards qualifiers from pointer target type
conftest.c:82: warning: implicit declaration of function `printf'
configure:6899: $? = 0
configure:6903: test -z 
			 || test ! -s conftest.err
configure:6906: $? = 0
configure:6909: test -s conftest
configure:6912: $? = 0
configure:6926: result: yes
configure:6928: checking if strcodes is available
configure:6949: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -lcurses -ltermcap -lm  -lc >&5
conftest.c: In function `main':
conftest.c:83: warning: initialization discards qualifiers from pointer target type
conftest.c:83: warning: implicit declaration of function `printf'
configure:6955: $? = 0
configure:6959: test -z 
			 || test ! -s conftest.err
configure:6962: $? = 0
configure:6965: test -s conftest
configure:6968: $? = 0
configure:6982: result: yes
configure:6984: checking if boolnames is available
configure:7003: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -lcurses -ltermcap -lm  -lc >&5
conftest.c: In function `main':
conftest.c:82: warning: initialization discards qualifiers from pointer target type
configure:7009: $? = 0
configure:7013: test -z 
			 || test ! -s conftest.err
configure:7016: $? = 0
configure:7019: test -s conftest
configure:7022: $? = 0
configure:7036: result: yes
configure:7038: checking if numnames is available
configure:7057: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -lcurses -ltermcap -lm  -lc >&5
conftest.c: In function `main':
conftest.c:83: warning: initialization discards qualifiers from pointer target type
configure:7063: $? = 0
configure:7067: test -z 
			 || test ! -s conftest.err
configure:7070: $? = 0
configure:7073: test -s conftest
configure:7076: $? = 0
configure:7090: result: yes
configure:7092: checking if strnames is available
configure:7111: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -lcurses -ltermcap -lm  -lc >&5
conftest.c: In function `main':
conftest.c:84: warning: initialization discards qualifiers from pointer target type
configure:7117: $? = 0
configure:7121: test -z 
			 || test ! -s conftest.err
configure:7124: $? = 0
configure:7127: test -s conftest
configure:7130: $? = 0
configure:7144: result: yes
configure:7153: checking for library containing yp_all
configure:7183: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -lcurses -ltermcap -lm  -lc >&5
/tmp/ccegdQEX.o(.text+0xd): In function `main':
: undefined reference to `yp_all'
collect2: ld returned 1 exit status
configure:7189: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_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_UTMPX_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_SYS_STROPTS_H 1
| #define HAVE_ICONV_H 1
| #define HAVE_DLFCN_H 1
| #define GWINSZ_IN_SYS_IOCTL 1
| #define HAVE_LIBM 1
| #define HAVE_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 1
| /* end 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 yp_all ();
| int
| main ()
| {
| yp_all ();
|   ;
|   return 0;
| }
configure:7238: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -lnsl  -lcurses -ltermcap -lm  -lc >&5
configure:7244: $? = 0
configure:7248: test -z 
			 || test ! -s conftest.err
configure:7251: $? = 0
configure:7254: test -s conftest
configure:7257: $? = 0
configure:7272: result: -lnsl
configure:7286: checking for dlopen in -ldl
configure:7316: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl  -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:7322: $? = 0
configure:7326: test -z 
			 || test ! -s conftest.err
configure:7329: $? = 0
configure:7332: test -s conftest
configure:7335: $? = 0
configure:7348: result: yes
configure:7439: checking for socket in -lsocket
configure:7469: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -lsocket  -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/../../../../i686-pc-linux-gnu/bin/ld: cannot find -lsocket
collect2: ld returned 1 exit status
configure:7475: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_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_UTMPX_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_SYS_STROPTS_H 1
| #define HAVE_ICONV_H 1
| #define HAVE_DLFCN_H 1
| #define GWINSZ_IN_SYS_IOCTL 1
| #define HAVE_LIBM 1
| #define HAVE_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 1
| #define HAVE_LIBDL 1
| /* end 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 ();
| int
| main ()
| {
| socket ();
|   ;
|   return 0;
| }
configure:7501: result: no
configure:7514: checking for iconv in -liconv
configure:7544: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -liconv  -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/../../../../i686-pc-linux-gnu/bin/ld: cannot find -liconv
collect2: ld returned 1 exit status
configure:7550: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_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_UTMPX_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_SYS_STROPTS_H 1
| #define HAVE_ICONV_H 1
| #define HAVE_DLFCN_H 1
| #define GWINSZ_IN_SYS_IOCTL 1
| #define HAVE_LIBM 1
| #define HAVE_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 1
| #define HAVE_LIBDL 1
| /* end 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 ();
| int
| main ()
| {
| iconv ();
|   ;
|   return 0;
| }
configure:7576: result: no
configure:7669: checking if an include file defines ospeed
configure:7696: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:7702: $? = 0
configure:7706: test -z 
			 || test ! -s conftest.err
configure:7709: $? = 0
configure:7712: test -s conftest
configure:7715: $? = 0
configure:7727: result: yes
configure:7808: checking return type of signal handlers
configure:7839: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
conftest.c: In function `main':
conftest.c:96: warning: unused variable `i'
configure:7845: $? = 0
configure:7849: test -z 
			 || test ! -s conftest.err
configure:7852: $? = 0
configure:7855: test -s conftest.o
configure:7858: $? = 0
configure:7869: result: void
configure:7877: checking for pid_t
configure:7901: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:7907: $? = 0
configure:7911: test -z 
			 || test ! -s conftest.err
configure:7914: $? = 0
configure:7917: test -s conftest.o
configure:7920: $? = 0
configure:7931: result: yes
configure:7943: checking for off_t
configure:7967: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:7973: $? = 0
configure:7977: test -z 
			 || test ! -s conftest.err
configure:7980: $? = 0
configure:7983: test -s conftest.o
configure:7986: $? = 0
configure:7997: result: yes
configure:8009: checking for ino_t
configure:8033: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:8039: $? = 0
configure:8043: test -z 
			 || test ! -s conftest.err
configure:8046: $? = 0
configure:8049: test -s conftest.o
configure:8052: $? = 0
configure:8063: result: yes
configure:8075: checking for mode_t
configure:8099: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:8105: $? = 0
configure:8109: test -z 
			 || test ! -s conftest.err
configure:8112: $? = 0
configure:8115: test -s conftest.o
configure:8118: $? = 0
configure:8129: result: yes
configure:8141: checking for uid_t in sys/types.h
configure:8164: result: yes
configure:8179: checking for size_t
configure:8203: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:8209: $? = 0
configure:8213: test -z 
			 || test ! -s conftest.err
configure:8216: $? = 0
configure:8219: test -s conftest.o
configure:8222: $? = 0
configure:8233: result: yes
configure:8246: checking if long is 64 bits
configure:8263: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:8266: $? = 0
configure:8268: ./conftest
configure:8271: $? = 1
configure: program exited with status 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_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_UTMPX_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_SYS_STROPTS_H 1
| #define HAVE_ICONV_H 1
| #define HAVE_DLFCN_H 1
| #define GWINSZ_IN_SYS_IOCTL 1
| #define HAVE_LIBM 1
| #define HAVE_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 1
| #define HAVE_LIBDL 1
| #define HAVE_OSPEED 1
| #define RETSIGTYPE void
| /* end confdefs.h.  */
| int main() { return sizeof(long) < 8; }
configure:8285: result: no
configure:8306: checking if off_t is 64 bit
configure:8327: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
conftest.c:86: warning: return type defaults to `int'
configure:8330: $? = 0
configure:8332: ./conftest
configure:8335: $? = 0
configure:8349: result: yes
configure:8358: checking if ino_t is 64 bit
configure:8379: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
conftest.c:87: warning: return type defaults to `int'
configure:8382: $? = 0
configure:8384: ./conftest
configure:8387: $? = 0
configure:8401: result: yes
configure:8412: checking if compiler has a 64 bit type
configure:8495: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
conftest.c:91: warning: return type defaults to `int'
conftest.c: In function `main':
conftest.c:93: warning: unused variable `bar'
configure:8498: $? = 0
configure:8500: ./conftest
configure:8503: $? = 0
configure:8673: result: long long
configure:8681: checking for a corresponding unsigned 64 bit type
configure:8713: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
conftest.c:92: warning: return type defaults to `int'
conftest.c: In function `main':
conftest.c:94: warning: unused variable `bar'
configure:8716: $? = 0
configure:8718: ./conftest
configure:8721: $? = 0
configure:8787: result: unsigned long long
configure:8799: checking for sigset_t
configure:8821: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
conftest.c: In function `main':
conftest.c:92: warning: unused variable `tempsigset'
configure:8827: $? = 0
configure:8831: test -z 
			 || test ! -s conftest.err
configure:8834: $? = 0
configure:8837: test -s conftest.o
configure:8840: $? = 0
configure:8851: result: yes
configure:8862: checking for struct timezone
configure:8887: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
conftest.c: In function `main':
conftest.c:95: warning: unused variable `testvar'
configure:8893: $? = 0
configure:8897: test -z 
			 || test ! -s conftest.err
configure:8900: $? = 0
configure:8903: test -s conftest.o
configure:8906: $? = 0
configure:8918: result: yes
configure:8930: checking for struct utmp
configure:8958: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
conftest.c: In function `main':
conftest.c:99: warning: unused variable `testvar'
configure:8964: $? = 0
configure:8968: test -z 
			 || test ! -s conftest.err
configure:8971: $? = 0
configure:8974: test -s conftest.o
configure:8977: $? = 0
configure:8989: result: yes
configure:9000: checking for struct utmpx
configure:9028: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
conftest.c: In function `main':
conftest.c:100: warning: unused variable `testvar'
configure:9034: $? = 0
configure:9038: test -z 
			 || test ! -s conftest.err
configure:9041: $? = 0
configure:9044: test -s conftest.o
configure:9047: $? = 0
configure:9059: result: yes
configure:9071: checking for ut_host in struct utmp
configure:9099: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
conftest.c: In function `main':
conftest.c:101: warning: statement with no effect
configure:9105: $? = 0
configure:9109: test -z 
			 || test ! -s conftest.err
configure:9112: $? = 0
configure:9115: test -s conftest.o
configure:9118: $? = 0
configure:9130: result: yes
configure:9141: checking for ut_host in struct utmpx
configure:9169: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
conftest.c: In function `main':
conftest.c:102: warning: statement with no effect
configure:9175: $? = 0
configure:9179: test -z 
			 || test ! -s conftest.err
configure:9182: $? = 0
configure:9185: test -s conftest.o
configure:9188: $? = 0
configure:9200: result: yes
configure:9211: checking for ut_xtime in struct utmpx
configure:9239: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
conftest.c: In function `main':
conftest.c:103: error: structure has no member named `ut_xtime'
configure:9245: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_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_UTMPX_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_SYS_STROPTS_H 1
| #define HAVE_ICONV_H 1
| #define HAVE_DLFCN_H 1
| #define GWINSZ_IN_SYS_IOCTL 1
| #define HAVE_LIBM 1
| #define HAVE_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 1
| #define HAVE_LIBDL 1
| #define HAVE_OSPEED 1
| #define RETSIGTYPE void
| #define OFF_T_IS_64_BIT 1
| #define INO_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_UTMPX 1
| #define HAVE_STRUCT_UTMP_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_HOST 1
| /* end confdefs.h.  */
| 
| #ifdef HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #ifdef HAVE_UTMPX_H
| # include <utmpx.h>
| #endif
| 
| int
| main ()
| {
| struct utmpx testvar; testvar.ut_xtime;
|   ;
|   return 0;
| }
configure:9270: result: no
configure:9281: checking for ut_tv in struct utmpx
configure:9309: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
conftest.c: In function `main':
conftest.c:103: warning: statement with no effect
configure:9315: $? = 0
configure:9319: test -z 
			 || test ! -s conftest.err
configure:9322: $? = 0
configure:9325: test -s conftest.o
configure:9328: $? = 0
configure:9340: result: yes
configure:9352: checking for d_ino in struct dirent
configure:9380: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
conftest.c: In function `main':
conftest.c:104: warning: statement with no effect
configure:9386: $? = 0
configure:9390: test -z 
			 || test ! -s conftest.err
configure:9393: $? = 0
configure:9396: test -s conftest.o
configure:9399: $? = 0
configure:9411: result: yes
configure:9422: checking for d_stat in struct dirent
configure:9450: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
conftest.c: In function `main':
conftest.c:105: error: structure has no member named `d_stat'
configure:9456: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_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_UTMPX_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_SYS_STROPTS_H 1
| #define HAVE_ICONV_H 1
| #define HAVE_DLFCN_H 1
| #define GWINSZ_IN_SYS_IOCTL 1
| #define HAVE_LIBM 1
| #define HAVE_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 1
| #define HAVE_LIBDL 1
| #define HAVE_OSPEED 1
| #define RETSIGTYPE void
| #define OFF_T_IS_64_BIT 1
| #define INO_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_UTMPX 1
| #define HAVE_STRUCT_UTMP_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_TV 1
| #define HAVE_STRUCT_DIRENT_D_INO 1
| /* end confdefs.h.  */
| 
| #ifdef HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #ifdef HAVE_DIRENT_H
| # include <dirent.h>
| #endif
| 
| int
| main ()
| {
| struct dirent testvar; testvar.d_stat;
|   ;
|   return 0;
| }
configure:9481: result: no
configure:9492: checking for d_ino in struct direct
configure:9526: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
conftest.c: In function `main':
conftest.c:111: error: storage size of 'testvar' isn't known
conftest.c:111: warning: unused variable `testvar'
configure:9532: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_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_UTMPX_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_SYS_STROPTS_H 1
| #define HAVE_ICONV_H 1
| #define HAVE_DLFCN_H 1
| #define GWINSZ_IN_SYS_IOCTL 1
| #define HAVE_LIBM 1
| #define HAVE_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 1
| #define HAVE_LIBDL 1
| #define HAVE_OSPEED 1
| #define RETSIGTYPE void
| #define OFF_T_IS_64_BIT 1
| #define INO_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_UTMPX 1
| #define HAVE_STRUCT_UTMP_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_TV 1
| #define HAVE_STRUCT_DIRENT_D_INO 1
| /* end 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
| 
| int
| main ()
| {
| struct direct testvar; testvar.d_ino;
|   ;
|   return 0;
| }
configure:9557: result: no
configure:9568: checking for d_stat in struct direct
configure:9602: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
conftest.c: In function `main':
conftest.c:111: error: storage size of 'testvar' isn't known
conftest.c:111: warning: unused variable `testvar'
configure:9608: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_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_UTMPX_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_SYS_STROPTS_H 1
| #define HAVE_ICONV_H 1
| #define HAVE_DLFCN_H 1
| #define GWINSZ_IN_SYS_IOCTL 1
| #define HAVE_LIBM 1
| #define HAVE_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 1
| #define HAVE_LIBDL 1
| #define HAVE_OSPEED 1
| #define RETSIGTYPE void
| #define OFF_T_IS_64_BIT 1
| #define INO_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_UTMPX 1
| #define HAVE_STRUCT_UTMP_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_TV 1
| #define HAVE_STRUCT_DIRENT_D_INO 1
| /* end 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
| 
| int
| main ()
| {
| struct direct testvar; testvar.d_stat;
|   ;
|   return 0;
| }
configure:9633: result: no
configure:9645: checking for sin6_scope_id in struct sockaddr_in6
configure:9671: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
conftest.c: In function `main':
conftest.c:103: warning: statement with no effect
configure:9677: $? = 0
configure:9681: test -z 
			 || test ! -s conftest.err
configure:9684: $? = 0
configure:9687: test -s conftest.o
configure:9690: $? = 0
configure:9702: result: yes
configure:9716: checking if we need our own h_errno
configure:9737: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9743: $? = 0
configure:9747: test -z 
			 || test ! -s conftest.err
configure:9750: $? = 0
configure:9753: test -s conftest
configure:9756: $? = 0
configure:9768: result: no
configure:9894: checking for strftime
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
conftest.c:119: warning: conflicting types for built-in function 'strftime'
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for difftime
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for gettimeofday
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for select
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for poll
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for readlink
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for faccessx
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
/tmp/cc82KAUV.o(.text+0x14): In function `main':
: undefined reference to `faccessx'
/tmp/cc82KAUV.o(.data+0x0): undefined reference to `faccessx'
collect2: ld returned 1 exit status
configure:9957: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_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_UTMPX_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_SYS_STROPTS_H 1
| #define HAVE_ICONV_H 1
| #define HAVE_DLFCN_H 1
| #define GWINSZ_IN_SYS_IOCTL 1
| #define HAVE_LIBM 1
| #define HAVE_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 1
| #define HAVE_LIBDL 1
| #define HAVE_OSPEED 1
| #define RETSIGTYPE void
| #define OFF_T_IS_64_BIT 1
| #define INO_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_UTMPX 1
| #define HAVE_STRUCT_UTMP_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_TV 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
| /* end confdefs.h.  */
| /* Define faccessx to an innocuous variant, in case <limits.h> declares faccessx.
|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
| #define faccessx innocuous_faccessx
| 
| /* System header to define __stub macros and hopefully few prototypes,
|     which can conflict with char faccessx (); below.
|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|     <limits.h> exists even on freestanding compilers.  */
| 
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
| 
| #undef faccessx
| 
| /* 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 ();
| /* 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
| char (*f) () = faccessx;
| #endif
| #ifdef __cplusplus
| }
| #endif
| 
| int
| main ()
| {
| return f != faccessx;
|   ;
|   return 0;
| }
configure:9982: result: no
configure:9894: checking for fchdir
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for ftruncate
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for fstat
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for lstat
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for lchown
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for fseeko
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for ftello
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for mkfifo
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for _mktemp
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
/tmp/ccSc3RZ5.o(.text+0x14): In function `main':
: undefined reference to `_mktemp'
/tmp/ccSc3RZ5.o(.data+0x0): undefined reference to `_mktemp'
collect2: ld returned 1 exit status
configure:9957: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_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_UTMPX_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_SYS_STROPTS_H 1
| #define HAVE_ICONV_H 1
| #define HAVE_DLFCN_H 1
| #define GWINSZ_IN_SYS_IOCTL 1
| #define HAVE_LIBM 1
| #define HAVE_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 1
| #define HAVE_LIBDL 1
| #define HAVE_OSPEED 1
| #define RETSIGTYPE void
| #define OFF_T_IS_64_BIT 1
| #define INO_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_UTMPX 1
| #define HAVE_STRUCT_UTMP_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_TV 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
| /* end confdefs.h.  */
| /* Define _mktemp to an innocuous variant, in case <limits.h> declares _mktemp.
|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
| #define _mktemp innocuous__mktemp
| 
| /* System header to define __stub macros and hopefully few prototypes,
|     which can conflict with char _mktemp (); below.
|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|     <limits.h> exists even on freestanding compilers.  */
| 
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
| 
| #undef _mktemp
| 
| /* 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 _mktemp ();
| /* 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__mktemp) || defined (__stub____mktemp)
| choke me
| #else
| char (*f) () = _mktemp;
| #endif
| #ifdef __cplusplus
| }
| #endif
| 
| int
| main ()
| {
| return f != _mktemp;
|   ;
|   return 0;
| }
configure:9982: result: no
configure:9894: checking for mkstemp
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for waitpid
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for wait3
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for sigaction
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for sigblock
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for sighold
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for sigrelse
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for sigsetmask
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for sigprocmask
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for killpg
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for setpgid
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for setpgrp
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for tcsetpgrp
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for tcgetattr
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for nice
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for gethostname
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for gethostbyname2
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for getipnodebyname
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
/tmp/cc6zZ0zc.o(.text+0x14): In function `main':
: undefined reference to `getipnodebyname'
/tmp/cc6zZ0zc.o(.data+0x0): undefined reference to `getipnodebyname'
collect2: ld returned 1 exit status
configure:9957: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_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_UTMPX_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_SYS_STROPTS_H 1
| #define HAVE_ICONV_H 1
| #define HAVE_DLFCN_H 1
| #define GWINSZ_IN_SYS_IOCTL 1
| #define HAVE_LIBM 1
| #define HAVE_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 1
| #define HAVE_LIBDL 1
| #define HAVE_OSPEED 1
| #define RETSIGTYPE void
| #define OFF_T_IS_64_BIT 1
| #define INO_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_UTMPX 1
| #define HAVE_STRUCT_UTMP_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_TV 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_MKSTEMP 1
| #define HAVE_WAITPID 1
| #define HAVE_WAIT3 1
| #define HAVE_SIGACTION 1
| #define HAVE_SIGBLOCK 1
| #define HAVE_SIGHOLD 1
| #define HAVE_SIGRELSE 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
| /* end confdefs.h.  */
| /* Define getipnodebyname to an innocuous variant, in case <limits.h> declares getipnodebyname.
|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
| #define getipnodebyname innocuous_getipnodebyname
| 
| /* System header to define __stub macros and hopefully few prototypes,
|     which can conflict with char getipnodebyname (); below.
|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|     <limits.h> exists even on freestanding compilers.  */
| 
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
| 
| #undef getipnodebyname
| 
| /* 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 getipnodebyname ();
| /* 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_getipnodebyname) || defined (__stub___getipnodebyname)
| choke me
| #else
| char (*f) () = getipnodebyname;
| #endif
| #ifdef __cplusplus
| }
| #endif
| 
| int
| main ()
| {
| return f != getipnodebyname;
|   ;
|   return 0;
| }
configure:9982: result: no
configure:9894: checking for inet_aton
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for inet_pton
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for inet_ntop
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for getlogin
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for getpwent
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for getpwnam
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for getpwuid
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for getgrgid
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for getgrnam
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for initgroups
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for nis_list
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for setuid
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for seteuid
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for setreuid
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for setresuid
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for setsid
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for memcpy
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
conftest.c:166: warning: conflicting types for built-in function 'memcpy'
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for memmove
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
conftest.c:167: warning: conflicting types for built-in function 'memmove'
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for strstr
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
conftest.c:168: warning: conflicting types for built-in function 'strstr'
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for strerror
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for getrlimit
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for getrusage
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for setlocale
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for uname
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for signgam
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for putenv
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for getenv
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for brk
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for sbrk
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for pathconf
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for sysconf
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for tgetent
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for tigetflag
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for tigetnum
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for tigetstr
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for setupterm
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for pcre_compile
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
/tmp/ccCnazfl.o(.text+0x14): In function `main':
: undefined reference to `pcre_compile'
/tmp/ccCnazfl.o(.data+0x0): undefined reference to `pcre_compile'
collect2: ld returned 1 exit status
configure:9957: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_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_UTMPX_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_SYS_STROPTS_H 1
| #define HAVE_ICONV_H 1
| #define HAVE_DLFCN_H 1
| #define GWINSZ_IN_SYS_IOCTL 1
| #define HAVE_LIBM 1
| #define HAVE_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 1
| #define HAVE_LIBDL 1
| #define HAVE_OSPEED 1
| #define RETSIGTYPE void
| #define OFF_T_IS_64_BIT 1
| #define INO_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_UTMPX 1
| #define HAVE_STRUCT_UTMP_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_TV 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_MKSTEMP 1
| #define HAVE_WAITPID 1
| #define HAVE_WAIT3 1
| #define HAVE_SIGACTION 1
| #define HAVE_SIGBLOCK 1
| #define HAVE_SIGHOLD 1
| #define HAVE_SIGRELSE 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_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_NIS_LIST 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_GETRUSAGE 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
| /* end confdefs.h.  */
| /* Define pcre_compile to an innocuous variant, in case <limits.h> declares pcre_compile.
|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
| #define pcre_compile innocuous_pcre_compile
| 
| /* System header to define __stub macros and hopefully few prototypes,
|     which can conflict with char pcre_compile (); below.
|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|     <limits.h> exists even on freestanding compilers.  */
| 
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
| 
| #undef pcre_compile
| 
| /* 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 ();
| /* 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
| char (*f) () = pcre_compile;
| #endif
| #ifdef __cplusplus
| }
| #endif
| 
| int
| main ()
| {
| return f != pcre_compile;
|   ;
|   return 0;
| }
configure:9982: result: no
configure:9894: checking for pcre_study
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
/tmp/cckJJVSG.o(.text+0x14): In function `main':
: undefined reference to `pcre_study'
/tmp/cckJJVSG.o(.data+0x0): undefined reference to `pcre_study'
collect2: ld returned 1 exit status
configure:9957: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_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_UTMPX_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_SYS_STROPTS_H 1
| #define HAVE_ICONV_H 1
| #define HAVE_DLFCN_H 1
| #define GWINSZ_IN_SYS_IOCTL 1
| #define HAVE_LIBM 1
| #define HAVE_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 1
| #define HAVE_LIBDL 1
| #define HAVE_OSPEED 1
| #define RETSIGTYPE void
| #define OFF_T_IS_64_BIT 1
| #define INO_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_UTMPX 1
| #define HAVE_STRUCT_UTMP_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_TV 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_MKSTEMP 1
| #define HAVE_WAITPID 1
| #define HAVE_WAIT3 1
| #define HAVE_SIGACTION 1
| #define HAVE_SIGBLOCK 1
| #define HAVE_SIGHOLD 1
| #define HAVE_SIGRELSE 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_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_NIS_LIST 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_GETRUSAGE 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
| /* end confdefs.h.  */
| /* Define pcre_study to an innocuous variant, in case <limits.h> declares pcre_study.
|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
| #define pcre_study innocuous_pcre_study
| 
| /* System header to define __stub macros and hopefully few prototypes,
|     which can conflict with char pcre_study (); below.
|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|     <limits.h> exists even on freestanding compilers.  */
| 
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
| 
| #undef pcre_study
| 
| /* 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 ();
| /* 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
| char (*f) () = pcre_study;
| #endif
| #ifdef __cplusplus
| }
| #endif
| 
| int
| main ()
| {
| return f != pcre_study;
|   ;
|   return 0;
| }
configure:9982: result: no
configure:9894: checking for pcre_exec
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
/tmp/ccal7o2S.o(.text+0x14): In function `main':
: undefined reference to `pcre_exec'
/tmp/ccal7o2S.o(.data+0x0): undefined reference to `pcre_exec'
collect2: ld returned 1 exit status
configure:9957: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_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_UTMPX_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_SYS_STROPTS_H 1
| #define HAVE_ICONV_H 1
| #define HAVE_DLFCN_H 1
| #define GWINSZ_IN_SYS_IOCTL 1
| #define HAVE_LIBM 1
| #define HAVE_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 1
| #define HAVE_LIBDL 1
| #define HAVE_OSPEED 1
| #define RETSIGTYPE void
| #define OFF_T_IS_64_BIT 1
| #define INO_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_UTMPX 1
| #define HAVE_STRUCT_UTMP_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_TV 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_MKSTEMP 1
| #define HAVE_WAITPID 1
| #define HAVE_WAIT3 1
| #define HAVE_SIGACTION 1
| #define HAVE_SIGBLOCK 1
| #define HAVE_SIGHOLD 1
| #define HAVE_SIGRELSE 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_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_NIS_LIST 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_GETRUSAGE 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
| /* end confdefs.h.  */
| /* Define pcre_exec to an innocuous variant, in case <limits.h> declares pcre_exec.
|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
| #define pcre_exec innocuous_pcre_exec
| 
| /* System header to define __stub macros and hopefully few prototypes,
|     which can conflict with char pcre_exec (); below.
|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|     <limits.h> exists even on freestanding compilers.  */
| 
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
| 
| #undef pcre_exec
| 
| /* 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 ();
| /* 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
| char (*f) () = pcre_exec;
| #endif
| #ifdef __cplusplus
| }
| #endif
| 
| int
| main ()
| {
| return f != pcre_exec;
|   ;
|   return 0;
| }
configure:9982: result: no
configure:9894: checking for nl_langinfo
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for erand48
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for open_memstream
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for wctomb
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for iconv
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for grantpt
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for unlockpt
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for ptsname
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for htons
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9894: checking for ntohs
configure:9951: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:9957: $? = 0
configure:9961: test -z 
			 || test ! -s conftest.err
configure:9964: $? = 0
configure:9967: test -s conftest
configure:9970: $? = 0
configure:9982: result: yes
configure:9992: checking for working strcoll
configure:10018: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:10021: $? = 0
configure:10023: ./conftest
configure:10026: $? = 0
configure:10040: result: yes
configure:10158: checking if tgetent accepts NULL
configure:10189: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
conftest.c:175: warning: return type defaults to `int'
conftest.c: In function `main':
conftest.c:177: warning: implicit declaration of function `tgetent'
conftest.c:182: warning: implicit declaration of function `tgetstr'
conftest.c:183: warning: implicit declaration of function `creat'
conftest.c:185: warning: implicit declaration of function `exit'
configure:10192: $? = 0
configure:10194: ./conftest
configure:10197: $? = 0
configure:10215: result: yes
configure:10223: checking if tgetent returns 0 on success
configure:10254: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
conftest.c:176: warning: return type defaults to `int'
conftest.c: In function `main':
conftest.c:178: warning: implicit declaration of function `tgetent'
conftest.c:183: warning: implicit declaration of function `tgetstr'
conftest.c:184: warning: implicit declaration of function `creat'
conftest.c:186: warning: implicit declaration of function `exit'
configure:10257: $? = 0
configure:10259: ./conftest
configure:10262: $? = 0
configure:10280: result: no
configure:10302: checking for stdlib.h
configure:10307: result: yes
configure:10302: checking for unistd.h
configure:10307: result: yes
configure:10451: checking for getpagesize
configure:10508: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:10514: $? = 0
configure:10518: test -z 
			 || test ! -s conftest.err
configure:10521: $? = 0
configure:10524: test -s conftest
configure:10527: $? = 0
configure:10539: result: yes
configure:10549: checking for working mmap
configure:10691: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:10694: $? = 0
configure:10696: ./conftest
configure:10699: $? = 0
configure:10713: result: yes
configure:10730: checking for munmap
configure:10787: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:10793: $? = 0
configure:10797: test -z 
			 || test ! -s conftest.err
configure:10800: $? = 0
configure:10803: test -s conftest
configure:10806: $? = 0
configure:10818: result: yes
configure:10730: checking for msync
configure:10787: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:10793: $? = 0
configure:10797: test -z 
			 || test ! -s conftest.err
configure:10800: $? = 0
configure:10803: test -s conftest
configure:10806: $? = 0
configure:10818: result: yes
configure:10831: checking whether getpgrp requires zero arguments
configure:10853: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
conftest.c: In function `main':
conftest.c:218: error: too many arguments to function `getpgrp'
configure:10859: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_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_UTMPX_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_SYS_STROPTS_H 1
| #define HAVE_ICONV_H 1
| #define HAVE_DLFCN_H 1
| #define GWINSZ_IN_SYS_IOCTL 1
| #define HAVE_LIBM 1
| #define HAVE_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 1
| #define HAVE_LIBDL 1
| #define HAVE_OSPEED 1
| #define RETSIGTYPE void
| #define OFF_T_IS_64_BIT 1
| #define INO_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_UTMPX 1
| #define HAVE_STRUCT_UTMP_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_TV 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_MKSTEMP 1
| #define HAVE_WAITPID 1
| #define HAVE_WAIT3 1
| #define HAVE_SIGACTION 1
| #define HAVE_SIGBLOCK 1
| #define HAVE_SIGHOLD 1
| #define HAVE_SIGRELSE 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_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_NIS_LIST 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_GETRUSAGE 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_OPEN_MEMSTREAM 1
| #define HAVE_WCTOMB 1
| #define HAVE_ICONV 1
| #define HAVE_GRANTPT 1
| #define HAVE_UNLOCKPT 1
| #define HAVE_PTSNAME 1
| #define HAVE_HTONS 1
| #define HAVE_NTOHS 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
| /* end 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
| int
| main ()
| {
| getpgrp (0);
|   ;
|   return 0;
| }
configure:10884: result: yes
configure:10918: checking for dlopen
configure:10975: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:10981: $? = 0
configure:10985: test -z 
			 || test ! -s conftest.err
configure:10988: $? = 0
configure:10991: test -s conftest
configure:10994: $? = 0
configure:11006: result: yes
configure:10918: checking for dlerror
configure:10975: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:10981: $? = 0
configure:10985: test -z 
			 || test ! -s conftest.err
configure:10988: $? = 0
configure:10991: test -s conftest
configure:10994: $? = 0
configure:11006: result: yes
configure:10918: checking for dlsym
configure:10975: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:10981: $? = 0
configure:10985: test -z 
			 || test ! -s conftest.err
configure:10988: $? = 0
configure:10991: test -s conftest
configure:10994: $? = 0
configure:11006: result: yes
configure:10918: checking for dlclose
configure:10975: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:10981: $? = 0
configure:10985: test -z 
			 || test ! -s conftest.err
configure:10988: $? = 0
configure:10991: test -s conftest
configure:10994: $? = 0
configure:11006: result: yes
configure:10918: checking for load
configure:10975: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
/tmp/ccOpoDHR.o(.text+0x14): In function `main':
: undefined reference to `load'
/tmp/ccOpoDHR.o(.data+0x0): undefined reference to `load'
collect2: ld returned 1 exit status
configure:10981: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_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_UTMPX_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_SYS_STROPTS_H 1
| #define HAVE_ICONV_H 1
| #define HAVE_DLFCN_H 1
| #define GWINSZ_IN_SYS_IOCTL 1
| #define HAVE_LIBM 1
| #define HAVE_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 1
| #define HAVE_LIBDL 1
| #define HAVE_OSPEED 1
| #define RETSIGTYPE void
| #define OFF_T_IS_64_BIT 1
| #define INO_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_UTMPX 1
| #define HAVE_STRUCT_UTMP_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_TV 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_MKSTEMP 1
| #define HAVE_WAITPID 1
| #define HAVE_WAIT3 1
| #define HAVE_SIGACTION 1
| #define HAVE_SIGBLOCK 1
| #define HAVE_SIGHOLD 1
| #define HAVE_SIGRELSE 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_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_NIS_LIST 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_GETRUSAGE 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_OPEN_MEMSTREAM 1
| #define HAVE_WCTOMB 1
| #define HAVE_ICONV 1
| #define HAVE_GRANTPT 1
| #define HAVE_UNLOCKPT 1
| #define HAVE_PTSNAME 1
| #define HAVE_HTONS 1
| #define HAVE_NTOHS 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
| /* end confdefs.h.  */
| /* Define load to an innocuous variant, in case <limits.h> declares load.
|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
| #define load innocuous_load
| 
| /* System header to define __stub macros and hopefully few prototypes,
|     which can conflict with char load (); below.
|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|     <limits.h> exists even on freestanding compilers.  */
| 
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
| 
| #undef load
| 
| /* 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 ();
| /* 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
| char (*f) () = load;
| #endif
| #ifdef __cplusplus
| }
| #endif
| 
| int
| main ()
| {
| return f != load;
|   ;
|   return 0;
| }
configure:11006: result: no
configure:10918: checking for loadquery
configure:10975: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
/tmp/ccojGKg6.o(.text+0x14): In function `main':
: undefined reference to `loadquery'
/tmp/ccojGKg6.o(.data+0x0): undefined reference to `loadquery'
collect2: ld returned 1 exit status
configure:10981: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_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_UTMPX_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_SYS_STROPTS_H 1
| #define HAVE_ICONV_H 1
| #define HAVE_DLFCN_H 1
| #define GWINSZ_IN_SYS_IOCTL 1
| #define HAVE_LIBM 1
| #define HAVE_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 1
| #define HAVE_LIBDL 1
| #define HAVE_OSPEED 1
| #define RETSIGTYPE void
| #define OFF_T_IS_64_BIT 1
| #define INO_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_UTMPX 1
| #define HAVE_STRUCT_UTMP_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_TV 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_MKSTEMP 1
| #define HAVE_WAITPID 1
| #define HAVE_WAIT3 1
| #define HAVE_SIGACTION 1
| #define HAVE_SIGBLOCK 1
| #define HAVE_SIGHOLD 1
| #define HAVE_SIGRELSE 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_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_NIS_LIST 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_GETRUSAGE 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_OPEN_MEMSTREAM 1
| #define HAVE_WCTOMB 1
| #define HAVE_ICONV 1
| #define HAVE_GRANTPT 1
| #define HAVE_UNLOCKPT 1
| #define HAVE_PTSNAME 1
| #define HAVE_HTONS 1
| #define HAVE_NTOHS 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
| /* end confdefs.h.  */
| /* Define loadquery to an innocuous variant, in case <limits.h> declares loadquery.
|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
| #define loadquery innocuous_loadquery
| 
| /* System header to define __stub macros and hopefully few prototypes,
|     which can conflict with char loadquery (); below.
|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|     <limits.h> exists even on freestanding compilers.  */
| 
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
| 
| #undef loadquery
| 
| /* 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 ();
| /* 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
| char (*f) () = loadquery;
| #endif
| #ifdef __cplusplus
| }
| #endif
| 
| int
| main ()
| {
| return f != loadquery;
|   ;
|   return 0;
| }
configure:11006: result: no
configure:10918: checking for loadbind
configure:10975: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
/tmp/cciFvqFr.o(.text+0x14): In function `main':
: undefined reference to `loadbind'
/tmp/cciFvqFr.o(.data+0x0): undefined reference to `loadbind'
collect2: ld returned 1 exit status
configure:10981: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_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_UTMPX_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_SYS_STROPTS_H 1
| #define HAVE_ICONV_H 1
| #define HAVE_DLFCN_H 1
| #define GWINSZ_IN_SYS_IOCTL 1
| #define HAVE_LIBM 1
| #define HAVE_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 1
| #define HAVE_LIBDL 1
| #define HAVE_OSPEED 1
| #define RETSIGTYPE void
| #define OFF_T_IS_64_BIT 1
| #define INO_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_UTMPX 1
| #define HAVE_STRUCT_UTMP_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_TV 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_MKSTEMP 1
| #define HAVE_WAITPID 1
| #define HAVE_WAIT3 1
| #define HAVE_SIGACTION 1
| #define HAVE_SIGBLOCK 1
| #define HAVE_SIGHOLD 1
| #define HAVE_SIGRELSE 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_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_NIS_LIST 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_GETRUSAGE 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_OPEN_MEMSTREAM 1
| #define HAVE_WCTOMB 1
| #define HAVE_ICONV 1
| #define HAVE_GRANTPT 1
| #define HAVE_UNLOCKPT 1
| #define HAVE_PTSNAME 1
| #define HAVE_HTONS 1
| #define HAVE_NTOHS 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
| /* end confdefs.h.  */
| /* Define loadbind to an innocuous variant, in case <limits.h> declares loadbind.
|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
| #define loadbind innocuous_loadbind
| 
| /* System header to define __stub macros and hopefully few prototypes,
|     which can conflict with char loadbind (); below.
|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|     <limits.h> exists even on freestanding compilers.  */
| 
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
| 
| #undef loadbind
| 
| /* 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 ();
| /* 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
| char (*f) () = loadbind;
| #endif
| #ifdef __cplusplus
| }
| #endif
| 
| int
| main ()
| {
| return f != loadbind;
|   ;
|   return 0;
| }
configure:11006: result: no
configure:10918: checking for unload
configure:10975: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
/tmp/cc2GeJjp.o(.text+0x14): In function `main':
: undefined reference to `unload'
/tmp/cc2GeJjp.o(.data+0x0): undefined reference to `unload'
collect2: ld returned 1 exit status
configure:10981: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_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_UTMPX_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_SYS_STROPTS_H 1
| #define HAVE_ICONV_H 1
| #define HAVE_DLFCN_H 1
| #define GWINSZ_IN_SYS_IOCTL 1
| #define HAVE_LIBM 1
| #define HAVE_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 1
| #define HAVE_LIBDL 1
| #define HAVE_OSPEED 1
| #define RETSIGTYPE void
| #define OFF_T_IS_64_BIT 1
| #define INO_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_UTMPX 1
| #define HAVE_STRUCT_UTMP_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_TV 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_MKSTEMP 1
| #define HAVE_WAITPID 1
| #define HAVE_WAIT3 1
| #define HAVE_SIGACTION 1
| #define HAVE_SIGBLOCK 1
| #define HAVE_SIGHOLD 1
| #define HAVE_SIGRELSE 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_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_NIS_LIST 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_GETRUSAGE 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_OPEN_MEMSTREAM 1
| #define HAVE_WCTOMB 1
| #define HAVE_ICONV 1
| #define HAVE_GRANTPT 1
| #define HAVE_UNLOCKPT 1
| #define HAVE_PTSNAME 1
| #define HAVE_HTONS 1
| #define HAVE_NTOHS 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
| /* end confdefs.h.  */
| /* Define unload to an innocuous variant, in case <limits.h> declares unload.
|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
| #define unload innocuous_unload
| 
| /* System header to define __stub macros and hopefully few prototypes,
|     which can conflict with char unload (); below.
|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|     <limits.h> exists even on freestanding compilers.  */
| 
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
| 
| #undef unload
| 
| /* 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 ();
| /* 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
| char (*f) () = unload;
| #endif
| #ifdef __cplusplus
| }
| #endif
| 
| int
| main ()
| {
| return f != unload;
|   ;
|   return 0;
| }
configure:11006: result: no
configure:10918: checking for shl_load
configure:10975: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
/tmp/cckf5FiB.o(.text+0x14): In function `main':
: undefined reference to `shl_load'
/tmp/cckf5FiB.o(.data+0x0): undefined reference to `shl_load'
collect2: ld returned 1 exit status
configure:10981: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_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_UTMPX_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_SYS_STROPTS_H 1
| #define HAVE_ICONV_H 1
| #define HAVE_DLFCN_H 1
| #define GWINSZ_IN_SYS_IOCTL 1
| #define HAVE_LIBM 1
| #define HAVE_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 1
| #define HAVE_LIBDL 1
| #define HAVE_OSPEED 1
| #define RETSIGTYPE void
| #define OFF_T_IS_64_BIT 1
| #define INO_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_UTMPX 1
| #define HAVE_STRUCT_UTMP_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_TV 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_MKSTEMP 1
| #define HAVE_WAITPID 1
| #define HAVE_WAIT3 1
| #define HAVE_SIGACTION 1
| #define HAVE_SIGBLOCK 1
| #define HAVE_SIGHOLD 1
| #define HAVE_SIGRELSE 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_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_NIS_LIST 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_GETRUSAGE 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_OPEN_MEMSTREAM 1
| #define HAVE_WCTOMB 1
| #define HAVE_ICONV 1
| #define HAVE_GRANTPT 1
| #define HAVE_UNLOCKPT 1
| #define HAVE_PTSNAME 1
| #define HAVE_HTONS 1
| #define HAVE_NTOHS 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
| /* end confdefs.h.  */
| /* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
| #define shl_load innocuous_shl_load
| 
| /* System header to define __stub macros and hopefully few prototypes,
|     which can conflict with char shl_load (); below.
|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|     <limits.h> exists even on freestanding compilers.  */
| 
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
| 
| #undef shl_load
| 
| /* 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 ();
| /* 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
| char (*f) () = shl_load;
| #endif
| #ifdef __cplusplus
| }
| #endif
| 
| int
| main ()
| {
| return f != shl_load;
|   ;
|   return 0;
| }
configure:11006: result: no
configure:10918: checking for shl_unload
configure:10975: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
/tmp/ccWpMKVW.o(.text+0x14): In function `main':
: undefined reference to `shl_unload'
/tmp/ccWpMKVW.o(.data+0x0): undefined reference to `shl_unload'
collect2: ld returned 1 exit status
configure:10981: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_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_UTMPX_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_SYS_STROPTS_H 1
| #define HAVE_ICONV_H 1
| #define HAVE_DLFCN_H 1
| #define GWINSZ_IN_SYS_IOCTL 1
| #define HAVE_LIBM 1
| #define HAVE_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 1
| #define HAVE_LIBDL 1
| #define HAVE_OSPEED 1
| #define RETSIGTYPE void
| #define OFF_T_IS_64_BIT 1
| #define INO_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_UTMPX 1
| #define HAVE_STRUCT_UTMP_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_TV 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_MKSTEMP 1
| #define HAVE_WAITPID 1
| #define HAVE_WAIT3 1
| #define HAVE_SIGACTION 1
| #define HAVE_SIGBLOCK 1
| #define HAVE_SIGHOLD 1
| #define HAVE_SIGRELSE 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_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_NIS_LIST 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_GETRUSAGE 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_OPEN_MEMSTREAM 1
| #define HAVE_WCTOMB 1
| #define HAVE_ICONV 1
| #define HAVE_GRANTPT 1
| #define HAVE_UNLOCKPT 1
| #define HAVE_PTSNAME 1
| #define HAVE_HTONS 1
| #define HAVE_NTOHS 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
| /* end confdefs.h.  */
| /* Define shl_unload to an innocuous variant, in case <limits.h> declares shl_unload.
|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
| #define shl_unload innocuous_shl_unload
| 
| /* System header to define __stub macros and hopefully few prototypes,
|     which can conflict with char shl_unload (); below.
|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|     <limits.h> exists even on freestanding compilers.  */
| 
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
| 
| #undef shl_unload
| 
| /* 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 ();
| /* 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
| char (*f) () = shl_unload;
| #endif
| #ifdef __cplusplus
| }
| #endif
| 
| int
| main ()
| {
| return f != shl_unload;
|   ;
|   return 0;
| }
configure:11006: result: no
configure:10918: checking for shl_findsym
configure:10975: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
/tmp/cc0Sxqbb.o(.text+0x14): In function `main':
: undefined reference to `shl_findsym'
/tmp/cc0Sxqbb.o(.data+0x0): undefined reference to `shl_findsym'
collect2: ld returned 1 exit status
configure:10981: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_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_UTMPX_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_SYS_STROPTS_H 1
| #define HAVE_ICONV_H 1
| #define HAVE_DLFCN_H 1
| #define GWINSZ_IN_SYS_IOCTL 1
| #define HAVE_LIBM 1
| #define HAVE_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 1
| #define HAVE_LIBDL 1
| #define HAVE_OSPEED 1
| #define RETSIGTYPE void
| #define OFF_T_IS_64_BIT 1
| #define INO_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_UTMPX 1
| #define HAVE_STRUCT_UTMP_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_TV 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_MKSTEMP 1
| #define HAVE_WAITPID 1
| #define HAVE_WAIT3 1
| #define HAVE_SIGACTION 1
| #define HAVE_SIGBLOCK 1
| #define HAVE_SIGHOLD 1
| #define HAVE_SIGRELSE 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_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_NIS_LIST 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_GETRUSAGE 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_OPEN_MEMSTREAM 1
| #define HAVE_WCTOMB 1
| #define HAVE_ICONV 1
| #define HAVE_GRANTPT 1
| #define HAVE_UNLOCKPT 1
| #define HAVE_PTSNAME 1
| #define HAVE_HTONS 1
| #define HAVE_NTOHS 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
| /* end confdefs.h.  */
| /* Define shl_findsym to an innocuous variant, in case <limits.h> declares shl_findsym.
|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
| #define shl_findsym innocuous_shl_findsym
| 
| /* System header to define __stub macros and hopefully few prototypes,
|     which can conflict with char shl_findsym (); below.
|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|     <limits.h> exists even on freestanding compilers.  */
| 
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
| 
| #undef shl_findsym
| 
| /* 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 ();
| /* 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
| char (*f) () = shl_findsym;
| #endif
| #ifdef __cplusplus
| }
| #endif
| 
| int
| main ()
| {
| return f != shl_findsym;
|   ;
|   return 0;
| }
configure:11006: result: no
configure:11027: checking what style of signals to use
configure:11058: result: POSIX_SIGNALS
configure:11061: checking where signal.h is located
configure:11100: result: /usr/include/bits/signum.h
configure:11104: checking where error names are located
configure:11132: result: /usr/include/asm-generic/errno.h
configure:11136: checking where the RLIMIT macros are located
configure:11153: result: /usr/include/bits/resource.h
configure:11169: checking if rlim_t is longer than a long
configure:11191: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
conftest.c:193: warning: return type defaults to `int'
conftest.c: In function `main':
conftest.c:193: warning: implicit declaration of function `exit'
configure:11194: $? = 0
configure:11196: ./conftest
configure:11199: $? = 0
configure:11213: result: yes
configure:11216: checking if rlim_t is a quad
configure:11245: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
conftest.c:194: warning: return type defaults to `int'
conftest.c: In function `main':
conftest.c:199: warning: implicit declaration of function `exit'
conftest.c:199: warning: implicit declaration of function `strcmp'
configure:11248: $? = 0
configure:11250: ./conftest
configure:11253: $? = 0
configure:11267: result: yes
configure:11338: checking for rlim_t
configure:11364: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
conftest.c: In function `main':
conftest.c:198: warning: unused variable `l'
configure:11370: $? = 0
configure:11374: test -z 
			 || test ! -s conftest.err
configure:11377: $? = 0
configure:11380: test -s conftest.o
configure:11383: $? = 0
configure:11394: result: yes
configure:11407: checking for limit RLIMIT_AIO_MEM
configure:11433: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
conftest.c: In function `main':
conftest.c:199: error: `RLIMIT_AIO_MEM' undeclared (first use in this function)
conftest.c:199: error: (Each undeclared identifier is reported only once
conftest.c:199: error: for each function it appears in.)
configure:11439: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_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_UTMPX_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_SYS_STROPTS_H 1
| #define HAVE_ICONV_H 1
| #define HAVE_DLFCN_H 1
| #define GWINSZ_IN_SYS_IOCTL 1
| #define HAVE_LIBM 1
| #define HAVE_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 1
| #define HAVE_LIBDL 1
| #define HAVE_OSPEED 1
| #define RETSIGTYPE void
| #define OFF_T_IS_64_BIT 1
| #define INO_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_UTMPX 1
| #define HAVE_STRUCT_UTMP_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_TV 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_MKSTEMP 1
| #define HAVE_WAITPID 1
| #define HAVE_WAIT3 1
| #define HAVE_SIGACTION 1
| #define HAVE_SIGBLOCK 1
| #define HAVE_SIGHOLD 1
| #define HAVE_SIGRELSE 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_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_NIS_LIST 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_GETRUSAGE 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_OPEN_MEMSTREAM 1
| #define HAVE_WCTOMB 1
| #define HAVE_ICONV 1
| #define HAVE_GRANTPT 1
| #define HAVE_UNLOCKPT 1
| #define HAVE_PTSNAME 1
| #define HAVE_HTONS 1
| #define HAVE_NTOHS 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
| /* end confdefs.h.  */
| 
| #include <sys/types.h>
| #ifdef HAVE_SYS_TIME_H
| #include <sys/time.h>
| #endif
| #include <sys/resource.h>
| int
| main ()
| {
| RLIMIT_AIO_MEM
|   ;
|   return 0;
| }
configure:11463: result: no
configure:11474: checking for limit RLIMIT_AIO_OPS
configure:11500: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
conftest.c: In function `main':
conftest.c:199: error: `RLIMIT_AIO_OPS' undeclared (first use in this function)
conftest.c:199: error: (Each undeclared identifier is reported only once
conftest.c:199: error: for each function it appears in.)
configure:11506: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_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_UTMPX_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_SYS_STROPTS_H 1
| #define HAVE_ICONV_H 1
| #define HAVE_DLFCN_H 1
| #define GWINSZ_IN_SYS_IOCTL 1
| #define HAVE_LIBM 1
| #define HAVE_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 1
| #define HAVE_LIBDL 1
| #define HAVE_OSPEED 1
| #define RETSIGTYPE void
| #define OFF_T_IS_64_BIT 1
| #define INO_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_UTMPX 1
| #define HAVE_STRUCT_UTMP_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_TV 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_MKSTEMP 1
| #define HAVE_WAITPID 1
| #define HAVE_WAIT3 1
| #define HAVE_SIGACTION 1
| #define HAVE_SIGBLOCK 1
| #define HAVE_SIGHOLD 1
| #define HAVE_SIGRELSE 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_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_NIS_LIST 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_GETRUSAGE 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_OPEN_MEMSTREAM 1
| #define HAVE_WCTOMB 1
| #define HAVE_ICONV 1
| #define HAVE_GRANTPT 1
| #define HAVE_UNLOCKPT 1
| #define HAVE_PTSNAME 1
| #define HAVE_HTONS 1
| #define HAVE_NTOHS 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
| /* end confdefs.h.  */
| 
| #include <sys/types.h>
| #ifdef HAVE_SYS_TIME_H
| #include <sys/time.h>
| #endif
| #include <sys/resource.h>
| int
| main ()
| {
| RLIMIT_AIO_OPS
|   ;
|   return 0;
| }
configure:11530: result: no
configure:11541: checking for limit RLIMIT_AS
configure:11567: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
conftest.c: In function `main':
conftest.c:198: warning: statement with no effect
configure:11573: $? = 0
configure:11577: test -z 
			 || test ! -s conftest.err
configure:11580: $? = 0
configure:11583: test -s conftest.o
configure:11586: $? = 0
configure:11597: result: yes
configure:11608: checking for limit RLIMIT_LOCKS
configure:11634: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
conftest.c: In function `main':
conftest.c:199: warning: statement with no effect
configure:11640: $? = 0
configure:11644: test -z 
			 || test ! -s conftest.err
configure:11647: $? = 0
configure:11650: test -s conftest.o
configure:11653: $? = 0
configure:11664: result: yes
configure:11675: checking for limit RLIMIT_MEMLOCK
configure:11701: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
conftest.c: In function `main':
conftest.c:200: warning: statement with no effect
configure:11707: $? = 0
configure:11711: test -z 
			 || test ! -s conftest.err
configure:11714: $? = 0
configure:11717: test -s conftest.o
configure:11720: $? = 0
configure:11731: result: yes
configure:11742: checking for limit RLIMIT_NPROC
configure:11768: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
conftest.c: In function `main':
conftest.c:201: warning: statement with no effect
configure:11774: $? = 0
configure:11778: test -z 
			 || test ! -s conftest.err
configure:11781: $? = 0
configure:11784: test -s conftest.o
configure:11787: $? = 0
configure:11798: result: yes
configure:11809: checking for limit RLIMIT_NOFILE
configure:11835: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
conftest.c: In function `main':
conftest.c:202: warning: statement with no effect
configure:11841: $? = 0
configure:11845: test -z 
			 || test ! -s conftest.err
configure:11848: $? = 0
configure:11851: test -s conftest.o
configure:11854: $? = 0
configure:11865: result: yes
configure:11876: checking for limit RLIMIT_PTHREAD
configure:11902: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
conftest.c: In function `main':
conftest.c:204: error: `RLIMIT_PTHREAD' undeclared (first use in this function)
conftest.c:204: error: (Each undeclared identifier is reported only once
conftest.c:204: error: for each function it appears in.)
configure:11908: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_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_UTMPX_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_SYS_STROPTS_H 1
| #define HAVE_ICONV_H 1
| #define HAVE_DLFCN_H 1
| #define GWINSZ_IN_SYS_IOCTL 1
| #define HAVE_LIBM 1
| #define HAVE_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 1
| #define HAVE_LIBDL 1
| #define HAVE_OSPEED 1
| #define RETSIGTYPE void
| #define OFF_T_IS_64_BIT 1
| #define INO_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_UTMPX 1
| #define HAVE_STRUCT_UTMP_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_TV 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_MKSTEMP 1
| #define HAVE_WAITPID 1
| #define HAVE_WAIT3 1
| #define HAVE_SIGACTION 1
| #define HAVE_SIGBLOCK 1
| #define HAVE_SIGHOLD 1
| #define HAVE_SIGRELSE 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_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_NIS_LIST 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_GETRUSAGE 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_OPEN_MEMSTREAM 1
| #define HAVE_WCTOMB 1
| #define HAVE_ICONV 1
| #define HAVE_GRANTPT 1
| #define HAVE_UNLOCKPT 1
| #define HAVE_PTSNAME 1
| #define HAVE_HTONS 1
| #define HAVE_NTOHS 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_AS 1
| #define HAVE_RLIMIT_LOCKS 1
| #define HAVE_RLIMIT_MEMLOCK 1
| #define HAVE_RLIMIT_NPROC 1
| #define HAVE_RLIMIT_NOFILE 1
| /* end confdefs.h.  */
| 
| #include <sys/types.h>
| #ifdef HAVE_SYS_TIME_H
| #include <sys/time.h>
| #endif
| #include <sys/resource.h>
| int
| main ()
| {
| RLIMIT_PTHREAD
|   ;
|   return 0;
| }
configure:11932: result: no
configure:11943: checking for limit RLIMIT_RSS
configure:11969: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
conftest.c: In function `main':
conftest.c:203: warning: statement with no effect
configure:11975: $? = 0
configure:11979: test -z 
			 || test ! -s conftest.err
configure:11982: $? = 0
configure:11985: test -s conftest.o
configure:11988: $? = 0
configure:11999: result: yes
configure:12010: checking for limit RLIMIT_SBSIZE
configure:12036: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
conftest.c: In function `main':
conftest.c:205: error: `RLIMIT_SBSIZE' undeclared (first use in this function)
conftest.c:205: error: (Each undeclared identifier is reported only once
conftest.c:205: error: for each function it appears in.)
configure:12042: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_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_UTMPX_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_SYS_STROPTS_H 1
| #define HAVE_ICONV_H 1
| #define HAVE_DLFCN_H 1
| #define GWINSZ_IN_SYS_IOCTL 1
| #define HAVE_LIBM 1
| #define HAVE_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 1
| #define HAVE_LIBDL 1
| #define HAVE_OSPEED 1
| #define RETSIGTYPE void
| #define OFF_T_IS_64_BIT 1
| #define INO_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_UTMPX 1
| #define HAVE_STRUCT_UTMP_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_TV 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_MKSTEMP 1
| #define HAVE_WAITPID 1
| #define HAVE_WAIT3 1
| #define HAVE_SIGACTION 1
| #define HAVE_SIGBLOCK 1
| #define HAVE_SIGHOLD 1
| #define HAVE_SIGRELSE 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_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_NIS_LIST 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_GETRUSAGE 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_OPEN_MEMSTREAM 1
| #define HAVE_WCTOMB 1
| #define HAVE_ICONV 1
| #define HAVE_GRANTPT 1
| #define HAVE_UNLOCKPT 1
| #define HAVE_PTSNAME 1
| #define HAVE_HTONS 1
| #define HAVE_NTOHS 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_AS 1
| #define HAVE_RLIMIT_LOCKS 1
| #define HAVE_RLIMIT_MEMLOCK 1
| #define HAVE_RLIMIT_NPROC 1
| #define HAVE_RLIMIT_NOFILE 1
| #define HAVE_RLIMIT_RSS 1
| /* end confdefs.h.  */
| 
| #include <sys/types.h>
| #ifdef HAVE_SYS_TIME_H
| #include <sys/time.h>
| #endif
| #include <sys/resource.h>
| int
| main ()
| {
| RLIMIT_SBSIZE
|   ;
|   return 0;
| }
configure:12066: result: no
configure:12077: checking for limit RLIMIT_TCACHE
configure:12103: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
conftest.c: In function `main':
conftest.c:205: error: `RLIMIT_TCACHE' undeclared (first use in this function)
conftest.c:205: error: (Each undeclared identifier is reported only once
conftest.c:205: error: for each function it appears in.)
configure:12109: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_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_UTMPX_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_SYS_STROPTS_H 1
| #define HAVE_ICONV_H 1
| #define HAVE_DLFCN_H 1
| #define GWINSZ_IN_SYS_IOCTL 1
| #define HAVE_LIBM 1
| #define HAVE_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 1
| #define HAVE_LIBDL 1
| #define HAVE_OSPEED 1
| #define RETSIGTYPE void
| #define OFF_T_IS_64_BIT 1
| #define INO_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_UTMPX 1
| #define HAVE_STRUCT_UTMP_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_TV 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_MKSTEMP 1
| #define HAVE_WAITPID 1
| #define HAVE_WAIT3 1
| #define HAVE_SIGACTION 1
| #define HAVE_SIGBLOCK 1
| #define HAVE_SIGHOLD 1
| #define HAVE_SIGRELSE 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_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_NIS_LIST 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_GETRUSAGE 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_OPEN_MEMSTREAM 1
| #define HAVE_WCTOMB 1
| #define HAVE_ICONV 1
| #define HAVE_GRANTPT 1
| #define HAVE_UNLOCKPT 1
| #define HAVE_PTSNAME 1
| #define HAVE_HTONS 1
| #define HAVE_NTOHS 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_AS 1
| #define HAVE_RLIMIT_LOCKS 1
| #define HAVE_RLIMIT_MEMLOCK 1
| #define HAVE_RLIMIT_NPROC 1
| #define HAVE_RLIMIT_NOFILE 1
| #define HAVE_RLIMIT_RSS 1
| /* end confdefs.h.  */
| 
| #include <sys/types.h>
| #ifdef HAVE_SYS_TIME_H
| #include <sys/time.h>
| #endif
| #include <sys/resource.h>
| int
| main ()
| {
| RLIMIT_TCACHE
|   ;
|   return 0;
| }
configure:12133: result: no
configure:12144: checking for limit RLIMIT_VMEM
configure:12170: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
conftest.c: In function `main':
conftest.c:205: error: `RLIMIT_VMEM' undeclared (first use in this function)
conftest.c:205: error: (Each undeclared identifier is reported only once
conftest.c:205: error: for each function it appears in.)
configure:12176: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_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_UTMPX_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_SYS_STROPTS_H 1
| #define HAVE_ICONV_H 1
| #define HAVE_DLFCN_H 1
| #define GWINSZ_IN_SYS_IOCTL 1
| #define HAVE_LIBM 1
| #define HAVE_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 1
| #define HAVE_LIBDL 1
| #define HAVE_OSPEED 1
| #define RETSIGTYPE void
| #define OFF_T_IS_64_BIT 1
| #define INO_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_UTMPX 1
| #define HAVE_STRUCT_UTMP_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_TV 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_MKSTEMP 1
| #define HAVE_WAITPID 1
| #define HAVE_WAIT3 1
| #define HAVE_SIGACTION 1
| #define HAVE_SIGBLOCK 1
| #define HAVE_SIGHOLD 1
| #define HAVE_SIGRELSE 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_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_NIS_LIST 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_GETRUSAGE 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_OPEN_MEMSTREAM 1
| #define HAVE_WCTOMB 1
| #define HAVE_ICONV 1
| #define HAVE_GRANTPT 1
| #define HAVE_UNLOCKPT 1
| #define HAVE_PTSNAME 1
| #define HAVE_HTONS 1
| #define HAVE_NTOHS 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_AS 1
| #define HAVE_RLIMIT_LOCKS 1
| #define HAVE_RLIMIT_MEMLOCK 1
| #define HAVE_RLIMIT_NPROC 1
| #define HAVE_RLIMIT_NOFILE 1
| #define HAVE_RLIMIT_RSS 1
| /* end confdefs.h.  */
| 
| #include <sys/types.h>
| #ifdef HAVE_SYS_TIME_H
| #include <sys/time.h>
| #endif
| #include <sys/resource.h>
| int
| main ()
| {
| RLIMIT_VMEM
|   ;
|   return 0;
| }
configure:12200: result: no
configure:12211: checking for limit RLIMIT_SIGPENDING
configure:12237: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
conftest.c: In function `main':
conftest.c:205: error: `RLIMIT_SIGPENDING' undeclared (first use in this function)
conftest.c:205: error: (Each undeclared identifier is reported only once
conftest.c:205: error: for each function it appears in.)
configure:12243: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_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_UTMPX_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_SYS_STROPTS_H 1
| #define HAVE_ICONV_H 1
| #define HAVE_DLFCN_H 1
| #define GWINSZ_IN_SYS_IOCTL 1
| #define HAVE_LIBM 1
| #define HAVE_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 1
| #define HAVE_LIBDL 1
| #define HAVE_OSPEED 1
| #define RETSIGTYPE void
| #define OFF_T_IS_64_BIT 1
| #define INO_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_UTMPX 1
| #define HAVE_STRUCT_UTMP_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_TV 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_MKSTEMP 1
| #define HAVE_WAITPID 1
| #define HAVE_WAIT3 1
| #define HAVE_SIGACTION 1
| #define HAVE_SIGBLOCK 1
| #define HAVE_SIGHOLD 1
| #define HAVE_SIGRELSE 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_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_NIS_LIST 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_GETRUSAGE 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_OPEN_MEMSTREAM 1
| #define HAVE_WCTOMB 1
| #define HAVE_ICONV 1
| #define HAVE_GRANTPT 1
| #define HAVE_UNLOCKPT 1
| #define HAVE_PTSNAME 1
| #define HAVE_HTONS 1
| #define HAVE_NTOHS 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_AS 1
| #define HAVE_RLIMIT_LOCKS 1
| #define HAVE_RLIMIT_MEMLOCK 1
| #define HAVE_RLIMIT_NPROC 1
| #define HAVE_RLIMIT_NOFILE 1
| #define HAVE_RLIMIT_RSS 1
| /* end confdefs.h.  */
| 
| #include <sys/types.h>
| #ifdef HAVE_SYS_TIME_H
| #include <sys/time.h>
| #endif
| #include <sys/resource.h>
| int
| main ()
| {
| RLIMIT_SIGPENDING
|   ;
|   return 0;
| }
configure:12267: result: no
configure:12278: checking for limit RLIMIT_MSGQUEUE
configure:12304: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
conftest.c: In function `main':
conftest.c:205: error: `RLIMIT_MSGQUEUE' undeclared (first use in this function)
conftest.c:205: error: (Each undeclared identifier is reported only once
conftest.c:205: error: for each function it appears in.)
configure:12310: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_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_UTMPX_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_SYS_STROPTS_H 1
| #define HAVE_ICONV_H 1
| #define HAVE_DLFCN_H 1
| #define GWINSZ_IN_SYS_IOCTL 1
| #define HAVE_LIBM 1
| #define HAVE_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 1
| #define HAVE_LIBDL 1
| #define HAVE_OSPEED 1
| #define RETSIGTYPE void
| #define OFF_T_IS_64_BIT 1
| #define INO_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_UTMPX 1
| #define HAVE_STRUCT_UTMP_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_TV 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_MKSTEMP 1
| #define HAVE_WAITPID 1
| #define HAVE_WAIT3 1
| #define HAVE_SIGACTION 1
| #define HAVE_SIGBLOCK 1
| #define HAVE_SIGHOLD 1
| #define HAVE_SIGRELSE 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_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_NIS_LIST 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_GETRUSAGE 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_OPEN_MEMSTREAM 1
| #define HAVE_WCTOMB 1
| #define HAVE_ICONV 1
| #define HAVE_GRANTPT 1
| #define HAVE_UNLOCKPT 1
| #define HAVE_PTSNAME 1
| #define HAVE_HTONS 1
| #define HAVE_NTOHS 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_AS 1
| #define HAVE_RLIMIT_LOCKS 1
| #define HAVE_RLIMIT_MEMLOCK 1
| #define HAVE_RLIMIT_NPROC 1
| #define HAVE_RLIMIT_NOFILE 1
| #define HAVE_RLIMIT_RSS 1
| /* end confdefs.h.  */
| 
| #include <sys/types.h>
| #ifdef HAVE_SYS_TIME_H
| #include <sys/time.h>
| #endif
| #include <sys/resource.h>
| int
| main ()
| {
| RLIMIT_MSGQUEUE
|   ;
|   return 0;
| }
configure:12334: result: no
configure:12346: checking if RLIMIT_VMEM and RLIMIT_RSS are the same
configure:12376: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:12379: $? = 0
configure:12381: ./conftest
configure:12384: $? = 1
configure: program exited with status 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_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_UTMPX_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_SYS_STROPTS_H 1
| #define HAVE_ICONV_H 1
| #define HAVE_DLFCN_H 1
| #define GWINSZ_IN_SYS_IOCTL 1
| #define HAVE_LIBM 1
| #define HAVE_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 1
| #define HAVE_LIBDL 1
| #define HAVE_OSPEED 1
| #define RETSIGTYPE void
| #define OFF_T_IS_64_BIT 1
| #define INO_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_UTMPX 1
| #define HAVE_STRUCT_UTMP_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_TV 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_MKSTEMP 1
| #define HAVE_WAITPID 1
| #define HAVE_WAIT3 1
| #define HAVE_SIGACTION 1
| #define HAVE_SIGBLOCK 1
| #define HAVE_SIGHOLD 1
| #define HAVE_SIGRELSE 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_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_NIS_LIST 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_GETRUSAGE 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_OPEN_MEMSTREAM 1
| #define HAVE_WCTOMB 1
| #define HAVE_ICONV 1
| #define HAVE_GRANTPT 1
| #define HAVE_UNLOCKPT 1
| #define HAVE_PTSNAME 1
| #define HAVE_HTONS 1
| #define HAVE_NTOHS 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_AS 1
| #define HAVE_RLIMIT_LOCKS 1
| #define HAVE_RLIMIT_MEMLOCK 1
| #define HAVE_RLIMIT_NPROC 1
| #define HAVE_RLIMIT_NOFILE 1
| #define HAVE_RLIMIT_RSS 1
| /* end 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:12398: result: no
configure:12411: checking if RLIMIT_VMEM and RLIMIT_AS are the same
configure:12441: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
configure:12444: $? = 0
configure:12446: ./conftest
configure:12449: $? = 1
configure: program exited with status 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_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_UTMPX_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_SYS_STROPTS_H 1
| #define HAVE_ICONV_H 1
| #define HAVE_DLFCN_H 1
| #define GWINSZ_IN_SYS_IOCTL 1
| #define HAVE_LIBM 1
| #define HAVE_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 1
| #define HAVE_LIBDL 1
| #define HAVE_OSPEED 1
| #define RETSIGTYPE void
| #define OFF_T_IS_64_BIT 1
| #define INO_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_UTMPX 1
| #define HAVE_STRUCT_UTMP_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_TV 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_MKSTEMP 1
| #define HAVE_WAITPID 1
| #define HAVE_WAIT3 1
| #define HAVE_SIGACTION 1
| #define HAVE_SIGBLOCK 1
| #define HAVE_SIGHOLD 1
| #define HAVE_SIGRELSE 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_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_NIS_LIST 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_GETRUSAGE 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_OPEN_MEMSTREAM 1
| #define HAVE_WCTOMB 1
| #define HAVE_ICONV 1
| #define HAVE_GRANTPT 1
| #define HAVE_UNLOCKPT 1
| #define HAVE_PTSNAME 1
| #define HAVE_HTONS 1
| #define HAVE_NTOHS 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_AS 1
| #define HAVE_RLIMIT_LOCKS 1
| #define HAVE_RLIMIT_MEMLOCK 1
| #define HAVE_RLIMIT_NPROC 1
| #define HAVE_RLIMIT_NOFILE 1
| #define HAVE_RLIMIT_RSS 1
| /* end 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:12463: result: no
configure:12475: checking for struct rusage.ru_maxrss
configure:12503: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:12509: $? = 0
configure:12513: test -z 
			 || test ! -s conftest.err
configure:12516: $? = 0
configure:12519: test -s conftest.o
configure:12522: $? = 0
configure:12584: result: yes
configure:12594: checking for struct rusage.ru_ixrss
configure:12622: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:12628: $? = 0
configure:12632: test -z 
			 || test ! -s conftest.err
configure:12635: $? = 0
configure:12638: test -s conftest.o
configure:12641: $? = 0
configure:12703: result: yes
configure:12713: checking for struct rusage.ru_idrss
configure:12741: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:12747: $? = 0
configure:12751: test -z 
			 || test ! -s conftest.err
configure:12754: $? = 0
configure:12757: test -s conftest.o
configure:12760: $? = 0
configure:12822: result: yes
configure:12832: checking for struct rusage.ru_isrss
configure:12860: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:12866: $? = 0
configure:12870: test -z 
			 || test ! -s conftest.err
configure:12873: $? = 0
configure:12876: test -s conftest.o
configure:12879: $? = 0
configure:12941: result: yes
configure:12951: checking for struct rusage.ru_minflt
configure:12979: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:12985: $? = 0
configure:12989: test -z 
			 || test ! -s conftest.err
configure:12992: $? = 0
configure:12995: test -s conftest.o
configure:12998: $? = 0
configure:13060: result: yes
configure:13070: checking for struct rusage.ru_majflt
configure:13098: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:13104: $? = 0
configure:13108: test -z 
			 || test ! -s conftest.err
configure:13111: $? = 0
configure:13114: test -s conftest.o
configure:13117: $? = 0
configure:13179: result: yes
configure:13189: checking for struct rusage.ru_nswap
configure:13217: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:13223: $? = 0
configure:13227: test -z 
			 || test ! -s conftest.err
configure:13230: $? = 0
configure:13233: test -s conftest.o
configure:13236: $? = 0
configure:13298: result: yes
configure:13308: checking for struct rusage.ru_inblock
configure:13336: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:13342: $? = 0
configure:13346: test -z 
			 || test ! -s conftest.err
configure:13349: $? = 0
configure:13352: test -s conftest.o
configure:13355: $? = 0
configure:13417: result: yes
configure:13427: checking for struct rusage.ru_oublock
configure:13455: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:13461: $? = 0
configure:13465: test -z 
			 || test ! -s conftest.err
configure:13468: $? = 0
configure:13471: test -s conftest.o
configure:13474: $? = 0
configure:13536: result: yes
configure:13546: checking for struct rusage.ru_msgsnd
configure:13574: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:13580: $? = 0
configure:13584: test -z 
			 || test ! -s conftest.err
configure:13587: $? = 0
configure:13590: test -s conftest.o
configure:13593: $? = 0
configure:13655: result: yes
configure:13665: checking for struct rusage.ru_msgrcv
configure:13693: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:13699: $? = 0
configure:13703: test -z 
			 || test ! -s conftest.err
configure:13706: $? = 0
configure:13709: test -s conftest.o
configure:13712: $? = 0
configure:13774: result: yes
configure:13784: checking for struct rusage.ru_nsignals
configure:13812: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:13818: $? = 0
configure:13822: test -z 
			 || test ! -s conftest.err
configure:13825: $? = 0
configure:13828: test -s conftest.o
configure:13831: $? = 0
configure:13893: result: yes
configure:13903: checking for struct rusage.ru_nvcsw
configure:13931: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:13937: $? = 0
configure:13941: test -z 
			 || test ! -s conftest.err
configure:13944: $? = 0
configure:13947: test -s conftest.o
configure:13950: $? = 0
configure:14012: result: yes
configure:14022: checking for struct rusage.ru_nivcsw
configure:14050: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
configure:14056: $? = 0
configure:14060: test -z 
			 || test ! -s conftest.err
configure:14063: $? = 0
configure:14066: test -s conftest.o
configure:14069: $? = 0
configure:14131: result: yes
configure:14166: checking for /dev/fd filesystem
configure:14175: result: /proc/self/fd
configure:14184: checking for RFS superroot directory
configure:14191: result: no
configure:14202: checking whether we should use the native getcwd
configure:14212: result: no
configure:14225: checking for NIS
configure:14233: result: no
configure:14244: checking for NIS+
configure:14253: result: no
configure:14262: checking for utmp file
configure:14274: result: /etc/utmp
configure:14285: checking for wtmp file
configure:14297: result: /var/adm/wtmp
configure:14308: checking for utmpx file
configure:14320: result: no
configure:14331: checking for wtmpx file
configure:14343: result: no
configure:14355: checking for brk() prototype in <unistd.h>
configure:14377: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
conftest.c:214: error: conflicting types for 'brk'
/usr/include/unistd.h:859: error: previous declaration of 'brk' was here
conftest.c:214: error: conflicting types for 'brk'
/usr/include/unistd.h:859: error: previous declaration of 'brk' was here
conftest.c: In function `main':
conftest.c:218: warning: unused variable `i'
configure:14383: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_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_UTMPX_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_SYS_STROPTS_H 1
| #define HAVE_ICONV_H 1
| #define HAVE_DLFCN_H 1
| #define GWINSZ_IN_SYS_IOCTL 1
| #define HAVE_LIBM 1
| #define HAVE_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 1
| #define HAVE_LIBDL 1
| #define HAVE_OSPEED 1
| #define RETSIGTYPE void
| #define OFF_T_IS_64_BIT 1
| #define INO_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_UTMPX 1
| #define HAVE_STRUCT_UTMP_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_TV 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_MKSTEMP 1
| #define HAVE_WAITPID 1
| #define HAVE_WAIT3 1
| #define HAVE_SIGACTION 1
| #define HAVE_SIGBLOCK 1
| #define HAVE_SIGHOLD 1
| #define HAVE_SIGRELSE 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_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_NIS_LIST 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_GETRUSAGE 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_OPEN_MEMSTREAM 1
| #define HAVE_WCTOMB 1
| #define HAVE_ICONV 1
| #define HAVE_GRANTPT 1
| #define HAVE_UNLOCKPT 1
| #define HAVE_PTSNAME 1
| #define HAVE_HTONS 1
| #define HAVE_NTOHS 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_AS 1
| #define HAVE_RLIMIT_LOCKS 1
| #define HAVE_RLIMIT_MEMLOCK 1
| #define HAVE_RLIMIT_NPROC 1
| #define HAVE_RLIMIT_NOFILE 1
| #define HAVE_RLIMIT_RSS 1
| #define HAVE_STRUCT_RUSAGE_RU_MAXRSS 1
| #define HAVE_STRUCT_RUSAGE_RU_IXRSS 1
| #define HAVE_STRUCT_RUSAGE_RU_IDRSS 1
| #define HAVE_STRUCT_RUSAGE_RU_ISRSS 1
| #define HAVE_STRUCT_RUSAGE_RU_MINFLT 1
| #define HAVE_STRUCT_RUSAGE_RU_MAJFLT 1
| #define HAVE_STRUCT_RUSAGE_RU_NSWAP 1
| #define HAVE_STRUCT_RUSAGE_RU_INBLOCK 1
| #define HAVE_STRUCT_RUSAGE_RU_OUBLOCK 1
| #define HAVE_STRUCT_RUSAGE_RU_MSGSND 1
| #define HAVE_STRUCT_RUSAGE_RU_MSGRCV 1
| #define HAVE_STRUCT_RUSAGE_RU_NSIGNALS 1
| #define HAVE_STRUCT_RUSAGE_RU_NVCSW 1
| #define HAVE_STRUCT_RUSAGE_RU_NIVCSW 1
| #define DEFAULT_PATH "/bin:/usr/bin"
| #define PATH_DEV_FD "/proc/self/fd"
| #define PATH_UTMP_FILE "/etc/utmp"
| #define PATH_WTMP_FILE "/var/adm/wtmp"
| /* end confdefs.h.  */
| #include <unistd.h>
| double brk();
| int
| main ()
| {
| int i;
|   ;
|   return 0;
| }
configure:14407: result: yes
configure:14418: checking for sbrk() prototype in <unistd.h>
configure:14440: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
conftest.c:215: error: conflicting types for 'sbrk'
/usr/include/unistd.h:865: error: previous declaration of 'sbrk' was here
conftest.c:215: error: conflicting types for 'sbrk'
/usr/include/unistd.h:865: error: previous declaration of 'sbrk' was here
conftest.c: In function `main':
conftest.c:219: warning: unused variable `i'
configure:14446: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_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_UTMPX_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_SYS_STROPTS_H 1
| #define HAVE_ICONV_H 1
| #define HAVE_DLFCN_H 1
| #define GWINSZ_IN_SYS_IOCTL 1
| #define HAVE_LIBM 1
| #define HAVE_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 1
| #define HAVE_LIBDL 1
| #define HAVE_OSPEED 1
| #define RETSIGTYPE void
| #define OFF_T_IS_64_BIT 1
| #define INO_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_UTMPX 1
| #define HAVE_STRUCT_UTMP_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_TV 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_MKSTEMP 1
| #define HAVE_WAITPID 1
| #define HAVE_WAIT3 1
| #define HAVE_SIGACTION 1
| #define HAVE_SIGBLOCK 1
| #define HAVE_SIGHOLD 1
| #define HAVE_SIGRELSE 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_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_NIS_LIST 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_GETRUSAGE 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_OPEN_MEMSTREAM 1
| #define HAVE_WCTOMB 1
| #define HAVE_ICONV 1
| #define HAVE_GRANTPT 1
| #define HAVE_UNLOCKPT 1
| #define HAVE_PTSNAME 1
| #define HAVE_HTONS 1
| #define HAVE_NTOHS 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_AS 1
| #define HAVE_RLIMIT_LOCKS 1
| #define HAVE_RLIMIT_MEMLOCK 1
| #define HAVE_RLIMIT_NPROC 1
| #define HAVE_RLIMIT_NOFILE 1
| #define HAVE_RLIMIT_RSS 1
| #define HAVE_STRUCT_RUSAGE_RU_MAXRSS 1
| #define HAVE_STRUCT_RUSAGE_RU_IXRSS 1
| #define HAVE_STRUCT_RUSAGE_RU_IDRSS 1
| #define HAVE_STRUCT_RUSAGE_RU_ISRSS 1
| #define HAVE_STRUCT_RUSAGE_RU_MINFLT 1
| #define HAVE_STRUCT_RUSAGE_RU_MAJFLT 1
| #define HAVE_STRUCT_RUSAGE_RU_NSWAP 1
| #define HAVE_STRUCT_RUSAGE_RU_INBLOCK 1
| #define HAVE_STRUCT_RUSAGE_RU_OUBLOCK 1
| #define HAVE_STRUCT_RUSAGE_RU_MSGSND 1
| #define HAVE_STRUCT_RUSAGE_RU_MSGRCV 1
| #define HAVE_STRUCT_RUSAGE_RU_NSIGNALS 1
| #define HAVE_STRUCT_RUSAGE_RU_NVCSW 1
| #define HAVE_STRUCT_RUSAGE_RU_NIVCSW 1
| #define DEFAULT_PATH "/bin:/usr/bin"
| #define PATH_DEV_FD "/proc/self/fd"
| #define PATH_UTMP_FILE "/etc/utmp"
| #define PATH_WTMP_FILE "/var/adm/wtmp"
| #define HAVE_BRK_PROTO 1
| /* end confdefs.h.  */
| #include <unistd.h>
| double sbrk();
| int
| main ()
| {
| int i;
|   ;
|   return 0;
| }
configure:14470: result: yes
configure:14487: checking for ioctl prototype in <sys/ioctl.h>
configure:14509: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
conftest.c:216: error: conflicting types for 'ioctl'
/usr/include/sys/ioctl.h:42: error: previous declaration of 'ioctl' was here
conftest.c:216: error: conflicting types for 'ioctl'
/usr/include/sys/ioctl.h:42: error: previous declaration of 'ioctl' was here
conftest.c: In function `main':
conftest.c:220: warning: unused variable `i'
configure:14515: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_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_UTMPX_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_SYS_STROPTS_H 1
| #define HAVE_ICONV_H 1
| #define HAVE_DLFCN_H 1
| #define GWINSZ_IN_SYS_IOCTL 1
| #define HAVE_LIBM 1
| #define HAVE_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 1
| #define HAVE_LIBDL 1
| #define HAVE_OSPEED 1
| #define RETSIGTYPE void
| #define OFF_T_IS_64_BIT 1
| #define INO_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_UTMPX 1
| #define HAVE_STRUCT_UTMP_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_TV 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_MKSTEMP 1
| #define HAVE_WAITPID 1
| #define HAVE_WAIT3 1
| #define HAVE_SIGACTION 1
| #define HAVE_SIGBLOCK 1
| #define HAVE_SIGHOLD 1
| #define HAVE_SIGRELSE 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_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_NIS_LIST 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_GETRUSAGE 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_OPEN_MEMSTREAM 1
| #define HAVE_WCTOMB 1
| #define HAVE_ICONV 1
| #define HAVE_GRANTPT 1
| #define HAVE_UNLOCKPT 1
| #define HAVE_PTSNAME 1
| #define HAVE_HTONS 1
| #define HAVE_NTOHS 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_AS 1
| #define HAVE_RLIMIT_LOCKS 1
| #define HAVE_RLIMIT_MEMLOCK 1
| #define HAVE_RLIMIT_NPROC 1
| #define HAVE_RLIMIT_NOFILE 1
| #define HAVE_RLIMIT_RSS 1
| #define HAVE_STRUCT_RUSAGE_RU_MAXRSS 1
| #define HAVE_STRUCT_RUSAGE_RU_IXRSS 1
| #define HAVE_STRUCT_RUSAGE_RU_IDRSS 1
| #define HAVE_STRUCT_RUSAGE_RU_ISRSS 1
| #define HAVE_STRUCT_RUSAGE_RU_MINFLT 1
| #define HAVE_STRUCT_RUSAGE_RU_MAJFLT 1
| #define HAVE_STRUCT_RUSAGE_RU_NSWAP 1
| #define HAVE_STRUCT_RUSAGE_RU_INBLOCK 1
| #define HAVE_STRUCT_RUSAGE_RU_OUBLOCK 1
| #define HAVE_STRUCT_RUSAGE_RU_MSGSND 1
| #define HAVE_STRUCT_RUSAGE_RU_MSGRCV 1
| #define HAVE_STRUCT_RUSAGE_RU_NSIGNALS 1
| #define HAVE_STRUCT_RUSAGE_RU_NVCSW 1
| #define HAVE_STRUCT_RUSAGE_RU_NIVCSW 1
| #define DEFAULT_PATH "/bin:/usr/bin"
| #define PATH_DEV_FD "/proc/self/fd"
| #define PATH_UTMP_FILE "/etc/utmp"
| #define PATH_WTMP_FILE "/var/adm/wtmp"
| #define HAVE_BRK_PROTO 1
| #define HAVE_SBRK_PROTO 1
| /* end confdefs.h.  */
| #include <sys/ioctl.h>
|    int ioctl(double x);
| int
| main ()
| {
| int i;
|   ;
|   return 0;
| }
configure:14539: result: yes
configure:14547: checking for mknod prototype in <sys/stat.h>
configure:14569: gcc -c  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 conftest.c >&5
conftest.c:217: error: conflicting types for 'mknod'
/usr/include/sys/stat.h:364: error: previous definition of 'mknod' was here
conftest.c:217: error: conflicting types for 'mknod'
/usr/include/sys/stat.h:364: error: previous definition of 'mknod' was here
conftest.c: In function `main':
conftest.c:221: warning: unused variable `i'
configure:14575: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i686"
| #define VENDOR "pc"
| #define OSTYPE "linux-gnu"
| #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 MAX_FUNCTION_DEPTH 4096
| #define PROTOTYPES 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_TERMIO_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_SYS_PARAM_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_UTMPX_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_SYS_STROPTS_H 1
| #define HAVE_ICONV_H 1
| #define HAVE_DLFCN_H 1
| #define GWINSZ_IN_SYS_IOCTL 1
| #define HAVE_LIBM 1
| #define HAVE_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 1
| #define HAVE_LIBDL 1
| #define HAVE_OSPEED 1
| #define RETSIGTYPE void
| #define OFF_T_IS_64_BIT 1
| #define INO_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_UTMPX 1
| #define HAVE_STRUCT_UTMP_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_HOST 1
| #define HAVE_STRUCT_UTMPX_UT_TV 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_MKSTEMP 1
| #define HAVE_WAITPID 1
| #define HAVE_WAIT3 1
| #define HAVE_SIGACTION 1
| #define HAVE_SIGBLOCK 1
| #define HAVE_SIGHOLD 1
| #define HAVE_SIGRELSE 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_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_NIS_LIST 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_GETRUSAGE 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_OPEN_MEMSTREAM 1
| #define HAVE_WCTOMB 1
| #define HAVE_ICONV 1
| #define HAVE_GRANTPT 1
| #define HAVE_UNLOCKPT 1
| #define HAVE_PTSNAME 1
| #define HAVE_HTONS 1
| #define HAVE_NTOHS 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_AS 1
| #define HAVE_RLIMIT_LOCKS 1
| #define HAVE_RLIMIT_MEMLOCK 1
| #define HAVE_RLIMIT_NPROC 1
| #define HAVE_RLIMIT_NOFILE 1
| #define HAVE_RLIMIT_RSS 1
| #define HAVE_STRUCT_RUSAGE_RU_MAXRSS 1
| #define HAVE_STRUCT_RUSAGE_RU_IXRSS 1
| #define HAVE_STRUCT_RUSAGE_RU_IDRSS 1
| #define HAVE_STRUCT_RUSAGE_RU_ISRSS 1
| #define HAVE_STRUCT_RUSAGE_RU_MINFLT 1
| #define HAVE_STRUCT_RUSAGE_RU_MAJFLT 1
| #define HAVE_STRUCT_RUSAGE_RU_NSWAP 1
| #define HAVE_STRUCT_RUSAGE_RU_INBLOCK 1
| #define HAVE_STRUCT_RUSAGE_RU_OUBLOCK 1
| #define HAVE_STRUCT_RUSAGE_RU_MSGSND 1
| #define HAVE_STRUCT_RUSAGE_RU_MSGRCV 1
| #define HAVE_STRUCT_RUSAGE_RU_NSIGNALS 1
| #define HAVE_STRUCT_RUSAGE_RU_NVCSW 1
| #define HAVE_STRUCT_RUSAGE_RU_NIVCSW 1
| #define DEFAULT_PATH "/bin:/usr/bin"
| #define PATH_DEV_FD "/proc/self/fd"
| #define PATH_UTMP_FILE "/etc/utmp"
| #define PATH_WTMP_FILE "/var/adm/wtmp"
| #define HAVE_BRK_PROTO 1
| #define HAVE_SBRK_PROTO 1
| #define HAVE_IOCTL_PROTO 1
| /* end confdefs.h.  */
| #include <sys/stat.h>
|    int mknod(double x);
| int
| main ()
| {
| int i;
|   ;
|   return 0;
| }
configure:14599: result: yes
configure:14673: checking if named FIFOs work
configure:14720: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
conftest.c:221: warning: return type defaults to `int'
conftest.c: In function `main':
conftest.c:225: warning: implicit declaration of function `unlink'
conftest.c:227: warning: implicit declaration of function `mkfifo'
conftest.c:231: warning: implicit declaration of function `exit'
conftest.c:232: warning: implicit declaration of function `fork'
conftest.c:237: warning: implicit declaration of function `read'
conftest.c:240: warning: implicit declaration of function `write'
configure:14723: $? = 0
configure:14725: ./conftest
configure:14728: $? = 0
configure:14743: result: yes
configure:14753: checking if echo in /bin/sh interprets escape sequences
configure:14764: result: yes
configure:14775: checking if link() works
configure:14810: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
conftest.c:222: warning: return type defaults to `int'
conftest.c: In function `main':
conftest.c:230: warning: implicit declaration of function `exit'
configure:14813: $? = 0
configure:14815: ./conftest
configure:14818: $? = 0
configure:14832: result: yes
configure:14843: checking if kill(pid, 0) returns ESRCH correctly
configure:14870: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
conftest.c:224: warning: return type defaults to `int'
conftest.c: In function `main':
conftest.c:227: warning: implicit declaration of function `exit'
configure:14873: $? = 0
configure:14875: ./conftest
configure:14878: $? = 0
configure:14892: result: yes
configure:14906: checking if POSIX sigsuspend() works
configure:14948: gcc -o conftest  -Wall -Wmissing-prototypes -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  conftest.c -ldl -lnsl -lcurses -ltermcap -lm  -lc >&5
conftest.c:224: warning: no previous prototype for 'handler'
conftest.c:226: warning: return type defaults to `int'
conftest.c: In function `main':
conftest.c:241: warning: implicit declaration of function `exit'
conftest.c:243: warning: control reaches end of non-void function
configure:14951: $? = 0
configure:14953: ./conftest
configure:14956: $? = 0
configure:14970: result: yes

^ permalink raw reply	[relevance 1%]

* Re: Problem with the configure script (2.4.2)
  2005-03-15 16:38  1% Problem with the configure script (2.4.2) Mike Dowling
@ 2005-03-19 15:44  0% ` Philippe Troin
  2005-03-19 15:52  0% ` Andrey Borzenkov
  1 sibling, 0 replies; 200+ results
From: Philippe Troin @ 2005-03-19 15:44 UTC (permalink / raw)
  To: ML.Dowling; +Cc: zsh-workers

Mike Dowling <ML.Dowling@tu-bs.de> writes:

> Hello,
> 
> I cannot get configure to produce a Makefile or a config.h file.  I
> suspect that the problem lies with me, but I would be very grateful for
> any hints as to how I can solve the problem.
> 
> #./configure
> 
> produces lots of output, as usual, and perminates with
> 
> 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... yes
> checking if link() works... yes
> checking if kill(pid, 0) returns ESRCH correctly... yes
> checking if POSIX sigsuspend() works... yes
> 
> Everything looks fine, until I enter
> 
> #make
> make: *** No targets specified and no makefile found.  Stop.
> 
> But there's no Make file.  config.log also looks inoccuous enough
> (attached).
> 
> What could possibly be going wrong?

Maybe the sigsuspend() test wrecks the configure process.  That could
be related to users/20886.

Can you try running configure with sh -x, like in:

  sh -x ./configure <configure-options>

to see where zsh stops?

Please send the gziped output to the list, not the full thing.  Or the
tail of the file.

Phil.


^ permalink raw reply	[relevance 0%]

* Re: Problem with the configure script (2.4.2)
  2005-03-15 16:38  1% Problem with the configure script (2.4.2) Mike Dowling
  2005-03-19 15:44  0% ` Philippe Troin
@ 2005-03-19 15:52  0% ` Andrey Borzenkov
  1 sibling, 0 replies; 200+ results
From: Andrey Borzenkov @ 2005-03-19 15:52 UTC (permalink / raw)
  To: zsh-workers, ML.Dowling

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On Tuesday 15 March 2005 19:38, Mike Dowling wrote:
> Hello,
>
> I cannot get configure to produce a Makefile or a config.h file.  I
> suspect that the problem lies with me, but I would be very grateful for
> any hints as to how I can solve the problem.
>
> #./configure
>
> produces lots of output, as usual, and perminates with
>
> 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... yes
> checking if link() works... yes
> checking if kill(pid, 0) returns ESRCH correctly... yes
> checking if POSIX sigsuspend() works... yes
>

apparently this is the same problem with SIGTTOU as had. Does replaceing 
SIGTTOU with TTOU in configure helps? Does your shell support "trap SIGTTOU"?

This should be fixed in current CVS (ut I begin to suspect my fix was 
better :)


- -andrey
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (GNU/Linux)

iD8DBQFCPE1DR6LMutpd94wRAoKaAJ41/iWQjqU6ZrNwXAhh5fRcKL3yXgCePwLp
Dwdi60tZB3f/VoH6RNrJaiw=
=8cI/
-----END PGP SIGNATURE-----


^ permalink raw reply	[relevance 0%]

* Re: completion for darcs
       [not found]             ` <20050405072940.GA9105@a5.repetae.net>
@ 2005-04-05 13:03  1%           ` Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2005-04-05 13:03 UTC (permalink / raw)
  To: zsh-workers

Frederik Eaton wrote:
> Shouldn't it be possible to just tell zsh that when there are no
> completions for an argument, it should fall back to completing files?

I've nothing to add to the suggestion I made before, but I will add it
to the FAQ.

I haven't looked at the FAQ for ages and the completion description is
completely out of date.  I've added some fairly minimal updates and some
pointers.  Some other information about the shell was also well out of
date; I've turned that into pointers.

Index: Etc/FAQ.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Etc/FAQ.yo,v
retrieving revision 1.16
diff -u -r1.16 FAQ.yo
--- Etc/FAQ.yo	3 Mar 2005 10:29:28 -0000	1.16
+++ Etc/FAQ.yo	5 Apr 2005 12:59:14 -0000
@@ -124,7 +124,7 @@
 4.3. How does zsh deal with ambiguous completions?
 4.4. How do I complete in the middle of words / just what's before the cursor?
 4.5. How do I get started with programmable completion?
-4.6. And if programmable completion isn't good enough?
+4.6. Suppose I want to complete all files during a special completion?
 
 Chapter 5:  The future of zsh
 5.1. What bugs are currently known and unfixed? (Plus recent important changes)
@@ -184,15 +184,10 @@
   The latest version of this FAQ is also available directly from any
   of the zsh archive sites listed in question link(1.6)(16).
 
-  I have been putting together a user guide to complement the manual by
+  I have put together a user guide to complement the manual by
   explaining the most useful features of zsh in a more easy to read way.
-  This will be a long project, but a partial version describing how to
-  write startup files and how to use the new, more powerful, form for
-  completion which first appeared in 3.1.6 (and is not described in this
-  FAQ) can be seen by looking at
-    url(http://www.pwstephenson.fsnet.co.uk/computing/)
-(http://www.pwstephenson.fsnet.co.uk/computing/)
-  where it exists in various formats.
+  This can be found at the zsh web site:
+    url(http://zsh.sunsite.dk/Guide/)(http://zsh.sunsite.dk/Guide/)
 
   (As a method of reading the following in Emacs, you can type tt(\M-2
   \C-x $) to make all the indented text vanish, then tt(\M-0 \C-x $)
@@ -1791,22 +1786,6 @@
 
 chapter(The mysteries of completion)
 
-Programmable completion using the `compctl' command is one of the most
-powerful, and also potentially confusing, features of zsh; here I give
-a short introduction.  There is a set of example completions supplied
-with the source in Misc/compctl-examples; completion definitions for
-many of the most obvious commands can be found there.
-
-If this confuses you, you may like to know that there is a new, more
-elegant completion system which appeared in version 3.1.6.  This is based
-on functions called automatically for completion in particular contexts
-(for example, there is a function called tt(_cd) to handle completion for
-the tt(cd) command) and is installed automatically with the shell, so all
-you need to do, in principal, is to arrange for this to be loaded.  Putting
-`tt(autoload -U compinit; compinit)' in your tt(.zshrc) should be enough if
-the system is installed properly.  The rest of this section talks about the
-old completion system.
-
 
 sect(What is completion?)
 
@@ -1828,6 +1807,15 @@
   fairly intuitive and not under user control; for the rest of the
   chapter I will discuss completion only.
 
+  An elegant completion system appeared in version 4, replacing the old
+  tt(compctl) command.  This is based on functions called automatically for
+  completion in particular contexts (for example, there is a function
+  called tt(_cd) to handle completion for the tt(cd) command) and is
+  installed automatically with the shell, so all you need to do, in
+  principal, is to arrange for this to be loaded.  Putting `tt(autoload -U
+  compinit; compinit)' in your tt(.zshrc) should be enough if the system is
+  installed properly.
+
 
 sect(What sorts of things can be completed?)
 label(42)
@@ -1836,7 +1824,7 @@
   you have made special arrangements, as described below, then after
   you type a command name, anything else you type is assumed by the
   completion system to be a filename.  If you type part of a word and
-  hit TAB, zsh will see if it matches the first part a file name and
+  hit TAB, zsh will see if it matches the first part a filename and
   if it does it will automatically insert the rest.
 
   The other simple type is command completion, which applies
@@ -1845,56 +1833,12 @@
   (or something else you can execute, like a builtin command, a
   function or an alias) and tries to complete that.
 
-  Other forms of completion have to be set up by special arrangement.
-  See the manual entry for compctl for a list of all the flags:  you
-  can make commands complete variable names, user names, job names,
-  etc., etc.
-
-  For example, one common use is that you have an array variable,
-  tt($hosts), which contains names of other machines you use frequently on
-  the network:
-  verb(
-    hosts=(fred.ph.ku.ac.uk snuggles.floppy-bunnies.com here.there.edu)
-  )
-  then you can tell zsh that when you use telnet (or ftp, or ...), the
-  argument will be one of those names:
-  verb(
-    compctl -k hosts telnet ftp ...
-  )
-  so that if you type mytt(telnet fr) and hit TAB, the rest of the name
-  will appear by itself.
-
-  An even more powerful option to tt(compctl) (tt(-g)) is to tell zsh that
-  only certain sorts of filename are allowed.  The argument to tt(-g) is
-  exactly like a glob pattern, with the usual wildcards mytt(*), mytt(?), etc.
-  In the compctl statement it needs to be quoted to avoid it being
-  turned into filenames straight away.  For example,
-  verb(
-    compctl -g '*.(ps|eps)' ghostview
-  )
-  tells zsh that if you type TAB on an argument after a ghostview
-  command, only files ending in mytt(.ps) or mytt(.eps) should be considered
-  for completion.
-
-  A useful addition for zsh from version 3.1 is directory completion:
-  verb(
-    compctl -/ cd
-  )
-  Before, you had to use tt(-g), but this is neater: it takes care of
-  things like ignoring directories beginning with a dot unless you've
-  typed the dot yourself, and whole directory paths are understood.
-
-  Note that flags may be combined; if you have more than one, all the
-  possible completions for all of them are put into the same list, all
-  of them being possible completions.  So
-  verb(
-    compctl -k hosts -f rcp
-  )
-  tells zsh that rcp can have a hostname or a filename after it.  (You
-  really need to be able to handle host:file, which is where
-  programmable completion comes in, see link(4.5)(45).)  Also, from
-  version 3.1 you can always handle directories at the same time as
-  other files just by adding tt(-/) to the list.
+  However, the new completion system is highly sensitive to context
+  and comes with completions for many UNIX commands.  These are
+  automatically loaded when you run tt(compinit) as described above.
+  So the real answer to the question `what can be completed?' is
+  `anything where an automated guess is possible'.  Just hit TAB
+  and see if the shell manages to guess correctly.
 
 
 sect(How does zsh deal with ambiguous completions?)
@@ -1937,10 +1881,10 @@
 
 sect(How do I complete in the middle of words / just what's before the cursor?)
 
-  Sometimes you have a word on the command-line (let's stick to file
-  names) which is incomplete in the middle.  Normally if you hit tab
-  in zsh, it will simply go to the end of the word and try to complete
-  there.  However, there are two ways of changing this.
+  Sometimes you have a word on the command-line which is incomplete in the
+  middle.  Normally if you hit tab in zsh, it will simply go to the end of
+  the word and try to complete there.  However, there are two ways of
+  changing this.
 
   First, there is the option COMPLETE_IN_WORD.  This tries to fill in
   the word at the point of the cursor.  For example, if the current
@@ -1948,163 +1892,55 @@
   complete mytt(fbar) to mytt(foobar) by moving the cursor to the
   mytt(b) and hitting tab.
 
-  That's not the full story, however.  Sometimes you just want the
-  part of the word before the cursor completed.  For example, the word
-  is mytt(/usr/loc/b), which you want to complete to mytt(/usr/local/bin).
-  Normally, zsh won't do this in one go because there are two bits
-  missing (but see below!), so you need to complete the mytt(/usr/loc)
-  on its own first.  For this you need the function
-  tt(expand-or-complete-prefix): it works mostly like the usual
-  function bound to tab, but it ignores anything on the right of the
-  cursor.  If you always want this behaviour (some other shells do
-  this), bind it to tab; otherwise put another binding, e.g. mytt(^X
-  TAB) in tt(~/.zshrc):
+  To complete just what's before the cursor, ignoring anything after, you
+  need the function tt(expand-or-complete-prefix): it works mostly like the
+  usual function bound to tab, but it ignores anything on the right of the
+  cursor.  If you always want this behaviour (some other shells do this),
+  bind it to tab; otherwise put another binding, e.g. mytt(^X TAB) in
+  tt(~/.zshrc):
   verb(
     bindkey "^X^I" expand-or-complete-prefix
   )
-  then in the example you can move to just after mytt(/usr/loc), hit
-  whatever key you've just bound, move to the end, and hit tab.
-  (Note that tt(AUTO_REMOVE_SLASH) behaviour applies here, see the manual.)
-
-  Even that doesn't exhaust the possibilities.  Included with the
-  source distribution is the file tt(Functions/multicomp), a function
-  which you can bind as an alternative form of default completion (see
-  below for a description of alternative completion), e.g.
-  verb(
-    compctl -D -f + -U -Q -K multicomp
-  )
-  and whole sequences of directories, like mytt(/usr/loc/b) or even
-  mytt(/u/l/b) can be completed in one go.  It works best with
-  menucompletion if the result is ambiguous.
+
+  The completion system's handling of filenames allows you to complete
+  multiple segments of a path in one go, so for example tt(/u/l/b)
+  can expand to tt(/usr/local/bin) or anything else that matches.  This
+  saves you having to expand the middle part of the path separately.
 
 
 sect(How do I get started with programmable completion?)
 label(45)
 
-  Finally, the hairiest part of completion.  It is possible to get zsh
-  to consider different completions not only for different commands,
-  but for different words of the same command, or even to look at
-  other words on the command line (for example, if the last word was a
-  particular flag) and decide then.
-
-  There are really two sorts of things to worry about.  The simpler is
-  alternative completion:  that just means zsh will try one
-  alternative, and only if there are no possible completions try the
-  next.  For example
-  verb(
-    compctl -g '*.ps' + -f lpr
-  )
-  says that after lpr you'd prefer to find only mytt(.ps) files, so if
-  there are any, only those are used, but if there aren't any, any
-  old file is a possibility.  You can also have a tt(+) with no flags
-  after it, which tells zsh that it's to treat the command like any
-  other if nothing was found.  That's only really useful if your
-  default completion is fancy, i.e. you have done something with
-  mytt(compctl -D) to tell zsh how commands which aren't specially handled
-  are to have their arguments completed.
-
-  The second sort is the hard one.  Following a mytt(-x), zsh expects that
-  the next thing will be some completion code, which is a single
-  letter followed by an argument in square brackets.  For example
-  mytt(p[1]): mytt(p) is for position, and the argument tells it to look at
-  position 1; that says that this completion only applies to the word
-  immediately after the command.  You can also say mytt(p[1,3]) which says
-  the completion only applies to the word if it's between the first
-  and third words, inclusive, after the command, and so on.  See the
-  list in the `compctl' manual entry for a list of these conditions:
-  some conditions take one argument in the square brackets, some two.
-  Usually, negative numeric arguments count backwards from the end
-  (for example, mytt(p[-1]) applies to the last word on the line).
-
-  (Note the difference in the ways mytt(+) and mytt(-x) work.  A mytt(+)
-  completion will always try and find completions for what's before
-  the mytt(+) first; it will only produce a list for what's after if
-  the first list was empty.  On the other hand, if a condition for a
-  mytt(-x) matches, the appropriate set of completions is always used,
-  even if the list of completions produced is empty.)
-
-  The condition is then followed by the flags as usual (as in link(4.2)(42)),
-  and possibly other condition/flag sets following a single -; the
-  whole lot ends with a double -- before the command name.  In other
-  words, each extended completion section looks like this:
-  verb(
-    -x <pattern> <flags>... [ - <pattern> <flags>... ...] --
-  )
-
-  Let's look at rcp again: this assumes you've set up tt($hosts) as above.
-  This uses the mytt(n[<n>,<string>]) flag, which tells zsh to look for
-  the tt(<n>)'th occurrence of <string> in the word, ignoring anything up
-  to and including that.  We'll use it for completing the bits of
-  rcp's mytt(user@host:file) combination.  (Of course, the file name is on
-  the local machine, not mytt(host), but let's ignore that; it may still
-  be useful.)
-  COMMENT(-- note space after backslash --)
-  verb(
-    compctl -k hosts -S ':' + -f -x 'n[1,:]' -f - \ 
-          'n[1,@]' -k hosts -S ':' -- rcp
-  )
-  This means: (1) try and complete a hostname (the bit before the
-  mytt(+)), if successful add a mytt(:) (tt(-S) for suffix); (2) if that fails
-  move on to try the code after the mytt(+):  look and see if there is a
-  mytt(:) in a word (the mytt(n[1,:])); if there is, complete filenames
-  (tt(-f)) after the first of them; (3) otherwise look for an mytt(@) and
-  complete hostnames after the first of them (the mytt(n[1,@])), adding a
-  mytt(:) if successful; (4) if all else fails use the mytt(-f) before the
-  mytt(-x) and try to complete files.
-
-  So the rules for order are (1) try anything before a mytt(+) before
-  anything after it (2) try the conditions after a tt(-x) in order until
-  one succeeds (3) use the default flags before the tt(-x) if none of the
-  conditions was true.
-
-  Different conditions can also be combined.  There are three levels
-  of this (in decreasing order of precedence):
-  enumerate(
-   myeit() multiple square brackets after a single condition give
-      alternatives:  for example, mytt(s[foo][bar]) says apply the
-      completion if the word begins with mytt(foo) or mytt(bar),
-   myeit() spaces between conditions mean both must match:  for example,
-      mytt(p[1] s[-]) says this completion only applies for the first word
-      after the command and only if it begins with a mytt(-),
-   myeit() commas between conditions mean either can match:  for example,
-      mytt(c[-1,-f], s[-f]) means either the previous word (-1 relative to
-      the current one) is tt(-f), or the current word begins with tt(-f) ---
-      useful to use the same completion whether or not the tt(-f) has a
-      space after it.
-  )
-  You must be careful to put the whole expression inside quotation
-  marks, so that it appears as a single argument to tt(compctl).
-
-  Here's a useless example just to show a general mytt(-x) completion.
-  verb(
-    compctl -f -x 'c[-1,-u][-1,-U] p[2], s[-u]' -u - \ 
-      'c[-1,-j]' -P % -j -- foobar
-  )
-  The way to read this is:  for command mytt(foobar), look and see if (((the
-  word before the current one is tt(-u)) or (the word before the current
-  one is tt(-U))) and (the current word is 2)) or (the current word begins
-  with tt(-u)); if so, try to complete user names.  If the word before
-  the current one is tt(-j), insert the prefix mytt(%) before the current word
-  if it's not there already and complete job names.  Otherwise, just
-  complete file names.
-
-
-sect(And if programmable completion isn't good enough?)
-
-  ...then your last resort is to write a shell function to do it for
-  you.  By combining the mytt(-U) and mytt(-K func) flags you can get
-  almost unlimited power.  The mytt(-U) tells zsh that whatever the
-  completion produces is to be used, even if it doesn't fit what's
-  there already (so that gets deleted when the completion is
-  inserted).  The mytt(-K func) tells zsh a function name.  The
-  function is passed the part of the word already typed, and can read
-  the rest of the line with mytt(read -c).  It can return a set of
-  completions via the mytt(reply) array, and this becomes the set of
-  possible completions.  The best way to understand this is to look at
-  mytt(multicomp) and other functions supplied with the zsh
-  distribution.  Almost certainly, however, you are better off using
-  the new completion system for anything complicated.  No further
-  upgrades are planned for the old system.
+  The main resource is the tt(zshcompsys) manual page.  It's complicated,
+  I'm afraid, far too much to go into here.  See also the user guide
+  referred to above, or copy one of the very many existing functions.  For
+  a professionally produced guide, see the book `From Bash to Z Shell:
+  Conquering the Command Line' by Oliver Kiddle, Jerry Peek and Peter
+  Stephenson (me), published by Apress, ISBN 1-59059-376-6.  Chapter 10
+  tells you how to configure the completion system and chapter 15 how
+  to write your own completion functions.
+
+
+sect(Suppose I want to complete all files during a special completion?)
+
+  If you're using the completion system the shell will decide what
+  to complete when you hit TAB.  That's usually the right thing for
+  the context, but sometimes you just want to complete files, like
+  TAB used to do in the old days.  You can set up this up as follows:
+  verb(
+    zle -C complete-file complete-word _generic
+    zstyle ':completion:complete-file::::' completer _files
+    bindkey '^xF' complete-file
+  )
+  This turns the key tt(\C-x F) into a command tt(complete-file) which
+  goes straight to the completion system's file completion command,
+  ignoring the normal context.  Change the binding how you like.
+
+  Note the way the form of completion to use is specified by picking a
+  `completer' called `tt(_files)'.  You can define any completion
+  to be bound to a keystroke by putting the appropriate completion
+  function at that point.  Then change all occurrences of
+  `tt(complete-file)' to a name of your own.
 
 
 chapter(The future of zsh)
@@ -2113,133 +1949,15 @@
 important changes))
 label(51)
 
-  Here are some of the more well-known ones, very roughly in
-  decreasing order of significance.  Many of these can also be counted
-  against differences from ksh in question link(2.1)(21); note that \
-this applies
-  to the latest beta version and that simple bugs are often fixed
-  quite quickly.  There is a file Etc/BUGS in the source distribution
-  with more detail.
-
-  itemize(
-  it() Parameter expansions using the tt(${param+word}) and tt(${param-word})
-    forms may fail to behave in Bourne-shell-compatible fashion when the
-    tt(SH_WORD_SPLIT) option is set and the word contains spaces.
-  it() mytt(time) is ignored with builtins and can't be used with mytt({...}).
-  it() mytt(set -x) (mytt(setopt xtrace)) still has a few glitches; these
-     are mostly fixed in 3.1.6.
-  it() Zsh's notion of the current line number (via tt($LINENO)) is
-     sometimes not well handled, particularly when using functions and traps.
-     This should also work reliably from 3.0.6 and 3.1.6.
-  it() In vi mode, mytt(u) can go past the original modification point.
-  it() The singlelinezle option has problems with prompts containing escapes.
-  it() The mytt(r) command does not work inside mytt($(...)) or mytt(`...`)
-     expansions.   This is fixed in 3.1.
-  it() mytt(typeset) handling is non-optimal, particularly with regard to
-     flags, and is ksh-incompatible in unpredictable ways.  3.1.6 has
-     been overhauled, but remaining glitches are to be expected.
-  it() Nested closures in extended globbing and pattern matching, such as
-  verb(
-      [[ fofo = (fo#)# ]]
-  )
-     were once not correctly handled, and there were problems with
-     complicated exclusions using mytt(^) or mytt(~).  These are fixed
-     since version 3.1.3.
-  )
-  it() Handling of the mytt(:q) and mytt(:x) with parameter subsitutions is
-    erratic: neither work in any 3.0 release, and tt(:x) doesn't work in
-    any release so far.
-
-  Note that a few recent changes introduce incompatibilities (these
-  are not bugs):
-
-  Changes after zsh 3.0:
-  itemize(
-  it() The options tt(ALWAYS_LAST_PROMPT) (return to the line you were
-     editing after displaying completion lists) and tt(LIST_AMBIGUOUS)
-     (don't do tt(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 mytt(unsetopt alwayslastprompt listambiguous) in your
-     tt(.zshrc) file.
-  it() In 3.1.5, tt(history-search-{forward,backward}) only find previous
-     lines where the first word is the same as the current one.  For
-     example, 
-    verb(
-      comp<ESC>p
-    )
-     will find lines in the history like mytt(comp -edit emacs), but not
-     mytt(compress file) any more.  For this reason, mytt(\M-n) and
-     mytt(\M-p) use tt(history-beginning-search-{forward,backward}) which
-     search for a line with the same prefix up to the cursor position.
-     From 3.1.6, there is a different implementation which makes this
-     closer (though not identical) to the old behaviour, and the
-     traditional bindings have been restored.. The story for the 
-     tt({up,down}-line-or-search) commands is similar.
-  it() In vi insert mode, the cursor keys no longer work.  The following
-     will bind them:
-      COMMENT(-- note space after backslash --)
-      verb(
-       bindkey -M viins '^[[D' vi-backward-char '^[[C' vi-forward-char \ 
-                      '^[[A' up-line-or-history '^[[B' down-line-or-history
-      )
-     (unless your terminal requires mytt(^[O) instead of mytt(^[[)).  The
-     rationale is that the insert mode and command mode keymaps for
-     keys with prefixes are now separate.
-  )
-
-  Changes since zsh 2.5:
-  itemize(
-  it() The left hand of an assignment is no longer substituted.  Thus,
-     mytt($1=$2) will not work.  You can use something like mytt(eval
-     "$1=\$2"), which should have the identical effect.
-  it() Signal traps established with the `trap' builtin are now called with
-     the environment of the caller, as in ksh, instead of as a new
-     function level.  Traps established as functions (e.g. mytt(TRAPINT()
-     {...})) work as before.
-  it() The tt(NO_CLOBBER) option is now -C and tt(PRINT_EXIT_VALUE) -1; they
-     used to be the other way around.  (Use of names rather than letters is
-     generally recommended.)
-  it() mytt([[) is a reserved word, hence must be separated from
-     other characters by whitespace; mytt({) and mytt(}) are also reserved
-     words if the tt(IGNORE_BRACES) option is set.
-  it() The option tt(CSH_JUNKIE_PAREN) has been removed:  csh-like code now
-     always does what it looks like it does, so mytt(if ( ... ) ...)
-     executes the code in parentheses in a subshell.  To make this
-     useful, the syntax expected after an mytt(if), etc., is less strict
-     than in other shells.
-  it() mytt(foo=*) does not perform globbing immediately on the right
-     hand side of the assignment; the old behaviour now requires the
-     option tt(GLOB_ASSIGN).  (mytt(foo=(*)) is and has always been the
-     consistent way of doing this.)
-  it() tt(<>) performs redirection of input and output to the specified file.
-     For numeric globs, you now need tt(<->).
-  it() The command line qualifiers tt(exec), tt(noglob), tt(command), \
-     tt(-) are now
-     treated more like builtin commands:  previously they were
-     syntactically special.  This should make it easier to perform
-     tricks with them (disabling, hiding in parameters, etc.).
-  it() The pushd builtin has been rewritten for compatibility with other
-     shells.  The old behavour can be achieved with a shell function.
-  it() The current version now uses tt(~)'s for directory stack substitution
-     instead of tt(=)'s.  This is for consistency:  all other directory
-     substitution (tt(~user), tt(~name), tt(~+), ...) used a tilde, while
-     tt(=<number>) caused problems with tt(=program) substitution.
-  it() The tt(HISTLIT) option was broken in various ways and has been removed:
-     the rewritten history mechanism doesn't alter history lines, making
-     the option unnecessary.
-  it() History expansion is disabled in single-quoted strings, like other
-     forms of expansion -- hence exclamation marks there should not be
-     backslashed.
-  it() The mytt($HISTCHARS) variable is now mytt($histchars).  Currently both
-     are tied together for compatibility.
-  it() The tt(PROMPT_SUBST) option now performs backquote expansion -- hence
-     you should quote these in prompts.  (SPROMPT has changed as a result.)
-  it() Quoting in prompts has changed: close parentheses inside ternary
-     expressions should be quoted with a tt(%); history is now tt(%!), not
-     tt(!).  Backslashes are no longer special.
-  )
+  Bugs tend to be tracked on the zsh-workers mailing list; see the
+  next section.  Check the mailing list to see if a bug has been
+  reported.  (There is a bug tracker at the zsh development site
+  at Sourceforge, but it's not in active use.)
+
+  To see how recent versions of the shell have changed, look at
+  the README file in the source distribution.  This indicates the
+  most important changes, and in particular draws attention to
+  incompatibilities you might notice.
 
 
 sect(Where do I report bugs, get more info / who's working on zsh?)
@@ -2307,56 +2025,23 @@
 
 sect(What's on the wish-list?)
 
-  With version 3, the code is much cleaner than before, but still
-  bears the marks of the ages and many things could be done much
+  The code bears the marks of the ages and many things could be done much
   better with a rewrite.  A more efficient set of code for
   lexing/parsing/execution might also be an advantage.  Volunteers are
   particularly welcome for these tasks.
 
-  Here are the latest changes, which appeared in zsh 3.1.6.
-  itemize(
-  it() Even more powerful new completion system, based on shell functions,
-     allowing much more detailed control both over generation of matches
-     for completion and how they are inserted and displayed.  A set of
-     functions which work `out of the box' will be available, including
-     many functions for external commands:  files in tar archives can
-     be listed for extraction as if they were real files; GNU commands
-     which accept the mytt(--help) option can generate completion lists for
-     themselves on the fly, etc., etc.
-     You can have old-style tt(compctl)-based completions for some commands,
-     and new-style ones for others; you can bind particular completion
-     commands of your own definition to key-strokes.
-  it() Other completion enhancements:  matching control, allowing
-     case-insensitive matching and wild card anchors, e.g. mytt(z_t<TAB>)
-     can allow a wildcard before the mytt(_) so that this will expand
-     to mytt(zle_tricky.c) --- all under user control; completions can
-     be grouped; a new completion command, menu-select, allows real menu
-     selection --- you can move the cursor around to choose a completion.
-  it() Case-insensitive and approximate matching in the globbing code:
-     for example, mytt((#ia2)readme) matches the string mytt(readme)
-     case-insensitively with up to two errors, such as tt(README),
-     tt(READ.ME), tt(_README_), tt(Read!Me!).  The new completion system
-     knows about these, allowing correcting completion, e.g.
-     mytt(mkaef<TAB>) can be made to complete to mytt(Makefile).
-  it() Associative arrays, declared with mytt(typeset -A aname); syntax
-     for creating, accessing and deleting elements of these.
-  it() Users can create their own tt(foopath)/tt(FOOPATH) array/path
-     combinations, just like tt(path) and tt(PATH).
-  it() A dynamically loadable library for FTP, complete with a suite of
-     functions to make it easy to use.  This allows you to use the shell's
-     capabilities for scripting, line editing, completion, I/O redirection,
-     directory management etc. within an FTP session.
-  )
-
-  Other future possibilities which have been suggested:
+  Some future possibilities which have been suggested:
   itemize(
+  it() The shell, in particular the line editor, should support Unicode
+     characters.  Initial support for this should appear in version 4.3,
+     but this is a large job.
   it() The parameter code could do with tidying up, maybe with more of the
      features made available in ksh93.
   it() Configuration files to enable zsh startup files to be created
      with the Dotfile Generator.
   it() Further improvements in integrating the line editor with shell
      functions.
-  it() Ksh compatibility could be improved.
+  it() POSIX compatibility could be improved.
   it() Option for glob qualifiers to follow perl syntax (a traditional item).
   )
 

-- 
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 1%]

* Re: Bug#303278: zsh: completions for gv are for pre 3.6
       [not found]     <E1DIsyg-0002EX-S2@soup>
@ 2005-04-05 19:06  0% ` Clint Adams
  2005-04-06  8:27  3%   ` Oliver Kiddle
  0 siblings, 1 reply; 200+ results
From: Clint Adams @ 2005-04-05 19:06 UTC (permalink / raw)
  To: zsh-workers, 303278-forwarded

> The completion for gv (functions/Completion/X/_gv) uses the pre-3.6
> single dash command line arguments rather than the new POSIX-like
> syntax used (with two dashes) in 3.6.  The easiest way to detect

Is it worth it to check which version of gv is in use?

Index: Completion/X/Command/_gv
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/X/Command/_gv,v
retrieving revision 1.1
diff -u -r1.1 _gv
--- Completion/X/Command/_gv	2 Apr 2001 12:13:49 -0000	1.1
+++ Completion/X/Command/_gv	5 Apr 2005 19:03:58 -0000
@@ -1,39 +1,42 @@
-#compdef gv gview
+#compdef gv
 
-_xt_arguments \
-  '(-nosafer)-safer' \
-  '(-safer)-nosafer' \
-  '(-noquiet)-quiet' \
-  '(-quiet)-noquiet' \
-  '(-nocenter)-center' \
-  '(-center)-nocenter' \
-  '(-noswap)-swap' \
-  '(-swap)-noswap' \
-  '(-noantialias)-antialias' \
-  '(-antialias)-noantialias' \
-  '(-nodsc)-dsc' \
-  '(-dsc)-nodsc' \
-  '(-noeof)-eof' \
-  '(-eof)-noeof' \
-  '(-nopixmap)-pixmap' \
-  '(-pixmap)-nopixmap' \
-  '(-nowatch)-watch' \
-  '(-watch)-nowatch' \
-  '(-noresize)-resize' \
-  '(-resize)-noresize' \
-  '(-grayscale -color)-monochrome' \
-  '(-monochrome -color)-grayscale' \
-  '(-grayscale -color)-monochrome' \
-  '(-landscape -seascape -upsidedown)-portrait' \
-  '(-portrait -seascape -upsidedown)-landscape' \
-  '(-portrait -landscape -upsidedown)-seascape' \
-  '(-portrait -landscape -seascape)-upsidedown' \
-  -{h,help,v,spartan} \
-  '-arguments:ghostscript arguments:' \
-  '-page:label of first page:' \
-  '-media:page size:(Letter Legal Statement Tabloid Ledger Folio Quarto 10x14 Executive A3 A4 A5 B4 B5)' \
-  '-scale:scale entry:' \
-  '-scalebase:scale base:' \
-  '-ad:resource file:_files' \
-  '-style:resource file:_files' \
-  '*:file: _pspdf -z'
+_arguments \
+  '-geometry:geometry:_x_geometry' \
+  '(--nosafer)--safer' \
+  '(--safer)--nosafer' \
+  '(--noquiet)--quiet' \
+  '(--quiet)--noquiet' \
+  '(--nocenter)--center' \
+  '(--center)--nocenter' \
+  '(--noswap)--swap' \
+  '(--swap)--noswap' \
+  '(--noantialias)--antialias' \
+  '(--antialias)--noantialias' \
+  '(--nodsc)--dsc' \
+  '(--dsc)--nodsc' \
+  '(--noeof)--eof' \
+  '(--eof)--noeof' \
+  '(--nopixmap)--pixmap' \
+  '(--pixmap)--nopixmap' \
+  '(--nowatch)--watch' \
+  '(--watch)--nowatch' \
+  '(--noresize)--resize' \
+  '(--resize)--noresize' \
+  '(--grayscale --color)--monochrome' \
+  '(--monochrome --color)--grayscale' \
+  '(--grayscale --color)--monochrome' \
+  '(--landscape --seascape --upsidedown)--portrait' \
+  '(--portrait --seascape --upsidedown)--landscape' \
+  '(--portrait --landscape --upsidedown)--seascape' \
+  '(--portrait --landscape --seascape)--upsidedown' \
+  --{help,spartan} \
+  -{h,v} \
+  '--arguments=:ghostscript arguments:' \
+  '--page=:label of first page:' \
+  '--media=:page size:(Letter Legal Statement Tabloid Ledger Folio Quarto 10x14 Executive A3 A4 A5 B4 B5)' \
+  '--orientation=:orientation:' \
+  '--scale=:scale entry:' \
+  '--scalebase=:scale base:' \
+  '--ad=:resource file:_files' \
+  '--style=:resource file:_files' \
+  '*:file: _pspdf --z'


^ permalink raw reply	[relevance 0%]

* Re: Bug#303278: zsh: completions for gv are for pre 3.6
  2005-04-05 19:06  0% ` Bug#303278: zsh: completions for gv are for pre 3.6 Clint Adams
@ 2005-04-06  8:27  3%   ` Oliver Kiddle
  2005-04-06 15:29  0%     ` Clint Adams
  0 siblings, 1 reply; 200+ results
From: Oliver Kiddle @ 2005-04-06  8:27 UTC (permalink / raw)
  To: zsh-workers, 303278-forwarded

Clint wrote:
> > The completion for gv (functions/Completion/X/_gv) uses the pre-3.6
> > single dash command line arguments rather than the new POSIX-like

Aren't two dashes a GNU thing, not POSIX?

> > syntax used (with two dashes) in 3.6.  The easiest way to detect
> 
> Is it worth it to check which version of gv is in use?

Probably not.

In general we've never tried to support old versions of software except
where the old version continues to be widely distributed (such as if
Solaris comes with an old version).

Any reason for removing gview from the commands it completes? Is that a
Gnome variant of gv? We probably should complete postscript files for
kghostview too.

Oliver


^ permalink raw reply	[relevance 3%]

* Re: Bug#303278: zsh: completions for gv are for pre 3.6
  2005-04-06  8:27  3%   ` Oliver Kiddle
@ 2005-04-06 15:29  0%     ` Clint Adams
  0 siblings, 0 replies; 200+ results
From: Clint Adams @ 2005-04-06 15:29 UTC (permalink / raw)
  To: Oliver Kiddle; +Cc: zsh-workers

> Aren't two dashes a GNU thing, not POSIX?

Yes.

> Probably not.

Okay, I'll commit it then.

> Any reason for removing gview from the commands it completes? Is that a
> Gnome variant of gv? We probably should complete postscript files for
> kghostview too.

Well, my gview is a symlink to vim.  We have the GNOME variant in
_gnome-gv.  I'll leave kghostview to someone who has it installed.


^ permalink raw reply	[relevance 0%]

* Re: PATCH: character sets for internal zsh tests
  @ 2005-04-28 14:54  3% ` Bart Schaefer
  0 siblings, 0 replies; 200+ results
From: Bart Schaefer @ 2005-04-28 14:54 UTC (permalink / raw)
  To: Zsh hackers list

On Apr 28, 12:41pm, Peter Stephenson wrote:
} Subject: PATCH: character sets for internal zsh tests

You mean character classes, right?

} This patch adds [[:sep:]], [[:wsep:]], [[:ident:]], [[:word:]].

I like the idea, but I wonder if we're in danger of running into
conflict with future POSIX extensions, particularly with [:word:].
It might be better to use [:_word:] or something.  However, I don't
feel strongly about this.  Ooh, another idea:  make them all-caps,
e.g. [:WORD:].

} I think the last two are OK but maybe [[:ifs:]] and [[:ifsw:]]
} or [[:ifsspace:]] would be better for the first two.

Given the recent austin-group discussion about how "separators" is
misused in "IFS" (they're really "internal field terminators") it may
in fact be better to avoid "sep".  However, unless you go with all-
caps [:IFS:] I think you should pick something that looks like a word
(in the English dictionary sense) or an abbreviation, rather than an
acronym.  Unfortunately I don't have any good suggestions just now.


^ permalink raw reply	[relevance 3%]

* Re: Bug#310872: zsh can't be a ksh replacement (can't trap ERR).
  @ 2005-06-01  8:25  3%         ` Oliver Kiddle
  0 siblings, 0 replies; 200+ results
From: Oliver Kiddle @ 2005-06-01  8:25 UTC (permalink / raw)
  To: zsh-workers, 310872

Bart wrote:
> (Google indicates that ksh does run
> on UNICOS; I wonder what it does with ERR in that case.)

I tried asking on ast-users and received the following answer from Glenn
Fowler:

| ksh does not currently handle this
| but I talked with David Korn and the next release will do the following
| 
| the "SIG" prefix is optional for trap and kill, e.g., "HUP" == "SIGHUP"
| the change will be to do only a signal lookup when a "SIG" prefix is specified,
| and a shell trap name lookup followed by a signal lookup otherwise
| 
| so, on systems like unicos that have SIGERR, the trap name "SIGERR" refers
| to the signal, and "ERR" refers to the shell trap on error
| "SIGERR" on systems with no SIGERR signal will fail
| 
| this approach will handle all future non-posix signal/shell-trap clashes,
| e.g., if some system invents SIGEXIT

That would seem a far better solution to me than having a separate ZERR,
especially as it deals with future conflicts. Would it be hard for us to
do that same in zsh? We can always keep ZERR for backward compatibility.

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%]

* ZLE Unicode support status
@ 2005-06-10 20:07  3% Alexey Tourbin
  0 siblings, 0 replies; 200+ results
From: Alexey Tourbin @ 2005-06-10 20:07 UTC (permalink / raw)
  To: zsh-workers

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

Hello,

I have just tried to build unicode-enabled zsh (recent cvs snapshot,
by simply adding -DZLE_UNICODE_SUPPORT=1 to CFLAGS), and I get the
following problem (zsh running under gdb running under GNU screen):

[test@solemn test]$ LC_ALL=C gdb zsh
...
(gdb) r
Starting program: /bin/zsh
test@solemn ~ $ echo $ZSH_V<TAB><TAB>
BUG: substring ends in the middle of a metachar in ztrsub()
BUG: substring ends in the middle of a metachar in ztrsub()
BUG: substring ends in the middle of a metachar in ztrsub()
BUG: 0 <= wb <= zlecs <= we is not true!
BUG: substring ends in the middle of a metachar in ztrsub()
Program received signal SIGSEGV, Segmentation fault.
0x400e8f8c in memcpy () from /lib/i686/libc.so.6
(gdb) bt
#0  0x400e8f8c in memcpy () from /lib/i686/libc.so.6
#1  0x402358f6 in do_ambiguous () at compresult.c:768
#2  0x6f686c00 in ?? ()
(gdb)

So... what is the status of Unicode support?
Is it supposed to work with plain POSIX locale?

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[relevance 3%]

* Re: printf bug(s?)
  @ 2005-06-17 15:47  3%       ` Bart Schaefer
  2005-06-21  9:19  3%         ` Oliver Kiddle
  0 siblings, 1 reply; 200+ results
From: Bart Schaefer @ 2005-06-17 15:47 UTC (permalink / raw)
  To: zsh-workers

On Jun 17,  3:48pm, J wrote:
} Subject: Re: printf bug(s?)
}
} > I may be better off avoiding using \045 anyway and just
} > replace it with %%...
} 
} If I run
} $ printf '\045i' '5+1'
} I would certainly expect it to print 6, and not %i.

Is the printf builtin (or shell utility) specified by POSIX?  If so,
this may be a reasonable question for austin-group interpretation.


^ permalink raw reply	[relevance 3%]

* Re: printf bug(s?)
  2005-06-17 15:47  3%       ` Bart Schaefer
@ 2005-06-21  9:19  3%         ` Oliver Kiddle
  0 siblings, 0 replies; 200+ results
From: Oliver Kiddle @ 2005-06-21  9:19 UTC (permalink / raw)
  To: zsh-workers

On 17 Jun, Bart wrote:
> Is the printf builtin (or shell utility) specified by POSIX?  If so,
> this may be a reasonable question for austin-group interpretation.

It is specified by POSIX:
  http://www.opengroup.org/onlinepubs/009695399/utilities/printf.html

I don't subscribe to the austin-group lists so if you do get any
interpretation there, let us know the results.

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: PATCH: new shells completion type
  @ 2005-06-23 10:12  4%   ` Doug Kearns
  0 siblings, 0 replies; 200+ results
From: Doug Kearns @ 2005-06-23 10:12 UTC (permalink / raw)
  To: zsh-workers

On Wed, Jun 22, 2005 at 03:07:21PM +0100, Stephane Chazelas wrote:
> On Wed, Jun 22, 2005 at 11:11:58PM +1000, Doug Kearns wrote:

<snip>
 
> One sometimes wants to set a command that is not in /etc/shells
> as the login shell on purpose (like /bin/false) to disable FTP
> access. That could be "nologin", a script, whatever...

OK, thanks. It looks like the useradd man page makes no mention of
/etc/shells. Is it mostly, or was it originally, just for chsh? Which
commands actually make use of /etc/shells?

<snip>
 
> As far as screen is concerned, that doesn't need to be a shell,
> one might prefer to use "mc" or "elinks" or "emacs" for instance.
 
Yes, I'll leave that as is...

> > +else
> > +  shells=( ${(M)commands:#*/((|[abckz]|tc|ba)sh|false)} )
> > +fi
> 
> What about dash (debian ash), rc, es...

The Debian system I have access to adds:

/usr/bin/es
/usr/bin/rc
/bin/sash
/usr/bin/esh
/bin/dash

and, possibly overkill, but sendmail/conf.c lists:

static char     *DefaultUserShells[] =
{
        "/bin/sh",              /* standard shell */
# ifdef MPE
        "/SYS/PUB/CI",
# else /* MPE */
        "/usr/bin/sh",
        "/bin/csh",             /* C shell */
        "/usr/bin/csh",
# endif /* MPE */
# ifdef __hpux
#  ifdef V4FS
        "/usr/bin/rsh",         /* restricted Bourne shell */
        "/usr/bin/ksh",         /* Korn shell */
        "/usr/bin/rksh",        /* restricted Korn shell */
        "/usr/bin/pam",
        "/usr/bin/keysh",       /* key shell (extended Korn shell) */
        "/usr/bin/posix/sh",
#  else /* V4FS */
        "/bin/rsh",             /* restricted Bourne shell */
        "/bin/ksh",             /* Korn shell */
        "/bin/rksh",            /* restricted Korn shell */
        "/bin/pam",
        "/usr/bin/keysh",       /* key shell (extended Korn shell) */
        "/bin/posix/sh",
        "/sbin/sh",
#  endif /* V4FS */
# endif /* __hpux */
# if defined(_AIX3) || defined(_AIX4)
        "/bin/ksh",             /* Korn shell */
        "/usr/bin/ksh",
        "/bin/tsh",             /* trusted shell */
        "/usr/bin/tsh",
        "/bin/bsh",             /* Bourne shell */
        "/usr/bin/bsh",
# endif /* defined(_AIX3) || defined(_AIX4) */
# if defined(__svr4__) || defined(__svr5__)
        "/bin/ksh",             /* Korn shell */
        "/usr/bin/ksh",
# endif /* defined(__svr4__) || defined(__svr5__) */
# ifdef sgi
        "/sbin/sh",             /* SGI's shells really live in /sbin */
        "/usr/bin/sh",
        "/sbin/bsh",            /* classic Bourne shell */
        "/bin/bsh",
        "/usr/bin/bsh",
        "/sbin/csh",            /* standard csh */
        "/bin/csh",
        "/usr/bin/csh",
        "/sbin/jsh",            /* classic Bourne shell w/ job control*/
        "/bin/jsh",
        "/usr/bin/jsh",
        "/bin/ksh",             /* Korn shell */
        "/sbin/ksh",
        "/usr/bin/ksh",
        "/sbin/tcsh",           /* Extended csh */
        "/bin/tcsh",
        "/usr/bin/tcsh",
# endif /* sgi */
        NULL
};


Any others?

Regards,
Doug


^ permalink raw reply	[relevance 4%]

* PATCH: Expansion of \c escape sequences
@ 2005-07-24  2:15  3% Thorsten Dahlheimer
  2005-07-24  5:52  0% ` Wayne Davison
  0 siblings, 1 reply; 200+ results
From: Thorsten Dahlheimer @ 2005-07-24  2:15 UTC (permalink / raw)
  To: zsh-workers

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

Hi,

I've noticed that in contexts where escape sequences are expanded
and \c's should not be recognized (i.e., not in arguments to the
various printing commands), then a \c is actually treated synonymous
to \U.  The attached patch contains a fix.

While inspecting the code I came across another glitch:  If a \c
occurs in the separator string of a $arr[(pws:...:)...] subscript,
it is not treated like an unrecognized sequence (i.e., replaced by
a "c"), but removed completely.  (Note that ${(p...)...} gets this
right.)  The attached patch also fixes that.

Finally, I've discovered that \c in an argument to a printing command
only suppresses the final newline, but according POSIX it should
suppress all output after the \c, and that's what ksh, bash, and
echo/printf from GNU coreutils do.  So is the current behaviour really
desired, or should I send a patch to change it?

Best regards
Thorsten Dahlheimer

[-- Attachment #2: bsc.patch --]
[-- Type: application/octet-stream, Size: 924 bytes --]

Index: Src/utils.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/utils.c,v
retrieving revision 1.78
diff -u -r1.78 utils.c
--- Src/utils.c	31 Mar 2005 09:54:59 -0000	1.78
+++ Src/utils.c	24 Jul 2005 00:38:16 -0000
@@ -3611,6 +3611,7 @@
 		    *misc = 1;
 		    break;
 		}
+		goto def;
 	    case 'u':
 	    case 'U':
 	    	wval = 0;
Index: Src/params.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/params.c,v
retrieving revision 1.98
diff -u -r1.98 params.c
--- Src/params.c	8 Apr 2005 16:42:58 -0000	1.98
+++ Src/params.c	24 Jul 2005 00:37:52 -0000
@@ -1002,7 +1002,7 @@
 		    goto flagerr;
 		sav = *t;
 		*t = '\0';
-		sep = escapes ? getkeystring(s + 1, &waste, 1, &waste) :
+		sep = escapes ? getkeystring(s + 1, &waste, 3, NULL) :
 				dupstring(s + 1);
 		*t = sav;
 		s = t;

^ permalink raw reply	[relevance 3%]

* Re: PATCH: Expansion of \c escape sequences
  2005-07-24  2:15  3% PATCH: Expansion of \c escape sequences Thorsten Dahlheimer
@ 2005-07-24  5:52  0% ` Wayne Davison
  0 siblings, 0 replies; 200+ results
From: Wayne Davison @ 2005-07-24  5:52 UTC (permalink / raw)
  To: Thorsten Dahlheimer; +Cc: zsh-workers

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

Thanks for the \c fixes and your earlier Makefile.in patch -- I've
checked them into CVS (and I improved the function-comment for
getkeystring() while I was at it).

On Sun, Jul 24, 2005 at 04:15:12AM +0200, Thorsten Dahlheimer wrote:
> Finally, I've discovered that \c in an argument to a printing command
> only suppresses the final newline, but according POSIX it should
> suppress all output after the \c, and that's what ksh, bash, and
> echo/printf from GNU coreutils do.

I'm curious which version of coreutils behaves that way?  I've got 5.2.1
on my system, and it behaves as zsh does.  If we want to change the
behavior, the attached patch should handle it.

..wayne..

[-- Attachment #2: backslash-c.patch --]
[-- Type: text/plain, Size: 320 bytes --]

--- Src/utils.c	24 Jul 2005 05:19:58 -0000	1.80
+++ Src/utils.c	24 Jul 2005 05:42:08 -0000
@@ -3611,7 +3611,9 @@ getkeystring(char *s, int *len, int from
 	    case 'c':
 		if (fromwhere < 2) {
 		    *misc = 1;
-		    break;
+		    *t = '\0';
+		    *len = t - buf;
+		    return buf;
 		}
 		goto def;
 	    case 'u':

^ permalink raw reply	[relevance 0%]

* PATCH: missing ioctl() prototype on cygwin
@ 2005-07-28 18:30  4% Thorsten Dahlheimer
  0 siblings, 0 replies; 200+ results
From: Thorsten Dahlheimer @ 2005-07-28 18:30 UTC (permalink / raw)
  To: zsh-workers

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

Currently no prototype for ioctl() is picked up when compiling on
cygwin:  The only prototype there is in <sys/ioctl.h> (which must
be included directly), but the zsh sources include that header only
if it defines TIOCGWINSZ (and <termios.h> doesn't), and cygwin's
<sys/ioctl.h> doesn't define TIOCGWINSZ (but <termios.h> does).

So I've changed configure.ac and Src/system.h (see attached patch)
such that configure now checks whether ioctl() is declared in
<sys/ioctl.h> but not in <unistd.h> or <termios.h>, and if this is
the case then <sys/ioctl.h> gets included.

Note that I removed the test for CLOBBERS_TYPEAHEAD in Src/system.h,
since I couldn't find any reference to that symbol anywhere else
(except in the ChangeLogs).

Regards,
Thorsten Dahlheimer

[-- Attachment #2: ioctl.patch --]
[-- Type: application/octet-stream, Size: 4939 bytes --]

Index: configure.ac
===================================================================
RCS file: /cvsroot/zsh/zsh/configure.ac,v
retrieving revision 1.35
diff -u -r1.35 configure.ac
--- configure.ac	20 Jul 2005 16:08:18 -0000	1.35
+++ configure.ac	28 Jul 2005 15:55:55 -0000
@@ -575,18 +575,15 @@
   fi
 fi
 
-AC_CACHE_CHECK(POSIX termios, zsh_cv_sys_posix_termios,
-[AC_TRY_LINK([#include <sys/types.h>
-#include <unistd.h>
-#include <termios.h>],
-[/* SunOS 4.0.3 has termios.h but not the library calls.  */
-tcgetattr(0, 0);],
-  zsh_cv_sys_posix_termios=yes, zsh_cv_sys_posix_termios=no)])
-
-if test $zsh_cv_sys_posix_termios = yes; then
+AH_TEMPLATE([GWINSZ_IN_SYS_IOCTL],
+[Define if TIOCGWINSZ is defined in sys/ioctl.h but not in termios.h.])
+if test $ac_cv_header_termios_h = yes; then
   AC_CACHE_CHECK(TIOCGWINSZ in termios.h,
   zsh_cv_header_termios_h_tiocgwinsz,
-  [AC_TRY_LINK([#include <sys/types.h>
+  [AC_TRY_LINK([
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
 #include <termios.h>],
   [int x = TIOCGWINSZ;],
   zsh_cv_header_termios_h_tiocgwinsz=yes,
@@ -594,13 +591,13 @@
 else
   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,
-  [AC_TRY_LINK([#include <sys/types.h>
+  [AC_TRY_LINK([
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
 #include <sys/ioctl.h>],
   [int x = TIOCGWINSZ;],
   zsh_cv_header_sys_ioctl_h_tiocgwinsz=yes,
@@ -1694,24 +1691,12 @@
   AC_DEFINE(HAVE_SBRK_PROTO)
 fi
 
-dnl ----------------------------------
-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])
+dnl -----------------------
+dnl mknod prototype for OSF
+dnl -----------------------
 AH_TEMPLATE([HAVE_MKNOD_PROTO],
-[Define to 1 if there is a prototype defined for mknod() on your system])
+[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,
-  [AC_TRY_COMPILE([#include <sys/ioctl.h>
-   int ioctl(double x);], [int i;],
-  zsh_cv_header_sys_ioctl_h_ioctl_proto=no,
-  zsh_cv_header_sys_ioctl_h_ioctl_proto=yes)])
-  if test $zsh_cv_header_sys_ioctl_h_ioctl_proto = yes; then
-    AC_DEFINE(HAVE_IOCTL_PROTO)
-  fi
   AC_CACHE_CHECK(for mknod prototype in <sys/stat.h>,
   zsh_cv_header_sys_stat_h_mknod_proto,
   [AC_TRY_COMPILE([#include <sys/stat.h>
@@ -1723,6 +1708,45 @@
   fi
 fi
 
+dnl ----------------------------------------
+dnl presence and location of ioctl prototype
+dnl ----------------------------------------
+AC_CACHE_CHECK(for ioctl prototype in <unistd.h> or <termios.h>,
+zsh_cv_header_unistd_h_termios_h_ioctl_proto,
+[AC_TRY_COMPILE([
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+#ifdef HAVE_TERMIOS_H
+# include <termios.h>
+#endif
+double ioctl();], [int i;],
+zsh_cv_header_unistd_h_termios_h_ioctl_proto=no,
+zsh_cv_header_unistd_h_termios_h_ioctl_proto=yes)])
+
+if test $zsh_cv_header_unistd_h_termios_h_ioctl_proto = no; then
+  AC_CACHE_CHECK(for ioctl prototype in <sys/ioctl.h>,
+  zsh_cv_header_sys_ioctl_h_ioctl_proto,
+  [AC_TRY_COMPILE([#include <sys/ioctl.h>
+  double ioctl();], [int i;],
+  zsh_cv_header_sys_ioctl_h_ioctl_proto=no,
+  zsh_cv_header_sys_ioctl_h_ioctl_proto=yes)])
+else
+  zsh_cv_header_sys_ioctl_h_ioctl_proto=no
+fi
+
+AH_TEMPLATE([HAVE_IOCTL_PROTO],
+[Define to 1 if there is a prototype defined for ioctl() on your system.])
+if test $zsh_cv_header_unistd_h_termios_h_ioctl_proto = yes || \
+   test $zsh_cv_header_sys_ioctl_h_ioctl_proto = yes; then
+  AC_DEFINE(HAVE_IOCTL_PROTO)
+fi
+AH_TEMPLATE([IOCTL_IN_SYS_IOCTL],
+[Define to 1 if we must include <sys/ioctl.h> to get a prototype for ioctl().])
+if test $zsh_cv_header_sys_ioctl_h_ioctl_proto = yes; then
+  AC_DEFINE(IOCTL_IN_SYS_IOCTL)
+fi
+
 dnl -------------------
 dnl select() defined in <sys/socket.h>, ie BeOS R4.51
 dnl -------------------
Index: Src/system.h
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/system.h,v
retrieving revision 1.31
diff -u -r1.31 system.h
--- Src/system.h	23 May 2005 14:41:38 -0000	1.31
+++ Src/system.h	28 Jul 2005 15:56:55 -0000
@@ -337,7 +337,7 @@
 # endif  /* HAVE_TERMIO_H  */
 #endif   /* HAVE_TERMIOS_H */
 
-#if defined(GWINSZ_IN_SYS_IOCTL) || defined(CLOBBERS_TYPEAHEAD)
+#if defined(GWINSZ_IN_SYS_IOCTL) || defined(IOCTL_IN_SYS_IOCTL)
 # include <sys/ioctl.h>
 #endif
 #ifdef WINSIZE_IN_PTEM

^ permalink raw reply	[relevance 4%]

* Re: Bug#311020: zsh: buggy _man completion
       [not found]     <E1DbmAA-0008VQ-VC@localhost.localdomain>
@ 2005-08-05 23:56  6% ` Clint Adams
  0 siblings, 0 replies; 200+ results
From: Clint Adams @ 2005-08-05 23:56 UTC (permalink / raw)
  To: zsh-workers; +Cc: Marc Glisse, 311020-forwarded

> These are actually 2 bugs:
> 
> 1)
> When I use TAB completion with man, a _manpath array is created. If I
> then update $MANPATH, $manpath reflects this change, but however many
> times I use the completion on man again, _manpath is not updated, and
> completion uses the old MANPATH.

Not sure what we can do about that.

> 2)
> extract from _man:
>   # Remove any compression suffix, then remove the minimum possible string
>   # beginning with .<->: that handles problem cases like files called
>   # `POSIX.1.5'.
> 
>   compadd "$@" - ${pages%.(?|<->*)}
> 
> I have a man page called "qui-6.0.1". If I run this command manually,
> it indeed gives "qui-6.0". But when I use TAB completion, I see "qui-6".
> So either an option is different, or the suffix gets removed some other
> place... Notice that if the page is called "qui-6.0.1.gz", it works fine.

Thoughts on this?

Index: Completion/Unix/Command/_man
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/Unix/Command/_man,v
retrieving revision 1.6
diff -u -r1.6 _man
--- Completion/Unix/Command/_man	31 May 2002 05:02:38 -0000	1.6
+++ Completion/Unix/Command/_man	5 Aug 2005 23:54:44 -0000
@@ -82,7 +82,7 @@
 
   pages=( ${(M)dirs:#*$sect/} )
   compfiles -p pages '' '' "$matcher" '' dummy '*'
-  pages=( ${^~pages}(N:t:r) )
+  pages=( ${^~pages}(N:t) )
 
   (($#mrd)) && pages[$#pages+1]=($(awk $awk $mrd))
 
@@ -90,7 +90,7 @@
   # beginning with .<->: that handles problem cases like files called
   # `POSIX.1.5'.
 
-  compadd "$@" - ${pages%.(?|<->*)}
+  compadd "$@" - ${pages%.(?|<->*(|.gz|.bz2|.Z))}
 }
 
 _man "$@"


^ permalink raw reply	[relevance 6%]

* Russian FAQ
@ 2005-08-07  9:10  1% UVV
  0 siblings, 0 replies; 200+ results
From: UVV @ 2005-08-07  9:10 UTC (permalink / raw)
  To: zsh-workers, zsh-users

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

With no comments!
Please, mail me about any mistakes!

[-- Attachment #2: zshfaq.yo --]
[-- Type: text/plain, Size: 106292 bytes --]

mailto(pws@pwstephenson.fsnet.co.uk)\
whentxt(notableofcontents())\
COMMENT(-- mytt is like tt but adds quotes `like this' for plain text --)\
def(mytt)(1)(\
  whentxt(`ARG1')\
  whenhtml(tt(ARG1))\
  whenlatex(tt(ARG1))\
  whenms(tt(ARG1))\
  whensgml(tt(ARG1)))\
COMMENT(-- mybf/em are like bf/em but add *emphasis* for text too --)\
def(mybf)(1)(\
  whentxt(*ARG1*)\
  whenhtml(bf(ARG1))\
  whenlatex(bf(ARG1))\
  whenms(bf(ARG1))\
  whensgml(bf(ARG1)))\
def(myem)(1)(\
  whentxt(_ARG1_)\
  whenhtml(em(ARG1))\
  whenlatex(em(ARG1))\
  whenms(em(ARG1))\
  whensgml(em(ARG1)))\
COMMENT(-- mydit is like dit but no `o' for text mode --)\
def(mydit)(1)(\
    whenlatex(dit(ARG1))\
    whenhtml(dit(ARG1))\
    whentxt(ARG1)\
    whenman(dit(ARG1))\
    whenms(dit(ARG1))\
    whensgml(dit(ARG1)))\
COMMENT(-- myeit is like eit but fancier text formatting --)\
def(myeit)(0)(\
    whenlatex(eit())whenhtml(eit())whenman(eit())whenms(eit())whensgml(eit())\
    whentxt(eit()CHAR(41)))\
def(myeitd)(0)(\
    whenlatex(eit())whenhtml(eit())whenman(eit())whenms(eit())whensgml(eit())\
    whentxt(.))\
COMMENT(-- don't want headers for text, USENET headers must come first --)\
def(myreport)(3)(\
whentxt(report()()())\
whenhtml(report(ARG1)(ARG2)(ARG3))\
whenlatex(report(ARG1)(ARG2)(ARG3))\
whenman(report(ARG1)(ARG2)(ARG3))\
whenms(report(ARG1)(ARG2)(ARG3))\
whensgml(report(ARG1)(ARG2)(ARG3)))
myreport(Z-Shell þÁÓÔÏ ÚÁÄÁ×ÁÅÍÙÅ ×ÏÐÒÏÓÙ)(Peter Stephenson)(2005/01/11)
COMMENT(-- the following are for Usenet and must appear first)\
description(\
mydit(éÍÑ ÁÒÈÉ×Á:) unix-faq/shell/zsh 
mydit(ðÏÓÌÅÄÎÅÅ ÉÚÍÅÎÅÎÉÅ:) 01.08.2005 
mydit(ïÐÕÂÌÉËÏ×ÁÎÏ:) email(pws@pwstephenson.fsnet.co.uk (Peter Stephenson)) 
mydit(ðÅÒÅ×ÅÄÅÎÏ:) email(UVV-mail@yandex.ru (àÒËÏ× ÷ÑÞÅÓÌÁ× ÷ÌÁÄÉÍÉÒÏ×ÉÞ)) 
mydit(þÁÓÔÏÔÁ ÏÂÎÏ×ÌÅÎÉÑ:) ÅÖÅÍÅÓÑÞÎÏ
mydit(á×ÔÏÒÓËÁÑ ÉÎÆÏÒÍÁÃÉÑ:) (C) P.W. Stephenson, 1995--2005 (óÍ. × ËÏÎÃÅ ÄÏËÕÍÅÎÔÁ)
)

  üÔÏÔ ÄÏËÕÍÅÎÔ ÓÏÄÅÒÖÉÔ ÓÐÉÓÏË ÞÁÓÔÏ ÚÁÄÁ×ÁÅÍÙÈ (ÉÌÉ ÐÒÏÓÔÏ ×ÁÖÎÙÈ) ×ÏÐÒÏÓÏ×, ËÁÓÁÀÝÉÈÓÑ Z-shell, ËÏÍÁÎÄÎÏÇÏ ÉÎÔÅÒÐÒÅÔÁÔÏÒÁ ÄÌÑ ÍÎÏÇÉÈ UNIX-ÓÉÓÔÅÍ, ËÏÔÏÒÙÊ Ó×ÏÂÏÄÎÏ ÄÏÓÔÕÐÅÎ ×ÓÅÍ, Õ ËÏÔÏ ÅÓÔØ FTP-ÄÏÓÔÕÐ. Zsh ÏÔÎÏÓÉÔÓÑ Ë ÞÉÓÌÕ ÓÁÍÙÈ ÍÏÝÎÙÈ Ó×ÏÂÏÄÎÏ ÄÏÓÔÕÐÎÙÈ Bourne-like ÛÅÌÌÏ× ÄÌÑ ÉÎÔÅÒÁËÔÉ×ÎÏÇÏ ÉÓÐÏÌØÚÏ×ÁÎÉÑ. 

  åÓÌÉ ×Ù ÎÉËÏÇÄÁ ÎÅ ÓÌÙÛÁÌÉ Ï mytt(sh), mytt(csh) ÉÌÉ mytt(ksh), ÔÏÇÄÁ ×ÁÍ ×ÅÒÏÑÔÎÏ ÌÕÞÛÅ ÎÁÞÁÔØ Ó ÞÔÅÎÉÑ ÏÂÙÞÎÏÇÏ ××ÅÄÅÎÉÑ × UNIX, ÞÅÍ Ó ÜÔÏÇÏ ÄÏËÕÍÅÎÔÁ. 

  åÓÌÉ ×Ù ÈÏÔÉÔÅ ÕÚÎÁÔØ, ÇÄÅ ×ÚÑÔØ ÐÏÓÌÅÄÎÀÀ ×ÅÒÓÉÀ, ÐÅÒÅÈÏÄÉÔÅ Ë ×ÏÐÒÏÓÕ link(1.6)(16), Á ÎÅÒÁÚÒÅÛÉÍÙÅ ÐÒÏÂÌÅÍÙ ÏÓ×ÅÝÅÎÙ × ×ÏÐÒÏÓÅ link(5.2)(52). 
  whentxt(úÁÍÅÞÁÎÉÅ: ôÅËÓÔ, ÚÁËÌÀÞ£ÎÎÙÊ × `ÔÁËÉÅ ËÁ×ÙÞËÉ', Ñ×ÌÑÅÔÓÑ ÐÒÏÓÔÙÍ ÔÅËÓÔÏÍ. æÒÁÇÍÅÎÔÙ, ËÏÔÏÒÙÅ ×Ù ××ÏÄÉÔÅ, ÚÁËÌÀÞÁÀÔÓÑ × ÄÒÕÇÉÅ ËÁ×ÙÞËÉ.)
COMMENT(-- need to do this specially in text since it should go here --)
whentxt(óÏÄÅÒÖÁÎÉÅ:
çÌÁ×Á 1: úÎÁËÏÍÓÔ×Ï Ó zsh É ËÁË ÅÇÏ ÕÓÔÁÎÏ×ÉÔØ
1.1: éÓÔÏÞÎÉËÉ ÉÎÆÏÒÍÁÃÉÉ
1.2: þÔÏ ÜÔÏ?
1.3: þÔÏ × Î£Í ÈÏÒÏÛÅÇÏ?
1.4: îÁ ËÁËÉÈ ÍÁÛÉÎÁÈ ÏÎ ÚÁÐÕÓÔÉÔÓÑ? (á ÔÁËÖÅ ×ÁÖÎÙÅ ÚÁÍÅÞÁÎÉÑ ÐÏ ËÏÍÐÉÌÑÃÉÉ)
1.5: ëÁËÁÑ ÐÏÓÌÅÄÎÑÑ ×ÅÒÓÉÑ?
1.6: çÄÅ ÍÎÅ ÅÇÏ ×ÚÑÔØ?
1.7: õ ÍÅÎÑ ÎÅÔ ÄÏÓÔÕÐÁ ÓÕÐÅÒÐÏÌØÚÏ×ÁÔÅÌÑ: ËÁË ÓÄÅÌÁÔØ, ÞÔÏÂÙ zsh ÚÁÐÕÓËÁÌÓÑ ÐÒÉ ×ÈÏÄÅ × ÓÉÓÔÅÍÕ?

çÌÁ×Á 2: þÅÍ zsh ÏÔÌÉÞÁÅÔÓÑ ÏÔ ...?
2.1: ïÔÌÉÞÉÑ ÏÔ sh É ksh
2.2: óÈÏÄÓÔ×Á Ó csh
2.3: ðÏÞÅÍÕ ÍÏÉ ÐÓÅ×ÄÏÎÉÍÙ ÏÔ csh ÎÅ ÒÁÂÏÔÁÀÔ? (á ÔÁËÖÅ ÄÒÕÇÉÅ ÏÛÉÂËÉ Ó ÐÓÅ×ÄÏÎÉÍÁÍÉ.)
2.4: óÈÏÄÓÔ×Á Ó tcsh
2.5: óÈÏÄÓÔ×Á Ó bash
2.6: äÏÌÖÅÎ ÌÉ zsh ÂÙÔØ ÂÏÌØÛÅ/ÍÅÎØÛÅ ÐÏÈÏÖ ÎÁ ksh/(t)csh?
2.7: ðÏÄÄÅÒÖÉ×ÁÅÔ ÌÉ zsh Unicode/UTF-8?

çÌÁ×Á 3: ëÁË ÚÁÓÔÁ×ÉÔØ ÒÁÂÏÔÁÔØ ÒÁÚÌÉÞÎÙÅ ×ÅÝÉ
3.1: ðÏÞÅÍÕ ÐÅÒÅÍÅÎÎÁÑ `$var', ÇÄÅ `var="foo bar"' ÎÅ ÄÅÌÁÅÔ ÔÏÇÏ ÞÅÇÏ Ñ ÏÖÉÄÁÀ?
3.2: ÷ ËÁËÏÊ ËÏÎÆÉÇÕÒÁÃÉÏÎÎÙÊ ÆÁÊÌ Ñ ÄÏÌÖÅÎ ÐÒÏÐÉÓÁÔØ...?
3.3: ÷ Þ£Í ÒÁÚÌÉÞÉÑ ÍÅÖÄÕ `export' É ÐÁÒÁÍÅÔÒÏÍ ALL_EXPORT ?
3.4: ëÁË ÍÎÅ ×ÙËÌÀÞÉÔØ ËÏÒÒÅËÃÉÀ ÐÒÁ×ÏÐÉÓÁÎÉÑ/ÕÎÉ×ÅÒÓÁÌÉÚÁÃÉÀ ÆÁÊÌÏ×ÙÈ ÉͣΠÄÌÑ ÏÄÎÏÊ ËÏÍÁÎÄÙ?
3.5: ëÁË ÍÎÅ ÓÄÅÌÁÔØ, ÞÔÏÂÙ ÍÅÔÁ ËÌÁ×ÉÛÁ ÒÁÂÏÔÁÌÁ ÎÁ ÍÏ£Í xterm?
3.6: ëÁË ÍÎÅ ÓÄÅÌÁÔØ, ÞÔÏÂÙ ÔÅËÕÝÁÑ ÄÉÒÅËÔÏÒÉÑ Á×ÔÏÍÁÔÉÞÅÓËÉ ×Ù×ÏÄÉÌÁÓØ × ÚÁÇÏÌÏ×ËÅ xterm?
3.7: ëÁË ÍÎÅ ÓÄÅÌÁÔØ, ÞÔÏÂÙ ÌÉÓÔ ÚÁ×ÅÒÛÅÎÉÑ ËÏÍÁÎÄ ÉÓÐÏÌØÚÏ×ÁÌ 8-ÂÉÔÎÙÅ ÓÉÍ×ÏÌÙ?
3.8: ðÏÞÅÍÕ "ÓÔÒÅÌËÉ" (ËÌÁ×ÉÛÉ ÕÐÒÁ×ÌÅÎÉÑ ËÕÒÓÏÒÏÍ) ÎÅ ÒÁÂÏÔÁÀÔ?
3.9: ðÏÞÅÍÕ ÔÅÒÍÉÎÁÌ × ÎÅËÏÔÏÒÙÈ ÓÌÕÞÁÑÈ ×ÅÄ£Ô ÓÅÂÑ ÓÍÅÛÎÏ?
3.10: ðÏÞÅÍÕ zsh ÎÅ ÒÁÂÏÔÁÅÔ ÂÏÌØÛÅ × ÒÅÖÉÍÅ Emacs?
3.11: ðÏÞÅÍÕ ÍÏÉ Á×ÔÏÚÁÇÒÕÖÁÅÍÙÅ ÆÕÎËÃÉÉ ÎÅ ÚÁÇÒÕÖÁÀÔÓÑ?
3.12: ëÁË ÒÁÂÏÔÁÅÔ ÂÁÚÏ×ÁÑ ÁÒÉÆÍÅÔÉËÁ?
3.13: ëÁË ÍÎÅ ÐÏÌÕÞÉÔØ ÎÏ×ÕÀ ÓÔÒÏËÕ × ÐÒÉÇÌÁÛÅÎÉÉ?
3.14: ðÏÞÅÍÕ `bindkey ^a command-name' ÉÌÉ `stty intr ^-' ×ÅÄÕÔ ÓÅÂÑ ËÁË-ÔÏ ÓÍÅÛÎÏ?
3.15: ðÏÞÅÍÕ Ñ ÎÅ ÍÏÇÕ ÂÏÌØÛÅ Ó×ÑÚÁÔØ ÓÏÞÅÔÁÎÉÑ \C-s É \C-q ?
3.16: ëÁË ÍÎÅ ×ÙÐÏÌÎÉÔØ ËÏÍÁÎÄÕ `foo' ×ÎÕÔÒÉ ÆÕÎËÃÉÉ foo?
3.17: ðÏÞÅÍÕ ÐÏÄÓÔÁÎÏ×ËÁ ËÏÍÁÎÄÙ ÉÚ ÉÓÔÏÒÉÉ ÐÒÉ ÉÓÐÏÌØÚÏ×ÁÎÉÉ ×ÏÓËÌÉÃÁÔÅÌØÎÏÇÏ ÚÎÁËÁ ×ÏÚ×ÒÁÝÁÅÔ ÞÔÏ-ÔÏ ÓÍÅÛÎÏÅ?
3.18: ðÏÞÅÍÕ zsh ÕÂÉ×ÁÅÔ ×ÓÅ ÆÏÎÏ×ÙÅ ÐÒÏÃÅÓÓÙ ÐÒÉ ×ÙÈÏÄÅ?
3.19: ëÁË ÍÎÅ ÐÒÏÓÍÏÔÒÅÔØ ×Ó£ ÓÏÄÅÒÖÉÍÏÅ ÉÓÔÏÒÉÉ?
3.20: ðÏÞÅÍÕ ÄÒÕÇÏÊ ÓÉÎÔÁËÓÉÓ ÃÉËÌÁ ÔÏÖÅ ÒÁÂÏÔÁÅÔ, ÎÁÐÒÉÍÅÒ `while {...} {...}'?
3.21: ðÏÞÅÍÕ ÍÏÑ ÉÓÔÏÒÉÑ ÎÅ ÓÏÈÒÁÎÉÌÁÓØ?
3.22: ëÁË ÐÏÌÕÞÉÔØ ÚÎÁÞÅÎÉÅ ÐÅÒÅÍÅÎÎÏÊ, ÉÍÑ ËÏÔÏÒÏÊ Ñ×ÌÑÅÔÓÑ ÚÎÁÞÅÎÉÅÍ ÄÒÕÇÏÊ ÐÅÒÅÍÅÎÎÏÊ?
3.23: ëÁË ÐÒÅÄÏÔ×ÒÁÔÉÔØ ÚÁÔÉÒÁÎÉÅ ÓÏÏÂÝÅÎÉÑ, × ËÏÔÏÒÏÍ ÎÅÔ ÓÉÍ×ÏÌÁ ÎÏ×ÏÊ ÓÔÒÏËÉ, ÐÒÉÇÌÁÛÅÎÉÅÍ ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ?
3.24: þÔÏ ÓÌÕÞÉÌÏÓØ Ó ÏÐÅÒÁÃÉÑÍÉ ×ÙÒÅÚÁÎÉÑ É ×ÓÔÁ×ËÉ × xterm?
3.25: ëÁË ÍÎÅ ÒÁÚÕËÒÁÓÉÔØ ÐÒÉÇÌÁÛÅÎÉÅ ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ × Ã×ÅÔÎÏÍ xterm?
3.26: ðÏÞÅÍÕ ÐÒÉ ×ÙÐÏÌÎÅÎÉÉ ËÏÍÁÎÄÙ `foo 2>&1 >foo.out | bar' ×Ù×ÏÄ ÄÕÂÌÉÒÕÅÔÓÑ?

çÌÁ×Á 4: óÅËÒÅÔÙ ÚÁ×ÅÒÛÅÎÉÑ
4.1: þÔÏ ÔÁËÏÅ ÚÁ×ÅÒÛÅÎÉÅ?
4.2: þÔÏ ÍÏÖÅÔ ÂÙÔØ ÚÁ×ÅÒÛÅÎÏ?
4.3: ëÁË zsh ÐÏÓÔÕÐÁÅÔ Ó ÎÅÏÐÒÅÄÅÌ£ÎÎÙÍÉ ÚÁ×ÅÒÛÅÎÉÑÍÉ?
4.4: ëÁË ÍÎÅ ÚÁ×ÅÒÛÉÔØ × ÓÅÒÅÄÉÎÅ ÓÌÏ×Á / ÄÏ ËÕÒÓÏÒÁ?
4.5: ëÁË ÍÎÅ ÎÁÞÁÔØ Ó ÐÒÏÇÒÁÍÍÉÒÕÅÍÙÍ ÚÁ×ÅÒÛÅÎÉÅÍ?
4.6: äÏÓÔÁÔÏÞÎÏ ÌÉ ÐÏÌÅÚÎÏ ÐÒÏÇÒÁÍÍÉÒÕÅÍÏÅ ÚÁ×ÅÒÛÅÎÉÅ?

çÌÁ×Á 5: âÕÄÕÝÅÅ zsh
5.1: ëÁËÉÅ ÏÛÉÂËÉ ÉÚ×ÅÓÔÎÙ É ÎÅÉÓÐÒÁ×ÌÅÎÙ? (á ÔÁËÖÅ ÎÅÄÁ×ÎÉÅ ×ÁÖÎÙÅ ÉÚÍÅÎÅÎÉÑ)
5.2: çÄÅ ÍÎÅ ÄÏÌÏÖÉÔØ Ï ÏÛÉÂËÁÈ, ÐÏÌÕÞÉÔØ ÂÏÌØÛÅ ÉÎÆÏÒÍÁÃÉÉ / ËÔÏ ÒÁÂÏÔÁÅÔ ÎÁÄ zsh?
5.3: ëÁË ÎÁÓÞ£Ô ÓÐÉÓËÁ ÐÏÖÅÌÁÎÉÊ?
5.4: åÓÔØ ÌÉ Õ zsh ÐÒÏÂÌÅÍÁ 2000 ÇÏÄÁ (ÏÔÏÂÒÁÖÅÎÉÅ ÄÁÔÙ)?

âÌÁÇÏÄÁÒÎÏÓÔÉ

á×ÔÏÒÓËÁÑ ÉÎÆÏÒÍÁÃÉÑ
--- ëÏÎÅà ÓÏÄÅÒÖÁÎÉÑ ---
)

chapter(úÎÁËÏÍÓÔ×Ï Ó zsh É ËÁË ÅÇÏ ÕÓÔÁÎÏ×ÉÔØ)

sect(éÓÔÏÞÎÉËÉ ÉÎÆÏÒÍÁÃÉÉ)
label(11)

  éÎÆÏÒÍÁÃÉÑ Ï zsh ÄÏÓÔÕÐÎÁ ÞÅÒÅÚ World Wide Web: url(http://sunsite.dk/zsh/)(http://sunsite.dk/zsh/) . óÅÒ×ÅÒ ÐÒÅÄÏÓÔÁ×ÌÑÅÔ ÜÔÏÔ FAQ É ÍÎÏÇÏ ÄÒÕÇÏÇÏ, × ÄÁÎÎÙÊ ÍÏÍÅÎÔ ÏÎ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ Karsten Thygesen É ÄÒÕÇÉÍÉ (email(zsh@sunsite.dk)). FAQ ÎÁÈÏÄÉÔÓÑ ÚÄÅÓØ url(http://sunsite.dk/zsh/FAQ/)(http://sunsite.dk/zsh/FAQ/) . îÁ ÓÁÊÔÅ ÔÁËÖÅ ÍÏÖÎÏ ÎÁÊÔÉ zsh-ÓËÒÉÐÔÙ É ÆÕÎËÃÉÉ; ÍÙ Ó ÕÄÏ×ÏÌØÓÔ×ÉÅÍ ÄÏÂÁ×ÉÍ ÄÒÕÇÉÅ ÉÌÉ ÐÒÏÓÔÏ ÄÁÄÉÍ ÓÓÙÌËÕ ÎÁ ×ÁÛÕ ÓÏÂÓÔ×ÅÎÎÕÀ ËÏÌÌÅËÃÉÀ.

  üÔÏÔ ÄÏËÕÍÅÎÔ × ÏÒÉÇÉÎÁÌÅ ÂÙÌ ÎÁÐÉÓÁÎ × ÆÏÒÍÁÔÅ YODL, ÐÏÚ×ÏÌÑÀÝÅÍ ÌÅÇËÏ ËÏÎ×ÅÒÔÉÒÏ×ÁÔØ ÓÅÂÑ × ÒÁÚÌÉÞÎÙÅ ÆÏÒÍÁÔÙ. çÌÁ×ÎÙÊ ÉÓÈÏÄÎÙÊ ÆÁÊÌ ÌÅÖÉÔ ÚÄÅÓØ url(http://sunsite.dk/zsh/FAQ/zshfaq.yo)(http://sunsite.dk/zsh/FAQ/zshfaq.yo) É ÔÅËÓÔÏ×ÁÑ ×ÅÒÓÉÑ: url(http://sunsite.dk/zsh/FAQ/zshfaq.txt)(http://sunsite.dk/zsh/FAQ/zshfaq.txt) .

  äÒÕÇÏÊ ÐÏÌÅÚÎÙÊ ÉÓÔÏÞÎÉË ÉÎÆÏÒÍÁÃÉÉ - ÜÔÏ ÓÏÂÒÁÎÉÅ FAQ-ÓÔÁÔÅÊ, ÞÁÓÔÏ ÒÁÚÍÅÝÁÅÍÙÈ × Usenet ÇÒÕÐÐÅ ÎÏ×ÏÓÔÅÊ comp.unix.questions, comp.unix.shells É comp.answers Ó ÏÔ×ÅÔÁÍÉ ÎÁ ÏÂÙÞÎÙÅ ×ÏÐÒÏÓÙ ÐÏ UNIX. ðÑÔØ ÉÚ ÓÅÍÉ ÓÔÁÔÅÊ Ó×ÑÚÁÎÙ Ó ÛÅÌÌÁÍÉ, ×ËÌÀÞÁÑ zsh, Ó ËÒÁÔËÉÍ ÏÐÉÓÁÎÉÅÍ ÒÁÚÌÉÞÉÊ. ôÁË ÖÅ ÓÕÝÅÓÔ×ÕÅÔ ÏÔÄÅÌØÎÙÊ FAQ ÐÏ ÒÁÚÌÉÞÉÑÍ ÛÅÌÌÏ× É ËÁË ÓÍÅÎÉÔØ ÛÅÌÌ. FAQ'É Usenet'Á ÄÏÓÔÕÐÎÙ ÐÏ FTP Ó rtfm.mit.edu É ÚÅÒËÁÌ, Á ÔÁË ÖÅ ÞÅÒÅÚ World Wide Web:

  description(
    mydit(óûá)             url(http://www.cis.ohio-state.edu/hypertext/faq/usenet/top.html)
    (http://www.cis.ohio-state.edu/hypertext/faq/usenet/top.html)
    mydit(÷ÅÌÉËÏÂÒÉÔÁÎÉÑ)  url(http://www.lib.ox.ac.uk/internet/news/faq/comp.unix.shell.html)
    (http://www.lib.ox.ac.uk/internet/news/faq/comp.unix.shell.html)
    mydit(îÉÄÅÒÌÁÎÄÙ)      url(http://www.cs.uu.nl/wais/html/na-dir/unix-faq/shell/.html)
    (http://www.cs.uu.nl/wais/html/na-dir/unix-faq/shell/.html)
  )

  ÷Ù ÔÁË ÖÅ ÍÏÖÅÔÅ ÐÏÌÕÞÉÔØ ÅÇÏ ÐÏ ÜÌÅËÔÒÏÎÎÏÊ ÐÏÞÔÅ, ÐÏÓÌÁ× ÐÉÓØÍÏ ÎÁ email(mail-server@rtfm.mit.edu) Ó ÓÏÏÂÝÅÎÉÅÍ mytt(send faqs/unix-faq/shell/zsh).

  ðÏÓÌÅÄÎÑÑ ×ÅÒÓÉÑ ÜÔÏÇÏ FAQ ÔÁËÖÅ ÄÏÓÔÕÐÎÁ ÉÚ ÌÀÂÏÇÏ zsh ÁÒÈÉ×Á, ÕËÁÚÁÎÎÏÇÏ × ÓÐÉÓËÅ × ÐÕÎËÔÅ link(1.6)(16).

  äÌÑ ÕÄÏÂÓÔ×Á ÞÔÅÎÉÑ, Á ÔÁËÖÅ ×ÄÏÂÁ×ÏË Ë ÏÐÉÓÁÎÉÀ ÐÏÌÅÚÎÙÈ ×ÏÚÍÏÖÎÏÓÔÅÊ Ñ ×ÙÌÏÖÉÌ ÔÕÄÁ ÖÅ ÒÕËÏ×ÏÄÓÔ×Ï ÐÏÌØÚÏ×ÁÔÅÌÑ. üÔÏ ÂÕÄÅÔ ÄÏÌÇÉÊ ÐÒÏÅËÔ, ÎÏ ÎÅÐÏÌÎÁÑ ×ÅÒÓÉÑ ÒÁÓÓËÁÚÙ×ÁÅÔ, ËÁË ÐÉÓÁÔØ ËÏÎÆÉÇÕÒÁÃÉÏÎÎÙÅ ÆÁÊÌÙ É ËÁË ÉÓÐÏÌØÚÏ×ÁÔØ ÎÏ×ÕÀ, ÂÏÌÅÅ ÍÏÝÎÕÀ ÆÏÒÍÕ ÚÁ×ÅÒÛÅÎÉÑ, ËÏÔÏÒÁÑ ×ÐÅÒ×ÙÅ ÐÏÑ×ÉÌÁÓØ × ×ÅÒÓÉÉ 3.1.6 (É ÎÅ ÏÐÉÓÁÎÁ × ÜÔÏÍ FAQ'Å), ÏÎÏ (ÒÕËÏ×ÏÄÓÔ×Ï) ÍÏÖÅÔ ÂÙÔØ ÎÁÊÄÅÎÏ ÚÄÅÓØ url(http://www.pwstephenson.fsnet.co.uk/computing/)(http://www.pwstephenson.fsnet.co.uk/computing/) ,ÐÒÉÞ£Í × ÒÁÚÌÉÞÎÙÈ ÆÏÒÍÁÔÁÈ.

  (ëÁË ÍÅÔÏÄ ÞÔÅÎÉÑ × Emacs, ×Ù ÍÏÖÅÔÅ ÎÁÂÒÁÔØ tt(\M-2 \C-x $) , ÞÔÏÂÙ ÓÄÅÌÁÔØ ×ÅÓØ ÓÔÒÕËÔÕÒÉÒÏ×ÁÎÎÙÊ ÔÅËÓÔ ÎÅ×ÉÄÉÍÙÍ, ÚÁÔÅÍ tt(\M-0 \C-x $) , ËÏÇÄÁ ×Ù ÎÁ ÚÁÇÏÌÏ×ËÅ, ËÏÔÏÒÙÊ ×ÁÍ ÎÕÖÅÎ)

  äÌÑ ÂÏÌÅÅ ÜËÌÅËÔÉÞÎÏÊ ÉÎÆÏÒÍÁÃÉÉ ×ÁÍ ÓÌÅÄÕÅÔ ÐÏÓÅÔÉÔØ ×ÏÐÒÏÓ link(5.2)(52).

sect(þÔÏ ÜÔÏ?)

  Zsh - ÜÔÏ ËÏÍÁÎÄÎÙÊ ÉÎÔÅÒÐÒÅÔÁÔÏÒ UNIX (ÛÅÌÌ), ËÏÔÏÒÙÊ ÉÚ ÓÔÁÎÄÁÒÔÎÙÈ ÛÅÌÌÏ× ÂÏÌØÛÅ ÐÏÈÏÖ ÎÁ Korn shell (ksh); ÅÇÏ ÓÏ×ÍÅÓÔÉÍÏÓÔØ Ó 1988 Korn shell ÐÏÓÔÅÐÅÎÎÏ ×ÙÒÏÓÌÁ. ïÎ ×ËÌÀÞÁÅÔ ÕÓÏ×ÅÒÛÅÎÓÔ×Ï×ÁÎÉÑ ÍÎÏÇÉÈ ÔÉÐÏ×, ÏÓÏÂÅÎÎÏ × ÒÅÄÁËÔÏÒÅ ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ, ÐÁÒÁÍÅÔÒÙ ÄÌÑ ×ÙÂÏÒÁ ÒÅÖÉÍÁ, ÕÎÉ×ÅÒÓÁÌÉÚÁÃÉÀ ÆÁÊÌÏ×ÙÈ ÉÍ£Î, ÆÕÎËÃÉÉ, Ë ËÏÔÏÒÙÍ ÐÒÉ×ÙËÌÉ ÐÏÌØÚÏ×ÁÔÅÌÉ C-shell (csh), É ÄÏÐÏÌÎÉÔÅÌØÎÙÅ ×ÏÚÍÏÖÎÏÓÔÉ, ×ÚÑÔÙÅ ÉÚ tcsh ÄÒÕÇÉÈ ÛÅÌÌÏ×.

  åÇÏ ÎÁÐÉÓÁÌ Paul Falstad, ËÏÇÄÁ ÏÎ ÂÙÌ ÓÔÕÄÅÎÔÏÍ ÕÎÉ×ÅÒÓÉÔÅÔÁ Princeton; ÔÅÍ ÎÅ ÍÅÎÅÅ, Paul ÂÏÌØÛÅ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔ ÅÇÏ É ×ÏÐÒÏÓÙ ÓÌÅÄÕÅÔ ÏÔÐÒÁ×ÌÑÔØ × ÒÁÓÓÙÌËÕ (ÓÍ. ×ÏÐÒÏÓ link(5.2)(52)). Zsh ÒÁÓÐÒÏÓÔÒÁÎÑÅÔÓÑ ÎÁ ÕÓÌÏ×ÉÑÈ ÓÔÁÎÄÁÒÔÎÏÊ ÌÉÃÅÎÚÉÉ Berkeley.

  úÁ ÐÏÄÒÏÂÎÏÓÔÑÍÉ ÒÅËÏÍÅÎÄÕÅÔÓÑ ÏÂÒÁÔÉÔØÓÑ Ë ÆÁÊÌÁÍ Doc/intro.txt ÉÌÉ Doc/intro.troff, ×ËÌÀÞ£ÎÎÙÍ × ÉÓÈÏÄÎÙÊ ËÏÄ ÄÉÓÔÒÉÂÕÔÉ×Á. óÐÉÓÏË ×ÏÚÍÏÖÎÏÓÔÅÊ ÐÒÉ×ÅÄ£Î × ÆÁÊÌÅ FEATURES.

sect(þÔÏ × Î£Í ÈÏÒÏÛÅÇÏ?)

  ÷ÏÔ ÎÅÓËÏÌØËÏ ÐÕÎËÔÏ× × Þ£Í zsh ÄÅÊÓÔ×ÉÔÅÌØÎÏ ÈÏÒÏÛ. îÅ ÐÒÅÔÅÎÄÕÅÔ ÎÁ ÉÓËÌÀÞÉÔÅÌØÎÏÓÔØ, ÏÓÏÂÅÎÎÏ ËÁË ÛÅÌÌÙ, ËÏÐÉÒÕÀÝÉÅ ÄÒÕÇ ÄÒÕÇÁ, ÈÏÔÑ × ÒÅÄÁËÔÏÒÅ ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ É × ÕÎÉ×ÅÒÓÁÌÉÚÁÃÉÉ ÆÁÊÌÏ×ÙÈ ÉͣΠzsh ×ÎÅ ËÏÎËÕÒÅÎÃÉÉ. ñ ÎÅ ÚÎÁÀ Ï ÇÌÁ×ÎÙÈ ÉÎÔÅÒÁËÔÉ×ÎÙÈ ÏÓÏÂÅÎÎÏÓÔÑÈ × ÄÒÕÇÉÈ Ó×ÏÂÏÄÎÏ ÄÏÓÔÕÐÎÙÈ ÛÅÌÌÁÈ, ËÏÔÏÒÙÅ zsh ÔÁËÖÅ ÎÅ ÉÍÅÅÔ (ÚÁ ÉÓËÌÀÞÅÎÉÅÍ ÎÅËÏÔÏÒÙÈ).

  itemize(
  it() òÅÄÁËÔÏÒ ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ:
  itemize(
    it() ÐÒÏÇÒÁÍÍÉÒÕÅÍÏÅ ÚÁ×ÅÒÛÅÎÉÅ: ÏÂßÅÄÉÎÑÅÔ ÓÐÏÓÏÂÎÏÓÔØ ÉÓÐÏÌØÚÏ×ÁÔØ ×ÓÀ ÍÏÝØ zsh: ÕÎÉ×ÅÒÓÁÌÉÚÁÃÉÀ ÉÍ£Î É ×ÏÚÍÏÖÎÏÓÔÉ ÐÒÏÇÒÁÍÍÉÒÏ×ÁÎÉÑ,
    it() ÍÎÏÇÏÓÔÒÏÞÎÙÅ ËÏÍÁÎÄÙ ÄÏÓÔÕÐÎÙ ÄÌÑ ÒÅÄÁËÔÉÒÏ×ÁÎÉÑ ËÁË ÏÄÉÎ ÂÕÆÅÒ (ÄÁÖÅ ÆÁÊÌÙ!),
    it() ÒÅÄÁËÔÉÒÏ×ÁÎÉÅ ÐÅÒÅÍÅÎÎÙÈ (vared),
    it() ÓÔÅË ÂÕÆÅÒÁ ËÏÍÁÎÄ,
    it() ÐÅÞÁÔØ ÔÅËÓÔÁ ÐÒÑÍÏ × ÂÕÆÅÒ ÎÅÐÏÓÒÅÄÓÔ×ÅÎÎÏ ÄÌÑ ÒÅÄÁËÔÉÒÏ×ÁÎÉÑ (print -z),
    it() ×ÙÐÏÌÎÅÎÉÅ ÎÅÓ×ÑÚÁÎÎÙÈ ËÏÍÁÎÄ,
    it() Ä×Á ÒÁÚÎÙÈ ×ÉÄÁ ÍÅÎÀ ÚÁ×ÅÒÛÅÎÉÑ,
    it() ÚÁ×ÅÒÛÅÎÉÅ ÐÅÒÅÍÅÎÎÙÈ, ÆÕÎËÃÉÊ É ÐÁÒÁÍÅÔÒÏ×,
    it() ×ÓÔÒÏÅÎÎÏÅ ÒÁÓÛÉÒÅÎÉÅ ÐÅÒÅÍÅÎÎÙÈ É ËÏÍÁÎÄ ÉÓÔÏÒÉÉ.  
  )
  it() þÒÅÚ×ÙÞÁÊÎÏ ÍÏÝÎÁÑ ÕÎÉ×ÅÒÓÁÌÉÚÁÃÉÑ ÉͣΠ×ËÌÀÞÁÅÔ × ÓÅÂÑ:
  itemize(
    it() ÒÅËÕÒÓÉ×ÎÁÑ ÕÎÉ×ÅÒÓÁÌÉÚÁÃÉÑ ÉͣΠ(ÓÍ. find),
    it() ÕÔÏÞÎÅÎÉÅ ÆÁÊÌÏ×ÙÈ ÁÔÒÉÂÕÔÏ× (ÒÁÚÍÅÒ, ÔÉÐ, Ô.Ä. ÔÁËÖÅ cf. find),
    it() ÐÏÌÎÏÅ ÚÁÍÅÝÅÎÉÅ É ÏÔÒÉÃÁÎÉÅ ÛÁÂÌÏÎÏ×.
  )
  it() ðÏÄÄÅÒÖËÁ ÎÅÓËÏÌØËÉÈ ÐÅÒÅÎÁÐÒÁ×ÌÅÎÉÊ (ÐÒÏÝÅ, ÞÅÍ tee).
  it() âÏÌØÛÏÅ ËÏÌÉÞÅÓÔ×Ï ÐÁÒÁÍÅÔÒÏ× ÄÌÑ ÐÒÉÓÐÏÓÁÂÌÉ×ÁÎÉÑ.
  it() òÁÓÛÉÒÅÎÉÅ ÐÕÔÉ (=foo -> /usr/bin/foo).
  it() õÄÏÂÏÞÉÔÁÅÍÙÅ ×ÙÒÁÖÅÎÉÑ × watch, time É prompt (×ËÌÀÞÁÑ ÕÓÌÏ×ÎÙÅ ×ÙÒÁÖÅÎÉÑ).
  it() éÍÅÎÏ×ÁÎÎÙÅ ÄÉÒÅËÔÏÒÉÉ (named directories).
  it() éÓÞÅÒÐÙ×ÁÀÝÁÑ ÁÒÉÆÍÅÔÉËÁ Ó ÃÅÌÙÍÉ É ×ÅÝÅÓÔ×ÅÎÎÙÍÉ ÞÉÓÌÁÍÉ.
  it() íÁÎÉÐÕÌÑÃÉÉ Ó ÍÁÓÓÉ×ÁÍÉ (×ËÌÀÞÁÑ ÐÅÒÅ×ÏÒÏÔ ÓÔÒÏË).
  it() áÓÓÏÃÉÁÔÉ×ÎÙÅ ÍÁÓÓÉ×Ù (ÈÅÛÉ ËÌÀÞ-ÚÎÁÞÅÎÉÅ)
  it() éÓÐÒÁ×ÌÅÎÉÅ ÏÒÆÏÇÒÁÆÉÞÅÓËÉÈ ÏÛÉÂÏË.
  )

sect(îÁ ËÁËÉÈ ÍÁÛÉÎÁÈ ÏÎ ÚÁÐÕÓÔÉÔÓÑ? (á ÔÁËÖÅ ×ÁÖÎÙÅ ÚÁÍÅÞÁÎÉÑ ÐÏ ËÏÍÐÉÌÑÃÉÉ))

  îÁÞÉÎÁÑ Ó ×ÅÒÓÉÉ 3.0, zsh ÉÓÐÏÌØÚÕÅÔ × ËÁÞÅÓÔ×Å ÍÅÈÁÎÉÚÍÁ ÕÓÔÁÎÏ×ËÉ GNU autoconf. üÔÏ ÚÎÁÞÉÔÅÌØÎÏ ÐÏ×ÙÛÁÅÔ ÇÉÂËÏÓÔØ ÐÏ ÓÒÁ×ÎÅÎÉÀ ÓÏ ÓÔÁÒÙÍ ÍÅÈÁÎÉÚÍÏÍ `buildzsh'. óÌÅÄÏ×ÁÔÅÌØÎÏ, zsh ÄÏÌÖÅÎ ÓËÏÍÐÉÌÉÒÏ×ÁÔØÓÑ É ÚÁÐÕÓËÁÔØÓÑ ÎÁ ÌÀÂÏÊ ÓÏ×ÒÅÍÅÎÎÏÊ ×ÅÒÓÉÉ UNIX, É ÎÁ ÍÎÏÇÉÈ ÎÅ ÓÌÉÛËÏÍ ÓÏ×ÒÅÍÅÎÎÙÈ ×ÅÒÓÉÑÈ ÔÏÖÅ. þÔÏÂÙ ÐÏÌÕÞÉÔØ ÉÎÆÏÒÍÁÃÉÀ ÐÏ ËÏÎËÒÅÔÎÏÊ ÁÒÈÉÔÅËÔÕÒÅ, ÌÕÞÛÅ ×ÚÇÌÑÎÕÔØ × ÆÁÊÌ MACHINES.

  óÕÝÅÓÔ×ÕÀÔ ÔÁËÖÅ ÏÔÄÅÌØÎÙÅ ÐÏÒÔÙ ÄÌÑ Windows É OS/2 (ÓÍ. `çÄÅ Ñ ÍÏÇÕ ×ÚÑÔØ' ÄÁÌÅÅ).

  åÓÌÉ ×Ù ÈÏÔÉÔÅ ÞÔÏ-ÔÏ ÉÚÍÅÎÉÔØ, ÞÔÏÂÙ ÄÏÂÁ×ÉÌÁÓØ ÐÏÄÄÅÒÖËÁ ÎÏ×ÏÊ ÐÌÁÔÆÏÒÍÙ, ÜÔÏ ÂÕÄÅÔ ÕÞÔÅÎÏ, ÅÓÌÉ ÂÙ ×Ù ÄÏÂÁ×ÉÌÉ ÐÒÅÐÒÏÃÅÓÓÏÒÎÙÊ ËÏÄ É ÉÚÍÅÎÉÌÉ configure.in É acconfig.h ÄÌÑ Á×ÔÏÍÁÔÉÞÅÓËÏÊ ËÏÎÆÉÇÕÒÁÃÉÉ zsh. úÁÔÅÍ ÏÔÏÛÌÉÔÅ ÔÒÅÂÕÅÍÙÅ ËÏÎÔÅËÓÔÎÙÅ diff-ÆÁÊÌÙ × ÒÁÓÓÙÌËÕ (×ÏÐÒÏÓ link(5.2)(52)). ðÏÖÁÌÕÊÓÔÁ, ÕÂÅÄÉÔÅÓØ, ÄÌÑ ÎÁÞÁÌÁ, ÞÔÏ Õ ×ÁÓ ÐÏÓÌÅÄÎÑÑ ×ÅÒÓÉÑ ÄÉÓÔÒÉÂÕÔÉ×Á.

  þÔÏÂÙ ÎÁÞÁÔØ ÒÁÂÏÔÁÔØ, ÄÏÓÔÁÎØÔÅ ÉÓÈÏÄÎÙÊ ÄÉÓÔÒÉÂÕÔÉ× (×ÏÐÒÏÓ link(1.6)(16)), ÒÁÚÁÒÈÉ×ÉÒÕÊÔÅ ÅÇÏ, É ÐÒÏÞÉÔÁÊÔÅ ÆÁÊÌ INSTALL × ÇÌÁ×ÎÏÍ ËÁÔÁÌÏÇÅ. æÁÊÌ MACHINES ÓÏÄÅÒÖÉÔ ÉÎÆÏÒÍÁÃÉÀ ÐÏ ËÏÎÐÉÌÑÃÉÉ ÎÁ ÏÐÒÅÄÅÌÅÎÎÙÈ ÁÒÈÉÔÅËÔÕÒÁÈ.
  
  mybf(úÁÍÅÞÁÎÉÅ ÄÌÑ ÐÏÌØÚÏ×ÁÔÅÌÅÊ nawk) (óÌÅÄÕÀÝÁÑ ÉÎÆÏÒÍÁÃÉÑ ÐÏÓÔÕÐÉÌÁ ÏÔ Zoltan Hidvegi): îÁ ÎÅËÏÔÏÒÙÈ ÓÉÓÔÅÍÁÈ nawk ÆÁÊÌ signames.h ÍÏÖÅÔ ÂÙÔØ ÎÅÐÒÁ×ÉÌØÎÙÍ. éÚ-ÚÁ ÜÔÏÇÏ ÓÉÇÎÁÌØÎÙÅ ËÏÄÙ ÍÏÇÕÔ ÓÔÁÔØ ÎÅÐÒÉÇÏÄÎÙÍÉ. üÔÏ ÞÁÓÔÏ ÐÒÏÉÓÈÏÄÉÔ ÎÁ Ultrix, HP-UX, IRIX (?). õÓÔÁÎÏ×ÉÔÅ gawk, ÅÓÌÉ ×Ù ÓÔÏÌËÎÕÌÉÓØ Ó ÔÁËÉÍÉ ÐÒÏÂÌÅÍÁÍÉ.

sect(ëÁËÁÑ ÐÏÓÌÅÄÎÑÑ ×ÅÒÓÉÑ?)

  Zsh 4.2.5 - ÐÏÓÌÅÄÎÑÑ ÓÔÁÂÉÌØÎÁÑ ×ÅÒÓÉÑ (ÎÁ ÍÏÍÅÎÔ ÐÅÒÅ×ÏÄÁ).

  âÏÌØÛÅ ÎÅ ÂÕÄÅÔ ×ÅÒÓÉÉ 4.0 ÔÅÐÅÒØ ×ÅÒÓÉÑ 4.2 ÓÔÁÎÅÔ ÓÔÁÂÉÌØÎÙÍ ÒÅÌÉÚÏÍ.

  éÎÏÇÄÁ ÄÏÓÔÕÐÎÁ ÓÌÅÄÕÀÝÁÑ ÂÅÔÁ-×ÅÒÓÉÑ. òÁÚ×ÉÔÉÅ zsh - ÜÔÏ ÚÁÐÌÁÔËÁ ÚÁ ÚÁÐÌÁÔËÏÊ, Ó ËÁÖÄÏÊ ÐÒÏÍÅÖÕÔÏÞÎÏÊ ÏÂÝÅÄÏÓÔÕÐÎÏÊ ×ÅÒÓÉÅÊ. úÁÍÅÔØÔÅ, ÞÔÏ `ÏÔËÒÙÔÁÑ' ÓÉÓÔÅÍÁ ÒÁÚÒÁÂÏÔËÉ ÐÏÄÒÁÚÕÍÅ×ÁÅÔ ÏÛÉÂËÉ, ÐÏÑ×ÌÑÀÝÉÅÓÑ × ÂÏÌØÛÉÎÓÔ×Å ÎÏ×ÙÈ ×ÅÒÓÉÊ. ïÂÙÞÎÏ ÏÎÉ ÂÙÓÔÒÏ ÉÓÐÒÁ×ÌÑÀÔÓÑ. åÓÌÉ ×ÁÍ ÄÅÊÓÔ×ÉÔÅÌØÎÏ ÉÎÔÅÒÅÓÎÏ ÕÚÎÁÔØ Ï ÓÁÍÙÈ ÐÏÓÌÅÄÎÉÈ ÕÌÕÞÛÅÎÉÑÈ, É ×Ù ÍÅÎØÛÅ ÂÅÓÐÏËÏÉÔÅÓØ Ï ÓÔÁÂÉÌØÎÏÓÔÉ ÏËÒÕÖÅÎÉÑ - ÒÁÚÒÁÂÁÔÙ×ÁÅÍÁÑ ×ÅÒÓÉÑ ÚÁÇÒÕÖÁÅÔÓÑ ÄÏ×ÏÌØÎÏ ÞÁÓÔÏ × ÁÒÈÉ× tt(ÄÉÒÅËÔÏÒÉÉ ÒÁÚÒÁÂÏÔÞÉËÏ×).

  úÁÍÅÔØÔÅ ÔÁËÖÅ, ÞÔÏ ÛÅÌÌ ÉÚÍÅÎÑÅÔÓÑ, ÐÏÜÔÏÍÕ ÏÎ ÍÏÖÅÔ ÓÔÁÔØ ÎÅÓÏ×ÍÅÓÔÉÍÙÍ ÓÏ ÓÔÁÒÙÍÉ ×ÅÒÓÉÑÍÉ; ÐÏÓÍÏÔÒÉÔÅ ËÏÎÃÏ×ËÕ ×ÏÐÒÏÓÁ link(5.1)(51) ÄÌÑ ÕÔÏÞÎÅÎÉÑ. éÚÍÅÎÅÎÉÑ ÔÁËÏ×Á ×ÉÄÁ ÐÏÞÔÉ ×ÓÅÇÄÁ ÎÁÚÙ×ÁÀÔÓÑ ÎÏ×ÉÞËÁÍÉ ÌÉÛÎÉÍÉ ×ÏÚÍÏÖÎÏÓÔÑÍÉ × ÏÒÉÇÉÎÁÌØÎÏÍ ÐÒÏÅËÔÅ (ËÁË ×ÏÓÐÒÉÎÑÔÏ ÔÅËÕÝÉÍÉ ÐÏÌØÚÏ×ÁÔÅÌÑÍÉ), ÉÌÉ ÒÁÓÛÉÒÑÀÔ ÓÏ×ÍÅÓÔÉÍÏÓÔØ Ó ÄÒÕÇÉÍÉ Bourne shell ÐÒÏÉÚ×ÏÄÎÙÍÉ, ÉÌÉ (× ÏÓÎÏ×ÎÏÍ × 3.0 ×ÅÔËÅ) ÐÒÅÄÏÓÔÁ×ÌÑÀÔ POSIX ÓÏ×ÍÅÓÔÉÍÏÓÔØ.

sect(çÄÅ ÍÎÅ ÅÇÏ ×ÚÑÔØ?)
label(16)

  ëÏÏÒÄÉÎÁÔÏÒÏÍ ÒÁÚÒÁÂÏÔËÉ ÐÒÏÅËÔÁ × ÎÁÓÔÏÑÝÅÅ ×ÒÅÍÑ Ñ×ÌÑÀÓØ Ñ; ÐÓÅ×ÄÏÎÉÍ email(coordinator@zsh.org) ÍÏÖÅÔ ÂÙÔØ ÉÓÐÏÌØÚÏ×ÁÎ ÄÌÑ ËÏÎÔÁËÔÁ Ó ËÅÍ ÕÇÏÄÎÏ, ËÔÏ ÎÁ ÒÁÂÏÞÅÍ ÍÅÓÔÅ. éÚ×ÅÓÔÎÙ ÓÌÅÄÕÀÝÉÅ ÞÁÓÔÏ ÏÂÎÏ×ÌÑÀÝÉÅÓÑ ÚÅÒËÁÌÁ; ÐÅÒ×ÏÅ - ÜÔÏ ÏÆÉÃÉÁÌØÎÙÊ ÁÒÈÉ×ÎÙÊ ÓÁÊÔ, ÎÁ ÓÅÇÏÄÎÑÛÎÉÊ ÄÅÎØ ÏÎ ÎÁÈÏÄÉÔÓÑ × á×ÓÔÒÁÌÉÉ. ÷ÓÅ ÏÎÉ ÄÏÓÔÕÐÎÙ ÐÏ ÁÎÏÎÉÍÎÏÍÕ FTP. çÌÁ×ÎÙÅ ÓÁÊÔÙ ÉÍÅÀÔ ÔÅÓÔ ×ÅÒÓÉÉ × ÐÏÄÄÉÒÅËÔÏÒÉÉ `testing': ÜÔÉ ÅÖÅÍÉÎÕÔÎÙÅ ÒÁÚÒÁÂÁÔÙ×ÁÅÍÙÅ ×ÅÒÓÉÉ ÓÌÅÄÕÅÔ ÂÒÁÔØ ÅÓÌÉ ×Ù ÐÌÁÎÉÒÕÅÔÅ ÐÏÍÏÞØ ÐÒÏÔÅÓÔÉÒÏ×ÁÔØ ÐÏÓÌÅÄÎÀÀ ×ÅÒÓÉÉ ÛÅÌÌÁ. óÌÅÄÕÀÝÉÊ ÓÐÉÓÏË ÔÁËÖÅ ÅÓÔØ ÎÁ url(http://www.zsh.org)(http://www.zsh.org) .
  descriprion(
    mydit(äÏÍÁÛÎÉÊ ÓÁÊÔ)  url(ftp://ftp.zsh.org)(ftp://ftp.zsh.org)
    mydit()               url(http://www.zsh.org/pub/zsh/)(http://www.zsh.org/pub/zsh/)
    mydit(á×ÓÔÒÁÌÉÑ)      url(ftp://ftp.ips.gov.au/mirror/zsh/)(ftp://ftp.ips.gov.au/mirror/zsh/)
    mydit(äÁÎÉÑ)          url(ftp://sunsite.dk/pub/unix/shells/zsh)(ftp://sunsite.dk/pub/unix/shells/zsh)
    mydit(æÉÎÌÑÎÄÉÑ)      url(ftp://ftp.funet.fi/pub/unix/shells/zsh/)(ftp://ftp.funet.fi/pub/unix/shells/zsh/)
    mydit(æÒÁÎÃÉÑ)        url(ftp://ftp.cenatls.cena.dgac.fr/shells/zsh/)(ftp://ftp.cenatls.cena.dgac.fr/shells/zsh/)
    mydit(çÅÒÍÁÎÉÑ)       url(ftp://ftp.fu-berlin.de/pub/unix/shells/zsh/)(ftp://ftp.fu-berlin.de/pub/unix/shells/zsh/)
    mydit()		  url(ftp://ftp.uni-trier.de/pub/unix/shell/zsh/)(ftp://ftp.uni-trier.de/pub/unix/shell/zsh/)
    mydit(÷ÅÎÇÒÉÑ)        url(ftp://ftp.cs.elte.hu/pub/zsh/)(ftp://ftp.cs.elte.hu/pub/zsh/)
    mydit()		  (ÔÁËÖÅ url(http://www.cs.elte.hu/pub/zsh/)(http://www.cs.elte.hu/pub/zsh/))
    mydit()		  url(ftp://ftp.kfki.hu/pub/packages/zsh/)(ftp://ftp.kfki.hu/pub/packages/zsh/)
    mydit(éÚÒÁÉÌØ)        url(ftp://ftp.math.technion.ac.il/pub/zsh/)(ftp://ftp.math.technion.ac.il/pub/zsh/)
    mydit()		  url(http://www.math.technion.ac.il/pub/zsh/)(http://www.math.technion.ac.il/pub/zsh/)
    mydit(éÔÁÌÉÑ)         url(ftp://ftp.unina.it/pub/Unix/pkgs/shell/zsh/)(ftp://ftp.unina.it/pub/Unix/pkgs/shell/zsh/)
    mydit(ñÐÏÎÉÑ)         url(ftp://ftp.nisiq.net/pub/shells/zsh/)(ftp://ftp.nisiq.net/pub/shells/zsh/)
    mydit()               url(ftp://ftp.win.ne.jp/pub/shell/zsh/)(ftp://ftp.win.ne.jp/pub/shell/zsh/)
    mydit(îÏÒ×ÅÇÉÑ)       url(ftp://ftp.uit.no/pub/unix/shells/zsh/)(ftp://ftp.uit.no/pub/unix/shells/zsh/)
    mydit(ðÏÌØÛÁ)         url(ftp://sunsite.icm.edu.pl/pub/unix/shells/zsh/)(ftp://sunsite.icm.edu.pl/pub/unix/shells/zsh/)
    mydit(òÕÍÙÎÉÑ)        url(ftp://ftp.roedu.net/pub/mirrors/ftp.zsh.org/pub/zsh/)(ftp://ftp.roedu.net/pub/mirrors/ftp.zsh.org/pub/zsh/)
    mydit()               url(ftp://ftp.kappa.ro/pub/mirrors/ftp.zsh.org/pub/zsh/)(ftp://ftp.kappa.ro/pub/mirrors/ftp.zsh.org/pub/zsh/)
    mydit(óÌÏ×ÅÎÉÑ)       url(ftp://ftp.siol.net/mirrors/zsh/)(ftp://ftp.siol.net/mirrors/zsh/)
    mydit(û×ÅÃÉÑ)         url(ftp://ftp.lysator.liu.se/pub/unix/zsh/)(ftp://ftp.lysator.liu.se/pub/unix/zsh/)
    mydit(÷ÅÌÉËÏÂÒÉÔÁÎÉÑ) url(ftp://ftp.net.lut.ac.uk/zsh/)(ftp://ftp.net.lut.ac.uk/zsh/)
    mydit()               (ÔÁËÖÅ ÐÏ FSP ÎÁ 21)
    mydit()               url(ftp://sunsite.org.uk/packages/zsh/)(ftp://sunsite.org.uk/packages/zsh/)
    mydit(óûá)            url(ftp://uiarchive.uiuc.edu/pub/packages/shells/zsh/)(ftp://uiarchive.uiuc.edu/pub/packages/shells/zsh/)
    mydit()		  url(ftp://ftp.rge.com/pub/shells/zsh/)(ftp://ftp.rge.com/pub/shells/zsh/)
    mydit()               url(ftp://foad.org/pub/zsh/)(ftp://foad.org/pub/zsh/)
    mydit()               url(http://foad.org/zsh/)(http://foad.org/zsh/)
  )
  ðÏÒÔ ÄÌÑ Windows ÒÁÚÒÁÂÏÔÁÎ ÏÔÄÅÌØÎÏ email(Amol Deshpande <amold@microsoft.com>); ÐÏÖÁÌÕÊÓÔÁ, ÓÏÏÂÝÁÊÔÅ ÎÅÐÏÓÒÅÄÓÔ×ÅÎÎÏ ÅÍÕ Ï ÌÀÂÙÈ  ÓÐÅÃÉÆÉÞÎÙÈ ÐÒÏÂÌÅÍÁÈ Windows. ïÎ ÏÓÎÏ×ÁÎ ÎÁ ×ÅÒÓÉÉ 3.0.5, É ×ÏÚÍÏÖÎÏ ÎÅ ÂÕÄÅÔ ÄÁÌØÛÅ ÒÁÚÒÁÂÁÔÙ×ÁÔØÓÑ. ÷Ù ÍÏÖÅÔÅ ÅÇÏ ×ÚÑÔØ Ó:
  description(
    mydit()            url(ftp://ftp.blarg.net/users/amol/zsh)(ftp://ftp.blarg.net/users/amol/zsh)
  )

  äÌÑ ×ÅÒÓÉÉ 4 - ÎÅÔ ÐÏÒÔÁ ÄÌÑ Windows, ÎÏ ÎÏ×ÙÅ ÒÅÌÉÚÙ ËÏÍÐÉÌÉÒÕÀÔÓÑ ÐÏÄ Cygwin - Ó×ÏÂÏÄÎÏ ÄÏÓÔÕÐÎÏÅ UNIX ÏËÒÕÖÅÎÉÅ ÄÌÑ Win32 API. ÷Ù ÍÏÖÅÔÅ ÎÁÊÔÉ ÉÎÆÏÒÍÁÃÉÀ Ï ÎÅÍ ÎÁ:  
  url(http://sourceware.cygnus.com/cygwin)(http://sourceware.cygnus.com/cygwin).

  ôÁËÖÅ ÄÌÑ OS/2 ÐÏÒÔ ÄÏÓÔÕÐÅÎ ÏÔ email(TAMURA Kent <kent@tril.ibm.co.jp>) ÎÁ
  description(
    mydit()		url(http://cgi.din.or.jp/~tkent/tmp/zsh-3.0.0-os2-a01.zip)(http://cgi.din.or.jp/~tkent/tmp/zsh-3.0.0-os2-a01.zip)
  )

  ÷ ÓÅÒÅÄÉÎÅ ÏËÔÑÂÒÑ 1997 ÐÏÑ×ÉÌÓÑ ÁÒÈÉ× ÐÁÔÞÅÊ, ÐÏÓÙÌÁÅÍÙÈ × ÒÁÓÓÙÌËÕ ÒÁÚÒÁÂÏÔÞÉËÏ×. úÁÍÅÔØÔÅ, ÞÔÏ ÎÅ ×ÓÅ ÉÚ ÎÉÈ ÍÏÇÕÔ ÂÙÔØ ÄÏÂÁ×ÌÅÎÙ × ÛÅÌÌ, Á ÎÅËÏÔÏÒÙÅ ÕÖÅ ÄÏÂÁ×ÌÅÎÙ; ×Ù ÍÏÖÅÔÅ ÐÒÏÓÔÏ ÉÓËÁÔØ ÞÔÏ-ÔÏ, ÞÅÇÏ ×Ù ÈÏÔÉÔÅ É ÞÅÇÏ ÎÅÔ × ×ÁÛÅÊ ×ÅÒÓÉÉ ÛÅÌÌÁ. ôÁËÖÅ ÍÏÇÕÔ ÂÙÔØ ÎÅËÏÔÏÒÙÅ ÐÒÅÄÐÏÓÙÌËÉ ÒÁÎÅÅ × ÁÒÈÉ×Å. ïÎ ÍÏÖÅÔ ÂÙÔØ ÎÁÊÄÅÎ (ËÁË ÏÐÉÓÁÎÏ × link(1.1)(11)) ÎÁ:
  description(
    mydit()		url(http://sunsite.dk/zsh/Patches/)(http://sunsite.dk/zsh/Patches/)
  )

sect(õ ÍÅÎÑ ÎÅÔ ÄÏÓÔÕÐÁ ÓÕÐÅÒÐÏÌØÚÏ×ÁÔÅÌÑ: ËÁË ÓÄÅÌÁÔØ, ÞÔÏÂÙ zsh ÚÁÐÕÓËÁÌÓÑ ÐÒÉ ×ÈÏÄÅ × ÓÉÓÔÅÍÕ?)

  ë ÎÅÓÞÁÓÔØÀ, ÎÁ ÍÎÏÇÉÈ ÍÁÛÉÎÁÈ ×Ù ÎÅ ÍÏÖÅÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ mytt(chsh) ÄÌÑ ÔÏÇÏ, ÞÔÏÂÙ ÉÚÍÅÎÉÔØ ×ÁÛ ÛÅÌÌ ÄÏ ÔÅÈ ÐÏÒ, ÐÏËÁ ÆÁÊÌ /etc/shells ÎÅ ÂÕÄÅÔ ÓÏÄÅÒÖÁÔØ ÉÍÅÎÉ ÛÅÌÌÁ, Ô.Å. ÅÓÌÉ Õ ×ÁÓ ÅÓÔØ Ó×ÏÑ ÓÏÂÓÔ×ÅÎÎÁÑ ËÏÐÉÑ zsh, ÔÏ ×ÁÍ ÎÕÖÎÁ ÎÅËÏÔÏÒÁÑ ÈÉÔÒÏÓÔØ, ÞÔÏÂÙ ÉÓÐÏÌØÚÏ×ÁÔØ ÅÇÏ ÐÒÉ ×ÈÏÄÅ × ÓÉÓÔÅÍÕ. (ðÒÏÓÔÏ ÎÁÂÒÁÔØ mytt(zsh) - ÜÔÏ ÎÅ ÓÅÒØÅÚÎÏÅ ÒÅÛÅÎÉÅ, Ô.Ë. ×ÁÛ ÏÒÉÇÉÎÁÌØÎÙÊ ÛÅÌÌ ÖÄÅÔ ÐÏËÁ ×Ù ×ÙÊÄÅÔÅ.)

  ïÓÎÏ×ÎÁÑ ÉÄÅÑ - ÉÓÐÏÌØÚÏ×ÁÔØ mytt(exec <zsh-path>), ÞÔÏÂÙ ÚÁÍÅÎÉÔØ ÔÅËÕÝÉÊ ÛÅÌÌ ÎÁ zsh. þÁÓÔÏ ×Ù ÍÏÖÅÔÅ ÜÔÏ ÓÄÅÌÁÔØ × Ó×ÏÅÍ ÐÒÏÆÉÌÅ, × ÔÁËÏÍ ÆÁÊÌÅ ËÁË .profile (ÅÓÌÉ ×ÁÛ ÛÅÌÌ sh ÉÌÉ ksh) ÉÌÉ .login (ÅÓÌÉ csh). õÂÅÄÉÔÅÓØ, ÞÔÏ Õ ×ÁÓ ÅÓÔØ ÓÐÏÓÏÂ × ÄÁÌØÎÅÊÛÅÍ ÉÚÍÅÎÉÔØ ÆÁÊÌ (ÎÁÐÒÉÍÅÒ ÞÅÒÅÚ FTP) ÄÏ ÔÏÇÏ ËÁË ×Ù ÐÏÐÒÏÂÕÅÔÅ mytt(exec) - ÜÔÏ ÞÁÓÔÏ ÂÙ×ÁÅÔ ÎÅÐÒÏÓÔÉÔÅÌØÎÏ. 

  åÓÌÉ zsh × ÐÏÄÄÉÒÅËÔÏÒÉÉ mytt(bin) × ×ÁÛÅÊ ÄÏÍÁÛÎÅÊ ÄÉÒÅËÔÏÒÉÉ, ÎÁÐÉÛÉÔÅ ÜÔÏ × .profile:
  verb(
    [ -f $HOME/bin/zsh ] && exec $HOME/bin/zsh -l
  )
  ÉÌÉ, ÅÓÌÉ ×ÁÛ ÛÅÌÌ csh ÉÌÉ tcsh, ÎÁÐÉÛÉÔÅ ÜÔÏ × .login:
  verb(
    if ( -f ~/bin/zsh ) exec ~/bin/zsh -l
  )
  (× ÌÀÂÏÍ ÓÌÕÞÁÅ ÐÁÒÁÍÅÔÒ mytt(-l) ÇÏ×ÏÒÉÔ zsh, ÞÔÏ ÏÎ ÉÓÐÏÌØÚÕÅÔÓÑ ËÁË ÏÂÏÌÏÞËÁ ×ÈÏÄÁ × ÓÉÓÔÅÍÕ).

  åÓÌÉ ×Ù ÈÏÔÉÔÅ ÐÒÏ×ÅÒÉÔØ ÒÁÂÏÔÏÓÐÏÓÏÂÎÏÓÔØ ÓÃÅÎÁÒÉÑ, ×Ù ÍÏÖÅÔÅ ÓÄÅÌÁÔØ, ÞÔÏÂÙ ÐÒÉ ×ÈÏÄÅ × ÓÉÓÔÅÍÕ ÂÙÌ ×ÏÐÒÏÓ, ÚÁÐÕÓËÁÔØ ÌÉ zsh. óÌÅÄÕÀÝÉÊ ÓËÒÉÐÔ ÒÁÂÏÔÁÅÔ ÄÌÑ Bourne-like ÛÅÌÌÏ×:
  verb(
    [ -f $HOME/bin/zsh ] && {
            echo "÷×ÅÄÉÔÅ Y, ÞÔÏÂÙ ÚÁÐÕÓÔÉÔØ zsh: \c"
            read line
            [ "$line" = Y ] && exec $HOME/bin/zsh -l
    }
  )
  É ÄÌÑ C-shell-like ÛÅÌÌÏ×:
  verb(
    if ( -f ~/bin/zsh ) then
            echo -n "÷×ÅÄÉÔÅ Y, ÞÔÏÂÙ ÚÁÐÕÓÔÉÔØ zsh: "
            if ( "$<" == Y ) exec ~/bin/zsh -l
    endif
  )
  îÅ ÓÔÏÉÔ ÐÉÓÁÔØ ÜÔÏ (ÄÁÖÅ ÂÅÚ ÐÁÒÁÍÅÔÒÁ -l) × ÆÁÊÌ .cshrc, ÐÏ ËÒÁÊÎÅÊ ÍÅÒÅ, ÎÅ ÐÒÏ×ÅÒÉ×, ÞÔÏ csh ÐÒÅÄÐÏÌÁÇÁÅÔ ÄÅÌÁÔØ, Ô.Ë. ËÁÖÄÙÊ ÜËÚÅÍÐÌÑÒ csh ×ÅÒΣÔÓÑ × zsh É ÓËÒÉÐÔÙ (ÄÁ, Ë ÓÏÖÁÌÅÎÉÅ ÎÅËÏÔÏÒÙÅ ÌÀÄÉ ÐÉÛÕÔ ÔÁË), ×ÙÚ×ÁÎÎÙÅ îå ÐÒÉ ÐÏÍÏÝÉ `csh -f' ÏÔËÁÖÕÔÓÑ ÒÁÂÏÔÁÔØ. åÓÌÉ ×Ù ÈÏÔÉÔÅ, ÞÔÏÂÙ xterm ÚÁÐÕÓËÁÌ zsh, ÉÚÍÅÎÉÔÅ ÐÅÒÅÍÅÎÎÕÀ ÏËÒÕÖÅÎÉÑ SHELL ÎÁ ÐÏÌÎÙÊ ÐÕÔØ Ë ÛÅÌÌÕ zsh × ÔÏ ÖÅ ×ÒÅÍÑ, ËÏÇÄÁ ×Ù ÚÁÐÕÓËÁÅÔÅ zsh (ÆÁËÔÉÞÅÓËÉ, ÜÔÏ ÚÄÒÁ×ÁÑ ÌÏÇÉËÁ, ÄÁÖÅ ÅÓÌÉ ×Ù ÎÅ ÉÓÐÏÌØÚÕÅÔÅ xterm). åÓÌÉ ×Ù ÚÁÐÕÓÔÉÌÉ zsh ÉÚ Ó×ÏÅÇÏ .cshrc, ÍÉÎÉÍÁÌØÎÁÑ ÂÅÚÏÐÁÓÎÏÓÔØ - ÐÒÏ×ÅÒÉÔØ mytt(if ($?prompt) exec zsh).

  åÓÌÉ ÂÙ ×Ù ÈÏÔÅÌÉ, ÞÔÏÂÙ ÛÅÌÌ ÐÏËÁÚÙ×ÁÌÓÑ × ÓÐÉÓËÅ ÐÒÏÃÅÓÓÏ× ËÁË mytt(-zsh), ×Ù ÍÏÖÅÔÅ ÓÄÅÌÁÔØ ÓÓÙÌËÕ (-zsh) ÎÁ (zsh) (Ô.Å. mytt(ln -s ~/bin/zsh ~/bin/-zsh)) É ÉÚÍÅÎÉÔØ exec ÎÁ mytt(exec -zsh).  (õÂÅÄÉÔÅÓØ, ÞÔÏ mytt(-zsh) ÎÁÊÄÅÔÓÑ ÞÅÒÅÚ ÐÅÒÅÍÅÎÎÕÀ path.) üÔÏ ÂÕÄÅÔ ÒÁÂÏÔÁÔØ ÔÁË ÖÅ, ËÁË É ÐÁÒÁÍÅÔÒ mytt(-l). 

  óÎÏÓËÁ: ÅÓÌÉ Õ ×ÁÓ ÎÅÔ ÄÏÓÔÕÐÁ ÓÕÐÅÒÐÏÌØÚÏ×ÁÔÅÌÑ, ÕÂÅÄÉÔÅÓØ, ÞÔÏ zsh ÚÁÎÅÓÅÎ × /etc/shells ÎÁ ×ÓÅÈ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÈ ÍÁÛÉÎÁÈ, ×ËÌÀÞÁÑ NIS ËÌÉÅÎÔÙ, ÉÎÁÞÅ Õ ×ÁÓ ÂÕÄÕÔ ÐÒÏÂÌÅÍÙ Ó FTP ÄÏÓÔÕÐÏÍ Ë ÜÔÉÍ ÍÁÛÉÎÁÍ.

chapter(þÅÍ zsh ÏÔÌÉÞÁÅÔÓÑ ÏÔ ...?)

  ëÁË ÕÖÅ ÕÐÏÍÉÎÁÌÏÓØ ÒÁÎÅÅ, zsh ÂÏÌÅÅ ÐÏÈÏÖ ÎÁ ksh, × ÔÏ ÖÅ ×ÒÅÍÑ ÍÎÏÖÅÓÔ×Ï ÄÏÐÏÌÎÅÎÉÊ ÐÏÒÁÄÕÀÔ ÐÏÌØÚÏ×ÁÔÅÌÅÊ csh. úÄÅÓØ ÐÒÉ×ÅÄÅÎÙ ÂÏÌÅÅ ÄÅÔÁÌØÎÙÅ Ó×ÅÄÅÎÉÑ. ðÏÓÍÏÔÒÉÔÅ ÔÁËÖÅ ÓÔÁÔØÀ `òÁÚÌÉÞÉÑ UNIX ÛÅÌÌÏ× É ËÁË ÉÚÍÅÎÉÔØ ×ÁÛ ÛÅÌÌ' (`UNIX shell differences and how to change your shell)', ÞÁÓÔÏ ÒÁÚÍÅÝÁÅÍÕÀ × USENET ÇÒÕÐÐÅ comp.unix.shell.

sect(ïÔÌÉÞÉÑ ÏÔ sh É ksh)
label(21)

  âÏÌØÛÉÎÓÔ×Ï ×ÏÚÍÏÖÎÏÓÔÅÊ ksh (ÓÌÅÄÏ×ÁÔÅÌØÎÏ ÔÁËÖÅ É sh) ÐÒÉÓÕÔÓÔ×ÕÀÔ × zsh; ÐÒÏÂÌÅÍÙ ÍÏÇÕÔ ×ÏÚÎÉËÎÕÔØ, ÐÏÔÏÍÕ ÞÔÏ ÏÒÇÁÎÉÚÁÃÉÑ ÉÈ ÓÌÅÇËÁ ÒÁÚÌÉÞÁÅÔÓÑ. úÁÍÅÔØÔÅ ÔÁËÖÅ, ÞÔÏ ÎÅ ×ÓÅ ÆÕÎËÃÉÉ ksh ÏÄÉÎÁËÏ×Ù. ñ ÏÓÎÏ×Ù×ÁÌÓÑ ÎÁ ×ÅÒÓÉÉ ksh 11/16/88f; ÏÔÌÉÞÉÑ ÏÔ ksh93 ÂÕÄÕÔ ÂÏÌÅÅ ÓÕÝÅÓÔ×ÅÎÎÙ.

  ðÏÄ×ÅÄ£Í ÉÔÏÇ:
  enumerate(
  myeit() ÐÏ ×ÓÅÍ ÐÁÒÁÍÅÔÒÁÍ ÎÅÂÅÚÏÐÁÓÎÏ ÄÏÐÕÓËÁÔØ ÏÂÙÞÎÙÊ ÚÁÐÕÓË zsh ÐÏÌØÚÏ×ÁÔÅÌÅÍ, Ô.Ë. ÏÎ ÂÕÄÅÔ ×ÅÓÔÉ ÓÅÂÑ ËÁË sh ÉÌÉ ksh ÓÏ×ÍÅÓÔÉÍÙÊ;
  myeit() ×ÙÚÙ×ÁÑ zsh ËÁË sh ÉÌÉ ksh (ÉÌÉ ÅÓÌÉ ËÁÖÄÙÊ ÉÚ ÎÉÈ Ñ×ÌÑÅÔÓÑ ÓÉÍ×ÏÌÉÞÅÓËÏÊ ÓÓÙÌËÏÊ ÎÁ zsh) ÎÕÖÎÏ ÚÁÄÁ×ÁÔØ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÅ ÐÁÒÁÍÅÔÒÙ ÄÌÑ ÌÕÞÛÅÊ ÓÏ×ÍÅÓÔÉÍÏÓÔÉ (ÉÚ ÓÁÍÏÇÏ zsh, ×ÙÚÏ× mytt(ARGV0=sh zsh) ÂÕÄÅÔ ÔÏÖÅ ÒÁÂÏÔÁÔØ);
  myeit() ÎÁÞÉÎÁÑ Ó ×ÅÒÓÉÉ 3.0 ÕÌÕÞÛÁÅÔÓÑ ÓÏ×ÍÅÓÔÉÍÏÓÔØ sh, ÐÏÜÔÏÍÕ zsh ÔÅÐÅÒØ ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ Ó GNU configure ÉÌÉ perl Configure;
  myeit() ÓÔÅÐÅÎØ ÓÏ×ÍÅÓÔÉÍÏÓÔÉ Ó ksh ÔÁËÖÅ ÎÁ ×ÙÓÏÔÅ, ÎÏ ÎÅÓËÏÌØËÏ ×ÅÝÅÊ ÏÔÓÕÔÓÔ×ÕÀÔ: ÎÁÐÒÉÍÅÒ, ÂÏÌÅÅ ÓÌÏÖÎÙÅ ÆÏÒÍÙ ×ÙÒÁÖÅÎÉÊ ÒÁÚÌÉÞÎÙ ÄÌÑ ×ÅÒÓÉÊ ÄÏ 3.1.3 --- ÓÍÏÔÒÉÔÅ ÂÏÌÅÅ ÄÅÔÁÌØÎÙÊ ÓÐÉÓÏË ÎÉÖÅ;
  myeit() ÔÁËÖÅ, Ó ×ÅÒÓÉÉ 3.0 ÄÏÓÔÕÐÎÁ ËÏÍÁÎÄÁ `emulate': `emulate ksh' É `emulate sh' ÚÁÄÁÀÔ ÒÁÚÌÉÞÎÙÅ ÐÁÒÁÍÅÔÒÙ ÔÏÞÎÏ ÔÁË ÖÅ ËÁË É ÉÚÍÅÎÅÎÉÅ ÏÄÎÏÂÕË×ÅÎÎÙÈ ÆÌÁÇÏ×, ËÁË ÅÓÌÉ ÂÙ ÛÅÌÌ ÂÙÌ ÂÙ ×ÙÚ×ÁÎ Ó ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÍ ÉÍÅÎÅÍ. ÷ËÌÀÞÅÎÉÅ ËÏÍÁÎÄÙ `emulate sh; setopt localoptions' × ÛÅÌÌ-ÆÕÎËÃÉÉ ×ËÌÀÞÉÔ ÜÍÕÌÑÃÉÀ sh ÔÏÌØËÏ ÄÌÑ ÜÔÏÊ ÆÕÎËÃÉÉ. ÷ ×ÅÒÓÉÉ 4 (É × 3.0.6 ÄÏ 8), ÜÔÏ ÍÏÖÅÔ ÂÙÔØ ÚÁÐÉÓÁÎÏ ËÁË `emulate -L sh'.
  )
  ëÌÁÓÓÉÞÅÓËÏÅ ÒÁÚÌÉÞÉÅ - ÒÁÚÂÉ×ÁÎÉÅ ÎÁ ÓÌÏ×Á, ÏÂÓÕÖÄÁÅÍÏÅ × ×ÏÐÒÏÓÅ link(3.1)(31); ÜÔÏ ÚÁÈ×ÁÔÙ×ÁÅÔ ÏÞÅÎØ ÍÎÏÇÉÈ ÎÁÞÉÎÁÀÝÉÈ ÐÏÌØÚÏ×ÁÔÅÌÅÊ zsh. ëÁË ÐÒÁ×ÉÌÏ, ÜÔÏ ÁËÔÕÁÌØÎÁÑ ÏÛÉÂËÁ, ËÁÓÁÀÝÁÑÓÑ ËÁÖÄÏÇÏ ÄÒÕÇÏÇÏ ÛÅÌÌÁ. ïÔ×ÅÔ - ÜÔÏ ÚÁÄÁÔØ tt(SH_WORD_SPLIT) ÄÌÑ ÏÂÒÁÔÎÏÊ ÓÏ×ÍÅÓÔÉÍÏÓÔÉ. óÌÅÄÕÀÝÅÅ ËÌÁÓÓÉÞÅÓËÏÅ ÒÁÚÌÉÞÉÅ - ÎÅ ÉÍÅÀÝÁÑ ÓÅÂÅ ÒÁ×ÎÙÈ ÆÏÒÍÁ ÕÎÉ×ÅÒÓÁÌÉÚÁÃÉÉ ÉͣΠ- ÐÒÉÞÉÎÁ ÏÔËÁÚÁ ËÏÍÁÎÄ; ÚÁÄÁÊÔÅ tt(NO_NOMATCH) ÄÌÑ ÜÔÏÇÏ.
  
  ÷ÏÔ ÓÐÉÓÏË ÒÁÚÌÉÞÎÙÈ ÐÁÒÁÍÅÔÒÏ×, Ó ËÏÔÏÒÙÍÉ ×ÏÚÒÁÓÔ£Ô ksh-ÓÏ×ÍÅÓÔÉÍÏÓÔØ, ÈÏÔÑ ÍÏÇÕÔ ÕÍÅÎØÛÉÔØÓÑ ÓÐÏÓÏÂÎÏÓÔÉ zsh: ÞÉÔÁÊÔÅ ÒÕËÏ×ÏÄÓÔ×Ï ÐÏ ÐÁÒÁÍÅÔÒÁÍ tt(GLOB_SUBST), tt(IGNORE_BRACES) (ÈÏÔÑ ÒÁÓÛÉÒÅÎÉÅ ÓËÏÂÏË ×ÓÔÒÅÞÁÅÔÓÑ × ÎÅÓËÏÌØËÉÈ ×ÅÒÓÉÑÈ ksh), tt(KSH_ARRAYS), tt(KSH_GLOB), tt(KSH_OPTION_PRINT), tt(LOCAL_OPTIONS), tt(NO_BAD_PATTERN), tt(NO_BANG_HIST), tt(NO_EQUALS), tt(NO_HUP), tt(NO_NOMATCH), tt(NO_RCS), tt(NO_SHORT_LOOPS), tt(PROMPT_SUBST), tt(RM_STAR_SILENT), tt(POSIX_BUILTINS), tt(SH_FILE_EXPANSION), tt(SH_GLOB), tt(SH_OPTION_LETTERS), tt(SH_WORD_SPLIT) (ÓÍ. ×ÏÐÒÏÓ link(3.1)(31)) É tt(SINGLE_LINE_ZLE).
  úÁÍÅÔØÔÅ, ÞÔÏ ×Ù ÍÏÖÅÔÅ ×ÙËÌÀÞÉÔØ ÌÀÂÙÅ ×ÓÔÒÏÅÎÎÙÅ ËÏÍÁÎÄÙ, ËÏÔÏÒÙÅ ×ÁÍ ÎÅ ÎÕÖÎÙ. åÓÌÉ ×ÙÚ×ÁÔØ ËÁË `ksh', ÛÅÌÌ ÐÏÐÙÔÁÅÔÓÑ ÚÁÄÁÔØ ÐÏÄÈÏÄÑÝÉÅ ÐÁÒÁÍÅÔÒÙ.

  ÷ÏÔ ÎÅÓËÏÌØËÏ ÏÔÌÉÞÉÊ ÏÔ ksh - × ÏÓÎÏ×ÎÏÍ ÏÎÉ ÓÕÝÅÓÔ×ÅÎÎÙ ÄÌÑ ÐÒÏÇÒÁÍÍÉÓÔÏ× ksh, ÎÅËÏÔÏÒÙÅ ÉÚ ÎÉÈ ÍÏÇÕÔ ÂÙÔØ ×ÏÓÐÒÉÎÑÔÙ ËÁË ÏÛÉÂËÉ. úÁÍÅÔØÔÅ, ÞÔÏ ÜÔÏÔ ÓÐÉÓÏË ÕÍÙÛÌÅÎÎÏ ÐÏÌÎÙÊ É ÂÏÌØÛÉÎÓÔ×Ï ÚÎÁÞÅÎÉÊ ÄÏ×ÏÌØÎÏ ÎÅÚÎÁÞÉÔÅÌØÎÙ. ôÁËÉÅ ÏÔÍÅÔËÉ `*' ÐÒÅÄÓÔÁ×ÌÑÀÔ ÓÔÉÌØ ksh, ÅÓÌÉ ÛÅÌÌ ×ÙÚ×ÁÎ Ó ÉÍÅÎÅÍ `ksh' ÉÌÉ ÅÓÌÉ ÄÅÊÓÔ×ÕÅÔ `emulate ksh'. çÌÁ×ÎÙÅ ÓÌÏ×Á, ÏÔÎÏÓÑÝÉÅÓÑ Ë ÐÁÒÁÍÅÔÒÁÍ ÛÅÌÌÁ, ÐÏÄÞ£ÒËÎÕÔÙ. 

  itemize(
  it() óÉÎÔÁËÓÉÓ:
  itemize(
    it() * òÁÚÄÅÌÅÎÉÑ ÎÁ ÓÌÏ×Á: ÓÍ. ×ÏÐÒÏÓ link(3.1)(31).
    it() * íÁÓÓÉ×Ù (ÐÏ ÕÍÏÌÞÁÎÉÀ) ÂÏÌØÛÅ ÐÏÈÏÖÉ ÎÁ ÍÁÓÓÉ×Ù csh, ÞÅÍ ksh: ÉÎÄÅËÓÙ ÎÁÞÉÎÁÀÔÓÑ Ó 1, ÎÅ Ó 0; tt(array[0]) ÏÔÎÏÓÉÔÓÑ Ë tt(array[1]); mytt($array) ÏÔÎÏÓÉÔÓÑ ËÏ ×ÓÅÍÕ ÍÁÓÓÉ×Õ, ÎÅ Ë tt($array[0]); ÓËÏÂËÉ ÌÉÛÎÉÅ: tt($a[1] == ${a[1]}), É Ô.Ä. úÁÄÁÊÔÅ ÐÁÒÁÍÅÔÒ tt(KSH_ARRAYS) ÄÌÑ ÓÏ×ÍÅÓÔÉÍÏÓÔÉ.
    it() óÏÐÒÏÃÅÓÓÙ, ÕÓÔÁÎÏ×ÌÅÎÎÙÅ mytt(coproc); mytt(|&) ×ÅÄÕÔ ÓÅÂÑ ÔÁË ÖÅ, ËÁË É × csh. ïÂÒÁÂÏÔËÁ ÆÁÊÌÏ×ÙÈ ÄÅÓËÒÉÐÔÏÒÏ× ÓÏÐÒÏÃÅÓÓÁ ÔÏÖÅ ÒÁÚÌÉÞÁÅÔÓÑ.
    it() ÷ mytt(cmd1 && cmd2 &), ÔÏÌØËÏ mytt(cmd2) ×ÍÅÓÔÏ ×ÓÅÇÏ ×ÙÒÁÖÅÎÉÑ ÚÁÐÕÓÔÉÔÓÑ × ÆÏÎÅ zsh. ÷ ÒÕËÏ×ÏÄÓÔ×Å ÎÁÐÉÓÁÎÏ, ÞÔÏ ÜÔÏ ÏÛÉÂËÁ. éÓÐÏÌØÚÕÊÔÅ mytt({ cmd1 && cmd2 } &) ÄÌÑ ÆÏÎÁ.
  )
  it() ðÏÄÓÔÁÎÏ×ËÁ × ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÅ, ÕÎÉ×ÅÒÓÁÌÉÚÁÃÉÑ ÉÍÅÎ É Ô.Ä.:
  itemize(
    it()* îÅ×ÏÚÍÏÖÎÏÓÔØ ÓÏÐÏÓÔÁ×ÉÔØ ÏÂÒÁÚÅà ÕÎÉ×ÅÒÓÁÌØÎÏÇÏ ÉÍÅÎÉ ×ÙÚÏ×ÅÔ ÏÛÉÂËÕ (ÉÓÐÏÌØÚÕÊÔÅ tt(NO_NOMATCH)).
    it()* òÅÚÕÌØÔÁÔÙ ÐÏÄÓÔÁÎÏ×ËÉ ÔÒÁËÔÕÀÔÓÑ ËÁË ÏÂÙÞÎÙÊ ÔÅËÓÔ: mytt(foo="*"; print $foo) ÎÁÐÅÞÁÔÁÅÔ ×ÓÅ ÆÁÊÌÙ × ksh, ÎÏ mytt(*) × zsh ÓÌÅÄÕÅÔ ÉÓÐÏÌØÚÏ×ÁÔØ tt(GLOB_SUBST), ÞÔÏÂÙ ÄÏÓÔÉÞØ ÔÏÇÏ ÖÅ ÒÅÚÕÌØÔÁÔÁ.
    it()* tt($PSn) ÎÅ ÄÅÌÁÅÔ ÐÁÒÁÍÅÔÒÉÞÅÓËÕÀ ÐÏÄÓÔÁÎÏ×ËÕ ÐÏ ÕÍÏÌÞÁÎÉÀ (ÉÓÐÏÌØÚÕÊÔÅ tt(PROMPT_SUBST)).
    it()* óÔÁÎÄÁÒÔÎÁÑ ÕÎÉ×ÅÒÓÁÌÉÚÁÃÉÑ ÉÍÅÎ ÎÅ ÐÏÚ×ÏÌÑÅÔ ÏÂÒÁÚÃÙ × ÓÔÉÌÅ ksh.
        üË×É×ÁÌÅÎÔÎÏÓÔØ:

----------------------------------------------------------------------
      ksh              zsh         úÎÁÞÅÎÉÑ
     ------           ------       ---------
     !(foo)            ^foo        þÔÏ-ÌÉÂÏ, ËÒÏÍÅ foo.
                or   foo1~foo2     þÔÏ-ÌÉÂÏ ÐÏ ÏÂÒÁÚÃÕ foo1 , ÎÏ ÎÅ foo2[1].
@(foo1|foo2|...)  (foo1|foo2|...)  ïÄÉÎ ÉÚ foo1 ÉÌÉ foo2 ÉÌÉ ...
     ?(foo)           (foo|)       îÏÌØ ÉÌÉ ÏÄÉÎ ÓÌÕÞÁÊ foo.
     *(foo)           (foo)#       îÏÌØ ÉÌÉ ÂÏÌØÛÅ ÓÌÕÞÁÅ× foo.
     +(foo)           (foo)##      ïÄÉÎ ÉÌÉ ÂÏÌØÛÅ ÓÌÕÞÁÅ× foo.
----------------------------------------------------------------------

      æÏÒÍÙ mytt(^), mytt(~) É mytt(#) (ÎÏ ÎÅ mytt(|)) ÔÒÅÂÕÀÔ tt(EXTENDED_GLOB). îÁÞÉÎÁÑ Ó ×ÅÒÓÉÉ 3.1.3, ÆÏÒÍÙ ksh ÐÏÌÎÏÓÔØÀ ÐÏÄÄÅÒÖÉ×ÁÀÔÓÑ, ËÏÇÄÁ ÚÁÄÁÎ ÐÁÒÁÍÅÔÒ tt(KSH_GLOB); ÄÌÑ ÐÒÅÄÙÄÕÝÉÈ ×ÅÒÓÉÊ ×Ù ÄÏÌÖÎÙ ÐÏÌØÚÏ×ÁÔØÓÑ ÄÁÎÎÏÊ ÔÁÂÌÉÃÅÊ.

      [1] úÁÍÅÔØÔÅ, ÞÔÏ ÓÉÍ×ÏÌ mytt(~) - ÜÔÏ ÔÏÌØËÏ ÏÐÅÒÁÔÏÒ ÕÎÉ×ÅÒÓÁÌÉÚÁÃÉÉ ÉÍ£Î, ÉÍÅÀÝÉÊ ÍÅÎØÛÉÊ ÐÒÉÏÒÉÔÅÔ, ÞÅÍ mytt(/). îÁÐÒÉÍÅÒ, mytt(**/foo~*bar*) ÕËÁÚÙ×ÁÅÔ ÎÁ ÌÀÂÙÅ ÆÁÊÌÙ × ÐÏÄÄÉÒÅËÔÏÒÉÉ mytt(foo), ËÒÏÍÅ mytt(bar), ×ÓÔÒÅÞÁÀÝÉÈÓÑ ÐÏ ÐÕÔÉ (Ô.Å. mytt(users/barstaff/foo) ÂÕÄÕÔ ÉÓËÌÀÞÅÎÙ ÏÐÅÒÁÔÏÒÏÍ mytt(~)). ëÁË mytt(**) ÏÐÅÒÁÔÏÒ ÎÅ ÍÏÖÅÔ ÂÙÔØ ÓÇÒÕÐÐÉÒÏ×ÁÎ (× ËÒÕÇÌÙÈ ÓËÏÂËÁÈ ÏÎ ÔÒÁËÔÕÅÔÓÑ ËÁË mytt(*)), ÜÔÏ ÎÕÖÎÏ, ÞÔÏÂÙ ÉÓËÌÀÞÉÔØ ÎÅÓËÏÌØËÏ ÐÏÄÄÉÒÅËÔÏÒÉÊ ÉÚ ÏÂÒÁÚÃÁ mytt(**).
    it() ðÒÉÓ×ÁÉ×ÁÎÉÑ ÂÅÚ ËÁ×ÙÞÅË ÐÒÏÉÚ×ÏÄÑÔ ÒÁÓÛÉÒÅÎÉÅ ÉÍÅÎÉ ÆÁÊÌÁ ÐÏÓÌÅ Ä×ÏÅÔÏÞÉÑ mytt(:) (ÐÒÅÄÎÁÚÎÁÞÁÅÔÓÑ ÄÌÑ tt(PATH)). 
    it() mytt(typeset) É mytt(integer) ÉÍÅÀÔ ÓÐÅÃÉÁÌØÎÏÅ ÐÏ×ÅÄÅÎÉÅ ÄÌÑ ÐÒÉÓ×ÁÉ×ÁÎÉÊ × ksh, ÎÏ ÎÅ × zsh. îÁÐÒÉÍÅÒ, ×ÏÔ ÜÔÏ ÎÅ ÒÁÂÏÔÁÅÔ × zsh:
    verb(
	    integer k=$(wc -l ~/.zshrc)
    )
        ÐÏÔÏÍÕ ÞÔÏ ×ÏÚ×ÒÁÝÁÅÍÏÅ ÚÎÁÞÅÎÉÅ ÉÚ tt(wc) ×ËÌÀÞÁÅÔ ×ÅÄÕÝÉÅ ÐÒÏÂÅÌÙ, ËÏÔÏÒÙÅ ÒÁÚÄÅÌÑÀÔ ÓÌÏ×Á. Ksh ÔÒÁËÔÕÅÔ ÐÒÉÓ×ÁÉ×ÁÎÉÅ ÓÐÅÃÉÁÌØÎÏ ËÁË ÏÄÎÏ ÓÌÏ×Ï.
  )
  it() ÷ÙÐÏÌÎÅÎÉÅ ËÏÍÁÎÄ:
  itemize(
    it()* îÅÔ ÐÅÒÅÍÅÎÎÏÊ tt($ENV) (ÉÓÐÏÌØÚÕÊÔÅ tt(/etc/zshrc), tt(~/.zshrc); Á ÔÁËÖÅ tt($ZDOTDIR)).
    it() tt($PATH) ÎÅ ÐÒÏÓÍÁÔÒÉ×ÁÅÔÓÑ ÄÌÑ ËÏÍÁÎÄ, ÓÐÅÃÉÁÌØÎÏ ×ÙÚ×ÁÎÎÙÈ ÂÅÚ -c.
  )
  it() ðÓÅ×ÄÏÎÉÍÙ É ÆÕÎËÃÉÉ:
  itemize(
    it() ÷ÁÖÅÎ ÐÏÒÑÄÏË × ËÏÔÏÒÏÍ ÏÐÒÅÄÅÌÑÀÔÓÑ ÐÓÅ×ÄÏÎÉÍÙ É ÆÕÎËÃÉÉ: ÆÕÎËÃÉÉ, ÏÐÒÅÄÅÌ£ÎÎÙÅ Ó ÐÏÍÏÝØÀ (), ÒÁÓÛÉÒÑÀÔ ÐÓÅ×ÄÏÎÉÍÙ -- ÓÍ. ×ÏÐÒÏÓ link(2.3)(23).
    it() ðÓÅ×ÄÏÎÉÍÙ É ÆÕÎËÃÉÉ ÎÅ ÍÏÇÕÔ ÜËÓÐÏÒÔÉÒÏ×ÁÔØÓÑ.
    it() îÅÔ ÏÔÓÌÅÖÉ×ÁÅÍÙÈ ÐÓÅ×ÄÏÎÉÍÏ×: ÈÅÛÉÒÏ×ÁÎÉÅ ËÏÍÁÎÄ ÉÈ ÚÁÍÅÎÑÅÔ.
    it() éÓÐÏÌØÚÏ×ÁÎÉÅ ÐÓÅ×ÄÏÎÉÍÏ× ÄÌÑ ÐÒÉ×ÑÚËÉ Ë ËÌÁ×ÉÛÁÍ ÚÁÍÅÎÅÎÏ ÎÁ `bindkey'.
    it()* ðÁÒÁÍÅÔÒÙ ÎÅ ÌÏËÁÌØÎÙ ÄÌÑ ÆÕÎËÃÉÊ (ÉÓÐÏÌØÚÕÊÔÅ LOCAL_OPTIONS; ÚÁÍÅÔØÔÅ, ÞÔÏ ÜÔÏ ×ÓÅÇÄÁ ÍÏÖÅÔ ÂÙÔØ ×ÙËÌÀÞÅÎÏ ÌÏËÁÌØÎÏ, ÞÔÏÂÙ ÐÅÒÅÄÁÔØ ÐÁÒÁÍÅÔÒÙ ÏÔ ÆÕÎËÃÉÉ ÎÁ ×ÙÚÙ×ÁÅÍÙÊ ÕÒÏ×ÅÎØ).
    it() æÕÎËÃÉÉ, ÏÐÒÅÄÅÌ£ÎÎÙÅ ËÁË `function funcname { body }' ×ÅÄÕÔ ÓÅÂÑ ÔÏÞÎÏ ÔÁË ÖÅ, ËÁË É `funcname () { body }'. ÷ ksh ÐÏÓÌÅÄÎÉÅ ×ÅÄÕÔ ÓÅÂÑ ËÁË ÅÓÌÉ ÂÙ ÉÈ ÔÅÌÏ ÂÙÌÏ ÐÒÏÞÉÔÁÎÏ ÉÚ ÆÁÊÌÁ, ÎÁÞÉÎÁÀÝÅÇÏÓÑ Ó `.', É ÔÏÌØËÏ ÐÏÓÌÅÄÎÉÅ ×ÅÄÕÔ ÓÅÂÑ ÄÅÊÓÔ×ÉÔÅÌØÎÏ ËÁË ÆÕÎËÃÉÉ.
  )
  it() ðÒÅÒÙ×ÁÎÉÑ É ÓÉÇÎÁÌÙ:
  itemize(
    it()* ðÒÅÒÙ×ÁÎÉÑ ÎÅ ÌÏËÁÌØÎÙ ÄÌÑ ÆÕÎËÃÉÊ. ðÁÒÁÍÅÔÒ LOCAL_TRAPS ÄÏÓÔÕÐÅÎ Ó ×ÅÒÓÉÉ 3.1.6.
    it()   TRAPERR ÓÔÁÌ TRAPZERR (ÜÔÏ ÂÙÌÏ ×ÙÚ×ÁÎÏ UNICOS, ËÏÔÏÒÙÊ ÉÍÅÅÔ SIGERR).
  )
  it()  òÅÄÁËÔÉÒÏ×ÁÎÉÅ:
  itemize(
    it() ðÁÒÁÍÅÔÒÙ tt(gmacs), tt(viraw) - ÎÅ ÐÏÄÄÅÒÖÉ×ÁÀÔÓÑ. éÓÐÏÌØÚÕÊÔÅ bindkey, ÞÔÏÂÙ ÉÚÍÅÎÉÔØ ÐÏ×ÅÄÅÎÉÅ ÒÅÄÁËÔÏÒÁ: mytt(set -o {emacs,vi}) ÓÔÁÌÏ `bindkey -{e,v}', ÈÏÔÑ `set -o emacs' É `set -o vi' ÐÏÄÄÅÒÖÉ×ÁÀÔÓÑ ÄÌÑ ÓÏ×ÍÅÓÔÉÍÏÓÔÉ; ÄÌÑ gmacs - ÐÅÒÅÊÄÉÔÅ × ÒÅÖÉÍ emacs É ÉÓÐÏÌØÚÕÊÔÅ `bindkey \^t gosmacs-transpose-characters'.
    it() ðÁÒÁÍÅÔÒ mytt(keyword) - ÎÅ ÓÕÝÅÓÔ×ÕÅÔ É mytt(-k) - ×ÍÅÓÔÏ ÉÎÔÅÒÁËÔÉ×ÎÙÈ ËÏÍÍÅÎÔÁÒÉÅ×. (mytt(keyword) - ÔÁË ÖÅ ÉÓÞÅÚÌÁ × ÎÅÄÁ×ÎÉÈ ×ÅÒÓÉÑÈ ksh.)
    it()* õÐÒÁ×ÌÅÎÉÅ ÉÓÔÏÒÉÅÊ × ÍÎÏÇÏÞÉÓÌÅÎÎÙÈ ÛÅÌÌÁÈ ÒÁÚÌÉÞÎÏ: ÉÓÔÏÒÉÑ ÎÅ ÓÏÈÒÁÎÑÅÔÓÑ É ÎÅ ×ÏÓÓÔÁÎÁ×ÌÉ×ÁÅÔÓÑ ÐÏÓÌÅ ËÁÖÄÏÊ ËÏÍÁÎÄÙ. ðÁÒÁÍÅÔÒ tt(SHARE_HISTORY) ÐÏÑ×ÉÌÓÑ × ×ÅÒÓÉÉ 3.1.6 É ÏÎ ÚÁÄÁ£ÔÓÑ × ÒÅÖÉÍÅ ksh ÓÏ×ÍÅÓÔÉÍÏÓÔÉ, ÞÔÏÂÙ ÉÓÐÒÁ×ÉÔØ ÜÔÏ.
    it() mytt(\) ÎÅ ÜËÒÁÎÉÒÕÅÔ ÓÉÍ×ÏÌÙ (ÉÓÐÏÌØÚÕÊÔÅ mytt(^V)).
    it() îÅ ×ÓÅ ÐÒÉ×ÑÚÙ×ÁÎÉÑ ksh ÚÁÄÁÀÔÓÑ (ÎÁÐÒÉÍÅÒ mytt(<ESC>#); ÐÒÏÂÕÊÔÅ mytt(<ESC>q)).
    it()* mytt(#) - × ÉÎÔÅÒÁËÔÉ×ÎÏÍ ÛÅÌÌÅ ÐÏ ÕÍÏÌÞÁÎÉÀ îå ÔÒÁËÔÕÅÔÓÑ ËÁË ËÏÍÍÅÎÔÁÒÉÊ. 
  )
  it()  ÷ÓÔÒÏÅÎÎÙÅ ËÏÍÁÎÄÙ:
  itemize(
    it() îÅËÏÔÏÒÙÅ ×ÓÔÒÏÅÎÎÙÅ ËÏÍÁÎÄÙ (tt(r), tt(autoload), tt(history), tt(integer) ...) ÂÙÌÉ ÐÓÅ×ÄÏÎÉÍÁÍÉ × ksh. 
    it() ÷ÓÔÒÏÅÎÎÏÊ ËÏÍÁÎÄÙ newgrp ÎÅÔ: ÉÓÐÏÌØÚÕÊÔÅ mytt(alias newgrp="exec newgrp")
    it() mytt(jobs) ÎÅ ÉÍÅÅÔ ÆÌÁÇÁ mytt(-n).
  )
  it()  äÒÕÇÉÅ ÏÓÏÂÅÎÎÏÓÔÉ:
  itemize(
    it() mytt(select) ×ÓÅÇÄÁ ÐÏËÁÚÙ×ÁÅÔ ÚÁÎÏ×Ï ÓÐÉÓÏË ×ÙÂÏÒÁ ÎÁ ËÁÖÄÏÍ ÃÉËÌÅ.
  )
  )

sect(óÈÏÄÓÔ×Á Ó csh)

  èÏÔÑ ÏÐÒÅÄÅÌ£ÎÎÙÅ ×ÏÚÍÏÖÎÏÓÔÉ ÓÔÒÅÍÑÔÓÑ ÚÁÍÁÎÉÔØ ÐÏÌØÚÏ×ÁÔÅÌÅÊ csh, ÓÉÎÔÁËÓÉÓ, × ÏÂÝÅÍ, ÄÏ×ÏÌØÎÏ ÒÁÚÌÉÞÅÎ É ×ÁÍ, ÎÅÓÏÍÎÅÎÎÏ, ÎÅ ÓÌÅÄÕÅÔ ÐÙÔÁÔØÓÑ ÚÁÐÕÓÔÉÔØ ÓËÒÉÐÔÙ ÂÅÚ ÉÚÍÅÎÅÎÉÑ. c2z ÓÃÅÎÁÒÉÊ ÐÒÅÄÏÓÔÁ×ÌÑÅÔÓÑ Ó ÉÓÈÏÄÎÉËÁÍÉ (× Misc/c2z) ÄÌÑ ÔÏÇÏ, ÞÔÏÂÙ ÐÏÍÏÞØ ÐÒÅÏÂÒÁÚÏ×ÁÔØ ÆÁÊÌÙ .cshrc É .login; ÐÏÓÍÏÔÒÉÔÅ ÔÁËÖÅ ÓÌÅÄÕÀÝÉÊ ×ÏÐÒÏÓ, ËÁÓÁÀÝÉÊÓÑ ÐÓÅ×ÄÏÎÉÍÏ×, ÏÓÏÂÅÎÎÏ ÔÅÈ, ËÏÔÏÒÙÅ Ó ÁÒÇÕÍÅÎÔÁÍÉ.

  Csh-ÓÏ×ÍÅÓÔÉÍÙÅ ÄÏÐÏÌÎÅÎÉÑ ×ËÌÀÞÁÀÔ × ÓÅÂÑ:
  itemize(
  it() ×ÓÔÒÏÅÎÎÙÅ ËÏÍÁÎÄÙ tt(logout), tt(rehash), tt(source), tt((un)limit).
  it() ÆÁÊÌ tt(*rc) ÄÌÑ ÉÎÔÅÒÁËÔÉ×ÎÙÈ ÛÅÌÌÏ×.
  it() ÓÔÅËÉ ÄÉÒÅËÔÏÒÉÊ.
  it() ÐÁÒÁÍÅÔÒÙ tt(cshjunkie*), tt(ignoreeof).
  it() ÐÁÒÁÍÅÔÒ tt(CSH_NULL_GLOB).
  it() tt(>&), tt(|&) É Ô.Ð. ÐÅÒÅÎÁÐÒÁ×ÌÅÎÉÑ.
      (úÁÍÅÔØÔÅ, ÞÔÏ mytt(>file 2>&1) ÓÔÁÎÄÁÒÔÎÁÑ ËÏÍÁÎÄÁ Bourne shell'Á ÄÌÑ csh ÏÎÁ ×ÙÇÌÑÄÉÔ ÔÁË mytt(>&file).)
  it() tt(foreach ...) loops; ÁÌØÔÅÒÎÁÔÉ×ÎÙÊ ÓÉÎÔÁËÓÉÓ ÄÌÑ ÄÒÕÇÉÈ ÃÉËÌÏ×.
  it() áÌØÔÅÒÎÁÔÉ×ÎÙÊ ÓÉÎÔÁËÓÉÓ mytt(if ( ... ) ...), ÈÏÔÑ ÏÎ ÎÅ ÒÁÂÏÔÁÅÔ ËÁË × csh: ÏÎ ÏÖÉÄÁÅÔ ËÏÍÁÎÄÕ × ËÒÕÇÌÙÈ ÓËÏÂËÁÈ, ÔÁËÖÅ ËÁË É mytt(for), mytt(which).
  it() tt($PROMPT) ÔÁËÁÑ ÖÅ ËÁË É tt($PS1), tt($status) ÔÁËÁÑ ÖÅ ËÁË É tt($?), tt($#argv) ÔÁËÁÑ ÖÅ ËÁË É tt($#), .... 
  it() üËÒÁÎÉÒÕÅÍÙÅ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ ÐÉÛÕÔÓÑ ÞÅÒÅÚ tt(%) ÄÌÑ ÐÒÉÇÌÁÛÅÎÉÑ.
  it() óÐÅÃÉÁÌØÎÙÅ ÍÁÓÓÉ×Ù tt($PATH) É Ô.Ð., ÒÁÚÄÅÌ£ÎÎÙÅ Ä×ÏÅÔÏÞÉÑÍÉ, tt($path) ÍÁÓÓÉ×Ù.
  it() ÉÓÔÏÒÉÑ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ tt(!) (ËÏÔÏÒÁÑ ÍÏÖÅÔ ÂÙÔØ ×ÙËÌÀÞÅÎÁ ÞÅÒÅÚ mytt(setopt nobanghist)).
  it() íÁÓÓÉ×Ù ÉÍÅÀÔ ÔÁËÉÅ ÖÅ ×ÏÚÍÏÖÎÏÓÔÉ, ËÁË É × csh (ÓÍ. link(2.1)(21)).
  )

sect(ðÏÞÅÍÕ ÍÏÉ ÐÓÅ×ÄÏÎÉÍÙ ÏÔ csh ÎÅ ÒÁÂÏÔÁÀÔ? (á ÔÁËÖÅ ÄÒÕÇÉÅ ÏÛÉÂËÉ Ó ÐÓÅ×ÄÏÎÉÍÁÍÉ.))
label(23)

  äÌÑ ÎÁÞÁÌÁ, ÐÒÏ×ÅÒØÔÅ, ËÁËÏÊ ÓÉÎÔÁËÓÉÓ ×Ù ÉÓÐÏÌØÚÕÅÔÅ
  verb(
    alias newcmd='list of commands'
  )
  Á ÎÅ
  verb(
    alias newcmd 'list of commands'
  )
  ËÏÔÏÒÙÊ ÎÅ ÂÕÄÅÔ ÒÁÂÏÔÁÔØ. (åÓÌÉ `newcmd' É `list of commands' ÕÖÅ ÏÐÒÅÄÅÌÅÎÙ ËÁË ÐÓÅ×ÄÏÎÉÍÙ.)

  ÷ ÐÒÏÔÉ×ÎÏÍ ÓÌÕÞÁÅ, ×ÁÛÉ ÐÓÅ×ÄÏÎÉÍÙ ×ÏÚÍÏÖÎÏ ÓÏÄÅÒÖÁÔ ÓÓÙÌËÕ ÎÁ ËÏÍÁÎÄÎÕÀ ÓÔÒÏËÕ ÆÏÒÍÙ mytt(\!*), É Ô.Ð. Zsh ÎÅ ÏÐÅÒÉÒÕÅÔ ÔÁËÉÍ ÐÏ×ÅÄÅÎÉÅÍ ÔÁË, ËÁË ÜÔÏ ÄÅÌÁÀÔ ÛÅÌÌ-ÆÕÎËÃÉÉ, ËÏÔÏÒÙÅ ÐÒÅÄÏÓÔÁ×ÌÑÀÔ ÒÅÛÅÎÉÅ ÜÔÏÊ ÐÒÏÂÌÅÍÙ ÂÏÌÅÅ ÓÏÄÅÒÖÁÔÅÌØÎÏ Ó ÄÒÕÇÉÍÉ ÆÏÒÍÁÍÉ ÁÒÇÕÍÅÎÔÏ×. îÁÐÒÉÍÅÒ, csh ÐÓÅ×ÄÏÎÉÍ
  verb(
    alias cd 'cd \!*; echo $cwd'
  )
  ÍÏÖÅÔ ÂÙÔØ ÚÁÍÅΣΠÆÕÎËÃÉÅÊ zsh,
  verb(
    cd() { builtin cd "$@"; echo $PWD; }
  )
  (`builtin' ÓÏÂÝÁÅÔ zsh ÉÓÐÏÌØÚÏ×ÁÔØ Ó×ÏÊ ÓÏÂÓÔ×ÅÎÎÙÊ `cd', ÉÚÂÅÇÁÑ ÂÅÓËÏÎÅÞÎÏÇÏ ÃÉËÌÁ, ÉÌÉ, ×ÏÚÍÏÖÎÏ ÌÕÞÛÅ,
  verb(
    cd() { builtin cd "$@"; print -D $PWD; }
  )
  (ËÏÔÏÒÙÊ ÓÏÄÅÒÖÉÔ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÅ ×ÁÛÅÊ ÄÏÍÁÛÎÅÊ ÄÉÒÅËÔÏÒÉÉ × tt(~)). æÁËÔÉÞÅÓËÉ, ÜÔÁ ÐÒÏÂÌÅÍÁ ÌÕÞÛÅ ÒÅÛÅÎÁ ÏÐÒÅÄÅÌÅÎÉÅÍ ÓÐÅÃÉÁÌØÎÏÊ ÆÕÎËÃÉÉ chpwd() (ÓÍ. ÒÕËÏ×ÏÄÓÔ×Ï). úÁÍÅÔØÔÅ ÔÁËÖÅ, ÞÔÏ mytt(;) × ËÏÎÃÅ ÆÕÎËÃÉÉ ÎÅ ÏÂÑÚÁÔÅÌØÎÏ × zsh, × ÏÔÌÉÞÉÅ ÏÔ ksh ÉÌÉ sh.

  ÷ÏÔ ÒÕËÏ×ÏÄÓÔ×Ï Bart Schaefer ÐÏ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÀ ÐÓÅ×ÄÏÎÉÍÏ× csh ÄÌÑ zsh.
  enumerate(
  myeit() ÷ csh ÐÓÅ×ÄÏÎÉÍ ÓÓÙÌÁÅÔÓÑ ÎÁ ÐÁÒÁÍÅÔÒÙ (tt(\!:1), tt(\!*) É Ô.Ð.), ÔÏÇÄÁ × zsh ×ÁÍ ÎÕÖÎÁ ÆÕÎËÃÉÑ (ÓÓÙÌÁÀÝÁÑÓÑ ÎÁ tt($1), tt($*) É Ô.Ð.). éÎÁÞÅ, ×Ù ÍÏÖÅÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ ÐÓÅ×ÄÏÎÉÍÙ zsh.

  myeit() åÓÌÉ ×Ù ÉÓÐÏÌØÚÕÅÔÅ ÆÕÎËÃÉÀ zsh, ×ÁÍ ÎÕÖÎÏ ÓÓÙÌÁÔØÓÑ ÐÏ ËÒÁÊÎÅÊ ÍÅÒÅ ÎÁ tt($*) × ÔÅÌÅ (×ÎÕÔÒÉ tt({ })). ðÁÒÁÍÅÔÒÙ ÎÅ Á×ÔÏÍÁÔÉÞÅÓËÉ ÐÏÑ×ÌÑÀÔÓÑ ×ÎÕÔÒÉ tt({ }), ÜÔÏ ÓÐÏÓÏ ÉÈ ÄÏÂÁ×ÌÅÎÉÑ × ÐÓÅ×ÄÏÎÉÍ.

  myeit() åÓÌÉ csh ÐÓÅ×ÄÏÎÉÍ ÓÓÙÌÁÅÔÓÑ ÎÁ Ó×Ï£ ÓÏÂÓÔ×ÅÎÎÏÅ ÉÍÑ (tt(alias rm "rm -i")), ÔÏÇÄÁ × ÆÕÎËÃÉÉ zsh ×ÁÍ ÎÕÖÎÏ ËÌÀÞÅ×ÏÅ ÓÌÏ×Ï "command" (function tt(rm()) { command rm -i "$@" }), ÎÏ × ÐÓÅ×ÄÏÎÉÍÁÈ zsh ÏÎÏ ÎÅ ÎÕÖÎÏ (tt(alias rm="rm -i")).

  myeit() åÓÌÉ Õ ×ÁÓ ÅÓÔØ ÐÓÅ×ÄÏÎÉÍÙ, ÓÓÙÌÁÀÝÉÅÓÑ ÄÒÕÇ ÎÁ ÄÒÕÇÁ (tt(alias ls "ls -C"; alias lf "ls -F" ==> lf == ls -C -F)), ÔÏÇÄÁ ×Ù ÄÏÌÖÎÙ ÌÉÂÏ:
  itemize(
    it() ÐÒÅÏÂÒÁÚÏ×ÁÔØ ÉÈ ×ÓÅ × ÆÕÎËÃÉÉ zsh; ÉÌÉ
    it() ÐÏÓÌÅ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÑ, ÕÂÅÄÉÔÅÓØ, ÞÔÏ ×ÁÛ .zshrc ÏÐÒÅÄÅÌÑÅÔ ×ÓÅ ×ÁÛÉ ÐÓÅ×ÄÏÎÉÍÙ ÄÏ ÔÏÇÏ, ËÁË ÏÎ ÏÐÒÅÄÅÌÑÅÔ ËÁËÕÀ-ÌÉÂÏ ÉÚ ÆÕÎËÃÉÊ.
    )

     üÔÉ ÐÅÒ×ÙÅ ÞÅÔÙÒÅ ÐÒÁ×ÉÌÁ - ×Ó£, ÞÔÏ ×ÁÍ ÄÅÊÓÔ×ÉÔÅÌØÎÏ ÎÕÖÎÏ, ÎÏ ×ÏÔ ÅÝ£ ÞÅÔÙÒÅ ÄÌÑ ÂÏÌÅÅ ÓÌÏÖÎÙÈ csh ÐÓÅ×ÄÏÎÉÍÏ×:

  myeit() òÁÓÐÒÅÄÅÌÅÎÉÅ ×ÎÕÔÒÅÎÎÉÈ ÐÅÒÅÍÅÎÎÙÈ csh × zsh ÆÕÎËÃÉÉ (ÐÒÉÎÉÍÁÅÔÓÑ, ÞÔÏ tt(SH_WORD_SPLIT) É tt(KSH_ARRAYS) îå ÚÁÄÁÎÙ × zsh):
    verb(
      csh             zsh
     =====         ==========
     \!*           $*              (ÉÌÉ $argv)
     \!^           $1              (ÉÌÉ $argv[1])
     \!:1          $1
     \!:2          $2              (ÉÌÉ $argv[2], É Ô.Ð.)
     \!$           $*[$#]          (ÉÌÉ $argv[$#], ÉÌÉ $*[-1])
     \!:1-4        $*[1,4]
     \!:1-         $*[1,$#-1]      (ÉÌÉ $*[1,-2])
     \!^-          $*[1,$#-1]
     \!*:q         "$@"
     \!*:x         $=*             ($*:x ÎÅ ÒÁÂÏÔÁÅÔ (ÐÏËÁ))
    )
    
  myeit() úÁÐÏÍÎÉÔÅ, ÞÔÏ ÓÓÙÌÁÔØÓÑ ÎÁ ÐÏÚÉÃÉÀ (tt($1), tt($2), É Ô.Ð.) ÂÏÌØÛÕÀ, ÞÅÍ ÞÉÓÌÏ ÐÁÒÁÍÅÔÒÏ×, - ÜÔÏ îå ÓÉÎÔÁËÓÉÞÅÓËÁÑ ÏÛÉÂËÁ zsh. (îÁÐÒÉÍÅÒ, × csh ÐÓÅ×ÄÏÎÉÍ, ÓÓÙÌÁÀÝÉÊÓÑ ÎÁ tt(\!:5) ÂÕÄÅÔ Ñ×ÌÑÔØÓÑ ÐÒÉÞÉÎÏÊ ÏÛÉÂËÉ, ÅÓÌÉ 4 ÉÌÉ ÍÅÎØÛÅ ËÏÌÉÞÅÓÔ×Ï ÁÒÇÕÍÅÎÔÏ× ÚÁÄÁÎÏ; × zsh ÆÕÎËÃÉÉ, tt($5) - ÜÔÏ ÐÕÓÔÁÑ ÓÔÒÏËÁ, ÅÓÌÉ ÐÁÒÁÍÅÔÒÏ× 4 ÉÌÉ ÍÅÎØÛÅ.)

  myeit() þÔÏÂÙ ÎÁÞÁÔØ ÐÓÅ×ÄÏÎÉÍ Ó ÓÉÍ×ÏÌÁ - (Þ£ÒÔÏÞËÁ, ÄÅÆÉÓ), ÉÓÐÏÌØÚÕÊÔÅ mytt(alias --):
    verb(
             csh                            zsh
        ===============             ==================
        alias - "fg %-"             alias -- -="fg %-"
    )
  myeit() éÚÂÅÇÁÊÔÅ mytt(alias -g) × zsh, ÅÓÌÉ ×Ù ÎÅ Õ×ÅÒÅÎÙ × ÔÏÍ, ÞÔÏ ×Ù ÄÅÌÁÅÔÅ.
  )

  åÝ£ ÏÄÎÁ ÓÅÒØ£ÚÎÁÑ ÐÒÏÂÌÅÍÁ Ó ÐÓÅ×ÄÏÎÉÍÁÍÉ: ÒÁÓÓÍÏÔÒÉÍ
  verb(
    alias l='/bin/ls -F'
    l() { /bin/ls -la "$@" | more }
  )
  mytt(l) × ÏÐÒÅÄÅÌÅÎÉÉ ÆÕÎËÃÉÉ ÎÁÈÏÄÉÔÓÑ × ÐÏÚÉÃÉÉ ËÏÍÁÎÄÙ, ËÏÔÏÒÁÑ ÒÁÓÛÉÒÑÅÔ ÐÓÅ×ÄÏÎÉÍ, ÏÐÒÅÄÅÌÑÀÝÉÊ mytt(/bin/ls) É mytt(-F) ËÁË ÆÕÎËÃÉÀ, ËÏÔÏÒÁÑ ×ÙÚÙ×ÁÅÔ mytt(/bin/ls), ËÏÔÏÒÁÑ × Ó×ÏÀ ÏÞÅÒÅÄØ ×ÙÚÙ×ÁÅÔ ÒÅËÕÒÓÉÀ. üÔÏÇÏ ÍÏÖÎÏ ÉÚÂÅÖÁÔØ, ÅÓÌÉ ×Ù ÉÓÐÏÌØÚÕÅÔÅ mytt(function) ÄÌÑ ÏÐÒÅÄÅÌÅÎÉÑ ÆÕÎËÃÉÉ, ËÏÔÏÒÁÑ ÎÅ ÒÁÓÛÉÒÑÅÔ ÐÓÅ×ÄÏÎÉÍ. üÔÏ ×ÏÚÍÏÖÎÏ ÁÒÇÕÍÅÎÔÉÒÏ×ÁÔØ ÄÌÑ ÄÏÐÏÌÎÉÔÅÌØÎÙÈ ÐÒÅÄÕÐÒÅÖÄÅÎÉÊ ÇÄÅ-ÎÉÂÕÄØ × ÜÔÏÍ ÂÅÓÐÏÒÑÄËÅ.

  ðÒÁ×ÉÌÏ Bart'a Schaefer'a: ïÐÒÅÄÅÌÉÔÅ ÓÎÁÞÁÌÁ ÔÅ ÐÓÅ×ÄÏÎÉÍÙ, ËÏÔÏÒÙÅ ×Ù ÏÖÉÄÁÅÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ × ÔÅÌÅ ÆÕÎËÃÉÊ, ÎÏ ÏÐÒÅÄÅÌÉÔÅ ÆÕÎËÃÉÀ ÓÎÁÞÁÌÁ, ÅÓÌÉ ÐÓÅ×ÄÏÎÉÍ ÉÍÅÅÔ ÔÁËÏÅ ÖÅ ÉÍÑ ËÁË É ÆÕÎËÃÉÑ.

sect(óÈÏÄÓÔ×Á c tcsh)

  (åÓÔÅÓÔ×ÅÎÎÏ, × ÜÔÏÔ ÒÁÚÄÅÌ ÍÏÖÎÏ ÏÔÎÅÓÔÉ ×Ó£, ÞÔÏ ÎÁÐÉÓÁÎÏ ÄÌÑ csh.) ïÐÒÅÄÅÌ£ÎÎÙÅ ×ÏÚÍÏÖÎÏÓÔÉ ÚÁÉÍÓÔ×Ï×ÁÎÙ ÉÚ tcsh, ×ËÌÀÞÁÑ tt($watch), tt(run-help), tt($savehist), ÐÅÒÉÏÄÉÞÎÙÅ ËÏÍÁÎÄÙ É Ô.Ð., ÒÁÓÛÉÒÅÎÎÙÅ ÐÏÄÔ×ÅÒÖÄÅÎÉÑ, ×ÓÔÒÏÅÎÎÙÅ tt(sched) É tt(which). ðÒÏÇÒÁÍÍÉÒÕÅÍÏÅ ÚÁ×ÅÒÛÅÎÉÅ ÂÙÌÏ ÏÓÎÏ×ÁÎÏ ÎÁ tcsh, ÎÏ ÏÎÏ ÐÏÌÎÏÓÔØÀ ÏÔÌÉÞÁÅÔÓÑ ÏÔ tcsh's mytt(complete). (åÓÔØ perl-ÓËÒÉÐÔ, ÎÁÚÙ×ÁÅÍÙÊ tt(lete2ctl), × ÄÉÒÅËÔÏÒÉÉ Misc ÉÓÈÏÄÎÏÇÏ ÄÉÓÔÒÉÂÕÔÉ×Á ÄÌÑ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÑ mytt(complete) × mytt(compctl) ×ÙÒÁÖÅÎÉÑ.) üÔÏ ÎÅ ÏËÏÎÞÁÔÅÌØÎÙÊ ÓÐÉÓÏË: ÎÅËÏÔÏÒÙÅ ×ÏÚÍÏÖÎÏÓÔÉ ÐÏÛÌÉ × ÄÒÕÇÏÍ ÎÁÐÒÁ×ÌÅÎÉÉ.

  åÓÌÉ ×Ù ÐÒÏÐÕÓÔÉÌÉ ÆÕÎËÃÉÀ ÒÅÄÁËÔÏÒÁ tt(run-fg-editor), ÐÏÐÒÏÂÕÊÔÅ ÞÔÏ-ÎÉÂÕÄØ Ó mytt(bindkey -s) (ËÏÔÏÒÁÑ ÐÒÉ×ÑÚÙ×ÁÅÔ ÓÔÒÏËÕ Ë ÎÁÖÁÔÉÀ ËÌÁ×ÉÛÉ), ÎÁÐÒÉÍÅÒ
  verb(
    bindkey -s '^z' '\eqfg %$EDITOR:t\n'
  )
  ËÏÔÏÒÁÑ ÐÏÍÅÝÁÅÔ ÔÅËÕÝÕÀ ÓÔÒÏËÕ × ÓÔÅË É ÐÙÔÁÅÔÓÑ ÐÅÒÅÎÅÓÔÉ ÒÁÂÏÔÕ Ó ÂÁÚÏ×ÙÍ ÉÍÅÎÅÍ ×ÁÛÅÇÏ ÒÅÄÁËÔÏÒÁ ÎÁ ÐÅÒÅÄÎÉÊ ÐÌÁÎ. mytt(bindkey -s) ÄÁ£Ô ÎÅÏÇÒÁÎÉÞÅÎÎÙÅ ×ÏÚÍÏÖÎÏÓÔÉ ÎÁ ÜÔÉÈ ÓÔÒÏËÁÈ. ÷Ù ÍÏÖÅÔÅ ×ÙÐÏÌÎÉÔØ ÌÀÂÕÀ ËÏÍÁÎÄÕ × ÓÅÒÅÄÉÎÅ ÒÅÄÁËÔÉÒÏ×ÁÎÉÑ ÓÔÒÏËÉ ÔÁËÖÅ, ËÁË ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÊ tcsh ÐÁÒÁÍÅÔÒ mytt(-c):
  verb(
    bindkey -s '^p' '\eqpwd\n'
  )
  ÷ ÏÂÏÉÈ ÐÒÉÍÅÒÁÈ, mytt(\eq) ÓÏÈÒÁÎÑÅÔ ÔÅËÕÝÕÀ ÐÏÚÉÃÉÀ ××ÏÄÁ, ËÏÔÏÒÁÑ ÂÕÄÅÔ ×ÏÓÓÔÁÎÏ×ÌÅÎÁ ÐÏÓÌÅ ×ÙÐÏÌÎÅÎÉÑ ËÏÍÁÎÄÙ; ÌÕÞÛÉÊ ÜÆÆÅËÔ Ó ÍÎÏÇÏÓÔÒÏÞÎÙÍÉ ÂÕÆÅÒÁÍÉ ÄÏÓÔÉÇÁÅÔÓÑ, ÅÓÌÉ ×Ù ÔÁËÖÅ ÉÍÅÅÔÅ
  verb(
    bindkey '\eq' push-input
  )
  ÄÌÑ ÓÏÈÒÁÎÅÎÉÑ ×ÓÅÇÏ ÂÕÆÅÒÁ. ÷ ×ÅÒÓÉÉ 4 É ÐÏÓÌÅÄÎÅÊ ×ÅÒÓÉÉ zsh 3.1, Õ ×ÁÓ ÅÓÔØ ÓÌÅÄÕÀÝÉÅ ÂÏÌÅÅ ÓÌÏÖÎÙÅ ÐÁÒÁÍÅÔÒÙ
  verb(
    run-fg-editor() {
      zle push-input
      BUFFER="fg %$EDITOR:t"
      zle accept-line
    }
    zle -N run-fg-editor
  )
  É ×Ù ÍÏÖÅÔÅ ÔÅÐÅÒØ ÐÒÉ×ÑÚÁÔØ tt(run-fg-editor) ÔÏÞÎÏ ÔÁË ÖÅ, ËÁË É ÌÀÂÕÀ ÄÒÕÇÕÀ ÆÕÎËÃÉÀ ÒÅÄÁËÔÏÒÁ.

sect(óÈÏÄÓÔ×Á Ó bash)

  Bourne-Again Shell, bash - ÜÔÏ ÄÒÕÇÏÊ ÒÁÓÛÉÒÅÎÎÙÊ Bourne-like ÛÅÌÌ; ÓÁÍÏÅ ÇÌÁ×ÎÏÅ ÏÞÅ×ÉÄÎÏÅ ÏÔÌÉÞÉÅ ÏÔ zsh, ÞÔÏ ÏÎ ÎÅ ÐÙÔÁÅÔÓÑ ÜÍÕÌÉÒÏ×ÁÔØ Korn shell. ðÏÓËÏÌØËÕ ÏÂÁ ÛÅÌÌÁ ÁËÔÉ×ÎÏ ÒÁÚ×É×ÁÀÔÓÑ, ÔÏ ×ÏÚÍÏÖÎÏ ÎÅ ÏÂÑÚÁÔÅÌØÎÏ ÂÙÔØ ÓÌÉÛËÏÍ ÓÐÅÃÉÆÉÞÎÙÍ × ÜÔÏÍ ×ÏÐÒÏÓÅ. bash ÏÂÒÁÝÁÅÔ ÂÏÌØÛÅ ×ÎÉÍÁÎÉÑ ÎÁ ÓÏÏÔ×ÅÔÓÔ×ÉÅ ÓÔÁÎÄÁÒÔÁÍ (× Ô.Þ. POSIX), É ÏÎ ÉÚÂÅÇÁÅÔ ÂÏÌØÛÅ ÎÅÐÏÎÑÔÎÙÈ ×ÏÚÍÏÖÎÏÓÔÅÊ (ÐÒÏÇÒÁÍÍÉÒÕÅÍÏÅ ÚÁ×ÅÒÛÅÎÉÅ É Ô.Ä.), ÞÅÍ zsh.

  ïÄÎÁËÏ, × ÐÏÓÌÅÄÎÉÅ ÇÏÄÙ ÂÙÌÉ ÎÅËÏÔÏÒÙÅ ÐÅÒÅÓÅÞÅÎÉÑ Ó ÒÁÓÛÉÒÅÎÉÑÍÉ. Zsh (ÎÁÞÉÎÁÑ Ó 3.1.6) ÉÍÅÅÔ ×ÏÚÍÏÖÎÏÓÔØ bash'Á `tt(${var/old/new})' ÚÁÍÅÎÙ ÔÅËÓÔÁ tt(old) ÎÁ ÔÅËÓÔ tt(new) × ÐÁÒÁÍÅÔÒÁÈ tt($var). úÁÍÅÔØÔÅ ÚÄÅÓØ ÏÄÎÏ ÏÔÌÉÞÉÅ: ÐÏËÁ ÏÂÁ ÛÅÌÌÁ ÐÒÉÎÁÄÌÅÖÁÔ ÓÉÎÔÁËÓÉÓÕ `tt(${var/#old/new})' É `tt(${var/%old/new})' ÄÌÑ ÆÉËÓÁÃÉÉ ÏÂÒÁÚÃÁ tt(old) × ÎÁÞÁÌÅ ÉÌÉ × ËÏÎÃÅ ÔÅËÔÁ ÐÁÒÁÍÅÔÒÁ ÓÏÏÔ×ÅÔÓÔ×ÅÎÎÏ, × zsh ×Ù ÎÅ ÍÏÖÅÔÅ ÐÏÓÔÁ×ÉÔØ `tt(#)' ÉÌÉ `tt(%)' ×ÎÕÔÒØ ÐÁÒÁÍÅÔÒÁ: ÄÒÕÇÉÍÉ ÓÌÏ×ÁÍÉ `tt({var/$old/new})', ÇÄÅ tt(old) ÎÁÞÉÎÁÅÔÓÑ Ó `tt(#)' ÔÒÁËÔÕÅÔÓÑ ËÁË ÏÂÙÞÎÙÊ ÓÉÍ×ÏÌ × zsh, × ÏÔÌÉÞÉÅ ÏÔ bash. þÔÏÂÙ ÓÄÅÌÁÔØ ÔÁËÏÅ × zsh, ×Ù ÍÏÖÅÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ (ÉÚ 3.1.7) ÎÏ×ÙÊ ÓÉÎÔÁËÓÉÓ ÄÌÑ ÆÉËÓÉÒÏ×ÁÎÉÑ × ÌÀÂÏÊ ÆÏÒÍÅ, `tt((#s))' ÓÏÏÔ×ÅÔÓÔ×ÕÅÔ ÎÁÞÁÌÕ ÓÔÒÏËÉ, É `tt((#e))' ÓÏÏÔ×ÅÔÓÔ×ÕÅÔ ËÏÎÃÕ. üÔÏ ÔÒÅÂÕÅÔ ÚÁÄÁÎÎÏÇÏ ÐÁÒÁÍÅÔÒÁ tt(EXTENDED_GLOB).

sect(îÅ ÄÏÌÖÅÎ ÌÉ zsh ÂÙÔØ ÂÏÌØÛÅ/ÍÅÎØÛÅ ÐÏÈÏÖ ÎÁ ksh/(t)csh?)

  ìÀÄÉ ÞÁÓÔÏ ÓÐÒÁÛÉ×ÁÀÔ, ÐÏÞÅÍÕ zsh ÉÍÅÅÔ ×ÓÅ ÜÔÉ `ÎÅÎÕÖÎÙÅ' csh-like ×ÏÚÍÏÖÎÏÓÔÉ, ÉÌÉ ËÒÏÍÅ ÔÏÇÏ, ÐÏÞÅÍÕ zsh ÎÅ ÐÏÎÉÍÁÅÔ ÂÏÌÅÅ ÇÌÕÂÏËÏ ÓÉÎÔÁËÓÉÓ csh. üÔÏ ÄÁÌÅËÏ ÏÔ ÏËÏÎÞÁÔÅÌØÎÏÇÏ ÏÔ×ÅÔÁ É ÄÅÂÁÔÙ ÎÅÓÏÍÎÅÎÎÏ ÂÕÄÕÔ ÐÒÏÄÏÌÖÁÔØÓÑ.

  ãÅÌØÀ Paul'Á × ÎÁÐÉÓÁÎÉÉ zsh ÂÙÌÏ ÓÏÚÄÁÎÉÅ ksh-like ÛÅÌÌÁ, ËÏÔÏÒÙÊ ÂÙ ÉÍÅÌ ×ÏÚÍÏÖÎÏÓÔÉ ÓÅÍÅÊÓÔ×Á csh. äÏÌÇÏÅ ×ÒÅÍÑ csh ÂÙÌ ÐÒÅÄÐÏÞÉÔÁÅÍÙÍ ÉÎÔÅÒÁËÔÉ×ÎÙÍ ÛÅÌÌÏÍ, É ÂÙÌÏ ÓÉÌØÎÏÅ ÓÏÐÒÏÔÉ×ÌÅÎÉÅ, ÞÔÏÂÙ ÓÍÅÎÉÔØ csh ÎÁ ÞÔÏ-ÎÉÂÕÄØ, ÎÅ ÐÒÉÎÁÄÌÅÖÁÝÅÅ Ë ÓÅÍÅÊÓÔ×Õ, ÓÌÅÄÏ×ÁÔÅÌØÎÏ ÒÁÓÛÉÒÅÎÎÙÊ ÓÉÎÔÁËÓÉÓ É ÐÁÒÁÍÅÔÒ tt(CSH_JUNKIE). üÔÏÔ ÁÒÇÕÍÅÎÔ ×Ó£ ÅÝ£ × ÓÉÌÅ. ó ÄÒÕÇÏÊ ÓÔÏÒÏÎÙ, ÁÒÇÕÍÅÎÔÙ ÄÌÑ ÂÌÉÚËÏÊ ÚÁÍÅÎÙ ksh ÄÁÖÅ ÂÏÌÅÅ ×ÅÓÏÍÙÅ: ÎÅÄÏÓÔÁÔËÉ csh ËÁË ÑÚÙËÁ ÐÒÏÇÒÁÍÍÉÒÏ×ÁÎÉÑ ÈÏÒÏÛÏ ÉÚ×ÅÓÔÎÙ (×ÚÇÌÑÎÉÔÅ × ÌÀÂÏÊ Usenet FAQ ÁÒÈÉ×, ÎÁÐÒÉÍÅÒ url(http://www.cis.ohio-state.edu/hypertext/faq/usenet/unix-faq/shell/csh-whynot/faq.html)(http://www.cis.ohio-state.edu/hypertext/faq/usenet/unix-faq/shell/csh-whynot/faq.html), ÅÓÌÉ ×Ù ÓÏÍÎÅ×ÁÅÔÅÓØ) É zsh ÍÏÖÅÔ ÚÁÐÕÓËÁÔØ ÍÎÏÖÅÓÔ×Ï ÓÔÁÎÄÁÒÔÎÙÈ ÓÃÅÎÁÒÉÅ×, ÔÁËÉÈ ËÁË /etc/rc.

  ëÏÎÅÞÎÏ ÜÔÏ ÄÅÌÁÅÔ zsh ÄÏ×ÏÌØÎÏ ÏÇÒÏÍÎÙÍ Ó ÂÏÌØÛÉÍÉ ×ÏÚÍÏÖÎÏÓÔÑÍÉ, ÜÔÏ ÏÂÒÁÝÅÎÉÅ, × ÏÓÎÏ×ÎÏÍ, Ë ÈÁËÅÒÁÍ. ôÏÌØËÏ ÏÔ×ÅÔ, ×ÏÚÍÏÖÎÏ, ÐÏÌÎÏÓÔØÀ ÕÄÏ×ÌÅÔ×ÏÒÉÔÅÌØÎÙÊ, Ô.Å. ×Ù ÄÏÌÖÎÙ ÉÇÎÏÒÉÒÏ×ÁÔØ ÔÏ, ÞÔÏ ×ÁÍ ÎÅ ÎÕÖÎÏ. ðÒÅÄÓÔÁ×ÌÅÎÉÅ Ï ÚÁÇÒÕÚËÅ × ÍÏÄÕÌÑÈ × ×ÅÒÓÉÉ 3.1 ÄÏÌÖÎÏ ÐÏÍÏÞØ.

sect(ðÏÄÄÅÒÖÉ×ÁÅÔ ÌÉ zsh Unicode/UTF-8?)

  `Unicode', ÉÌÉ UCS (Universal Character Set), ÜÔÏ ÓÏ×ÒÅÍÅÎÎÁÑ ÎÁÐÒÁ×ÌÅÎÉÅ ÓÐÅÃÉÁÌÉÚÉÒÏ×ÁÎÎÏÊ ËÏÄÉÒÏ×ËÉ. ïÎÁ ÚÁÍÅÎÑÅÔ ÏÇÒÏÍÎÏÅ ËÏÌÉÞÅÓÔ×Ï ÓÐÅÃÉÁÌØÎÙÈ ËÏÄÉÒÏ×ÏË ×ÎÅ ASCII. `UTF-8' ÜÔÏ Unicode ËÏÄÉÒÏ×ËÁ, ËÏÔÏÒÁÑ ÏÓÏÂÅÎÎÏ ÅÓÔÅÓÔ×ÅÎÎÁ ÎÁ Unix-like ÓÉÓÔÅÍÁÈ.

  ÷: ðÏÄÄÅÒÖÉ×ÁÅÔ ÌÉ zsh UTF-8?

  ï: ×ÓÔÒÏÅÎÎÁÑ ËÏÍÁÎÄÁ zsh printf ÐÏÄÄÅÒÖÉ×ÁÅÔ "\u" É "\U" ÜËÒÁÎÉÒÏ×ÁÎÉÅ, ËÏÔÏÒÁÑ ×Ù×ÏÄÉÔ ÐÒÏÉÚ×ÏÌØÎÙÅ ÓÉÍ×ÏÌÙ Unicode.  ZLE (the Zsh Line Editor) ÎÅ ÉÍÅÅÔ ÐÏÎÑÔÉÑ Ï ËÏÄÉÒÏ×ËÁÈ, É ÐÕÔÁÅÔÓÑ ÐÒÉ ÍÎÏÇÏÏËÔÅÔÎÙÈ ËÏÄÉÒÏ×ËÁÈ.

  ÷: ðÏÞÅÍÕ Õ zsh ÎÅÔ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÊ ÐÏÄÄÅÒÖËÉ UTF-8?

  ï: ëÏÄ ÅÝ£ ÎÅ ÎÁÐÉÓÁÎ.

  ÷: þÔÏ ÓÌÏÖÎÏÇÏ × ÒÅÁÌÉÚÁÃÉÉ ÐÏÄÄÅÒÖËÉ UTF-8?

  ï: äÌÑ ÔÏÇÏ, ÞÔÏÂÙ ÐÒÁ×ÉÌØÎÏ ÏÐÅÒÉÒÏ×ÁÔØ Ó ÐÒÏÉÚ×ÏÌØÎÏÊ ËÏÄÉÒÏ×ËÏÊ, ÚÎÁÞÉÔÅÌØÎÙÅ ÉÚÍÅÎÅÎÉÑ ÎÕÖÎÏ ×ÎÅÓÔÉ × ÛÅÌÌ.

  ÷: ðÏÞÅÍÕ zsh ÎÅ ÍÏÖÅÔ ÐÒÏÓÔÏ ÉÓÐÏÌØÚÏ×ÁÔØ readline?

  ï: ZLE ÎÅ ÉÚÏÌÉÒÏ×ÁÎ ÏÔ ÏÓÔÁÌØÎÏÇÏ ÛÅÌÌÁ. éÚÏÌÉÒÏ×ÁÔØ ÅÇÏ ÔÁË, ÞÔÏÂÙ ÍÏÖÎÏ ÂÙÌÏ ÚÁÍÅÎÉÔØ ÎÁ readline ÔÒÅÂÏ×ÁÌÏ ÂÙ ÚÎÁÞÉÍÙÈ ÕÓÉÌÉÊ. ë ÔÏÍÕ ÖÅ, ÉÓÐÏÌØÚÕÑ readline ÐÏÑ×ÉÌÓÑ ÂÙ ÏÂÒÁÔÎÙÊ ÜÆÆÅËÔ ÚÎÁÞÉÍÏÊ ÐÏÔÅÒÉ ×ÏÚÍÏÖÎÏÓÔÅÊ.

  ÷: ëÁËÉÅ ÉÚÍÅÎÅÎÉÑ ÐÌÁÎÉÒÕÀÔÓÑ?

  ï: ÷×ÏÄ ÐÏÄÄÅÒÖËÉ Unicode ÂÕÄÅÔ ÐÏÓÔÅÐÅÎÎÙÊ, ÎÕ Á ÅÓÌÉ ×Ù ÉÎÔÅÒÅÓÕÅÔÅÓØ ×Ï ××ÅÄÅÎÉÉ, ÔÏ ×ÁÍ ÓÌÅÄÕÅÔ ÐÒÉÓÏÅÄÉÎÉÔØÓÑ Ë ÌÉÓÔÕ ÒÁÓÓÙÌÏË ÒÁÚÒÁÂÏÔÞÉËÏ× (zsh-workers mailing list). ëÁË ÐÅÒ×ÙÊ ÛÁÇ, ZLE ÂÕÄÅÔ ÐÅÒÅÐÉÓÁÎ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÎÅÐÏÓÒÅÄÓÔ×ÅÎÎÏ ÛÉÒÏËÉÈ ÓÉÍ×ÏÌÏ× (wide characters). óÉÍ×ÏÌÙ, ÏÓÎÏ×ÁÎÎÙÅ ÎÁ ×ÉÄÖÅÔÁÈ(widgets), ÓÍÏÇÕÔ ÔÏÇÄÁ ÏÐÅÒÉÒÏ×ÁÔØ Ó ÃÅÌÙÍ ÛÉÒÏËÉÍ ÓÉÍ×ÏÌÏÍ, ×ÍÅÓÔÏ ÏÄÎÏÇÏ ÂÁÊÔÁ, É ÎÕÖÎÁÑ ÛÉÒÉÎÁ ÓÉÍ×ÏÌÏ× ÍÏÖÅÔ ÂÙÔØ ÒÁÓÓÞÉÔÁÎÁ Ó ÐÏÍÏÝØÀ ÆÕÎËÃÉÉ wcswidth().

chapter(ëÁË ÚÁÓÔÁ×ÉÔØ ÒÁÂÏÔÁÔØ ÒÁÚÌÉÞÎÙÅ ×ÅÝÉ)

sect(ðÏÞÅÍÕ ÐÅÒÅÍÅÎÎÁÑ mytt($var), ÇÄÅ mytt(var="foo bar") ÎÅ ÄÅÌÁÅÔ ÔÏÇÏ ÞÅÇÏ Ñ ÏÖÉÄÁÀ?)
label(31)

  ÷ ÂÏÌØÛÅÎÓÔ×Å Bourne-shell ÐÒÏÉÚ×ÏÄÎÙÈ, ÐÅÒÅÍÅÎÎÙÅ ÉÚ ÎÅÓËÏÌØËÉÈ ÓÌÏ×, ÔÁËÉÅ ËÁË
  verb(
    var="foo bar"
  )
  ÒÁÚÄÅÌÑÀÔÓÑ ÎÁ ÓÌÏ×Á, ËÏÇÄÁ ÐÒÏÐÕÓËÁÀÔÓÑ ÞÅÒÅÚ ËÏÍÁÎÄÕ ÉÌÉ ÉÓÐÏÌØÚÕÀÔÓÑ × mytt(for foo in $var) ÃÉËÌÅ. ðÏ ÕÍÏÌÞÁÎÉÀ, zsh ÎÅ ×ÅÄ£Ô ÓÅÂÑ ÔÁË, ÞÔÏÂÙ ÐÅÒÅÍÅÎÎÁÑ ÏÓÔÁÌÁÓØ ÃÅÌÏÊ. (üÔÏ ÎÅ ÏÛÉÂËÁ! óÍÏÔÒÉÔÅ ÄÁÌØÛÅ.) ðÁÒÁÍÅÔÒ tt(SH_WORD_SPLIT) ÓÕÝÅÓÔ×ÕÅÔ, ÞÔÏÂÙ ÐÒÅÄÏÓÔÁ×ÉÔØ ÓÏ×ÍÅÓÔÉÍÏÓÔØ.

  îÁÐÒÉÍÅÒ, ÏÐÒÅÄÅÌÅÎÉÅ ÆÕÎËÃÉÉ args ÐÏËÁÚÙ×ÁÅÔ ËÏÌÉÞÅÓÔ×Ï Å£ ÁÒÇÕÍÅÎÔÏ×:
  verb(
    args() { echo $#; }
  )
  É Ó ÎÁÛÉÍ ÏÐÒÅÄÅÌÅÎÉÅÍ `var',
  verb(
    args $var
  )
  ÎÁ ×ÙÈÏÄÅ ÒÅÚÕÌØÔÁÔ ÂÕÄÅÔ `1'. ðÏÓÌÅ
  verb(
    setopt shwordsplit
  )
  ÔÁËÁÑ ÖÅ ÆÕÎËÃÉÑ ÄÁÓÔ ÒÅÚÕÌØÔÁÔ `2', ËÁË Ó sh É ksh.

  åÓÌÉ ×ÁÍ ÎÅ ÎÕÖÎÁ ÐÏÌÎÁÑ sh/ksh ÓÏ×ÍÅÓÔÉÍÏÓÔØ, ×ÁÍ ÓÌÅÄÕÅÔ ÓÐÒÏÓÉÔØ ÓÅÂÑ, ÄÅÊÓÔ×ÉÔÅÌØÎÏ ÌÉ ×Ù ÈÏÔÉÔÅ ÔÁËÏÇÏ ÐÏ×ÅÄÅÎÉÑ, Ô.Ë. ÒÅÚÕÌØÔÁÔ ÍÏÖÅÔ ÄÁÔØ ÎÅÏÖÉÄÁÎÎÙÊ ÜÆÆÅËÔ ÄÌÑ ÐÅÒÅÍÅÎÎÙÈ, ÂÅÚÏÂÉÄÎÏ ÚÁÐÏÌÎÅÎÎÙÈ ÐÒÏÂÅÌÁÍÉ. üÔÏ ÍÏÖÅÔ ÂÙÔØ ÕÖÁÓÎÏÊ ÐÒÏÂÌÅÍÏÊ Ó ËÁ×ÙÞËÁÍÉ, ËÏÇÄÁ ÓÃÅÎÁÒÉÊ ×ÙÚÙ×ÁÀÔ ÉÚ ÄÒÕÇÉÈ ÛÅÌÌÏ×. ïÂÙÞÎÙÊ ÓÐÏÓÏ ÄÏÂÉÔØÓÑ ÒÁÚÄÅÌÅÎÉÑ ÎÁ ÓÌÏ×Á × zsh - ÜÔÏ ÞÅÒÅÚ ÍÁÓÓÉ×Ù. îÁÐÒÉÍÅÒ,
  verb(
    set -A array one two three twenty
  )
  (ÉÌÉ
  verb(
    array=(one two three twenty)
  )
  ÅÓÌÉ ×Ù ÐÒÅÄÐÏÞÉÔÁÅÔÅ), ÓÌÅÄÕÀÝÅÅ
  verb(
    args $array
  )
  ÄÁÓÔ ÒÅÚÕÌØÔÁÔ `4', ÎÅ ÏÂÒÁÝÁÑ ×ÎÉÍÁÎÉÑ ÎÁ ÐÁÒÁÍÅÔÒ tt(SH_WORD_SPLIT). íÁÓÓÉ×Ù ÔÁËÖÅ ÂÏÌÅÅ ÕÎÉ×ÅÒÓÁÌØÎÙ, ÞÅÍ ÓÔÒÏËÉ. ÷ÏÚÍÏÖÎÏ, ÅÓÌÉ ÂÙ ÜÔÏÔ ÍÅÈÁÎÉÚÍ ÂÙÌ ÂÙ ×ÓÅÇÄÁ ÄÏÓÔÕÐÅÎ, ÎÉËÏÇÄÁ ÎÅ ÂÙÌÏ ÂÙ Á×ÔÏÍÁÔÉÞÅÓËÏÇÏ ÒÁÚÄÅÌÅÎÉÑ ÎÁ ÓÌÏ×Á × ÓËÁÌÑÒÁÈ, ËÏÔÏÒÙÅ Ñ×ÌÑÀÔÓÑ ÒÁÚÎÏ×ÉÄÎÏÓÔØÀ ÎÅËÏÎÔÒÏÌÉÒÕÅÍÙÈ ÓÌÁÂÙÈ ÍÁÓÓÉ×Ï×.

  úÁÍÅÔØÔÅ, ÞÔÏ ÜÔÏ ÐÒÏÉÓÈÏÄÉÔ, ÎÅ×ÚÉÒÁÑ ÎÁ ÚÎÁÞÅÎÉÅ ÒÁÚÄÅÌÉÔÅÌÑ ×ÎÕÔÒÅÎÎÉÈ ÐÏÌÅÊ, tt($IFS); ÄÒÕÇÉÍÉ ÓÌÏ×ÁÍÉ, Ó mytt(IFS=:; foo=a:b; args $foo) ×Ù ÐÏÌÕÞÉÔÅ ÏÔ×ÅÔ 1.

  äÒÕÇÉÍ ÓÐÏÓÏÂÏÍ ÒÁÚÄÅÌÉÔØ ÎÁ ÓÌÏ×Á - ×ËÌÀÞÉÔØ ÚÄÒÁ×ÏÍÙÓÌÑÝÅÅ ÉÓÐÏÌØÚÏ×ÁÎÉÅ `eval':
  verb(
    sentence="Longtemps, je me suis couch\\'e de bonne heure."
    eval "words=($sentence)"
  )
  ÐÏÓÌÅ ËÏÔÏÒÏÇÏ $words - ÜÔÏ ÍÁÓÓÉ× ÓÏ ÓÌÏ×ÁÍÉ ÉÚ $sentence (ÚÁÍÅÔØÔÅ, ÞÔÏ ÓÐÅÃÉÁÌØÎÙÅ ÓÉÍ×ÏÌÙ ÄÌÑ ÛÅÌÌÁ, ÔÁËÉÅ ËÁË mytt(') × ÜÔÏÍ ÐÒÉÍÅÒÅ, ÄÏÌÖÎÙ ÕÖÅ ÂÙÔØ × ËÁ×ÙÞËÁÈ), ÉÌÉ, ÍÅÎØÛÅ ÓÔÁÎÄÁÒÔÁ, ÎÏ ÚÁÔÏ ÂÏÌÅÅ ÎÁÄ£ÖÎÏ, ×ËÌÀÞÉÔØ tt(SH_WORD_SPLIT) ÔÏÌØËÏ ÄÌÑ ÏÄÎÏÊ ÐÅÒÅÍÅÎÎÏÊ:
  verb(
    args ${=sentence}
  )
  ×ÓÅÇÄÁ ×ÅÒÎ£Ô 8 ÎÁÄ ÏÐÒÅÄÅÌÅÎÉÅÍ mytt(args). (äÌÑ ÓÔÁÒÙÈ ×ÅÒÓÉÊ zsh, tt(${=foo}) - ÐÅÒÅËÌÀÞÁÅÔ tt(SH_WORD_SPLIT); ÔÅÐÅÒØ ÏÎ ÐÒÏÓÔÏ ×ËÌÀÞÁÅÔÓÑ.)

  úÁÍÅÔØÔÅ ÔÁËÖÅ, ÞÔÏ ÍÅÔÏÄ tt("$@") ÒÁÚÄÅÌÅÎÉÑ ÎÁ ÓÌÏ×Á ×ÓÅÇÄÁ ÄÏÓÔÕÐÅÎ × zsh ÆÕÎËÃÉÑÈ É ÓÃÅÎÁÒÉÑÈ (ÈÏÔÑ ÔÏÞÎÅÅ ÜÔÏ ÒÁÚÄÅÌÅÎÉÅ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÍÁÓÓÉ×Á - ÎÅ ÒÁÚÄÅÌÅÎÉÅ ÐÏ ÓÌÏ×ÁÍ). üÔÏ ÂÏÌÅÅ ÐÏÒÔÉÒÏ×ÁÎÏ, ÞÅÍ tt($*), É ÂÕÄÅÔ ÒÁÂÏÔÁÔØ, ÎÅ×ÚÉÒÁÑ ÎÁ ÐÁÒÁÍÅÔÒ tt(SH_WORD_SPLIT); ÄÒÕÇÏÅ ÒÁÚÌÉÞÉÅ - tt($*) ÕÄÁÌÑÅÔ ÐÕÓÔÙÅ ÁÒÇÕÍÅÎÔÙ ÉÚ ÍÁÓÓÉ×Á. ÷Ù ÍÏÖÅÔÅ ÜÔÏ ÉÓÐÒÁ×ÉÔØ ÐÏÌÏ×ÉÎÕ ÜÔÏÇÏ, ÉÓÐÏÌØÚÕÑ tt(${==*}), ËÏÔÏÒÁÑ ×ÙËÌÀÞÉÔ tt(SH_WORD_SPLIT) ÄÌÑ ÐÒÏÄÏÌÖÅÎÉÑ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÑ.

  tt(SH_WORD_SPLIT) ÚÁÄÁ£ÔÓÑ, ËÏÇÄÁ zsh ×ÙÚÙ×ÁÅÔÓÑ Ó ÉÍÅÎÁÍÉ `ksh' ÉÌÉ `sh', ÉÌÉ (ÞÔÏ ÐÏÌÎÏÓÔØÀ ÜË×É×ÁÌÅÎÔÎÏ) ËÏÇÄÁ ÚÁÄÁÎÙ mytt(emulate ksh) ÉÌÉ mytt(emulate sh).

  åÓÔØ ÏÄÉÎ ÜÆÆÅËÔ ÒÁÚÄÅÌÅÎÉÑ ÎÁ ÓÌÏ×Á, ËÏÔÏÒÙÊ ÒÁÚÌÉÞÁÅÔÓÑ × ksh É zsh. ÷ ksh Õ ×ÓÔÒÏÅÎÎÙÈ ËÏÍÁÎÄ (ÎÁÐÒÉÍÅÒ ÔÁËÉÈ ËÁË tt(typeset) É tt(export)), ËÏÔÏÒÙÅ ÏÂßÑ×ÌÑÀÔ ÐÁÒÁÍÅÔÒÙ, ×ËÌÀÞÅÎÉÅ ÒÁÚÄÅÌÅÎÉÑ ÎÁ ÓÌÏ×Á ÎÅ ÂÕÄÅÔ ÄÅÊÓÔ×Ï×ÁÔØ ÐÏÓÌÅ ÐÒÉÓ×ÁÉ×ÁÎÉÑ ÁÒÇÕÍÅÎÔÁ:
  verb(
    typeset param=`echo foo bar`
  )
  × ksh ÂÕÄÅÔ ÓÏÚÄÁÎ ÐÁÒÁÍÅÔÒ ÓÏ ÚÎÁÞÅÎÉÅÍ mytt(foo bar), Á × zsh ÂÕÄÅÔ ÓÏÚÄÁÎ ÐÁÒÁÍÅÔÒ tt(param) ÓÏ ÚÎÁÞÅÎÉÅÍ tt(foo) É ÐÁÒÁÍÅÔÒÏÍ tt(bar), ÞØ£ ÚÎÁÞÅÎÉÅ ÐÕÓÔÏÅ. ðÒÏÔÉ×ÏÐÏÌÏÖÎÏÓÔØ ÜÔÏÇÏ Ó ÎÏÒÍÁÌØÎÙÍ ÐÒÉÓ×ÁÉ×ÁÎÉÅÍ (ÎÉËÁËÏÇÏ tt(typeset) ÉÌÉ ÄÒÕÇÏÊ ËÏÍÁÎÄÙ ×ÐÅÒÅÄÉ), ËÏÔÏÒÏÅ ÎÉËÏÇÄÁ ÎÅ ÒÁÚÄÅÌÉÔ ÎÁ ÓÌÏ×Á, ÐÏËÁ ÚÁÄÁÎ ÐÁÒÁÍÅÔÒ tt(GLOB_ASSIGN). ó zsh ×ÅÒÓÉÉ 4.0.2 ÐÁÒÁÍÅÔÒ tt(KSH_TYPESET), ÚÁÄÁÀÝÉÊÓÑ Á×ÔÏÍÁÔÉÞÅÓËÉ × ÒÅÖÉÍÅ ÓÏ×ÍÅÓÔÉÍÏÓÔÉ, ÉÓÐÒÁ×ÌÑÅÔ ÜÔÕ ÐÒÏÂÌÅÍÕ. úÁÍÅÔØÔÅ, ÞÔÏ × bash ÔÁËÏÅ ÐÏ×ÅÄÅÎÉÅ ×ÓÔÒÅÞÁÅÔÓÑ ÓÏ ×ÓÅÍÉ ÁÒÇÕÍÅÎÔÁÍÉ, ËÏÔÏÒÙÅ ×ÙÇÌÑÄÑÔ ËÁË ÐÒÉÓ×ÁÉ×ÁÎÉÑ Ó ËÁËÉÍ ÂÙ ÔÏ ÎÉ ÂÙÌÏ ÉÍÅÎÅÍ ËÏÍÁÎÄÙ; × zsh ÔÁËÏÅ ÐÏ×ÅÄÅÎÉÅ ÍÏÖÎÏ ÐÏÌÕÞÉÔØ, ÚÁÄÁ× ÐÁÒÁÍÅÔÒ tt(MAGIC_EQUAL_SUBST).

sect(÷ ËÁËÏÊ ËÏÎÆÉÇÕÒÁÃÉÏÎÎÙÊ ÆÁÊÌ Ñ ÄÏÌÖÅÎ ÐÒÏÐÉÓÁÔØ...?)

  óÕÝÅÓÔ×ÕÅÔ 4 ËÏÎÆÉÇÕÒÁÃÉÏÎÎÙÈ ÆÁÊÌÁ, ËÏÔÏÒÙÅ ÉÎÉÃÉÁÌÉÚÉÒÕÀÔÓÑ ÐÒÉ ÚÁÐÕÓËÅ × ÒÁÚÌÉÞÎÙÈ ÏÂÓÔÏÑÔÅÌØÓÔ×ÁÈ: tt(.zshenv), tt(.zprofile), tt(.zshrc) É tt(.zlogin). ïÎÉ ÏÂÙÞÎÏ ÎÁÈÏÄÑÔÓÑ × ×ÁÛÅÊ ÄÏÍÁÛÎÅÊ ÄÉÒÅËÔÏÒÉÉ, ÎÏ ÐÅÒÅÍÅÎÎÁÑ tt($ZDOTDIR) ÍÏÖÅÔ ÂÙÔØ ÚÁÄÁÎÁ, ÞÔÏÂÙ ÉÚÍÅÎÉÔØ ÜÔÏ. úÄÅÓØ ÐÒÉ×ÅÄÅÎÙ ÎÅÓËÏÌØËÏ ËÒÁÔËÉÈ ÓÏ×ÅÔÏ×, ËÁË ÉÈ ÉÓÐÏÌØÚÏ×ÁÔØ. óÕÝÅÓÔ×ÕÀÔ ÔÁËÖÅ ÆÁÊÌÙ, ËÏÔÏÒÙÅ ÓÉÓÔÅÍÎÙÊ ÁÄÍÉÎÉÓÔÒÁÔÏÒ ÍÏÖÅÔ ÚÁÄÁÔØ ÄÌÑ ×ÓÅÈ ÛÅÌÌÏ×; ×Ù ÍÏÖÅÔÅ ÉÚÂÅÖÁÔØ ÚÁÐÕÓËÁ ×ÓÅÈ, ËÒÏÍÅ tt(/etc/zshenv), ÚÁÐÕÓÔÉ× zsh Ó ÐÁÒÁÍÅÔÒÏÍ tt(-f) --- ÐÏ ÜÔÏÊ ÐÒÉÞÉÎÅ ×ÁÖÎÏ ÄÌÑ ÁÄÍÉÎÉÓÔÒÁÔÏÒÏ× ÕÄÏÓÔÏ×ÅÒÉÔØÓÑ, ÞÔÏ tt(/etc/zshenv) ÎÅ ÓÏÄÅÒÖÉÔ ÎÉÞÅÇÏ ÌÉÛÎÅÇÏ.

  ðÏÒÑÄÏË, × ËÏÔÏÒÏÍ ÜÔÉ 4 ÆÁÊÌÁ ÉÝÕÔÓÑ (ÎÉ ÏÄÉÎ ÉÈ ÎÉÈ myem(ÎÅ ÏÂÑÚÁÎ) ÓÕÝÅÓÔ×Ï×ÁÔØ) ÔÏÌØËÏ ÞÔÏ ÐÒÉ×ÅÄ£Î. ôÅÍ ÎÅ ÍÅÎÅÅ, tt(.zprofile) É tt(.zlogin) ÚÁÐÕÓËÁÀÔÓÑ ÔÏÌØËÏ ËÏÇÄÁ zsh - ÏÂÏÌÏÞËÁ ×ÈÏÄÁ × ÓÉÓÔÅÍÕ (login shell) --- ËÏÇÄÁ ×Ù ÐÅÒ×ÙÊ ÒÁÚ ÚÁÛÌÉ × ÓÉÓÔÅÍÕ, ËÏÎÅÞÎÏ, É ËÏÇÄÁ ×Ù ÚÁÐÕÓËÁÅÔÅ zsh Ó ÐÁÒÁÍÅÔÒÏÍ tt(-l). ÷ÓÅ login shells ÉÎÔÅÒÁËÔÉ×ÎÙÅ. ðÏÒÑÄÏË ÒÁÚÌÉÞÁÅÔÓÑ ÔÏÌØËÏ ÍÅÖÄÕ ÜÔÉÍ; ×ÁÍ ÓÌÅÄÕÅÔ ÒÅÛÉÔØ, ËÏÇÄÁ ×ÁÍ ÎÕÖÎÏ ×ÙÐÏÌÎÉÔØ ËÏÍÁÎÄÙ: ÄÏ ÉÌÉ ÐÏÓÌÅ tt(.zshrc). üÔÉ ÆÁÊÌÙ - ÈÏÒÏÛÅÅ ÍÅÓÔÏ, ÞÔÏÂÙ ÚÁÄÁÔØ ÐÅÒÅÍÅÎÎÙÅ ÏËÒÕÖÅÎÉÑ (Ô.Å. ËÏÍÁÎÄÙ mytt(export)), Ô.Ë. ÏÎÉ ÐÅÒÅÄÁÀÔÓÑ ×ÓÅÍ ÛÅÌÌÁÍ É ÎÅÔ ÎÅÏÂÈÏÄÉÍÏÓÔÉ ÕÓÔÁÎÁ×ÌÉ×ÁÔØ ÉÈ ÚÁÎÏ×Ï, Á ÔÁËÖÅ ÐÒÏ×ÅÒÑÔØ, ÐÒÁ×ÉÌØÎÏ ÌÉ ÎÁÓÔÒÏÅÎ ÔÅÒÍÉÎÁÌ (ÚÁ ÉÓËÌÀÞÅÎÉÅÍ ÓÌÕÞÁÅ×, ËÏÇÄÁ ×Ù ÈÏÔÉÔÅ ÉÚÍÅÎÉÔØ Ó×ÏÊÓÔ×Á ÜÍÕÌÑÔÏÒÁ ÔÅÒÍÉÎÁÌÁ, ÎÁÐÒÉÍÅÒ tt(xterm), ÔÏÇÄÁ ×ÁÍ ÎÕÖÎÏ ÉÚÍÅÎÑÔØ ÆÁÊÌ tt(.zshrc), Ô.Ë. ÏÂÙÞÎÏ ×Ù ÎÅ ÐÏÌÕÞÁÅÔÅ ÏÂÏÌÏÞËÕ ×ÈÏÄÁ × ÓÉÓÔÅÍÕ).  

  ôÏÌØËÏ ÏÄÉÎ ÆÁÊÌ ×Ù ÍÏÖÅÔÅ ÚÁÍÅÎÉÔØ, ËÏÔÏÒÙÊ ÚÁÐÕÓËÁÅÔÓÑ ËÁÖÄÙÊ ÒÁÚ ÐÒÉ ÓÔÁÒÔÅ zsh (ÔÏÌØËÏ ÅÓÌÉ ×Ù ÎÅ ÉÓÐÏÌØÚÕÅÔÅ ÐÁÒÁÍÅÔÒ tt(-f)) ÜÔÏ tt(.zshenv), ÜÔÏ ÈÏÒÏÛÅÅ ÍÅÓÔÏ ÄÌÑ ËÏÍÁÎÄ, ÄÁÖÅ ÅÓÌÉ ÛÅÌÌ ÎÅÉÎÔÅÒÁËÔÉ×ÎÙÊ: ÐÁÒÁÍÅÔÒÙ ÄÌÑ ÉÚÍÅÎÅÎÉÑ ÓÉÎÔÁËÓÉÓÁ, ÔÁËÉÅ ËÁË tt(EXTENDED_GLOB), ÌÀÂÙÅ ÉÚÍÅÎÅÎÉÑ, ËÁÓÁÀÝÉÅÓÑ mytt(limit), ÌÀÂÙÅ ÐÅÒÅÍÅÎÎÙÅ, ËÁËÉÅ ÔÏÌØËÏ ÈÏÔÉÔÅ, ÞÔÏÂÙ ÕÂÅÄÉÔØÓÑ, ÞÔÏ ÏÎÉ ÚÁÄÁÎÙ, ÎÁÐÒÉÍÅÒ, tt($fpath) ÄÌÑ ÐÏÉÓËÁ ÆÕÎËÃÉÊ. ÷Ù ÎÅÓÏÍÎÅÎÎÏ ÎÅ ÈÏÔÉÔÅ, ÞÔÏÂÙ tt(.zshenv) ÞÔÏ-ÎÉÂÕÄØ ×Ù×ÏÄÉÌ ÎÁ ÓÔÁÎÄÁÒÔÎÙÊ ×Ù×ÏÄ. îÅËÏÔÏÒÙÅ ÌÀÄÉ ÐÒÅÄÐÏÞÉÔÁÀÔ ÎÅ ÉÓÐÏÌØÚÏ×ÁÔØ tt(.zshenv) ÄÌÑ ÚÁÄÁÎÉÑ ÐÁÒÁÍÅÔÒÏ×, ËÁË ×ÌÉÑÔÅÌØÎÙÊ ÓÃÅÎÁÒÉÊ; ÎÏ ÞÔÏÂÙ ÓÄÅÌÁÔØ zsh ÓÃÅÎÁÒÉÉ ÐÏÒÔÉÒÕÅÍÙÍÉ ÏÂÙÞÎÏ ÔÒÅÂÕÅÔÓÑ ÎÅÍÎÏÇÏ ÕÓÉÌÉÊ.

  é ÎÁËÏÎÅÃ, tt(.zshrc) ÚÁÐÕÓËÁÅÔÓÑ ÄÌÑ ËÁÖÄÏÇÏ ÉÎÔÅÒÁËÔÉ×ÎÏÇÏ ÛÅÌÌÁ; ÏÎ ×ËÌÀÞÁÅÔ × ÓÅÂÑ É ÏÂÏÌÏÞËÉ ×ÈÏÄÁ × ÓÉÓÔÅÍÕ, ÎÏ ÔÁËÖÅ × ÌÀÂÏÅ ×ÒÅÍÑ, ËÏÇÄÁ ×Ù ÚÁÐÕÓËÁÅÔÅ ÛÅÌÌ, ÐÒÏÓÔÏ ÎÁÂÒÁ× mytt(zsh) ÉÌÉ ÏÔËÒÙ× ÎÏ×ÏÅ ÏËÎÏ ÜÍÕÌÑÃÉÉ ÔÅÒÍÉÎÁÌÁ. ÷ ÜÔÏÍ ÆÁÊÌÅ ÍÅÓÔÏ ÄÌÑ ÉÚÍÅÎÅÎÉÑ ÐÏ×ÅÄÅÎÉÑ ÒÅÄÁËÔÉÒÏ×ÁÎÉÑ ÞÅÒÅÚ ÐÁÒÁÍÅÔÒÙ ÉÌÉ mytt(bindkey), ËÏÎÔÒÏÌÉÒÏ×ÁÎÉÑ, ËÁË ÓÏÈÒÁÎÑÅÔÓÑ ×ÁÛÁ ÉÓÔÏÒÉÑ, ÚÁÄÁÎÉÑ ÐÓÅ×ÄÏÎÉÍÏ×, ÎÅÓÍÏÔÒÑ ÎÁ ÔÏ, ÞÔÏ ×Ù ÉÈ ÂÕÄÅÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ × ÓÃÅÎÁÒÉÑÈ, É ÄÌÑ ÌÀÂÏÇÏ ÄÒÕÇÏÇÏ ÍÕÓÏÒÁ, ËÏÔÏÒÙÊ ÎÅ ÍÏÖÅÔ ÂÙÔØ ÜËÓÐÏÒÔÉÒÏ×ÁÎ, ÎÏ ×Ù ÔÏÌØËÏ ÉÓÐÏÌØÚÕÅÔÅ ÐÒÑÍÏ ÄÌÑ ÉÎÔÅÒÁËÔÉ×ÎÏÇÏ ÛÅÌÌÁ. ÷Ù ×ÅÒÏÑÔÎÏ ÎÅ ÈÏÔÉÔÅ, ÞÔÏÂÙ tt(.zshrc) ÞÔÏ-ÌÉÂÏ ×Ù×ÏÄÉÌ ÎÁ ÓÔÁÎÄÁÒÔÎÙÊ ×Ù×ÏÄ, ÅÓÔØ ÓÌÕÞÁÊ, ËÏÇÄÁ ÜÔÏ ÍÏÖÅÔ ÏËÁÚÁÔØÓÑ ÐÒÏÂÌÅÍÏÊ, ÔÁËÏÊ ËÁË ÉÓÐÏÌØÚÏ×ÁÎÉÅ mytt(rsh) Ó ÄÒÕÇÏÊ ÍÁÛÉÎÙ ÐÏ ÓÅÔÉ. ðÏ ÐÏ×ÏÄÕ ÓÏÈÒÁÎÅÎÉÑ ÉÓÔÏÒÉÉ ÏÂÒÁÝÁÔØÓÑ Ë ×ÏÐÒÏÓÕ link(3.21)(321).

sect(÷ Þ£Í ÒÁÚÌÉÞÉÑ ÍÅÖÄÕ `export' É ÐÁÒÁÍÅÔÒÏÍ tt(ALL_EXPORT) ?)

  ïÂÙÞÎÏ, ÞÔÏÂÙ ÜËÓÐÏÒÔÉÒÏ×ÁÔØ ÐÅÒÅÍÅÎÎÕÀ × ÏËÒÕÖÅÎÉÅ ×Ù ÉÓÐÏÌØÚÕÅÔÅ mytt(export var). ëÏÍÁÎÄÁ mytt(setopt allexport) ÜËÓÐÏÒÔÉÒÕÅÔ × ÏËÒÕÖÅÎÉÅ ×ÓÅ ÐÅÒÅÍÅÎÎÙÅ, ËÏÔÏÒÙÅ ×ÐÏÓÌÅÄÓÔ×ÉÉ ÂÕÄÕÔ ÚÁÄÁÎÙ (ÎÅ ×ÓÅ, Á ËÏÔÏÒÙÅ ÓÕÝÅÓÔ×ÕÀÔ ÎÁ ÄÁÎÎÙÊ ÍÏÍÅÎÔ).

  üÔÏ ÍÏÖÅÔ ËÁÚÁÔØÓÑ ÐÏÌÅÚÎÏÊ ÓÔÅÎÏÇÒÁÆÉÅÊ, ÎÏ ÎÁ ÐÒÁËÔÉËÅ ÍÏÖÅÔ ÉÍÅÔØ É ÂÅÓÐÏÌÅÚÎÙÅ ÜÆÆÅËÔÙ:
  enumerate(
  myeit() ó ÔÅÈ ÐÏÒ, ËÁË ËÁÖÄÁÑ ÐÅÒÅÍÅÎÎÁÑ ÜËÓÐÏÒÔÉÒÕÅÔÓÑ × ÏËÒÕÖÅÎÉÅ, ÔÁË ÖÅ ËÁË É ÚÁÐÏÍÎÅÎÎÁÑ ÛÅÌÌÏÍ, ÐÁÍÑÔØ, ËÏÔÏÒÁÑ ÅÊ ÔÒÅÂÕÅÔÓÑ, ÂÕÄÅÔ ×ÙÄÅÌÅÎÁ Ä×ÁÖÄÙ. üÔÏ ÔÁË ÖÅ ÂÏÌØÛÅ ËÁË É ÍÅÄÌÅÎÎÅÅ.
  myeit() äÅÊÓÔ×ÉÔÅÌØÎÏ ËÁÖÄÁÑ ÐÅÒÅÍÅÎÎÁÑ ÂÕÄÅÔ ÜËÓÐÏÒÔÉÒÏ×ÁÎÁ, ÄÁÖÅ ÐÅÒÅÍÅÎÎÁÑ × ÃÉËÌÅ mytt(for). üÔÏ ×ÏÚÍÏÖÎÏ ÌÉÛÎÅÅ.
  myeit() ðÒÏÉÚ×ÏÌØÎÁÑ ÐÅÒÅÍÅÎÎÁÑ, ÓÏÚÄÁÎÎÁÑ ÐÏÌØÚÏ×ÁÔÅÌÅÍ, ÍÏÖÅÔ ÉÍÅÔØ ÓÐÅÃÉÁÌØÎÏÅ ÚÎÁÞÅÎÉÅ ÄÌÑ ËÏÍÁÎÄÙ. ô.Ë ×ÓÅ ÐÅÒÅÍÅÎÎÙÅ ×ÉÄÎÙ ÄÌÑ ËÏÍÁÎÄÙ, ÔÏ ÐÒÏÔÉ× ÜÔÏÇÏ ÎÉËÁËÏÊ ÚÁÝÉÔÙ ÎÅÔ.
  )
  ðÏ ÜÔÉÍ ÐÒÉÞÉÎÁÍ ÏÂÙÞÎÏ ÌÕÞÛÅ ×ÓÅÇÏ ÉÚÂÅÇÁÔØ tt(ALL_EXPORT), ÅÓÌÉ ÔÏÌØËÏ ÎÅ ÓÐÅÃÉÆÉÞÅÓËÏÅ ÅÇÏ ÉÓÐÏÌØÚÏ×ÁÎÉÅ. ïÄÎÏ ÂÅÚÏÐÁÓÎÏÅ ÉÓÐÏÌØÚÏ×ÁÎÉÅ - ÜÔÏ ÚÁÄÁÔØ ÅÇÏ ÄÏ ÓÏÚÄÁÎÉÑ ÓÐÉÓËÁ ÐÅÒÅÍÅÎÎÙÈ × ÉÎÉÃÉÁÌÉÚÁÃÉÏÎÎÏÍ ÆÁÊÌÅ, É ÕÄÁÌÉÔØ ÅÇÏ ÓÒÁÚÕ ÐÏÓÌÅ ÜÔÏÇÏ. ôÏÌØËÏ ÜÔÉ ÐÅÒÅÍÅÎÎÙÅ ÂÕÄÕÔ Á×ÔÏÍÁÔÉÞÅÓËÉ ÜËÓÐÏÒÔÉÒÏ×ÁÎÙ.

sect(ëÁË ÍÎÅ ×ÙËÌÀÞÉÔØ ËÏÒÒÅËÃÉÀ ÐÒÁ×ÏÐÉÓÁÎÉÑ/ÕÎÉ×ÅÒÓÁÌÉÚÁÃÉÀ ÉͣΠÄÌÑ ÏÄÎÏÊ ËÏÍÁÎÄÙ?)

  ÷ ÐÅÒ×ÏÍ ÓÌÕÞÁÅ, ×Ù ×ÅÒÏÑÔÎÏ ÚÁÐÉÛÉÔÅ mytt(setopt correctall) × ÉÎÉÃÉÁÌÉÚÁÃÉÏÎÎÙÊ ÆÁÊÌ, ÔÏÇÄÁ zsh ÂÕÄÅÔ ÐÒÏ×ÅÒÑÔØ ÐÒÁ×ÏÐÉÓÁÎÉÅ ËÁÖÄÏÇÏ ÓÌÏ×Á × ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÅ. ÷Ù ×ÏÚÍÏÖÎÏ ÎÅ ÈÏÔÉÔÅ ÔÁËÏÇÏ ÐÏ×ÅÄÅÎÉÑ ÄÌÑ ËÏÍÁÎÄ, ËÏÔÏÒÙÅ ÏÐÅÒÉÒÕÀÔ ÓÏÚÄÁÎÉÅÍ ÆÁÊÌÏ×.

  äÌÑ ÜÔÏÇÏ ÎÕÖÎÏ ÄÌÑ ÎÁÒÕÛÅÎÎÏÊ ËÏÍÁÎÄÙ ÓÄÅÌÁÔØ ÐÓÅ×ÄÏÎÉÍ ÓÏ ÓÌÏ×ÏÍ mytt(nocorrect) ÐÅÒÅÄ ÎÅÊ, Ô.Å.
  verb(
    alias mkdir='nocorrect mkdir'
  )
  äÌÑ ×ÙËÌÀÞÅÎÉÑ ÕÎÉ×ÅÒÓÁÌÉÚÁÃÉÉ, ÒÁÃÉÏÎÁÌØÎÏ ÓÄÅÌÁÔØ ÉÄÅÎÔÉÞÎÏ:
  verb(
    alias mkdir='noglob mkdir'
  )
  íÏÖÎÏ ÓÏ×ÍÅÓÔÉÔØ tt(nocorrect) É tt(noglob), ÅÓÌÉ ÈÏÔÉÔÅ, ÎÏ tt(nocorrect) ÄÏÌÖÎÏ ÓÔÏÑÔØ ÐÅÒ×ÙÍ, Ô.Ë. ÏÎÏ ÎÕÖÎÏ ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÅ, × ÔÏ ×ÒÅÍÑ ËÁË tt(noglob) ÒÁÓÓÍÁÔÒÉ×ÁÅÔÓÑ ÔÏÌØËÏ ÎÁ ×ÙÐÏÌÎÅÎÉÉ ËÏÍÁÎÄÙ.

  úÁÍÅÔØÔÅ ÔÁËÖÅ, ÞÔÏ ÛÅÌÌ ÆÕÎËÃÉÉ ÎÅ ÂÕÄÕÔ ÒÁÂÏÔÁÔØ: ÄÉÒÅËÔÉ×Ù ÄÏÌÖÎÙ ÂÙÔØ ÒÁÓÛÉÒÅÎÙ ÐÒÅÖÄÅ, ÞÅÍ ÁÎÁÌÉÚÉÒÕÅÔÓÑ ÏÓÔÁÌØÎÁÑ ÞÁÓÔØ ÓÔÒÏËÉ.

sect(ëÁË ÍÎÅ ÓÄÅÌÁÔØ, ÞÔÏÂÙ ÍÅÔÁ ËÌÁ×ÉÛÁ ÒÁÂÏÔÁÌÁ ÎÁ ÍÏ£Í xterm?)
label(35)

  ëÁË ÇÏ×ÏÒÉÔÓÑ × ÒÕËÏ×ÏÄÓÔ×Å, zsh ÎÕÖÎÏ ÓÏÏÂÝÉÔØ Ï ÍÅÔÁ ËÌÁ×ÉÛÅ, ÉÓÐÏÌØÚÕÑ mytt(bindkey -me) ÉÌÉ mytt(bindkey -mv) × ×ÁÛÅÍ .zshrc ÉÌÉ × ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÅ. ÷ÁÍ, ×ÏÚÍÏÖÎÏ ÔÁËÖÅ ÎÕÖÎÏ ÓËÁÚÁÔØ ÄÒÁÊ×ÅÒÕ ÔÅÒÍÉÎÁÌÁ, ÞÔÏÂÙ ÏÎ ÐÏÚ×ÏÌÉÌ `meta' ÂÉÔ ÓÉÍ×ÏÌÁ ÞÅÒÅÚ: mytt(stty pass8). ðÒÉÍÅÒ ÉÚ .zshrc:
  verb(
    [[ $TERM = "xterm" ]] && stty pass8 && bindkey -me
  )
  ÉÌÉ ÎÁ SYSVR4-ish ÓÉÓÔÅÍÁÈ ÂÅÚ pass8,
  verb(
    [[ $TERM = "xterm" ]] && stty -parenb -istrip cs8 && bindkey -me
  )
  (×ÙËÌÀÞÅÎÉÅ ËÏÎÔÒÏÌÑ ÞÅÔÎÏÓÔÉ ÎÅ ÌÉÛÉÔ ×ÙÓÛÅÇÏ ÂÉÔÁ, ÉÓÐÏÌØÚÕÊÔÅ ×ÏÓØÍÉÂÉÔÎÙÅ ÓÉÍ×ÏÌÙ).
  õÂÅÄÉÔÅÓØ, ÞÔÏ ÜÔÏ ÎÁÐÉÓÁÎÏ myem(äï) ÌÀÂÏÇÏ ÏÐÒÅÄÅÌÅÎÉÑ bindkey × ×ÁÛÅÍ .zshrc, ËÏÔÏÒÙÊ ÐÅÒÅÏÐÒÅÄÅÌÑÅÔ ËÌÁ×ÉÛÉ, ÎÏÒÍÁÌØÎÏ ÏÐÒÅÄÅÌÅÎÎÙÅ × ÒÁÓËÌÁÄËÅ emacs/vi. ÷ÁÍ ÔÁËÖÅ ÎÕÖÎÏ ÚÁÄÁÔØ tt(ÐÏÌÎÙÊ ×ÏÓØÍÉÂÉÔÎÙÊ ×Ù×ÏÄ) × ÆÁÊÌÅ tt(~/.Xdefaults), ÈÏÔÑ ÏÎ ×ËÌÀÞÅÎ ÐÏ ÕÍÏÌÞÁÎÉÀ É ÍÁÌÏ×ÅÒÏÑÔÎÏ, ÞÔÏ ËÔÏ-ÎÉÂÕÄØ Ó ÜÔÉÍ ÓÔÏÌËÎÅÔÓÑ.

  ÷ÁÍ ÎÅ ÎÕÖÎÁ ËÏÍÁÎÄÁ mytt(bindkey), ÞÔÏÂÙ ÏÐÒÅÄÅÌÉÔØ Ó×ÏÀ ÓÏÂÓÔ×ÅÎÎÕÀ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÍÅÔÁ ËÌÁ×ÉÛÉ, ÈÏÔÑ ×ÁÍ ×Å ÒÁ×ÎÏ ÎÕÖÎÁ ËÏÍÁÎÄÁ mytt(stty).

sect(ëÁË ÍÎÅ ÓÄÅÌÁÔØ, ÞÔÏÂÙ ÔÅËÕÝÁÑ ÄÉÒÅËÔÏÒÉÑ Á×ÔÏÍÁÔÉÞÅÓËÉ ×Ù×ÏÄÉÌÁÓØ × ÚÁÇÏÌÏ×ËÅ xterm?)

  ÷ÁÍ ÓÌÅÄÕÅÔ ÉÓÐÏÌØÚÏ×ÁÔØ ÓÐÅÃÉÁÌØÎÕÀ ÆÕÎËÃÉÀ mytt(chpwd), ËÏÔÏÒÁÑ ×ÙÚÙ×ÁÅÔÓÑ, ËÏÇÄÁ ÍÅÎÑÅÔÓÑ ÔÅËÕÝÁÑ ÄÉÒÅËÔÏÒÉÑ. óÌÅÄÕÀÝÉÊ ÓÃÅÎÁÒÉÊ ÐÒÏ×ÅÒÑÅÔ, Ñ×ÌÑÅÔÓÑ ÌÉ ÓÔÁÎÄÁÒÔÎÙÊ ×Ù×ÏÄ ÔÅÒÍÉÎÁÌÏÍ, ÔÏÇÄÁ × ÚÁÇÏÌÏ×ÏË ÐÉÛÅÔÓÑ ÔÅËÕÝÁÑ ÄÉÒÅËÔÏÒÉÑ, ÅÓÌÉ ÔÅÒÍÉÎÁÌ tt(xterm) ÉÌÉ ÄÒÕÇÏÊ ÏÔÎÏÓÉÔÅÌØÎÏ ÂÌÉÚËÉÊ, ÉÌÉ tt(sun-cmd).

  verb(
  chpwd() {
    [[ -t 1 ]] || return
    case $TERM in
      sun-cmd) print -Pn "\e]l%~\e\\"
        ;;
      *xterm*|rxvt|(dt|k|E)term) print -Pn "\e]2;%~\a"
        ;;
    esac
  }
  )

  éÚÍÅÎÉÔÅ mytt(%~), ÅÓÌÉ ÈÏÔÉÔÅ, ÞÔÏÂÙ ÓÏÏÂÝÅÎÉÑ ÂÙÌÉ ÒÁÚÌÉÞÎÙÍÉ.  (ðÁÒÁÍÅÔÒ mytt(-P) ÉÎÔÅÒÐÒÅÔÉÒÕÅÔ ÔÁËÕÀ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ ËÁË × ÐÒÉÇÌÁÛÅÎÉÉ, × ÜÔÏÍ ÓÌÕÞÁÅ ×ÙÚÙ×ÁÅÔ ÔÅËÕÝÕÀ ÄÉÒÅËÔÏÒÉÀ; ×Ù ËÏÎÅÞÎÏ ÍÏÖÅÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ ÚÄÅÓØ mytt($PWD), ÎÏ ÏÎÁ ÎÅ ÂÕÄÅÔ ÉÓÐÏÌØÚÏ×ÁÔØ ÎÏÔÁÃÉÀ mytt(~), ËÏÔÏÒÕÀ Ñ ÓÞÉÔÁÀ ÞÉÝÅ.) ÷ÏÚÍÏÖÎÏ ×Ù ÚÁÈÏÔÉÔÅ ×ÙÚ×ÁÔØ tt(chpwd) ÐÒÑÍÏ, ËÏÇÄÁ tt(xterm) ÚÁÐÕÓËÁÅÔÓÑ: ×ÁÍ ÎÕÖÎÏ ÔÏÌØËÏ ÐÏÍÅÓÔÉÔØ mytt(chpwd) × tt(.zshrc) ÐÏÓÌŠţ ÏÐÒÅÄÅÌÅÎÉÑ ÉÌÉ Á×ÔÏÚÁÇÒÕÚËÉ.

sect(ëÁË ÍÎÅ ÓÄÅÌÁÔØ, ÞÔÏÂÙ ÌÉÓÔ ÚÁ×ÅÒÛÅÎÉÑ ËÏÍÁÎÄ ÉÓÐÏÌØÚÏ×ÁÌ 8-ÂÉÔÎÙÅ ÓÉÍ×ÏÌÙ?)

  åÓÌÉ ×Ù Õ×ÅÒÅÎÙ, ÞÔÏ ×ÁÛ ÔÅÒÍÉÎÁÌ ÐÏÄÄÅÒÖÉ×ÁÅÔ ÉÈ, ÓÁÍÙÊ Ì£ÇËÉÊ ÐÕÔØ, ÎÁÞÉÎÁÑ Ó ×ÅÒÓÉÊ 3.0.6 É 3.1 ÛÅÌÌÁ, ÜÔÏ ÚÁÄÁÔØ ÐÁÒÁÍÅÔÒ tt(PRINT_EIGHT_BIT). ÷ ÐÒÉÎÃÉÐÅ, ÜÔÏ ÂÕÄÅÔ ÒÁÂÏÔÁÔØ Á×ÔÏÍÁÔÉÞÅÓËÉ, ÅÓÌÉ ×ÁÛ ËÏÍÐØÀÔÅÒ ÉÓÐÏÌØÚÕÅÔ ÓÉÓÔÅÍÕ `locale' É ÐÅÒÅÍÅÎÎÙÅ ÌÏËÁÌÉ ÚÁÄÁÎÙ ÐÒÁ×ÉÌØÎÏ, zsh ÐÏÊÍ£Ô ÉÈ. ôÅÍ ÎÅ ÍÅÎÅÅ, ÅÓÌÉ ÌÏËÁÌØ ÎÅ ÎÁÓÔÒÏÅÎÁ, ÂÕÄÅÔ ÎÁÍÎÏÇÏ ÐÒÏÝÅ ÚÁÄÁÔØ ÐÁÒÁÍÅÔÒ. äÌÑ ÒÁÎÎÉÈ ×ÅÒÓÉÊ zsh 3, ×ÁÍ ÐÒÉÄ£ÔÓÑ ÐÏÎÑÔØ ÌÏËÁÌÉ, ÓÍÏÔÒÉÔÅ ÓÔÒÁÎÉÃÙ ÓÐÒÁ×ÏÞÎÏÇÏ ÒÕËÏ×ÏÄÓÔ×Á tt(setlocale(3)) É tt(zshparam(1)), ÓÁÍÁÑ ÐÒÏÓÔÁÑ ×ÏÚÍÏÖÎÏÓÔØ - ÚÁÄÁÔØ tt(LC_ALL=en_US). äÌÑ ÂÏÌÅÅ ÓÔÁÒÙÈ ×ÅÒÓÉÊ ÌÅÇËÏÇÏ ÓÐÏÓÏÂÁ ÎÅÔ.

sect(ðÏÞÅÍÕ "ÓÔÒÅÌËÉ" (ËÌÁ×ÉÛÉ ÕÐÒÁ×ÌÅÎÉÑ ËÕÒÓÏÒÏÍ) ÎÅ ÒÁÂÏÔÁÀÔ?)

  ëÕÒÓÏÒÎÙÅ ËÌÁ×ÉÛÉ ÐÏÓÙÌÁÀÔ ÒÁÚÌÉÞÎÙÅ ËÏÄÙ, ÚÁ×ÉÓÑÝÉÅ ÏÔ ÔÅÒÍÉÎÁÌÁ; zsh ÚÎÁÅÔ ÔÏÌØËÏ ÈÏÒÏÛÏ ÉÚ×ÅÓÔÎÙÅ ×ÅÒÓÉÉ. åÓÌÉ ×Ù Õ×ÉÄÉÔÅ ÐÏÄÏÂÎÙÅ ÐÒÏÂÌÅÍÙ, ÔÏÇÄÁ ÐÏÐÙÔÁÊÔÅÓØ ÎÁÐÉÓÁÔØ ÓÌÅÄÕÀÝÅÅ × ×ÁÛ tt(.zshrc):

  verb(
    bindkey "$(echotc kl)" backward-char
    bindkey "$(echotc kr)" forward-char
    bindkey "$(echotc ku)" up-line-or-history
    bindkey "$(echotc kd)" down-line-or-history
  )

  åÓÌÉ ×Ù ÉÓÐÏÌØÚÕÅÔÅ ÒÅÖÉÍ vi, ÔÏÇÄÁ ÐÉÛÉÔÅ × ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÍ ÍÅÓÔÅ mytt(vi-backward-char) É mytt(vi-forward-char). þÔÏ ËÁÓÁÅÔÓÑ ×ÅÒÓÉÉ 4.0.1, zsh ÐÏÐÙÔÁÅÔÓÑ ÎÁÊÔÉ ÜÔÉ ËÏÄÙ É ÓÄÅÌÁÔØ ÐÒÉ×ÑÚÙ×ÁÎÉÅ (ÏÂÁ, É ÄÌÑ emacs, É ÄÌÑ vi), ÎÏ × ÎÅËÏÔÏÒÙÈ ÓÌÕÞÁÑÈ ÜÔÏ ÍÏÖÅÔ ÎÅ ÓÒÁÂÏÔÁÔØ.

  úÁÍÅÔØÔÅ ÔÁËÖÅ, ÞÔÏ ÄÏ ×ÅÒÓÉÉ 3.0 Ó ÐÒÉ×ÑÚÙ×ÁÎÉÅÍ ÐÒÏÉÚ×ÏÌØÎÏÊ ÍÎÏÇÏËÎÏÐÏÞÎÏÊ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ ÍÏÇÌÉ ÂÙÔØ ÐÒÏÂÌÅÍÙ, ÔÁË ÞÔÏ ÐÒÏ×ÅÒÑÊÔÅ ÓÃÅÎÁÒÉÊ Ó ×ÁÛÉÍÉ ÕÓÔÁÎÏ×ËÁÍ. á Ó ×ÅÒÓÉÉ 3.1.3 ÂÏÌØÛÉÅ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ ÐÏÄÄÅÒÖÉ×ÁÀÔÓÑ ÐÏ ÕÍÏÌÞÁÎÉÀ, Á ÉÍÅÎÎÏ × ÆÏÒÍÅ mytt(<ESC>O) ÓÌÅÄÕÀÝÅÊ ÚÁ mytt(A), mytt(B), mytt(C) ÉÌÉ mytt(D), ÔÁË ÖÅ ËÁË É ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÅ, ÕÓÔÁÎÏ×ÌÅÎÎÙÅ × ÎÁÞÁÌÅ mytt(<ESC>[), ÔÁË ÞÔÏ ÜÔÏ ÍÏÖÅÔ ÂÙÔØ ÉÚÌÉÛÎÉÍ.

  ðÒÁËÔÉÞÅÓËÁÑ ÐÒÏÂÌÅÍÁ, ËÏÔÏÒÁÑ ÉÎÏÇÄÁ ×ÏÚÎÉËÁÅÔ: ÅÓÔØ Ä×Á ÒÁÚÌÉÞÎÙÈ ÒÅÖÉÍÁ "ÓÔÒÅÌÏË", ÎÏÒÍÁÌØÎÙÊ ÒÅÖÉÍ É "ÓÔÒÅÌËÉ" ÎÁ ÄÏÐÏÌÎÉÔÅÌØÎÏÊ ËÌÁ×ÉÁÔÕÒÅ, ËÏÔÏÒÙÅ ÐÏÓÙÌÁÀÔ ÒÁÚÌÉÞÎÙÅ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ. èÏÔÑ ÜÔÏ ÂÏÌØÛÏÊ ÉÓÔÏÒÉÞÅÓËÉÊ ÁÒÔÅÆÁËÔ, ÎÏ ÉÎÏÇÄÁ ÂÙ×ÁÅÔ, ÞÔÏ ×ÁÛ ÔÅÒÍÉÎÁÌ ÐÅÒÅÛ£Ì Ó ÏÄÎÏÇÏ ÒÅÖÉÍÁ ÎÁ ÄÒÕÇÏÊ, ÎÁÐÒÉÍÅÒ, ËÁËÁÑ-ÎÉÂÕÄØ ÐÒÏÇÒÁÍÍÁ ÐÅÒÅÛÌÁ × ÄÒÕÇÏÊ ÒÅÖÉÍ, ÎÏ ÎÅ ÐÅÒÅÛÌÁ ÏÂÒÁÔÎÏ. ôÁËÉÍ ÏÂÒÁÚÏÍ ×Ù ÓÔÏÌËÎÕÌÉÓØ Ó ÜÔÉÍÉ ÜÆÆÅËÔÁÍÉ. ë ÓÞÁÓÔØÀ × ÜÔÏÍ ÓÌÕÞÁÅ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ ËÎÏÐËÉ "ÓÔÒÅÌËÉ", ×ÅÒÏÑÔÎÏ, ÂÕÄÅÔ ÓÔÁÎÄÁÒÔÎÏÊ, É ×Ù ÌÅÇËÏ ÓÍÏÖÅÔÅ ÚÁÓÔÁ×ÉÔØ ÒÁÂÏÔÁÔØ ÏÂÁ ×ÉÄÁ "ÓÔÒÅÌÏË". óÌÅÄÕÀÝÉÊ ËÏÄ ÄÅÌÁÅÔ ÜÔÏ:
  verb(
    bindkey '\e[A'  up-line-or-history
    bindkey '\e[B'  down-line-or-history
    bindkey '\e[C'  forward-char
    bindkey '\e[D'  backward-char
    bindkey '\eOA'  up-line-or-history
    bindkey '\eOB'  down-line-or-history
    bindkey '\eOC'  forward-char
    bindkey '\eOD'  backward-char
  )
  äÌÑ ÂÏÌØÛÉÎÓÔ×Á, ÄÁÖÅ ÓÍÕÔÎÏ VT100-ÓÏ×ÍÅÓÔÉÍÙÈ ÔÅÒÍÉÎÁÌÏ×, ÐÒÉ×ÅÄ£ÎÎÙÅ ×ÏÓÅÍØ ÉÎÓÔÒÕËÃÉÊ ÄÏ×ÏÌØÎÏ ÂÅÚÏÐÁÓÎÙ ÄÌÑ ×ÁÛÅÇÏ tt(.zshrc). ëÏÎÅÞÎÏ ×Ù ÍÏÖÅÔÅ ÚÁÍÅÎÉÔØ ÚÄÅÓØ ÒÁÚÌÉÞÎÙÅ ÆÕÎËÃÉÉ ÄÌÑ ×ÔÏÒÏÇÏ ÁÒÇÕÍÅÎÔÁ.

sect(ðÏÞÅÍÕ ÔÅÒÍÉÎÁÌ × ÎÅËÏÔÏÒÙÈ ÓÌÕÞÁÑÈ ×ÅÄ£Ô ÓÅÂÑ ÓÍÅÛÎÏ?)

  åÓÌÉ ×Ù ÉÓÐÏÌØÚÕÅÔÅ OpenWindows cmdtool ËÁË ×ÁÛ ÔÅÒÍÉÎÁÌ, ÌÀÂÁÑ ÜËÒÁÎÉÒÕÅÍÁÑ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ (ÎÁÐÒÉÍÅÒ ÐÒÏÉÚ×ÅÄ£ÎÎÁÑ ËÕÒÓÏÒÎÙÍÉ ËÎÏÐËÁÍÉ) ÂÕÄÅÔ ÐÒÏÇÌÏÞÅÎÁ É ÎÉËÏÇÄÁ ÎÅ ÄÏÓÔÉÇÎÕÔÁ zsh. éÌÉ ÉÓÐÏÌØÚÕÊÔÅ ÉÎÓÔÒÕÍÅÎÔÙ ÛÅÌÌÁ ÉÌÉ ÉÚÂÅÇÁÊÔÅ ËÏÍÁÎÄ Ó ÜËÒÁÎÉÒÕÅÍÙÍÉ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÑÍÉ. ÷Ù ÔÁËÖÅ ÍÏÖÅÔÅ ×ÙËÌÀÞÉÔØ ÐÒÏËÒÕÔËÕ ÉÚ ÍÅÎÀ cmdtool (ËÏÔÏÒÁÑ ÜÆÆÅËÔÉ×ÎÏ ÓÔÁÎÅÔ ÉÎÓÔÒÕÍÅÎÔÏÍ ÛÅÌÌÁ). åÓÌÉ ×ÁÍ ×Ó£-ÔÁËÉ ÎÕÖÎÁ ÐÒÏËÒÕÔËÁ, ÐÏÐÙÔÁÊÔÅÓØ ÉÓÐÏÌØÚÏ×ÁÔØ xterm Ó ÁËÔÉ×ÎÙÍÉ scrollbar'ÁÍÉ.

  üÔÏ ÎÅ ÐÒÏÂÌÅÍÁ, ÅÓÌÉ ×Ù ÉÓÐÏÌØÚÕÅÔÅ stty, ÞÔÏÂÙ ÉÚÍÅÎÉÔØ ËÁËÉÅ-ÎÉÂÕÄØ Ó×ÏÊÓÔ×Á ÔÅÒÍÉÎÁÌÁ, ÕÂÅÄÉÔÅÓØ, ÞÔÏ ×Ù ÎÅ ÐÒÏÓÉÌÉ zsh ÚÁÍÏÒÏÚÉÔØ Ó×ÏÊÓÔ×Á tty:
  ÎÁÂÅÒÉÔÅ
  verb(
    ttyctl -u
  )
  ÄÏ ÉÓÐÏÌØÚÏ×ÁÎÉÑ ËÏÍÁÎÄÙ stty.

  ó ÄÒÕÇÏÊ ÓÔÏÒÏÎÙ, ÅÓÌÉ ×Ù ÎÅ ÉÓÐÏÌØÚÕÅÔÅ stty É ×ÁÓ ÅÓÔØ ÐÒÏÂÌÅÍÙ, ×ÁÍ ÎÁÐÒÏÔÉ× ÎÕÖÎÁ: mytt(ttyctl -f), ÚÁÍÏÒÁÖÉ×ÁÀÝÁÑ ÔÅÒÍÉÎÁÌ ÏÔ ÇÌÀËÏ× ÄÒÕÇÉÈ ÐÒÏÇÒÁÍ (kermit ÚÎÁÅÔ, ËÁË ÉÈ ÄÅÌÁÔØ).

  üÔÕ ÐÒÏÂÌÅÍÕ Ñ ÎÁÂÌÀÄÁÌ ÎÁ ÌÉÞÎÏÍ ÏÐÙÔÅ (ÎÁ ÒÁÂÏÞÅÊ ÓÔÁÎÃÉÉ AIX 3.2 Ó xterm) - ÄÅÉÎÉÃÉÁÌÉÚÁÃÉÏÎÎÙÅ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ termcap, ÐÏÓÙÌÁÅÍÙÅ ÕÔÉÌÉÔÏÊ `less', ÂÙÌÉ ÐÒÉÞÉÎÏÊ ÔÏÇÏ, ÞÔÏ automargins ×ÙËÌÀÞÉÌÉÓØ --- ÆÁËÔÉÞÅÓËÉ - ÜÔÏ ÎÅ ÐÒÏÂÌÅÍÁ ÛÅÌÌÁ, ÎÏ ×Ù ×ÏÚÍÏÖÎÏ ÄÕÍÁÌÉ ÉÎÁÞÅ. þÔÏÂÙ ÜÔÏ ÉÓÐÒÁ×ÉÔØ, ÎÕÖÎÏ × ÐÅÒÅÍÅÎÎÏÊ ÏËÒÕÖÅÎÉÑ tt(LESS) ÐÒÉÓ×ÏÉÔØ `tt(X)', ÞÔÏÂÙ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ ÎÅ ÐÏÓÙÌÁÌÉÓØ. äÒÕÇÉÅ ÐÒÏÇÒÁÍÍÙ ÔÏÖÅ ÍÏÇÕÔ ÐÏÓÙÌÁÔØ ÔÁËÉÅ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ.

  åÓÌÉ myem(ÜÔÏ) ÎÅ ÐÒÏÂÌÅÍÁ, Á Õ ×ÁÓ ÅÓÔØ ÓÌÏÖÎÏÓÔÉ Ó ×ÎÅÛÎÉÍÉ ËÏÍÁÎÄÁÍÉ (ÎÅ Ñ×ÌÑÀÝÉÍÉÓÑ ÞÁÓÔØÀ zsh), É ×Ù ÄÕÍÁÅÔÅ, ÞÔÏ ×ÉÎÏÊ ÔÏÍÕ ÐÁÒÁÍÅÔÒÙ ÔÅÒÍÉÎÁÌÁ (ÎÁÐÒÉÍÅÒ, tt(^V) ÉÎÔÅÒÐÒÅÔÉÒÕÅÔÓÑ ËÁË `ÂÕË×ÁÌØÎÙÊ ÓÌÅÄÕÀÝÉÊ ÓÉÍ×ÏÌ' (`literal next character'), ËÏÇÄÁ ×Ù ÈÏÔÉÔÅ ÓÏ×ÓÅÍ ÐÏ-ÄÒÕÇÏÍÕ), ÐÏÐÒÏÂÕÊÔÅ
  verb(
    ttyctl -u
    STTY='lnext "^-"' commandname
  )
  (× ÄÁÎÎÏÍ ÐÒÉÍÅÒÅ). ïÂÒÁÔÉÔÅ ×ÎÉÍÁÎÉÅ, ÞÔÏ zsh ÎÅ ÓÂÒÁÓÙ×ÁÅÔ ÔÅÒÍÉÎÁÌ ÐÏÌÎÏÓÔØÀ: ÔÏÌØËÏ ÒÅÖÉÍÙ, ËÏÔÏÒÙÅ ÅÇÏ ÉÓÐÏÌØÚÕÀÔ, É ÍÎÏÖÅÓÔ×Ï ÓÐÅÃÉÁÌØÎÙÈ ÓÉÍ×ÏÌÏ× ÏÂÒÁÂÏÔËÉ (ÓÍ. tt(stty(1)) ÓÔÒÁÎÉÃÕ ÒÕËÏ×ÏÄÓÔ×Á).

sect(ðÏÞÅÍÕ zsh ÎÅ ÒÁÂÏÔÁÅÔ ÂÏÌØÛÅ × ÒÅÖÉÍÅ Emacs?)

  (üÔÁ ÉÎÆÏÒÍÁÃÉÑ ÐÏÓÔÕÐÉÌÁ ÏÔ Bart Schaefer É ÄÒÕÇÉÈ ÒÁÚÒÁÂÏÔÞÉËÏ×.)

  Emacs 19.29 ÉÌÉ ÂÌÉÚËÉÅ Ë ÎÅÍÕ ÐÅÒÅÓÔÁÀÔ ÉÓÐÏÌØÚÏ×ÁÔØ ÔÉÐ ÔÅÒÍÉÎÁÌÁ "emacs" × ÂÕÆÅÒÁÈ ÛÅÌÌÁ É ×ÚÁÍÅÎ ÅÇÏ ÓÔÁ×ÑÔ "dumb". Zsh ÐÒÏ×ÏÄÉÔ ÏÂÒÁÂÏÔËÕ emacs, ÔÏÌØËÏ ËÏÇÄÁ ÔÉÐ ÔÅÒÍÉÎÁÌÁ "emacs".

  ÷ÏÚÍÏÖÎÏ ÓÁÍÙÊ ÎÁÄ£ÖÎÙÊ ÓÐÏÓÏ ÒÅÛÉÔØ ÜÔÏ - ×ÚÇÌÑÎÕÔØ ÎÁ ÐÅÒÅÍÅÎÎÕÀ ÏËÒÕÖÅÎÉÑ mytt($EMACS), ËÏÔÏÒÁÑ ÉÍÅÅÔ ÚÎÁÞÅÎÉÅ mytt(t) × ÒÅÖÉÍÅ Emacs. îÁÐÉÓÁÔØ
  verb(
    [[ $EMACS = t ]] && unsetopt zle
  )
  × ×ÁÛ .zshrc, ÜÔÏÇÏ ÄÏÌÖÎÏ ÂÙÔØ ÄÏÓÔÁÔÏÞÎÏ.

  äÒÕÇÏÊ ÍÅÔÏÄ - ÜÔÏ ÎÁÐÉÓÁÔØ
  verb(
    #!/bin/sh
    TERM=emacs exec zsh
  )
  × ÆÁÊÌ ~/bin/eshell, ÚÁÔÅÍ mytt(chmod +x ~/bin/eshell), É ÕËÁÚÁÔØ emacs, ÞÔÏ ÂÙ ÏÎ ÉÓÐÏÌØÚÏ×ÁÌ ÅÇÏ ËÁË ÛÅÌÌ, ÄÏÂÁ×É×
  verb(
    (setenv "ESHELL" (expand-file-name "~/bin/eshell"))
  )
  × ~/.emacs.

3.11: ðÏÞÅÍÕ ÍÏÉ Á×ÔÏÚÁÇÒÕÖÁÅÍÙÅ ÆÕÎËÃÉÉ ÎÅ ÚÁÇÒÕÖÁÀÔÓÑ?

  ðÒÏÂÌÅÍÁ ×ÏÚÎÉËÁÅÔ ÉÚ-ÚÁ ÔÏÇÏ, ÞÔÏ ÅÓÔØ Ä×Á ÐÕÔÉ Á×ÔÏÚÁÇÒÕÚËÉ ÆÕÎËÃÉÊ (ÓÍÏÔÒÉÔÅ ÓÅËÃÉÀ AUTOLOADING FUNCTIONS ÒÕËÏ×ÏÄÓÔ×Á zsh, ÓÔÒÁÎÉÃÕ zshmisc, ÄÌÑ ÂÏÌÅÅ ÐÏÄÒÏÂÎÏÊ ÉÎÆÏÒÍÁÃÉÉ):
  enumerate(
  myeit() æÁÊÌ ÓÏÄÅÒÖÉÔ ÔÏÌØËÏ ÔÅÌÏ ÆÕÎËÃÉÉ, Ô.Å. ÎÅÔ ÚÁÇÏÌÏ×ËÁ ÆÕÎËÃÉÉ mytt(function foo {) ÉÌÉ mytt(foo () {), É ÓÌÅÄÏ×ÁÔÅÌØÎÏ ÎÅÔ ÚÁ×ÅÒÛÅÎÉÑ mytt(}) × ËÏÎÃÅ. üÔÏ ÔÒÁÄÉÃÉÏÎÎÙÊ ÍÅÔÏÄ zsh. ðÒÅÉÍÕÝÅÓÔ×Ï × ÔÏÍ, ÞÔÏ ÆÁÊÌ ÎÁÚÙ×ÁÅÔÓÑ ÔÏÞÎÏ ÔÁËÖÅ, ËÁË É ÓÃÅÎÁÒÉÊ. þÔÏÂÙ ÏÐÒÅÄÅÌÉÔØ ÆÕÎËÃÉÀ mytt(xhead () { print -n "\033]2;$*\a"; }), ÆÁÊÌ ÄÏÌÖÅÎ ÔÏÌØËÏ ÓÏÄÅÒÖÁÔØ mytt(print -n "\033]2;$*\a").  
  myeit() æÁÊÌ ÓÏÄÅÒÖÉÔ ÐÏÌÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ ÆÕÎËÃÉÉ, É ÍÏÖÅÔ ÄÁÖÅ ÄÒÕÇÏÊ ËÏÄ: ÏÎ ÚÁÐÕÓËÁÅÔÓÑ, ËÏÇÄÁ ÆÕÎËÃÉÀ ÎÕÖÎÏ ÚÁÇÒÕÚÉÔØ, ÔÏÇÄÁ ÆÕÎËÃÉÑ ÓÁÍÁ ÚÁÐÕÓËÁÅÔÓÑ. üÔÏ ÍÅÔÏÄ ksh. þÔÏÂÙ ÏÐÒÅÄÅÌÉÔØ ÔÁËÕÀ ÖÅ ÆÕÎËÃÉÀ mytt(xhead), ×Ó£ ÏÂÙÞÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ ÓÌÅÄÕÅÔ ÐÏÍÅÓÔÉÔØ × ÆÁÊÌ.
  )

  ÷ ÓÔÁÒÙÈ ×ÅÒÓÉÑÈ zsh, ÄÏ ×ÅÒÓÉÉ 3.0, ÉÓÐÏÌØÚÏ×ÁÌÓÑ ÔÏÌØËÏ ÐÅÒ×ÙÊ ÍÅÔÏÄ, ÕÂÅÄÉÔÅÓØ, ÞÔÏ ÆÁÊÌ, ÓÏÄÅÒÖÁÝÉÊ ÔÅÌÏ ÆÕÎËÃÉÉ, ÎÁÊÄÅÎ. ÷Ù ÔÁËÖÅ ÍÏÖÅÔÅ ÏÐÒÅÄÅÌÑÔØ ÄÒÕÇÉÅ ÆÕÎËÃÉÉ × ÓÔÁÎÄÁÒÔÎÏÊ ÆÏÒÍÅ ÏÐÒÅÄÅÌÅÎÉÊ, ÈÏÔÑ ÏÎÉ ÂÕÄÕÔ ÐÅÒÅÏÐÒÅÄÅÌÅÎÙ ËÁÖÄÙÊ ÒÁÚ, ËÏÇÄÁ ×Ù ×ÙÚÙ×ÁÅÔÅ ÇÌÁ×ÎÕÀ ÆÕÎËÃÉÀ.

  ÷ ×ÅÒÓÉÉ 3.0.x ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ×ÔÏÒÏÊ ÍÅÔÏÄ ÏÐÒÅÄÅÌÅÎÉÑ Á×ÔÏÚÁÇÒÕÖÁÅÍÙÈ ÆÕÎËÃÉÊ. ë ÎÅÓÞÁÓÔØÀ, ÜÔÏÔ ÍÅÔÏÄ ÎÅ ÓÏ×ÍÅÓÔÉÍ ÓÏ ÓÔÁÒÙÍ ÐÏ×ÅÄÅÎÉÅÍ zsh, ËÏÔÏÒÏÅ ÐÏÚ×ÏÌÑÌÏ ×ÁÍ ÐÅÒÅÏÐÒÅÄÅÌÑÔØ ÆÕÎËÃÉÀ, ËÏÇÄÁ ×٠ţ ×ÙÚÙ×ÁÅÔÅ.

  îÁÞÉÎÁÑ Ó ×ÅÒÓÉÉ 3.1, ÐÏÑ×ÉÌÓÑ ÐÁÒÁÍÅÔÒ tt(KSH_AUTOLOAD), ÐÏÚ×ÏÌÑÀÝÉÊ ÐÏÌÎÕÀ ksh ÓÏ×ÍÅÓÔÉÍÏÓÔØ, Ô.Å ÆÕÎËÃÉÑ myem(ÄÏÌÖÎÁ) ÂÙÔØ ÎÁÐÉÓÁÎÁ ÐÏ ×ÔÏÒÏÊ ÆÏÒÍÅ, ÐÒÉ×ÅÄ£ÎÎÏÊ ×ÙÛÅ. åÓÌÉ ÜÔÏÔ ÐÁÒÁÍÅÔÒ ÎÅ ÚÁÄÁÎ, zsh ÐÏÐÙÔÁÅÔÓÑ ÕÇÁÄÁÔØ, ËÁËÕÀ ÆÏÒÍÕ ×Ù ÉÓÐÏÌØÚÕÅÔÅ: ÅÓÌÉ ÆÁÊÌ ÓÏÄÅÒÖÉÔ ÔÏÌØËÏ ÐÏÌÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ ÆÕÎËÃÉÉ ÐÏ ×ÔÏÒÏÊ ÆÏÒÍÅ É ÎÉÞÅÇÏ ÂÏÌØÛÅ, ËÒÏÍÅ ËÏÍÍÅÎÔÁÒÉÅ× É Ó×ÏÂÏÄÎÏÇÏ ÍÅÓÔÁ, ÔÏ ÂÕÄÅÔ ÉÓÐÏÌØÚÏ×ÁÎÁ ÆÕÎËÃÉÑ, ÏÐÒÅÄÅÌ£ÎÎÁÑ × ÆÁÊÌÅ; ÉÎÁÞÅ ÂÕÄÅÔ ÚÁÄÅÊÓÔ×Ï×ÁÎ ÓÔÁÒÙÊ ÍÅÔÏÄ. åÓÌÉ ËÏÎÅÞÎÏ ÕÓÔÁÎÏ×ÌÅÎ ÐÁÒÁÍÅÔÒ mytt(emulate ksh).

  (èÏÒÏÛÉÊ ÔÒÀË, ÞÔÏÂÙ ÚÁÇÒÕÚÉÔØ ×ÓÅ ÆÕÎËÃÉÉ × ÄÁÎÎÏÊ ÄÉÒÅËÔÏÒÉÉ, ÜÔÏ ×ËÌÀÞÉÔØ ÓÔÒÏËÕ mytt(autoload ~/fns/*(:t)) × .zshrc; ËÕÓÏË × ËÒÕÇÌÙÈ ÓËÏÂËÁÈ ÕÄÁÌÉÔ ÉÚ ÉͣΠÆÁÊÌÏ× ÄÉÒÅËÔÏÒÉÉ, ÏÓÔÁ×É× ÔÏÌØËÏ ÉÍÅÎÁ ÆÕÎËÃÉÊ.)

sect(ëÁË ÒÁÂÏÔÁÅÔ ÂÁÚÏ×ÁÑ ÁÒÉÆÍÅÔÉËÁ?)

  ôÅÐÅÒØ ×ÏÓÐÒÉÎÉÍÁÅÔÓÑ ÓÉÎÔÁËÓÉÓ ksh, Ô.Å.
  verb(
    let 'foo = 16#ff'
  )
  ÉÌÉ ÜË×É×ÁÌÅÎÔÎÏ
  verb(
    (( foo = 16#ff ))
  )
  ÉÌÉ ÄÁÖÅ
  verb(
    foo=$((16#ff))
  )
  ïÒÉÇÉÎÁÌØÎÙÊ ÓÉÎÔÁËÓÉÓ ÂÙÌ
  verb(
    (( foo = [16]ff ))
  )
  --- ÜÔÏ ÂÙÌÏ ÏÓÎÏ×ÁÎÏ ÎÁ ÎÅÐÒÁ×ÉÌØÎÏÍ ÐÏÎÉÍÁÎÉÉ ÒÕËÏ×ÏÄÓÔ×Á ksh. ïÎ ×Ó£ ÅÝ£ ÒÁÂÏÔÁÅÔ, ÎÏ ÓÞÉÔÁÅÔÓÑ ÕÓÔÁÒÅ×ÛÉÍ. ôÏÇÄÁ
  verb(
    echo $foo
  )
  ÄÁÓÔ ÏÔ×ÅÔ `255'. íÏÖÎÏ ÏÂßÑ×ÉÔØ ÐÅÒÅÍÅÎÎÙÅ Ñ×ÎÏ ÃÅÌÙÍÉ, ÞÅÒÅÚ
  verb(
    typeset -i foo
  )
  ËÏÔÏÒÏÅ ÄÁÓÔ ÒÁÚÌÉÞÎÙÅ ÜÆÆÅËÔÙ: Á ÉÍÅÎÎÏ ÏÓÎÏ×ÁÎÉÅ, ÉÓÐÏÌØÚÕÅÍÏÅ × ÐÅÒ×ÏÍ ÐÒÉÓ×ÁÉ×ÁÎÉÉ (ÛÅÓÔÎÁÄÃÁÔÉÒÉÞÎÏÅ × ÐÒÉÍÅÒÅ) × ÐÏÓÌÅÄÓÔ×ÉÉ ÉÓÐÏÌØÚÕÅÔÓÑ ×ÓÑËÉÊ ÒÁÚ, ËÏÇÄÁ `foo' ÏÔÏÂÒÁÖÁÅÔÓÑ (ÈÏÔÑ ×ÎÕÔÒÅÎÎÅ ÐÒÅÄÓÔÁ×ÌÅÎÉÅ ÎÅ ÍÅÎÑÅÔÓÑ). çÁÒÁÎÔÉÒÏ×ÁÔØ, ÞÔÏÂÙ foo ×ÓÅÇÄÁ ÏÔÏÂÒÁÖÁÌÁÓØ × ÄÅÓÑÔÉÞÎÏÊ ÓÉÓÔÅÍÅ, ÎÕÖÎÏ ÏÂßÑ×ÉÔØ ÔÁË
  verb(
    typeset -i 10 foo
  )
  ËÏÔÏÒÏÅ ÚÁÐÒÁÛÉ×ÁÅÔ ÄÅÓÑÔÉÞÎÏÅ ÏÓÎÏ×ÁÎÉÅ ÄÌÑ ×Ù×ÏÄÁ. ÷Ù ÍÏÖÅÔÅ ÉÚÍÅÎÉÔØ ÏÓÎÏ×ÁÎÉÅ ×Ù×ÏÄÁ ÓÕÝÅÓÔ×ÕÀÝÅÊ ÐÅÒÅÍÅÎÎÏÊ ÓÌÅÄÕÀÝÉÍ ÓÐÏÓÏÂÏÍ. íÅÔÏÄ mytt($(( ... ))) ÂÕÄÅÔ ×ÓÅÇÄÁ ÏÔÏÂÒÁÖÁÔØ × ÄÅÓÑÔÉÞÎÏÊ, ÚÁ ÉÓËÌÀÞÅÎÉÅÍ ×ÅÒÓÉÉ 3.1.9, × ËÏÔÏÒÏÊ ÐÏÑ×ÉÌÁÓØ ÎÏ×ÁÑ ×ÏÚÍÏÖÎÏÓÔØ ×ÙÂÏÒÁ ÏÓÎÏ×ÁÎÉÑ ÄÌÑ ×Ù×ÏÄÁ:
  verb(
    print $(( [#16] 255 ))
  )
  
sect(ëÁË ÍÎÅ ÐÏÌÕÞÉÔØ ÎÏ×ÕÀ ÓÔÒÏËÕ × ÐÒÉÇÌÁÛÅÎÉÉ?)
label(313)

  ÷Ù ÍÏÖÅÔÅ ÚÁËÌÀÞÉÔØ ÓÉÍ×ÏÌ ÎÏ×ÏÊ ÓÔÒÏËÉ × ËÁ×ÙÞËÉ, Ô.Å.
  verb(
    PROMPT="Hi Joe,
    what now?%# "
  )
  åÓÌÉ ×Ù ÚÁÄÁÌÉ ÐÁÒÁÍÅÔÒ cshjunkiequotes, ËÏÔÏÒÙÊ ÔÏÒÍÏÚÉÔ ÜÔÏ ÐÏ×ÅÄÅÎÉÅ, ×Ù ÄÏÌÖÎÙ ÚÁËÌÀÞÉÔØ ÜÔÏ × mytt(unsetopt cshjunkiequotes) É mytt(setopt cshjunkiequotes), ÉÌÉ ÎÁÐÉÓÁÔØ ÜÔÏ × ×ÁÛ tt(.zshrc) ÄÏ ÚÁÄÁÎÉÑ ÜÔÏÇÏ ÐÁÒÁÍÅÔÒÁ.

  ÷ ÎÅÄÁ×ÎÉÈ ×ÅÒÓÉÑÈ zsh (ÎÅ 3.0), ÅÓÔØ ÆÏÒÍÁ ÚÁÐÉÓÉ, ËÏÔÏÒÁÑ ÉÎÔÅÒÐÒÅÔÉÒÕÅÔ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ ÔÉÐÁ `tt(\n)', ÎÏ ÉÎÁÞÅ ÄÅÊÓÔ×ÕÅÔ × ÏÄÉÎÁÒÎÙÈ ËÁ×ÙÞËÁÈ: ÏËÒÕÖÉÔÅ ÓÔÒÏËÕ ÔÁË tt($'...'). óÌÅÄÏ×ÁÔÅÌØÎÏ:
  verb(
    PROMPT=$'Hi Joe,\nwhat now?%# '
  )
  ÈÏÒÏÛÉÊ ÓÐÏÓÏ ÓÄÅÌÁÔØ ÔÏ, ÞÔÏ ×ÁÍ ÎÁÄÏ. úÁÍÅÔØÔÅ, ÞÔÏ ÜÔÏ ÎÅ ÒÁÓÛÉÒÅÎÉÅ ÐÒÉÇÌÁÛÅÎÉÑ, ËÏÔÏÒÏÅ ÜËÒÁÎÉÒÕÅÔ `tt(\n)' × ÎÏ×ÕÀ ÓÔÒÏËÕ.

sect(ðÏÞÅÍÕ mytt(bindkey ^a command-name) ÉÌÉ mytt(stty intr ^-) ×ÅÄÕÔ ÓÅÂÑ ËÁË-ÔÏ ÓÍÅÛÎÏ?)

  ÷ÏÚÍÏÖÎÏ, ×Ù ÚÁÄÁÌÉ ÐÁÒÁÍÅÔÒ extendedglob, × ÜÔÏÍ ÓÌÕÞÁÅ tt(^) É tt(#) - ÍÅÔÁÓÉÍ×ÏÌÙ. tt(^a) - ÏÂÏÚÎÁÞÁÅÔ ÌÀÂÏÊ ÆÁÊÌ, ÚÁ ÉÓËÌÀÞÅÎÉÅÍ tt(a), Ô.Þ ÜÔÏ ÓÔÒÏËÁ ÉÎÔÅÒÐÒÅÔÉÒÕÅÔÓÑ ËÁË bindkey ÓÏÐÒÏ×ÏÖÄ£ÎÎÏ£ ÓÐÉÓËÏÍ ÆÁÊÌÏ×. üËÒÁÎÉÒÕÊÔÅ tt(^) Ó ÐÏÍÏÝØÀ ÂÜËÓÌÜÛÁ ÉÌÉ ÚÁËÌÀÞÉÔÅ tt(^a) × ËÁ×ÙÞËÉ.

sect(ðÏÞÅÍÕ Ñ ÎÅ ÍÏÇÕ ÂÏÌØÛÅ Ó×ÑÚÁÔØ ÓÏÞÅÔÁÎÉÑ tt(\C-s) É tt(\C-q) ?)

  ëÌÁ×ÉÛÉ control-s É control-q ÔÅÐÅÒØ ËÏÎÔÒÏÌÉÒÕÀÔ ÐÏÔÏË ÐÏ ÕÍÏÌÞÁÎÉÀ, ÄÏ ÔÅÈ ÐÏÒ ÐÏËÁ ×Ù ÎÅ ×ÙËÌÀÞÉÔÅ ÅÇÏ Ó ÐÏÍÏÝØÀ mytt(stty -ixon) ÉÌÉ ÐÅÒÅÏÐÒÅÄÅÌÉÔÅ ÕÐÒÁ×ÌÅÎÉÅ Ó ÐÏÍÏÝØÀ mytt(stty start) ÉÌÉ mytt(stty stop). (üÔÏ ÄÅÌÁÅÔÓÑ ÓÉÓÔÅÍÏÊ, ÎÅ zsh; ÛÅÌÌ ÐÒÏÓÔÏ ÐÒÉÎÉÍÁÅÔ ÜÔÉ ÕÓÔÁÎÏ×ËÉ.) äÒÕÇÉÍÉ ÓÌÏ×ÁÍÉ, tt(\C-s) ÏÓÔÁÎÁ×ÌÉ×ÁÅÔ ×ÅÓØ ×Ù×ÏÄ ÎÁ ÔÅÒÍÉÎÁÌ, × ÔÏ ×ÒÅÍÑ ËÁË tt(\C-q) ×ÏÚÏÂÎÏ×ÌÑÅÔ ÅÇÏ.

  åÓÔØ ÐÁÒÁÍÅÔÒ tt(NO_FLOW_CONTROL), ÞÔÏÂÙ ÎÅ ÄÁÔØ zsh ËÏÎÔÒÏÌÉÒÏ×ÁÔØ ÐÏÔÏË É, ÓÌÅÄÏ×ÁÔÅÌØÎÏ, ×ÏÚÏÂÎÏ×ÉÔØ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ËÌÁ×ÉÛ: ÎÁÐÉÛÉÔÅ mytt(setopt noflowcontrol) × ×ÁÛ tt(.zshrc).

sect(ëÁË ÍÎÅ ×ÙÐÏÌÎÉÔØ ËÏÍÁÎÄÕ mytt(foo) ×ÎÕÔÒÉ ÆÕÎËÃÉÉ foo?)

  ëÏÍÁÎÄÁ mytt(command foo) ËÁË ÒÁÚ ÜÔÏ É ÄÅÌÁÅÔ. üÔÏ ÐÒÉÍÅÎÑÅÔÓÑ ÔÏÌØËÏ ÆÕÎËÃÉÑÈ, ÎÏ ÎÅ × ÐÓÅ×ÄÏÎÉÍÁÈ. úÁÍÅÔØÔÅ, ÞÔÏ ÏÛÉÂËÁ ×ÒÏÄÅ
  verb(
    zsh: job table full or recursion limit exceeded
  )
  ÐÒÉÚÎÁË ÔÏÇÏ, ÞÔÏ ×Ù ÐÙÔÁÅÔÅÓØ ×ÙÚ×ÁÔØ `foo' × ÆÕÎËÃÉÉ `foo' ÂÅÚ ÉÓÐÏÌØÚÏ×ÁÎÉÑ `command'. åÓÌÉ mytt(foo) ÎÅ ×ÎÅÛÎÑÑ, Á ×ÓÔÒÏÅÎÎÁÑ ËÏÍÁÎÄÁ, ÔÏ ×ÚÁÍÅÎ ÉÓÐÏÌØÚÕÅÔÅ mytt(builtin foo).

sect(ðÏÞÅÍÕ ÐÏÄÓÔÁÎÏ×ËÁ ËÏÍÁÎÄÙ ÉÚ ÉÓÔÏÒÉÉ ÐÒÉ ÉÓÐÏÌØÚÏ×ÁÎÉÉ ×ÏÓËÌÉÃÁÔÅÌØÎÏÇÏ ÚÎÁËÁ ×ÏÚ×ÒÁÝÁÅÔ ÞÔÏ-ÔÏ ÓÍÅÛÎÏÅ?)

  åÓÌÉ Õ ×ÁÓ ÅÓÔØ ËÏÍÁÎÄÁ "tt(echo !-2:$ !$)", ÐÅÒ×ÁÑ ÐÏÄÓÔÁÎÏ×ËÁ ÉÚ ÉÓÔÏÒÉÉ ÚÁÄÁÓÔ ÐÏÄÓÔÁÎÏ×ËÕ ÐÏ ÕÍÏÌÞÁÎÉÀ, ÎÁ ËÏÔÏÒÕÀ ÂÕÄÕÔ ÓÓÙÌÁÔØÓÑ ÓÌÅÄÕÀÝÉÅ ÐÏÄÓÔÁÎÏ×ËÉ Ó ÏÄÎÉÍ ×ÏÓËÌÉÃÁÔÅÌØÎÙÍ ÚÎÁËÏÍ, Ô.Å. !$ ÓÔÁÎÅÔ ÜË×É×ÁÌÅÎÔÎÏ tt(!-2:$). ðÁÒÁÍÅÔÒ tt(CSH_JUNKIE_HISTORY) ÓÄÅÌÁÅÔ, ÞÔÏÂÙ ×ÓÅ ÏÄÉÎÏÞÎÙÅ ×ÏÓËÌÉÃÁÔÅÌØÎÙÅ ÚÎÁËÉ ÓÓÙÌÁÌÉÓØ ÎÁ ÐÏÓÌÅÄÎÀÀ ËÏÍÁÎÄÕ.

sect(ðÏÞÅÍÕ zsh ÕÂÉ×ÁÅÔ ×ÓÅ ÆÏÎÏ×ÙÅ ÐÒÏÃÅÓÓÙ ÐÒÉ ×ÙÈÏÄÅ?)

  óÁÍÙÊ ÐÒÏÓÔÏÊ ÏÔ×ÅÔ: ×Ù ÎÅ ÐÒÏÓÉÌÉ Ï ÏÂÒÁÔÎÏÍ. Zsh (× ÏÔÌÉÞÉÅ ÏÔ [t]csh) ÄÁ£Ô ×ÙÂÏÒ: ÕÂÉ×ÁÔØ ÆÏÎÏ×ÙÅ ÚÁÄÁÎÉÑ ÉÌÉ ÎÅÔ: ÓÕÝÅÓÔ×ÕÅÔ ÐÁÒÁÍÅÔÒ mytt(nohup), ÅÓÌÉ ×Ù ÎÅ ÈÏÔÉÔÅ ÉÈ ÕÂÉ×ÁÔØ. úÁÍÅÔØÔÅ, ÞÔÏ ×Ù ×ÓÅÇÄÁ ÓÍÏÖÅÔÅ ÚÁÐÕÓËÁÔØ ÐÒÏÇÒÁÍÍÙ Ó ÐÏÍÏÝØÀ mytt(nohup) ÎÁ ÐÅÒÅÄÎÅÍ ÐÌÁÎÅ, ÎÅÚÁ×ÉÓÉÍÏ ÏÔ ÔÏÇÏ, ÚÁÄÁÎ ÐÁÒÁÍÅÔÒ ÉÌÉ ÎÅÔ, ËÏÔÏÒÙÊ ÐÒÅÄÏÔ×ÒÁÔÉÔ ÚÁÄÁÞÕ ÏÔ ÕÂÉÊÓÔ×Á ÐÒÉ ×ÙÈÏÄÅ. (÷ ÄÅÊÓÔ×ÉÔÅÌØÎÏÓÔÉ mytt(nohup) ×ÎÅÛÎÑÑ ËÏÍÁÎÄÁ.)

  ÷ÓÔÒÏÅÎÎÁÑ mytt(disown) - ÏÞÅÎØ ÐÏÌÅÚÎÁ × ÜÔÏÍ ÐÌÁÎÅ: ÅÓÌÉ zsh ÉÎÆÏÒÍÉÒÕÅÔ, ÞÔÏ Õ ×ÁÓ ÅÓÔØ ÆÏÎÏ×ÙÅ ÚÁÄÁÎÉÑ, ËÏÇÄÁ ×Ù ÐÙÔÁÅÔÅÓØ ×ÙÊÔÉ, ×Ù ÍÏÖÅÔÅ mytt(disown) ×ÓÅÈ, ËÏÇÏ ÎÅ ÎÕÖÎÏ ÕÂÉ×ÁÔØ ÐÒÉ ×ÙÈÏÄÅ. üÔÏ ÔÁËÖÅ ÈÏÒÏÛÉÊ ÓÐÏÓÏ ×ÙÐÏÌÎÅÎÉÑ ÒÁÂÏÔ, ËÏÔÏÒÙÍ ÎÅ ÔÒÅÂÕÅÔÓÑ ÛÅÌÌ (ÔÁËÉÅ ËÁË ÓÏÚÄÁÎÉÅ ÏËÎÁ), ÛÅÌÌ ÄÌÑ ÎÉÈ ÎÅ×ÉÄÉÍ. ðÏÄÏÂÎÏ ÜÔÏÍÕ, ×Ù ÍÏÖÅÔÅ ÚÁÐÕÓÔÉÔØ ÆÏÎÏ×ÕÀ ÚÁÄÁÞÕ Ó ÐÏÍÏÝØÀ mytt(&!) ×ÍÅÓÔÏ mytt(&) ÎÁ ËÏÎÃÅ, ËÏÔÏÒÁÑ Á×ÔÏÍÁÔÉÞÅÓËÉ ÐÏÔÅÒÑÅÔ ÒÏÄÉÔÅÌÑ.

sect(ëÁË ÍÎÅ ÐÒÏÓÍÏÔÒÅÔØ ×Ó£ ÓÏÄÅÒÖÉÍÏÅ ÉÓÔÏÒÉÉ?)

  óËÁÚÁÔØ zsh, ÞÔÏÂÙ ÎÁÞÁÌ Ó ÐÅÒ×ÏÇÏ ÜÌÅÍÅÎÔÁ: mytt(history 1). üÌÅÍÅÎÔÙ × ÎÁÞÁÌÅ, ËÏÔÏÒÙÈ ÂÏÌØÛÅ ÎÅÔ × ÐÁÍÑÔÉ, ÂÕÄÕÔ ÏÐÕÝÅÎÙ.

sect(ðÏÞÅÍÕ ÄÒÕÇÏÊ ÓÉÎÔÁËÓÉÓ ÃÉËÌÁ ÔÏÖÅ ÒÁÂÏÔÁÅÔ, ÎÁÐÒÉÍÅÒ mytt(while {...} {...})?)

  Zsh ÐÒÅÄÏÓÔÁ×ÌÑÅÔ ÁÌØÔÅÒÎÁÔÉ×Õ ÔÒÁÄÉÃÉÏÎÎÏÊ sh-like ÆÏÒÍÅ Ó mytt(do),
  verb(
    while TEST; do COMMANDS; done
  )
  ÐÏÚ×ÏÌÑÑ ×ÁÍ ÉÍÅÔØ COMMANDS, ÏÇÒÁÎÉÞÅÎÎÙÅ ÄÒÕÇÉÍÉ ËÏÍÁÎÄÎÙÍÉ ÓÔÒÕËÔÕÒÁÍÉ, ÞÁÓÔÏ mytt({...}). ðÒÁ×ÉÌÁ ÄÏ×ÏÌØÎÏ ÕÓÌÏÖΣÎÎÙÅ É × ÂÏÌØÛÉÎÓÔ×Å ÓÃÅÎÁÒÉÅ×, ×ÏÚÍÏÖÎÏ, ÂÅÚÏÐÁÓÎÅÅ É, ËÏÎÅÞÎÏ, ÂÏÌÅÅ ÓÏ×ÍÅÓÔÉÍÏ - ÐÒÉÄÅÒÖÉ×ÁÔØÓÑ sh-like ÐÒÁ×ÉÌ. åÓÌÉ ×Ù ÕÄÉ×ÌÅÎÙ, Ñ ÐÒÉ×ÅÄÕ ÎÅÂÏÌØÛÏÅ ÒÕËÏ×ÏÄÓÔ×Ï.

  þÔÏÂÙ ÜÔÏ ÒÁÂÏÔÁÌÏ, ×Ù ÄÏÌÖÎÙ ÕÂÅÄÉÔØÓÑ, ÞÔÏ TEST ÔÏÞÎÏ ÏÐÒÅÄÅÌ£Î. îÁÐÒÉÍÅÒ, ×ÏÔ ÜÔÏ ÒÁÂÏÔÁÅÔ:
  verb(
    while (( i++ < 10 )) { echo i is $i; }
  )
  ÎÏ ÜÔÏ îå ÂÕÄÅÔ ÒÁÂÏÔÁÔØ:
  verb(
    while let "i++ < 10"; { echo i is $i; }   # îÅ ÐÒÁ×ÉÌØÎÏ!
  )
  ðÒÉÞÉÎÁ × ÔÏÍ, ÞÔÏ ÐÏÓÌÅ mytt(while), ÌÀÂÏÊ ÓÐÉÓÏË ËÏÍÁÎÄ × ÓÉÌÅ. ô.Å. ÓÀÄÁ ×ËÌÀÞÉÔÓÑ ×ÅÓØ ÓÐÉÓÏË mytt(let "i++ < 10"; { echo i $i; }); ÓÉÎÔÁËÓÉÞÅÓËÉÊ ÁÎÁÌÉÚÁÔÏÒ ÐÒÏÓÔÏ ÎÅ ÚÎÁÅÔ, ËÏÇÄÁ ÅÍÕ ÏÓÔÁÎÏ×ÉÔØÓÑ. ëÒÏÍÅ ÔÏÇÏ, ÐÒÏÐÕÓËÁÔØ ÔÏÞËÕ Ó ÚÁÐÑÔÏÊ - ÎÅÐÒÁ×ÉÌØÎÏ, ËÁË ÜÔÏ ÓÄÅÌÁÎÏ mytt({...}) × ÁÒÇÕÍÅÎÔÅ mytt(let). îÏ×ÁÑ ÓÔÒÏËÁ ×ÅÄ£Ô ÓÅÂÑ ÔÁË ÖÅ, ËÁË É ÔÏÞËÁ Ó ÚÁÐÑÔÏÊ, ÔÁË ÞÔÏ ×Ù ÎÅ ÍÏÖÅÔÅ ÓÔÁ×ÉÔØ ÓËÏÂËÕ ÎÁ ÓÌÅÄÕÀÝÅÊ ÓÔÒÏËÅ ËÁË × C.

  ô.Ï., ËÏÇÄÁ ÉÓÐÏÌØÚÕÅÔÅ ÜÔÏÔ ÓÉÎÔÁËÓÉÓ, test, ÓÌÅÄÕÀÝÅÅ ÚÁ mytt(while) ÄÏÌÖÎÏ ÂÙÔØ ÚÁËÌÀÞÅÎÏ × ÓËÏÂËÉ, ÌÀÂÙÅ ÉÚ ÎÉÈ: mytt(((...))), mytt([[...]]), mytt({...}) ÉÌÉ mytt((...)) ÂÕÄÕÔ ÒÁÂÏÔÁÔØ. (ïÎÉ ÉÍÅÀÔ ÉÈ ÏÂÙÞÎÏÅ ÓÉÎÔÁËÓÉÞÅÓËÏÅ ÚÎÁÞÅÎÉÅ ÔÏÖÅ, ËÏÎÅÞÎÏ; ÏÎÉ ÎÅÉÚÍÅÎÎÙ.) úÁÍÅÔØÔÅ, ÞÔÏ ÚÄÅÓØ ÔÏÖÅ ÎÅÐÒÉÍÅÎÉÍÁ ÔÏÞËÁ Ó ÚÁÐÑÔÏÊ, Ô.Ë. ÓÌÕÞÁÊ ÓÔÁÎÏ×ÉÔÓÑ ÉÄÅÎÔÉÞÎÙÊ ÐÒÅÄÙÄÕÝÅÍÕ:
  verb(
    while (( i++ < 10 )); { echo i is $i; }   # îÅ ÐÒÁ×ÉÌØÎÏ!
  )
  üÔÏ ÖÅ ÓÐÒÁ×ÅÄÌÉ×Ï ÄÌÑ ËÏÎÓÔÒÕËÃÉÊ mytt(if) É mytt(until):
  verb(
    if { true } { echo yes } else { echo no }
  )
  ÎÏ Ó mytt(for), ËÏÔÏÒÏÍÕ ÎÕÖÅÎ ÔÏÌØËÏ ÓÐÉÓÏË ÓÌÏ×, ×Ù ÍÏÖÅÔÅ ÉÚÂÅÖÁÔØ ÜÔÏÇÏ:
  verb(
    for foo in a b; { echo foo is $a; bar=$foo; }
  )
  ÐÏÓËÏÌØËÕ ÁÎÁÌÉÚÁÔÏÒ ÚÎÁÅÔ, ÞÔÏ ÅÍÕ ÎÕÖÎÏ ×Ó£ ÄÏ ÐÅÒ×ÏÊ ÔÏÞËÉ Ó ÚÁÐÑÔÏÊ. ðÏ ÔÏÊ ÖÅ ÐÒÉÞÉÎÅ ÎÅÔ ÐÒÏÂÌÅÍ É ÄÌÑ ËÏÎÓÔÒÕËÃÉÊ mytt(repeat), mytt(case) ÉÌÉ mytt(select); ÆÁËÔÉÞÅÓËÉ, mytt(repeat) ÄÁÖÅ ÎÅ ÎÕÖÄÁÅÔÓÑ × ÔÏÞËÅ Ó ÚÁÐÑÔÏÊ, ÐÏÓËÏÌØËÕ ÏÎ ÓÞÉÔÁÅÔ ÔÏÌØËÏ ÏÄÎÏ ÓÌÏ×Ï.

  üÔÏ ÐÏ×ÅÄÅÎÉÅ ÎÅ ÚÁ×ÉÓÉÔ ÏÔ ÐÁÒÁÍÅÔÒÁ SHORTLOOPS (ÓÍ. ÒÕËÏ×ÏÄÓÔ×Ï), ËÏÔÏÒÙÊ ÓÔÒÏÇÏ ÎÁÓÔÒÏÇÏ ÎÅÌØÚÑ ÉÓÐÏÌØÚÏ×ÁÔØ × ÐÒÏÇÒÁÍÍÁÈ, Ô.Ë. ÏÎ ÍÏÖÅÔ ÓÉÌØÎÏ ÚÁÐÕÔÁÔØ.

sect(ðÏÞÅÍÕ ÍÏÑ ÉÓÔÏÒÉÑ ÎÅ ÓÏÈÒÁÎÉÌÁÓØ?)
label(321)

  ÷ zsh ×ÁÍ ÎÕÖÎÏ ÚÁÄÁÔØ 3 ÐÅÒÅÍÅÎÎÙÈ, ÞÔÏÂÙ ÉÓÔÏÒÉÑ ÓÏÈÒÁÎÑÌÁÓØ ÐÒÉ ×ÙÈÏÄÅ ÉÚ ÛÅÌÌÁ. îÁÐÒÉÍÅÒ,
  verb(
    HISTSIZE=200
    HISTFILE=~/.zsh_history
    SAVEHIST=200
  )
  tt($HISTSIZE) - ÓËÏÌØËÏ ÓÔÒÏË ÎÅÐÏÓÒÅÄÓÔ×ÅÎÎÏ ÓÏÈÒÁÎÑÔØ,
  tt($HISTFILE) - ËÕÄÁ ÚÁÐÉÓÙ×ÁÔØ ÉÓÔÏÒÉÀ,
  tt($SAVEHIST) - ÓËÏÌØËÏ ÓÔÒÏË ÚÁÐÉÓÙ×ÁÔØ. óÁÍÏÅ ÐÒÏÓÔÏÅ - ÞÔÏÂÙ ÏÎÁ ÂÙÌÁ ÒÁ×ÎÁ tt($HISTSIZE), ËÁË ÐÏËÁÚÁÎÏ ×ÙÛÅ. åÓÔØ ÔÁËÖÅ ÅÝ£ ÒÁÚÌÉÞÎÙÅ ÐÁÒÁÍÅÔÒÙ, ×ÌÉÑÀÝÉÅ ÎÁ ÉÓÔÏÒÉÀ; ÓÍÏÔÒÉÔÅ ÒÕËÏ×ÏÄÓÔ×Ï.

sect(ëÁË ÐÏÌÕÞÉÔØ ÚÎÁÞÅÎÉÅ ÐÅÒÅÍÅÎÎÏÊ, ÉÍÑ ËÏÔÏÒÏÊ Ñ×ÌÑÅÔÓÑ ÚÎÁÞÅÎÉÅÍ ÄÒÕÇÏÊ ÐÅÒÅÍÅÎÎÏÊ?)

  ðÒÏÂÌÅÍÁ ÔÁËÁÑ - Õ ×ÁÓ ÅÓÔØ ÐÅÒÅÍÅÎÎÁÑ tt($E), ÓÏÄÅÒÖÁÝÁÑ ÓÔÒÏËÕ mytt(EDITOR), É ÐÅÒÅÍÅÎÎÁÑ tt($EDITOR), ÓÏÄÅÒÖÁÝÁÑ ÓÔÒÏËÕ mytt(emacs), ÉÌÉ ÞÔÏ-ÎÉÂÕÄØ ÐÏÄÏÂÎÏÅ. ëÁË ×Ù ÄÏÂÅÒ£ÔÅÓØ ÏÔ tt($E) ÄÏ emacs ÏÄÎÉÍ ÜÔÁÐÏÍ?

  óÔÁÎÄÁÒÔÎÏÇÏ ÓÐÏÓÏÂÁ ÎÅÔ, ÞÔÏÂÙ ÜÔÏ ÓÄÅÌÁÔØ. ôÅÍ ÎÅ ÍÅÎÅÅ, × zsh ÅÓÔØ ÉÄÉÏÍÁ (ÄÏÓÔÕÐÎÁ ×Ï ×ÓÅÈ ×ÅÒÓÉÑÈ zsh, ÎÁÞÉÎÁÑ Ó 3.0) ÄÌÑ ÜÔÏÇÏ:
  verb(
    print ${(e)E:+\$$E}
  )
  ðÏËÁ ÐÒÏÉÇÎÏÒÉÒÕÊÔÅ mytt((e)). mytt(:+) ÚÎÁÞÉÔ: ÅÓÌÉ ÐÅÒÅÍÅÎÎÁÑ tt($E) ÚÁÄÁÎÁ, ÚÁÍÅÎÉÔØ ÓÌÅÄÕÀÝÉÍ, Ô.Å. mytt(\$$E). üÔÏ ÒÁÓÛÉÒÑÅÔÓÑ ÄÏ mytt($EDITOR) ÐÏ ÏÂÙÞÎÙÍ ÐÒÁ×ÉÌÁÍ. îÁËÏÎÅÃ, mytt((e)) ÏÂÏÚÎÁÞÁÅÔ `ÏÃÅÎÉÔÅ ×ÙÒÁÖÅÎÉÅ, ËÏÔÏÒÏÅ ×Ù ÔÏÌØËÏ ÞÔÏ ÓÄÅÌÁÌÉ'. üÔÏ ÄÁÓÔ mytt(emacs).

  þÔÏÂÙ ÓÄÅÌÁÔØ ÜÔÏ ÓÔÁÎÄÁÒÔÎÙÍÉ ÓÒÅÄÓÔ×ÁÍÉ, ×ÏÓÐÏÌØÚÕÊÔÅÓØ mytt(eval):
  verb(
    eval echo \$$E
  )
  ÐÒÏÉÚ×ÅÄ£Ô ÔÁËÏÊ ÖÅ ÒÅÚÕÌØÔÁÔ.

  ÷ÅÒÓÉÉ, ÎÁÞÉÎÁÑ Ó 3.1.6, ÐÏÚ×ÏÌÑÀÔ ×ÁÍ ÄÅÌÁÔØ ÜÔÏ ÎÅÐÏÓÒÅÄÓÔ×ÅÎÎÏ ÞÅÒÅÚ ÎÏ×ÙÅ ÆÌÁÇÉ; mytt(${(P)E}).

  éÎÏÇÄÁ ÌÀÄÉ ÚÁÍÅÞÁÀÔ, ÞÔÏ ÓÉÎÔÁËÓÉÓ mytt(${${E}}) ÐÒÁ×ÉÌØÎÙÊ É ÏÖÉÄÁÀÔ, ÞÔÏ Õ ÎÅÇÏ ÅÓÔØ ÜÔÏÔ ÜÆÆÅËÔ. ÷ÏÚÍÏÖÎÏ ÄÏÌÖÅÎ, ÎÏ × ÐÅÒ×ÙÅ ÄÎÉ ÓÕÝÅÓÔ×Ï×ÁÎÉÑ zsh ÂÙÌÏ ÎÁÊÄÅÎÏ ÕÄÏÂÎÙÍ ÄÅÌÁÔØ ÒÁÚÌÉÞÎÙÅ ÚÁÍÅÎÙ ÞÅÒÅÚ ÏÄÉÎÁËÏ×ÙÊ ÐÁÒÁÍÅÔÒ; ÎÁÐÒÉÍÅÒ, mytt(${${file##**/}%.*}) ÕÄÁÌÑÅÔ ×Ó£ ÄÏ ÐÏÓÌÅÄÎÅÇÏ ÓÌÅÛÁ × ÆÁÊÌÅ mytt($file), ÚÁÔÅÍ ×Ó£ ÏÔ ÐÏÓÌÅÄÎÅÊ ÔÏÞËÉ, ×ËÌÀÞÁÑ É Å£(ÐÏÐÒÏÂÕÊÔÅ, ÂÕÄÅÔ ÒÁÂÏÔÁÔØ!). ô.Þ. × mytt(${${E}}), ×ÎÕÔÒÅÎÎÉÅ mytt(${...}) × ÄÅÊÓÔ×ÉÔÅÌØÎÏÓÔÉ ÎÉÞÅÇÏ ÎÅ ÄÅÌÁÀÔ.

sect(ëÁË ÐÒÅÄÏÔ×ÒÁÔÉÔØ ÚÁÔÉÒÁÎÉÅ ÓÏÏÂÝÅÎÉÑ, × ËÏÔÏÒÏÍ ÎÅÔ ÓÉÍ×ÏÌÁ ÎÏ×ÏÊ ÓÔÒÏËÉ, ÐÒÉÇÌÁÛÅÎÉÅÍ ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ?)
  
  ðÒÏÂÌÅÍÁ ×ÏÔ × Þ£Í:
  verb(
    % echo -n foo
    % 
  )
  É tt(foo) ÐÅÒÅÐÉÓÁÌÁÓØ ÐÒÉÇÌÁÛÅÎÉÅÍ tt(%). üÔÏ ÐÒÏÉÓÈÏÄÉÔ ÐÏÔÏÍÕ, ÞÔÏ ÐÁÒÁÍÅÔÒ tt(PROMPT_CR) ÁËÔÉ×ÅÎ ÐÏ ÕÍÏÌÞÁÎÉÀ, ËÏÔÏÒÙÊ ×ÙÐÏÌÎÑÅÔ ÐÅÒÅ×ÏÄ ÓÔÒÏËÉ ÐÅÒÅÄ ÐÒÉÇÌÁÛÅÎÉÅÍ, ÄÌÑ ÔÏÇÏ, ÞÔÏÂÙ ÐÒÏ×ÅÒÉÔØ, ÞÔÏ ÒÅÄÁËÔÏÒ ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ ÚÎÁÅÔ × ËÁËÏÍ ÏÎ ÓÔÏÌÂÃÅ (ÜÔÏ ÎÕÖÎÏ ÄÌÑ ÐÒÁ×ÉÌØÎÏÇÏ ÐÏÚÉÃÉÏÎÉÒÏ×ÁÎÉÑ ÐÒÁ×ÏÓÔÏÒÏÎÎÅÇÏ ÐÒÉÇÌÁÛÅÎÉÑ (mytt($RPROMPT), mytt($RPS1)) É, ÞÔÏÂÙ ÉÚÂÅÖÁÔØ ÒÁÚÒÕÛÅÎÉÑ ÜËÒÁÎÁ, ËÏÇÄÁ ×ÙÐÏÌÎÑÅÔÓÑ ÒÅÄÁËÔÉÒÏ×ÁÎÉÅ ÓÔÒÏËÉ). åÓÌÉ ×Ù ÄÏÂÁ×ÉÔÅ tt(unsetopt promptcr) × ×ÁÛ tt(.zshrc), ×Ù Õ×ÉÄÉÔÅ ÌÀÂÏÊ ÞÁÓÔÉÞÎÙÊ ×Ù×ÏÄ, ÎÏ ×ÁÛ ÜËÒÁÎ ÍÏÖÅÔ ×ÙÇÌÑÄÅÔØ ÓÔÒÁÎÎÏ ÐÏÓÌÅ ÎÁÖÁÔÉÑ "Enter" ÉÌÉ ÏÂÎÏ×ÌÅÎÉÑ ÜËÒÁÎÁ.

  äÒÕÇÏÅ ÒÅÛÅÎÉÅ ÄÌÑ ÍÎÏÇÉÈ ÔÅÒÍÉÎÁÌÏ× - ÜÔÏ ÏÐÒÅÄÅÌÉÔØ ÆÕÎËÃÉÀ precmd, ËÏÔÏÒÁÑ ×Ù×ÏÄÉÔ ÛÉÒÉÎÕ ÜËÒÁÎÎÏÇÏ ÐÒÏÓÔÒÁÎÓÔ×Á, ×ÏÔ ÔÁË:
  verb(
    function precmd {
      echo -n ${(l:$COLUMNS:::):-}
    }
  )
  (ïÂßÑÓÎÅÎÉÅ: ÐÕÓÔÏÊ ÐÁÒÁÍÅÔÒ ÒÁÓÛÉÒÑÅÔ ËÏÌÉÞÅÓÔ×Ï ÚÁÐÏÌÎÅÎÎÙÈ ËÏÌÏÎÏË ÎÁ ÜËÒÁÎÅ.) æÕÎËÃÉÑ precmd ÂÕÄÅÔ ÔÏÌØËÏ ÏÐÕÓËÁÔØ ÜËÒÁÎ ÎÁ ÎÏ×ÕÀ ÓÔÒÏËÕ, ÅÓÌÉ ×Ù×ÏÄ ÂÙÌ × ÓÔÒÏËÅ ÐÒÉÇÌÁÛÅÎÉÑ, ÉÎÁÞÅ ÄÏÐÏÌÎÉÔÅÌØÎÏÅ ÐÒÏÓÔÒÁÎÓÔ×Ï ÂÕÄÅÔ ÕÄÁÌÅÎÏ ÄÅÊÓÔ×ÉÅÍ tt(PROMPT_CR). èÏÔÑ ÜÔÏ ÏÂÙÞÎÏ ×ÙÇÌÑÄÉÔ ÐÒÅËÒÁÓÎÏ, ÒÅÚÕÌØÔÁÔ ÐÒÅÄÙÄÕÝÅÇÏ ÐÒÏÓÔÒÁÎÓÔ×Á ÂÕÄÅÔ ×ËÌÀÞ£Î, ËÏÇÄÁ ×Ù ×ÙÄÅÌÑÅÔÅ ÔÅËÓÔ ÍÙÛØÀ.

  ïÄÎÁ ÐÏÓÌÅÄÎÑÑ ÁÌØÔÅÒÎÁÔÉ×Á - ÐÏÓÔÁ×ÉÔØ ÐÅÒÅ×ÏÄ ÓÔÒÏËÉ × ÐÒÉÇÌÁÛÅÎÉÉ -- ÓÍÏÔÒÉÔÅ ×ÏÐÒÏÓ link(3.13)(313) ÄÌÑ ÜÔÏÇÏ.

sect(þÔÏ ÓÌÕÞÉÌÏÓØ Ó ÏÐÅÒÁÃÉÑÍÉ ËÏÐÉÒÏ×ÁÎÉÑ É ×ÙÒÅÚÁÎÉÑ × xterm?)

  ÷ ÂÏÌØÛÉÎÓÔ×Å ÓÏ×ÒÅÍÅÎÎÙÈ UNIX ÓÉÓÔÅÍÁÈ, ×ÙÒÅÚÁÎÉÅ ÔÅËÓÔÁ ÉÚ ÏÄÎÏÇÏ ÏËÎÁ É ×ÓÔÁ×ËÁ × ÄÒÕÇÏÅ ÄÏÌÖÎÙ ÒÁÂÏÔÁÔØ ÏÔÌÉÞÎÏ. ôÅÍ ÎÅ ÍÅÎÅÅ, ÎÅ ÎÅËÏÔÏÒÙÈ ÓÉÓÔÅÍÁÈ ÅÓÔØ ÐÒÏÂÌÅÍÙ, Ó×ÑÚÁÎÎÙÅ Ó ÔÅÍ, ËÁË ÏÐÅÒÉÒÏ×ÁÔØ ÔÅÒÍÉÎÁÌÏÍ: ÂÏÌØÛÉÎÓÔ×Ï ÐÒÏÇÒÁÍÍ ÏÖÉÄÁÀÔ, ÞÔÏ ÔÅÒÍÉÎÁÌ × ÒÅÖÉÍÅ `canonical input mode', ÜÔÏ ÏÚÎÁÞÁÅÔ, ÞÔÏ ÐÒÏÇÒÁÍÍÁ ÐÅÒÅÄÁ£Ô ×ÓÀ ÓÔÒÏËÕ ÎÁ ××ÏÄ ÚÁ ÏÄÉÎ ÒÁÚ, × ÔÏ ÖÅ ×ÒÅÍÑ, ÄÌÑ ÒÅÄÁËÔÉÒÏ×ÁÎÉÑ ÛÅÌÌÕ ÎÕÖÅÎ ÓÉÍ×ÏÌ ÚÁ ÏÄÉÎ ÒÁÚ É ÏÎ ÄÏÌÖÅÎ ÂÙÔØ × ÒÅÖÉÍÅ `non-canonical input mode'. ÷ ÓÉÓÔÅÍÁÈ, Ï ËÏÔÏÒÙÈ ÉÄ£Ô ÒÅÞØ, ××ÏÄ ÍÏÖÅÔ ÂÙÔØ ÐÏÔÅÒÑÎ ÉÌÉ ÐÅÒÅÕÐÏÒÑÄÏÞÅÎ, ËÏÇÄÁ ÉÚÍÅÎÑÀÔÓÑ ÒÅÖÉÍÙ. ÷ ÄÅÊÓÔ×ÉÔÅÌØÎÏÓÔÉ ÓÕÝÅÓÔ×ÕÀÔ Ä×Å ÒÁÚÌÉÞÎÙÅ ÐÒÏÂÌÅÍÙ:
  enumerate(
  myeit() ëÏÇÄÁ ×Ù ×ÓÔÁ×ÌÑÅÔÅ ÞÔÏ-ÎÉÂÕÄØ × ÔÏ ×ÒÅÍÑ, ËÏÇÄÁ ÐÒÏÇÒÁÍÍÁ ÚÁÐÕÝÅÎÁ, ÛÅÌÌ ÉÚ×ÌÅÞ£Ô ÜÔÏ ÐÏÚÖÅ. ïÂÙÞÎÏ, ÂÙÌ ÔÅÓÔ, ËÏÔÏÒÙÊ ÉÓÐÏÌØÚÏ×ÁÌÓÑ ÔÏÌØËÏ ÎÁ ÓÉÓÔÅÍÁÈ, ÇÄÅ ÐÒÏÂÌÅÍÁ ÔÏÞÎÏ ÓÕÝÅÓÔ×ÕÅÔ, Ô.Þ. ÜÔÏ ×ÏÚÍÏÖÎÏ ÎÁ ÓÉÓÔÅÍÁÈ, ËÏÔÏÒÙÅ ÎÅ ÐÒÏÛÌÉ ÜÔÏÔ ÔÅÓÔ (ÎÁÐÒÉÍÅÒ, ÎÁ ÏÐÒÅÄÅÌ£ÎÎÙÈ ×ÅÒÓÉÑÈ IRIX, ËÁË ×ÙÑÓÎÉÌÏÓØ); ÐÒÏÄÏÌÖÅÎÉÑ ÓÔÒÏË ÔÁËÖÅ ÎÅ ÂÙÌÉ ÏÂÒÁÂÏÔÁÎÙ ÐÒÁ×ÉÌØÎÏ. âÏÌÅÅ ÎÁÄ£ÖÎÙÊ ÍÅÔÏÄ ÐÏÑ×ÉÌÓÑ Ó ×ÅÒÓÉÊ 3.0.6 É 3.1.6.
  myeit() ëÏÇÄÁ ÛÅÌÌ ÖÄ£Ô ××ÏÄÁ, Á ×Ù ×ÓÔÁ×ÌÑÅÔÅ ËÕÓÏË ÔÅËÓÔÁ, ÓÏÄÅÒÖÁÝÉÊ ÂÏÌÅÅ ÏÄÎÏÊ ÚÁ×ÅÒÛ£ÎÎÏÊ ËÏÍÁÎÄÙ. ë ÎÅÓÞÁÓÔØÀ, ÜÔÏ ÂÏÌÅÅ ÔÒÕÄÎÁÑ ÐÒÏÂÌÅÍÁ: ÒÅÄÁËÔÏÒ ÕÖÅ ÓÔÁÌ ÁËÔÉ×ÎÙÍ, ÎÏ ÅÇÏ ÎÕÖÎÏ ×ÙËÌÀÞÉÔØ, ËÏÇÄÁ ÐÅÒ×ÁÑ ËÏÍÁÎÄÁ ×ÙÐÏÌÎÑÅÔÓÑ. ûÅÌÌ ÒÏ×ÎÙÍ ÓÞ£ÔÏÍ ÎÅ ÚÎÁÅÔ: ÏÓÔÁ×ÛÉÊÓÑ ÔÅËÓÔ - ÜÔÏ ÐÁÒÁÍÅÔÒÙ ËÏÍÁÎÄÙ ÉÌÉ ÄÒÕÇÉÅ ËÏÍÁÎÄÙ ÛÅÌÌÁ, Ô.Å. ÐÒÏÓÔÏ ÎÉÞÅÇÏ ÎÅ ÍÏÖÅÔ ÓÄÅÌÁÔØ. ôÅÍ ÎÅ ÍÅÎÅÅ, ÅÓÔØ ÏÄÎÁ ÈÉÔÒÏÓÔØ: ÐÏÓÔÁ×ØÔÅ `tt({)' ÎÁ ÏÔÄÅÌØÎÏÊ ÓÔÒÏËÅ, ÚÁÔÅÍ ×ÓÔÁ×ØÔÅ ÔÅËÓÔ ÄÌÑ ××ÏÄÁ, Á ÐÏÔÏÍ, ÔÁËÖÅ ÎÁ ÏÔÄÅÌØÎÏÊ ÓÔÒÏËÅ, ÎÁÐÉÛÉÔÅ `tt(})'. ûÅÌÌ ÎÅ ÂÕÄÅÔ ÎÉÞÅÇÏ ×ÙÐÏÌÎÑÔØ ÄÏ ÔÅÈ ÐÏÒ, ÐÏËÁ ÎÅ ÓÞÉÔÁÅÔ ÚÁËÒÙ×ÁÀÝÕÀÓÑ ÓËÏÂËÕ; ×ÅÓØ ××ÏÄ ÞÉÔÁÅÔÓÑ ÐÏÓÔÒÏÞÎÏ (ÄÌÑ ÎÁÄ£ÖÎÏÓÔÉ ÍÏÇÕÔ ÐÏÔÒÅÂÏ×ÁÔØÓÑ ÉÓÐÒÁ×ÌÅÎÉÑ, ÕÐÏÍÑÎÕÔÙÅ ×ÙÛÅ).
  )
  
sect(ëÁË ÍÎÅ ÒÁÚÕËÒÁÓÉÔØ ÐÒÉÇÌÁÛÅÎÉÅ ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ × Ã×ÅÔÎÏÍ xterm?)

  (éÌÉ `color xterm', ÅÓÌÉ ×Ù ÞÉÔÁÅÔÅ × Þ£ÒÎÏ-ÂÅÌÏÍ.) ÷ÁÍ ÎÕÖÎÏ ÎÁÊÔÉ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ, ËÏÔÏÒÁÑ ÇÅÎÅÒÉÒÕÅÔ ÒÁÚÌÉÞÎÙÅ Ã×ÅÔÁ, ÉÚ ÒÕËÏ×ÏÄÓÔ×Á Ë ×ÁÛÅÍÕ ÜÍÕÌÑÔÏÒÕ ÔÅÒÍÉÎÁÌÁ; ÅÓÔØ ANSI ÓÔÁÎÄÁÒÔ Ï Ã×ÅÔÁÈ. ÷ ÎÅÄÁ×ÎÉÈ (3.1.6) ÄÉÓÔÒÉÂÕÔÉ×ÁÈ zsh ÐÏÑ×ÉÌÁÓØ ÓÉÓÔÅÍÁ ÔÅÍ ÄÌÑ Ã×ÅÔÏ×ÏÊ ÏÂÒÁÂÏÔËÉ; ÄÁÖÅ ÅÓÌÉ ×Ù ÜÔÏÇÏ ÎÅ ×ÉÄÉÔÅ, ÕÓÔÁÎÏ×ÌÅÎÎÁÑ ÆÕÎËÃÉÑ `mytt(colors)' (ÏÂÏÚÎÁÞÁÅÔ `colours', ÅÓÌÉ ×Ù ÞÉÔÁÅÔÅ ÜÔÏ × Þ£ÒÎÏ-ÂÅÌÏÍ) ÄÁ£Ô ÜËÒÁÎÉÒÏ×ÁÎÎÕÀ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ. ÷Ù ÄÏÌÖÎÙ ÎÁÐÉÓÁÔØ ËÏÄ ÐÒÉÍÅÒÎÏ ÔÁË (ÚÁÉÍÓÔ×Ï×ÁÎÏ ÏÔ Oliver Kiddle):
  verb(
    PS1=$'%{\e[1;31m%}<úÄÅÓØ ×ÁÛÅ ÐÒÉÇÌÁÛÅÎÉÅ>%{\e[0m%}'
  )
  mytt($') ×ÎÅ ËÁ×ÙÞÅË ×ÅÒÎ£Ô `mytt(\e)' × ÎÁÓÔÏÑÝÉÊ ÜËÒÁÎÉÒÏ×ÁÎÎÙÊ ÓÉÍ×ÏÌ; ÜÔÏ ÒÁÂÏÔÁÅÔ ÔÏÌØËÏ Ó ×ÅÒÓÉÉ 3.1.4, Ô.Å. ÅÓÌÉ ×Ù ÉÓÐÏÌØÚÕÅÔÅ 3.0.x, ×ÁÍ ÎÕÖÎÏ ÞÔÏ-ÎÉÂÕÄØ ÐÏÈÏÖÅÅ ÎÁ
  verb(
    PS1="$(print '%{\e[1;31m%}<ðÒÉÇÌÁÛÅÎÉÅ ÚÄÅÓØ>%{\e[0m%}')"
  )
  `mytt(%{...%})' ÉÓÐÏÌØÚÕÅÔÓÑ × ÐÒÉÇÌÁÛÅÎÉÑÈ ÄÌÑ ÓÔÒÏË, ËÏÔÏÒÙÅ ÎÅ ÐÏËÁÚÙ×ÁÀÔÓÑ ËÁË ÓÉÍ×ÏÌÙ, Ô.Þ. ËÏÄ ÐÒÉÇÌÁÛÅÎÉÑ ÎÅ ÂÕÄÅÔ ÐÒÏÓÞÉÔÙ×ÁÔØ ÄÌÉÎÕ ÐÒÉÇÌÁÛÅÎÉÑ, Ô.Ë. ÜÔÏ ÍÏÖÅÔ ÐÌÏÈÏ ÓËÁÚÁÔØÓÑ ÎÁ ÒÅÄÁËÔÉÒÏ×ÁÎÉÉ. òÅÚÕÌØÔÁÔ ËÏÄÁ `mytt(<ESC>[1;31m)' ÓÄÅÌÁÅÔ ÐÒÉÇÌÁÛÅÎÉÅ ËÒÁÓÎÙÍ, Á `mytt(<ESC>[0m)' ×ÅÒÎ£Ô ×Ó£ ÎÁ ÍÅÓÔÏ, Ô.Þ. ÏÓÔÁÌØÎÁÑ ÞÁÓÔØ ÓÔÒÏËÉ ÎÅ ÉÚÍÅÎÉÔÓÑ.

sect(ðÏÞÅÍÕ ÐÒÉ ×ÙÐÏÌÎÅÎÉÉ ËÏÍÁÎÄÙ `tt(foo 2>&1 >foo.out | bar)' ×Ù×ÏÄ ÄÕÂÌÉÒÕÅÔÓÑ?)

  üÔÏ ÎÅÍÎÏÇÏ ÎÅÏÖÉÄÁÎÎÙÊ ÜÆÆÅËÔ ÐÁÒÁÍÅÔÒÁ tt(MULTIOS), ËÏÔÏÒÙÊ ÚÁÄÁÎ ÐÏ ÕÍÏÌÞÁÎÉÀ. äÁ×ÁÊÔÅ ×ÚÇÌÑÎÅÍ ÂÌÉÖÅ:
  verb(
    foo 2>&1 >foo.out | bar
  )
  ÷Ù ×ÏÚÍÏÖÎÏ ÏÖÉÄÁÅÔÅ, ÞÔÏ ËÏÍÁÎÄÁ mytt(foo) ÐÅÒÅÎÁÐÒÁ×ÉÔ Ó×ÏÊ ÓÔÁÎÄÁÒÔÎÙÊ ×Ù×ÏÄ × ÐÏÔÏË ××ÏÄÁ ËÏÍÁÎÄÙ mytt(bar), × ÔÏ ÖÅ ×ÒÅÍÑ Ó×ÏÉ ÏÛÉÂËÉ ÂÕÄÕÔ × ÆÁÊÌÅ mytt(foo.out). ÷ ÄÅÊÓÔ×ÉÔÅÌØÎÏÓÔÉ, ×Ù ×ÉÄÉÔÅ, ÞÔÏ ×Ù×ÏÄ ÉÄ£Ô × ÆÁÊÌ É × ÐÏÔÏË. þÔÏ ÂÙ ÓÔÁÌÏ ÑÓÎÅÅ, ×ÏÔ ÔÁËÏÊ ÖÅ ÐÒÉÍÅÒ Ó ÒÅÁÌØÎÙÍÉ ËÏÍÁÎÄÁÍÉ:
  verb(
    % { print output; print error >&2 } 2>&1 >foo.out | sed 's/error/erratic'
    erratic
    output
    % cat foo.out
    output
  )
  É ×Ù ×ÉÄÉÔÅ, ËÁË `tt(output)' ÐÏÑ×ÌÑÅÔÓÑ Ä×ÁÖÄÙ.

  óÔÁÎÅÔ ÅÝ£ ÑÓÎÅÅ, ÞÔÏ ÐÒÏÉÓÈÏÄÉÔ, ÅÓÌÉ ÍÙ ÎÁÐÉÛÅÍ:
  verb(
    % print output >foo1.out >foo2.out
    % cat foo1.out
    output
    % cat foo2.out
    output
  )
  ÷Ù ÎÁ×ÅÒÎÏÅ ÕÚÎÁÌÉ, ÞÔÏ ÜÔÏ ÓÔÁÎÄÁÒÔÎÁÑ ×ÏÚÍÏÖÎÏÓÔØ zsh, ÎÁÚÙ×ÁÅÍÁÑ `tt(multios)' É ËÏÎÔÒÏÌÉÒÕÅÍÁÑ ÐÁÒÁÍÅÔÒÏÍ Ó ÔÁËÉÍ ÖÅ ÉÍÅÎÅÍ, ÐÏÓÒÅÄÓÔ×ÏÍ Å£, ×Ù×ÏÄ ËÏÐÉÒÕÅÔÓÑ × ÏÂÁ ÆÁÊÌÁ, ËÏÇÄÁ ÐÅÒÅÎÁÐÒÁ×ÌÅÎÉÅ ÐÏÑ×ÌÑÅÔÓÑ Ä×ÁÖÄÙ. ÷ ÐÅÒ×ÏÍ ÐÒÉÍÅÒÅ ÐÒÏÉÓÈÏÄÉÔ ÔÏ ÖÅ ÓÁÍÏÅ, ÔÅÍ ÎÅ ÍÅÎÅÅ ×ÔÏÒÏÅ ÐÅÒÅÎÁÐÒÁ×ÌÅÎÉÅ ÚÁÍÁÓËÉÒÏ×ÁÎÏ ËÁË ÐÏÔÏË. åÓÌÉ ×Ù ÈÏÔÉÔÅ ÕÂÒÁÔØ ÔÁËÏÊ ÜÆÆÅËÔ, ×ÁÍ ÎÕÖÎÏ ÓÂÒÏÓÉÔØ ÐÁÒÁÍÅÔÒ mytt(MULTIOS).

chapter(óÅËÒÅÔÙ ÚÁ×ÅÒÛÅÎÉÑ)

ðÒÏÇÒÁÍÍÉÒÕÅÍÏÅ ÚÁ×ÅÒÛÅÎÉÅ ÉÓÐÏÌØÚÕÅÔ ËÏÍÁÎÄÕ `compctl' - ÜÔÏ ÏÄÎÁ ÉÚ ÎÁÉÂÏÌÅÅ ÍÏÝÎÙÈ, Á ÔÁËÖÅ ÐÏÔÅÎÃÉÁÌØÎÏ ÚÁÐÕÔÙ×ÁÀÝÉÈ, ÏÓÏÂÅÎÎÏÓÔÅÊ zsh; ÚÄÅÓØ Ñ ÐÒÉ×ÏÖÕ ÎÅÂÏÌØÛÏÅ ××ÅÄÅÎÉÅ. îÁÂÏÒ ÐÏÄÄÅÒÖÉ×ÁÅÍÙÈ ÚÁ×ÅÒÛÅÎÉÊ Ó ÐÒÉÍÅÒÁÍÉ ÉÄ£Ô Ó ÉÓÈÏÄÎÉËÏÍ × ÆÁÊÌÅ Misc/compctl-examples; ÚÁ×ÅÒÛÅÎÉÑ ÄÌÑ ÍÎÏÇÉÈ ÉÚ ÎÁÉÂÏÌÅÅ ÕÐÏÔÒÅÂÉÍÙÈ ËÏÍÁÎÄ ÍÏÇÕÔ ÂÙÔØ ÎÁÊÄÅÎÙ ÔÁÍ ÖÅ.

åÓÌÉ ÜÔÏ ÎÅ ÕÓÔÒÁÉ×ÁÅÔ ×ÁÓ, ×Ù ÍÏÖÅÔÅ ×ÙÂÒÁÔØ ÎÏ×ÕÀ, ÂÏÌÅÅ ÉÚÑÝÎÕÀ ÓÉÓÔÅÍÕ ÚÁ×ÅÒÛÅÎÉÑ, ËÏÔÏÒÁÑ ÐÏÑ×ÉÌÁÓØ × ×ÅÒÓÉÉ 3.1.6. ïÎÁ ÏÓÎÏ×ÁÎÁ ÎÁ ÆÕÎËÃÉÑÈ, ×ÙÚÙ×ÁÅÍÙÈ Á×ÔÏÍÁÔÉÞÅÓËÉ ÄÌÑ ÚÁ×ÅÒÛÅÎÉÑ × ËÏÎËÒÅÔÎÏÍ ËÏÎÔÅËÓÔÅ (ÎÁÐÒÉÍÅÒ, ÆÕÎËÃÉÑ tt(_cd) ÏÐÅÒÉÒÕÅÔ ÚÁ×ÅÒÛÅÎÉÅÍ ÄÌÑ ËÏÍÁÎÄÙ tt(cd)) É ÕÓÔÁÎÏ×ÌÅÎÎÙÈ Á×ÔÏÍÁÔÉÞÅÓËÉ Ó ÛÅÌÌÏÍ, Ô.Å. ×Ó£ ÞÔÏ ×ÁÍ ÎÕÖÎÏ ÓÄÅÌÁÔØ, × ÐÒÉÎÃÉÐÅ, ÜÔÏ ÒÁÚÍÅÓÔÉÔØ ÉÈ ÄÌÑ ÚÁÇÒÕÚËÉ. äÏÓÔÁÔÏÞÎÏ ÄÏÐÉÓÁÔØ `tt(autoload -U compinit; compinit)' × ÆÁÊÌ tt(.zshrc). ïÓÔÁÌØÎÁÑ ÓÅËÃÉÑ ÒÁÓÓËÁÚÙ×ÁÅÔ Ï ÓÔÁÒÏÊ ÓÉÓÔÅÍÅ ÚÁ×ÅÒÛÅÎÉÑ.

sect(þÔÏ ÔÁËÏÅ ÚÁ×ÅÒÛÅÎÉÅ?)

  `úÁ×ÅÒÛÅÎÉÅ' (`Completion') - ÜÔÏ ËÏÇÄÁ ×Ù ÎÁÖÉÍÁÅÔÅ ËÏÍÁÎÄÎÕÀ ËÌÁ×ÉÛÕ (TAB ÐÏ ÕÍÏÌÞÁÎÉÀ) É ÛÅÌÌ ÐÙÔÁÅÔÓÑ ÕÇÁÄÁÔØ ÓÌÏ×Ï, ËÏÔÏÒÏÅ ×Ù ××ÏÄÉÔÅ, É ÚÁËÏÎÞÉÔØ ÅÇÏ --- ÏÓÏÂÅÎÎÏ ÃÅÎÎÏ ÄÌÑ ÄÌÉÎÎÙÈ ÉͣΠÆÁÊÌÏ× × ÞÁÓÔÎÏÓÔÉ, ÎÏ × zsh ÎÁÍÎÏÇÏ ÂÏÌØÛÅ ×ÏÚÍÏÖÎÏÓÔÅÊ.

  åÓÔØ ÅÝ£ ÏÄÉÎ Ó×ÑÚÁÎÎÙÊ ÐÒÏÃÅÓÓ, `ÒÁÓÛÉÒÅÎÉÅ' (`expansion'), ËÏÇÄÁ ÛÅÌÌ ×ÉÄÉÔ, ÞÔÏ ×Ù ××ÅÌÉ ÞÔÏ-ÔÏ, ÞÔÏ ÍÏÖÎÏ ÐÒÅÏÂÒÁÚÏ×ÁÔØ ×Ï ÞÔÏ-ÔÏ ÅÝ£, ÔÁË ÎÁÐÒÉÍÅÒ ÐÅÒÅÍÅÎÎÁÑ ÐÒÅÏÂÒÁÚÕÅÔÓÑ × Å£ ÚÎÁÞÅÎÉÅ ($PWD ÓÔÁÎÅÔ /home/users/mydir) ÉÌÉ ÓÓÙÌËÁ ÎÁ ÉÓÔÏÒÉÀ (!! ÓÔÁÎÅÔ ×ÓÅÍ ÎÁ ÐÏÓÌÅÄÎÅÊ ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÅ). ÷ zsh, ËÏÇÄÁ ×Ù ÎÁÖÉÍÁÅÔÅ TAB, ÛÅÌÌ ÓÍÏÔÒÉÔ, ÍÏÖÎÏ ÌÉ ÓÄÅÌÁÔØ ÒÁÓÛÉÒÅÎÉÅ; ÅÓÌÉ ÄÁ, ÔÏ ÏÎÏ ×ÙÐÏÌÎÑÅÔÓÑ, ÉÎÁÞÅ ÏÎ ÐÙÔÁÅÔÓÑ ×ÙÐÏÌÎÉÔØ ÚÁ×ÅÒÛÅÎÉÅ. (÷Ù ÍÏÖÅÔÅ ÐÏÓÍÏÔÒÅÔØ, ÂÕÄÅÔ ÌÉ ÓÌÏ×Ï ÒÁÓÛÉÒÅÎÏ --- ÎÅ ÚÁ×ÅÒÛÅÎÏ --- ÞÅÒÅÚ TAB, ÎÁÂÒÁ× mytt(\C-x g), ÏÔÏÂÒÁÚÉÔÓÑ ÓÐÉÓÏË ÒÁÓÛÉÒÅÎÉÊ.) òÁÓÛÉÒÅÎÉÅ ÏÂÙÞÎÏ ÄÏ×ÏÌØÎÏ ÉÎÔÕÉÔÉ×ÎÏ É ÎÅ ËÏÎÔÒÏÌÉÒÕÅÔÓÑ ÐÏÌØÚÏ×ÁÔÅÌÅÍ; ÏÓÔÁ×ÛÕÀÓÑ ÇÌÁ×Õ Ñ ÂÕÄÕ ÏÂÓÕÖÄÁÔØ ÔÏÌØËÏ ÚÁ×ÅÒÛÅÎÉÅ.

sect(þÔÏ ÍÏÖÅÔ ÂÙÔØ ÚÁ×ÅÒÛÅÎÏ?)
label(42)

  óÁÍÙÊ ÐÒÏÓÔÏÊ ×ÉÄ - ÚÁ×ÅÒÛÅÎÉÅ ÉͣΠÆÁÊÌÏ×, ÏÂÓÕÖÄÁ×ÛÅÅÓÑ ×ÙÛÅ. äÏ ÔÅÈ ÐÏÒ, ÐÏËÁ ×Ù ÎÅ ÓÄÅÌÁÅÔÅ ÓÐÅÃÉÁÌØÎÏÅ ÒÁÚÍÅÝÅÎÉÅ, ËÁË ÏÐÉÓÁÎÏ ×ÙÛÅ, ËÏÇÄÁ ×Ù ÎÁÂÅÒ£ÔÅ ÉÍÑ ËÏÍÁÎÄÙ, ×Ó£ ÏÓÔÁÌØÎÏÅ ÂÕÄÅÔ ÐÏÄÒÁÚÕÍÅ×ÁÔØÓÑ ÓÉÓÔÅÍÏÊ ÚÁ×ÅÒÛÅÎÉÑ ËÁË ÉÍÅÎÁ ÆÁÊÌÏ×. åÓÌÉ ×Ù ××ÅÌÉ ÞÁÓÔØ ÓÌÏ×Á É ÎÁÖÁÌÉ TAB, zsh ÐÏÓÍÏÔÒÉÔ, ÅÓÔØ ÌÉ ÓÏ×ÐÁÄÅÎÉÑ ÐÅÒ×ÏÊ ÞÁÓÔÉ ÆÁÊÌÏ×ÏÇÏ ÉÍÅÎÉ É Á×ÔÏÍÁÔÉÞÅÓËÉ ×ÓÔÁ×ÉÔ ÏÓÔÁ×ÛÅÀÓÑ.

  äÒÕÇÏÊ ÐÒÏÓÔÏÊ ÔÉÐ - ÚÁ×ÅÒÛÅÎÉÅ ËÏÍÁÎÄ, ËÏÔÏÒÏÅ ÐÒÉÍÅÎÑÅÔÓÑ (ÅÓÔÅÓÔ×ÅÎÎÏ) Ë ÐÅÒ×ÏÍÕ ÓÌÏ×Õ × ÓÔÒÏËÅ. ÷ ÜÔÏÍ ÓÌÕÞÁÅ, zsh ÓÞÉÔÁÅÔ ÓÌÏ×Ï ÎÅËÏÔÏÒÏÊ ×ÙÐÏÌÎÑÅÍÏÊ ËÏÍÁÎÄÏÊ, ÌÅÖÁÝÅÊ × ×ÁÛÅÊ $PATH (ÉÌÉ ÞÅÍ-ÌÉÂÏ ÅÝ£, ÞÔÏ ÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ, ÔÉÐÁ ×ÓÔÒÏÅÎÎÏÊ ËÏÍÁÎÄÙ, ÆÕÎËÃÉÉ ÉÌÉ ÐÓÅ×ÄÏÎÉÍÁ) É ÐÙÔÁÅÔÓÑ ÚÁ×ÅÒÛÉÔØ ÅÇÏ.

  äÒÕÇÉÅ ÆÏÒÍÙ ÚÁ×ÅÒÛÅÎÉÑ ÔÒÅÂÕÀÔ ÓÐÅÃÉÁÌØÎÏÇÏ ÒÁÚÍÅÝÅÎÉÑ. ðÏÓÍÏÔÒÉÔÅ ÓÅËÃÉÀ ÒÕËÏ×ÏÄÓÔ×Á ÄÌÑ compctl, ÞÔÏÂÙ ÐÏÌÕÞÉÔØ ×ÅÓØ ÓÐÉÓÏË ÆÌÁÇÏ×: ×Ù ÍÏÖÅÔÅ ÓÄÅÌÁÔØ ËÏÍÁÎÄÙ ÚÁ×ÅÒÛÅÎÉÑ ÉͣΠÐÅÒÅÍÅÎÎÙÈ, ÉͣΠÐÏÌØÚÏ×ÁÔÅÌÅÊ, ÚÁÄÁÞ, É Ô.Ä., É Ô.Ð.

  îÁÐÒÉÍÅÒ, ÏÂÙÞÎÏÅ ÉÓÐÏÌØÚÏ×ÁÎÉÅ - Õ ×ÁÓ ÅÓÔØ ÍÁÓÓÉ× tt($hosts), ËÏÔÏÒÙÊ ÓÏÄÅÒÖÉÔ ÉÍÅÎÁ ÄÒÕÇÉÈ ÍÁÛÉÎ, ËÏÔÏÒÙÅ ×Ù ÞÁÓÔÏ ÉÓÐÏÌØÚÕÅÔÅ × ÓÅÔÉ:
  verb(
    hosts=(fred.ph.ku.ac.uk snuggles.floppy-bunnies.com here.there.edu)
  )
  ÔÏÇÄÁ ×Ù ÍÏÖÅÔÅ ÕËÁÚÁÔØ zsh, ÞÔÏ ËÏÇÄÁ ×Ù ÉÓÐÏÌØÚÕÅÔÅ telnet (ÉÌÉ ftp, ÉÌÉ ...), ÁÒÇÕÍÅÎÔÏÍ ÂÕÄÅÔ ÏÄÎÏ ÉÚ ÜÔÉÈ ÉÍ£Î:
  verb(
    compctl -k hosts telnet ftp ...
  )
  Ô.Å. ÅÓÌÉ ×Ù ÎÁÂÅÒ£ÔÅ mytt(telnet fr) É ÎÁÖÍ£ÔÅ TAB, ÏÓÔÁÌØÎÁÑ ÞÁÓÔØ ÉÍÅÎÉ ÐÏÑ×ÉÔÓÑ ÓÁÍÁ.

  åÝ£ ÂÏÌÅÅ ÍÏÝÎÙÊ ÐÁÒÁÍÅÔÒ tt(compctl) (tt(-g)) - ÕËÁÚÁÔØ zsh, ÞÔÏ ÔÏÌØËÏ ÏÐÒÅÄÅÌ£ÎÎÙÅ ÉÍÅÎÁ ÆÁÊÌÏ× ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ. áÒÇÕÍÅÎÔ tt(-g) - ÜÔÏ ÔÏÞÎÏ ÔÁË ÖÅ, ËÁË É ÕÎÉ×ÅÒÓÁÌØÎÙÊ ÏÂÒÁÚÅÃ Ó ÏÂÙÞÎÙÍÉ ÓÐÅÃÉÁÌØÎÙÍÉ ÓÉÍ×ÏÌÁÍÉ mytt(*), mytt(?), É Ô.Ä. ÷ ÏÐÅÒÁÔÏÒÅ compctl ÉÈ ÎÕÖÎÏ ÚÁËÌÀÞÁÔØ × ËÁ×ÙÞËÉ, ÞÔÏÂÙ ÉÚÂÅÖÁÔØ ÔÒÁËÔÏ×ÁÎÉÑ ËÁË ÉͣΠÆÁÊÌÏ×. îÁÐÒÉÍÁÒ,
  verb(
    compctl -g '*.(ps|eps)' ghostview
  )
  ÕËÁÚÙ×ÁÅÔ zsh, ÞÔÏ ÅÓÌÉ ×Ù ÎÁÖÍ£ÔÅ TAB ÎÁ ÁÒÇÕÍÅÎÔÅ ÐÏÓÌÅ ËÏÍÁÎÄÙ ghostview, ÔÏÌØËÏ ÆÁÊÌÙ, ÏËÁÎÞÉ×ÁÀÝÉÅÓÑ ÎÁ mytt(.ps) ÉÌÉ mytt(.eps) ÂÕÄÕÔ ÒÁÓÓÍÁÔÒÉ×ÁÔØÓÑ ÄÌÑ ÚÁ×ÅÒÛÅÎÉÑ.

  ðÏÌÅÚÎÏÅ ÄÏÐÏÌÎÅÎÉÅ ÄÌÑ zsh ÐÏÑ×ÉÌÏÓØ × ×ÅÒÓÉÉ 3.1 - ÚÁ×ÅÒÛÅÎÉÅ ÄÉÒÅËÔÏÒÉÊ:
  verb(
    compctl -/ cd
  )
  ðÅÒÅÄ ÔÅÍ, ËÁË ÉÓÐÏÌØÚÏ×ÁÔØ tt(-g): ÄÁÎÎÁÑ ËÏÍÁÎÄÁ ÚÁÂÏÔÉÔÓÑ Ï ÔÁËÉÈ ×ÅÝÁÈ, ËÁË ÉÇÎÏÒÉÒÏ×ÁÎÉÅ ÄÉÒÅËÔÏÒÉÊ, ÎÁÞÉÎÁÀÝÉÈÓÑ Ó ÔÏÞËÉ, ÐÏËÁ ×Ù ÓÁÍÉ ÎÅ ÐÏÓÔÁ×ÉÔÅ ÔÏÞËÕ, É ×ÓÅ ÐÕÔÉ ÄÉÒÅËÔÏÒÉÉ ÐÏÎÑÔÎÙ.

  ïÂÒÁÔÉÔÅ ×ÎÉÍÁÎÉÅ, ÞÔÏ ÆÌÁÇÉ ÍÏÖÎÏ ÏÂßÅÄÉÎÑÔØ; ÅÓÌÉ Õ ×ÁÓ ÂÏÌØÛÅ ÏÄÎÏÇÏ, ×ÓÅ ×ÏÚÍÏÖÎÙÅ ÚÁ×ÅÒÛÅÎÉÑ ÄÌÑ ×ÓÅÈ ÐÏÍÅÝÁÀÔÓÑ × ÔÏÔ ÖÅ ÓÐÉÓÏË, ×ÓÅ ÉÚ ÎÉÈ ÂÕÄÕÔ ×ÏÚÍÏÖÎÙÍÉ ÚÁ×ÅÒÛÅÎÉÑÍÉ. ô.Å.
  verb(
    compctl -k hosts -f rcp
  )
  ÓÏÏÂÝÁÅÔ zsh, ÞÔÏ rcp ÍÏÖÅÔ ÉÍÅÔØ ËÁË ÉÍÑ ÆÁÊÌÁ, ÔÁË É ÉÍÑ ÍÁÛÉÎÙ ÐÏÓÌÅ ÓÅÂÑ. (÷ÁÍ ÎÕÖÎÏ ÕÍÅÔØ ÏÂÒÁÂÁÔÙ×ÁÔØ host:file, ÜÔÏ ×ÈÏÄÉÔ × ÐÒÏÇÒÁÍÍÉÒÕÅÍÏÅ ÚÁ×ÅÒÛÅÎÉÅ, ÓÍÏÔÒÉÔÅ ÐÕÎËÔ link(4.5)(45).) ôÁËÖÅ, Ó ×ÅÒÓÉÉ 3.1 ×Ù ×ÓÅÇÄÁ ÍÏÖÅÔÅ ÏÐÅÒÉÒÏ×ÁÔØ ÄÉÒÅËÔÏÒÉÑÍÉ × ÔÏ ÖÅ ×ÒÅÍÑ ËÁË É ÆÁÊÌÁÍÉ, ÐÒÏÓÔÏ ÄÏÂÁ×É× tt(-/) × ÓÐÉÓÏË.

sect(ëÁË zsh ÐÏÓÔÕÐÁÅÔ Ó ÎÅÏÐÒÅÄÅÌ£ÎÎÙÍÉ ÚÁ×ÅÒÛÅÎÉÑÍÉ?)

  þÁÓÔÏ ÓÕÝÅÓÔ×ÕÅÔ ÂÏÌÅÅ ÏÄÎÏÇÏ ×ÏÚÍÏÖÎÏÇÏ ÚÁ×ÅÒÛÅÎÉÑ: ÎÁÐÒÉÍÅÒ, Ä×Á ÆÁÊÌÁ, ÎÁÞÉÎÁÀÝÉÅÓÑ Ó ÏÄÎÏÇÏ É ÔÏÇÏ ÖÅ ÓÉÍ×ÏÌÁ. Zsh ÏÂÌÁÄÁÅÔ ÂÏÌØÛÏÊ ÇÉÂËÏÓÔØÀ × ÜÔÏÊ ÓÉÔÕÁÃÉÉ ÞÅÒÅÚ ÅÇÏ ÐÁÒÁÍÅÔÒÙ. ðÏ ÕÍÏÌÞÁÎÉÀ - beep É ÚÁ×ÅÒÛÅÎÉÅ ÏÓÔÁÎÁ×ÌÉ×ÁÅÔÓÑ ÄÏ ÔÏÇÏ, ÐÏËÁ ×Ù ÎÅ ××ÅÄ£ÔÅ ÓÌÅÄÕÀÝÉÊ ÓÉÍ×ÏÌ. ÷Ù ÍÏÖÅÔÅ ÎÁÖÁÔØ tt(\C-D), ÞÔÏÂÙ Õ×ÉÄÅÔØ ×ÓÅ ×ÏÚÍÏÖÎÙÅ ÚÁ×ÅÒÛÅÎÉÑ. (ðÒÅÄÐÏÌÁÇÁÅÔÓÑ, ÞÔÏ ×Ù ÎÁÈÏÄÉÔÅÓØ × ËÏÎÃÅ ÓÔÒÏËÉ, ÉÎÁÞÅ tt(\C-D) ÕÄÁÌÉÔ ÓÌÅÄÕÀÝÉÊ ÓÉÍ×ÏÌ É ×Ù ÄÏÌÖÎÙ ÂÕÄÅÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ tt(ESC-\C-D).) üÔÏ ÍÏÖÎÏ ÉÚÍÅÎÉÔØ ÓÌÅÄÕÀÝÉÍÉ ÐÁÒÁÍÅÔÒÁÍÉ:
  itemize(
   it() tt(NO_BEEP) - ÂÅÚ ÒÁÚÄÒÁÖÁÀÝÅÇÏ beep
   it() tt(NO_LIST_BEEP) - beeping ×ÙËÌÀÞÁÅÔÓÑ ÔÏÌØËÏ ÄÌÑ ÎÅÑ×ÎÙÈ ÚÁ×ÅÒÛÅÎÉÊ
   it() tt(AUTO_LIST) - ËÏÇÄÁ ÚÁ×ÅÒÛÅÎÉÅ ÎÅ Ñ×ÎÏÅ - ×Ù ÐÏÌÕÞÁÅÔÅ ÓÐÉÓÏË ÂÅÚ ÎÁÖÁÔÉÑ ÎÁ tt(\C-D)
   it() tt(BASH_AUTO_LIST) - ÓÐÉÓÏË ÐÏËÁÚÙ×ÁÅÔÓÑ ÐÏÓÌÅ ×ÔÏÒÏÇÏ ÎÁÖÁÔÉÑ ÎÁ tab ÐÒÉ ÎÁÑÓÎÏÍ ÚÁ×ÅÒÛÅÎÉÉ
   it() tt(LIST_AMBIGUOUS) - ÓÐÉÓÏË ÎÅ ÏÔÏÂÒÁÖÁÅÔÓÑ, ÅÓÌÉ ÅÓÔØ Ñ×ÎÙÊ ÓÕÆÆÉËÓ ÉÌÉ ÐÒÅÆÉËÓ ÄÌÑ ×ÓÔÁ×ËÉ --- ÐÁÒÁÍÅÔÒ ÍÏÖÅÔ ÓÏÞÅÔÁÔØÓÑ Ó tt(BASH_AUTO_LIST), ÔÁË ÞÔÏ, ÅÓÌÉ ÏÂÁ ÐÁÒÁÍÅÔÒÁ ÐÒÉÍÅÎÉÍÙ, ×ÁÍ ÎÕÖÎÏ ÔÒÉ ÒÁÚÁ ÎÁÖÁÔØ ÎÁ tab ÄÌÑ ÓÐÉÓËÁ.
   it() tt(MENU_COMPLETE) - ÏÄÎÏ ÚÁ×ÅÒÛÅÎÉÅ ×ÓÅÇÄÁ ×ÓÔÁ×ÌÑÅÔÓÑ ÐÏÌÎÏÓÔØÀ, ÚÁÔÅÍ, ËÏÇÄÁ ×Ù ÎÁÖÉÍÁÅÔÅ TAB, ÏÎÏ ÓÍÅÎÑÅÔÓÑ ÎÁ ÓÌÅÄÕÀÝÅÅ, É ÔÁË ÄÁÌÅÅ, ÄÏ ÔÅÈ ÐÏÒ, ÐÏËÁ ×Ù ÎÅ ÎÁÞΣÔÅ ÓÎÁÞÁÌÁ
   it() tt(AUTO_MENU) - ×Ù ÐÏÌÕÞÁÅÔÅ ÔÏÌØËÏ ÒÅÖÉÍ ÍÅÎÀ, ËÏÇÄÁ ÓÎÏ×Á ÎÁÖÉÍÁÅÔÅ ÎÁ TAB ÐÒÉ ÎÅÑ×ÎÏÍ ÚÁ×ÅÒÛÅÎÉÉ.
   it() îÁËÏÎÅÃ, ÈÏÔÑ ÏÎ É ÄÅÊÓÔ×ÕÅÔ ÎÁ ×ÓÅ ÌÉÓÔÙ ÚÁ×ÅÒÛÅÎÉÑ, ×ËÌÀÞÁÑ Ñ×ÎÏ ÚÁÐÒÁÛÉ×ÁÅÍÙÅ, ÐÁÒÁÍÅÔÒ tt(ALWAYS_LAST_PROMPT), ËÏÔÏÒÙÊ ×ÏÚ×ÒÁÝÁÅÔ ËÕÒÓÏÒ ÎÁ ÒÅÄÁËÔÉÒÕÅÍÕÀ ÌÉÎÉÀ ÐÏÓÌÅ ÏÔÏÂÒÁÖÅÎÉÑ ÌÉÓÔÁ ÚÁ×ÅÒÛÅÎÉÑ, ÐÒÉ ÕÓÌÏ×ÉÉ, ÞÔÏ ÏÎ ÄÏÓÔÁÔÏÞÎÏ ËÏÒÏÔËÉÊ.
  )
  ôÁË ÖÅ ×ÏÚÍÏÖÎÙ ÉÈ ÓÏÞÅÔÁÎÉÑ; ÎÁÐÒÉÍÅÒ, tt(AUTO_LIST) É tt(AUTO_MENU) ×ÍÅÓÔÅ ÄÁÀÔ ÉÎÔÕÉÔÉ×ÎÕÀ ËÏÍÂÉÎÁÃÉÀ. îÁÞÉÎÁÑ Ó ×ÅÒÓÉÉ 3.1 ÐÁÒÁÍÅÔÒ tt(LIST_AMBIGUOUS) ÚÁÄÁÎ ÐÏ ÕÍÏÌÞÁÎÉÀ; ÅÓÌÉ ×Ù ÉÓÐÏÌØÚÕÅÔÅ autolist, ÔÏ ÌÕÞÛÅ ÓÄÅÌÁÔØ `unsetopt listambiguous'.

sect(ëÁË ÍÎÅ ÚÁ×ÅÒÛÉÔØ × ÓÅÒÅÄÉÎÅ ÓÌÏ×Á / ÄÏ ËÕÒÓÏÒÁ?)

  éÎÏÇÄÁ Õ ×ÁÓ ÅÓÔØ ÓÌÏ×Ï × ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÅ (ÄÁ×ÁÊÔÅ ÐÒÉÄÅÒÖÉ×ÁÔØÓÑ ÉͣΠÆÁÊÌÏ×), ËÏÔÏÒÏÅ ÎÅ ÚÁ×ÅÒÛÅÎÏ × ÓÅÒÅÄÉÎÅ. ïÂÙÞÎÏ, ÅÓÌÉ ×Ù ÎÁÖÍ£ÔÅ tab × zsh, ÏÎ ÐÒÏÓÔÏ ÐÅÒÅÊÄ£Ô × ËÏÎÅà ÓÌÏ×Á É ÐÏÐÙÔÁÅÔÓÑ ÚÁ×ÅÒÛÉÔØ ÅÇÏ. ôÅÍ ÎÅ ÍÅÎÅÅ, ÅÓÔØ Ä×Á ÓÐÏÓÏÂÁ ÉÚÍÅÎÉÔØ ÜÔÏ.

  ÷Ï-ÐÅÒ×ÙÈ, ÓÕÝÅÓÔ×ÕÅÔ ÐÁÒÁÍÅÔÒ COMPLETE_IN_WORD. ëÏÇÄÁ ÏÎ ÚÁÄÁÎ, ÛÅÌÌ ÐÏÐÙÔÁÅÔÓÑ ÚÁËÏÎÞÉÔØ ÓÌÏ×Ï ÏÔ ËÕÒÓÏÒÁ. îÁÐÒÉÍÅÒ, ÅÓÌÉ ÔÅËÕÝÁÑ ÄÉÒÅËÔÏÒÉÑ ÓÏÄÅÒÖÉÔ mytt(foobar), ÔÏÇÄÁ Ó ÚÁÄÁÎÎÙÍ ÐÁÒÁÍÅÔÒÏÍ, ×Ù ÍÏÖÅÔÅ ÚÁ×ÅÒÛÉÔØ mytt(fbar) ÄÏ mytt(foobar), ÐÅÒÅÍÅÓÔÉ× ËÕÒÓÏÒ Ë mytt(b) É ÎÁÖÁ× tab.

  üÔÏ ÅÝ£ ÎÅ ×Ó£. éÎÏÇÄÁ ×ÁÍ ÎÕÖÎÏ ÚÁ×ÅÒÛÉÔØ ÞÁÓÔØ ÓÌÏ×Á ÄÏ ËÕÒÓÏÒÁ. îÁÐÒÉÍÅÒ, ÓÌÏ×Ï mytt(/usr/loc/b) ÎÕÖÎÏ ÚÁ×ÅÒÛÉÔØ ÄÏ mytt(/usr/local/bin). ïÂÙÞÎÏ zsh ÎÅ ÓÍÏÖÅÔ ÓÄÅÌÁÔØ ÜÔÏÇÏ ÚÁ ÏÄÉÎ ÒÁÚ, Ô.Ë. ÚÄÅÓØ ÐÒÏÐÕÝÅÎÙ Ä×Å ÞÁÓÔÉ (ÎÏ ÓÍÏÔÒÉÔÅ ÎÉÖÅ!), Ô.Å. ×ÁÍ ÎÕÖÎÏ ÚÁ×ÅÒÛÉÔØ mytt(/usr/loc) ÓÎÁÞÁÌÁ. äÌÑ ÜÔÏÇÏ ×ÁÍ ÎÕÖÎÁ ÆÕÎËÃÉÑ tt(expand-or-complete-prefix): ÏÎÁ ÒÁÂÏÔÁÅÔ ËÁË ÏÂÙÞÎÁÑ ÆÕÎËÃÉÑ, Ó×ÑÚÁÎÎÁÑ Ó tab, ÎÏ ÏÎÁ ÉÇÎÏÒÉÒÕÅÔ ×Ó£, ÞÔÏ ÎÁÈÏÄÉÔÓÑ ÓÐÒÁ×Á ÏÔ ËÕÒÓÏÒÁ. åÓÌÉ ×ÁÍ ÎÕÖÎÏ ÔÁËÏÅ ÐÏ×ÅÄÅÎÉÅ (ÎÅËÏÔÏÒÙÅ ÄÒÕÇÉÅ ÛÅÌÌÙ ÔÏ ÖÅ ÄÅÌÁÀÔ ÔÁË), Ó×ÑÖÉÔŠţ Ó tab; ÉÌÉ ÓÄÅÌÁÊÔÅ ÄÒÕÇÕÀ ÐÒÉ×ÑÚËÕ, ÎÁÐÒÉÍÅÒ mytt(^X TAB) × tt(~/.zshrc):
  verb(
    bindkey "^X^I" expand-or-complete-prefix
  )
  ÔÏÇÄÁ, × ÎÁÛÅÍ ÐÒÉÍÅÒÅ, ×Ù ÍÏÖÅÔÅ ÐÅÒÅÍÅÓÔÉÔØÓÑ ÚÁ mytt(/usr/loc), ÎÁÖÁÔØ ËÌÁ×ÉÛÕ, ËÏÔÏÒÕÀ ×Ù ÔÏÌØËÏ ÞÔÏ Ó×ÑÚÁÌÉ Ó ÆÕÎËÃÉÅÊ, ÐÅÒÅÍÅÓÔÉÔØÓÑ × ËÏÎÅÃ É ÎÁÖÁÔØ tab. (úÁÍÅÔØÔÅ, ÞÔÏ ÚÄÅÓØ ÐÒÉÍÅÎÉÍ ÒÅÖÉÍ tt(AUTO_REMOVE_SLASH), ÓÍÏÔÒÉÔÅ ÒÕËÏ×ÏÄÓÔ×Ï.)

  äÁÖÅ ÜÔÏ ÎÅ ÉÓÞÅÒÐÙ×ÁÅÔ ×ÏÚÍÏÖÎÏÓÔÉ. ÷ËÌÀÞ£ÎÎÙÊ × ÉÓÈÏÄÎÙÊ ÄÉÓÔÒÉÂÕÔÉ× ÆÁÊÌ tt(Functions/multicomp) - ÜÔÏ ÆÕÎËÃÉÑ, ËÏÔÏÒÕÀ ×Ù ÍÏÖÅÔÅ ÐÒÉ×ÑÚÁÔØ ËÁË ÁÌØÔÅÒÎÁÔÉ×ÎÕÀ ÆÏÒÍÕ ÚÁ×ÅÒÛÅÎÉÑ ÐÏ ÕÍÏÌÞÁÎÉÀ (ÓÍÏÔÒÉÔÅ ÎÉÖÅ ÏÐÉÓÁÎÉÅ ÁÌØÔÅÒÎÁÔÉ×ÎÏÇÏ ÚÁ×ÅÒÛÅÎÉÑ), ÎÁÐÒÉÍÅÒ
  verb(
    compctl -D -f + -U -Q -K multicomp
  )
  É ×ÓÑ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ ÄÉÒÅËÔÏÒÉÊ, ÔÁËÁÑ ËÁË mytt(/usr/loc/b) ÉÌÉ ÄÁÖÅ mytt(/u/l/b) ÍÏÖÅÔ ÂÙÔØ ÚÁ×ÅÒÛÅÎÁ ÚÁ ÏÄÉÎ ÒÁÚ. üÔÏ ÏÔÌÉÞÎÏ ÒÁÂÏÔÁÅÔ Ó menucompletion, ÅÓÌÉ ÒÅÚÕÌØÔÁÔ ÎÅÑ×ÎÙÊ.

sect(ëÁË ÍÎÅ ÎÁÞÁÔØ Ó ÐÒÏÇÒÁÍÍÉÒÕÅÍÙÍ ÚÁ×ÅÒÛÅÎÉÅÍ?)
label(45)

  îÁËÏÎÅÃ, ÓÁÍÁÑ ÓÌÏÖÎÁÑ ÞÁÓÔØ ÚÁ×ÅÒÛÅÎÉÑ. ÷ÏÚÍÏÖÎÏ ÓÄÅÌÁÔØ ÔÁË, ÞÔÏÂÙ zsh ÒÁÓÓÍÁÔÒÉ×ÁÌ ÒÁÚÌÉÞÎÙÅ ÚÁ×ÅÒÛÅÎÉÑ ÎÅ ÔÏÌØËÏ ÄÌÑ ÒÁÚÌÉÞÎÙÈ ËÏÍÁÎÄ, ÎÏ É ÄÌÑ ÒÁÚÌÉÞÎÙÈ ÓÌÏ× ÏÄÎÏÊ É ÔÏÊ ÖÅ ËÏÍÁÎÄÙ, ÉÌÉ ÄÁÖÅ ÒÁÓÓÍÁÔÒÉ×ÁÌ ÄÒÕÇÉÅ ÓÌÏ×Á ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ (ÎÁÐÒÉÍÅÒ, ÅÓÌÉ ÐÏÓÌÅÄÎÅÅ ÓÌÏ×Ï ÂÙÌÏ ÓÐÅÃÉÁÌØÎÙÍ ÆÌÁÇÏÍ) É ÚÁÔÅÍ ÒÅÛÁÌ, ËÁË ÚÁ×ÅÒÛÁÔØ.

  åÓÔØ Ä×Å ×ÅÝÉ, Ï ËÏÔÏÒÙÈ ÓÌÅÄÕÅÔ ÂÅÓÐÏËÏÉÔØÓÑ. óÁÍÏÅ ÐÒÏÓÔÏÅ - ÁÌØÔÅÒÎÁÔÉ×ÎÏÅ ÚÁ×ÅÒÛÅÎÉÅ: ÜÔÏ ÚÎÁÞÉÔ, ÞÔÏ zsh ÓÎÁÞÁÌÁ ÐÏÐÒÏÂÕÅÔ ÏÄÎÕ ÁÌØÔÅÒÎÁÔÉ×Õ É, ÅÓÌÉ ÎÅ ÂÕÄÅÔ ×ÏÚÍÏÖÎÙÈ ÚÁ×ÅÒÛÅÎÉÊ, ÔÏ ÐÏÐÒÏÂÕÅÔ ÓÌÅÄÕÀÝÕÀ. îÁÐÒÉÍÅÒ
  verb(
    compctl -g '*.ps' + -f lpr
  )
  ÓÏÏÂÝÁÅÔ, ÞÔÏ ÐÏÓÌÅ lpr ×Ù ÐÒÅÄÐÏÞÉÔÁÅÔÅ ÎÁÊÔÉ ÔÏÌØËÏ ÆÁÊÌÙ mytt(.ps), Ô.Å. ÅÓÌÉ ÏÎÉ ÅÓÔØ, ÔÏ ÉÓÐÏÌØÚÕÀÔÓÑ ÔÏÌØËÏ ÏÎÉ, Á ÉÎÁÞÅ - ÌÀÂÙÅ. õ ×ÁÓ ÔÁËÖÅ ÍÏÖÅÔ ÂÙÔØ tt(+) ÂÅÚ ÆÌÁÇÏ× ÐÏÓÌÅ ÎÅÇÏ, ËÏÔÏÒÙÊ ÕËÁÚÙ×ÁÅÔ zsh, ÞÔÏ, ÅÓÌÉ ÎÉÞÅÇÏ ÎÅ ÎÁÊÄÅÎÏ, ÔÒÁËÔÏ×ÁÔØ ËÏÍÁÎÄÕ ËÁË ÌÀÂÕÀ ÄÒÕÇÕÀ. üÔÏ ÄÅÊÓÔ×ÉÔÅÌØÎÏ ÐÏÌÅÚÎÏ, ÅÓÌÉ ÐÏ ÕÍÏÌÞÁÎÉÀ ÚÁ×ÅÒÛÅÎÉÅ ÚÁÐÒÏÇÒÁÍÍÉÒÏ×ÁÎÏ, Ô.Å. ×Ù ÓÄÅÌÁÌÉ ÞÔÏ-ÔÏ Ó mytt(compctl -D), ÞÔÏÂÙ ÓÏÏÂÝÉÔØ zsh ËÁË ËÏÍÁÎÄÙ, ËÏÔÏÒÙÅ ÓÐÅÃÉÁÌØÎÏ ÎÅ ÚÁÐÒÏÇÒÁÍÍÉÒÏ×ÁÎÙ, ÄÏÌÖÎÙ ÚÁ×ÅÒÛÉÔØ ÉÈ ÁÒÇÕÍÅÎÔÙ.

  ÷ÔÏÒÏÊ ×ÉÄ. ðÏÓÌÅ ÐÁÒÁÍÅÔÒÁ mytt(-x) zsh ÏÖÉÄÁÅÔ, ÞÔÏ ÄÁÌÅÅ ÂÕÄÅÔ ËÁËÏÊ-ÔÏ ËÏÄ ÚÁ×ÅÒÛÅÎÉÑ, ËÏÔÏÒÙÊ Ñ×ÌÑÅÔÓÑ ÂÕË×ÏÊ É ÓÌÅÄÕÅÔ ÚÁ ÁÒÇÕÍÅÎÔÏÍ × Ë×ÁÄÒÁÔÎÙÈ ÓËÏÂËÁÈ. îÁÐÒÉÍÅÒ, mytt(p[1]): mytt(p) - ÄÌÑ ÐÏÚÉÃÉÉ, É ÁÒÇÕÍÅÎÔ ÕËÁÚÙ×ÁÅÔ ÎÁ ÐÏÚÉÃÉÀ 1; ÚÁ×ÅÒÛÅÎÉÅ ÐÒÉÍÅÎÉÍÏ ÔÏÌØËÏ Ë ÓÌÏ×Õ, ÓÌÅÄÕÀÝÅÍÕ ÓÒÁÚÕ ÚÁ ËÏÍÁÎÄÏÊ. ÷Ù ÍÏÖÅÔÅ ÔÁËÖÅ ÎÁÐÉÓÁÔØ mytt(p[1,3]), ÔÅÐÅÒØ ÚÁ×ÅÒÛÅÎÉÅ ÐÒÉÍÅÎÉÍÏ Ë ÓÌÏ×Õ, ÅÓÌÉ ÏÎÏ ÎÁÈÏÄÉÔÓÑ ÍÅÖÄÕ ÐÅÒ×ÙÍ É ÔÒÅÔÉÍ ÓÌÏ×ÁÍÉ ÐÏÓÌÅ ËÏÍÁÎÄÙ ×ËÌÀÞÉÔÅÌØÎÏ, É Ô.Ä. óÍÏÔÒÉÔÅ ÓÐÉÓÏË × ÓÅËÃÉÉ mytt(compctl) ÒÕËÏ×ÏÄÓÔ×Á: ÎÅËÏÔÏÒÙÅ ÕÓÌÏ×ÉÑ ÂÅÒÕÔ ÏÄÉÎ ÁÒÇÕÍÅÎÔ × Ë×ÁÄÒÁÔÎÙÅ ÓËÏÂËÉ, ÎÅËÏÔÏÒÙÅ Ä×Á. ïÂÙÞÎÏ, ÏÔÒÉÃÁÔÅÌØÎÙÅ ÁÒÇÕÍÅÎÔÙ ÓÞÉÔÁÀÔÓÑ ÏÂÒÁÔÎÏ Ó ËÏÎÃÁ (ÎÁÐÒÉÍÅÒ, mytt(p[-1]) ÐÒÉÍÅÎÑÅÔÓÑ Ë ÐÏÓÌÅÄÎÅÍÕ ÓÌÏ×Õ × ÓÔÒÏËÅ).

  (úÁÍÅÔØÔÅ ÒÁÚÎÉÃÕ ÍÅÖÄÕ mytt(+) É mytt(-x). úÁ×ÅÒÛÅÎÉÅ ÄÌÑ mytt(+) ÓÎÁÞÁÌÁ ×ÓÅÇÄÁ ÐÏÐÙÔÁÅÔÓÑ ÎÁÊÔÉ ÚÁ×ÅÒÛÅÎÉÑ ÄÌÑ ÔÏÇÏ, ÞÔÏ ÄÏ mytt(+); ÅÓÌÉ ÚÁ×ÅÒÛÅÎÉÅ ÎÅ ÎÁÊÄÅÎÏ - ÂÕÄÅÔ ×Ù×ÅÄÅÎ ÓÐÉÓÏË. ó ÄÒÕÇÏÊ ÓÔÏÒÏÎÙ, ÄÌÑ mytt(-x), ÐÏÄÈÏÄÑÝÅÅ ÍÎÏÖÅÓÔ×Ï ÚÁ×ÅÒÛÅÎÉÊ ×ÓÅÇÄÁ ÉÓÐÏÌØÚÕÅÔÓÑ, ÄÁÖÅ ÅÓÌÉ ÓÐÉÓÏË ÚÁ×ÅÒÛÅÎÉÊ ÐÕÓÔÏÊ.)

  õÓÌÏ×ÉÑ, ËÏÔÏÒÙÅ ÓÌÅÄÕÀÔ ÚÁ ÆÌÁÇÁÍÉ, ËÁË ÏÂÙÞÎÏ É ÄÒÕÇÉÅ ÕÓÌÏ×ÉÑ/ÆÌÁÇÉ ÚÁÄÁÀÔÓÑ (ËÁË × link(4.2)(42)), ÓÌÅÄÕÑ ÚÁ ÏÄÉÎÁÒÎÙÍ - ; ×ÓÅ ÏÎÉ ÚÁËÁÎÞÉ×ÁÀÔÓÑ Ä×ÏÊÎÙÍÉ --, ÄÏ ÉÍÅÎÉ ËÏÍÁÎÄÙ. äÒÕÇÉÍÉ ÓÌÏ×ÁÍÉ, ËÁÖÄÁÑ ÒÁÓÛÉÒÅÎÎÁÑ ÓÅËÃÉÑ ÚÁ×ÅÒÛÅÎÉÑ ×ÙÇÌÑÄÉÔ ÐÒÉÍÅÒÎÏ ÔÁË:
  verb(
    -x <ÏÂÒÁÚÅÃ> <ÆÌÁÇÉ>... [ - <ÏÂÒÁÚÅÃ> <ÆÌÁÇÉ>... ...] --
  )
  äÁ×ÁÊÔÅ ÏÐÑÔØ ×ÚÇÌÑÎÅÍ ÎÁ rcp: ÐÒÅÄÐÏÌÁÇÁÅÔÓÑ, ÞÔÏ ×Ù ÚÁÄÁÌÉ tt($hosts) ÔÁË ÖÅ ËÁË ×ÙÛÅ. âÕÄÅÍ ÉÓÐÏÌØÚÏ×ÁÔØ ÆÌÁÇ mytt(n[<n>,<string>]), ËÏÔÏÒÙÊ ÕËÁÚÙ×ÁÅÔ zsh - ÉÓËÁÔØ tt(<n>)'ÏÅ ËÏÌÉÞÅÓÔ×Ï ÓÏ×ÐÁÄÅÎÉÊ ÓÔÒÏËÉ <string> × ÓÌÏ×Å É ÉÇÎÏÒÉÒÏ×ÁÔØ ×Ó£, ÞÔÏ ÎÁÊÄÅÎÏ. íÙ ÉÓÐÏÌØÚÕÅÍ ÜÔÏ ÄÌÑ ÚÁ×ÅÒÛÅÎÉÑ ÂÉÔÏ× ËÏÍÂÉÎÁÃÉÉ rcp mytt(user@host:file). (ëÏÎÅÞÎÏ, file - ÉÍÑ ÆÁÊÌÁ ÎÁ ÌÏËÁÌØÎÏÊ ÍÁÛÉÎÅ, ÎÅ ÎÁ mytt(host), ÎÏ ÄÁ×ÁÊÔÅ ÐÒÏÉÇÎÏÒÉÒÕÅÍ ÜÔÏ; ÜÔÏ ×Ó£ ÅÝ£ ÍÏÖÅÔ ÂÙÔØ ÐÏÌÅÚÎÙÍ.)
  verb(
    compctl -k hosts -S ':' + -f -x 'n[1,:]' -f - \ 
          'n[1,@]' -k hosts -S ':' -- rcp
  )
  üÔÏ ÏÚÎÁÞÁÅÔ: (1) ÐÏÐÙÔÁÔØÓÑ ÚÁ×ÅÒÛÉÔØ ÉÍÑ ÈÏÓÔÁ (ÓÉÍ×ÏÌ ÄÏ mytt(+)), ÅÓÌÉ ÕÓÐÅÛÎÏ, ÔÏ ÄÏÂÁ×ÉÔØ mytt(:) (tt(-S) ÄÌÑ ÓÕÆÆÉËÓÁ); (2) ÅÓÌÉ ÎÅÕÄÁÞÎÏ, ÔÏ ÐÏÐÙÔÁÅÍÓÑ ×ÙÐÏÌÎÉÔØ ËÏÄ ÐÏÓÌÅ mytt(+): ÓÍÏÔÒÉÍ, ÅÓÔØ ÌÉ × ÓÌÏ×Å mytt(:) (ÐÁÒÁÍÅÔÒ mytt(n[1,:])); ÅÓÌÉ ÄÁ, ÔÏ ÚÁ×ÅÒÛÁÅÍ ÉÍÑ ÆÁÊÌÁ (tt(-f)) ÐÏÓÌÅ ÐÅÒ×ÏÇÏ ÉÚ ÎÉÈ; (3) ÉÎÁÞÅ ÉÝÅÍ mytt(@) É ÚÁ×ÅÒÛÁÅÍ ÉÍÑ ÈÏÓÔÁ ÐÏÓÌÅ ÐÅÒ×ÏÊ ÉÈ ÎÉÈ (ÐÁÒÁÍÅÔÒ mytt(n[1,@])), ÅÓÌÉ ÕÓÐÅÛÎÏ, ÔÏ ÄÏÂÁ×ÌÑÅÍ mytt(:); (4) ÅÓÌÉ ÎÉÞÅÇÏ ÎÅ ×ÙÐÏÌÎÉÌÏÓØ, ÔÏ ÉÓÐÏÌØÚÕÅÍ mytt(-f) ÐÅÒÅÄ mytt(-x) É ÐÙÔÁÅÍÓÑ ÚÁ×ÅÒÛÉÔØ ÉÍÑ ÆÁÊÌÁ.

  éÔÁË, ×ÏÔ ÐÒÁ×ÉÌÁ: (1) ÐÒÅÖÄÅ ×ÓÅÇÏ ÐÏÐÙÔÁÔØÓÑ ÓÄÅÌÁÔØ ×Ó£, ÞÔÏ ÄÏ mytt(+) (2) ÐÙÔÁÔØÓÑ ×ÙÐÏÌÎÉÔØ ÕÓÌÏ×ÉÑ ÐÏÓÌÅ tt(-x) ÄÏ ÔÏÇÏ, ÐÏËÁ ÈÏÔÑ ÂÙ ÏÄÎÏ ÎÅ ×ÙÐÏÌÎÉÔÓÑ (3) ÅÓÌÉ ÎÉÞÅÇÏ ÎÅ ×ÙÐÏÌÎÉÌÏÓØ, ÔÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÆÌÁÇÉ ÐÏ ÕÍÏÌÞÁÎÉÀ.

  òÁÚÎÙÅ ÕÓÌÏ×ÉÑ ÔÁËÖÅ ÍÏÖÎÏ ÏÂßÅÄÉÎÑÔØ. ÷ÏÔ ÔÒÉ ÕÒÏ×ÎÑ ÏÂßÅÄÉÎÅÎÉÑ (× ÐÏÒÑÄËÅ ÕÍÅÎØÛÅÎÉÑ):
  enumerate(
   myeit() ÍÎÏÇÏÞÉÓÌÅÎÎÙÅ Ë×ÁÄÒÁÔÎÙÅ ÓËÏÂËÉ ÐÏÓÌÅ ÏÄÎÏÇÏ ÕÓÌÏ×ÉÑ ÄÁÀÔ ÁÌØÔÅÒÎÁÔÉ×Õ: ÎÁÐÒÉÍÅÒ, mytt(s[foo][bar]) ÕËÁÚÙ×ÁÅÔ, ÞÔÏ ÚÁ×ÅÒÛÅÎÉÅ ÐÒÉÍÅÎÉÍÏ Ë ÓÌÏ×ÁÍ, ÎÁÞÉÎÁÀÝÉÍÓÑ Ó mytt(foo) ÉÌÉ mytt(bar),
   myeit() ÐÒÏÂÅÌÙ ÍÅÖÄÕ ÕÓÌÏ×ÉÑÍÉ ÏÚÎÁÞÁÀÔ, ÞÔÏ ÏÂÁ ÄÏÌÖÎÙ ×ÙÐÏÌÎÑÔØÓÑ: ÎÁÐÒÉÍÅÒ, mytt(p[1] s[-]) ÕËÁÚÙ×ÁÅÔ, ÞÔÏ ÚÁ×ÅÒÛÅÎÉÅ ÐÒÉÍÅÎÉÍÏ ÔÏÌØËÏ Ë ÐÅÒ×ÏÍÕ ÓÌÏ×Õ ÐÏÓÌÅ ËÏÍÁÎÄÙ, ÅÓÌÉ ÏÎÏ ÎÁÞÉÎÁÅÔÓÑ Ó mytt(-),
   myeit() ÚÁÐÑÔÙÅ ÍÅÖÄÕ ÕÓÌÏ×ÉÑÍÉ ÏÚÎÁÞÁÀÔ, ÞÔÏ ÌÀÂÏÅ ÄÏÌÖÎÏ ×ÙÐÏÌÎÉÔØÓÑ: ÎÁÐÒÉÍÅÒ, mytt(c[-1,-f], s[-f]) ÏÚÎÁÞÁÅÔ, ÞÔÏ ÌÀÂÏÅ ÐÒÅÄÙÄÕÝÅÅ ÓÌÏ×Ï (-1 ÏÔÎÏÓÉÔÅÌØÎÏ ÔÅËÕÝÅÇÏ) ÜÔÏ tt(-f), ÉÌÉ ÔÅËÕÝÅÅ ÓÌÏ×Ï ÎÁÞÉÎÁÅÔÓÑ Ó tt(-f) --- ÐÏÌÅÚÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÔÁËÏÅ ÖÅ ÚÁ×ÅÒÛÅÎÉÅ - ÄÅÊÓÔ×ÉÔÅÌØÎÏ ÌÉ tt(-f) ÉÍÅÅÔ ÐÒÏÂÅÌ ÐÏÓÌÅ ÓÅÂÑ.
  )

  ÷Ù ÄÏÌÖÎÙ ÐÏÍÎÉÔØ, ÞÔÏ ×Ó£ ×ÙÒÁÖÅÎÉÅ ÄÏÌÖÎÏ ÂÙÔØ × ËÁ×ÙÞËÁÈ, ÞÔÏÂÙ ÄÌÑ tt(compctl) ÏÎÏ Ñ×ÌÑÌÏÓØ ÏÄÎÉÍ ÁÒÇÕÍÅÎÔÏÍ.

  ÷ÏÔ ÎÅÎÕÖÎÙÊ ÐÒÉÍÅÒ (ÐÒÏÓÔÏ ÞÔÏÂÙ ÐÏËÁÚÁÔØ ÏÂÙÞÎÏÅ mytt(-x) ÚÁ×ÅÒÛÅÎÉÅ).
  verb(
    compctl -f -x 'c[-1,-u][-1,-U] p[2], s[-u]' -u - \ 
      'c[-1,-j]' -P % -j -- foobar
  )
  ëÁË ÜÔÏ ÐÒÏÞÉÔÁÔØ: ÄÌÑ ËÏÍÁÎÄÙ mytt(foobar), ÐÏÓÍÏÔÒÅÔØ ÅÓÌÉ (((ÐÒÅÄÙÄÕÝÅÅ ÓÌÏ×Ï tt(-u)) ÉÌÉ (ÐÒÅÄÙÄÕÝÅÅ ÓÌÏ×Ï tt(-U))) É (ÔÅËÕÝÅÅ ÓÌÏ×Ï 2)) ÉÌÉ (ÔÅËÕÝÅÅ ÓÌÏ×Ï ÎÁÞÉÎÁÅÔÓÑ Ó tt(-u)); ÅÓÌÉ ÔÁË, ÔÏ ÐÏÐÙÔÁÔØÓÑ ÚÁ×ÅÒÛÉÔØ ÉÍÅÎÁ ÐÏÌØÚÏ×ÁÔÅÌÅÊ. åÓÌÉ ÐÒÅÄÙÄÕÝÅÅ ÓÌÏ×Ï tt(-j), ×ÓÔÁ×ÉÔØ ÐÅÒÅÄ ÔÅËÕÝÉÍ ÓÌÏ×ÏÍ ÐÒÅÆÉËÓ mytt(%), ÅÓÌÉ ÅÇÏ ÔÁÍ ÎÅÔ, É ÚÁ×ÅÒÛÉÔØ ÉÍÅÎÁ ÚÁÄÁÞ. éÎÁÞÅ ÐÒÏÓÔÏ ÚÁ×ÅÒÛÉÔØ ÉÍÅÎÁ ÆÁÊÌÏ×.

4.6: äÏÓÔÁÔÏÞÎÏ ÌÉ ÐÏÌÅÚÎÏ ÐÒÏÇÒÁÍÍÉÒÕÅÍÏÅ ÚÁ×ÅÒÛÅÎÉÅ?

  ...ÔÏÇÄÁ ×ÁÛÁ ÐÏÓÌÅÄÎÑÑ ÎÁÄÅÖÄÁ - ÎÁÐÉÓÁÔØ ÛÅÌÌ-ÆÕÎËÃÉÀ É ÎÁÓÔÒÏÉÔØ ×Ó£ ÐÏÄ ÓÅÂÑ. ïÂßÅÄÉÎÑÑ ÆÌÁÇÉ mytt(-U) É mytt(-K func), ×Ù ÍÏÖÅÔÅ ÐÏÌÕÞÉÔØ ÐÏÞÔÉ ÎÅÏÇÒÁÎÉÞÅÎÎÕÀ ÍÏÝØ. mytt(-U) - ÕËÁÚÙ×ÁÅÔ zsh, ÞÔÏ ÎÕÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ×ÓÅ ÚÁ×ÅÒÛÅÎÉÑ, ÄÁÖÅ ÎÅ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÅ ÔÏÍÕ, ÞÔÏ ÕÖÅ ÅÓÔØ (ÔÁË, ÞÔÏ ÎÁÐÉÓÁÎÎÏÅ ÂÕÄÅÔ ÕÄÁÌÅÎÏ, ËÏÇÄÁ ÚÁ×ÅÒÛÅÎÉÅ ÂÕÄÅÔ ×ÓÔÁ×ÌÅÎÏ). mytt(-K func) - ÕËÁÚÙ×ÁÅÔ zsh ÉÍÑ ÆÕÎËÃÉÉ. æÕÎËÃÉÑ ÐÒÏÈÏÄÉÔ ÞÅÒÅÚ ÞÁÓÔØ ÓÌÏ×Á, ËÏÔÏÒÏÅ ÕÖÅ ××ÅÄÅÎÏ, É ÍÏÖÅÔ ÓÞÉÔÁÔØ ÏÓÔÁÔÏË ÓÔÒÏËÉ Ó ÐÏÍÏÝØÀ mytt(read -c). ïÎÁ ÍÏÖÅÔ ×ÅÒÎÕÔØ ÍÎÏÖÅÓÔ×Ï ÚÁ×ÅÒÛÅÎÉÊ ÞÅÒÅÚ ÍÁÓÓÉ× mytt(reply), É ÏÎÏ ÓÔÁÎÅÔ ÍÎÏÖÅÓÔ×ÏÍ ×ÏÚÍÏÖÎÙÈ ÚÁ×ÅÒÛÅÎÉÊ. þÔÏÂÙ ÌÕÞÛÅ ×ÓÅÇÏ ÐÏÎÑÔØ ÜÔÏ, ÎÕÖÎÏ ×ÚÇÌÑÎÕÔØ ÎÁ mytt(multicomp) É ÄÒÕÇÉÅ ÆÕÎËÃÉÉ, ÐÏÓÔÁ×ÌÑÅÍÙÅ Ó ÄÉÓÔÒÉÂÕÔÉ×ÏÍ zsh. îÅÓÏÍÎÅÎÎÏ, ÄÌÑ ÞÅÇÏ-ÎÉÂÕÄØ ÓÌÏÖÎÏÇÏ ÌÕÞÛÅ ÉÓÐÏÌØÚÏ×ÁÔØ ÎÏ×ÕÀ ÓÉÓÔÅÍÕ ÚÁ×ÅÒÛÅÎÉÑ. ÷ ÂÕÄÕÝÅÍ ÎÅ ÐÌÁÎÉÒÕÅÔÓÑ ÏÂÎÏ×ÌÅÎÉÊ ÄÌÑ ÓÔÁÒÏÊ ÓÉÓÔÅÍÙ ÚÁ×ÅÒÛÅÎÉÑ.

chapter(âÕÄÕÝÅÅ zsh)

sect(ëÁËÉÅ ÏÛÉÂËÉ ÉÚ×ÅÓÔÎÙ É ÎÅÉÓÐÒÁ×ÌÅÎÙ? (á ÔÁËÖÅ ÎÅÄÁ×ÎÉÅ ×ÁÖÎÙÅ ÉÚÍÅÎÅÎÉÑ))
label(51)

  ÷ÏÔ ÎÅÓËÏÌØËÏ ÉÚ ÍÎÏÇÉÈ ÈÏÒÏÛÏ ÉÚ×ÅÓÔÎÙÈ × ÐÏÒÑÄËÅ ÕÍÅÎØÛÅÎÉÑ ×ÁÖÎÏÓÔÉ. íÎÏÇÉÅ ÉÚ ÎÉÈ ÍÏÇÕÔ ÔÁËÖÅ ÓÞÉÔÁÔØÓÑ ÏÔÌÉÞÉÑÍÉ ÏÔ ksh × ×ÏÐÒÏÓÅ link(2.1)(21); ÚÁÍÅÔØÔÅ, ÞÔÏ ÜÔÏ ÏÔÎÏÓÉÔÓÑ Ë ÐÏÓÌÅÄÎÅÊ ÂÅÔÁ ×ÅÒÓÉÉ É ÞÔÏ ÐÒÏÓÔÙÅ ÏÛÉÂËÉ ÞÁÓÔÏ ÉÓÐÒÁ×ÌÑÀÔÓÑ ÏÞÅÎØ ÂÙÓÔÒÏ. ÷ ÆÁÊÌÅ Etc/BUGS × ÉÓÈÏÄÎÏÍ ÄÉÓÔÒÉÂÕÔÉ×Å ÂÏÌØÛÅ ÐÏÄÒÏÂÎÏÓÔÅÊ.
  
  itemize(
  it() òÁÓÛÉÒÅÎÉÅ ÐÁÒÁÍÅÔÒÏ×, ÉÓÐÏÌØÚÕÅÍÏÅ × ÆÏÒÍÁÈ tt(${param+word}) É tt(${param-word}) ÍÏÖÅÔ ÎÅ ÒÁÂÏÔÁÔØ × ÒÅÖÉÍÅ Bourne-shell ÓÏ×ÍÅÓÔÉÍÏÓÔÉ, ËÏÇÄÁ ÚÁÄÁÎ ÐÁÒÁÍÅÔÒ tt(SH_WORD_SPLIT) É word ÓÏÄÅÒÖÉÔ ÐÒÏÂÅÌÙ.
  it() mytt(time) ÉÇÎÏÒÉÒÕÅÔÓÑ ËÏÍÁÎÄÏÊ builtin É ÎÅ ÍÏÖÅÔ ÂÙÔØ ÉÓÐÏÌØÚÏ×ÁÎÁ Ó mytt({...}).
  it() mytt(set -x) (mytt(setopt xtrace)) ÐÏ ÐÒÅÖÎÅÍÕ ÉÍÅÅÔ ÎÅÓËÏÌØËÏ ÇÌÀËÏ×; ÂÏÌØÛÉÎÓÔ×Ï ÉÚ ÎÉÈ ÉÓÐÒÁ×ÌÅÎÏ × ×ÅÒÓÉÉ 3.1.6.
  it() ðÏÎÑÔÉÅ Zsh Ï ÎÏÍÅÒÅ ÔÅËÕÝÅÊ ÓÔÒÏËÉ (ÞÅÒÅÚ tt($LINENO)) ÉÎÏÇÄÁ ÎÅ ÏÐÒÅÄÅÌÑÅÔÓÑ, ÏÓÏÂÅÎÎÏ ÐÒÉ ÉÓÐÏÌØÚÏ×ÁÎÉÉ ÆÕÎËÃÉÊ É ÐÒÅÒÙ×ÁÎÉÊ. üÔÏ ÔÏÞÎÏ ÄÏÌÖÎÏ ÒÁÂÏÔÁÔØ Ó ×ÅÒÓÉÊ 3.0.6 É 3.1.6.
  it() ÷ ÒÅÖÉÍÅ vi, mytt(u) ÍÏÖÅÔ ×ÅÒÎÕÔØ Ë ÐÅÒ×ÏÎÁÞÁÌØÎÏÊ ÔÏÞËÅ ÍÏÄÉÆÉËÁÃÉÉ.
  it() ðÁÒÁÍÅÔÒ singlelinezle ËÏÎÆÌÉËÔÕÅÔ Ó ÐÒÉÇÌÁÛÅÎÉÑÍÉ, ÓÏÄÅÒÖÁÝÉÍÉ ÜËÒÁÎÉÒÕÅÍÙÅ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ.
  it() ëÏÍÁÎÄÁ mytt(r) ÎÅ ÒÁÂÏÔÁÅÔ ×ÎÕÔÒÉ mytt($(...)) ÉÌÉ mytt(`...`). üÔÏ ÉÓÐÒÁ×ÌÅÎÏ × ×ÅÒÓÉÉ 3.1.
  it() éÓÐÏÌØÚÏ×ÁÔØ mytt(typeset) - ÎÅ ÏÐÔÉÍÁÌØÎÏ, ÏÓÏÂÅÎÎÏ Ó ÆÌÁÇÁÍÉ, É ksh-ÎÅÓÏ×ÍÅÓÔÉÍÏ. ÷ ×ÅÒÓÉÉ 3.1.6 ÜÔÏ ÂÙÌÏ ÉÓÐÒÁ×ÌÅÎÏ, ÎÏ ÏÓÔÁ×ÛÉÅÓÑ ÇÌÀËÉ ÏÖÉÄÁÀÔÓÑ.
  it() ÷ÌÏÖÅÎÎÙÅ ÚÁËÒÙÔÉÑ × ÒÁÓÛÉÒÅÎÎÏÊ ÕÎÉ×ÅÒÓÁÌÉÚÁÃÉÉ ÉÍ£Î É × ÆÏÒÍÅ ÏÂÒÁÚÃÏ×, ÔÁËÉÈ ËÁË
  verb(
      [[ fofo = (fo#)# ]]
  )
     ÎÅ ËÏÒÒÅËÔÎÏ ÔÒÁËÔÏ×ÁÌÏÓØ, É ÂÙÌÉ ÐÒÏÂÌÅÍÙ Ó ÕÓÌÏÖΣÎÎÙÍÉ ÉÓËÌÀÞÅÎÉÑÍÉ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ mytt(^) ÉÌÉ mytt(~). üÔÏ ÉÓÐÒÁ×ÌÅÎÏ Ó ×ÅÒÓÉÉ 3.1.3.
  )
  it() ôÒÁËÔÏ×ÁÎÉÅ mytt(:q) É mytt(:x) Ó ÐÏÄÓÔÁÎÏ×ËÏÊ ÐÁÒÁÍÅÔÒÁ ×ÅÄ£Ô ÓÅÂÑ ÓÔÒÁÎÎÏ: ÎÉ ÏÄÉÎ ÉÚ ÎÉÈ ÎÅ ÒÁÂÏÔÁÅÔ × ÌÀÂÏÊ ×ÅÒÓÉÉ 3.0, Á tt(:x) ÎÅ ÒÁÂÏÔÁÅÔ É ÐÏÓÌÅ.

  îÅÓËÏÌØËÏ ÎÅÄÁ×ÎÉÈ ÉÚÍÅÎÅÎÉÊ ÐÏËÁÚÙ×ÁÀÔ ÎÅÓÏ×ÍÅÓÔÉÍÏÓÔÉ (ÜÔÏ ÎÅ ÏÛÉÂËÉ):

  éÚÍÅÎÅÎÉÑ ÐÏÓÌÅ zsh 3.0:
  itemize(
  it() ðÁÒÁÍÅÔÒÙ tt(ALWAYS_LAST_PROMPT) (×ÏÚ×ÒÁÝÁÅÔ ÎÁ ÓÔÒÏËÕ, ËÏÔÏÒÕÀ ×Ù ÒÅÄÁËÔÉÒÕÅÔÅ, ÐÏÓÌÅ ÏÔÏÂÒÁÖÅÎÉÑ ÌÉÓÔÁ ÚÁ×ÅÒÛÅÎÉÑ) É tt(LIST_AMBIGUOUS) (ÎÅ ÄÅÌÁÊÔÅ tt(AUTO_LIST), ÅÓÌÉ ÂÙÌ Ñ×ÎÙÊ ÐÒÅÆÉËÓ, ËÏÔÏÒÙÊ ÄÏÌÖÅÎ ÂÙÔØ ×ÓÔÁ×ÌÅÎ, Ô.Å. ×Ù×ÏÄÉÔÅ ÓÐÉÓÏË, ÅÓÌÉ ÎÅÑÓÎÏ, ÞÔÏ ×ÓÔÁ×ÌÑÔØ ÄÁÌØÛÅ) ÔÅÐÅÒØ ÚÁÄÁÎÙ ÐÏ ÕÍÏÌÞÁÎÉÀ. üÔÏ ÂÙÌÏ ÓÄÅÌÁÎÏ × ÏÔ×ÅÔ ÎÁ ÖÁÌÏÂÙ, ÞÔÏ ÂÏÌØÛÉÎÓÔ×Ï ×ÏÚÍÏÖÎÏÓÔÅÊ zsh ÎÅ ÚÁÍÅÞÁÀÔÓÑ ÍÎÏÇÉÍÉ ÐÏÌØÚÏ×ÁÔÅÌÑÍÉ. þÔÏ ÂÙ ×ÙËÌÀÞÉÔØ ÉÈ, ÎÕÖÎÏ ÐÒÏÐÉÓÁÔØ mytt(unsetopt alwayslastprompt listambiguous) × ÆÁÊÌ tt(.zshrc).
  it() ÷ 3.1.5 tt(history-search-{forward,backward}) ÎÁÈÏÄÉÔ ÔÏÌØËÏ ÐÒÅÄÙÄÕÝÉÅ ÓÔÒÏËÉ, ÇÄÅ ÐÅÒ×ÏÅ ÓÌÏ×Ï ÔÁËÏÅ ÖÅ ËÁË É ÔÅËÕÝÉÉ. îÁÐÒÉÍÅÒ, 
    verb(
      comp<ESC>p
    )
     ÎÁÊÄ£Ô ÓÔÒÏËÉ × ÉÓÔÏÒÉÉ ÐÏÈÏÖÉÅ ÎÁ mytt(comp -edit emacs), ÎÏ ÎÅ mytt(compress file). ðÏ ÜÔÏÊ ÐÒÉÞÉÎÅ, mytt(\M-n) É mytt(\M-p) ÉÓÐÏÌØÚÕÅÔ tt(history-beginning-search-{forward,backward}), ËÏÔÏÒÙÊ ÉÝÅÔ ÓÔÒÏËÕ Ó ÔÁËÉÍ ÖÅ ÐÒÅÆÉËÓÏÍ ÄÏ ËÕÒÓÏÒÁ. ÷ ×ÅÒÓÉÉ 3.1.6 ÐÏÑ×ÉÌÁÓØ ÄÒÕÇÁÑ ÒÅÁÌÉÚÁÃÉÑ, ËÏÔÏÒÁÑ ÂÌÉÖÅ (ÎÏ ÎÅ ÉÄÅÎÔÉÞÎÁ) Ë ÓÔÁÒÏÍÕ ÐÏ×ÅÄÅÎÉÀ, É ÔÒÁÄÉÃÉÏÎÎÙÅ Ó×ÑÚÉ ×ÏÓÓÔÁÎÏ×ÌÅÎÙ. óÉÔÕÁÃÉÑ Ó ËÏÍÁÎÄÁÍÉ tt({up,down}-line-or-search ÁÎÁÌÏÇÉÞÎÁ).
  it() ÷ ÒÅÖÉÍÅ ×ÓÔÁ×ËÉ vi, ËÌÁ×ÉÛÉ ÐÅÒÅÄ×ÉÖÅÎÉÑ ËÕÒÓÏÒÁ ÂÏÌØÛÅ ÎÅ ÒÁÂÏÔÁÀÔ. óÌÅÄÕÀÝÁÑ ËÏÍÁÎÄÁ ÐÒÉ×ÑÚÙ×ÁÅÔ ÉÈ:
      COMMENT(-- note space after backslash --)
    verb(
       bindkey -M viins '^[[D' vi-backward-char '^[[C' vi-forward-char '^[[A' up-line-or-history '^[[B' down-line-or-history
    )
     (ÐÏËÁ ×ÁÛ ÔÅÒÍÉÎÁÌ ÎÅ ÔÒÅÂÕÅÔ mytt(^[O) ×ÍÅÓÔÏ mytt(^[[)). ïÓÎÏ×ÎÁÑ ÐÒÉÞÉÎÁ × ÔÏÍ, ÞÔÏ ÔÅÐÅÒØ ÒÁÓËÌÁÄËÉ ÄÌÑ ËÌÁ×ÉÛ Ó ÐÒÅÆÉËÓÁÍÉ × ÒÅÖÉÍÅ ×ÓÔÁ×ËÉ É × ËÏÍÁÎÄÎÏÍ ÒÅÖÉÍÅ - ÒÁÚÌÉÞÎÙ.
  )
  
  éÚÍÅÎÅÎÉÑ ÐÏÓÌÅ zsh 2.5:
  itemize(
  it() ìÅ×ÁÑ ÞÁÓÔØ ÐÒÉÓ×ÁÉ×ÁÎÉÑ ÂÏÌØÛÅ ÎÅ ÐÏÄÓÔÁ×ÌÑÅÔÓÑ. óÌÅÄÏ×ÁÔÅÌØÎÏ, mytt($1=$2) - ÎÅ ÂÕÄÅÔ ÒÁÂÏÔÁÔØ. ÷Ù ÍÏÖÅÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ ÞÔÏ-ÎÉÂÕÄØ ÐÏÈÏÖÅÅ ÎÁ mytt(eval "$1=\$2"), ÞÔÏ ÂÕÄÅÔ ÉÄÅÎÔÉÞÎÏ.
  it() ðÒÅÒÙ×ÁÎÉÑ ÕÓÔÁÎÁ×ÌÉ×ÁÀÔÓÑ Ó ÐÏÍÏÝØÀ ×ÓÔÒÏÅÎÎÏÊ ËÏÍÁÎÄÙ `trap', ËÏÔÏÒÁÑ ÔÅÐÅÒØ ×ÙÚÙ×ÁÅÔÓÑ Ó ÏËÒÕÖÅÎÉÅÍ ×ÙÚ×Á×ÛÅÇÏ Å£, ËÁË × ksh, ×ÍÅÓÔÏ ÎÏ×ÏÇÏ ÕÒÏ×ÎÑ ÆÕÎËÃÉÉ. ðÒÅÒÙ×ÁÎÉÑ, ÕÓÔÁÎÏ×ÌÅÎÎÙÅ ËÁË ÆÕÎËÃÉÉ, (Ô.Å. mytt(TRAPINT() {...})) ÒÁÂÏÔÁÀÔ ËÁË É ÒÁÎØÛÅ.
  it() ðÁÒÁÍÅÔÒ tt(NO_CLOBBER) - ÔÅÐÅÒØ ÎÁÚÙ×ÁÅÔÓÑ -C É tt(PRINT_EXIT_VALUE) -1; ÒÁÎØÛÅ ÂÙÌÏ ÎÁÏÂÏÒÏÔ. (éÓÐÏÌØÚÏ×ÁÎÉÅ ÉͣΠÐÒÅÄÐÏÞÔÉÔÅÌØÎÅÅ, ÞÅÍ ÂÕË×.)
  it() mytt([[) - ÚÁÒÅÚÅÒ×ÉÒÏ×ÁÎÎÏÅ ÓÌÏ×Ï, ÓÌÅÄÏ×ÁÔÅÌØÎÏ, ÄÏÌÖÎÏ ÂÙÔØ ÏÔÄÅÌÅÎÏ ÏÔ ÄÒÕÇÉÈ ÓÉÍ×ÏÌÏ× Ó×ÏÂÏÄÎÙÍ ÍÅÓÔÏÍ; mytt({) É mytt(}) ÔÁËÖÅ ÚÁÒÅÚÅÒ×ÉÒÏ×ÁÎÎÙÅ ÓÌÏ×Á, ÅÓÌÉ ÚÁÄÁÎ ÐÁÒÁÍÅÔÒ tt(IGNORE_BRACES).
  it() õÄẠ́ΠÐÁÒÁÍÅÔÒ tt(CSH_JUNKIE_PAREN): csh-like ËÏÄ ÔÅÐÅÒØ ×ÓÅÇÄÁ ×ÙÐÏÌÎÑÅÔ ÔÏ, ÞÔÏ ÏÎ ÄÏÌÖÅÎ ×ÙÐÏÌÎÑÔØ, Ô.Å. mytt(if ( ... ) ...) ×ÙÐÏÌÎÑÅÔ ËÏÄ ×ÎÕÔÒÉ ÓËÏÂÏË ×ÙÐÏÌÎÑÅÔÓÑ × ÏÔÄÅÌØÎÏÍ ÐÒÏÃÅÓÓÅ. þÔÏÂÙ ÜÔÏ ÍÏÖÎÏ ÂÙÌÏ ÉÓÐÏÌØÚÏ×ÁÔØ, ÓÉÎÔÁËÓÉÓ ÐÏÓÌÅ mytt(if) ÍÅÎÅÅ ÓÔÒÏÇ, ÞÅÍ × ÄÒÕÇÉÈ ÛÅÌÌÁÈ.
  it() mytt(foo=*) - ÎÅ ÓÒÁÚÕ ×ÙÐÏÌÎÑÅÔ ÕÎÉ×ÅÒÓÁÌÉÚÁÃÉÀ ÉÍ£Î × ÐÒÁ×ÏÊ ÞÁÓÔÉ ÐÒÉÓ×ÁÉ×ÁÎÉÑ; ÓÔÁÒÏÅ ÐÏ×ÅÄÅÎÉÅ ÔÅÐÅÒØ ÔÒÅÂÕÅÔ ÐÁÒÁÍÅÔÒÁ tt(GLOB_ASSIGN). (mytt(foo=(*)) - ÞÔÏÂÙ ÐÒÉÎÕÄÉÔÅÌØÎÏ Å£ ×ÙÐÏÌÎÉÔØ.)
  it() tt(<>) ×ÙÐÏÌÎÑÅÔ ÐÅÒÅÎÁÐÒÁ×ÌÅÎÉÅ ××ÏÄÁ É ×Ù×ÏÄÁ × ÕÓÔÁÎÏ×ÌÅÎÎÙÊ ÆÁÊÌ. äÌÑ ÃÉÆÒÏ×ÏÇÏ ÏÂÏÚÎÁÞÅÎÉÑ ÎÕÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ tt(<->).
  it() ëÌÁÓÓÉÆÉËÁÔÏÒÙ ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ, ÔÁËÉÅ ËÁË tt(exec), tt(noglob), tt(command), - ÔÅÐÅÒØ ÔÒÁËÔÕÀÔÓÑ ÂÏÌØÛÅ ËÁË ×ÓÔÒÏÅÎÎÙÅ ËÏÍÁÎÄÙ: ÐÅÒ×ÏÎÁÞÁÌØÎÏ Õ ÎÉÈ ÂÙÌ ÏÓÏÂÅÎÎÙÊ ÓÉÎÔÁËÓÉÓ. üÔÏ ÄÏÌÖÎÏ ÏÂÌÅÇÞÉÔØ ×ÙÐÏÌÎÅÎÉÅ ÒÁÚÌÉÞÎÙÈ ÈÉÔÒÏÓÔÅÊ (×ÙËÌÀÞÅÎÉÅ, ÓËÒÙÔÉÅ × ÐÁÒÁÍÅÔÒÁÈ É Ô.Ð.).
  it() ÷ÓÔÒÏÅÎÎÁÑ ËÏÍÁÎÄÁ pushd ÂÙÌÁ ÐÅÒÅÐÉÓÁÎÁ ÄÌÑ ÓÏ×ÍÅÓÔÉÍÏÓÔÉ Ó ÄÒÕÇÉÍÉ ÛÅÌÌÁÍÉ. óÔÁÒÏÅ ÐÏ×ÅÄÅÎÉÅ ÍÏÖÎÏ ÐÏÌÕÞÉÔØ ÛÅÌÌ ÆÕÎËÃÉÅÊ.
  it() ôÅËÕÝÁÑ ×ÅÒÓÉÑ ÉÓÐÏÌØÚÕÅÔ tt(~) ÄÌÑ ÐÏÄÓÔÁÎÏ×ËÉ ÓÔÅËÁ ÄÉÒÅËÔÏÒÉÉ ×ÍÅÓÔÏ tt(=). üÔÏ ÄÌÑ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ: ×ÓÅ ÏÓÔÁÌØÎÙÅ ÐÏÄÓÔÁÎÏ×ËÉ ÄÉÒÅËÔÏÒÉÉ (tt(~user), tt(~name), tt(~+), ...) ÉÓÐÏÌØÚÕÀÔ ÔÉÌØÄÕ, Ô.Ë. tt(=<number>) ×ÙÚÙ×ÁÌÏ ÐÒÏÂÌÅÍÙ Ó ÐÏÄÓÔÁÎÏ×ËÏÊ tt(=program).
  it() ðÁÒÁÍÅÔÒ tt(HISTLIT) ÂÙÌ ÐÏÌÏÍÁÎ ÒÁÚÌÉÞÎÙÍÉ ÓÐÏÓÏÂÁÍÉ É ÚÁÔÅÍ ÕÄÁÌ£Î: ÐÅÒÅÐÉÓÁÎÎÙÊ ÍÅÈÁÎÉÚÍ ÉÓÔÏÒÉÉ ÎÉÞÅÇÏ ÎÅ ÉÚÍÅÎÉÌ, ÎÏ ÄÁÎÎÙÊ ÐÁÒÁÍÅÔÒ ÓÔÁÌ ÎÅÎÕÖÎÙÍ.
  it() òÁÓÛÉÒÅÎÉÅ ÉÓÔÏÒÉÉ ×ÙËÌÀÞÅÎÏ × ÓÔÒÏËÁÈ, ÚÁËÌÀÞ£ÎÎÙÈ × ÏÄÉÎÁÒÎÙÅ ËÁ×ÙÞËÉ, ËÁË É × ÄÒÕÇÉÈ ÆÏÒÍÁÈ ÒÁÓÛÉÒÅÎÉÑ, ÓÌÅÄÏ×ÁÔÅÌØÎÏ, ×ÏÓËÌÉÃÁÔÅÌØÎÙÅ ÚÎÁËÉ ÎÅ ÎÕÖÎÏ ÜËÒÁÎÉÒÏ×ÁÔØ.
  it() ðÅÒÅÍÅÎÎÁÑ mytt($HISTCHARS) ÔÅÐÅÒØ ÓÔÁÌÁ mytt($histchars). ÷ ÄÁÎÎÙÊ ÍÏÍÅÎÔ ÏÎÉ ÏÂÅ ÄÏÓÔÕÐÎÙ ÄÌÑ ÓÏ×ÍÅÓÔÉÍÏÓÔÉ.
  it() ðÁÒÁÍÅÔÒ tt(PROMPT_SUBST) ÔÅÐÅÒØ ×ÙÐÏÌÎÑÅÔ backquote expansion -- hence you should quote these in prompts. (ËÁË ÒÅÚÕÌØÔÁÔ, SPROMPT ÔÏÖÅ ÉÚÍÅÎÉÌÓÑ.)
  it() Quoting in prompts has changed: close parentheses inside ternary expressions should be quoted with a tt(%); history is now tt(%!), not tt(!).  Backslashes are no longer special.
  )

sect(çÄÅ ÍÎÅ ÄÏÌÏÖÉÔØ Ï ÏÛÉÂËÁÈ, ÐÏÌÕÞÉÔØ ÂÏÌØÛÅ ÉÎÆÏÒÍÁÃÉÉ / ËÔÏ ÒÁÂÏÔÁÅÔ ÎÁÄ zsh?)
label(52)

  ûÅÌÌ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ ÒÁÚÌÉÞÎÙÍÉ (entirely self-appointed) ÐÏÄÐÉÓÞÉËÁÍÉ ÌÉÓÔÁ ÒÁÓÓÙÌËÉ,
  verb(
    zsh-workers@sunsite.dk
  )
  Ô.Þ. ÐÉÛÉÔÅ ÐÏ ÌÀÂÙÍ ×ÏÐÒÏÓÁÍ (ÓÏÏÂÝÅÎÉÑ Ï ÏÛÉÂËÁÈ, ÐÒÅÄÌÏÖÅÎÉÑ, ÖÁÌÏÂÙ...), Ó×ÑÚÁÎÎÙÍ Ó ÒÁÚÒÁÂÏÔËÏÊ ÛÅÌÌÁ. åÓÌÉ ×Ù ÈÏÔÉÔÅ, ÞÔÏÂÙ ËÔÏ-ÎÉÂÕÄØ ÎÁÐÉÓÁÌ ÎÅÐÏÓÒÅÄÓÔ×ÅÎÎÏ ×ÁÍ - ÔÁË É ÓËÁÖÉÔÅ. âÏÌØÛÉÎÓÔ×Ï ÚÁÐÌÁÔÏË ÐÏÑ×ÌÑÀÔÓÑ ÓÎÁÞÁÌÁ ÚÄÅÓØ.

  ïÂÒÁÔÉÔÅ ×ÎÉÍÁÎÉÅ, ÞÔÏ ÜÔÏ ÍÅÓÔÏÐÏÌÏÖÅÎÉÅ ÎÅÄÁ×ÎÏ ÉÚÍÅÎÉÌÏÓØ (ñÎ×ÁÒØ 1999), É ÉÎÓÔÒÕËÃÉÉ ÓÌÅÇËÁ ÒÁÚÌÉÞÎÙ --- × ÞÁÓÔÎÏÓÔÉ, ÅÓÌÉ ×Ù ÕÖÅ ÐÏÄÐÉÓÁÎÙ, ÔÏ ÉÎÓÔÒÕËÃÉÉ Ï ÔÏÍ, ËÁË ÏÔÐÉÓÁÔØÓÑ ÂÕÄÕÔ ÒÁÚÌÉÞÁÔØÓÑ.

  ðÏÖÁÌÕÊÓÔÁ, ÚÁÍÅÔØÔÅ ÔÁËÖÅ, ÞÔÏ ÎÅËÏÔÏÒÙÅ ÏÛÉÂËÉ ÓÕÝÅÓÔ×ÕÀÔ ÔÏÌØËÏ ÎÁ ÏÐÒÅÄÅÌ£ÎÎÙÈ ÁÒÈÉÔÅËÔÕÒÁÈ, Ë ËÏÔÏÒÙÍ ÒÁÚÒÁÂÏÔÞÉËÉ ÍÏÇÕÔ ÎÅ ÉÍÅÔØ ÄÏÓÔÕÐÁ. ÷ ÜÔÏÍ ÓÌÕÞÁÅ ÏÔÌÁÄÏÞÎÁÑ ÉÎÆÏÒÍÁÃÉÑ ÏÓÏÂÅÎÎÏ ÎÕÖÎÁ É, ÐÏ ×ÏÚÍÏÖÎÏÓÔÉ, ËÁË ÍÏÖÎÏ ÄÅÔÁÌØÎÅÊ.

  åÓÔØ ÅÝ£ Ä×Á ÎÅÂÏÌØÛÉÈ ÐÒÏÇÒÅÓÓÉ×ÎÙÈ ÌÉÓÔÁ, ÏÄÉÎ Ó ÓÏÏÂÝÅÎÉÑÍÉ, ËÁÓÁÀÝÉÈÓÑ ÉÓÐÏÌØÚÏ×ÁÎÉÑ,
  verb(
    zsh-users@sunsite.dk
  )
  Á ÄÒÕÇÏÊ ÓÏÄÅÒÖÉÔ ÏÂßÑ×ÌÅÎÉÑ: Ï ×ÅÒÓÉÑÈ, Ï ÇÌÁ×ÎÙÈ ÉÚÍÅÎÅÎÉÑÈ × ÛÅÌÌÅ, ÉÌÉ, ÎÁÐÒÉÍÅÒ, Ï ÜÔÏÍ FAQ,
  verb(
    zsh-announce@sunsite.dk
  )
  (ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÐÏÓÌÅÄÎÅÇÏ × ÎÁÓÔÏÑÝÅÅ ×ÒÅÍÑ ÏÇÒÁÎÉÞÅÎÏ).

  ÷Ù ÍÏÖÅÔÅ ÐÒÉÓÏÅÄÉÎÉÔØÓÑ ÔÏÌØËÏ Ë ÏÄÎÏÊ ÒÁÓÓÙÌËÅ: zsh-workers ÐÏÌÕÞÁÀÔ ×ÓÅ ÒÁÓÓÙÌËÉ, Á zsh-users ÂÕÄÕÔ ÐÏÌÕÞÁÔØ ÏÂßÑ×ÌÅÎÉÑ.

  éÎÓÔÒÕËÃÉÉ ÄÌÑ zsh-announce É zsh-users ÔÁËÉÅ ÖÅ, ËÁË É ÄÌÑ zsh-workers: ÐÒÏÓÔÏ ÉÚÍÅÎÉÔÅ zsh-workers ÎÁ ÔÏ, ÞÔÏ ÎÕÖÎÏ.

  þÔÏÂÙ ÐÒÉÓÏÅÄÉÎÉÔØÓÑ Ë zsh-workers, ÎÕÖÎÏ ÐÏÓÌÁÔØ ÐÉÓØÍÏ ÎÁ
  verb(
    zsh-workers-subscribe@sunsite.dk
  )
  (ÆÁËÔÉÞÅÓËÏÅ ÓÏÄÅÒÖÁÎÉÅ ÎÅ ×ÁÖÎÏ). úÁÍÅÎÉÔÅ tt(subscribe) ÎÁ tt(unsubscribe), ÞÔÏÂÙ ÏÔÐÉÓÁÔØÓÑ. ðÒÏÇÒÁÍÍÎÏÅ ÏÂÅÓÐÅÞÅÎÉÅ (tt(ezml)) ÉÍÅÅÔ ÒÁÚÎÙÅ ÇÌÀËÉ, Ô.Å. ÅÓÌÉ ÞÔÏ, ÔÏ ×Ù ÍÏÖÅÔÅ ×ÏÓÓÔÁÎÏ×ÉÔØ ÓÏÏÂÝÅÎÉÅ ÉÚ ÁÒÈÉ×Á. äÌÑ ÂÏÌÅÅ ÄÅÔÁÌØÎÏÊ ÉÎÆÏÒÍÁÃÉÉ ÐÉÛÉÔÅ ÎÁ email(zsh-workers-help@sunsite.dk). áÄÍÉÎÉÓÔÒÁÔÉ×ÎÙÅ ×ÏÐÒÏÓÙ ÌÕÞÛÅ ÓÌÁÔØ ÎÁ email(zsh-workers-owner@sunsite.dk). òÁÓÓÙÌËÕ ÏÂÓÌÕÖÉ×ÁÅÔ email(Karsten Thygesen <karthy@kom.auc.dk>).

  áÒÈÉ× ÒÁÓÓÙÌËÉ ÚÁ ÐÏÓÌÅÄÎÉÅ ÎÅÓËÏÌØËÏ ÌÅÔ ÎÁÈÏÄÉÔÓÑ ÚÄÅÓØ
    url(http://www.zsh.org/mla/)(http://www.zsh.org/mla/)
  × ÇÌÁ×ÎÏÍ ÁÒÈÉ×Å zsh × á×ÓÔÒÁÌÉÉ.

  ëÏÎÅÞÎÏ, ×Ù ÔÁËÖÅ ÍÏÖÅÔÅ ÚÁÄÁ×ÁÔØ ×ÏÐÒÏÓÙ × Usenet ÇÒÕÐÐÕ comp.unix.shell; ÅÓÌÉ ÎÉÞÅÇÏ ÎÅ ÐÏÍÏÇÌÏ, ÔÏ ×Ù ÍÏÖÅÔÅ ÎÁÐÉÓÁÔØ ÄÁÖÅ ÍÎÅ.

sect(ëÁË ÎÁÓÞ£Ô ÓÐÉÓËÁ ÐÏÖÅÌÁÎÉÊ?)

  ðÏÓÌÅ ×ÅÒÓÉÉ 3, ËÏÄ ÓÔÁÌ ÚÎÁÞÉÔÅÌØÎÏ ÞÉÝÅ, ÞÅÍ ÒÁÎØÛÅ, ÎÏ ×Ó£ ÅÝ£ ÉÍÅÅÔ ÐÒÉÚÎÁËÉ ×ÏÚÒÁÓÔÁ É ÍÎÏÇÏ ×ÅÝÅÊ ÍÏÇÌÉ ÂÙ ÂÙÔØ ÓÄÅÌÁÎÙ ÌÕÞÝÅ, ÂÕÄØ ÏÎÉ ÎÁÐÉÓÁÎÙ ÚÁÎÏ×Ï. âÏÌÅÅ ÜÆÆÅËÔÉ×ÎÙÊ ËÏÄ ÄÌÑ ÌÅËÓÉËÉ/ÓÉÎÔÁËÓÉÓÁ/×ÙÐÏÌÎÅÎÉÑ ÂÙÌ ÂÙ ÐÒÅÄÐÏÞÔÉÔÅÌØÎÅÅ. äÏÂÒÏ×ÏÌØÃÙ ÏÓÏÂÅÎÎÏ ÐÒÉ×ÅÔÓÔ×ÕÀÔÓÑ ÄÌÑ ÜÔÉÈ ÚÁÄÁÞ.

  ÷ÏÔ ÐÏÓÌÅÄÎÉÅ ÉÚÍÅÎÅÎÉÑ, ËÏÔÏÒÙÅ ÐÏÑ×ÉÌÉÓØ × zsh 3.1.6.
  itemize(
  it() åÝ£ ÂÏÌÅÅ ÍÏÝÎÁÑ ÓÉÓÔÅÍÁ ÚÁ×ÅÒÛÅÎÉÑ, ÏÓÎÏ×ÁÎÎÁÑ ÎÁ ÛÅÌÌ-ÆÕÎËÃÉÑÈ, ÐÏÚ×ÏÌÑÅÔ ÂÏÌÅÅ ÄÅÔÁÌØÎÏ ËÏÎÔÒÏÌÉÒÏ×ÁÔØ ÓÏÐÏÓÔÁ×ÌÅÎÉÅ ÚÁ×ÅÒÛÅÎÉÊ É ÉÈ ×ÓÔÁ×ËÕ É ÏÔÏÂÒÁÖÅÎÉÅ. æÕÎËÃÉÉ, ÒÁÂÏÔÁÀÝÉÅ `ÉÚ ËÏÒÏÂËÉ' ÂÕÄÕÔ ÄÏÓÔÕÐÎÙ, ×ËÌÀÞÁÑ ÍÎÏÇÏ ÆÕÎËÃÉÊ ÄÌÑ ×ÎÅÛÎÉÈ ËÏÍÁÎÄ: ÆÁÊÌÙ × tar-ÁÒÈÉ×ÁÈ ÍÏÇÕÔ ÂÙÔØ ÕËÁÚÁÎÙ ÄÌÑ ÉÚ×ÌÅÞÅÎÉÑ, ËÁË ÂÕÄÔÏ ÏÎÉ ÒÅÁÌØÎÙÅ ÆÁÊÌÙ; GNU ËÏÍÁÎÄÙ, ËÏÔÏÒÙÅ ÐÒÉÎÉÍÁÀÔ ÐÁÒÁÍÅÔÒ mytt(--help), ÍÏÇÕÔ ÓÇÅÎÅÒÉÒÏ×ÁÔØ ÌÉÓÔ ÚÁ×ÅÒÛÅÎÉÊ ÄÌÑ ÎÉÈ ÓÁÍÉÈ ÎÁ ÌÅÔÕ, É Ô.Ä, É Ô.Ð. ÷Ù ÍÏÖÅÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ ÓÔÁÒÙÊ ÓÔÉÌØ ÚÁ×ÅÒÛÅÎÉÑ, ÏÓÎÏ×ÁÎÎÙÊ ÎÁ tt(compctl), ÄÌÑ ÎÅËÏÔÏÒÙÈ ËÏÍÁÎÄ É ÎÏ×ÙÊ ÓÔÉÌØ ÄÌÑ ÄÒÕÇÉÈ; ×Ù ÍÏÖÅÔÅ ÐÒÉ×ÑÚÁÔØ ÓÐÅÃÉÆÉÞÅÓËÏÅ ÚÁ×ÅÒÛÅÎÉÅ ËÏÍÁÎÄÙ ×ÁÛÅÇÏ ÓÏÂÓÔ×ÅÎÎÏÇÏ ÏÐÒÅÄÅÌÅÎÉÑ ÎÁÖÁÔÉÑ ËÌÁ×ÉÛÉ.
  it() äÒÕÇÉÅ ÒÁÓÛÉÒÅÎÉÑ ÚÁ×ÅÒÛÅÎÉÑ: ÓÏÏÔ×ÅÔÓÔ×ÅÎÎÙÊ ËÏÎÔÒÏÌØ, ÐÏÚ×ÏÌÑÀÝÉÊ ÎÅÞÕ×ÓÔ×ÉÔÅÌØÎÙÅ Ë ÒÅÇÉÓÔÒÕ ÓÏÐÏÓÔÁ×ÌÅÎÉÑ É ÓÐÅÃÉÁÌØÎÙÅ ÓÉÍ×ÏÌÙ, ÎÁÐÒÉÍÅÒ mytt(z_t<TAB>) ÐÏÚ×ÏÌÑÅÔ ÓÐÅÃÉÁÌØÎÙÊ ÓÉÍ×ÏÌ ÄÏ mytt(_) Ô.Å. ÒÁÓÛÉÒÉÔÓÑ ÄÏ mytt(zle_tricky.c) --- ×Ó£ ÐÏÄ ËÏÎÔÒÏÌÅÍ ÐÏÌØÚÏ×ÁÔÅÌÑ; ÚÁ×ÅÒÛÅÎÉÑ ÍÏÇÕÔ ÂÙÔØ ÓÇÒÕÐÐÉÒÏ×ÁÎÙ; ÎÏ×ÁÑ ËÏÍÁÎÄÁ ÚÁ×ÅÒÛÅÎÉÑ, menu-select, ÐÏÚ×ÏÌÑÅÔ ÒÅÁÌØÎÏ ×ÙÂÒÁÔØ ÉÚ ÍÅÎÀ --- ×Ù ÍÏÖÅÔÅ ÐÅÒÅÄ×ÉÇÁÔØ ËÕÒÓÏÒ, ÞÔÏÂÙ ×ÙÂÒÁÔØ ÚÁ×ÅÒÛÅÎÉÅ.
  it() îÅÞÕ×ÓÔ×ÉÔÅÌØÎÙÅ Ë ÒÅÇÉÓÔÒÕ É ÐÒÉÂÌÉÖ£ÎÎÙÅ ÓÏÐÏÓÔÁ×ÌÅÎÉÑ × ÕÎÉ×ÅÒÓÁÌÉÚÁÃÉÉ ËÏÄÁ: ÎÁÐÒÉÍÅÒ, menu((#ia2)readme' ÓÏÓÔÁ×ÉÔ ÓÔÒÏËÕ `readme), ÎÅ ×ÚÉÒÁÑ ÎÁ ÒÅÇÉÓÔÒ É ÄÏÐÕÓËÁÑ Ä×Å ÏÛÉÂËÉ, ÔÁËÉÅ ËÁË tt(README), tt(READ.ME), tt(_README_), tt(Read!Me!). îÏ×ÁÑ ÓÉÓÔÅÍÁ ÚÁ×ÅÒÛÅÎÉÑ ÚÎÁÅÔ Ï ÜÔÏÍ, ÐÏÚ×ÏÌÑÑ ÉÓÐÒÁ×ÉÔØ ÚÁ×ÅÒÛÅÎÉÅ, Ô.Å. mytt(mkaef<TAB>) ÍÏÖÅÔ ÂÙÔØ ÚÁ×ÅÒÛÅÎÏ ÄÏ mytt(Makefile).
  it() áÓÓÏÃÉÁÔÉ×ÎÙÅ ÍÁÓÓÉ×Ù, ÏÂßÑ×ÌÅÎÎÙÅ Ó ÐÏÍÏÝØÀ mytt(typeset -A aname); ÓÉÎÔÁËÓÉÓ ÄÌÑ ÓÏÚÄÁÎÉÑ, ÄÏÓÔÕÐÁ É ÕÄÁÌÅÎÉÑ ÜÌÅÍÅÎÔÏ× ÉÚ ÎÉÈ.
  it() ðÏÌØÚÏ×ÁÔÅÌÉ ÍÏÇÕÔ ÓÁÍÉ ÓÏÚÄÁ×ÁÔØ ÉÈ ÓÏÂÓÔ×ÅÎÎÙÅ tt(foopath)/tt(FOOPATH) array/path ËÏÍÂÉÎÁÃÉÉ, ÔÁËÉÅ ËÁË tt(path) É tt(PATH).
  it() äÉÎÁÍÉÞÅÓËÉ ÚÁÇÒÕÖÁÅÍÁÑ ÂÉÂÌÉÏÔÅËÁ ÄÌÑ FTP, ÚÁ×ÅÒÛÁÅÔ ÎÁÂÏÒ ÆÕÎËÃÉÊ ÄÌÑ ÐÒÏÓÔÏÔÙ ÉÓÐÏÌØÚÏ×ÁÎÉÑ ÛÅÌÌÁ. üÔÏ ÐÏÚ×ÏÌÉÔ ×ÁÍ ÉÓÐÏÌØÚÏ×ÁÔØ ×ÏÚÍÏÖÎÏÓÔÉ ÛÅÌÌÁ ÄÌÑ ÎÁÐÉÓÁÎÉÑ ÓÃÅÎÁÒÉÅ×, ÒÅÄÁËÔÉÒÏ×ÁÎÉÑ, ÚÁ×ÅÒÛÅÎÉÑ, ÐÅÒÅÎÁÐÒÁ×ÌÅÎÉÑ, ÐÒÏÓÍÏÔÒÁ ÄÉÒÅËÔÏÒÉÊ É Ô.Ä. ÂÅÚ FTP-ÓÅÓÓÉÉ.
  )
  
  äÒÕÇÉÅ ÂÕÄÕÝÉÅ ×ÏÚÍÏÖÎÏÓÔÉ, ËÏÔÏÒÙÅ ÂÙÌÉ ÐÒÅÄÌÏÖÅÎÙ:
  itemize(
  it() ëÏÄ ÐÁÒÁÍÅÔÒÏ× ÍÏÖÅÔ ÂÙÔØ ÂÏÌÅÅ ÜÆÆÅËÔÉ×ÎÙÍ, ÂÙÔØ ÍÏÖÅÔ ÄÁÖÅ Ó ÂÏÌØÛÉÍÉ ×ÏÚÍÏÖÎÏÓÔÑÍÉ ÉÚ ksh93.
  it() ëÏÎÆÉÇÕÒÁÃÉÏÎÎÙÅ ÆÁÊÌÙ zsh ÓÏÚÄÁ×ÁÔØ Ó ÐÏÍÏÝØÀ Dotfile Generator.
  it() äÁÌØÎÅÊÛÉÅ ÕÓÏ×ÅÒÛÅÎÓÔ×Ï×ÁÎÉÑ ÉÎÔÅÇÒÉÒÏ×ÁÎÉÑ ÒÅÄÁËÔÏÒÁ Ó ÆÕÎËÃÉÑÍÉ ÛÅÌÌÁ.
  it() Ksh ÓÏ×ÍÅÓÔÉÍÏÓÔØ ÄÏÌÖÎÁ ÂÙÔØ ÕÌÕÞÛÅÎÁ.
  it() ðÁÒÁÍÅÔÒ ÄÌÑ ÓÐÅÃÉÆÉËÁÔÏÒÏ× ÕÎÉ×ÅÒÓÁÌÉÚÁÃÉÉ, ÞÔÏÂÙ ÓÌÅÄÏ×ÁÔØ ÚÁ ÓÉÎÔÁËÓÉÓÏÍ perl (ÔÒÁÄÉÃÉÏÎÎÙÊ ÐÕÎËÔ).
  )
  
sect(éÍÅÅÔ ÌÉ zsh ÐÒÏÂÌÅÍÙ × 2000 ÇÏÄÕ?)

  ñ ÎÅ ÓÌÙÛÁÌ ÜÔÏÇÏ; ÒÅÛÁÔØ ×ÁÍ, ÂÙÔØ ÏÓÔÏÒÏÖÎÙÍ Ó ÄÁÔÁÍÉ ÉÌÉ ÎÅÔ, ÇÄÅ ÇÏÄ ÉÚ Ä×ÕÈ ÃÉÆÒ, ÈÏÔÑ, ÏÎÉ ÐÏÌÕÞÅÎÙ ÜËÒÁÎÉÒÏ×ÁÎÎÙÍÉ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÑÍÉ mytt(%W) É mytt(%D), É ÔÁËÖÅ ËÏÍÁÎÄÏÊ `tt(print -P)'. õ ÒÁÎÎÉÈ ×ÅÒÓÉÊ zsh ÚÄÅÓØ ÍÏÇÕÔ ÂÙÔØ ÐÒÏÂÌÅÍÙ.

nsect(âÌÁÇÏÄÁÒÎÏÓÔÉ:)

óÐÁÓÉÂÏ ÌÉÓÔÕ ÒÁÓÓÙÌËÉ zsh, × ÞÁÓÔÎÏÓÔÉ Bart Schaefer, ÚÁ ÓÏ×ÅÔÙ, ËÁÓÁÀÝÉÅÓÑ ÜÔÏÇÏ ÄÏËÕÍÅÎÔÁ. Zsh ÂÙÌ Õ ÁÒÈÉ×ÁÒÉÕÓÏ× Jim Mattson, Bas de Bakker, Richard Coleman, Zoltan Hidvegi É Andrew Main, Á ÌÉÓÔ ÒÁÓÓÙÌËÉ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ Peter Gray, Rick Ohnemus, Richard Coleman É Karsten Thygesen, ×ÓÅ ÏÎÉ ÔÁËÖÅ ÚÁÓÌÕÖÉ×ÁÀÔ ÂÌÁÇÏÄÁÒÎÏÓÔÉ. íÉÒ ×ÅÞÎÏ × ÄÏÌÇÕ ÐÅÒÅÄ Paul Falstad ÚÁ ÉÚÏÂÒÅÔÅÎÉÅ zsh ÎÁ ÐÅÒ×ÏÍ ÍÅÓÔÅ (ÈÏÔÑ ÄÏÂÁ×ÉÌ ÚÁ×ÅÒÛÅÎÉÅ Sven Wischnowsky).

nsect(á×ÔÏÒÓËÁÑ ÉÎÆÏÒÍÁÃÉÑ:)

á×ÔÏÒ ÄÏËÕÍÅÎÔÁ (C) - P.W. Stephenson, 1995, 1996, 1997, 1998, 1999, 2000. üÔÏÔ ÔÅËÓÔ ÂÙÌ ÓÏÚÄÁÎ × ÷ÅÌÉËÏÂÒÉÔÁÎÉÉ É Á×ÔÏÒ ÕÔ×ÅÒÄÉÌ Ó×ÏÉ ÍÏÒÁÌØÎÙÅ ÐÒÁ×Á ÐÏÄ Á×ÔÏÒÓËÉÍÉ ÐÒÁ×ÁÍÉ, ÐÒÏÅËÔÁÍÉ É ÐÁÔÅÎÔÁÍÉ, 1988.

òÁÚÒÅÛÅÎÉÅ ÔÅÍ ÓÁÍÙÍ ÐÒÅÄÏÓÔÁ×ÌÑÅÔÓÑ, ÂÅÚ ÐÉÓØÍÅÎÎÏÇÏ ÓÏÇÌÁÛÅÎÉÑ É ÂÅÚ ìÉÃÅÎÚÉÉ ÉÌÉ ÐÌÁÔÙ, ÞÔÏÂÙ ÉÓÐÏÌØÚÏ×ÁÔØ, ËÏÐÉÒÏ×ÁÔØ, ÉÚÍÅÎÑÔØ, É ÒÁÓÐÒÏÓÔÒÁÎÑÔØ ÜÔÏÔ ÄÏËÕÍÅÎÔ ÄÌÑ ÌÀÂÏÊ ÃÅÌÉ, ÐÒÉ ÕÓÌÏ×ÉÉ, ÞÔÏ ×ÙÛÅÕÐÏÍÑÎÕÔÏÅ Á×ÔÏÒÓËÏÅ ÐÒÁ×Ï ÐÏÑ×ÌÑÅÔÓÑ ×Ï ×ÓÅÈ ËÏÐÉÑÈ ÜÔÏÊ ÄÏËÕÍÅÎÔÁÃÉÉ. ðÏÍÎÉÔÅ, ÞÔÏ ÜÔÏÔ ÄÏËÕÍÅÎÔ ÉÚÍÅÎÑÅÔÓÑ ÅÖÅÍÅÓÑÞÎÏ É ÂÕÄÅÔ ÂÏÌÅÅ ÐÏÌÅÚÎÏ ÐÒÅÄÏÓÔÁ×ÉÔØ ÓÓÙÌËÕ ÎÁ ÐÏÌÎÙÊ ÔÅËÓÔ. âÏÌÅÅ ÉÌÉ ÍÅÎÅÅ ÐÒÉÇÏÄÎÁÑ ÓÓÙÌËÁ - "information on the Z-shell can be obtained on the World
Wide Web at URL http://sunsite.dk/zsh/".

^ permalink raw reply	[relevance 1%]

* Re: SunOS build failures for the last 2 days
  @ 2005-08-17 18:52  1%   ` Vin Shelton
  0 siblings, 0 replies; 200+ results
From: Vin Shelton @ 2005-08-17 18:52 UTC (permalink / raw)
  To: Wayne Davison; +Cc: zsh-workers

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

On 8/17/05, Wayne Davison <wayned@users.sourceforge.net> wrote:
> On Wed, Aug 17, 2005 at 11:08:41AM -0400, Vin Shelton wrote:
> > "./utils.epro", line 14: syntax error before or at: c
> > "./utils.epro", line 14: warning: undefined or missing type for: c
> 
> The source was just recently changed to define ZLE_UNICODE_SUPPORT by
> default on (what we hoped would be) systems that would support the new
> Unicode support.  You can get back to the non-Unicode codebase by using
> the configure option --disable-multibyte.  However, it would be nice if
> you could help us to debug what part of the Unicode support is failing
> on SunOS.
> 
> That error message makes it look like the type "wint_t" isn't known to
> the compiler, but if that is true, I don't see how getkeystring() would
> successfully build without ZLE_UNICODE_SUPPORT being defined -- unless
> the new configure test for multibyte support had messed up somehow?
> Perhaps try compiling and running the attached C program (compile it in
> the same dir as your zsh config.h using "cc -o multibyte multibyte.c").
> 

This prints 'No'.

FYI - I've attached the (SunOS-5.8) config.h file.  You'll note that
HAVE_WCHAR_H and HAVE_WCRTOMB are defined.

IIRC, Sun's wide character support is broken in these OS versions.

Regards,
  Vin

[-- Attachment #2: config.h --]
[-- Type: application/octet-stream, Size: 29146 bytes --]

/* config.h.  Generated by configure.  */
/* config.h.in.  Generated from configure.ac by autoheader.  */

/***** 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 *****/



/* Define to 1 if you want to use dynamically loaded modules on AIX. */
/* #undef AIXDYNAMIC */

/* Define to 1 if kill(pid, 0) doesn't return ESRCH, ie BeOS R4.51. */
/* #undef BROKEN_KILL_ESRCH */

/* Define to 1 if sigsuspend() is broken */
/* #undef BROKEN_POSIX_SIGSUSPEND */

/* Define to 1 if compiler incorrectly cast signed to unsigned. */
/* #undef BROKEN_SIGNED_TO_UNSIGNED_CASTING */

/* Define to 1 if tcsetpgrp() doesn't work, ie BeOS R4.51. */
/* #undef BROKEN_TCSETPGRP */

/* Define to 1 if you use BSD style signal handling (and can block signals).
   */
/* #undef BSD_SIGNALS */

/* Undefine if you don't want local features. By default this is defined. */
/* #undef CONFIG_LOCALE */

/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
   systems. This function is required for `alloca.c' support on those systems.
   */
/* #undef CRAY_STACKSEG_END */

/* Define to 1 if using `alloca.c'. */
/* #undef C_ALLOCA */

/* Define to 1 if you want to debug zsh. */
/* #undef DEBUG */

/* The default path; used when running commands with command -p */
#define DEFAULT_PATH "/usr/xpg4/bin:/usr/ccs/bin:/usr/bin:/opt/SUNWspro/bin"

/* Define to 1 if an underscore has to be prepended to dlsym() argument. */
/* #undef DLSYM_NEEDS_UNDERSCORE */

/* The extension used for dynamically loaded modules. */
#define DL_EXT "so"

/* Define to 1 if you want to use dynamically loaded modules. */
#define DYNAMIC 1

/* Define to 1 if multiple modules defining the same symbol are OK. */
#define DYNAMIC_NAME_CLASH_OK 1

/* Define to 1 if the `getpgrp' function requires zero arguments. */
#define GETPGRP_VOID 1

/* Define to 1 if getpwnam() is faked, ie BeOS R4.51. */
/* #undef GETPWNAM_FAKED */

/* The global file to source whenever zsh is run as a login shell; if
   undefined, don't source anything */
#define GLOBAL_ZLOGIN "/u/sheltonv/software/SunOS-5.8/etc/zlogin"

/* 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. */
#define GLOBAL_ZLOGOUT "/u/sheltonv/software/SunOS-5.8/etc/zlogout"

/* The global file to source whenever zsh is run as a login shell, before
   zshrc is read; if undefined, don't source anything. */
#define GLOBAL_ZPROFILE "/u/sheltonv/software/SunOS-5.8/etc/zprofile"

/* The global file to source absolutely first whenever zsh is run; if
   undefined, don't source anything. */
#define GLOBAL_ZSHENV "/u/sheltonv/software/SunOS-5.8/etc/zshenv"

/* The global file to source whenever zsh is run; if undefined, don't source
   anything */
#define GLOBAL_ZSHRC "/u/sheltonv/software/SunOS-5.8/etc/zshrc"

/* Define if TIOCGWINSZ is defined in sys/ioctl.h but not in termios.h. */
/* #undef GWINSZ_IN_SYS_IOCTL */

/* Define to 1 if you have `alloca', as a function or macro. */
#define HAVE_ALLOCA 1

/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
   */
#define HAVE_ALLOCA_H 1

/* Define if you have the termcap boolcodes symbol. */
#define HAVE_BOOLCODES 1

/* Define if you have the terminfo boolnames symbol. */
#define HAVE_BOOLNAMES 1

/* Define to 1 if you have the `brk' function. */
#define HAVE_BRK 1

/* Define to 1 if there is a prototype defined for brk() on your system. */
#define HAVE_BRK_PROTO 1

/* Define to 1 if you have the `cap_get_proc' function. */
/* #undef HAVE_CAP_GET_PROC */

/* Define to 1 if you have the <curses.h> header file. */
#define HAVE_CURSES_H 1

/* Define to 1 if you have the `difftime' function. */
#define HAVE_DIFFTIME 1

/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
   */
#define HAVE_DIRENT_H 1

/* Define to 1 if you have the `dlclose' function. */
#define HAVE_DLCLOSE 1

/* Define to 1 if you have the `dlerror' function. */
#define HAVE_DLERROR 1

/* Define to 1 if you have the <dlfcn.h> header file. */
#define HAVE_DLFCN_H 1

/* Define to 1 if you have the `dlopen' function. */
#define HAVE_DLOPEN 1

/* Define to 1 if you have the `dlsym' function. */
#define HAVE_DLSYM 1

/* Define to 1 if you have the <dl.h> header file. */
/* #undef HAVE_DL_H */

/* Define to 1 if you have the `erand48' function. */
#define HAVE_ERAND48 1

/* Define to 1 if you have the <errno.h> header file. */
#define HAVE_ERRNO_H 1

/* Define to 1 if you have the `faccessx' function. */
/* #undef HAVE_FACCESSX */

/* Define to 1 if you have the `fchdir' function. */
#define HAVE_FCHDIR 1

/* Define to 1 if you have the <fcntl.h> header file. */
#define HAVE_FCNTL_H 1

/* Define to 1 if system has working FIFOs. */
#define HAVE_FIFOS 1

/* Define to 1 if you have the `fseeko' function. */
#define HAVE_FSEEKO 1

/* Define to 1 if you have the `fstat' function. */
#define HAVE_FSTAT 1

/* Define to 1 if you have the `ftello' function. */
#define HAVE_FTELLO 1

/* Define to 1 if you have the `ftruncate' function. */
#define HAVE_FTRUNCATE 1

/* Define to 1 if you have the `getenv' function. */
#define HAVE_GETENV 1

/* Define to 1 if you have the `getgrgid' function. */
#define HAVE_GETGRGID 1

/* Define to 1 if you have the `getgrnam' function. */
#define HAVE_GETGRNAM 1

/* Define to 1 if you have the `gethostbyname2' function. */
/* #undef HAVE_GETHOSTBYNAME2 */

/* Define to 1 if you have the `gethostname' function. */
#define HAVE_GETHOSTNAME 1

/* Define to 1 if you have the `getipnodebyname' function. */
#define HAVE_GETIPNODEBYNAME 1

/* Define to 1 if you have the `getlogin' function. */
#define HAVE_GETLOGIN 1

/* Define to 1 if you have the `getpagesize' function. */
#define HAVE_GETPAGESIZE 1

/* Define to 1 if you have the `getpwent' function. */
#define HAVE_GETPWENT 1

/* Define to 1 if you have the `getpwnam' function. */
#define HAVE_GETPWNAM 1

/* Define to 1 if you have the `getpwuid' function. */
#define HAVE_GETPWUID 1

/* Define to 1 if you have the `getrlimit' function. */
#define HAVE_GETRLIMIT 1

/* Define to 1 if you have the `getrusage' function. */
#define HAVE_GETRUSAGE 1

/* Define to 1 if you have the `gettimeofday' function. */
#define HAVE_GETTIMEOFDAY 1

/* Define to 1 if you have the `grantpt' function. */
#define HAVE_GRANTPT 1

/* Define to 1 if you have the <grp.h> header file. */
#define HAVE_GRP_H 1

/* Define to 1 if you have the `htons' function. */
#define HAVE_HTONS 1

/* Define to 1 if you have the `iconv' function. */
#define HAVE_ICONV 1

/* Define to 1 if you have the <iconv.h> header file. */
#define HAVE_ICONV_H 1

/* Define to 1 if you have the `inet_aton' function. */
/* #undef HAVE_INET_ATON */

/* Define to 1 if you have the `inet_ntop' function. */
#define HAVE_INET_NTOP 1

/* Define to 1 if you have the `inet_pton' function. */
#define HAVE_INET_PTON 1

/* Define to 1 if you have the `initgroups' function. */
#define HAVE_INITGROUPS 1

/* Define to 1 if you have the <inttypes.h> header file. */
#define HAVE_INTTYPES_H 1

/* Define to 1 if there is a prototype defined for ioctl() on your system. */
#define HAVE_IOCTL_PROTO 1

/* Define to 1 if you have the `killpg' function. */
#define HAVE_KILLPG 1

/* Define to 1 if you have the <langinfo.h> header file. */
#define HAVE_LANGINFO_H 1

/* Define to 1 if you have the `lchown' function. */
#define HAVE_LCHOWN 1

/* Define to 1 if you have the `cap' library (-lcap). */
/* #undef HAVE_LIBCAP */

/* Define to 1 if you have the <libc.h> header file. */
/* #undef HAVE_LIBC_H */

/* Define to 1 if you have the `dl' library (-ldl). */
#define HAVE_LIBDL 1

/* Define to 1 if you have the `m' library (-lm). */
#define HAVE_LIBM 1

/* Define to 1 if you have the `socket' library (-lsocket). */
#define HAVE_LIBSOCKET 1

/* Define to 1 if you have the <limits.h> header file. */
#define HAVE_LIMITS_H 1

/* Define to 1 if system has working link(). */
#define HAVE_LINK 1

/* Define to 1 if you have the `load' function. */
/* #undef HAVE_LOAD */

/* Define to 1 if you have the `loadbind' function. */
/* #undef HAVE_LOADBIND */

/* Define to 1 if you have the `loadquery' function. */
/* #undef HAVE_LOADQUERY */

/* Define to 1 if you have the <locale.h> header file. */
#define HAVE_LOCALE_H 1

/* Define to 1 if you have the `lstat' function. */
#define HAVE_LSTAT 1

/* Define to 1 if you have the `mbrtowc' function. */
#define HAVE_MBRTOWC 1

/* Define to 1 if you have the `memcpy' function. */
#define HAVE_MEMCPY 1

/* Define to 1 if you have the `memmove' function. */
#define HAVE_MEMMOVE 1

/* Define to 1 if you have the <memory.h> header file. */
#define HAVE_MEMORY_H 1

/* Define to 1 if you have the `mkfifo' function. */
#define HAVE_MKFIFO 1

/* Define to 1 if there is a prototype defined for mknod() on your system. */
#define HAVE_MKNOD_PROTO 1

/* Define to 1 if you have the `mkstemp' function. */
#define HAVE_MKSTEMP 1

/* Define to 1 if you have a working `mmap' system call. */
#define HAVE_MMAP 1

/* Define to 1 if you have the `msync' function. */
#define HAVE_MSYNC 1

/* Define to 1 if you have the `munmap' function. */
#define HAVE_MUNMAP 1

/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
/* #undef HAVE_NDIR_H */

/* Define to 1 if you have the <netinet/in_systm.h> header file. */
#define HAVE_NETINET_IN_SYSTM_H 1

/* Define to 1 if you have the `nice' function. */
#define HAVE_NICE 1

/* Define to 1 if you have NIS. */
#define HAVE_NIS 1

/* Define to 1 if you have the `nis_list' function. */
#define HAVE_NIS_LIST 1

/* Define to 1 if you have NISPLUS. */
/* #undef HAVE_NIS_PLUS */

/* Define to 1 if you have the `nl_langinfo' function. */
#define HAVE_NL_LANGINFO 1

/* Define to 1 if you have the `ntohs' function. */
#define HAVE_NTOHS 1

/* Define if you have the termcap numcodes symbol. */
#define HAVE_NUMCODES 1

/* Define if you have the terminfo numnames symbol. */
#define HAVE_NUMNAMES 1

/* Define to 1 if you have the `open_memstream' function. */
/* #undef HAVE_OPEN_MEMSTREAM */

/* Define to 1 if your termcap library has the ospeed variable */
#define HAVE_OSPEED 1

/* Define to 1 if you have the `pathconf' function. */
#define HAVE_PATHCONF 1

/* Define to 1 if you have the `pcre_compile' function. */
/* #undef HAVE_PCRE_COMPILE */

/* Define to 1 if you have the `pcre_exec' function. */
/* #undef HAVE_PCRE_EXEC */

/* Define to 1 if you have the <pcre.h> header file. */
/* #undef HAVE_PCRE_H */

/* Define to 1 if you have the `pcre_study' function. */
/* #undef HAVE_PCRE_STUDY */

/* Define to 1 if you have the `poll' function. */
#define HAVE_POLL 1

/* Define to 1 if you have the <poll.h> header file. */
#define HAVE_POLL_H 1

/* Define to 1 if you have the `ptsname' function. */
#define HAVE_PTSNAME 1

/* Define to 1 if you have the `putenv' function. */
#define HAVE_PUTENV 1

/* Define to 1 if you have the <pwd.h> header file. */
#define HAVE_PWD_H 1

/* Define to 1 if you have the `readlink' function. */
#define HAVE_READLINK 1

/* Define to 1 if RLIMIT_AIO_MEM is present (whether or not as a macro). */
/* #undef HAVE_RLIMIT_AIO_MEM */

/* Define to 1 if RLIMIT_AIO_OPS is present (whether or not as a macro). */
/* #undef HAVE_RLIMIT_AIO_OPS */

/* Define to 1 if RLIMIT_AS is present (whether or not as a macro). */
#define HAVE_RLIMIT_AS 1

/* Define to 1 if RLIMIT_LOCKS is present (whether or not as a macro). */
/* #undef HAVE_RLIMIT_LOCKS */

/* Define to 1 if RLIMIT_MEMLOCK is present (whether or not as a macro). */
/* #undef HAVE_RLIMIT_MEMLOCK */

/* Define to 1 if RLIMIT_MSGQUEUE is present (whether or not as a macro). */
/* #undef HAVE_RLIMIT_MSGQUEUE */

/* Define to 1 if RLIMIT_NOFILE is present (whether or not as a macro). */
#define HAVE_RLIMIT_NOFILE 1

/* Define to 1 if RLIMIT_NPROC is present (whether or not as a macro). */
/* #undef HAVE_RLIMIT_NPROC */

/* Define to 1 if RLIMIT_PTHREAD is present (whether or not as a macro). */
/* #undef HAVE_RLIMIT_PTHREAD */

/* Define to 1 if RLIMIT_RSS is present (whether or not as a macro). */
/* #undef HAVE_RLIMIT_RSS */

/* Define to 1 if RLIMIT_SBSIZE is present (whether or not as a macro). */
/* #undef HAVE_RLIMIT_SBSIZE */

/* Define to 1 if RLIMIT_SIGPENDING is present (whether or not as a macro). */
/* #undef HAVE_RLIMIT_SIGPENDING */

/* Define to 1 if RLIMIT_TCACHE is present (whether or not as a macro). */
/* #undef HAVE_RLIMIT_TCACHE */

/* Define to 1 if RLIMIT_VMEM is present (whether or not as a macro). */
#define HAVE_RLIMIT_VMEM 1

/* Define to 1 if you have the `sbrk' function. */
#define HAVE_SBRK 1

/* Define to 1 if there is a prototype defined for sbrk() on your system. */
#define HAVE_SBRK_PROTO 1

/* Define to 1 if you have the `select' function. */
#define HAVE_SELECT 1

/* Define to 1 if you have the `seteuid' function. */
#define HAVE_SETEUID 1

/* Define to 1 if you have the `setlocale' function. */
#define HAVE_SETLOCALE 1

/* Define to 1 if you have the `setpgid' function. */
#define HAVE_SETPGID 1

/* Define to 1 if you have the `setpgrp' function. */
#define HAVE_SETPGRP 1

/* Define to 1 if you have the `setresuid' function. */
/* #undef HAVE_SETRESUID */

/* Define to 1 if you have the `setreuid' function. */
#define HAVE_SETREUID 1

/* Define to 1 if you have the `setsid' function. */
#define HAVE_SETSID 1

/* Define to 1 if you have the `setuid' function. */
#define HAVE_SETUID 1

/* Define to 1 if you have the `setupterm' function. */
#define HAVE_SETUPTERM 1

/* Define to 1 if you have the `shl_findsym' function. */
/* #undef HAVE_SHL_FINDSYM */

/* Define to 1 if you have the `shl_load' function. */
/* #undef HAVE_SHL_LOAD */

/* Define to 1 if you have the `shl_unload' function. */
/* #undef HAVE_SHL_UNLOAD */

/* Define to 1 if you have the `sigaction' function. */
#define HAVE_SIGACTION 1

/* Define to 1 if you have the `sigblock' function. */
/* #undef HAVE_SIGBLOCK */

/* Define to 1 if you have the `sighold' function. */
#define HAVE_SIGHOLD 1

/* Define to 1 if you have the `signgam' function. */
#define HAVE_SIGNGAM 1

/* Define to 1 if you have the `sigprocmask' function. */
#define HAVE_SIGPROCMASK 1

/* Define to 1 if you have the `sigrelse' function. */
#define HAVE_SIGRELSE 1

/* Define to 1 if you have the `sigsetmask' function. */
/* #undef HAVE_SIGSETMASK */

/* Define to 1 if you have the <stddef.h> header file. */
#define HAVE_STDDEF_H 1

/* Define to 1 if you have the <stdint.h> header file. */
/* #undef HAVE_STDINT_H */

/* Define to 1 if you have the <stdio.h> header file. */
#define HAVE_STDIO_H 1

/* Define to 1 if you have the <stdlib.h> header file. */
#define HAVE_STDLIB_H 1

/* Define if you have the termcap strcodes symbol. */
#define HAVE_STRCODES 1

/* Define to 1 if you have the `strcoll' function and it is properly defined.
   */
#define HAVE_STRCOLL 1

/* Define to 1 if you have the `strerror' function. */
#define HAVE_STRERROR 1

/* Define to 1 if you have the `strftime' function. */
#define HAVE_STRFTIME 1

/* Define to 1 if you have the <strings.h> header file. */
#define HAVE_STRINGS_H 1

/* Define to 1 if you have the <string.h> header file. */
#define HAVE_STRING_H 1

/* Define if you have the terminfo strnames symbol. */
#define HAVE_STRNAMES 1

/* Define to 1 if you have the `strstr' function. */
#define HAVE_STRSTR 1

/* Define if your system's struct direct has a member named d_ino. */
/* #undef HAVE_STRUCT_DIRECT_D_INO */

/* Define if your system's struct direct has a member named d_stat. */
/* #undef HAVE_STRUCT_DIRECT_D_STAT */

/* Define if your system's struct dirent has a member named d_ino. */
#define HAVE_STRUCT_DIRENT_D_INO 1

/* Define if your system's struct dirent has a member named d_stat. */
/* #undef HAVE_STRUCT_DIRENT_D_STAT */

/* Define to 1 if `ru_idrss' is member of `struct rusage'. */
#define HAVE_STRUCT_RUSAGE_RU_IDRSS 1

/* Define to 1 if `ru_inblock' is member of `struct rusage'. */
#define HAVE_STRUCT_RUSAGE_RU_INBLOCK 1

/* Define to 1 if `ru_isrss' is member of `struct rusage'. */
#define HAVE_STRUCT_RUSAGE_RU_ISRSS 1

/* Define to 1 if `ru_ixrss' is member of `struct rusage'. */
#define HAVE_STRUCT_RUSAGE_RU_IXRSS 1

/* Define to 1 if `ru_majflt' is member of `struct rusage'. */
#define HAVE_STRUCT_RUSAGE_RU_MAJFLT 1

/* Define to 1 if `ru_maxrss' is member of `struct rusage'. */
#define HAVE_STRUCT_RUSAGE_RU_MAXRSS 1

/* Define to 1 if `ru_minflt' is member of `struct rusage'. */
#define HAVE_STRUCT_RUSAGE_RU_MINFLT 1

/* Define to 1 if `ru_msgrcv' is member of `struct rusage'. */
#define HAVE_STRUCT_RUSAGE_RU_MSGRCV 1

/* Define to 1 if `ru_msgsnd' is member of `struct rusage'. */
#define HAVE_STRUCT_RUSAGE_RU_MSGSND 1

/* Define to 1 if `ru_nivcsw' is member of `struct rusage'. */
#define HAVE_STRUCT_RUSAGE_RU_NIVCSW 1

/* Define to 1 if `ru_nsignals' is member of `struct rusage'. */
#define HAVE_STRUCT_RUSAGE_RU_NSIGNALS 1

/* Define to 1 if `ru_nswap' is member of `struct rusage'. */
#define HAVE_STRUCT_RUSAGE_RU_NSWAP 1

/* Define to 1 if `ru_nvcsw' is member of `struct rusage'. */
#define HAVE_STRUCT_RUSAGE_RU_NVCSW 1

/* Define to 1 if `ru_oublock' is member of `struct rusage'. */
#define HAVE_STRUCT_RUSAGE_RU_OUBLOCK 1

/* Define if your system's struct sockaddr_in6 has a member named
   sin6_scope_id. */
#define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1

/* Define to 1 if struct timezone is defined by a system header */
#define HAVE_STRUCT_TIMEZONE 1

/* Define to 1 if struct utmp is defined by a system header */
#define HAVE_STRUCT_UTMP 1

/* Define to 1 if struct utmpx is defined by a system header */
#define HAVE_STRUCT_UTMPX 1

/* Define if your system's struct utmpx has a member named ut_host. */
#define HAVE_STRUCT_UTMPX_UT_HOST 1

/* Define if your system's struct utmpx has a member named ut_tv. */
#define HAVE_STRUCT_UTMPX_UT_TV 1

/* Define if your system's struct utmpx has a member named ut_xtime. */
#define HAVE_STRUCT_UTMPX_UT_XTIME 1

/* Define if your system's struct utmp has a member named ut_host. */
/* #undef HAVE_STRUCT_UTMP_UT_HOST */

/* Define to 1 if you have RFS superroot directory. */
/* #undef HAVE_SUPERROOT */

/* Define to 1 if you have the `sysconf' function. */
#define HAVE_SYSCONF 1

/* Define to 1 if you have the <sys/capability.h> header file. */
/* #undef HAVE_SYS_CAPABILITY_H */

/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
   */
/* #undef HAVE_SYS_DIR_H */

/* Define to 1 if you have the <sys/filio.h> header file. */
#define HAVE_SYS_FILIO_H 1

/* Define to 1 if you have the <sys/mman.h> header file. */
#define HAVE_SYS_MMAN_H 1

/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
   */
/* #undef HAVE_SYS_NDIR_H */

/* Define to 1 if you have the <sys/param.h> header file. */
#define HAVE_SYS_PARAM_H 1

/* Define to 1 if you have the <sys/resource.h> header file. */
#define HAVE_SYS_RESOURCE_H 1

/* Define to 1 if you have the <sys/select.h> header file. */
#define HAVE_SYS_SELECT_H 1

/* Define to 1 if you have the <sys/stat.h> header file. */
#define HAVE_SYS_STAT_H 1

/* Define to 1 if you have the <sys/stropts.h> header file. */
#define HAVE_SYS_STROPTS_H 1

/* Define to 1 if you have the <sys/times.h> header file. */
#define HAVE_SYS_TIMES_H 1

/* Define to 1 if you have the <sys/time.h> header file. */
#define HAVE_SYS_TIME_H 1

/* Define to 1 if you have the <sys/types.h> header file. */
#define HAVE_SYS_TYPES_H 1

/* Define to 1 if you have the <sys/utsname.h> header file. */
#define HAVE_SYS_UTSNAME_H 1

/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
#define HAVE_SYS_WAIT_H 1

/* Define to 1 if you have the `tcgetattr' function. */
#define HAVE_TCGETATTR 1

/* Define to 1 if you have the `tcsetpgrp' function. */
#define HAVE_TCSETPGRP 1

/* Define to 1 if you have the <termcap.h> header file. */
/* #undef HAVE_TERMCAP_H */

/* Define to 1 if you have the <termios.h> header file. */
#define HAVE_TERMIOS_H 1

/* Define to 1 if you have the <termio.h> header file. */
#define HAVE_TERMIO_H 1

/* Define to 1 if you have the <term.h> header file. */
#define HAVE_TERM_H 1

/* Define to 1 if you have the `tgetent' function. */
#define HAVE_TGETENT 1

/* Define to 1 if you have the `tigetflag' function. */
#define HAVE_TIGETFLAG 1

/* Define to 1 if you have the `tigetnum' function. */
#define HAVE_TIGETNUM 1

/* Define to 1 if you have the `tigetstr' function. */
#define HAVE_TIGETSTR 1

/* Define to 1 if you have the `uname' function. */
#define HAVE_UNAME 1

/* Define to 1 if the compiler can initialise a union. */
#define HAVE_UNION_INIT 1

/* Define to 1 if you have the <unistd.h> header file. */
#define HAVE_UNISTD_H 1

/* Define to 1 if you have the `unload' function. */
/* #undef HAVE_UNLOAD */

/* Define to 1 if you have the `unlockpt' function. */
#define HAVE_UNLOCKPT 1

/* Define to 1 if you have the <utmpx.h> header file. */
#define HAVE_UTMPX_H 1

/* Define to 1 if you have the <utmp.h> header file. */
#define HAVE_UTMP_H 1

/* Define to 1 if compiler supports variable-length arrays */
#define HAVE_VARIABLE_LENGTH_ARRAYS 1

/* Define to 1 if you have the `wait3' function. */
#define HAVE_WAIT3 1

/* Define to 1 if you have the `waitpid' function. */
#define HAVE_WAITPID 1

/* Define to 1 if you have the <wchar.h> header file. */
#define HAVE_WCHAR_H 1

/* Define to 1 if you have the `wcrtomb' function. */
#define HAVE_WCRTOMB 1

/* Define to 1 if you have the `wctomb' function. */
#define HAVE_WCTOMB 1

/* Define to 1 if you have the `_mktemp' function. */
#define HAVE__MKTEMP 1

/* Define to 1 if you want to use dynamically loaded modules on HPUX 10. */
/* #undef HPUXDYNAMIC */

/* Define as const if the declaration of iconv() needs const. */
#define ICONV_CONST const

/* Define to 1 if ino_t is 64 bit (for large file support). */
#define INO_T_IS_64_BIT 1

/* Define to 1 if we must include <sys/ioctl.h> to get a prototype for
   ioctl(). */
/* #undef IOCTL_IN_SYS_IOCTL */

/* 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 */
/* #undef LONG_IS_64_BIT */

/* Define to be the machine type (microprocessor class or machine model). */
#define MACHTYPE "sparc"

/* Define for Maildir support */
/* #undef MAILDIR_SUPPORT */

/* Define for function depth limits */
#define MAX_FUNCTION_DEPTH 4096

/* Define to 1 if you have ospeed, but it is not defined in termcap.h */
#define MUST_DEFINE_OSPEED 1

/* Define to 1 if you have no signal blocking at all (bummer). */
/* #undef NO_SIGNAL_BLOCKING */

/* Define to 1 if off_t is 64 bit (for large file support) */
#define OFF_T_IS_64_BIT 1

/* Define to be the name of the operating system. */
#define OSTYPE "solaris2.8"

/* Define to the address where bug reports for this package should be sent. */
#define PACKAGE_BUGREPORT ""

/* Define to the full name of this package. */
#define PACKAGE_NAME ""

/* Define to the full name and version of this package. */
#define PACKAGE_STRING ""

/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME ""

/* Define to the version of this package. */
#define PACKAGE_VERSION ""

/* Define to the path of the /dev/fd filesystem. */
#define PATH_DEV_FD "/dev/fd"

/* Define to be location of utmpx file. */
#define PATH_UTMPX_FILE "/etc/utmpx"

/* Define to be location of utmp file. */
/* #undef PATH_UTMP_FILE */

/* Define to be location of wtmpx file. */
#define PATH_WTMPX_FILE "/etc/wtmpx"

/* Define to be location of wtmp file. */
/* #undef PATH_WTMP_FILE */

/* Define to 1 if you use POSIX style signal handling. */
#define POSIX_SIGNALS 1

/* Define to 1 if ANSI function prototypes are usable. */
#define PROTOTYPES 1

/* 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. */
#define RESTRICTED_R 1

/* Define as the return type of signal handlers (`int' or `void'). */
#define RETSIGTYPE void

/* Define to 1 if RLIMIT_RSS and RLIMIT_AS both exist and are equal. */
/* #undef RLIMIT_RSS_IS_AS */

/* Define to 1 if RLIMIT_VMEM and RLIMIT_AS both exist and are equal. */
#define RLIMIT_VMEM_IS_AS 1

/* Define to 1 if RLIMIT_VMEM and RLIMIT_RSS both exist and are equal. */
/* #undef RLIMIT_VMEM_IS_RSS */

/* Define to 1 if struct rlimit uses long long */
#define RLIM_T_IS_LONG_LONG 1

/* Define to 1 if struct rlimit uses quad_t. */
/* #undef RLIM_T_IS_QUAD_T */

/* Define to 1 if struct rlimit uses unsigned. */
/* #undef RLIM_T_IS_UNSIGNED */

/* Define to 1 if select() is defined in <sys/socket.h>, ie BeOS R4.51 */
/* #undef SELECT_IN_SYS_SOCKET_H */

/* Define to 1 if /bin/sh does not interpret \ escape sequences. */
/* #undef SH_USE_BSD_ECHO */

/* If using the C implementation of alloca, define if you know the
   direction of stack growth for your system; otherwise it will be
   automatically deduced at run-time.
	STACK_DIRECTION > 0 => grows toward higher addresses
	STACK_DIRECTION < 0 => grows toward lower addresses
	STACK_DIRECTION = 0 => direction of growth unknown */
/* #undef STACK_DIRECTION */

/* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly. */
/* #undef STAT_MACROS_BROKEN */

/* Define to 1 if you have the ANSI C header files. */
#define STDC_HEADERS 1

/* Define to 1 if you use SYS style signal handling (and can block signals).
   */
/* #undef SYSV_SIGNALS */

/* Define if term.h chokes without curses.h. */
#define TERM_H_NEEDS_CURSES_H 1

/* Define to 1 if tgetent() accepts NULL as a buffer. */
#define TGETENT_ACCEPTS_NULL 1

/* Define to what tgetent() returns on success (0 on HP-UX X/Open curses). */
#define TGETENT_SUCCESS 1

/* Define if sys/time.h and sys/select.h cannot be both included. */
/* #undef TIME_H_SELECT_H_CONFLICTS */

/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
#define TIME_WITH_SYS_TIME 1

/* Define to 1 if all the kit for using /dev/ptmx for ptys is available. */
#define USE_DEV_PTMX 1

/* Define to 1 if you need to use the native getcwd. */
/* #undef USE_GETCWD */

/* Define to 1 if h_errno is not defined by the system. */
/* #undef USE_LOCAL_H_ERRNO */

/* Define to be a string corresponding the vendor of the machine. */
#define VENDOR "sun"

/* Define if your should include sys/stream.h and sys/ptem.h. */
#define WINSIZE_IN_PTEM 1

/* Define to 1 if you want unicode support in the line editor. */
/* #undef ZLE_UNICODE_SUPPORT */

/* Define to a 64 bit integer type if there is one, but long is shorter. */
#define ZSH_64_BIT_TYPE long long

/* Define to an unsigned variant of ZSH_64_BIT_TYPE if that is defined. */
#define ZSH_64_BIT_UTYPE unsigned long long

/* Define to 1 if you want to get debugging information on internal hash
   tables. This turns on the `hashinfo' builtin. */
/* #undef ZSH_HASH_DEBUG */

/* Define to 1 if you want to use zsh's own memory allocation routines */
#define ZSH_MEM 1

/* Define to 1 if you want to debug zsh memory allocation routines. */
/* #undef ZSH_MEM_DEBUG */

/* Define to 1 if you want to turn on warnings of memory allocation errors */
/* #undef ZSH_MEM_WARNING */

/* Define to 1 if you want to turn on memory checking for free(). */
/* #undef ZSH_SECURE_FREE */

/* Define to the base type of the third argument of accept */
#define ZSOCKLEN_T int

/* Define to empty if `const' does not conform to ANSI C. */
/* #undef const */

/* Define to `int' if <sys/types.h> doesn't define. */
/* #undef gid_t */

/* Define to `unsigned long' if <sys/types.h> doesn't define. */
/* #undef ino_t */

/* Define to `int' if <sys/types.h> does not define. */
/* #undef mode_t */

/* Define to `long' if <sys/types.h> does not define. */
/* #undef off_t */

/* Define to `int' if <sys/types.h> does not define. */
/* #undef pid_t */

/* Define to the type used in struct rlimit. */
/* #undef rlim_t */

/* Define to `unsigned int' if <sys/types.h> or <signal.h> doesn't define */
/* #undef sigset_t */

/* Define to `unsigned' if <sys/types.h> does not define. */
/* #undef size_t */

/* Define to `int' if <sys/types.h> doesn't define. */
/* #undef uid_t */

^ permalink raw reply	[relevance 1%]

* getopts does not follow SUS
@ 2005-09-03 11:17  4% DervishD
  0 siblings, 0 replies; 200+ results
From: DervishD @ 2005-09-03 11:17 UTC (permalink / raw)
  To: Zsh Workers

    Hi all :)

    SUS require that getopts is 'reset' if OPTIND is assigned the
value 1, so the following is expected:

    $ getopts "-" option --ta
    $ echo -- $option
    -
    $ OPTIND=1
    $ getopts "-" option --ta
    $ echo -- $option
    -

    But zsh doesn't do that:

    $ getopts "-" option --ta
    $ echo -- $option
    -
    $ OPTIND=1
    $ getopts "-" option --ta
    zsh: bad option -t
    $ echo -- $option
    ?

    But if we assign 0 to OPTIND under zsh:

    $ getopts "-" option --ta
    $ echo -- $option
    -
    $ OPTIND=0
    $ getopts "-" option --ta
    $ echo -- $option
    -

    The same in bash (whose getopts *does* follow SUS):

    $ getopts "-" option --ta
    $ echo -- $option
    -
    $ OPTIND=1
    $ getopts "-" option --ta
    $ echo -- $option
    -

    The relevant section in SUS is:

    SUS->Shell & Utilities->Utilities->getopts

    I don't have a copy of POSIX, so I don't know if the same applies
in POSIX :?

    Unfortunately, fixing this will probably break any script that
already uses OPTIND to 'reset' getopts and assigns a value of 0,
unless '0' is kept as a back-compatibility value (SUS says that any
value other than 1 is unspecified, so...

    I've tested under version 4.2.5, Linux, PC (i686). If any other
data is needed (or tests, or whatever) just tell.

    Thanks in advance :)

    Raúl Núñez de Arenas Coronado

-- 
Linux Registered User 88736 | http://www.dervishd.net
http://www.pleyades.net & http://www.gotesdelluna.net
It's my PC and I'll cry if I want to...


^ permalink raw reply	[relevance 4%]

* PATCH: source tree documentation
@ 2005-09-30 12:07  4% Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2005-09-30 12:07 UTC (permalink / raw)
  To: Zsh hackers list

Initial go at enhancing documentation for 4.3.

Index: INSTALL
===================================================================
RCS file: /cvsroot/zsh/zsh/INSTALL,v
retrieving revision 1.18
diff -u -r1.18 INSTALL
--- INSTALL	30 Jul 2004 11:09:17 -0000	1.18
+++ INSTALL	30 Sep 2005 12:05:56 -0000
@@ -235,6 +235,27 @@
 CONFIGURATION OPTIONS
 =====================
 
+Multibyte character support
+---------------------------
+
+Support for multibyte character sets that extend ASCII, such as UTF-8, is
+under development but the code in the line editor is sufficiently stable to
+be turned on by default in environments that provide full ISO 10646 support
+including the preprocessor definition __STDC_ISO_10646__.
+
+The support can be explicitly enabled or disable with --enable-multibyte or
+--disable-multibyte.  Reports of systems where multibyte support was not
+enabled by default but --enable-multibyte resulted in a usable shell would
+be appreciated.  The developers are not aware of any need to use
+--disable-multibyte and this should be reported as a bug.
+
+The main shell is not yet aware of multibyte characters, so for example the
+length of a scalar parameter will return the number of bytes, not
+characters, and pattern tests likewise treat single bytes as if they were
+characters.  This means that pattern tests such as ? and [[:alpha:]] do not
+work correctly with characters in multibyte character sets beyond the ASCII
+subset.
+
 Memory Routines
 ---------------
 
Index: NEWS
===================================================================
RCS file: /cvsroot/zsh/zsh/NEWS,v
retrieving revision 1.5
diff -u -r1.5 NEWS
--- NEWS	11 Jan 2005 17:49:16 -0000	1.5
+++ NEWS	30 Sep 2005 12:05:56 -0000
@@ -2,8 +2,35 @@
 CHANGES FROM PREVIOUS VERSIONS OF ZSH
 -------------------------------------
 
-Changes since zsh version 4.2.0
--------------------------------
+Major changes between versions 4.2 and 4.3
+------------------------------------------
+
+- There is support for multibyte character sets in the line editor,
+  though not the main shell.  See Multibyte Character Support in INSTALL.
+
+- New option PROMPT_SP, on by default, to work around the problem that the
+  line editor can overwrite output with no newline at the end.
+
+- New option HIST_SAVE_BY_COPY (on by default): history is saved by
+  copying and renaming instead of directly overwriting.
+
+- New redirection syntax e.g. {myfd}>file opens a new file descriptor
+  and stores the number in $myfd, so that >&$myfd will work.  Chosen
+  not to break existing code.
+
+- New Posix-style zsh-specific tests [[:IDENT:]], [[:IFS:]],
+  [[:IFSSPACE:]], [[:WORD:]] test if character can appear in identifier,
+  is an IFS character, is an IFS whitespace character, or is considered
+  as part of a word (is alphanumeric or appears in $WORDCHARS).  Note
+  the pattern code doesn't yet handle multibyte characters.
+
+- The idiom =(<<<...) optimised so that the shell internally turns
+  the ... into the contents of a file whose name is then substituted.
+
+- As always, many enhancements to completion functions.
+
+Changes in 4.2 since version 4.2.0
+----------------------------------
 
 - The autoload and related builtins take options -k and -z to indicate
   ksh or zsh autoloading style for given functions, making it possible
ndex: README
===================================================================
RCS file: /cvsroot/zsh/zsh/README,v
retrieving revision 1.22
diff -u -r1.22 README
--- README	9 Mar 2005 17:14:02 -0000	1.22
+++ README	30 Sep 2005 12:05:57 -0000
@@ -5,7 +5,7 @@
 Version
 -------
 
-This is a version under development subsequent to zsh 4.2.3.
+This is development code before the release of version 4.3.1.
 
 Installing Zsh
 --------------

-- 
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 message has been scanned for viruses by BlackSpider MailControl - www.blackspider.com


^ permalink raw reply	[relevance 4%]

* Re: [ramk@cse.iitm.ernet.in: Bug#335190: zsh: Enhancements to zsh-mime-handler]
  @ 2005-10-25 22:45  3% ` Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2005-10-25 22:45 UTC (permalink / raw)
  To: zsh-workers, ramk, 335190-forwarded

On Mon, 24 Oct 2005 15:33:18 -0400
Clint Adams <schizo@debian.org> wrote:
> ----- Forwarded message from "R.Ramkumar" <ramk@cse.iitm.ernet.in> -----
> 
> Just felt that there is much scope for customization in
> zsh-mime-{handler,setup}. I have patched the files for the following
> enhancements (thought that the additions were too small to merit
> reporting them individually, so I am putting them together):

Thanks, I'll add these.  Here's some proposed documentation (styles now
put in alphabetical order).

It would be quite nice to have a couple of examples illustrating
mailcap-prio-flags.

Index: Doc/Zsh/contrib.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Zsh/contrib.yo,v
retrieving revision 1.51
diff -u -r1.51 contrib.yo
--- Doc/Zsh/contrib.yo	21 Oct 2005 09:51:55 -0000	1.51
+++ Doc/Zsh/contrib.yo	25 Oct 2005 22:43:22 -0000
@@ -1370,19 +1370,17 @@
 to style patterns in case the system is extended in future.  Some
 examples are given below.
 startitem()
-item(mime-types)(
-A list of files in the format of tt(~/.mime.types) and
-tt(/etc/mime.types) to be read during setup, replacing the default list
-which consists of those two files.  The context is tt(:mime:).
-A tt(PLUS()) in the list will be replaced by the default files.
+item(tt(current-shell))(
+If this boolean style is true, the mailcap handler for the context in
+question is run using the tt(eval) builtin instead of by starting a new
+tt(sh) process.  This is more efficient, but may not work in the occasional
+cases where the mailcap handler uses strict POSIX syntax.
 )
-item(mailcap)(
-A list of files in the format of tt(~/.mailcap) and
-tt(/etc/mailcap) to be read during setup, replacing the default list
-which consists of those two files.  The context is tt(:mime:).
-A tt(PLUS()) in the list will be replaced by the default files.
+item(tt(flags))(
+Defines flags to go with a handler; the context is as for the
+tt(handler) style, and the format is as for the flags in tt(mailcap).
 )
-item(handler)(
+item(tt(handler))(
 Specifies a handler for a suffix; the suffix is given by the context as
 tt(:mime:.)var(suffix)tt(:), and the format of the handler is exactly
 that in tt(mailcap).  Note in particular the `tt(.)' and trailing colon
@@ -1392,11 +1390,63 @@
 or if the output is to be displayed through a pager (but not if the
 handler is itself a pager), it should include tt(copiousoutput).
 )
-item(flags)(
-Defines flags to go with a handler; the context is as for the
-tt(handler) style, and the format is as for the flags in tt(mailcap).
+item(tt(mailcap))(
+A list of files in the format of tt(~/.mailcap) and
+tt(/etc/mailcap) to be read during setup, replacing the default list
+which consists of those two files.  The context is tt(:mime:).
+A tt(PLUS()) in the list will be replaced by the default files.
+)
+item(tt(mailcap-priorities))(
+This style is used to resolve multiple mailcap entries for the same MIME
+type.  It consists of an array of the following elements, in descending
+order of priority; later entries will be used if earlier entries are
+unable to resolve the entries being compared.  If none of the tests
+resolve the entries, the first entry encountered is retained.
+
+startitem()
+item(tt(files))(
+The order of files (entries in the tt(mailcap) style) read.  Earlier
+files are preferred.  (Note this does not resolve entries in the same file.)
+)
+item(tt(priority))(
+The priority flag from the mailcap entry.  The priority is an integer
+from 0 to 9 with the default value being 5.
+)
+item(tt(flags))(
+The test given by the tt(mailcap-prio-flags) option is used to resolve
+entries.
+)
+item(tt(place))(
+Later entries are preferred; as the entries are strictly ordered, this
+test always succeeds.
+)
+enditem()
+
+Note that as this style is handled during initialisation, the context
+is always tt(:mime:), with no discrimination by suffix.
+)
+item(tt(mailcap-prio-flags))(
+This style is used when the keyword tt(flags) is encountered in the
+list of tests specified by the tt(mailcap-priorities) style.
+It should be set to a list of patterns, each of which is tested against
+the flags specified in the mailcap entry (in other words, the sets of
+assignments found with some entries in the mailcap file).  Earlier
+patterns in the list are preferred to later ones, and matched patterns
+are preferred to unmatched ones.
 )
-item(pager)(
+item(tt(mime-types))(
+A list of files in the format of tt(~/.mime.types) and
+tt(/etc/mime.types) to be read during setup, replacing the default list
+which consists of those two files.  The context is tt(:mime:).
+A tt(PLUS()) in the list will be replaced by the default files.
+)
+item(tt(never-background))(
+If this boolean style is set, the handler for the given context is
+always run in the foreground, even if the flags provided in the mailcap
+entry suggest it need not be (for example, it doesnʼt require a
+terminal).
+)
+item(tt(pager))(
 If set, will be used instead of tt($PAGER) or tt(more) to handle
 suffixes where the tt(copiousoutput) flag is set.  The context is
 as for tt(handler), i.e. tt(:mime:.)var(suffix)tt(:) for handling


^ permalink raw reply	[relevance 3%]

* PATCH: minor documentation stuff
@ 2005-12-09 12:45  3% Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2005-12-09 12:45 UTC (permalink / raw)
  To: Zsh hackers list

I read through the documentation again and tweaked a few little things.
I'll make a test release shortly.

Index: NEWS
===================================================================
RCS file: /cvsroot/zsh/zsh/NEWS,v
retrieving revision 1.8
diff -u -r1.8 NEWS
--- NEWS	23 Nov 2005 11:29:20 -0000	1.8
+++ NEWS	9 Dec 2005 12:25:04 -0000
@@ -12,6 +12,10 @@
   (one with no .zshrc, .zshenv, .zprofile or .zlogin file) without
   any additional setting up by the administrator.
 
+- The manual now has a Roadmap section (manual page zshroadmap) to
+  give new users an indication of the most interesting parts of the
+  manual.
+
 - New option PROMPT_SP, on by default, to work around the problem that the
   line editor can overwrite output with no newline at the end.
 
@@ -20,11 +24,8 @@
 
 - New redirection syntax e.g. {myfd}>file opens a new file descriptor
   and stores the number in $myfd, so that >&$myfd will work.  Chosen
-  not to break existing code.
-
-- The manual now has a Roadmap section (manual page zshroadmap) to
-  give new users an indication of the most interesting parts of the
-  manual.
+  not to break existing code (and to be compatible with proposals for the
+  Korn shell).
 
 - New Posix-style zsh-specific tests [[:IDENT:]], [[:IFS:]],
   [[:IFSSPACE:]], [[:WORD:]] test if character can appear in identifier,
@@ -35,7 +36,16 @@
 - The idiom =(<<<...) is optimised so that the shell internally turns
   the ... into the contents of a file whose name is then substituted.
 
-- As always, many enhancements to completion functions.
+- Supplied functions catch and throw provide limited support for
+  exception handling using the `{ ... } always { ... }' syntax.
+
+- Signals now accept the SIG as part of the name for compatibility with
+  other shells.
+
+- Editor function argument-base allows non-decimal arguments for
+  editor widgets.
+
+- As always, there are many enhancements to completion functions.
 
 Changes in 4.2 since version 4.2.0
 ----------------------------------
@@ -67,7 +77,7 @@
   in the event of an error.  It also runs after a break, continue, or
   return, including a return forced by the ERR_RETURN option
   (but not an exit, which is immediate).  The syntax is:
-    `{'  try-block-list `}' `always' `{' always-block-list `}'
+    `{' try-block-list `}' `always' `{' always-block-list `}'
   where no newline or semicolon may appear between `}' and `always'.
   This is compatible with all previous valid zsh syntax as an `always'
   at that point used to be a syntax error.  For example,
@@ -101,8 +111,8 @@
 
 - New WIDGETSTYLE, WIDGETFUNC parameters in ZLE.
 
-- Glob qualifiers (+func) is shorthand for (e:func:) (calls command,
-  typically shell function, with no argument).
+- Glob qualifier (+func) is shorthand for (e:func:) (calls a command,
+  typically a shell function, with no argument).
 
 New features between zsh versions 4.0 and 4.2
 ---------------------------------------------
Index: Doc/Zsh/roadmap.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Zsh/roadmap.yo,v
retrieving revision 1.4
diff -u -r1.4 roadmap.yo
--- Doc/Zsh/roadmap.yo	7 Nov 2005 09:37:34 -0000	1.4
+++ Doc/Zsh/roadmap.yo	9 Dec 2005 12:25:06 -0000
@@ -14,6 +14,12 @@
 Startup/Shutdown Files in zmanref(zsh))\
 ifnzman(noderef(Files)).
 
+If no personal intialization files exist for the current user, a function
+is run to help you change some of the most common settings.  It won't
+appear if your administrator has disabled the tt(zsh/newuser) module.
+The function is designed to be self-explanatory.  You can run it by hand
+with `tt(autoload -Uz zsh-newuser-install; zsh-newuser-install -f)'.
+
 sect(Interactive Use)
 
 Interaction with the shell uses the builtin Zsh Line Editor, ZLE.  This is
@@ -35,7 +41,7 @@
 ifnzman(noderef(Parameters Used By The Shell)).
 
 The line editor provides an extensive completion system and the shell
-is supplied for completions with many commonly used commands.  Note
+is supplied with completions for many commonly used commands.  Note
 that the new completion system referred to as tt(compsys) is preferred
 over the older tt(compctl) system.  The completion system must be enabled
 explicitly when the shell starts.  For more information see
@@ -111,12 +117,15 @@
 zmanref(zshmisc))\
 ifnzman(noderef(Shell Grammar)).
 
-One commonly encountered difference is that variables (other than arrays, a
-particular type of variable) substituted onto the command line are not
-split into words.  See the description of the shell option
-tt(SH_WORD_SPLIT) in ifzman(the section `Parameter Expansion' in
-zmanref(zshexpn))\
+One commonly encountered difference is that variables substituted onto the
+command line are not split into words.  See the description of the shell option
+tt(SH_WORD_SPLIT) in
+ifzman(the section `Parameter Expansion' in zmanref(zshexpn))\
 ifnzman(noderef(Parameter Expansion)).
+In zsh, you should use arrays when you want variables to expand to more
+than one word.  See
+ifzman(the section `Array Parameters' in zmanref(zshparam))\
+ifnzman(noderef(Array Parameters)).
 
 sect(Programming)
 
@@ -124,7 +133,9 @@
 by writing a shell function and arranging for it to be autoloaded.
 Functions are described in ifzman(the section `Functions' in
 zmanref(zshmisc))\
-ifnzman(noderef(Functions)).
+ifnzman(noderef(Functions)).  Users changing from the C shell and its
+relatives should notice that aliases are less used in zsh as they don't
+perform argument substitution, only simple text replacement.
 
 A few general functions, other than those for the line editor described
 above, are provided with the shell and are described in
@@ -149,6 +160,6 @@
 a version of tt(xargs) that makes the tt(find) command redundant
 )
 item(tt(zmv))(
-a command for renaming files with patterns.
+a command for renaming files by means of shell patterns.
 )
 enditem()

-- 
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 message has been scanned for viruses by BlackSpider MailControl - www.blackspider.com


^ permalink raw reply	[relevance 3%]

* zsh: jobs -p is not POSIX-compliant
@ 2006-01-31 12:25  9% Vincent Lefevre
  0 siblings, 0 replies; 200+ results
From: Vincent Lefevre @ 2006-01-31 12:25 UTC (permalink / raw)
  To: zsh-workers

Hi,

I reported this in the Debian BTS[*] a few weeks ago:
[*] http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=346162

Package: zsh
Version: 4.3.0-dev-2-1
Severity: normal

POSIX says that with "jobs -p", only the PID is output, whereas zsh
outputs full information.

See http://www.opengroup.org/onlinepubs/009695399/utilities/jobs.html

STDOUT

    If the -p option is specified, the output shall consist of one
    line for each process ID:

    "%d\n", <process ID>

-- 
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


^ permalink raw reply	[relevance 9%]

* Re: Libtool/zsh quoting problem
  @ 2006-02-10  8:46  3% ` DervishD
    1 sibling, 0 replies; 200+ results
From: DervishD @ 2006-02-10  8:46 UTC (permalink / raw)
  To: Zsh-workers

    Hi David :)

 * David <david@pleyades.net> dixit:
> From some time till now i was having problems compiling certaing
> packages, in particular those ones that used macros in the command
> with spaces in it. I thought it was a libtool problem, but the
> culprit seems zsh ;).

    It's not exactly a "culprit" ;) In fact zsh is behaving
correctly according to the SUS standard, as far as I know. More
below.
 
> A example, with the littlecms source (http://www.littlecms.com):
[Non relevant parts of the command stripped]
> if /bin/sh ../libtool [...] -DPACKAGE_STRING=\"lcms\ 1.15\" 
>  gcc [...] -DPACKAGE_STRING=\"lcms 1.15\" cmscnvrt.c -o .libs/cmscnvrt.o
>  gcc: 1.15": No such file or directory
[...]
> Where -DPACKAGE_STRING=\"lcms 1.15\" in the gcc command should be
> quoted to avoid the error.

    Exactly. If it is not quoted (I mean, with additional double
quotes or something like that), gcc will do the above. The problem is
that libtool may be using some bash-only construct to do the
additional quoting. That's the standard (SUS/POSIX) behaviour: by
default unquoted strings are splitted in spaces.

    But the problem is a bit more subtle ;) Look at the "libtool"
invocation: there, the space is properly quoted with a backslash
that, after that, is lost. The "gcc" invocation no longer has that
backslash.

    This may be a problem in libtool, which is not correctly
propagating that backslash, or in the makefile, which is passing that
backslash to the shell invoking libtool so it is lost (the shell
strips it after processing the command line, so if the same string is
passed, unquoted, to another command (gcc in this case), it is
interpreted as TWO arguments.
 
> Is there any option in zsh to avoid this problem?

    Not that I know of, because I think that SH_WORDSPLIT doesn't
apply here.

    I can investigate (if you want), where the problem lies and why
Bash behaves differently from zsh to see if the culprit is zsh, bash
or libtool. I recently discovered that bash was the culprit because
it violates the standard and I thought that the problem was in zsh
O:)

    Raúl Núñez de Arenas Coronado

-- 
Linux Registered User 88736 | http://www.dervishd.net
http://www.pleyades.net & http://www.gotesdelluna.net
It's my PC and I'll cry if I want to... RAmen!


^ permalink raw reply	[relevance 3%]

* Word splitting with zsh fix
@ 2006-02-11 12:22  3% DervishD
    2006-02-12 15:05  0% ` Roumen Petrov
  0 siblings, 2 replies; 200+ results
From: DervishD @ 2006-02-11 12:22 UTC (permalink / raw)
  To: bug-libtool; +Cc: Zsh Workers

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

    Hi all :)

    I've spotted a problem with libtool that has to do with the word
splitting that Zsh does in the expression '${1+"$@"}' (which, in
turn, is a workaround to fix the "$@" expansion problem when the
variable is empty in old shells). GNU autoconf has already corrected
this problem, and I'm using a similar fix for libtool. The patch is
gzipped and attached to this message.

    Looking at the SUS (POSIX) standard, I'm not sure if field
splitting should be performed in the above expression or not, so I
don't know if the correct behaviour is what Bash does or what Zsh
does. Anyway, I'm not here looking for a culprit but for a solution.
I will be glad to discuss the issue, anyway, just for curiosity's
sake ;)

    I've tested the patch against "littlecms" sources, because that's
the package where the problem was spotted by David Gómez Espinosa
<david@pleyades.net>. The patch was suggested by Andrey Borzenkov
<arvidjaar@newmail.ru>.

    Thanks in advance and happy hacking :)

    Raúl Núñez de Arenas Coronado

-- 
Linux Registered User 88736 | http://www.dervishd.net
http://www.pleyades.net & http://www.gotesdelluna.net
It's my PC and I'll cry if I want to... RAmen!

[-- Attachment #2: libtool.patch.gz --]
[-- Type: application/x-gzip, Size: 433 bytes --]

^ permalink raw reply	[relevance 3%]

* Re: [SOLVED] Libtool/zsh quoting problem: a zsh... bug?
  @ 2006-02-12  7:46  4%     ` Andrey Borzenkov
  0 siblings, 0 replies; 200+ results
From: Andrey Borzenkov @ 2006-02-12  7:46 UTC (permalink / raw)
  To: zsh-workers

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On Saturday 11 February 2006 21:14, Wayne Davison wrote:
> On Sat, Feb 11, 2006 at 01:21:43PM +0300, Andrey Borzenkov wrote:
> > See this thread: <http://www.zsh.org/mla/workers/2002/msg00542.html>;
> > there was an attempt to fix it in 16949 but apparently it was incomplete
> > and never went in.
>
> I just took a look at that code using Peter's old patch as a start, and
> the assertion that the quotes have been stripped out is not quite true:
> there are still Dnull and Snull characters remaining which indicate that
> there used to be a double- or single-quotes present.  This allows us to
> check the string.  An overly simple version is this:
>
> --- subst.c	6 Feb 2006 11:57:06 -0000	1.44
> +++ subst.c	11 Feb 2006 18:07:23 -0000
> @@ -2012,6 +2012,8 @@ paramsubst(LinkList l, LinkNode n, char
>  		 */
>  		multsub(&val, (aspar ? NULL : &aval), &isarr, NULL);
>  		copied = 1;
> +		if (spbreak && (*s == Dnull || *s == Snull))
> +		    spbreak = 0;
>  	    }
>  	    break;
>  	case ':':
>
> This will turn off word-splitting if the string started with a single or
> a double quote.  This is incomplete because the arg may be something
> more complicated (such as: 'one' 'two' 'three four'), but it seems
> better than what we have now.
>

I am not at all sure that the above is valid in POSIX shell. The word in 
${var+word} is a token, and token is delimited by the first blank; so while 
you can do ${var+$(any command with blank)} (because command substitution 
forms token by itself) you apparently cannot do ${var+foo bar baz}.

That's said, bash accepts the above just fine and correctly preserves quoting:

bash-3.1$ args()
> {
> while [[ $# -gt 0 ]]; do
> echo "$1"
> shift
> done
> }
bash-3.1$ args ${var+"foo bar" baz}
foo bar
baz

So assuming my interpretation is correct, we have two options:

- -  turn the above on only is sh (POSIX?) emulation mode on assumption that 
multiple words on the right side are invalid anyway

- - attempt to fix it to be compatible with bash i.e. correctly preserve 
individual quoted words.

Is it possible to recursively call expansion on rhs word? According to SUS: 
"word shall be subjected to tilde expansion, parameter expansion, command 
substitution, and arithmetic expansion." so recursively calling expansion 
looks the right way to go.

> One question I have is what to do about ${=1:"$@"}?  In the patch above,
> I chose to let the double quotes override the '='.  If that is not
> desired, change the new "if" to only trigger disallow an spbreak of 2:
>
> +		if (spbreak == 1 && (*s == Dnull || *s == Snull))
>
As long as it is documented ...

- -andrey
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (GNU/Linux)

iD8DBQFD7ue/R6LMutpd94wRAs4KAJ9MWbzrm9d3KLWMUesXus3PMNliAACeM5Zo
zFEwjjuV8xmtoEGbr7agYuc=
=3Tbz
-----END PGP SIGNATURE-----


^ permalink raw reply	[relevance 4%]

* Re: Word splitting with zsh fix
  2006-02-11 12:22  3% Word splitting with zsh fix DervishD
  @ 2006-02-12 15:05  0% ` Roumen Petrov
  1 sibling, 0 replies; 200+ results
From: Roumen Petrov @ 2006-02-12 15:05 UTC (permalink / raw)
  To: DervishD; +Cc: bug-libtool, Zsh Workers

Hi Raúl,

I would like to know if option SH_WORD_SPLIT is set problem is solved too ?

Test case:
===============================
#!/bin/zsh

VAR="v1 v2"

for V in ${VAR}; do
  echo V1=$V
done

setopt SH_WORD_SPLIT
for V in ${VAR}; do
  echo V2=$V
done
===============================
When SH_WORD_SPLIT is set zsh work as bash, ksh, ash etc.


DervishD wrote:
>     Hi all :)
> 
>     I've spotted a problem with libtool that has to do with the word
> splitting that Zsh does in the expression '${1+"$@"}' (which, in
> turn, is a workaround to fix the "$@" expansion problem when the
> variable is empty in old shells). GNU autoconf has already corrected
> this problem, and I'm using a similar fix for libtool. The patch is
> gzipped and attached to this message.
> 
>     Looking at the SUS (POSIX) standard, I'm not sure if field
> splitting should be performed in the above expression or not, so I
> don't know if the correct behaviour is what Bash does or what Zsh
> does. Anyway, I'm not here looking for a culprit but for a solution.
> I will be glad to discuss the issue, anyway, just for curiosity's
> sake ;)
> 
>     I've tested the patch against "littlecms" sources, because that's
> the package where the problem was spotted by David Gómez Espinosa
> <david@pleyades.net>. The patch was suggested by Andrey Borzenkov
> <arvidjaar@newmail.ru>.
> 
>     Thanks in advance and happy hacking :)
> 
>     Raúl Núñez de Arenas Coronado
> 
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Bug-libtool mailing list
> Bug-libtool@gnu.org
> http://lists.gnu.org/mailman/listinfo/bug-libtool



^ permalink raw reply	[relevance 0%]

* Re: Word splitting with zsh fix
  @ 2006-02-13 16:52 14%     ` Ralf Wildenhues
  0 siblings, 0 replies; 200+ results
From: Ralf Wildenhues @ 2006-02-13 16:52 UTC (permalink / raw)
  To: bug-libtool, Zsh Workers; +Cc: libtool-patches

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

[ moving to libtool-patches; sorry for the first-post moderation ]

Hi Raúl,

* DervishD wrote on Sun, Feb 12, 2006 at 11:33:15AM CET:
>  * Ralf Wildenhues <Ralf.Wildenhues@gmx.de> dixit:
> > * DervishD wrote on Sat, Feb 11, 2006 at 01:22:26PM CET:
> > >     I've spotted a problem with libtool that has to do with the word
> > > splitting that Zsh does in the expression '${1+"$@"}' (which, in
> > > turn, is a workaround to fix the "$@" expansion problem when the
> > > variable is empty in old shells). GNU autoconf has already corrected
> > > this problem, and I'm using a similar fix for libtool. The patch is
> > > gzipped and attached to this message.

> > In fact, for CVS Libtool, we just call AS_SHELL_SANITIZE to get
> > Autoconf's initialization blurb (and its fixes).
> 
>     Oh, good idea :))

Yes.

> > There is an open (unrelated) issue about that code being discussed
> > over at autoconf-patches at the moment; I'll backport it to
> > branch-1-5 as soon as that has settled.
> 
>     OK, I'll take a look as soon as it is released :)

That seems to have settled now.  Also, I found that libtool needs to
employ the same workarounds for its shell wrappers, too (we should
eventually add a test for this, I guess, to expose this).

In the shell wrapper, we need the effect of _AS_BOURNE_COMPATIBLE, but
not AS_SHELL_SANITIZE: the executed program should run in the user's
locale.  However, _AS_BOURNE_COMPATIBLE isn't published by Autoconf.
So I'm checking in the following patches to branch-1-5 and HEAD, and
I'll write to autoconf-patches to have a public version of the macro.
When we can rely on a released Autoconf version with the published
macro, we can simplify the shell wrapper head to something like this:
|   cat >>$output <<\_LTEOF
| AS_BOURNE_COMPATIBLE
| _LTEOF

Cheers,
Ralf

HEAD:
	* libltdl/config/ltmain.m4sh (func_mode_link) <shell wrapper>: 
	Add _AS_BOURNE_COMPATIBLE code from Autoconf, to fix issues
	with zsh and other shells.
	Reported by David Gómez Espinosa <david@pleyades.net>.

branch-1-5:
	* ltmain.in <startup, shell wrapper>: Add _AS_BOURNE_COMPATIBLE
	code from Autoconf, to fix issues with zsh and other shells.
	Reported by David Gómez Espinosa <david@pleyades.net>.

[-- Attachment #2: HEAD-bourne-compatible-wrapper.diff --]
[-- Type: text/plain, Size: 1252 bytes --]

	* libltdl/config/ltmain.m4sh (func_mode_link) <shell wrapper>: 
	Add _AS_BOURNE_COMPATIBLE code from Autoconf, to fix issues
	with zsh and other shells.
	Reported by David Gómez Espinosa <david@pleyades.net>.

Index: libltdl/config/ltmain.m4sh
===================================================================
RCS file: /cvsroot/libtool/libtool/libltdl/config/ltmain.m4sh,v
retrieving revision 1.35
diff -u -r1.35 ltmain.m4sh
--- libltdl/config/ltmain.m4sh	5 Feb 2006 11:06:31 -0000	1.35
+++ libltdl/config/ltmain.m4sh	13 Feb 2006 16:35:16 -0000
@@ -6186,6 +6186,20 @@
 Xsed='${SED} -e 1s/^X//'
 sed_quote_subst='$sed_quote_subst'
 
+# Be Bourne compatible
+if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  [#] Zsh 3.x and 4.x performs word splitting on \${1+\"\$[@]\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$[@]\"}'='\"\$[@]\"'
+  setopt NO_GLOB_SUBST
+else
+  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
 # The HP-UX ksh and POSIX shell print the target directory to stdout
 # if CDPATH is set.
 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH

[-- Attachment #3: branch-1-5-bourne-compatible.diff --]
[-- Type: text/plain, Size: 2017 bytes --]

	* ltmain.in <startup, shell wrapper>: Add _AS_BOURNE_COMPATIBLE
	code from Autoconf, to fix issues with zsh and other shells.
	Reported by David Gómez Espinosa <david@pleyades.net>.

Index: ltmain.in
===================================================================
RCS file: /cvsroot/libtool/libtool/Attic/ltmain.in,v
retrieving revision 1.334.2.121
diff -u -r1.334.2.121 ltmain.in
--- ltmain.in	5 Feb 2006 11:08:52 -0000	1.334.2.121
+++ ltmain.in	13 Feb 2006 14:35:05 -0000
@@ -46,11 +46,19 @@
 VERSION=@VERSION@
 TIMESTAMP="@TIMESTAMP@"
 
-# See if we are running on zsh, and set the options which allow our
-# commands through without removal of \ escapes.
-if test -n "${ZSH_VERSION+set}" ; then
+# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE).
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
 fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
 
 # Check that we have a working $echo.
 if test "X$1" = X--no-reexec; then
@@ -5271,6 +5279,20 @@
 Xsed='${SED} -e 1s/^X//'
 sed_quote_subst='$sed_quote_subst'
 
+# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE).
+if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
+  setopt NO_GLOB_SUBST
+else
+  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
 # The HP-UX ksh and POSIX shell print the target directory to stdout
 # if CDPATH is set.
 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH

^ permalink raw reply	[relevance 14%]

* Changes for dev-4
@ 2006-02-16 11:00  2% Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2006-02-16 11:00 UTC (permalink / raw)
  To: Zsh hackers list

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 10467 bytes --]

With Wayne's fix there's scope for a 4.3.0-dev-4 before 4.3.1.  Here are
some minor tweaks to various bits of documentation.

Index: INSTALL
===================================================================
RCS file: /cvsroot/zsh/zsh/INSTALL,v
retrieving revision 1.24
diff -u -r1.24 INSTALL
--- INSTALL	6 Feb 2006 12:05:32 -0000	1.24
+++ INSTALL	16 Feb 2006 10:57:35 -0000
@@ -266,7 +266,11 @@
 Support for multibyte character sets that extend ASCII, such as UTF-8, is
 under development but the code in the line editor is sufficiently stable to
 be turned on by default in environments that provide full ISO 10646 support
-including the preprocessor definition __STDC_ISO_10646__.
+including the preprocessor definition __STDC_ISO_10646__.  In principle
+this definition does not guarantee the full environment, but in practice
+systems with this defined also provide suitable library support.  The shell
+does not probe for all the features, so on other systems use of multibyte
+support must be explicitly enabled when it is available.
 
 The support can be explicitly enabled or disable with --enable-multibyte or
 --disable-multibyte.  Reports of systems where multibyte support was not
Index: README
===================================================================
RCS file: /cvsroot/zsh/zsh/README,v
retrieving revision 1.26
diff -u -r1.26 README
--- README	7 Feb 2006 11:29:31 -0000	1.26
+++ README	16 Feb 2006 10:57:35 -0000
@@ -26,6 +26,17 @@
 
 Since 4.2:
 
+The option SH_WORD_SPLIT, used in Bourne/Korn/Posix shell compatibility
+mode, has been made more like other shells in the case of substitutions of
+the form ${1+"$@"} (a common trick used to work around problems in older
+Bourne shells) or any of the related forms with the + replaced by - or =
+with an optional colon following.  Previously, with SH_WORD_SPLIT in
+effect, this expression would cause splitting on all white space in the
+shell arguments.  (This was always regarded as a bug but was long-standing
+behaviour.)  Now it is treated identically to "$@".  The same change
+applies to expressions with forced splitting such as ${=1+"$@"}, but
+otherwise the case where SH_WORD_SPLIT is not set is unaffected.
+
 The "unset" builtin now does not regard the unsetting of non-existent
 variables as an error, so can still return status 0 (depending on the
 handling of other arguments).  This appears to be the standard shell
Index: Config/version.mk
===================================================================
RCS file: /cvsroot/zsh/zsh/Config/version.mk,v
retrieving revision 1.54
diff -u -r1.54 version.mk
--- Config/version.mk	6 Feb 2006 12:05:32 -0000	1.54
+++ Config/version.mk	16 Feb 2006 10:57:35 -0000
@@ -27,5 +27,5 @@
 # This must also serve as a shell script, so do not add spaces around the
 # `=' signs.
 
-VERSION=4.3.0-dev-3
-VERSION_DATE='February 6, 2006'
+VERSION=4.3.0-dev-4
+VERSION_DATE='February 15, 2006'
Index: Etc/CONTRIBUTORS
===================================================================
RCS file: /cvsroot/zsh/zsh/Etc/CONTRIBUTORS,v
retrieving revision 1.13
diff -u -r1.13 CONTRIBUTORS
--- Etc/CONTRIBUTORS	26 Feb 2004 15:09:12 -0000	1.13
+++ Etc/CONTRIBUTORS	16 Feb 2006 10:57:36 -0000
@@ -12,8 +12,22 @@
 patches.  Note that email addresses below and in the ChangeLog file
 are included for disambiguation purposes only, and are not guaranteed
 to be currently accurate.  If you feel that you or someone else have
-been unfairly omitted from this list please mail the current maintainer
-at <coordinator@zsh.org>.
+been unfairly omitted from this list please mail the list
+<zsh-workers@sunsite.dk>.
+
+Version 4.3
+-----------
+
+Contributors to the main shell include Clint Adams, Andrey Borzenkov, Dan
+Bullok, Thorsten Dahlheimer, Wayne Davison, Oliver Kiddle, Matthias
+Kopferman, Dan Nelson, Toby Peterson, R. Ramkumar, Bart Schaefer, Joerg
+Sonnenberger, Peter Stephenson, Philippe Troin, Geoff Wing.
+
+Contributors to completion functions include those above plus Zack Cerza,
+Danek Duvall, Tobias Gruetzmacher, Dough Kearns, Hannu Koivisto, Henryk
+Konsek, Scott Murray, Carlos Phillips, Haakon Riiser, Felix Rosencrantz,
+Stephen Rüger, Kris Shannon, Travis Spencer, Mårten Svantesson, Motoi
+Washida, Jess Weinstein.
 
 Version 4.2
 -----------
Index: Etc/FAQ.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Etc/FAQ.yo,v
retrieving revision 1.31
diff -u -r1.31 FAQ.yo
--- Etc/FAQ.yo	18 Dec 2005 20:06:00 -0000	1.31
+++ Etc/FAQ.yo	16 Feb 2006 10:57:37 -0000
@@ -95,7 +95,7 @@
 3.2. In which startup file do I put...?
 3.3. What is the difference between `export' and the ALL_EXPORT option?
 3.4. How do I turn off spelling correction/globbing for a single command?
-3.5. How do I get the meta key to work on my xterm?
+3.5. How do I get the Meta key to work on my xterm?
 3.6. How do I automatically display the directory in my xterm title bar?
 3.7. How do I make the completion list use eight bit characters?
 3.8. Why do the cursor (arrow) keys not work?
@@ -1163,13 +1163,20 @@
   be expanded before the rest of the command line is parsed.
 
 
-sect(How do I get the meta key to work on my xterm?)
+sect(How do I get the Meta key to work on my xterm?)
 label(35)
 
-  As stated in the manual, zsh needs to be told about the meta key by
+  The Meta key isn't present on a lot of keyboards, but on some
+  the Alt key has the same effect.  If a character is typed on the
+  keyboard while the Meta key is held down, the characters is sent
+  as terminal input with its eighth bit set.  For example, ASCII
+  mytt(A), hex 65, becomes hex E5.  This is sometimes used to provide
+  extra editing commands.
+
+  As stated in the manual, zsh needs to be told about the Meta key by
   using mytt(bindkey -me) or mytt(bindkey -mv) in your .zshrc or on the
   command line.  You probably also need to tell the terminal driver to
-  allow the `meta' bit of the character through; mytt(stty pass8) is the
+  allow the `Meta' bit of the character through; mytt(stty pass8) is the
   usual incantation.  Sample .zshrc entry:
   verb(
     [[ $TERM = "xterm" ]] && stty pass8 && bindkey -me
@@ -1186,7 +1193,12 @@
   have tinkered with it.
 
   You don't need the mytt(bindkey) to be able to define your own sequences
-  with the meta key, though you still need the mytt(stty).
+  with the Meta key, though you still need the mytt(stty).
+
+  If you are using multibyte input directly from the keyboard you
+  probably don't want to use this feature since the eighth bit in
+  each byte is used to indicate a part of a multibyte character.  See
+  link(chapter 5)(c5).
 
 
 sect(How do I automatically display the directory in my xterm title bar?)
@@ -1953,6 +1965,7 @@
 
 
 chapter(Multibyte input)
+label(c5)
 
 sect(What is multibyte input?)
 
@@ -1994,7 +2007,7 @@
   characters.  However, in the case of Unicode, UTF-8 is the only one you
   are likely to enounter.
 
-  (In case you're confused: Unicode is the characters set, while UTF-8 is
+  (In case you're confused: Unicode is the character set, while UTF-8 is
   an encoding of it.  You might hear about other encodings, such as UCS-2
   and UCS-4 which are basically the character's index in the character set
   as a two-octet or four-octet integer.  You might see files encoded this
@@ -2015,14 +2028,21 @@
   has been compiled with the appropriate definitions.  This will happen
   automatically if the compiler defines __STDC_ISO_10646__, which is true
   for many recent GNU-based systems.  On other systems you must configure
-  zsh with the argument --enable-multibyte to configure.  (The reason for
-  this is that the presence of __STDC_ISO_10646__ ensures all the required
-  library support is present, short-circuiting a large number of
-  configuration tests.)  Explicit use of --enable-multibyte should work on
-  many other recent UNIX systems; if it works on yours, and that's not
-  mentioned in the shell documentation, please report this to
-  zsh-workers@sunsite.dk, and if it doesn't but you can work out why not
-  we'd also be interested in hearing.
+  zsh with the argument --enable-multibyte to configure.  Explicit use of
+  --enable-multibyte should work on many other recent UNIX systems; if it
+  works on yours, and that's not mentioned in the shell documentation,
+  please report this to zsh-workers@sunsite.dk, and if it doesn't but you
+  can work out why not we'd also be interested in hearing.
+
+  (The reason for the test for __STDC_ISO_10646__ is that its presence
+  happens to indicate that the required library support is likely to be
+  present, short-circuiting a large number of configuration tests.  This
+  isn't strictly guaranteed, since the definition indicates the rather more
+  limited fact that the wide character representation used internally by
+  the shell is Unicode.  However, in practice such systems provide the
+  right level of support for zsh to use.  It would be better to test
+  individually for the library features the shell needs; unfortunately
+  there are a lot of them.)
 
   You can test if multibyte handling is compiled into your version of the
   shell by running:
@@ -2100,6 +2120,14 @@
       Unicode characters than others.
   )
 
+  As mentioned in the previous section, mytt(bindkey -m) now outputs
+  a warning message telling you that multibyte input from the terminal
+  is likely not to work.  (See link(3.5)(35) if you don't know what
+  this feature does.)  If your terminal doesn't have characters
+  that need to be input as multibyte, however, you can still use
+  the meta bindings and can ignore the warning message.  Use
+  mytt(bindkey -m 2>/dev/null) to suprress it.
+
 
 sect(How can I input characters that aren't on my keyboard?)
 
@@ -2119,7 +2147,7 @@
 
   tt(insert-composed-char) is followed by two characters that
   are a mnemonic for a multibyte character.  For example mytt(a:)
-  is a with an umlaut; mytt(cH) is the symbol for hearts on a playing
+  is a with an Umlaut; mytt(cH) is the symbol for hearts on a playing
   card.  Various accented characters, European and related alphabets,
   and punctuation and mathematical symbols are available.  The
   mnemonics are mostly those given by RFC 1345, see

-- 
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


^ permalink raw reply	[relevance 2%]

* [4.2/4.3] Bug with wait and trapped signals
@ 2006-02-17 14:28  3% Vincent Lefevre
  2006-02-18 17:31  0% ` Peter Stephenson
  0 siblings, 1 reply; 200+ results
From: Vincent Lefevre @ 2006-02-17 14:28 UTC (permalink / raw)
  To: zsh-workers

zsh (all versions?) does not interrupt a "wait" when it receives
a signal for which a trap has been set.

For instance, consider the following script:

#!/usr/bin/env zsh
echo "PID = $$"
sleep 60 &
trap 'echo term; exit 0' TERM
wait

When I send SIGTERM to the shell process, zsh does nothing, waiting
for the child to terminate before executing the trap. POSIX says:

 2.11 Signals and Error Handling

   [...] When the shell is waiting, by means of the wait utility, for
   asynchronous commands to complete, the reception of a signal for
   which a trap has been set shall cause the wait utility to return
   immediately with an exit status >128, immediately after which the
   trap associated with that signal shall be taken.

http://www.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_11

-- 
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


^ permalink raw reply	[relevance 3%]

* Re: [4.2/4.3] Bug with wait and trapped signals
  2006-02-17 14:28  3% [4.2/4.3] Bug with wait and trapped signals Vincent Lefevre
@ 2006-02-18 17:31  0% ` Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2006-02-18 17:31 UTC (permalink / raw)
  To: zsh-workers

Vincent Lefevre wrote:
> zsh (all versions?) does not interrupt a "wait" when it receives
> a signal for which a trap has been set.
> 
> For instance, consider the following script:
> 
> #!/usr/bin/env zsh
> echo "PID = $$"
> sleep 60 &
> trap 'echo term; exit 0' TERM
> wait
> 
> When I send SIGTERM to the shell process, zsh does nothing, waiting
> for the child to terminate before executing the trap. POSIX says:
> 
>  2.11 Signals and Error Handling
> 
>    [...] When the shell is waiting, by means of the wait utility, for
>    asynchronous commands to complete, the reception of a signal for
>    which a trap has been set shall cause the wait utility to return
>    immediately with an exit status >128, immediately after which the
>    trap associated with that signal shall be taken.

Here's an attempt at fixing that.  I'm unlikely to check this in before
4.3.1.

I'm reasonably happy with replacing the passing of SIGINT with a flag
indicating special handling for "wait" and allowing trapped signals to
interrupt.  I'm less happy with the way last_signal is set by the signal
handler and examined after sigsuspend() or equivalent returns.  However,
it may be that this is the right way to do it after all.

I would prefer if there was someone more proficient in the dark art of
signals to look at this.

By the way, I think I introduced a bug with TRAPSASYNC with BSD_SIGNALS,
if anyone's still using them...it wouldn't actually wait for a signal.

I also inserted an "else" which seemed to want to be present where it's
marked "HERE" (another CSR habit).

Index: Src/jobs.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/jobs.c,v
retrieving revision 1.43
diff -u -r1.43 jobs.c
--- Src/jobs.c	7 Feb 2006 16:55:58 -0000	1.43
+++ Src/jobs.c	18 Feb 2006 17:21:09 -0000
@@ -1116,11 +1116,16 @@
 
 }
 
-/* wait for a particular process */
+/*
+ * Wait for a particular process.
+ * wait_cmd indicates this is from the interactive wait command,
+ * in which case the behaviour is a little different:  the command
+ * itself can be interrupted by a trapped signal.
+ */
 
 /**/
-void
-waitforpid(pid_t pid)
+int
+waitforpid(pid_t pid, int wait_cmd)
 {
     int first = 1, q = queue_signal_level();
 
@@ -1133,18 +1138,30 @@
 	else
 	    kill(pid, SIGCONT);
 
-	signal_suspend(SIGCHLD, SIGINT);
+	last_signal = -1;
+	signal_suspend(SIGCHLD, wait_cmd);
+	if (last_signal != SIGCHLD && wait_cmd) {
+	    /* wait command interrupted, but no error: return */
+	    restore_queue_signals(q);
+	    return 128 + last_signal;
+	}
 	child_block();
     }
     child_unblock();
     restore_queue_signals(q);
+
+    return 0;
 }
 
-/* wait for a job to finish */
+/*
+ * Wait for a job to finish.
+ * wait_cmd indicates this is from the wait builtin; see
+ * wait_cmd in waitforpid().
+ */
 
 /**/
-static void
-zwaitjob(int job, int sig)
+static int
+zwaitjob(int job, int wait_cmd)
 {
     int q = queue_signal_level();
     Job jn = jobtab + job;
@@ -1158,7 +1175,13 @@
 	while (!errflag && jn->stat &&
 	       !(jn->stat & STAT_DONE) &&
 	       !(interact && (jn->stat & STAT_STOPPED))) {
-	    signal_suspend(SIGCHLD, sig);
+	    signal_suspend(SIGCHLD, wait_cmd);
+	    if (last_signal != SIGCHLD && wait_cmd)
+	    {
+		/* builtin wait interrupted by trapped signal */
+		restore_queue_signals(q);
+		return 128 + last_signal;
+	    }
 	    /* 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
@@ -1181,6 +1204,8 @@
     }
     child_unblock();
     restore_queue_signals(q);
+
+    return 0;
 }
 
 /* wait for running job to finish */
@@ -1692,9 +1717,9 @@
 	} else {   /* Must be BIN_WAIT, so wait for all jobs */
 	    for (job = 0; job <= maxjob; job++)
 		if (job != thisjob && jobtab[job].stat)
-		    zwaitjob(job, SIGINT);
+		    retval = zwaitjob(job, 1);
 	    unqueue_signals();
-	    return 0;
+	    return retval;
 	}
     }
 
@@ -1712,11 +1737,19 @@
 	    Job j;
 	    Process p;
 
-	    if (findproc(pid, &j, &p, 0))
-		waitforpid(pid);
-	    else
+	    if (findproc(pid, &j, &p, 0)) {
+		/*
+		 * returns 0 for normal exit, else signal+128
+		 * in which case we should return that status.
+		 */
+		retval = waitforpid(pid, 1);
+		if (!retval)
+		    retval = lastval2;
+	    } else {
 		zwarnnam(name, "pid %d is not a child of this shell", 0, pid);
-	    retval = lastval2;
+		/* presumably lastval2 doesn't tell us a heck of a lot? */
+		retval = 1;
+	    }
 	    thisjob = ocj;
 	    continue;
 	}
@@ -1796,8 +1829,18 @@
 		killjb(jobtab + job, SIGCONT);
 	    }
 	    if (func == BIN_WAIT)
-		zwaitjob(job, SIGINT);
-	    if (func != BIN_BG) {
+	    {
+		retval = zwaitjob(job, 1);
+		if (!retval)
+		    retval = lastval2;
+	    }
+	    else if (func != BIN_BG) {
+		/*
+		 * HERE: there used not to be an "else" above.  How
+		 * could it be right to wait for the foreground job
+		 * when we've just been told to wait for another
+		 * job (and done it)?
+		 */
 		waitjobs();
 		retval = lastval2;
 	    } else if (ofunc == BIN_DISOWN)
Index: Src/signals.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/signals.c,v
retrieving revision 1.38
diff -u -r1.38 signals.c
--- Src/signals.c	15 Dec 2005 04:24:04 -0000	1.38
+++ Src/signals.c	18 Feb 2006 17:21:10 -0000
@@ -347,9 +347,38 @@
 static signal_jmp_buf suspend_jmp_buf;
 #endif
  
+#if defined(POSIX_SIGNALS) || defined(BSD_SIGNALS)
+static void
+signal_suspend_setup(sigset_t *set, int sig, int wait_cmd)
+{
+    if (isset(TRAPSASYNC)) {
+	sigemptyset(set);
+    } else {
+	sigfillset(set);
+	sigdelset(set, sig);
+#ifdef POSIX_SIGNALS
+	sigdelset(set, SIGHUP);  /* still don't know why we add this? */
+#endif
+	if (wait_cmd)
+	{
+	    /*
+	     * Using "wait" builtin.  We should allow SIGINT and
+	     * execute traps delivered to the shell.
+	     */
+	    int sigtr;
+	    sigdelset(set, SIGINT);
+	    for (sigtr = 1; sigtr <= NSIG; sigtr++) {
+		if (sigtrapped[sigtr] & ~ZSIG_IGNORED)
+		    sigdelset(set, sigtr);
+	    }
+	}
+    }
+}
+#endif
+
 /**/
 int
-signal_suspend(int sig, int sig2)
+signal_suspend(int sig, int wait_cmd)
 {
     int ret;
  
@@ -359,15 +388,7 @@
     sigset_t oset;
 #endif /* BROKEN_POSIX_SIGSUSPEND */
 
-    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);
-    }
+    signal_suspend_setup(&set, sig, wait_cmd);
 #ifdef BROKEN_POSIX_SIGSUSPEND
     sigprocmask(SIG_SETMASK, &set, &oset);
     pause();
@@ -379,15 +400,8 @@
 # ifdef BSD_SIGNALS
     sigset_t set;
 
-    if (isset(TRAPSASYNC)) {
-	sigemptyset(&set);
-    } else {
-	sigfillset(&set);
-	sigdelset(&set, sig);
-	if (sig2)
-	    sigdelset(&set, sig2);
-	ret = sigpause(set);
-    }
+    signal_suspend_setup(&set, sig, wait_cmd);
+    ret = sigpause(set);
 # else
 #  ifdef SYSV_SIGNALS
     ret = sigpause(sig);
@@ -397,7 +411,7 @@
      * between the child_unblock() and pause()           */
     if (signal_setjmp(suspend_jmp_buf) == 0) {
         suspend_longjmp = 1;   /* we want to signal_longjmp after catching signal */
-        child_unblock();       /* do we need to unblock sig2 as well?             */
+        child_unblock();       /* do we need to do wait_cmd stuff as well?             */
         ret = pause();
     }
     suspend_longjmp = 0;       /* turn off using signal_longjmp since we are past *
@@ -409,6 +423,10 @@
     return ret;
 }
 
+/* last signal we handled: race prone, or what? */
+/**/
+int last_signal;
+
 /* the signal handler */
  
 /**/
@@ -422,6 +440,7 @@
     signal_jmp_buf jump_to;
 #endif
  
+    last_signal = sig;
     signal_process(sig);
  
     sigfillset(&newmask);

-- 
Peter Stephenson <p.w.stephenson@ntlworld.com>
Web page still at http://www.pwstephenson.fsnet.co.uk/


^ permalink raw reply	[relevance 0%]

* problem with _expand (I think)
@ 2006-02-24 22:20  3% Wayne Davison
  0 siblings, 0 replies; 200+ results
From: Wayne Davison @ 2006-02-24 22:20 UTC (permalink / raw)
  To: zsh-workers

Here's something strange where a global alias of mine seems to be
skipped by _expand in certain circumstances.  To duplicate this,
start with "zsh -f" and enter these commands:

    autoload -U compinit
    compinit
    zstyle ':completion:*' completer _expand _complete
    bindkey '\t' complete-word
    alias -g ,f='|fgrep'

OK, that ensures that tab does not use expand-or-complete, which does
not exhibit the bug.  Note that I created a global alias that lets me
type ",f" instead of "|fgrep".  We also need a file named "some-file"
with the following lines in it:

    foo
    bar

Now let's try to use TAB to expand a back-tick expression:

    echo `fgrep some-file o ,f -v a`

That outputs "foo" when run, but the expansion gets "some-file:bar"
instead of "foo" if TAB is pressed.  This is apparently because the ",f"
was treated as a file, and the -v option was reordered in front of the
'o' (due to gnu's non-posix command-line parsing).

I tried this in 4.2.5 and 4.3.0-dev-5, and both fail to get this right.
FYI.

..wayne..


^ permalink raw reply	[relevance 3%]

* Re: zsh 4.3.2 bug
  @ 2006-03-17 23:09  3%       ` FX Coudert
  0 siblings, 0 replies; 200+ results
From: FX Coudert @ 2006-03-17 23:09 UTC (permalink / raw)
  To: Wayne Davison; +Cc: goetz fischer, zsh-workers


Le 17 mars 06, à 19:46, Wayne Davison a écrit :

> On Fri, Mar 17, 2006 at 06:45:53PM +0100, Fran?ois-Xavier Coudert 
> wrote:
>> $ uname -a
>> IRIX64 xxx 6.5 10060437 IP27 mips unknown Irix
>> $ cc -v
>> MIPSpro Compilers: Version 7.4.2m
>
> What are you using for awk?  Is is gawk? mawk? nawk? awk?

$ which awk
/usr/bin/awk
$ awk -v
UX:awk: ERROR: No program given
$ awk -help
UX:awk: WARNING: Unknown option -help ignored
UX:awk: ERROR: No program given
$ awk -V
UX:awk: WARNING: Unknown option -V ignored
UX:awk: ERROR: No program given

Doesn't help much :)


> I'm betting
> that the failure that goetz is experiencing is related to this (as I
> mentioned in my prior reply to him on the subject).  Another reason may
> well be that your build found a different signal.h header file to 
> parse:
> what is the value of SIGNAL_H in your config.log file?

SIGNAL_H='/usr/include/internal/signal_core.h'

configure:11345: result: no
configure:11366: checking what style of signals to use
configure:11397: result: POSIX_SIGNALS
configure:11400: checking where signal.h is located
configure:11439: result: /usr/include/internal/signal_core.h

And I do have:

$ grep -i signal config.h
/* Define to 1 if you use BSD style signal handling (and can block 
signals).
/* #undef BSD_SIGNALS */
/* Define to 1 if `ru_nsignals' is member of `struct rusage'. */
#define HAVE_STRUCT_RUSAGE_RU_NSIGNALS 1
/* Define to 1 if you have no signal blocking at all (bummer). */
/* #undef NO_SIGNAL_BLOCKING */
/* Define to 1 if you use POSIX style signal handling. */
#define POSIX_SIGNALS 1
/* Define as the return type of signal handlers (`int' or `void'). */
/* Define to 1 if you use SYS style signal handling (and can block 
signals).
/* #undef SYSV_SIGNALS */
/* Define to `unsigned int' if <sys/types.h> or <signal.h> doesn't 
define */

FX

^ permalink raw reply	[relevance 3%]

* Re: cd - and $OLDPWD, bug in the manual?
       [not found]     <200603261840.k2QIeOMG004524@pwslaptop.csr.com>
@ 2006-03-26 20:47  3% ` Bart Schaefer
  0 siblings, 0 replies; 200+ results
From: Bart Schaefer @ 2006-03-26 20:47 UTC (permalink / raw)
  To: zsh-workers

[Moved to -workers]

On Mar 26,  7:40pm, Peter Stephenson wrote:
}
} We could make OLDPWD settable by making it special

I don't think we can, if we want to remain POSIX compliant.

Frobbing $OLDPWD also has implications for $dirstack, and I don't think
we ever concluded *that* discussion ...


^ permalink raw reply	[relevance 3%]

* [ramk@cse.iitm.ernet.in: Bug#359992: zsh: Enable use of IP addresses and multiple host files in _hosts]
@ 2006-03-31 14:19  2% Clint Adams
  0 siblings, 0 replies; 200+ results
From: Clint Adams @ 2006-03-31 14:19 UTC (permalink / raw)
  To: zsh-workers; +Cc: 359992-forwarded

That _analyseplugin function was written by R.Ramkumar as well.
I'm not committing this one because I have no opinion, though I bet
someone else will.

----- Forwarded message from "R.Ramkumar" <ramk@cse.iitm.ernet.in> -----

Date: Thu, 30 Mar 2006 05:24:23 +0530
From: "R.Ramkumar" <ramk@cse.iitm.ernet.in>
To: Debian Bug Tracking System <submit@bugs.debian.org>
Subject: Bug#359992: zsh: Enable use of IP addresses and multiple host files in _hosts

Package: zsh
Version: 4.3.2-2
Severity: wishlist
Tags: patch

Hi!

The current _hosts completion does not use IP addresses, and
completes using host names alone. This patch optionally enables the
inclusion of IP addresses by a boolean style (the default behaviour
is unchanged). Further, currently only ~/.ssh/known_hosts file is
read. Added /etc/ssh/known_hosts to this list, if present. Further,
observing that any plain list of hostnames would anyway be
parseable, and that ~"`id -nu`"/.ssh/known_hosts and not
~/.ssh/known_hosts might be readable under sudo environments, made
the list of known host files customizable (defaulting to the two
files initially specified). Here is the patch:




Content-Description: Patch enabling use of IP addresses and multiple host files in _hosts
--- _hosts	2006-03-30 05:00:08.000000000 +0530
+++ _hosts.new	2006-03-30 05:21:37.000000000 +0530
@@ -2,29 +2,52 @@
 
 # avoid calling variable "hosts", it's an obvious candidate for use in
 #  zstyle -e '*' hosts 'reply=($hosts)'
-local expl _hosts tmp
+local expl _hosts tmp useip
 
 if ! zstyle -a ":completion:${curcontext}:hosts" hosts _hosts; then
   if (( $+_cache_hosts == 0 )); then
     # uniquify
     typeset -gUa _cache_hosts
+    local ipstrip='[:blank:]#[^[:blank:]]#'
+
+    # This boolean style determines whether hosts completes IP addresses. The
+    # default is no (not using IP addresses).
+    zstyle -t ":completion:${curcontext}:hosts" use-ip && useip=yes
+    [[ -n $useip ]] && ipstrip=
     if (( ${+commands[getent]} )); then
       # pws: we were using the horrible ": ${(A)...:=}" syntax to assign
       # to _cache_hosts, overriding the typeset as well as being unreadable
       # and having obscure splitting behaviour.  Why?  We've just
       # tested _cache_hosts doesn't exist.
-      _cache_hosts=(${(s: :)${(ps:\t:)${(f)~~"$(_call_program hosts getent hosts 2>/dev/null)"}##[:blank:]#[^[:blank:]]#}})
+      _cache_hosts=(${(s: :)${(ps:\t:)${(f)~~"$(_call_program hosts getent hosts 2>/dev/null)"}##${~ipstrip}}})
     else
-      _cache_hosts=(${(s: :)${(ps:\t:)${${(f)~~"$(</etc/hosts)"}%%\#*}##[:blank:]#[^[:blank:]]#}})
+      _cache_hosts=(${(s: :)${(ps:\t:)${${(f)~~"$(</etc/hosts)"}%%\#*}##${~ipstrip}}})
       if (( ${+commands[ypcat]} )) &&
     	tmp=$(_call_program hosts ypcat hosts.byname 2>/dev/null); then
-        _cache_hosts+=( ${=${(f)tmp}##[:blank:]#[^[:blank:]]#} ) # If you use YP
+        _cache_hosts+=( ${=${(f)tmp}##${~ipstrip}} ) # If you use YP
       fi
     fi
 
-    if [[ -r ~/.ssh/known_hosts ]]; then
-      _cache_hosts+=(${${${(u)${(f)"$(<~/.ssh/known_hosts)"}%%[ ,|#]*}:#(#s)[0-9]##.[0-9]##.[0-9]##.[0-9]##(#e)}:#(#s)[0-9a-f:]##(#e)})
-    fi
+    local khostfile
+    typeset -Ua khostfiles
+
+    # This style specifies a list of files to look up for host names and IP
+    # addresses, if asked to. The files can contain comma separated host names
+    # and IP's, and any text on a line after the first whitespace,| or # is
+    # discarded. ssh's known_hosts files are thus supported. This style defaults
+    # to the list /etc/ssh/ssh_known_hosts, ~/.ssh/known_hosts
+    zstyle -a ":completion:${curcontext}:hosts" known-hosts-files khostfiles ||
+    khostfiles=(/etc/ssh/ssh_known_hosts ~/.ssh/known_hosts)
+
+    for khostfile in $khostfiles; do
+      if [[ -r $khostfile ]]; then
+        khosts=(${(s:,:)${(j:,:)${(u)${(f)"$(<$khostfile)"}%%[ |#]*}}})
+        if [[ -z $useip ]]; then
+	  khosts=(${${khosts:#(#s)[0-9]##.[0-9]##.[0-9]##.[0-9]##(#e)}:#(#s)[0-9a-f:]##(#e)})
+        fi
+        _cache_hosts+=($khosts)
+      fi
+    done
   fi
 
   _hosts=( "$_cache_hosts[@]" )


Regards,
Ramkumar.

-- System Information:
Debian Release: testing/unstable
  APT prefers testing
  APT policy: (101, 'testing')
Architecture: i386 (i686)
Shell:  /bin/sh linked to /bin/dash
Kernel: Linux 2.6.15-archck2
Locale: LANG=en_IN, LC_CTYPE=en_IN (charmap=UTF-8)

Versions of packages zsh depends on:
ii  debconf [debconf-2.0]         1.4.72     Debian configuration management sy
ii  libc6                         2.3.6-3    GNU C Library: Shared libraries an
ii  libncurses5                   5.5-1      Shared libraries for terminal hand

Versions of packages zsh recommends:
ii  libcap1                       1:1.10-14  support for getting/setting POSIX.
ii  libpcre3                      6.4-1.1    Perl 5 Compatible Regular Expressi

-- no debconf information

-- 
WARN_(accel)("msg null; should hang here to be win compatible\n");
                                   -- WINE source code


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


^ permalink raw reply	[relevance 2%]

* [ramk@cse.iitm.ernet.in: Bug#339635: zsh: zsh-mime-handler used even in the case of executable files]
@ 2006-03-31 14:22  2% Clint Adams
  0 siblings, 0 replies; 200+ results
From: Clint Adams @ 2006-03-31 14:22 UTC (permalink / raw)
  To: zsh-workers; +Cc: 339635-forwarded

Another patch from R.Ramkumar for which I hold no opinion.

----- Forwarded message from "R.Ramkumar" <ramk@cse.iitm.ernet.in> -----

Date: Thu, 17 Nov 2005 23:34:25 +0530
From: "R.Ramkumar" <ramk@cse.iitm.ernet.in>
To: Debian Bug Tracking System <submit@bugs.debian.org>
Subject: Bug#339635: zsh: zsh-mime-handler used even in the case of executable files

Package: zsh
Version: 4.2.5-22
Severity: wishlist
Tags: patch

Some scripts end with a .sh (a common example being autogen.sh). For
such scripts, zsh-mime-handler ends up executing the mime action for
the suffix sh, which sometimes happens to be to just display the
file. This, I guess is due to alias -s, which blindly maps in case
the suffix matches. To counter this, it would be good if
zsh-mime-handler uses a style to take a set of patterns that would
be executed as-is, despite having a suffix found in the mime
configuration. I am enclosing a patch for the same. I have made the
set of executable files as the default for this style, I hope this
deviation from the original behaviour is acceptable.




Content-Description: Patch for the execute-as-is style to zsh-mime-handler
--- zsh-mime-handler.orig	2005-11-17 23:21:14.000000000 +0530
+++ zsh-mime-handler	2005-11-17 23:31:37.000000000 +0530
@@ -45,6 +45,22 @@
 context=":mime:.${suffix}:"
 
 local handler flags no_sh no_bg
+local -a exec_asis
+
+# Set to a list of patterns which are ignored and executed as they are,
+# despite being called for interpretation by the mime handler.
+# Defaults to executable files, which ensures that they are executed as
+# they are, even if they have a suffix.
+zstyle -a $context execute-as-is exec_asis || exec_asis=('*(*)')
+
+local pattern
+
+for pattern in $exec_asis; do
+    if [[ $1 = ${~pattern} ]]; then
+	$@
+	return 0
+    fi
+done
 
 zstyle -s $context handler handler ||
   handler="${zsh_mime_handlers[$suffix]}"


Hope this helps :)

Regards,
Ramkumar

-- System Information:
Debian Release: testing/unstable
  APT prefers testing
  APT policy: (101, 'testing')
Architecture: i386 (i686)
Shell:  /bin/sh linked to /bin/dash
Kernel: Linux 2.6.14-archck1
Locale: LANG=en_IN, LC_CTYPE=en_IN (charmap=UTF-8)

Versions of packages zsh depends on:
ii  debconf [debconf-2.0]         1.4.58     Debian configuration management sy
ii  libc6                         2.3.5-6    GNU C Library: Shared libraries an
ii  libncurses5                   5.4-9      Shared libraries for terminal hand

Versions of packages zsh recommends:
ii  libcap1                       1:1.10-14  support for getting/setting POSIX.
ii  libpcre3                      6.4-1.0.1  Perl 5 Compatible Regular Expressi

-- no debconf information

-- 
WARN_(accel)("msg null; should hang here to be win compatible\n");
                                   -- WINE source code


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


^ permalink raw reply	[relevance 2%]

* Re: Bug#346162: zsh: jobs -p is not POSIX-compliant
@ 2006-04-02 16:50  5% Clint Adams
  0 siblings, 0 replies; 200+ results
From: Clint Adams @ 2006-04-02 16:50 UTC (permalink / raw)
  To: zsh-workers; +Cc: Vincent Lefevre, 346162-forwarded

Another option, on for sh emulation?

On Fri, Jan 06, 2006 at 04:16:51AM +0100, Vincent Lefevre wrote:
> Package: zsh
> Version: 4.3.0-dev-2-1
> Severity: normal
> 
> POSIX says that with "jobs -p", only the PID is output, whereas zsh
> outputs full information.
> 
> See http://www.opengroup.org/onlinepubs/009695399/utilities/jobs.html
> 
> STDOUT
> 
>     If the -p option is specified, the output shall consist of one
>     line for each process ID:
> 
>     "%d\n", <process ID>


^ permalink raw reply	[relevance 5%]

* Re: Bug#346162: zsh: jobs -p is not POSIX-compliant
@ 2006-04-03  4:54  9% Bart Schaefer
  0 siblings, 0 replies; 200+ results
From: Bart Schaefer @ 2006-04-03  4:54 UTC (permalink / raw)
  To: Clint Adams, zsh-workers; +Cc: Vincent Lefevre, 346162-forwarded

On Apr 2, 12:50pm, Clint Adams wrote:
}
} Another option, on for sh emulation?

I keep wanting to make POSIX_BUILTINS responsible for this sort of thing,
but it has a more specific meaning than that.  Possibly this should just
be another one of those things that checks the internal "emulation" mode,
rather than having an option to turn it on/off at will.

This is tangentially related to users/8989 and workers/21366 from last
year.  I never committed 21366.

} On Fri, Jan 06, 2006 at 04:16:51AM +0100, Vincent Lefevre wrote:
} > Package: zsh
} > Version: 4.3.0-dev-2-1
} > Severity: normal
} > 
} > POSIX says that with "jobs -p", only the PID is output, whereas zsh
} > outputs full information.

It's actually worse than that.  "jobs -p" in zsh predates the POSIX spec,
as far as I know ... and zsh's "jobs -p" outputs process *group* numbers,
that is, the PID of the group leader only, not individual process IDs.


^ permalink raw reply	[relevance 9%]

* Re: [ramk@cse.iitm.ernet.in: Bug#339635: zsh: zsh-mime-handler used even in the case of executable files]
@ 2006-04-05 10:14  5% Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2006-04-05 10:14 UTC (permalink / raw)
  To: zsh-workers, 339635-forwarded

Clint Adams <schizo@debian.org> wrote:
> From: "R.Ramkumar" <ramk@cse.iitm.ernet.in>
> 
> Some scripts end with a .sh (a common example being autogen.sh). For
> such scripts, zsh-mime-handler ends up executing the mime action for
> the suffix sh, which sometimes happens to be to just display the
> file. This, I guess is due to alias -s, which blindly maps in case
> the suffix matches. To counter this, it would be good if
> zsh-mime-handler uses a style to take a set of patterns that would
> be executed as-is, despite having a suffix found in the mime
> configuration. I am enclosing a patch for the same. I have made the
> set of executable files as the default for this style, I hope this
> deviation from the original behaviour is acceptable.

The change from the original behaviour seems sensible.

I'll commit this with the following documentation.  I've also turned $@
into "$@" in zsh-mime-handler.

Index: Doc/Zsh/contrib.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Zsh/contrib.yo,v
retrieving revision 1.55
diff -u -r1.55 contrib.yo
--- Doc/Zsh/contrib.yo	20 Mar 2006 11:06:25 -0000	1.55
+++ Doc/Zsh/contrib.yo	5 Apr 2006 10:12:20 -0000
@@ -1391,6 +1391,15 @@
 tt(sh) process.  This is more efficient, but may not work in the occasional
 cases where the mailcap handler uses strict POSIX syntax.
 )
+item(tt(execute-as-is))(
+This style gives a list of patterns to be matched against files
+passed for execution with a handler program.  If the file matches
+the pattern, the entire command line is executed in its current form,
+with no handler.  This is useful for files which might have suffixes
+but nonetheless be executable in their own right.  If the style
+is not set, the pattern tt(*+LPAR()*+RPAR()) is used; hence executable
+files are executed directly and not passed to a handler.
+)
 item(tt(flags))(
 Defines flags to go with a handler; the context is as for the
 tt(handler) style, and the format is as for the flags in tt(mailcap).
Index: Functions/MIME/zsh-mime-handler
===================================================================
RCS file: /cvsroot/zsh/zsh/Functions/MIME/zsh-mime-handler,v
retrieving revision 1.4
diff -u -r1.4 zsh-mime-handler
--- Functions/MIME/zsh-mime-handler	28 Feb 2006 11:57:20 -0000	1.4
+++ Functions/MIME/zsh-mime-handler	5 Apr 2006 10:12:20 -0000
@@ -45,6 +45,22 @@
 context=":mime:.${suffix}:"
 
 local handler flags no_sh no_bg
+local -a exec_asis
+
+# Set to a list of patterns which are ignored and executed as they are,
+# despite being called for interpretation by the mime handler.
+# Defaults to executable files, which ensures that they are executed as
+# they are, even if they have a suffix.
+zstyle -a $context execute-as-is exec_asis || exec_asis=('*(*)')
+
+local pattern
+
+for pattern in $exec_asis; do
+    if [[ $1 = ${~pattern} ]]; then
+	"$@"
+	return 0
+    fi
+done
 
 zstyle -s $context handler handler ||
   handler="${zsh_mime_handlers[$suffix]}"

-- 
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


To access the latest news from CSR copy this link into a web browser:  http://www.csr.com/email_sig.php


^ permalink raw reply	[relevance 5%]

* PATCH: multibyte characters in patterns.
@ 2006-04-09 21:38  1% Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2006-04-09 21:38 UTC (permalink / raw)
  To: Zsh hackers list

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 40923 bytes --]

This adds handling for multibyte characters in patterns when the shell
is compiled with MULTIBYTE_SUPPORT.  This is activated in two ways:

- Set the new MULTIBYTE option.  This will eventually cover parameter
expansion and anything else in the main shell that needs it.  It won't
cover ZLE; that will always use the locale directly.  The reason for the
difference is that scripts and functions may trip up on binary input or,
for example, ISO-8859-1-encoded files that used to be handled properly
before the locale was taken into account.  Whether it should be turned
on by default is still to be determined.
- Use the (#u) globbing flag.  Unfortunately (#m) was already taken;
it's supposed to suggest "Unicode" or "UTF-8", even though we'll handle
other character sets.  (#U) is the opposite, as expected.

All tests pass, and on that basis I'll commit it, although the current
tests don't test the handling of multibyte characters at all.  We
probably need to add a test in some UTF-8 based locale if we can find
on.  (It's quite depressing how pleased I was just to find the shell
recognised o with an Umlaut as a single character.)  It's very likely
the result is still typographically challenged.

I've done virtually no optimisation of the code, and this could make a
big difference.  Where it used to skip over a character simply with an
inline test for Meta and a couple of increments, it now always enters a
function, and with multibyte mode in effect always loops over the system
test for a character.  The latter is inevitable but that doesn't mean
the code is as good as it could be.  It would be possible to convert to
wide characters, although it's complicated by the fact that we need to
support arbitrary bytes, too; it would have to be done with something
like a discriminated union of a char or wchar string.  Then we would
have to convert each test string as well.  I don't know how important
this is likely to be.

However, backtracking during the execution phase of the pattern is
already fairly well optimised: complicated cases were always done with
subroutines, so nothing needed to change, and I've made simple cases use
an extra array to mark the beginning of characters so we don't need to
look for wide characters when we backtrack.

Various other things that will need changing:
- Indexes for backreferences etc. don't count wide characters even
  in multibyte mode.  That's because parameters currently only count
  bytes, so this would be inconsistent.  The code is there and should
  change if we fix up parameters; holler if I forget.
- Tests for IFS and IFS space characters don't handle wide characters:
  again, the rest of the shell needs changing for these too.

I've also put in a note that I've got a single static shift state for
multibyte characters, but I'm not really sure what effect that will have.

Index: Doc/Zsh/expn.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Zsh/expn.yo,v
retrieving revision 1.64
diff -u -r1.64 expn.yo
--- Doc/Zsh/expn.yo	5 Apr 2006 09:58:42 -0000	1.64
+++ Doc/Zsh/expn.yo	9 Apr 2006 21:33:17 -0000
@@ -1461,20 +1461,20 @@
 forms:
 
 startitem()
-item(i)(
+item(tt(i))(
 Case insensitive:  upper or lower case characters in the pattern match
 upper or lower case characters.
 )
-item(l)(
+item(tt(l))(
 Lower case characters in the pattern match upper or lower case
 characters; upper case characters in the pattern still only match
 upper case characters.
 )
-item(I)(
+item(tt(I))(
 Case sensitive:  locally negates the effect of tt(i) or tt(l) from
 that point on.
 )
-item(b)(
+item(tt(b))(
 Activate backreferences for parenthesised groups in the pattern;
 this does not work in filename generation.  When a pattern with a set of
 active parentheses is matched, the strings matched by the groups are
@@ -1525,11 +1525,11 @@
 
 Pattern matching with backreferences is slightly slower than without.
 )
-item(B)(
+item(tt(B))(
 Deactivate backreferences, negating the effect of the tt(b) flag from that
 point on.
 )
-item(m)(
+item(tt(m))(
 Set references to the match data for the entire string matched; this is
 similar to backreferencing and does not work in filename generation.  The
 flag must be in effect at the end of the pattern, i.e. not local to a
@@ -1550,7 +1550,7 @@
 references, other than the extra substitutions required for the
 replacement strings in cases such as the example shown.
 )
-item(M)(
+item(tt(M))(
 Deactivate the tt(m) flag, hence no references to match data will be
 created.
 )
@@ -1596,6 +1596,19 @@
 `tt((#q.))' will be ignored.  Note that colon modifiers in the glob
 qualifiers are also not applied in ordinary pattern matching.
 )
+item(tt(u))(
+Respect the current locale in determining the presence of multibyte
+characters in a pattern, provided the shell was compiled with 
+tt(MULTIBYTE_SUPPORT).  This overrides the tt(MULTIBYTE)
+option; the default behaviour is taken from the option.  Compare tt(U).
+(Mnemonic: typically multibyte characters are from Unicode in the UTF-8
+encoding, although any extension of ASCII supported by the system
+library may be used.)
+)
+item(tt(U))(
+All characters are considered to be a single byte long.  The opposite
+of tt(u).  This overrides the tt(MULTIBYTE) option.
+)
 enditem()
 
 For example, the test string tt(fooxx) can be matched by the pattern
Index: Doc/Zsh/options.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Zsh/options.yo,v
retrieving revision 1.45
diff -u -r1.45 options.yo
--- Doc/Zsh/options.yo	20 Mar 2006 11:06:25 -0000	1.45
+++ Doc/Zsh/options.yo	9 Apr 2006 21:33:19 -0000
@@ -411,6 +411,20 @@
 Append a trailing `tt(/)' to all directory
 names resulting from filename generation (globbing).
 )
+pindex(MULTIBYTE)
+cindex(characters, multibyte, in expansion and globbing)
+cindex(multibyte characters, in expansion and globbing)
+item(tt(MULTIBYTE))(
+Respect multibyte characters when found during pattern matching.
+When this option is set, characters strings are examined using the
+system library to determine how many bytes form a character, depending
+on the current locale.  If the option is unset
+(or the shell was not compiled with the configuration option
+tt(MULTIBYTE_SUPPORT)) a single byte is always treated as a single
+character.  The option will eventually be extended to cover expansion.
+Note, however, that it does not affect the shellʼs editor, which always
+uses the locale to determine multibyte characters.
+)
 pindex(NOMATCH)
 cindex(globbing, no matches)
 item(tt(NOMATCH) (tt(PLUS()3)) <C> <Z>)(
Index: Src/options.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/options.c,v
retrieving revision 1.26
diff -u -r1.26 options.c
--- Src/options.c	7 Mar 2006 21:30:37 -0000	1.26
+++ Src/options.c	9 Apr 2006 21:33:20 -0000
@@ -166,6 +166,7 @@
 {{NULL, "markdirs",	      0},			 MARKDIRS},
 {{NULL, "menucomplete",	      0},			 MENUCOMPLETE},
 {{NULL, "monitor",	      OPT_SPECIAL},		 MONITOR},
+{{NULL, "multibyte",	      0/*TBD*/},		 MULTIBYTE},
 {{NULL, "multios",	      OPT_EMULATE|OPT_ZSH},	 MULTIOS},
 {{NULL, "nomatch",	      OPT_EMULATE|OPT_NONBOURNE},NOMATCH},
 {{NULL, "notify",	      OPT_ZSH},			 NOTIFY},
Index: Src/pattern.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/pattern.c,v
retrieving revision 1.29
diff -u -r1.29 pattern.c
--- Src/pattern.c	11 Oct 2005 16:48:06 -0000	1.29
+++ Src/pattern.c	9 Apr 2006 21:33:22 -0000
@@ -216,22 +216,6 @@
 #define P_HSTART        0x02	/* Starts with # or ##'d pattern. */
 #define P_PURESTR	0x04	/* Can be matched with a strcmp */
 
-/*
- * Increment pointer which may be on a Meta (x is a pointer variable),
- * returning the incremented value (i.e. like pre-increment).
- *
- * In future the following will need to refer to metafied multibyte
- * characters.  References to invidual characters are not turned
- * into a macro when the characters is metafied (c.f. CHARREF()
- * below then the character is not metafied) and will need tracking
- * down.
- */
-#define METAINC(x)	((x) += (*(x) == Meta) ? 2 : 1)
-/*
- * Return unmetafied char from string (x is any char *)
- */
-#define UNMETA(x)	(*(x) == Meta ? (x)[1] ^ 32 : *(x))
-
 #if defined(ZSH_64_BIT_TYPE) || defined(LONG_IS_64_BIT)
 typedef zlong zrange_t;
 #define ZRANGE_T_IS_SIGNED	(1)
@@ -288,6 +272,89 @@
 static int patflags;		    /* flags passed down to patcompile */
 static int patglobflags;  /* globbing flags & approx */
 
+/*
+ * Increment pointer to metafied multibyte string.
+ */
+#ifdef MULTIBYTE_SUPPORT
+typedef wchar_t patchar_t;
+
+#define METACHARINC(x) ((void)metacharinc(&x))
+
+/*
+ * TODO: the shiftstate isn't well handled; we don't guarantee
+ * to maintain it properly between characters.  If we don't
+ * need it we should use mbtowc() instead.
+ */
+static mbstate_t shiftstate;
+
+/*
+ * Multibyte version: it's (almost) as easy to return the
+ * value as not, so do so since we sometimes need it..
+ */
+static wchar_t
+metacharinc(char **x)
+{
+    char *inptr = *x;
+    char inchar;
+    size_t ret = MB_INVALID;
+    wchar_t wc;
+
+    /*
+     * Cheat if the top bit isn't set.  This is second-guessing
+     * the library, but we know for sure that if the character
+     * set doesn't have the property that all bytes with the 8th
+     * bit clear are single characters then we are stuffed.
+     */
+    if (!(patglobflags & GF_MULTIBYTE) || !(STOUC(*inptr) & 0x80))
+    {
+	if (itok(*inptr))
+	    inchar = ztokens[*inptr++ - Pound];
+	else if (*inptr == Meta) {
+	    inptr++;
+	    inchar = *inptr++ ^ 32;
+	} else {
+	    inchar = *inptr++;
+	}
+	*x = inptr;
+	return (wchar_t)inchar;
+    }
+
+    while (*inptr) {
+	if (itok(*inptr))
+	    inchar = ztokens[*inptr++ - Pound];
+	else if (*inptr == Meta) {
+	    inptr++;
+	    inchar = *inptr++ ^ 32;
+	} else {
+	    inchar = *inptr++;
+	}
+	ret = mbrtowc(&wc, &inchar, 1, &shiftstate);
+
+	if (ret == MB_INVALID)
+	    break;
+	if (ret == MB_INCOMPLETE)
+	    continue;
+	*x = inptr;
+	return wc;
+    }
+
+    /* Error.  Treat as single byte. */
+    /* Reset the shift state for next time. */
+    memset(&shiftstate, 0, sizeof(shiftstate));
+    return (wchar_t) *(*x)++;
+}
+
+#else
+typedef int patchar_t;
+
+#define METACHARINC(x)	((void)((x) += (*(x) == Meta) ? 2 : 1))
+/*
+ * Return unmetafied char from string (x is any char *)
+ */
+#define UNMETA(x)	(*(x) == Meta ? (x)[1] ^ 32 : *(x))
+#endif
+
+
 /* Add n more characters, ensuring there is enough space. */
 
 enum {
@@ -353,6 +420,8 @@
 	patglobflags = 0;
     else
 	patglobflags = GF_IGNCASE;
+    if (isset(MULTIBYTE))
+	patglobflags |= GF_MULTIBYTE;
 }
 
 /*
@@ -404,7 +473,10 @@
 	patendseglen--;
 	patendstrlen--;
 	remnulargs(patparse);
-	patglobflags = 0;
+	if (isset(MULTIBYTE))
+	    patglobflags = GF_MULTIBYTE;
+	else
+	    patglobflags = 0;
     }
     /*
      * Have to be set now, since they get updated during compilation.
@@ -935,6 +1007,14 @@
 		*assertp = P_ISEND;
 		break;
 
+	    case 'u':
+		patglobflags |= GF_MULTIBYTE;
+		break;
+
+	    case 'U':
+		patglobflags &= ~GF_MULTIBYTE;
+		break;
+
 	    default:
 		return 0;
 	    }
@@ -961,11 +1041,16 @@
     long starter = 0, next, pound, op;
     int flags, flags2, kshchar, len, ch, patch, nmeta;
     union upat up;
-    char *nptr, *str0, *ptr, cbuf[2];
+    char *nptr, *str0, *ptr, *patprev;
     zrange_t from, to;
+#ifdef MULTIBYTE_SUPPORT
+    char *charstart;
+#else
+    char cbuf[2];
+#endif
 
     flags = 0;
-    str0 = patparse;
+    str0 = patprev = patparse;
     for (;;) {
 	/*
 	 * Check if we have a string. First, we need to make sure
@@ -992,7 +1077,9 @@
 			 !memchr(patendseg, patparse[1], patendseglen))))
 	    break;
 
-	METAINC(patparse);
+	/* Remember the previous character for backtracking */
+	patprev = patparse;
+	METACHARINC(patparse);
     }
 
     if (patparse > str0) {
@@ -1007,13 +1094,13 @@
 	flags |= P_PURESTR;
 	DPUTS(patparse == str0, "BUG: matched nothing in patcomppiece.");
 	/* more than one character matched? */
-	morelen = str0 + (*str0 == Meta ? 2 : 1) < patparse;
+	morelen = (patprev > str0);
 	/*
 	 * If we have more than one character, a following hash only
-	 * applies to the last, so decrement.
+	 * applies to the last, so backtrack one character.
 	 */
 	if (isset(EXTENDEDGLOB) && *patparse == Pound && morelen)
-	    patparse -= (patparse > str0 + 1 && patparse[-2] == Meta) ? 2 : 1;
+	    patparse = patprev;
 	/*
 	 * If len is 1, we can't have an active # following, so doesn't
 	 * matter that we don't make X in `XX#' simple.
@@ -1066,7 +1153,7 @@
 	    patparse++;
 
 	patch = *patparse;
-	METAINC(patparse);
+	METACHARINC(patparse);
 	switch(patch) {
 	case Quest:
 	    flags |= P_SIMPLE;
@@ -1137,27 +1224,27 @@
 			    patadd(NULL, STOUC(Meta+ch), 1, PA_NOALIGN);
 			continue;
 		}
-		if (itok(*patparse)) {
-		    cbuf[0] = ztokens[*patparse - Pound];
-		} else if (*patparse == Meta) {
-		    cbuf[0] = Meta;
-		    cbuf[1] = *++patparse;
-		} else
-		    cbuf[0] = *patparse;
-		patparse++;
+		charstart = patparse;
+		METACHARINC(patparse);
 
-		if (*patparse == '-' && patparse[1] != Outbrack) {
+		if (*patparse == '-' && patparse[1] &&
+		    patparse[1] != Outbrack) {
 		    patadd(NULL, STOUC(Meta+PP_RANGE), 1, PA_NOALIGN);
-		    patadd(cbuf, 0, (cbuf[0] == Meta) ? 2 : 1, PA_NOALIGN);
-		    if (itok(*++patparse)) {
-			patadd(0, STOUC(ztokens[*patparse - Pound]), 1,
+		    if (itok(*charstart)) {
+			patadd(0, STOUC(ztokens[*charstart - Pound]), 1,
 			       PA_NOALIGN);
-		    } else
-			patadd(patparse, 0, (*patparse == Meta) ? 2 : 1,
-			       PA_NOALIGN);
-		    METAINC(patparse);
-		} else
-		    patadd(cbuf, 0, (cbuf[0] == Meta) ? 2 : 1, PA_NOALIGN);
+		    } else {
+			patadd(charstart, 0, patparse-charstart, PA_NOALIGN);
+		    }
+		    charstart = ++patparse;	/* skip ASCII '-' */
+		    METACHARINC(patparse);
+		}
+		if (itok(*charstart)) {
+		    patadd(0, STOUC(ztokens[*charstart - Pound]), 1,
+			   PA_NOALIGN);
+		} else {
+		    patadd(charstart, 0, patparse-charstart, PA_NOALIGN);
+		}
 	    }
 	    if (*patparse != Outbrack)
 		return 0;
@@ -1475,19 +1562,140 @@
 static int globdots;			/* Glob initial dots? */
 
 /*
- * Macros which are currently trivial but are likely to be less
- * so when we handle multibyte characters.  They operate on
- * umetafied strings.
+ * Character functions operating on unmetafied strings.
+ */
+#ifdef MULTIBYTE_SUPPORT
+
+/* Get a character from the start point in a string */
+#define CHARREF(x, y)	charref((x), (y))
+static wchar_t
+charref(char *x, char *y)
+{
+    wchar_t wc;
+    size_t ret;
+
+    if (!(patglobflags & GF_MULTIBYTE) || !(STOUC(*x) & 0x80))
+	return (wchar_t) *x;
+
+    ret = mbrtowc(&wc, x, y-x, &shiftstate);
+
+    if (ret == MB_INVALID || ret == MB_INCOMPLETE) {
+	/* Error.  Treat as single byte. */
+	/* Reset the shift state for next time. */
+	memset(&shiftstate, 0, sizeof(shiftstate));
+	return (wchar_t) *x;
+    }
+
+    return wc;
+}
+
+/* Get  a pointer to the next character */
+#define CHARNEXT(x, y)	charnext((x), (y))
+static char *
+charnext(char *x, char *y)
+{
+    wchar_t wc;
+    size_t ret;
+
+    if (!(patglobflags & GF_MULTIBYTE) || !(STOUC(*x) & 0x80))
+	return x + 1;
+
+    ret = mbrtowc(&wc, x, y-x, &shiftstate);
+
+    if (ret == MB_INVALID || ret == MB_INCOMPLETE) {
+	/* Error.  Treat as single byte. */
+	/* Reset the shift state for next time. */
+	memset(&shiftstate, 0, sizeof(shiftstate));
+	return x + 1;
+    }
+
+    /* Nulls here are normal characters */
+    return x + (ret ? ret : 1);
+}
+
+/* Increment a pointer past the current character. */
+#define CHARINC(x, y)	((x) = charnext((x), (y)))
+
+
+/* Get a character and increment */
+#define CHARREFINC(x, y)	charrefinc(&(x), (y))
+static wchar_t
+charrefinc(char **x, char *y)
+{
+    wchar_t wc;
+    size_t ret;
+
+    if (!(patglobflags & GF_MULTIBYTE) || !(STOUC(**x) & 0x80))
+	return (wchar_t) *(*x)++;
+
+    ret = mbrtowc(&wc, *x, y-*x, &shiftstate);
+
+    if (ret == MB_INVALID || ret == MB_INCOMPLETE) {
+	/* Error.  Treat as single byte. */
+	/* Reset the shift state for next time. */
+	memset(&shiftstate, 0, sizeof(shiftstate));
+	return (wchar_t) *(*x)++;
+    }
+
+    /* Nulls here are normal characters */
+    *x += ret ? ret : 1;
+
+    return wc;
+}
+
+
+#ifndef PARAMETER_CODE_HANDLES_MULTIBYTE
+/*
+ * TODO: We should use the other branch, but currently
+ * the parameter code doesn't handle multibyte input,
+ * so this would produce the wrong subscripts,
+ * so just use a raw byte difference for now.
  */
+/* Counter the number of characters between two pointers, smaller first */
+# define CHARSUB(x,y)	((y) - (x))
+#else
+/* Counter the number of characters between two pointers, smaller first */
+#define CHARSUB(x,y)	charsub(x, y)
+static ptrdiff_t
+charsub(char *x, char *y)
+{
+    ptrdiff_t res = 0;
+    size_t ret;
+    wchar_t wc;
+
+    while (x < y) {
+	ret = mbrtowc(&wc, x, y-x, &shiftstate);
+
+	if (ret == MB_INVALID || ret == MB_INCOMPLETE) {
+	    /* Error.  Treat remainder as single characters */
+	    return res + (y - x);
+	}
+
+	/* Treat nulls as normal characters */
+	if (!ret)
+	    ret = 1;
+	res += ret;
+	x += ret;
+    }
+
+    return res;
+}
+#endif
+
+#else /* no MULTIBYTE_SUPPORT */
 
 /* Get a character from the start point in a string */
-#define CHARREF(x)	(STOUC(*x))
+#define CHARREF(x, y)	(STOUC(*(x)))
 /* Get  a pointer to the next character */
-#define CHARNEXT(x)	(x+1)
+#define CHARNEXT(x, y)	((x)+1)
 /* Increment a pointer past the current character. */
-#define CHARINC(x)	(x++)
-/* Counter the number of characters between two pointers, largest first */
-#define CHARSUB(x,y)	(x-y)
+#define CHARINC(x, y)	((x)++)
+/* Get a character and increment */
+#define CHARREFINC(x, y)	(STOUC(*(x)++))
+/* Counter the number of characters between two pointers, smaller first */
+#define CHARSUB(x,y)	(y-x)
+
+#endif /* MULTIBYTE_SUPPORT */
 
 /*
  * The following need to be accessed in the globbing scanner for
@@ -1798,7 +2006,7 @@
 		 * Remember the test pattern is already unmetafied.
 		 */
 		char *str;
-		int mlen = CHARSUB(patinput, patinstart);
+		int mlen = CHARSUB(patinstart, patinput);
 
 		str = metafy(patinstart, patinput - patinstart, META_DUP);
 		setsparam("MATCH", str);
@@ -1820,9 +2028,9 @@
 		for (i = 0; i < prog->patnpar && i < maxnpos; i++) {
 		    if (parsfound & (1 << i)) {
 			if (begp)
-			    *begp++ = CHARSUB(*sp, patinstart) + patoffset;
+			    *begp++ = CHARSUB(patinstart, *sp) + patoffset;
 			if (endp)
-			    *endp++ = CHARSUB(*ep, patinstart) + patoffset
+			    *endp++ = CHARSUB(patinstart, *ep) + patoffset
 				- 1;
 		    } else {
 			if (begp)
@@ -1862,12 +2070,12 @@
 			 * corresponds to indexing as ${foo[1,1]}.
 			 */
 			sprintf(numbuf, "%ld",
-				(long)(CHARSUB(*sp, patinstart) +
+				(long)(CHARSUB(patinstart, *sp) +
 				       patoffset +
 				       !isset(KSHARRAYS)));
 			mbeginarr[i] = ztrdup(numbuf);
 			sprintf(numbuf, "%ld",
-				(long)(CHARSUB(*ep, patinstart) +
+				(long)(CHARSUB(patinstart, *ep) +
 				       patoffset +
 				       !isset(KSHARRAYS) - 1));
 			mendarr[i] = ztrdup(numbuf);
@@ -1916,12 +2124,26 @@
  * Match literal characters with case insensitivity test:  the first
  * comes from the input string, the second the current pattern.
  */
+#ifdef MULTIBYTE_SUPPORT
+#define ISUPPER(x)	iswupper(x)
+#define ISLOWER(x)	iswlower(x)
+#define TOUPPER(x)	towupper(x)
+#define TOLOWER(x)	towlower(x)
+#define ISDIGIT(x)	iswdigit(x)
+#else
+#define ISUPPER(x)	isupper(x)
+#define ISLOWER(x)	islower(x)
+#define TOUPPER(x)	toupperr(x)
+#define TOLOWER(x)	tolower(x)
+#define ISDIGIT(x)	idigit(x)
+#endif
 #define CHARMATCH(chin, chpa) (chin == chpa || \
         ((patglobflags & GF_IGNCASE) ? \
-	 ((isupper(chin) ? tolower(chin) : chin) == \
-	  (isupper(chpa) ? tolower(chpa) : chpa)) : \
+	 ((ISUPPER(chin) ? TOLOWER(chin) : chin) == \
+	  (ISUPPER(chpa) ? TOLOWER(chpa) : chpa)) : \
 	 (patglobflags & GF_LCMATCHUC) ? \
-	 (islower(chpa) && toupper(chpa) == chin) : 0))
+	 (ISLOWER(chpa) && TOUPPER(chpa) == chin) : 0))
+
 /*
  * The same but caching an expression from the first argument,
  * Requires local charmatch_cache definition.
@@ -1968,7 +2190,7 @@
 	    if (patinput == patinend)
 		fail = 1;
 	    else
-		CHARINC(patinput);
+		CHARINC(patinput, patinend);
 	    break;
 	case P_EXACTLY:
 	    /*
@@ -1984,14 +2206,16 @@
 	    }
 	    exactpos = NULL;
 	    while (chrop < chrend && patinput < patinend) {
-		int chin = CHARREF(patinput);
-		int chpa = CHARREF(chrop);
+		char *savpatinput = patinput;
+		char *savchrop = chrop;
+		patchar_t chin = CHARREFINC(patinput, patinend);
+		patchar_t chpa = CHARREFINC(chrop, chrend);
 		if (!CHARMATCH(chin, chpa)) {
 		    fail = 1;
+		    patinput = savpatinput;
+		    chrop = savchrop;
 		    break;
 		}
-		CHARINC(chrop);
-		CHARINC(patinput);
 	    }
 	    if (chrop < chrend) {
 		exactpos = chrop;
@@ -2002,18 +2226,18 @@
 	case P_ANYOF:
 	    if (patinput == patinend ||
 		!patmatchrange((char *)P_OPERAND(scan),
-			       CHARREF(patinput)))
+			       CHARREF(patinput, patinend)))
 		fail = 1;
 	    else
-		CHARINC(patinput);
+		CHARINC(patinput, patinend);
 	    break;
 	case P_ANYBUT:
 	    if (patinput == patinend ||
 		patmatchrange((char *)P_OPERAND(scan),
-			      CHARREF(patinput)))
+			      CHARREF(patinput, patinend)))
 		fail = 1;
 	    else
-		CHARINC(patinput);
+		CHARINC(patinput, patinend);
 	    break;
 	case P_NUMRNG:
 	case P_NUMFROM:
@@ -2108,7 +2332,7 @@
 	case P_NUMANY:
 	    /* This is <->: any old set of digits, don't bother comparing */
 	    start = patinput;
-	    while (patinput < patinend && idigit(CHARREF(patinput)))
+	    while (patinput < patinend && idigit(*patinput))
 		patinput++;
 	    save = patinput;
 	    no = 0;
@@ -2117,7 +2341,7 @@
 		    return 1;
 		if (!no && P_OP(next) == P_EXACTLY &&
 		    (!P_LS_LEN(next) ||
-		     !idigit(CHARREF(P_LS_STR(next)))) &&
+		     !idigit(*P_LS_STR(next))) &&
 		    !(patglobflags & 0xff))
 		    return 0;
 		patinput = --save;
@@ -2462,74 +2686,89 @@
 	    op = P_OP(scan);
 	    /* Note that no counts possibly metafied characters */
 	    start = patinput;
-	    if (op == P_STAR) {
-		for (no = 0; patinput < patinend; CHARINC(patinput))
-		    no++;
-		/* simple optimization for reasonably common case */
-		if (P_OP(next) == P_END)
-		    return 1;
-	    } else {
-		DPUTS(patglobflags & 0xff,
-		      "BUG: wrong backtracking with approximation.");
-		if (!globdots && P_NOTDOT(P_OPERAND(scan)) &&
-		    patinput == patinstart && patinput < patinend &&
-		    CHARREF(patinput) == '.')
-		    return 0;
-		no = patrepeat(P_OPERAND(scan));
-	    }
-	    min = (op == P_TWOHASH) ? 1 : 0;
-	    /*
-	     * Lookahead to avoid useless matches. This is not possible
-	     * with approximation.
-	     */
-	    if (P_OP(next) == P_EXACTLY && P_LS_LEN(next) &&
-		!(patglobflags & 0xff)) {
-		char *nextop = P_LS_STR(next);
+	    {
+		char *lastcharstart;
 		/*
-		 * If that P_EXACTLY is last (common in simple patterns,
-		 * such as *.c), then it can be only be matched at one
-		 * point in the test string, so record that.
+		 * Array to record the start of characters for
+		 * backtracking.
 		 */
-		if (P_OP(PATNEXT(next)) == P_END &&
-		    !(patflags & PAT_NOANCH)) {
-		    int ptlen = patinend - patinput;
-		    int lenmatch = patinend - (min ? CHARNEXT(start) : start);
-		    /* Are we in the right range? */
-		    if (P_LS_LEN(next) > lenmatch || P_LS_LEN(next) < ptlen)
-			return 0;
-		    /* Yes, just position appropriately and test. */
-		    patinput += ptlen - P_LS_LEN(next);
-		    /*
-		     * Here we will need to be careful that patinput is not
-		     * in the middle of a multibyte character.
-		     */
-		    /* Continue loop with P_EXACTLY test. */
-		    break;
-		}
-		nextch = CHARREF(nextop);
-	    } else
-		nextch = -1;
-	    save = patinput;
-	    savglobflags = patglobflags;
-	    saverrsfound = errsfound;
-	    while (no >= min) {
-		int charmatch_cache;
-		if (nextch < 0 ||
-		    (patinput < patinend &&
-		     CHARMATCH_EXPR(CHARREF(patinput), nextch))) {
-		    if (patmatch(next))
+		VARARR(char, charstart, patinend-patinput);
+		memset(charstart, 0, patinend-patinput);
+
+		if (op == P_STAR) {
+		    for (no = 0; patinput < patinend;
+			 CHARINC(patinput, patinend))
+		    {
+			charstart[patinput-start] = 1;
+			no++;
+		    }
+		    /* simple optimization for reasonably common case */
+		    if (P_OP(next) == P_END)
 			return 1;
+		} else {
+		    DPUTS(patglobflags & 0xff,
+			  "BUG: wrong backtracking with approximation.");
+		    if (!globdots && P_NOTDOT(P_OPERAND(scan)) &&
+			patinput == patinstart && patinput < patinend &&
+			CHARREF(patinput, patinend) == ZWC('.'))
+			return 0;
+		    no = patrepeat(P_OPERAND(scan), charstart);
 		}
-		no--;
-		save--;
+		min = (op == P_TWOHASH) ? 1 : 0;
 		/*
-		 * Here we will need to make sure save is
-		 * decremented properly to the start of
-		 * the preceeding multibyte character.
+		 * Lookahead to avoid useless matches. This is not possible
+		 * with approximation.
 		 */
-		patinput = save;
-		patglobflags = savglobflags;
-		errsfound = saverrsfound;
+		if (P_OP(next) == P_EXACTLY && P_LS_LEN(next) &&
+		    !(patglobflags & 0xff)) {
+		    char *nextop = P_LS_STR(next);
+		    int nextlen = P_LS_LEN(next);
+		    /*
+		     * If that P_EXACTLY is last (common in simple patterns,
+		     * such as *.c), then it can be only be matched at one
+		     * point in the test string, so record that.
+		     */
+		    if (P_OP(PATNEXT(next)) == P_END &&
+			!(patflags & PAT_NOANCH)) {
+			int ptlen = patinend - patinput;
+			int lenmatch = patinend -
+			    (min ? CHARNEXT(start, patinend) : start);
+			/* Are we in the right range? */
+			if (P_LS_LEN(next) > lenmatch ||
+			    P_LS_LEN(next) < ptlen)
+			    return 0;
+			/* Yes, just position appropriately and test. */
+			patinput += ptlen - P_LS_LEN(next);
+			/*
+			 * Here we will need to be careful that patinput is not
+			 * in the middle of a multibyte character.
+			 */
+			/* Continue loop with P_EXACTLY test. */
+			break;
+		    }
+		    nextch = CHARREF(nextop, nextop + nextlen);
+		} else
+		    nextch = -1;
+		savglobflags = patglobflags;
+		saverrsfound = errsfound;
+		lastcharstart = charstart + (patinput - start);
+		while (no >= min) {
+		    int charmatch_cache;
+		    if (nextch < 0 ||
+			(patinput < patinend &&
+			 CHARMATCH_EXPR(CHARREF(patinput, patinend),
+					nextch))) {
+			if (patmatch(next))
+			    return 1;
+		    }
+		    no--;
+		    /* find start of previous full character */
+		    while (!*--lastcharstart)
+			;
+		    patinput = start + (lastcharstart-charstart);
+		    patglobflags = savglobflags;
+		    errsfound = saverrsfound;
+		}
 	    }
 	    /*
 	     * As with branches, the patmatch(next) stuff for *
@@ -2590,7 +2829,7 @@
 
 		/* Try omitting a character from the input string */
 		if (patinput < patinend) {
-		    CHARINC(patinput);
+		    CHARINC(patinput, patinend);
 		    /* If we are not on an exact match, then this is
 		     * our last gasp effort, so we can optimize out
 		     * the recursive call.
@@ -2605,11 +2844,11 @@
 		    char *nextexact = savexact;
 		    DPUTS(!savexact,
 			  "BUG: exact match has not set exactpos");
-		    CHARINC(nextexact);
+		    CHARINC(nextexact, exactend);
 
 		    if (save < patinend) {
 			char *nextin = save;
-			CHARINC(nextin);
+			CHARINC(nextin, patinend);
 			patglobflags = savglobflags;
 			errsfound = saverrsfound;
 			exactpos = savexact;
@@ -2620,17 +2859,17 @@
 			 */
 			if (save < patinend && nextin < patinend &&
 			    nextexact < exactend) {
-			    int cin0 = CHARREF(save);
-			    int cpa0 = CHARREF(exactpos);
-			    int cin1 = CHARREF(nextin);
-			    int cpa1 = CHARREF(nextexact);
+			    patchar_t cin0 = CHARREF(save, patinend);
+			    patchar_t cpa0 = CHARREF(exactpos, exactend);
+			    patchar_t cin1 = CHARREF(nextin, patinend);
+			    patchar_t cpa1 = CHARREF(nextexact, exactend);
 
 			    if (CHARMATCH(cin0, cpa1) &&
 				CHARMATCH(cin1, cpa0)) {
 				patinput = nextin;
-				CHARINC(patinput);
+				CHARINC(patinput, patinend);
 				exactpos = nextexact;
-				CHARINC(exactpos);
+				CHARINC(exactpos, exactend);
 				if (patmatch(scan))
 				    return 1;
 
@@ -2659,7 +2898,7 @@
 		     * This must be the last attempt, so just loop
 		     * instead of calling recursively.
 		     */
-		    CHARINC(exactpos);
+		    CHARINC(exactpos, exactend);
 		    continue;
 		}
 	    }
@@ -2673,6 +2912,122 @@
     return 0;
 }
 
+
+/**/
+#ifdef MULTIBYTE_SUPPORT
+
+/**/
+static int
+patmatchrange(char *range, wchar_t ch)
+{
+    wchar_t r1, r2;
+
+    /*
+     * Careful here: unlike other strings, range is a NULL-terminated,
+     * metafied string, because we need to treat the Posix and hyphenated
+     * ranges specially.
+     */
+    while (*range) {
+	if (imeta(STOUC(*range))) {
+	    switch (STOUC(*range++) - STOUC(Meta)) {
+	    case 0:
+		/* ordinary metafied character */
+		range--;
+		if (metacharinc(&range) == ch)
+		    return 1;
+		break;
+	    case PP_ALPHA:
+		if (iswalpha(ch))
+		    return 1;
+		break;
+	    case PP_ALNUM:
+		if (iswalnum(ch))
+		    return 1;
+		break;
+	    case PP_ASCII:
+		if ((ch & ~0x7f) == 0)
+		    return 1;
+		break;
+	    case PP_BLANK:
+		if (ch == L' ' || ch == L'\t')
+		    return 1;
+		break;
+	    case PP_CNTRL:
+		if (iswcntrl(ch))
+		    return 1;
+		break;
+	    case PP_DIGIT:
+		if (iswdigit(ch))
+		    return 1;
+		break;
+	    case PP_GRAPH:
+		if (iswgraph(ch))
+		    return 1;
+		break;
+	    case PP_LOWER:
+		if (iswlower(ch))
+		    return 1;
+		break;
+	    case PP_PRINT:
+		if (iswprint(ch))
+		    return 1;
+		break;
+	    case PP_PUNCT:
+		if (iswpunct(ch))
+		    return 1;
+		break;
+	    case PP_SPACE:
+		if (iswspace(ch))
+		    return 1;
+		break;
+	    case PP_UPPER:
+		if (iswupper(ch))
+		    return 1;
+		break;
+	    case PP_XDIGIT:
+		if (iswxdigit(ch))
+		    return 1;
+		break;
+	    case PP_IDENT:
+		if (wcsiident(ch))
+		    return 1;
+		break;
+	    case PP_IFS:
+		/* TODO */
+		if (isep(ch))
+		    return 1;
+		break;
+	    case PP_IFSSPACE:
+		/* TODO */
+		if (iwsep(ch))
+		    return 1;
+		break;
+	    case PP_WORD:
+		if (wcsiword(ch))
+		    return 1;
+		break;
+	    case PP_RANGE:
+		r1 = metacharinc(&range);
+		r2 = metacharinc(&range);
+		if (r1 <= ch && ch <= r2)
+		    return 1;
+		break;
+	    case PP_UNKWN:
+		DPUTS(1, "BUG: unknown posix range passed through.\n");
+		break;
+	    default:
+		DPUTS(1, "BUG: unknown metacharacter in range.");
+		break;
+	    }
+	} else if (metacharinc(&range) == ch)
+	    return 1;
+    }
+    return 0;
+}
+
+/**/
+#else
+
 /**/
 static int
 patmatchrange(char *range, int ch)
@@ -2756,17 +3111,13 @@
 		    return 1;
 		break;
 	    case PP_WORD:
-		/*
-		 * HERE: when we support multibyte characters,
-		 * this test needs to be wcsiword().
-		 */
 		if (iword(ch))
 		    return 1;
 		break;
 	    case PP_RANGE:
 		range++;
 		r1 = STOUC(UNMETA(range));
-		METAINC(range);
+		METACHARINC(range);
 		r2 = STOUC(UNMETA(range));
 		if (*range == Meta)
 		    range++;
@@ -2786,12 +3137,21 @@
     return 0;
 }
 
-/* repeatedly match something simple and say how many times */
+/**/
+#endif
+
+/*
+ * Repeatedly match something simple and say how many times.
+ * charstart is an array parallel to that starting at patinput
+ * and records the start of (possibly multibyte) characters
+ * to aid in later backtracking.
+ */
 
 /**/
-static int patrepeat(Upat p)
+static int patrepeat(Upat p, char *charstart)
 {
-    int count = 0, tch, charmatch_cache;
+    int count = 0;
+    patchar_t tch, charmatch_cache;
     char *scan, *opnd;
 
     scan = patinput;
@@ -2806,23 +3166,28 @@
 #endif
     case P_EXACTLY:
 	DPUTS(P_LS_LEN(p) != 1, "closure following more than one character");
-	tch = CHARREF(P_LS_STR(p));
+	tch = CHARREF(P_LS_STR(p), P_LS_STR(p) + P_LS_LEN(p));
 	while (scan < patinend &&
-	       CHARMATCH_EXPR(CHARREF(scan), tch)) {
+	       CHARMATCH_EXPR(CHARREF(scan, patinend), tch)) {
+	    charstart[scan-patinput] = 1;
 	    count++;
-	    CHARINC(scan);
+	    CHARINC(scan, patinend);
 	}
 	break;
     case P_ANYOF:
-	while (scan < patinend && patmatchrange(opnd, CHARREF(scan))) {
+	while (scan < patinend &&
+	       patmatchrange(opnd, CHARREF(scan, patinend))) {
+	    charstart[scan-patinput] = 1;
 	    count++;
-	    CHARINC(scan);
+	    CHARINC(scan, patinend);
     	}
 	break;
     case P_ANYBUT:
-	while (scan < patinend && !patmatchrange(opnd, CHARREF(scan))) {
+	while (scan < patinend &&
+	       !patmatchrange(opnd, CHARREF(scan, patinend))) {
+	    charstart[scan-patinput] = 1;
 	    count++;
-	    CHARINC(scan);
+	    CHARINC(scan, patinend);
     	}
 	break;
 #ifdef DEBUG
@@ -2846,237 +3211,3 @@
     if (prog && prog != dummy_patprog1 && prog != dummy_patprog2)
 	zfree(prog, prog->size);
 }
-
-/**/
-#ifdef ZSH_PAT_DEBUG
-
-/* Debugging stuff: print and test a regular expression */
-
-/* Dump a regexp onto stdout in vaguely comprehensible form */
-
-/**/
-static void
-patdump(Patprog r)
-{
-    char *s, *base, op = P_EXACTLY;
-    Upat up, codestart, next;
-
-    base = (char *)r;
-    s = base + r->startoff;
-
-    if (r->flags & PAT_PURES) {
-	printf("STRING:%s\n", (char *)s);
-    } else {
-	codestart = (Upat)s;
-	while (op != P_END) {
-	    up = (Upat)s;
-	    op = P_OP(up);
-	    printf("%2d%s", up-codestart, patprop(up));
-	    next = PATNEXT(up);
-	    printf("(%d)", next ? next-codestart : 0);
-	    s += sizeof(union upat);
-	    if (op == P_EXACTLY) {
-		long llen = *(long *)s;
-		s += sizeof(long);
-		while (llen--) {
-		    putchar(CHARREF(s));
-		    CHARINC(s);
-		}
-	    } else if (op == P_ANYOF || op == P_ANYBUT) {
-		while (*s != '\0') {
-		    if (itok(*s)) {
-			if (*s == Meta + PP_RANGE) {
-			    s++;
-			    printf("<RANGE:%c-", UNMETA(s));
-			    METAINC(s);
-			    printf("%c>", UNMETA(s));
-			} else {
-			    printf("<TYPE:%d>", *s - Meta);
-			    s++;
-			    continue;
-			}
-		    } else
-			putchar(UNMETA(s));
-		    METAINC(s);
-		}
-	    } else if (op == P_NUMRNG || op == P_NUMFROM || op == P_NUMTO) {
-		printf("%lu", (unsigned long)*(zrange_t *)s);
-		s += sizeof(zrange_t);
-		if (op == P_NUMRNG) {
-		    printf("-%lu", (unsigned long)*(zrange_t *)s);
-		    s += sizeof(zrange_t);
-		}
-	    } else if (op == P_GFLAGS) {
-		printf("%ld, %ld", (++up)->l & ~0xff, (++up)->l & 0xff);
-		s += sizeof(union upat);
-	    } else if (op == P_WBRANCH || op == P_EXCLUDE ||
-		       op == P_EXCLUDP) {
-		s += sizeof(union upat);
-	    }
-	    putchar('\n');
-	    s = base + (((s - base) + sizeof(union upat) - 1) &
-			~(sizeof(union upat) - 1));
-	}
-    }
-
-    printf("Total size = %ld\n", r->size);
-    if (r->patstartch)
-	printf("start `%c' ", r->patstartch);
-    if (!(r->flags & PAT_NOANCH))
-	printf("EOL-anchor ");
-    if (r->patnpar)
-	printf("%d active backreferences ", r->patnpar);
-    if (r->mustoff)
-	printf("must have \"%s\"", (char *)r + r->mustoff);
-    printf("\n");
-    if (r->globflags) {
-	printf("Globbing flags: ");
-	if (r->globflags & GF_LCMATCHUC)
-	    printf("LC matches UC ");
-	if (r->globflags & GF_IGNCASE)
-	    printf("Ignore case");
-	printf("\n");
-	if (r->globflags & 0xff)
-	    printf("Max errors = %d\n", r->globflags & 0xff);
-    }
-}
-
-/**/
-static char *
-patprop(Upat op)
-{
-    char *p = NULL;
-    static char buf[50];
-
-    strcpy(buf, ":");
-
-    switch(P_OP(op)) {
-    case P_ANY:
-	p = "ANY";
-	break;
-    case P_ANYOF:
-	p = "ANYOF";
-	break;
-    case P_ANYBUT:
-	p = "ANYBUT";
-	break;
-    case P_BRANCH:
-	p = "BRANCH";
-	break;
-    case P_WBRANCH:
-	p = "WBRANCH";
-	break;
-    case P_EXCLUDE:
-	p = "EXCLUDE";
-	break;
-    case P_EXCLUDP:
-	p = "EXCLUDP";
-	break;
-    case P_EXCSYNC:
-	p = "EXCSYNC";
-	break;
-    case P_EXCEND:
-	p = "EXCEND";
-	break;
-    case P_EXACTLY:
-	p = "EXACTLY";
-	break;
-    case P_GFLAGS:
-	p = "GFLAGS";
-	break;
-    case P_ISSTART:
-	p = "ISSTART";
-	break;
-    case P_ISEND:
-	p = "ISEND";
-	break;
-    case P_NOTHING:
-	p = "NOTHING";
-	break;
-    case P_BACK:
-	p = "BACK";
-	break;
-    case P_END:
-	p = "END";
-	break;
-    case P_OPEN:
-    case P_OPEN+1:
-    case P_OPEN+2:
-    case P_OPEN+3:
-    case P_OPEN+4:
-    case P_OPEN+5:
-    case P_OPEN+6:
-    case P_OPEN+7:
-    case P_OPEN+8:
-    case P_OPEN+9:
-	sprintf(buf+strlen(buf), "OPEN%ld", P_OP(op)-P_OPEN);
-	p = NULL;
-	break;
-    case P_CLOSE:
-    case P_CLOSE+1:
-    case P_CLOSE+2:
-    case P_CLOSE+3:
-    case P_CLOSE+4:
-    case P_CLOSE+5:
-    case P_CLOSE+6:
-    case P_CLOSE+7:
-    case P_CLOSE+8:
-    case P_CLOSE+9:
-	sprintf(buf+strlen(buf), "CLOSE%ld", P_OP(op)-P_CLOSE);
-	p = NULL;
-	break;
-    case P_STAR:
-	p = "STAR";
-	break;
-    case P_ONEHASH:
-	p = "ONEHASH";
-	break;
-    case P_TWOHASH:
-	p = "TWOHASH";
-	break;
-    case P_NUMRNG:
-	p = "NUMRNG";
-	break;
-    case P_NUMFROM:
-	p = "NUMFROM";
-	break;
-    case P_NUMTO:
-	p = "NUMTO";
-	break;
-    case P_NUMANY:
-	p = "NUMANY";
-	break;
-    default:
-	fprintf(stderr, "Bad opcode\n");
-	p = NULL;
-	break;
-    }
-    if (p)
-	strcat(buf, p);
-    return buf;
-}
-
-/**/
-int
-bin_patdebug(char *name, char **args, char *ops, int func)
-{
-    Patprog prog;
-    int ret = 0;
-
-    tokenize(*args);
-
-    if (!(prog = patcompile((char *)*args, 0, 0)))
-	return 1;
-    if (ops['p'] || !args[1]) {
-	patdump(prog);
-    }
-
-    while (*++args) {
-	if (!pattry(prog, (char *)*args))
-	    ret++;
-    }
-    return ret;
-}
-
-/**/
-#endif /* ZSH_PAT_DEBUG */
Index: Src/utils.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/utils.c,v
retrieving revision 1.119
diff -u -r1.119 utils.c
--- Src/utils.c	7 Mar 2006 21:31:35 -0000	1.119
+++ Src/utils.c	9 Apr 2006 21:33:24 -0000
@@ -2702,7 +2702,7 @@
     } else if (len == 1 && iascii(*outstr)) {
 	return iident(*outstr);
     } else {
-	/* not currently allowed, see above */
+	/* TODO: not currently allowed, see above */
 	return 0;
     }
 }
Index: Src/zsh.h
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/zsh.h,v
retrieving revision 1.87
diff -u -r1.87 zsh.h
--- Src/zsh.h	7 Mar 2006 22:05:45 -0000	1.87
+++ Src/zsh.h	9 Apr 2006 21:33:26 -0000
@@ -1161,6 +1161,7 @@
 #define GF_IGNCASE	0x0200
 #define GF_BACKREF	0x0400
 #define GF_MATCHREF	0x0800
+#define GF_MULTIBYTE	0x1000	/* Use multibyte if supported by build */
 
 /* Dummy Patprog pointers. Used mainly in executable code, but the
  * pattern code needs to know about it, too. */
@@ -1596,6 +1597,7 @@
     MARKDIRS,
     MENUCOMPLETE,
     MONITOR,
+    MULTIBYTE,
     MULTIOS,
     NOMATCH,
     NOTIFY,
@@ -1924,4 +1926,26 @@
 
 #define MB_INCOMPLETE	((size_t)-2)
 #define MB_INVALID	((size_t)-1)
+
+/*
+ * MB_CUR_MAX is the maximum number of bytes that a single wide
+ * character will convert into.  We use it to keep strings
+ * sufficiently long.  It should always be defined, but if it isn't
+ * just assume we are using Unicode which requires 6 characters.
+ * (Note that it's not necessarily defined to a constant.)
+ */
+#ifndef MB_CUR_MAX
+#define MB_CUR_MAX 6
+#endif
+
+/* Convert character or string to wide character or string */
+#define ZWC(c)	L ## c
+#define ZWS(s)	L ## s
+
+#else
+
+/* Leave character or string as is. */
+#define ZWC(c)	c
+#define ZWS(s)	s
+
 #endif
Index: Src/Zle/zle.h
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/Zle/zle.h,v
retrieving revision 1.29
diff -u -r1.29 zle.h
--- Src/Zle/zle.h	20 Mar 2006 15:22:58 -0000	1.29
+++ Src/Zle/zle.h	9 Apr 2006 21:33:26 -0000
@@ -33,20 +33,6 @@
 typedef wint_t   ZLE_INT_T;
 #define ZLE_CHAR_SIZE	sizeof(wchar_t)
 
-/*
- * MB_CUR_MAX is the maximum number of bytes that a single wide
- * character will convert into.  We use it to keep strings
- * sufficiently long.  It should always be defined, but if it isn't
- * just assume we are using Unicode which requires 6 characters.
- * (Note that it's not necessarily defined to a constant.)
- */
-#ifndef MB_CUR_MAX
-#define MB_CUR_MAX 6
-#endif
-
-/* Convert character or string to wide character or string */
-#define ZWC(c)	L ## c
-#define ZWS(s)	L ## s
 
 #define ZLEEOF	WEOF
 
@@ -96,10 +82,6 @@
 typedef int ZLE_INT_T;
 #define ZLE_CHAR_SIZE	sizeof(ZLE_CHAR_T)
 
-/* Leave character or string as is. */
-#define ZWC(c)	c
-#define ZWS(s)	s
-
 #define ZLEEOF	EOF
 
 /* Functions that operate on a ZLE_STRING_T. */

-- 
Peter Stephenson <p.w.stephenson@ntlworld.com>
Web page still at http://www.pwstephenson.fsnet.co.uk/


^ permalink raw reply	[relevance 1%]

* [ramk@cse.iitm.ernet.in: Bug#364708: zsh: Recognizing --no-status option in mpc completion]
@ 2006-04-26  4:34  3% Clint Adams
  0 siblings, 0 replies; 200+ results
From: Clint Adams @ 2006-04-26  4:34 UTC (permalink / raw)
  To: zsh-workers

Committing this.

----- Forwarded message from "R.Ramkumar" <ramk@cse.iitm.ernet.in> -----

This is a trivial patch to _mpc for completing the --no-status
option which was recently added to the program. Here's the patch:




Content-Description: Patch to recognize --no-status option in mpc completion
--- _mpc.orig	2006-04-24 21:15:33.000000000 +0530
+++ _mpc	2006-04-24 18:48:35.000000000 +0530
@@ -228,5 +228,6 @@
 }
 
 _arguments \
-  '--format:format string' \
+  '--format[specify the format of song display]:format string' \
+  '--no-status[prevent printing song status on completion]' \
   '*::mpc command:_mpc_command'


Regards,
Ramkumar.

-- System Information:
Debian Release: testing/unstable
  APT prefers testing
  APT policy: (101, 'testing')
Architecture: i386 (i686)
Shell:  /bin/sh linked to /bin/dash
Kernel: Linux 2.6.16-beyond2
Locale: LANG=en_IN, LC_CTYPE=en_IN (charmap=UTF-8)

Versions of packages zsh depends on:
ii  debconf [debconf-2.0]         1.4.72     Debian configuration management sy
ii  libc6                         2.3.6-7    GNU C Library: Shared libraries
ii  libncurses5                   5.5-1.1    Shared libraries for terminal hand

Versions of packages zsh recommends:
ii  libcap1                       1:1.10-14  support for getting/setting POSIX.
ii  libpcre3                      6.4-1.1    Perl 5 Compatible Regular Expressi

-- no debconf information

-- 
WARN_(accel)("msg null; should hang here to be win compatible\n");
                                   -- WINE source code


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


^ permalink raw reply	[relevance 3%]

* PATCH: _mount (updates & fixes)
@ 2006-05-28 18:39  4% Clint Adams
  0 siblings, 0 replies; 200+ results
From: Clint Adams @ 2006-05-28 18:39 UTC (permalink / raw)
  To: zsh-workers

>From R.Ramkumar.

Index: _mount
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/Unix/Command/_mount,v
retrieving revision 1.23
diff -u -r1.23 _mount
--- _mount	5 Dec 2005 14:22:53 -0000	1.23
+++ _mount	28 May 2006 18:38:51 -0000
@@ -40,7 +40,7 @@
 # are below these table.
 
 local curcontext="$curcontext" state line expl suf ret=1
-local args deffs=iso9660 tmp typeops=-t _fs_any _nfs_access _fs_nfs _nfs_ufs \
+local args deffs=iso9660 tmp typeops=-t _nfs_access _fs_nfs _nfs_ufs \
 _fs_ufs _fs_efs _fs_iso9660 _fs_cachefs _fs_s5fs _fs_tmpfs _fs_pcfs _fs_hsfs \
 _fs_advfs _fs_cdfs _fs_affs _fs_ext2 _fs_fat _fs_ext3 _fs_msdos _fs_umsdos \
 _fs_vfat _fs_hpfs _fs_ntfs _fs_reiserfs _fs_smbfs _fs_xfs _fs_std _fs_devfs \
@@ -50,6 +50,8 @@
 
 if (( ! $+_fs_any )); then
 
+  local _fs_any
+
   # These are tables describing the possible values and their
   # arguments for the `-o' option. There is one array per 
   # file system type (only for those that accept more values
@@ -95,7 +97,7 @@
   _nfs_ufs=(
     '(nodev)dev[interpret devices]'
     "(dev)nodev[don't interpret devices]"
-    '(nosuid)suid[use suid and sgib bits]'
+    '(nosuid)suid[use suid and sgid bits]'
     '(suid)nosuid[ignore suid and sgid bits]'
     '(nosync)sync[do I/O synchronously]'
     '(sync)nosync[do all I/O asynchronously]'
@@ -210,7 +212,7 @@
     _fs_s5fs=(
       'remount[remount file system]'
       '(suid)nosuid[ignore suid and sgid bits]'
-      '(nosuid)suid[use suid and sgib bits]'
+      '(nosuid)suid[use suid and sgid bits]'
     )
     _fs_ufs=(
       "(atime)noatime[don't update access time]"
@@ -303,20 +305,19 @@
     _fs_any=(
       '(sync)async[do all I/O asynchronously]'
       '(noatime)atime[update access time]'
-      '(noauto)auto[can be mounted with -a]'
-      '(rw suid dev exec auto nouser async)defaults[use default options]'
+      '(rw suid dev exec async)defaults[use default options]'
       '(nodev)dev[interpret devices]'
       '(noexec)exec[permit execution of binaries]'
+      '(nomand)mand[allow mandatory locks]'
       "(atime)noatime[don't update access time]"
-      '(auto)noauto[can only be mounted explicitly]'
       "(dev)nodev[don't interpret devices]"
       "(exec)noexec[don't allow execution of binaries]"
+      "(mand)nomand[don'tallow mandatory locks]"
       '(suid)nosuid[ignore suid and sgid bits]'
-      '(user)nouser[can only be mounted by root]'
       'remount[mount already mounted file system]'
       '(rw)ro[mount file system read-only]'
       '(ro)rw[mount file system read-write]'
-      '(nosuid)suid[use suid and sgib bits]'
+      '(nosuid)suid[use suid and sgid bits]'
       '(async)sync[do I/O synchronously]'
       'dirsync[perform directory updates synchronously]'
       'loop[use loopback device]:loopback device:_files'
@@ -324,6 +325,12 @@
       'keybits[set number of bits in encryption key]:key size:(64 128 160 192 256)'
       'offset[specify data start for loopback mount]:offset (bytes)'
     )
+    _fs_adfs=(
+      'uid[set owner of root]:user ID'
+      'gid[set group of root]:group ID'
+      'ownmask[permission mask for ADFS "owner" permissions]:mask (octal)'
+      'othmask[permission mask for ADFS "other" permissions]:mask (octal)'
+    )
     _fs_affs=(
       'uid[set owner of root]:user ID'
       'gid[set group of root]:group ID'
@@ -339,7 +346,14 @@
       'root[specify location of the root block]:root block location'
       'bs[specify block size]:block size:(512 1024 2048 4192)'
     )
+    _fs_devpts=(
+      "uid[set owner of newly created pty's]:user ID"
+      "gid[set group of newly created pty's]:group ID"
+      "mode[set mode of newly created pty's]:file permission bits"
+    )
     _fs_ext2=(
+      '(noacl)acl[support POSIX access control lists]'
+      '(acl)noacl[do not support POSIX access control lists]'
       '(minixdf)bsddf[select bsddf behavior]'
       '(bsddf)minixdf[select bsddf behavior]'
       '(nocheck)check[set checking level]::checking level:((normal\:check\ inode\ and\ block\ bitmaps\ on\ mount strict\:check\ on block\ deallocation none\:no\ checking))'
@@ -349,10 +363,15 @@
       '(grpid nogrpid sysvgroups)bsdgroups[new file gets group ID of directory]'
       '(grpid bsdgroups sysvgroups)nogrpid[new file gets fsgid of current process]'
       '(grpid bsdgroups nogrpid)sysvgroups[new file gets fsgid of current process]'
+      'nobh[do not attach buffer_heads to file pagecache]'
+      'nouid32[disable 32-bit UIDs and GIDs]'
+      '(orlov)oldalloc[use old allocator for new inodes]'
+      '(oldalloc)orlov[use orlov allocator for new inodes]'
       'resgid[specify access to reserved space (group ID)]:group ID'
       'resuid[specify access to reserved space (user ID)]:user ID'
       'sb[specify super block number]:super block number'
-      'nouid32[disable 32-bit UIDs and GIDs]'
+      '(nouser_xattr)user_xattr[support user extended attributes]'
+      '(user_xattr)nouser_xattr[do not support user extended attributes]'
     )
     _fs_fat=(
       'blocksize[specify block size]:block size:(512 1024 2048)'
@@ -377,6 +396,7 @@
       'journal[update fs journal]:update or inode number:(update)'
       'noload[do not load journal]'
       'data[specify mode for data]:journalling mode:(journal ordered writeback)'
+      'commit[specify commit sync interval for data and metadata]:seconds'
     )
     _fs_msdos=( "$_fs_fat[@]" )
     _fs_umsdos=( "$_fs_fat[@]" )
@@ -387,6 +407,16 @@
       '(uni_xlate)utf8[mount the filesystem in UTF8 mode]'
       'shortname[specify handling of 8.3 filenames]:mode:(lower win95 winnt mixed)'
     )
+    _fs_hfs=(
+      'creator[specify creator value]:creator'
+      'type[specify type value]:type'
+      'umask[specify umask]:umask value (octal)'
+      'dir_umask[specify umask for directories only]:umask value (octal)'
+      'file_umask[specify umask for files only]:umask value (octal)'
+      'session[specify CDROM session to mount]:session'
+      'part[specify partition number from device to use]:part'
+      'quiet[do not complain about invalid mount options]'
+    )
     _fs_hpfs=(
       'uid[specify user ID of all files]:user ID'
       'gid[specify group ID of all files]:group ID'
@@ -411,6 +441,13 @@
       'iocharset[character set when converting from 8 bit to unicode (Joliet)]:character set'
       'utf8[mount the filesystem in UTF8 mode (Joliet)]'
     )
+    _fs_jfs=(
+      'iocharset[character set when converting from unicode to ascii]:character set'
+      'resize[resize volume to specified number of blocks]:blocks'
+      '(integrity)nointegrity[do not write to the journal]'
+      '(nointegrity)integrity[commit metadata changes to the journal]'
+      'errors[specify behavior on error]:error behavior:((continue\:ignore\ errors remount-ro\:remount\ file\ system\ read-only panic\:panic\ and\ halt\ system))'
+    )
     _fs_ntfs=(
       'iocharset[character set to use when returning file names]:character set'
       '(uni_xlate)utf8[use UTF-8 for converting file names]'
@@ -419,7 +456,7 @@
       'uid[specify user ID of all files]:user ID'
       'gid[specify group ID of all files]:group ID'
       'umask[specify umask]:umask value (octal)'
-    )      
+    )
     _fs_reiserfs=(
       'conv[mount 3.5 fs using 3.6 format for new objects]'
       'hash[choose hash type]:hash function:(rupasov tea r5 detect)'
@@ -444,6 +481,7 @@
       'umask[specify umask]:umask value (octal)'
       'unhide[show hidden and associated files]'
       'undelete[show deleted files]'
+      'nostrict[unset strict conformance]'
       'bs[set the block size]:block size:2048'
       'novrs[skip volume sequence recognition]'
       'session[set the CDROM session]:session'
@@ -454,6 +492,17 @@
       'ufstype[set ufs type]:ufs type:(old 44bsd sun sunx86 nextstep nextstep-cd openstep)'
       'onerror[set behaviour on error]:behaviour on error:(panic lock umount repair)'
     )
+    _fs_usbfs=(
+      'devuid[set owner of device files]:user ID'
+      'devgid[set group of device files]:group ID'
+      'devmode[set mode of device files]:file permission bits'
+      'busuid[set owner of bus directories]:user ID'
+      'busgid[set group of bus directories]:group ID'
+      'busmode[set mode of bus directories]:file permission bits'
+      'listuid[set owner of file devices]:user ID'
+      'listgid[set group of file devices]:group ID'
+      'listmode[set mode of file devices]:file permission bits'
+    )
     _fs_xfs=(
       'biosize[specify preferred buffered I/O size]:base 2 logarithm:((13:8K 14:16K 15:32K 16:64K))'
       '(xdsm)dmapi[enable DMAPI event callouts]'
@@ -465,6 +514,7 @@
       'noalign[do not align data allocations at stripe unit boundaries]'
       'noatime[do not update atime on reads]'
       'norecovery[do not run log recovery]'
+      'nouuid[ignore the filesystem uuid]'
       'osyncisdsync[make O_SYNC behave as O_DSYNC]'
       '(usrquota uqnoenforce)quota[enable user quotas]'
       '(quota uqnoenforce)usrquota[enable user quotas]'
@@ -696,6 +746,7 @@
 	"(-V -h)-n[don't write /etc/mtab]"
 	'(-V -h)-r[remount read-only on failure]'
 	'(-V -h)-d[for loopback mount, free loop device]'
+        "(-V -h)-i[don't call /sbin/umount.<fs> helper]"
 	'(-V -h *)-a[unmount all file systems from /etc/mtab]'
 	'(-V -h)-t[specify file system type]:file system type:_file_systems'
 	'(-V -h *)-O[with -a, restrict filesystems by options]:file system option:->fsopt'
@@ -798,7 +849,7 @@
   esac
   ;;
 udevordir)
-  local dev_tmp mp_tmp mline
+  local dev_tmp dpath_tmp mp_tmp mline
 
   case "$OSTYPE" in
   linux*|irix*)
@@ -814,8 +865,11 @@
     ;;
   esac
 
+  dpath_tmp=( "${(@M)dev_tmp:#/*}" )
+  dev_tmp=( "${(@)dev_tmp:#/*}" )
+
   _alternative \
-    'devices:device:compadd -a dev_tmp' \
+    'device-labels:device label:compadd -a dev_tmp' \
     'directories:mount point:compadd -a mp_tmp' && ret=0
   ;;
 esac


^ permalink raw reply	[relevance 4%]

* Questions about character types
@ 2006-07-05 12:14  3% Peter Stephenson
  2006-07-05 16:31  3% ` Bart Schaefer
  0 siblings, 1 reply; 200+ results
From: Peter Stephenson @ 2006-07-05 12:14 UTC (permalink / raw)
  To: Zsh hackers list

I'm just looking at handling character types consistently for multibyte
characters.

The most important issue is what to allow in identifiers (which usually
means parameter names).  The traditional zsh behaviour is to allow all
non-ASCII characters.  Now we can do it properly, it makes sense to
limit these to alphanumerics; this isn't portable, but allowing all
8-bit characters as before seems too gross to continue.  However,
according to POSIX, only characters from the "portable character set",
which in our case means the ASCII subset, are allowed.  The only way
round this I can see is to add an option POSIX_IDENTIFIERS to limit the
behaviour.  I would use an existing option if one seemed relevant but it
doesn't.

The test for module names currently approximates that for identifiers,
only allowing / as well, so I think using the same logic as above would
be the obvious thing to do.

Another question is what to do with user names.  Currently these are
just the ASCII identifier characters plus "-".  Is it useful to extend
these to include alphanumeric characters from the local character set?

Finally, I failed to interpret this code from math.c:

	    if (*ptr == '+' && (unary || !ialnum(*ptr))) {
		ptr++;
		return (unary) ? PREPLUS : POSTPLUS;
	    }

I don't see how ialnum(*ptr) could succeed.  What does this mean?

-- 
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


To access the latest news from CSR copy this link into a web browser:  http://www.csr.com/email_sig.php


^ permalink raw reply	[relevance 3%]

* Re: Questions about character types
  2006-07-05 12:14  3% Questions about character types Peter Stephenson
@ 2006-07-05 16:31  3% ` Bart Schaefer
  2006-07-10 12:51  2%   ` Peter Stephenson
  0 siblings, 1 reply; 200+ results
From: Bart Schaefer @ 2006-07-05 16:31 UTC (permalink / raw)
  To: Zsh hackers list

On Jul 5,  1:14pm, Peter Stephenson wrote:
}
} according to POSIX, only characters from the "portable character set",
} which in our case means the ASCII subset, are allowed.  The only way
} round this I can see is to add an option POSIX_IDENTIFIERS

Seems OK to me.

} The test for module names currently approximates that for identifiers,
} only allowing / as well, so I think using the same logic as above would
} be the obvious thing to do.

Agreed.

} Another question is what to do with user names.  Currently these are
} just the ASCII identifier characters plus "-".  Is it useful to extend
} these to include alphanumeric characters from the local character set?

My impression is that it would be, but some non-English-speakers should
weigh in.

} Finally, I failed to interpret this code from math.c:
} 
} 	    if (*ptr == '+' && (unary || !ialnum(*ptr))) {
} 		ptr++;

I suspect that's a bug.  It probably originally said

	    if (*ptr++ == '+' && (unary || !ialnum(*ptr))) {

but someone realized it was wrong to increment the pointer if it was NOT
equal to plus, and made an incomplete fix.


^ permalink raw reply	[relevance 3%]

* Re: Questions about character types
  2006-07-05 16:31  3% ` Bart Schaefer
@ 2006-07-10 12:51  2%   ` Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2006-07-10 12:51 UTC (permalink / raw)
  To: Zsh hackers list

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 25958 bytes --]

Bart Schaefer wrote:
> } Another question is what to do with user names.  Currently these are
> } just the ASCII identifier characters plus "-".  Is it useful to extend
> } these to include alphanumeric characters from the local character set?
> 
> My impression is that it would be, but some non-English-speakers should
> weigh in.

I've allowed it; it's particularly useful if you're using the extended
parameter naming rules and the reference is to a named directory.

> } Finally, I failed to interpret this code from math.c:
> } 
> } 	    if (*ptr == '+' && (unary || !ialnum(*ptr))) {
> } 		ptr++;
> 
> I suspect that's a bug.  It probably originally said
> 
> 	    if (*ptr++ == '+' && (unary || !ialnum(*ptr))) {
> 
> but someone realized it was wrong to increment the pointer if it was NOT
> equal to plus, and made an incomplete fix.

I've just assumed this is "&& 1" which is how it's evaluated as far back
as the CVS archive goes without any obvious problems, and hence removed
it.

Here is the patch.  The MULTIBYTE and POSIX_IDENTIFIERS options should
be respected whenever necessary when testing character types.

There's one remaining big job:  I have not yet fixed up IFS to handle
multibyte characters (also isep() and ISEP macros).  That looks a little
messy in places.

The other remaining cases I'm aware of where we still don't test for
multibyte characters should be harmless:
- Some idigit()s.  I don't see any good reason for allowing active
  multibyte digit characters in numerical expressions (for example,
  extra width digits), so anywhere a real digit (rather than just
  a printable character that happens to look like a digit) is required
  it must be 0 to 9 from the portable character set.
- Likewise some iblank()s when inputting text.  Whitespace has to
  be portable whitespace.
- One ialpha() when checking options to builtins, since
  all option letters come from the portable character set.

Index: README
===================================================================
RCS file: /cvsroot/zsh/zsh/README,v
retrieving revision 1.33
diff -u -r1.33 README
--- README	26 Jun 2006 09:57:17 -0000	1.33
+++ README	10 Jul 2006 12:49:17 -0000
@@ -50,11 +50,23 @@
 subsequently by the user.  It is valid for the variable to be unset.
 
 Zsh has previously been lax about whether it allows octets with the
-top bit set to be part of a shell identifier.  With --enable-multibyte set,
-this is now completely disabled.  This is a temporary fix until the main
-shell handles multibyte characters properly and the appropriate library
-tests can be used.  This change may be reviewed if no such permanent fix
-is forthcoming.
+top bit set to be part of a shell identifier.  Older versions of the shell
+assumed all such octets were allowed in identifiers, however the POSIX
+standard does not allow such characters in identifiers.  The older
+behaviour is still obtained with --disable-multibyte in effect.
+With --enable-multibyte set there are three possible cases:
+  MULTIBYTE option unset:  only ASCII characters are allowed; the
+    shell does not attempt to identify non-ASCII characters at all.
+  MULTIBYTE option set, POSIX_IDENTIFIERS option unset: in addition
+    to the POSIX characters, any alphanumeric characters in the
+    local character set are allowed.  Note that scripts and functions that
+    take advantage of this are non-portable; however, this is in the spirit
+    of previous versions of the shell.  Note also that the options must
+    be set before the shell parses the script or function; setting
+    them during execution is not sufficient.
+  MULITBYTE option set, POSIX_IDENTIFIERS set:  only ASCII characters
+    are allowed in identifiers even though the shell will recognise
+    alphanumeric multibyte characters.
 
 The completion style pine-directory must now be set to use completion
 for PINE mailbox folders; previously it had the default ~/mail.  This
Index: Doc/Zsh/options.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Zsh/options.yo,v
retrieving revision 1.46
diff -u -r1.46 options.yo
--- Doc/Zsh/options.yo	9 Apr 2006 21:47:22 -0000	1.46
+++ Doc/Zsh/options.yo	10 Jul 2006 12:49:18 -0000
@@ -1204,6 +1204,27 @@
 tt(trap) and
 tt(unset).
 )
+pindex(POSIX_IDENTIFIERS)
+cindex(identifiers, non-portable characters in)
+cindex(parameter names, non-portable characters in)
+item(tt(POSIX_IDENTIFIERS) <K> <S>)(
+When this option is set, only the ASCII characters tt(a) to tt(z), tt(A) to
+tt(Z), tt(0) to tt(9) and tt(_) may be used in identifiers (names
+of shell parameters and modules).
+
+When the option is unset and multibyte character support is enabled (i.e. it
+is compiled in and the option tt(MULTIBYTE) is set), then additionally any
+alphanumeric characters in the local character set may be used in
+identifiers.  Note that scripts and functions written with this feature are
+not portable, and also that both options must be set before the script
+or function is parsed; setting them during execution is not sufficient
+as the syntax var(variable)tt(=)var(value) has already been parsed as
+a command rather than an assignment.
+
+If multibyte character support is not compiled into the shell this option is
+ignored; all octets with the top bit set may be used in identifiers.
+This is non-standard but is the traditional zsh behaviour.
+)
 pindex(SH_FILE_EXPANSION)
 cindex(sh, expansion style)
 cindex(expansion style, sh)
Index: Src/builtin.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/builtin.c,v
retrieving revision 1.158
diff -u -r1.158 builtin.c
--- Src/builtin.c	30 May 2006 22:35:03 -0000	1.158
+++ Src/builtin.c	10 Jul 2006 12:49:20 -0000
@@ -2629,9 +2629,7 @@
 	    char *modname = NULL;
 	    char *ptr;
 
-	    for (ptr = funcname; *ptr; ptr++)
-		if (!iident(*ptr))
-		    break;
+	    ptr = itype_end(funcname, IIDENT, 0);
 	    if (idigit(*funcname) || funcname == ptr || *ptr) {
 		zwarnnam(name, "-M %s: bad math function name", funcname);
 		return 1;
Index: Src/glob.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/glob.c,v
retrieving revision 1.51
diff -u -r1.51 glob.c
--- Src/glob.c	30 May 2006 22:35:03 -0000	1.51
+++ Src/glob.c	10 Jul 2006 12:49:21 -0000
@@ -1443,9 +1443,7 @@
 
 		    if (s[-1] == '+') {
 			plus = 0;
-			tt = s;
-			while (iident(*tt))
-			    tt++;
+			tt = itype_end(s, IIDENT, 0);
 			if (tt == s)
 			{
 			    zerr("missing identifier after `+'");
Index: Src/lex.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/lex.c,v
retrieving revision 1.33
diff -u -r1.33 lex.c
--- Src/lex.c	30 May 2006 22:35:03 -0000	1.33
+++ Src/lex.c	10 Jul 2006 12:49:22 -0000
@@ -1135,10 +1135,13 @@
 		if (idigit(*t))
 		    while (++t < bptr && idigit(*t));
 		else {
-		    while (iident(*t) && ++t < bptr);
+		    int sav = *bptr;
+		    *bptr = '\0';
+		    t = itype_end(t, IIDENT, 0);
 		    if (t < bptr) {
-			*bptr = '\0';
 			skipparens(Inbrack, Outbrack, &t);
+		    } else {
+			*bptr = sav;
 		    }
 		}
 		if (*t == '+')
Index: Src/math.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/math.c,v
retrieving revision 1.25
diff -u -r1.25 math.c
--- Src/math.c	30 Jun 2006 09:41:35 -0000	1.25
+++ Src/math.c	10 Jul 2006 12:49:22 -0000
@@ -265,11 +265,12 @@
 {
     int cct = 0;
     yyval.type = MN_INTEGER;
+    char *ie;
 
     for (;; cct = 0)
 	switch (*ptr++) {
 	case '+':
-	    if (*ptr == '+' && (unary || !ialnum(*ptr))) {
+	    if (*ptr == '+') {
 		ptr++;
 		return (unary) ? PREPLUS : POSTPLUS;
 	    }
@@ -279,7 +280,7 @@
 	    }
 	    return (unary) ? UPLUS : PLUS;
 	case '-':
-	    if (*ptr == '-' && (unary || !ialnum(*ptr))) {
+	    if (*ptr == '-') {
 		ptr++;
 		return (unary) ? PREMINUS : POSTMINUS;
 	    }
@@ -469,12 +470,12 @@
 		}
 		cct = 1;
 	    }
-	    if (iident(*ptr)) {
+	    if ((ie = itype_end(ptr, IIDENT, 0)) != ptr) {
 		int func = 0;
 		char *p;
 
 		p = ptr;
-		while (iident(*++ptr));
+		ptr = ie;
 		if (*ptr == '[' || (!cct && *ptr == '(')) {
 		    char op = *ptr, cp = ((*ptr == '[') ? ']' : ')');
 		    int l;
Index: Src/module.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/module.c,v
retrieving revision 1.22
diff -u -r1.22 module.c
--- Src/module.c	30 May 2006 22:35:03 -0000	1.22
+++ Src/module.c	10 Jul 2006 12:49:23 -0000
@@ -734,12 +734,8 @@
 modname_ok(char const *p)
 {
     do {
-	if(*p != '_' && !ialnum(*p))
-	    return 0;
-	do {
-	    p++;
-	} while(*p == '_' || ialnum(*p));
-	if(!*p)
+	p = itype_end(p, IIDENT, 0);
+	if (!*p)
 	    return 1;
     } while(*p++ == '/');
     return 0;
Index: Src/options.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/options.c,v
retrieving revision 1.28
diff -u -r1.28 options.c
--- Src/options.c	30 May 2006 22:35:03 -0000	1.28
+++ Src/options.c	10 Jul 2006 12:49:23 -0000
@@ -176,6 +176,7 @@
 {{NULL, "overstrike",	      0},			 OVERSTRIKE},
 {{NULL, "pathdirs",	      OPT_EMULATE},		 PATHDIRS},
 {{NULL, "posixbuiltins",      OPT_EMULATE|OPT_BOURNE},	 POSIXBUILTINS},
+{{NULL, "posixidentifiers",   OPT_EMULATE|OPT_BOURNE},	 POSIXIDENTIFIERS},
 {{NULL, "printeightbit",      0},                        PRINTEIGHTBIT},
 {{NULL, "printexitvalue",     0},			 PRINTEXITVALUE},
 {{NULL, "privileged",	      OPT_SPECIAL},		 PRIVILEGED},
Index: Src/params.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/params.c,v
retrieving revision 1.116
diff -u -r1.116 params.c
--- Src/params.c	27 Jun 2006 16:28:46 -0000	1.116
+++ Src/params.c	10 Jul 2006 12:49:24 -0000
@@ -899,9 +899,7 @@
 		break;
     } else {
 	/* Find the first character in `s' not in the iident type table */
-	for (ss = s; *ss; ss++)
-	    if (!iident(*ss))
-		break;
+	ss = itype_end(s, IIDENT, 0);
     }
 
     /* If the next character is not [, then it is *
@@ -1653,7 +1651,7 @@
 mod_export Value
 fetchvalue(Value v, char **pptr, int bracks, int flags)
 {
-    char *s, *t;
+    char *s, *t, *ie;
     char sav, c;
     int ppar = 0;
 
@@ -1665,9 +1663,8 @@
 	else
 	    ppar = *s++ - '0';
     }
-    else if (iident(c))
-	while (iident(*s))
-	    s++;
+    else if ((ie = itype_end(s, IIDENT, 0)) != s)
+	s = ie;
     else if (c == Quest)
 	*s++ = '?';
     else if (c == Pound)
@@ -1732,7 +1729,7 @@
 		return v;
 	    }
 	} else if (!(flags & SCANPM_ASSIGNING) && v->isarr &&
-		   iident(*t) && isset(KSHARRAYS))
+		   itype_end(t, IIDENT, 1) != t && isset(KSHARRAYS))
 	    v->end = 1, v->isarr = 0;
     }
     if (!bracks && *s)
Index: Src/parse.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/parse.c,v
retrieving revision 1.56
diff -u -r1.56 parse.c
--- Src/parse.c	9 Jul 2006 14:47:22 -0000	1.56
+++ Src/parse.c	10 Jul 2006 12:49:26 -0000
@@ -1603,10 +1603,7 @@
 
 		if (*ptr == Outbrace && ptr > tokstr + 1)
 		{
-		    while (--ptr > tokstr)
-			if (!iident(*ptr))
-			    break;
-		    if (ptr == tokstr)
+		    if (itype_end(tokstr, IIDENT, 0) >= ptr - 1)
 		    {
 			char *toksave = tokstr;
 			char *idstring = dupstrpfx(tokstr+1, eptr-tokstr-1);
Index: Src/subst.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/subst.c,v
retrieving revision 1.53
diff -u -r1.53 subst.c
--- Src/subst.c	28 Jun 2006 14:34:27 -0000	1.53
+++ Src/subst.c	10 Jul 2006 12:49:28 -0000
@@ -475,15 +475,14 @@
 		return 0;
 	    *namptr = dyncat(ds, ptr);
 	    return 1;
-	} else if (iuser(str[1])) {   /* ~foo */
-	    char *ptr, *hom, save;
+	} else if ((ptr = itype_end(str+1, IUSER, 0)) != str+1) {   /* ~foo */
+	    char *hom, save;
 
-	    for (ptr = ++str; *ptr && iuser(*ptr); ptr++);
 	    save = *ptr;
 	    if (!isend(save))
 		return 0;
 	    *ptr = 0;
-	    if (!(hom = getnameddir(str))) {
+	    if (!(hom = getnameddir(++str))) {
 		if (isset(NOMATCH))
 		    zerr("no such user or named directory: %s", str);
 		*ptr = save;
@@ -1146,9 +1145,10 @@
      * Shouldn't this be a table or something?  We test for all
      * these later on, too.
      */
-    if (!ialnum(c = *s) && c != '#' && c != Pound && c != '-' &&
-	c != '!' && c != '$' && c != String && c != Qstring &&
-	c != '?' && c != Quest && c != '_' &&
+    c = *s;
+    if (itype_end(s, IIDENT, 1) == s && *s != '#' && c != Pound &&
+	c != '-' && c != '!' && c != '$' && c != String && c != Qstring &&
+	c != '?' && c != Quest &&
 	c != '*' && c != Star && c != '@' && c != '{' &&
 	c != Inbrace && c != '=' && c != Equals && c != Hat &&
 	c != '^' && c != '~' && c != Tilde && c != '+') {
@@ -1446,8 +1446,8 @@
 	    } else
 		spbreak = 2;
 	} else if ((c == '#' || c == Pound) &&
-		   (iident(cc = s[1])
-		    || cc == '*' || cc == Star || cc == '@'
+		   (itype_end(s+1, IIDENT, 0) != s + 1
+		    || (cc = s[1]) == '*' || cc == Star || cc == '@'
 		    || cc == '-' || (cc == ':' && s[2] == '-')
 		    || (isstring(cc) && (s[2] == Inbrace || s[2] == Inpar)))) {
 	    getlen = 1 + whichlen, s++;
@@ -1471,7 +1471,7 @@
 	     * Try to handle this when parameter is named
 	     * by (P) (second part of test).
 	     */
-	    if (iident(s[1]) || (aspar && isstring(s[1]) &&
+	    if (itype_end(s+1, IIDENT, 0) != s+1 || (aspar && isstring(s[1]) &&
 				 (s[2] == Inbrace || s[2] == Inpar)))
 		chkset = 1, s++;
 	    else if (!inbrace) {
Index: Src/utils.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/utils.c,v
retrieving revision 1.126
diff -u -r1.126 utils.c
--- Src/utils.c	30 Jun 2006 09:41:35 -0000	1.126
+++ Src/utils.c	10 Jul 2006 12:49:29 -0000
@@ -1921,7 +1921,7 @@
 	return;
     if (**s == String && !*t) {
 	guess = *s + 1;
-	if (*t || !ialpha(*guess))
+	if (itype_end(guess, IIDENT, 1) == guess)
 	    return;
 	ic = String;
 	d = 100;
@@ -2750,11 +2750,8 @@
  * iident() macro extended to support wide characters.
  *
  * The macro is intended to test if a character is allowed in an
- * internal zsh identifier.  Until the main shell handles multibyte
- * characters it's not a good idea to allow characters other than
- * ASCII characters; it would cause zle to allow characters that
- * the main shell would reject.  Eventually we should be able
- * to allow all alphanumerics.
+ * internal zsh identifier.  We allow all alphanumerics outside
+ * the ASCII range unless POSIXIDENTIFIERS is set.
  *
  * Otherwise similar to wcsiword.
  */
@@ -2774,14 +2771,90 @@
     } else if (len == 1 && iascii(*outstr)) {
 	return iident(*outstr);
     } else {
-	/* TODO: not currently allowed, see above */
-	return 0;
+	return !isset(POSIXIDENTIFIERS) && iswalnum(c);
     }
 }
 /**/
 #endif
 
 
+/*
+ * Find the end of a set of characters in the set specified by itype;
+ * one of IALNUM, IIDENT, IWORD or IUSER.  For non-ASCII characters, we assume
+ * alphanumerics are part of the set, with the exception that
+ * identifiers are not treated that way if POSIXIDENTIFIERS is set.
+ *
+ * See notes above for identifiers.
+ * Returns the same pointer as passed if not on an identifier character.
+ * If "once" is set, just test the first character, i.e. (outptr !=
+ * inptr) tests whether the first character is valid in an identifier.
+ *
+ * Currently this is only called with itype IIDENT or IUSER.
+ */
+
+/**/
+mod_export char *
+itype_end(const char *ptr, int itype, int once)
+{
+#ifdef MULTIBYTE_SUPPORT
+    if (isset(MULTIBYTE) &&
+	(itype != IIDENT || !isset(POSIXIDENTIFIERS))) {
+	mb_metacharinit();
+	while (*ptr) {
+	    wint_t wc;
+	    int len = mb_metacharlenconv(ptr, &wc);
+
+	    if (!len)
+		break;
+
+	    if (wc == WEOF) {
+		/* invalid, treat as single character */
+		int chr = STOUC(*ptr == Meta ? ptr[1] ^ 32 : *ptr);
+		/* in this case non-ASCII characters can't match */
+		if (chr > 127 || !zistype(chr,itype))
+		    break;
+	    } else if (len == 1 && iascii(*ptr)) {
+		/* ASCII: can't be metafied, use standard test */
+		if (!zistype(*ptr,itype))
+		    break;
+	    } else {
+		/*
+		 * Valid non-ASCII character.  Allow all alphanumerics;
+		 * if testing for words, allow all wordchars.
+		 */
+		if (!(iswalnum(wc) ||
+		      (itype == IWORD && wcschr(wordchars_wide, wc))))
+		    break;
+	    }
+	    ptr += len;
+
+	    if (once)
+		break;
+	}
+    } else
+#endif
+	for (;;) {
+	    int chr = STOUC(*ptr == Meta ? ptr[1] ^ 32 : *ptr);
+	    if (!zistype(chr,itype))
+		break;
+	    ptr += (*ptr == Meta) ? 2 : 1;
+
+	    if (once)
+		break;
+	}
+
+    /*
+     * Nasty.  The first argument is const char * because we
+     * don't modify it here.  However, we really want to pass
+     * back the same type as was passed down, to allow idioms like
+     *   p = itype_end(p, IIDENT, 0);
+     * So returning a const char * isn't really the right thing to do.
+     * Without having two different functions the following seems
+     * to be the best we can do.
+     */
+    return (char *)ptr;
+}
+
 /**/
 mod_export char **
 arrdup(char **s)
@@ -3710,9 +3783,10 @@
 
 /**/
 int
-mb_metacharlenconv(char *s, wint_t *wcp)
+mb_metacharlenconv(const char *s, wint_t *wcp)
 {
-    char inchar, *ptr;
+    char inchar;
+    const char *ptr;
     size_t ret;
     wchar_t wc;
 
Index: Src/zsh.h
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/zsh.h,v
retrieving revision 1.92
diff -u -r1.92 zsh.h
--- Src/zsh.h	9 Jul 2006 14:47:22 -0000	1.92
+++ Src/zsh.h	10 Jul 2006 12:49:30 -0000
@@ -1610,6 +1610,7 @@
     OVERSTRIKE,
     PATHDIRS,
     POSIXBUILTINS,
+    POSIXIDENTIFIERS,
     PRINTEIGHTBIT,
     PRINTEXITVALUE,
     PRIVILEGED,
Index: Src/ztype.h
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/ztype.h,v
retrieving revision 1.3
diff -u -r1.3 ztype.h
--- Src/ztype.h	1 Nov 2005 02:50:22 -0000	1.3
+++ Src/ztype.h	10 Jul 2006 12:49:30 -0000
@@ -42,22 +42,22 @@
 #define IMETA    (1 << 12)
 #define IWSEP    (1 << 13)
 #define INULL    (1 << 14)
-#define _icom(X,Y) (typtab[STOUC(X)] & Y)
-#define idigit(X) _icom(X,IDIGIT)
-#define ialnum(X) _icom(X,IALNUM)
-#define iblank(X) _icom(X,IBLANK)	/* blank, not including \n */
-#define inblank(X) _icom(X,INBLANK)	/* blank or \n */
-#define itok(X) _icom(X,ITOK)
-#define isep(X) _icom(X,ISEP)
-#define ialpha(X) _icom(X,IALPHA)
-#define iident(X) _icom(X,IIDENT)
-#define iuser(X) _icom(X,IUSER)	/* username char */
-#define icntrl(X) _icom(X,ICNTRL)
-#define iword(X) _icom(X,IWORD)
-#define ispecial(X) _icom(X,ISPECIAL)
-#define imeta(X) _icom(X,IMETA)
-#define iwsep(X) _icom(X,IWSEP)
-#define inull(X) _icom(X,INULL)
+#define zistype(X,Y) (typtab[STOUC(X)] & Y)
+#define idigit(X) zistype(X,IDIGIT)
+#define ialnum(X) zistype(X,IALNUM)
+#define iblank(X) zistype(X,IBLANK)	/* blank, not including \n */
+#define inblank(X) zistype(X,INBLANK)	/* blank or \n */
+#define itok(X) zistype(X,ITOK)
+#define isep(X) zistype(X,ISEP)
+#define ialpha(X) zistype(X,IALPHA)
+#define iident(X) zistype(X,IIDENT)
+#define iuser(X) zistype(X,IUSER)	/* username char */
+#define icntrl(X) zistype(X,ICNTRL)
+#define iword(X) zistype(X,IWORD)
+#define ispecial(X) zistype(X,ISPECIAL)
+#define imeta(X) zistype(X,IMETA)
+#define iwsep(X) zistype(X,IWSEP)
+#define inull(X) zistype(X,INULL)
 
 #define iascii(X) isascii(STOUC(X))
 #define ilower(X) islower(STOUC(X))
Index: Src/Zle/compcore.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/Zle/compcore.c,v
retrieving revision 1.83
diff -u -r1.83 compcore.c
--- Src/Zle/compcore.c	7 Mar 2006 12:52:28 -0000	1.83
+++ Src/Zle/compcore.c	10 Jul 2006 12:49:31 -0000
@@ -1081,7 +1081,7 @@
     }
     if ((*p == String || *p == Qstring) && p[1] != Inpar && p[1] != Inbrack) {
 	/* This is really a parameter expression (not $(...) or $[...]). */
-	char *b = p + 1, *e = b;
+	char *b = p + 1, *e = b, *ie;
 	int n = 0, br = 1, nest = 0;
 
 	if (*b == Inbrace) {
@@ -1124,10 +1124,16 @@
 	else if (idigit(*e))
 	    while (idigit(*e))
 		e++;
-	else if (iident(*e))
-	    while (iident(*e) ||
-		   (comppatmatch && *comppatmatch && (*e == Star || *e == Quest)))
-		e++;
+	else if ((ie = itype_end(e, IIDENT, 0)) != e) {
+	    do {
+		e = ie;
+		if (comppatmatch && *comppatmatch &&
+		    (*e == Star || *e == Quest))
+		    ie = e + 1;
+		else
+		    ie = itype_end(e, IIDENT, 0);
+	    } while (ie != e);
+	}
 
 	/* Now make sure that the cursor is inside the name. */
 	if (offs <= e - s && offs >= b - s && n <= 0) {
Index: Src/Zle/zle_tricky.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/Zle/zle_tricky.c,v
retrieving revision 1.67
diff -u -r1.67 zle_tricky.c
--- Src/Zle/zle_tricky.c	30 May 2006 22:35:04 -0000	1.67
+++ Src/Zle/zle_tricky.c	10 Jul 2006 12:49:32 -0000
@@ -551,9 +551,8 @@
 	else if (idigit(*e))
 	    while (idigit(*e))
 		e++;
-	else if (iident(*e))
-	    while (iident(*e))
-		e++;
+	else
+	    e = itype_end(e, IIDENT, 0);
 
 	/* Now make sure that the cursor is inside the name. */
 	if (offs <= e - s && offs >= b - s && n <= 0) {
@@ -740,8 +739,7 @@
 			    else if (idigit(*q))
 				do q++; while (idigit(*q));
 			    else
-				while (iident(*q))
-				    q++;
+				q = itype_end(q, IIDENT, 0);
 			    sav = *q;
 			    *q = '\0';
 			    if (zlemetacs - wb == q - s &&
@@ -1293,7 +1291,7 @@
 	if (varq)
 	    tt = clwords[clwpos];
 
-	for (s = tt; iident(*s); s++);
+	s = itype_end(tt, IIDENT, 0);
 	sav = *s;
 	*s = '\0';
 	zsfree(varname);
@@ -1360,17 +1358,29 @@
      * as being in math.                                              */
     if (inwhat != IN_MATH) {
 	int i = 0;
-	char *nnb = (iident(*s) ? s : s + 1), *nb = NULL, *ne = NULL;
-	
-	for (tt = s; ++tt < s + zlemetacs - wb;)
+	char *nnb, *nb = NULL, *ne = NULL;
+
+	MB_METACHARINIT();
+	if (itype_end(s, IIDENT, 1) == s)
+	    nnb = s + MB_METACHARLEN(s);
+	else
+	    nnb = s;
+	for (tt = s; tt < s + zlemetacs - wb;) {
 	    if (*tt == Inbrack) {
 		i++;
 		nb = nnb;
 		ne = tt;
-	    } else if (i && *tt == Outbrack)
+		tt++;
+	    } else if (i && *tt == Outbrack) {
 		i--;
-	    else if (!iident(*tt))
-		nnb = tt + 1;
+		tt++;
+	    } else {
+		int nclen = MB_METACHARLEN(tt);
+		if (itype_end(tt, IIDENT, 1) == tt)
+		    nnb = tt + nclen;
+		tt += nclen;
+	    }
+	}
 	if (i) {
 	    inwhat = IN_MATH;
 	    insubscr = 1;
@@ -1415,33 +1425,59 @@
 	    /* In mathematical expression, we complete parameter names  *
 	     * (even if they don't have a `$' in front of them).  So we *
 	     * have to find that name.                                  */
-	    for (we = zlemetacs; iident(zlemetaline[we]); we++);
-	    for (wb = zlemetacs; --wb >= 0 && iident(zlemetaline[wb]););
-	    wb++;
+	    char *cspos = zlemetaline + zlemetacs, *wptr, *cptr;
+	    we = itype_end(cspos, IIDENT, 0) - cspos;
+
+	    /*
+	     * With multibyte characters we need to go forwards,
+	     * so start at the beginning of the line and continue
+	     * until cspos.
+	     */
+	    wptr = cptr = zlemetaline;
+	    for (;;) {
+		cptr = itype_end(wptr, IIDENT, 0);
+		if (cptr == wptr) {
+		    /* not an ident character */
+		    wptr = (cptr += MB_METACHARLEN(cptr));
+		}
+		if (cptr >= cspos) {
+		    wb = wptr - zlemetaline;
+		    break;
+		}
+	    }
 	}
 	zsfree(s);
 	s = zalloc(we - wb + 1);
 	strncpy(s, zlemetaline + wb, we - wb);
 	s[we - wb] = '\0';
-	if (wb > 2 && zlemetaline[wb - 1] == '[' &&
-	    iident(zlemetaline[wb - 2])) {
-	    int i = wb - 3;
-	    char sav = zlemetaline[wb - 1];
 
-	    while (i >= 0 && iident(zlemetaline[i]))
-		i--;
+	if (wb > 2 && zlemetaline[wb - 1] == '[') {
+	    char *sqbr = zlemetaline + wb - 1, *cptr, *wptr;
 
-	    zlemetaline[wb - 1] = '\0';
-	    zsfree(varname);
-	    varname = ztrdup(zlemetaline + i + 1);
-	    zlemetaline[wb - 1] = sav;
-	    if ((keypm = (Param) paramtab->getnode(paramtab, varname)) &&
-		(keypm->node.flags & PM_HASHED)) {
-		if (insubscr != 3)
-		    insubscr = 2;
-	    } else
-		insubscr = 1;
+	    /* Need to search forward for word characters */
+	    cptr = wptr = zlemetaline;
+	    for (;;) {
+		cptr = itype_end(wptr, IIDENT, 0);
+		if (cptr == wptr) {
+		    /* not an ident character */
+		    wptr = (cptr += MB_METACHARLEN(cptr));
+		}
+		if (cptr >= sqbr)
+		    break;
+	    }
+
+	    if (wptr < sqbr) {
+		zsfree(varname);
+		varname = ztrduppfx(wptr, sqbr - wptr);
+		if ((keypm = (Param) paramtab->getnode(paramtab, varname)) &&
+		    (keypm->node.flags & PM_HASHED)) {
+		    if (insubscr != 3)
+			insubscr = 2;
+		} else
+		    insubscr = 1;
+	    }
 	}
+
 	parse_subst_string(s);
     }
     /* This variable will hold the current word in quoted form. */
@@ -1562,12 +1598,12 @@
 			*tp == '@')
 			p++, i++;
 		    else {
+			char *ie;
 			if (idigit(*tp))
 			    while (idigit(*tp))
 				tp++;
-			else if (iident(*tp))
-			    while (iident(*tp))
-				tp++;
+			else if ((ie = itype_end(tp, IIDENT, 0)) != tp)
+			    tp = ie;
 			else {
 			    tt = NULL;
 			    break;
Index: Test/D07multibyte.ztst
===================================================================
RCS file: /cvsroot/zsh/zsh/Test/D07multibyte.ztst,v
retrieving revision 1.4
diff -u -r1.4 D07multibyte.ztst
--- Test/D07multibyte.ztst	30 Jun 2006 09:41:35 -0000	1.4
+++ Test/D07multibyte.ztst	10 Jul 2006 12:49:32 -0000
@@ -165,3 +165,12 @@
 >165
 >163
 >945 945
+
+  unsetopt posix_identifiers
+  expr='hähä=3 || exit 1; print $hähä'
+  eval $expr
+  setopt posix_identifiers
+  (eval $expr)
+1:POSIX_IDENTIFIERS option
+>3
+?(eval):1: command not found: hähä=3

-- 
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


^ permalink raw reply	[relevance 2%]

* PATCH: multibyte odds and ends
@ 2006-08-01 20:44  4% Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2006-08-01 20:44 UTC (permalink / raw)
  To: Zsh hackers list

A few minor things:

- fix bslashquote().  The only issue was a test for printability when
  using $'...'.  (I don't know where I got the idea that form of
  quoting was something to do with POSIX, it isn't.)
- remove aliases iascii, iupper, iprint, ilower which simply invoked
  standard ctype macros and instead use ctype directly for clarity
- fix return value from getzlequery(); it was only ever used in yes/no
  mode so a status return makes more sense than a character.

The only other outstanding syntactic issue I noticed this time through
was with bangchar, hatchar and hashchar which can be redefined by
setting HISTCHARS.  These are always compared to single bytes, and this
happens at quite a low level of input where we *really* don't want to
start handling multibyte characters since it effectively means a rewrite
of the lexical analyser.  They are in any case quite nasty hacks which
it wouldn't be much fun to handle outside the portable character set.
My suggestion is that their use be limited in some way:

- Make sure they are ASCII characters?
- Allow non-ASCII characters but make sure they are complete (this will
only work with single-byte extensions to ASCII e.g. ISO-8859-1)?
- Keep the current code and simply document that a single byte will be
compared, with possibly unexpected effects (possibly issue a warning)?

Does anybody have any preferences?  Does anybody ever redefine HISTCHARS?

Index: Src/utils.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/utils.c,v
retrieving revision 1.129
diff -u -r1.129 utils.c
--- Src/utils.c	25 Jul 2006 09:25:27 -0000	1.129
+++ Src/utils.c	1 Aug 2006 20:28:47 -0000
@@ -2835,7 +2835,7 @@
     if (len == 0) {
 	/* NULL is special */
 	return zistype(0, itype);
-    } else if (len == 1 && iascii(*outstr)) {
+    } else if (len == 1 && isascii(*outstr)) {
 	return zistype(*outstr, itype);
     } else {
 	switch (itype) {
@@ -2897,7 +2897,7 @@
 		/* in this case non-ASCII characters can't match */
 		if (chr > 127 || !zistype(chr,itype))
 		    break;
-	    } else if (len == 1 && iascii(*ptr)) {
+	    } else if (len == 1 && isascii(*ptr)) {
 		/* ASCII: can't be metafied, use standard test */
 		if (!zistype(*ptr,itype))
 		    break;
@@ -4017,7 +4017,7 @@
  * 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,      *
  * 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.                  *
+ * three if it is for the inside of a $'...' quoted string.                 *
  * The string may be metafied and contain tokens.                           */
 
 /**/
@@ -4031,127 +4031,153 @@
 
     tt = v = buf;
     u = s;
-    for (; *u; u++) {
-	if (e && *e == u)
-	    *e = v, sf = 1;
-	if (instring == 3) {
-	  int c = *u;
-	  if (c == Meta) {
-	    c = *++u ^ 32;
-	  }
-	  c &= 0xff;
-	  if(isprint(c)) {
-	    switch (c) {
-	    case '\\':
-	    case '\'':
-	      *v++ = '\\';
-	      *v++ = c;
-	      break;
+    if (instring == 3) {
+	/*
+	 * As we test for printability here we need to be able
+	 * to look for multibyte characters.
+	 */
+	convchar_t cc;
+	MB_METACHARINIT();
+	while (*u) {
+	    const char *uend = u + MB_METACHARLENCONV(u, &cc);
+
+	    if (e && !sf && *e <= u) {
+		*e = v;
+		sf = 1;
+	    }
+	    if (
+#ifdef MULTIBYTE_SUPPORT
+		cc != WEOF && 
+#endif
+		MB_ISPRINT(cc)) {
+		switch (cc) {
+		case ZWC('\\'):
+		case ZWC('\''):
+		    *v++ = '\\';
+		    break;
 
-	    default:
-	      if(imeta(c)) {
-		*v++ = Meta;
-		*v++ = c ^ 32;
-	      }
-	      else {
-		if (isset(BANGHIST) && c == bangchar) {
-		  *v++ = '\\';
+		default:
+		    if (isset(BANGHIST) && cc == (wchar_t)bangchar)
+			*v++ = '\\';
+		    break;
 		}
-		*v++ = c;
-	      }
-	      break;
-	    }
-	  }
-	  else {
-	    switch (c) {
-	    case '\0':
-	      *v++ = '\\';
-	      *v++ = '0';
-	      if ('0' <= u[1] && u[1] <= '7') {
-		*v++ = '0';
-		*v++ = '0';
-	      }
-	      break;
-
-	    case '\007': *v++ = '\\'; *v++ = 'a'; break;
-	    case '\b': *v++ = '\\'; *v++ = 'b'; break;
-	    case '\f': *v++ = '\\'; *v++ = 'f'; break;
-	    case '\n': *v++ = '\\'; *v++ = 'n'; break;
-	    case '\r': *v++ = '\\'; *v++ = 'r'; break;
-	    case '\t': *v++ = '\\'; *v++ = 't'; break;
-	    case '\v': *v++ = '\\'; *v++ = 'v'; break;
+		while (u < uend)
+		    *v++ = *u++;
+	    } else {
+		/* Not printable */
+		for (; u < uend; u++) {
+		    /*
+		     * Just do this byte by byte; there's no great
+		     * advantage in being clever with multibyte
+		     * characters if we don't think they're printable.
+		     */
+		    int c;
+		    if (*u == Meta)
+			c = STOUC(*++u ^ 32);
+		    else
+			c = STOUC(*u);
+		    switch (c) {
+		    case '\0':
+			*v++ = '\\';
+			*v++ = '0';
+			if ('0' <= u[1] && u[1] <= '7') {
+			    *v++ = '0';
+			    *v++ = '0';
+			}
+			break;
 
-	    default:
-	      *v++ = '\\';
-	      *v++ = '0' + ((c >> 6) & 7);
-	      *v++ = '0' + ((c >> 3) & 7);
-	      *v++ = '0' + (c & 7);
-	      break;
+		    case '\007': *v++ = '\\'; *v++ = 'a'; break;
+		    case '\b': *v++ = '\\'; *v++ = 'b'; break;
+		    case '\f': *v++ = '\\'; *v++ = 'f'; break;
+		    case '\n': *v++ = '\\'; *v++ = 'n'; break;
+		    case '\r': *v++ = '\\'; *v++ = 'r'; break;
+		    case '\t': *v++ = '\\'; *v++ = 't'; break;
+		    case '\v': *v++ = '\\'; *v++ = 'v'; break;
+
+		    default:
+			*v++ = '\\';
+			*v++ = '0' + ((c >> 6) & 7);
+			*v++ = '0' + ((c >> 3) & 7);
+			*v++ = '0' + (c & 7);
+			break;
+		    }
+		}
 	    }
-	  }
-	  continue;
 	}
-	else if (*u == Tick || *u == Qtick) {
-	    char c = *u++;
+    }
+    else
+    {
+	/*
+	 * Here the only special characters are syntactic, so
+	 * we can go through bytewise.
+	 */
+	for (; *u; u++) {
+	    if (e && *e == u)
+		*e = v, sf = 1;
+	    if (*u == Tick || *u == Qtick) {
+		char c = *u++;
+
+		*v++ = c;
+		while (*u && *u != c)
+		    *v++ = *u++;
+		*v++ = c;
+		if (!*u)
+		    u--;
+		continue;
+	    }
+	    else if ((*u == String || *u == Qstring) &&
+		     (u[1] == Inpar || u[1] == Inbrack || u[1] == Inbrace)) {
+		char c = (u[1] == Inpar ? Outpar : (u[1] == Inbrace ?
+						    Outbrace : Outbrack));
+		char beg = *u;
+		int level = 0;
 
-	    *v++ = c;
-	    while (*u && *u != c)
 		*v++ = *u++;
-	    *v++ = c;
-	    if (!*u)
-		u--;
-	    continue;
-	}
-	else if ((*u == String || *u == Qstring) &&
-		 (u[1] == Inpar || u[1] == Inbrack || u[1] == Inbrace)) {
-	    char c = (u[1] == Inpar ? Outpar : (u[1] == Inbrace ?
-						Outbrace : Outbrack));
-	    char beg = *u;
-	    int level = 0;
-
-	    *v++ = *u++;
-	    *v++ = *u++;
-	    while (*u && (*u != c || level)) {
-		if (*u == beg)
-		    level++;
-		else if (*u == c)
-		    level--;
 		*v++ = *u++;
-	    }
-	    if (*u)
-		*v++ = *u;
-	    else
-		u--;
-	    continue;
-	}
-	else if (ispecial(*u) &&
-		 ((*u != '=' && *u != '~') ||
-		  u == s ||
-		  (isset(MAGICEQUALSUBST) && (u[-1] == '=' || u[-1] == ':')) ||
-		  (*u == '~' && isset(EXTENDEDGLOB))) &&
-	    (!instring ||
-	     (isset(BANGHIST) && *u == (char)bangchar && instring != 1) ||
-	     (instring == 2 &&
-	      (*u == '$' || *u == '`' || *u == '\"' || *u == '\\')) ||
-	     (instring == 1 && *u == '\''))) {
-	    if (*u == '\n' || (instring == 1 && *u == '\'')) {
-		if (unset(RCQUOTES)) {
-		    *v++ = '\'';
-		    if (*u == '\'')
-			*v++ = '\\';
+		while (*u && (*u != c || level)) {
+		    if (*u == beg)
+			level++;
+		    else if (*u == c)
+			level--;
+		    *v++ = *u++;
+		}
+		if (*u)
 		    *v++ = *u;
-		    *v++ = '\'';
-		} else if (*u == '\n')
-		    *v++ = '"', *v++ = '\n', *v++ = '"';
 		else
-		    *v++ = '\'', *v++ = '\'';
+		    u--;
 		continue;
-	    } else
-		*v++ = '\\';
+	    }
+	    else if (ispecial(*u) &&
+		     ((*u != '=' && *u != '~') ||
+		      u == s ||
+		      (isset(MAGICEQUALSUBST) &&
+		       (u[-1] == '=' || u[-1] == ':')) ||
+		      (*u == '~' && isset(EXTENDEDGLOB))) &&
+		     (!instring ||
+		      (isset(BANGHIST) && *u == (char)bangchar &&
+		       instring != 1) ||
+		      (instring == 2 &&
+		       (*u == '$' || *u == '`' || *u == '\"' || *u == '\\')) ||
+		      (instring == 1 && *u == '\''))) {
+		if (*u == '\n' || (instring == 1 && *u == '\'')) {
+		    if (unset(RCQUOTES)) {
+			*v++ = '\'';
+			if (*u == '\'')
+			    *v++ = '\\';
+			*v++ = *u;
+			*v++ = '\'';
+		    } else if (*u == '\n')
+			*v++ = '"', *v++ = '\n', *v++ = '"';
+		    else
+			*v++ = '\'', *v++ = '\'';
+		    continue;
+		} else
+		    *v++ = '\\';
+	    }
+	    if(*u == Meta)
+		*v++ = *u++;
+	    *v++ = *u;
 	}
-	if(*u == Meta)
-	    *v++ = *u++;
-	*v++ = *u;
     }
     *v = '\0';
 
Index: Src/ztype.h
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/ztype.h,v
retrieving revision 1.5
diff -u -r1.5 ztype.h
--- Src/ztype.h	24 Jul 2006 22:00:21 -0000	1.5
+++ Src/ztype.h	1 Aug 2006 20:28:47 -0000
@@ -61,11 +61,8 @@
 
 #ifdef MULTIBYTE_SUPPORT
 #define MB_ZISTYPE(X,Y) wcsitype((X),(Y))
+#define MB_ISPRINT(X)	iswprint(X)
 #else
 #define MB_ZISTYPE(X,Y)	zistype((X),(Y))
+#define MB_ISPRINT(X)	isprint(X)
 #endif
-
-#define iascii(X) isascii(STOUC(X))
-#define ilower(X) islower(STOUC(X))
-#define iprint(X) isprint(STOUC(X))
-#define iupper(X) isupper(STOUC(X))
Index: Src/Zle/compresult.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/Zle/compresult.c,v
retrieving revision 1.62
diff -u -r1.62 compresult.c
--- Src/Zle/compresult.c	7 Mar 2006 21:31:43 -0000	1.62
+++ Src/Zle/compresult.c	1 Aug 2006 20:28:48 -0000
@@ -1861,7 +1861,7 @@
 		     listdat.nlines));
 	qup = ((l + columns - 1) / columns) - 1;
 	fflush(shout);
-	if (getzlequery(1) != 'y') {
+	if (!getzlequery()) {
 	    if (clearflag) {
 		putc('\r', shout);
 		tcmultout(TCUP, TCMULTUP, qup);
Index: Src/Zle/zle.h
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/Zle/zle.h,v
retrieving revision 1.31
diff -u -r1.31 zle.h
--- Src/Zle/zle.h	24 Jul 2006 22:00:21 -0000	1.31
+++ Src/Zle/zle.h	1 Aug 2006 20:28:48 -0000
@@ -125,9 +125,9 @@
 #define ZC_icntrl icntrl
 #define ZC_idigit idigit
 #define ZC_iident iident
-#define ZC_ilower ilower
+#define ZC_ilower islower
 #define ZC_inblank inblank
-#define ZC_iupper iupper
+#define ZC_iupper isupper
 #define ZC_iword iword
 
 #define ZC_tolower tulower
Index: Src/Zle/zle_tricky.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/Zle/zle_tricky.c,v
retrieving revision 1.68
diff -u -r1.68 zle_tricky.c
--- Src/Zle/zle_tricky.c	10 Jul 2006 13:08:24 -0000	1.68
+++ Src/Zle/zle_tricky.c	1 Aug 2006 20:28:50 -0000
@@ -2298,7 +2298,7 @@
 	     fprintf(shout, "zsh: do you wish to see all %d lines? ", nlines));
 	qup = ((l + columns - 1) / columns) - 1;
 	fflush(shout);
-	if (getzlequery(1) != 'y') {
+	if (!getzlequery()) {
 	    if (clearflag) {
 		putc('\r', shout);
 		tcmultout(TCUP, TCMULTUP, qup);
Index: Src/Zle/zle_utils.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/Zle/zle_utils.c,v
retrieving revision 1.37
diff -u -r1.37 zle_utils.c
--- Src/Zle/zle_utils.c	13 Jan 2006 17:13:51 -0000	1.37
+++ Src/Zle/zle_utils.c	1 Aug 2006 20:28:50 -0000
@@ -653,50 +653,42 @@
 }
 
 /*
- * Query the user, and return a single character response.  The question
- * is assumed to have been printed already, and the cursor is left
- * immediately after the response echoed.  (Might cause a problem if
- * this takes it onto the next line.)  If yesno is non-zero: <Tab> is
- * interpreted as 'y'; any other control character is interpreted as
- * 'n'.  If there are any characters in the buffer, this is taken as a
- * negative response, and no characters are read.  Case is folded.
- *
- * TBD: this may need extending to return a wchar_t or possibly
- * a wint_t.
+ * Query the user, and return 1 for yes, 0 for no.  The question is assumed to
+ * have been printed already, and the cursor is left immediately after the
+ * response echoed.  (Might cause a problem if this takes it onto the next
+ * line.)  <Tab> is interpreted as 'y'; any other control character is
+ * interpreted as 'n'.  If there are any characters in the buffer, this is
+ * taken as a negative response, and no characters are read.  Case is folded.
  */
 
 /**/
 mod_export int
-getzlequery(int yesno)
+getzlequery(void)
 {
     ZLE_INT_T c;
 #ifdef FIONREAD
     int val;
 
-    if (yesno) {
-	/* check for typeahead, which is treated as a negative response */
-	ioctl(SHTTY, FIONREAD, (char *)&val);
-	if (val) {
-	    putc('n', shout);
-	    return 'n';
-	}
+    /* check for typeahead, which is treated as a negative response */
+    ioctl(SHTTY, FIONREAD, (char *)&val);
+    if (val) {
+	putc('n', shout);
+	return 0;
     }
 #endif
 
     /* get a character from the tty and interpret it */
     c = getfullchar(0);
-    if (yesno) {
-	if (c == ZWC('\t'))
-	    c = ZWC('y');
-	else if (ZC_icntrl(c) || c == ZLEEOF)
-	    c = ZWC('n');
-	else
-	    c = ZC_tolower(c);
-    }
+    if (c == ZWC('\t'))
+	c = ZWC('y');
+    else if (ZC_icntrl(c) || c == ZLEEOF)
+	c = ZWC('n');
+    else
+	c = ZC_tolower(c);
     /* echo response and return */
     if (c != ZWC('\n'))
 	zwcputc(c);
-    return c;
+    return c == ZWC('y');
 }
 
 /* Format a string, keybinding style. */

-- 
Peter Stephenson <p.w.stephenson@ntlworld.com>
Web page now at http://homepage.ntlworld.com/p.w.stephenson/


^ permalink raw reply	[relevance 4%]

* Re: PATCH: autoconf test for multibyte support
  @ 2006-08-04 14:50  4% ` Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2006-08-04 14:50 UTC (permalink / raw)
  To: zsh-workers

Peter Stephenson <pws@csr.com> wrote:
> If this works I will need to change some of the installation
> documentation.

This changes some documentation.

I'm only guessing it works on Cygwin, all I know is it compiles with the
same code that works everywhere else.

Index: INSTALL
===================================================================
RCS file: /cvsroot/zsh/zsh/INSTALL,v
retrieving revision 1.25
diff -u -r1.25 INSTALL
--- INSTALL	16 Feb 2006 14:28:54 -0000	1.25
+++ INSTALL	4 Aug 2006 14:44:06 -0000
@@ -264,37 +264,32 @@
 ---------------------------
 
 Support for multibyte character sets that extend ASCII, such as UTF-8, is
-under development but the code in the line editor is sufficiently stable to
-be turned on by default in environments that provide full ISO 10646 support
-including the preprocessor definition __STDC_ISO_10646__.  In principle
-this definition does not guarantee the full environment, but in practice
-systems with this defined also provide suitable library support.  The shell
-does not probe for all the features, so on other systems use of multibyte
-support must be explicitly enabled when it is available.
+now reasonably close to complete, except that combining characters are not
+handled properly (some assistance with this problem would be appreciated).
+The configuration script should turn on multibyte support on all systems
+where it can be compiled successfully.
 
 The support can be explicitly enabled or disable with --enable-multibyte or
---disable-multibyte.  Reports of systems where multibyte support was not
-enabled by default but --enable-multibyte resulted in a usable shell would
-be appreciated.  The developers are not aware of any need to use
+--disable-multibyte.  The developers are not aware of any need to use
 --disable-multibyte and this should be reported as a bug.  Currently
-multibyte mode is believed to work automatically on:
+multibyte mode is believed to work on at least the following:
 
   - All(?) current GNU/Linux distributions
-
-and to work when configured with --enable-multibyte on:
-
   - OS X 10.4.3 (problems have been reported with multibyte characters
     in HFS file names)
   - NetBSD 2.0.2
   - Solaris 8+ (inputting multibyte characters from the keyboard doesn't
     work in some installations).
+  - Cygwin (though use of multibyte characters is somewhat non-standard).
 
-The main shell is not yet aware of multibyte characters, so for example the
-length of a scalar parameter will return the number of bytes, not
-characters, and pattern tests likewise treat single bytes as if they were
-characters.  This means that pattern tests such as ? and [[:alpha:]] do not
-work correctly with characters in multibyte character sets beyond the ASCII
-subset.
+The corresponding shell option MULTIBYTE is now on by default in all
+emulation modes when multibyte support is enabled.  Turning it off is not
+recommended unless there is a particular need to examine single bytes
+regardless of the locale.  As the line editor bases its behaviour on the
+locale regardless of the option (in order to correspond to the displayed
+character set), the option should be left on during the execution of
+user-defined editor and completion widgets so that the behaviour
+corresponds to that of builtin widgets.
 
 See chapter 5 in the FAQ for some notes on multibyte input.
 
Index: MACHINES
===================================================================
RCS file: /cvsroot/zsh/zsh/MACHINES,v
retrieving revision 1.3
diff -u -r1.3 MACHINES
--- MACHINES	21 Mar 2006 19:19:07 -0000	1.3
+++ MACHINES	4 Aug 2006 14:44:07 -0000
@@ -180,9 +180,7 @@
 SGI: IRIX 6.5
 	Should build `out-of-the-box'; however, if using the native
 	compiler, "cc" rather than "c99" is recommended.  Compilation
-	with gcc is also reported to work.  Multibyte is supported,
-	for example:
-           CC=cc ./configure --enable-multibyte
+	with gcc is also reported to work.  Multibyte is supported.
 
 	On 6.5.2, zsh malloc routines are reported not to work; also
 	full optimization (cc -O3 -OPT:Olimit=0) causes problems.
Index: NEWS
===================================================================
RCS file: /cvsroot/zsh/zsh/NEWS,v
retrieving revision 1.10
diff -u -r1.10 NEWS
--- NEWS	28 Feb 2006 12:20:43 -0000	1.10
+++ NEWS	4 Aug 2006 14:44:08 -0000
@@ -5,27 +5,31 @@
 Major changes between versions 4.2 and 4.3
 ------------------------------------------
 
-- There is support for multibyte character sets in the line editor,
-  though not the main shell.  See Multibyte Character Support in INSTALL.
+- There is support for multibyte character sets.  This is now reasonably
+  close to complete, although Unicode combining characters don't work
+  properly.  See Multibyte Character Support in INSTALL.
 
 - The shell can now run an installation function for a new user
-  (one with no .zshrc, .zshenv, .zprofile or .zlogin file) without
-  any additional setting up by the administrator.
+  (a user with no .zshrc, .zshenv, .zprofile or .zlogin file) without
+  any additional setting up by the administrator.  See "THE ZSH/NEWUSER
+  MODULE" in the zshmodules manual page.
 
 - The manual now has a Roadmap section (manual page zshroadmap) to
   give new users an indication of the most interesting parts of the
   manual.
 
-- New option PROMPT_SP, on by default, to work around the problem that the
-  line editor can overwrite output with no newline at the end.
+- New option PROMPT_SP (on by default): works around the problem that the
+  line editor can overwrite output with no newline at the end.  See the
+  zshoptions manual page.
 
 - New option HIST_SAVE_BY_COPY (on by default): history is saved by
-  copying and renaming instead of directly overwriting.
+  copying and renaming instead of directly overwriting.  See the
+  zshoptions manual page.
 
 - New redirection syntax e.g. {myfd}>file opens a new file descriptor
   and stores the number in $myfd, so that >&$myfd will work.  Chosen
   not to break existing code (and to be compatible with proposals for the
-  Korn shell).
+  Korn shell).  See the section REDIRECTION in the zshmisc manual page.
 
 - Substitutions of the form ${var:-"$@"}, ${var:+"$@"} and similar where
   word-splitting is applied to the text after the :- or :+ (in particular,
@@ -36,20 +40,28 @@
 - New Posix-style zsh-specific tests [[:IDENT:]], [[:IFS:]],
   [[:IFSSPACE:]], [[:WORD:]] test if character can appear in identifier,
   is an IFS character, is an IFS whitespace character, or is considered
-  as part of a word (is alphanumeric or appears in $WORDCHARS).  Note
-  the pattern code doesn't yet handle multibyte characters.
+  as part of a word (is alphanumeric or appears in $WORDCHARS).  These
+  works correctly on multibyte characters if the appropriate support
+  is present.  See the section FILENAME GENERATION in the zshexpn
+  manual page.
 
 - The idiom =(<<<...) is optimised so that the shell internally turns
   the ... into the contents of a file whose name is then substituted.
+  The syntax has always been usable by means of the NULLCMD feature,
+  but previously it generated an intermediate process; it has now
+  been rewritten along the same lines as the optimisation for $(<...)
+  that inserts a file into the command line without the use of an
+  external programme.
 
 - Supplied functions catch and throw provide limited support for
   exception handling using the `{ ... } always { ... }' syntax.
+  See the section EXCEPTION HANDLING in the zshcontrib manual page.
 
 - Signals now accept the SIG as part of the name for compatibility with
   other shells.
 
 - Editor function argument-base allows non-decimal arguments for
-  editor widgets.
+  editor widgets.  See the entry in the zshzle manual page.
 
 - As always, there are many enhancements to completion functions.
 
Index: README
===================================================================
RCS file: /cvsroot/zsh/zsh/README,v
retrieving revision 1.35
diff -u -r1.35 README
--- README	2 Aug 2006 17:16:38 -0000	1.35
+++ README	4 Aug 2006 14:44:09 -0000
@@ -54,7 +54,8 @@
 assumed all such octets were allowed in identifiers, however the POSIX
 standard does not allow such characters in identifiers.  The older
 behaviour is still obtained with --disable-multibyte in effect.
-With --enable-multibyte set there are three possible cases:
+With --enable-multibyte in effect (this is now the default anywhere
+it is supported) there are three possible cases:
   MULTIBYTE option unset:  only ASCII characters are allowed; the
     shell does not attempt to identify non-ASCII characters at all.
   MULTIBYTE option set, POSIX_IDENTIFIERS option unset: in addition
-- 
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


To access the latest news from CSR copy this link into a web browser:  http://www.csr.com/email_sig.php


^ permalink raw reply	[relevance 4%]

* Re: completion bug in UTF-8 locale
  @ 2006-08-20 20:08  6%   ` Roman Cheplyaka
  0 siblings, 0 replies; 200+ results
From: Roman Cheplyaka @ 2006-08-20 20:08 UTC (permalink / raw)
  To: Peter Stephenson; +Cc: zsh-workers

On Sun, Aug 20, 2006 at 06:01:51PM +0100, Peter Stephenson wrote:
> On Sun, 20 Aug 2006 10:18:33 +0300
> Roman Cheplyaka <roman.cheplyaka@gmail.com> wrote:
> > I have the following issue in UTF-8 locale:
> > zsh completion works ok in current folder, no matter which files are
> > here.
> > But suppose I have some directory named 'тест' (cyrillic letters).
> > Then
> > % ls те<Tab>
> > completes it to 'тест', but
> > % ls тест/<Tab>
> > doesn't show anything, even if there are no cyrillic-named items in that
> > directory.
> I can't get this, even with zsh -f; it seems to work fine both with my
> own completion set up and the plain old-fashioned defaul.
I've made some more tests. It seems to break at certain letters.. Try for
example directory named "ц" (w/o quotes). 


> I'm using the
> locale en_GB.UTF-8, but I tried it with ru_RU.UTF-8 as well.  What
> actually are the contents of the directory (ls -a)?
It's irrelevant, I think. Ok, here it is:
% ls -a ц
./  ../  aaaa

> What locale are you
> using?
% locale   
LANG=POSIX
LC_CTYPE=ru_UA.UTF-8
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE=ru_UA.UTF-8
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=


> What version of the shell?  (UTF-8 support is new in 3.2, so if
> it's older it won't work well.)
% zsh --version
zsh 4.3.2 (i686-pc-linux-gnu)
% dpkg-query -W zsh 
zsh	4.3.2-14

-- 
Roman I. Cheplyaka


^ permalink raw reply	[relevance 6%]

* Re: zsh hangs on AIX 4.3.3
  @ 2006-09-07 18:43  3% ` Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2006-09-07 18:43 UTC (permalink / raw)
  To: Gene Carter, zsh-workers

On Fri, 1 Sep 2006 11:56:15 -0400
"Gene Carter" <gananda@gmail.com> wrote:
> I'm trying to use zsh on an AIX 4.3.3 box. Unfortunately, I appear to be
> hitting a bug related to a wait
> on signals.

Unfortunately it looks like there's no AIX host at Sourceforge, so
there's no way for us to debug this, unless it turns up on another
system.  That seems unlikely (for common systems like Linux and Solaris,
anyway), since someone ought to have tripped over it by now, I would
think.

> The script seems to make it through about 351 interations, and then
> hangs.

Do you mean the second number output would be 351, or 35100?  In any
case I seem to have got to about 300000 with no problems (Fedora Core 5
on x86 with the latest zsh source), but I'll leave it running.

sigsuspend(), which is where the shell is hanging, is the standard POSIX
mechanism.  The only suggestion I can make is that you try defining
BROKEN_POSIX_SIGSUSPEND in config.h and recompiling to see if that
helps.  It's not very likely, however.  Alternatively, try one of the
other signal handling styles: undefine POSIX_SIGNALS in config.h and define
BSD_SIGNALS or SYSV_SIGNALS.  (They won't necessarily compile and link.)

Other than that, someone is going to have take a deeper look with a
debugger.  Are there jobs in the table given by the jobtab variable that
aren't done (the index maxjob gives the highest possible valid one)?  If
so, what is the state of them and the process structures pointed to by
them?

-- 
Peter Stephenson <p.w.stephenson@ntlworld.com>
Web page now at http://homepage.ntlworld.com/p.w.stephenson/


^ permalink raw reply	[relevance 3%]

* Re: Bug#386730: zsh: printf doesn't handle single-digit and two-digit octal escapes
       [not found]     <20060909190321.4014.89342.reportbug@mulj>
@ 2006-09-09 20:52  0% ` Clint Adams
  0 siblings, 0 replies; 200+ results
From: Clint Adams @ 2006-09-09 20:52 UTC (permalink / raw)
  To: zsh-workers; +Cc: Hrvoje Niksic, 386730-forwarded

Will changing getkeystring() break anything?

> zsh's builtin printf fails to interpret two-digit octal escape, such as '\1'
> or '\33'.  For example:
> 
> zsh% printf '\33abc' | hd
> 00000000  5c 33 33 61 62 63                                 |\33abc|
> 00000006
> 
> On the other hand, the printf from textutils handles them:
> 
> $ /usr/bin/printf '\33abc' | hd
> 00000000  1b 61 62 63                                       |.abc|
> 00000004
> 
> The zshbuiltins man page promises "formatting rules are the same as used in
> C", and C explicitly supports single-digit and double-digit octal escapes in
> string and character literals -- see section "6.4.4.4 Character constants"
> of the C99 standard.
> 
> Furthermore, POSIX explicitly states that \d and \dd are supported by
> printf(1) -- see http://tinyurl.com/gkdfr/, extended description, item 3. 
> The Solaris printf(1), the bash printf builtin, and the FreeBSD printf(1)
> all support them.


^ permalink raw reply	[relevance 0%]

* Re: Core dump with latest CVS
  @ 2006-09-15 13:08  3%   ` Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2006-09-15 13:08 UTC (permalink / raw)
  To: Zsh hackers list

Peter Stephenson wrote:
> \b used to be treated as length 1; now we take its width.  For control
> characters currently we assume width 1.  This causes the padding width
                                       ^ that should have been 0.
> to be zero, which causes the shell to crash: I can fix the crash easily.
> 
> - Mostly the problem is just control characters.  I noted one before.
> We could assume these have length 1 rather than 0 (and document this,
> obviously).  It's not particularly logical but it fixes up most of the
> problem cases without any need for tricks involving multibyte mode or
> new features.  Most users probably won't be (directly) affected anyway.

I'll commit this pair of changes for now, since it fixes the crash and
mostly does the right thing transparently---ASCII characters behave as
they used to and multibyte characters as they should---but if there are
strong views I can change it.

I've tried to be consistent with the assumed width of control
characters; in most other circumstances there's no simple answer that
will do the right thing, so it might as well be 1 as zero.  We already
tend to use nicechar() anywhere the problem is significant.

Index: README
===================================================================
RCS file: /cvsroot/zsh/zsh/README,v
retrieving revision 1.37
diff -u -r1.37 README
--- README	10 Sep 2006 15:24:26 -0000	1.37
+++ README	15 Sep 2006 13:00:20 -0000
@@ -49,6 +49,13 @@
 other shell at startup; it must be present in the environment or set
 subsequently by the user.  It is valid for the variable to be unset.
 
+The MULTIBYTE option is on by default where it is available; this
+causes many operations to recognise characters as in the current locale.
+Older versions of the shell always assumed a character was one byte.
+In some places the width of the character will be used; this is transparent
+when used for calculations of screen position, but also occurs, for
+example, in calculations of padding width.
+
 Zsh has previously been lax about whether it allows octets with the
 top bit set to be part of a shell identifier.  Older versions of the shell
 assumed all such octets were allowed in identifiers, however the POSIX
Index: Doc/Zsh/expn.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Zsh/expn.yo,v
retrieving revision 1.69
diff -u -r1.69 expn.yo
--- Doc/Zsh/expn.yo	14 Sep 2006 09:03:16 -0000	1.69
+++ Doc/Zsh/expn.yo	15 Sep 2006 13:00:22 -0000
@@ -871,7 +871,9 @@
 
 If the tt(MULTIBYTE) option is in effect, screen character widths will
 be used for the calculation of padding; otherwise individual bytes are
-treat as occupying one unit of width.
+treat as occupying one unit of width.  Control characters are always
+assumed to be one unit wide; this allows the mechanism to be used
+for generating repetitions of control characters.
 )
 item(tt(r:)var(expr)tt(::)var(string1)tt(::)var(string2)tt(:))(
 As tt(l), but pad the words on the right and insert var(string2)
Index: Src/prompt.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/prompt.c,v
retrieving revision 1.40
diff -u -r1.40 prompt.c
--- Src/prompt.c	13 Sep 2006 20:55:30 -0000	1.40
+++ Src/prompt.c	15 Sep 2006 13:00:25 -0000
@@ -944,10 +944,15 @@
 		multi = 0;
 		break;
 	    default:
-		/* If the character isn't printable, wcwidth() returns -1. */
+		/*
+		 * If the character isn't printable, wcwidth() returns
+		 * -1.  We assume width 1.
+		 */
 		wcw = wcwidth(wc);
-		if (wcw > 0)
+		if (wcw >= 0)
 		    w += wcw;
+		else
+		    w++;
 		multi = 0;
 		break;
 	    }
@@ -1152,8 +1157,10 @@
 				break;
 			    default:
 				wcw = wcwidth(cc);
-				if (wcw > 0)
+				if (wcw >= 0)
 				    remw -= wcw;
+				else
+				    remw--;
 				break;
 			    }
 #else
@@ -1215,8 +1222,10 @@
 				break;
 			    default:
 				wcw = wcwidth(cc);
-				if (wcw > 0)
+				if (wcw >= 0)
 				    maxwidth -= wcw;
+				else
+				    maxwidth--;
 				break;
 			    }
 #else
Index: Src/subst.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/subst.c,v
retrieving revision 1.59
diff -u -r1.59 subst.c
--- Src/subst.c	13 Sep 2006 20:55:30 -0000	1.59
+++ Src/subst.c	15 Sep 2006 13:00:27 -0000
@@ -837,29 +837,31 @@
 		    }
 		} else {
 		    f -= lpreone;
-		    if ((m = f % lpremul)) {
-			/*
-			 * Left over fraction of repeated string.
-			 */
-			MB_METACHARINIT();
-			/* Skip this much. */
-			m = lpremul - m;
-			for (t = premul; m > 0; ) {
-			    t += MB_METACHARLENCONV(t, &cchar);
-			    m -= WCWIDTH(cchar);
-			}
-			/* Output the rest. */
-			while (*t)
-			    *r++ = *t++;
-		    }
-		    for (cc = f / lpremul; cc--;) {
-			/* Repeat the repeated string */
-			MB_METACHARINIT();
-			for (c = lpremul, t = premul; c > 0; ) {
-			    cl = MB_METACHARLENCONV(t, &cchar);
-			    while (cl--)
+		    if (lpremul) {
+			if ((m = f % lpremul)) {
+			    /*
+			     * Left over fraction of repeated string.
+			     */
+			    MB_METACHARINIT();
+			    /* Skip this much. */
+			    m = lpremul - m;
+			    for (t = premul; m > 0; ) {
+				t += MB_METACHARLENCONV(t, &cchar);
+				m -= WCWIDTH(cchar);
+			    }
+			    /* Output the rest. */
+			    while (*t)
 				*r++ = *t++;
-			    c -= WCWIDTH(cchar);
+			}
+			for (cc = f / lpremul; cc--;) {
+			    /* Repeat the repeated string */
+			    MB_METACHARINIT();
+			    for (c = lpremul, t = premul; c > 0; ) {
+				cl = MB_METACHARLENCONV(t, &cchar);
+				while (cl--)
+				    *r++ = *t++;
+				c -= WCWIDTH(cchar);
+			    }
 			}
 		    }
 		    if (preone) {
@@ -910,19 +912,21 @@
 			while (*postone)
 			    *r++ = *postone++;
 		    }
-		    for (cc = f / lpostmul; cc--;) {
-			/* Begin the beguine */
-			for (t = postmul; *t; )
-			    *r++ = *t++;
-		    }
-		    if ((m = f % lpostmul)) {
-			/* Fill leftovers with chunk of repeated string */
-			MB_METACHARINIT();
-			while (m > 0) {
-			    cl = MB_METACHARLENCONV(postmul, &cchar);
-			    m -= WCWIDTH(cchar);
-			    while (cl--)
-				*r++ = *postmul++;
+		    if (lpostmul) {
+			for (cc = f / lpostmul; cc--;) {
+			    /* Begin the beguine */
+			    for (t = postmul; *t; )
+				*r++ = *t++;
+			}
+			if ((m = f % lpostmul)) {
+			    /* Fill leftovers with chunk of repeated string */
+			    MB_METACHARINIT();
+			    while (m > 0) {
+				cl = MB_METACHARLENCONV(postmul, &cchar);
+				m -= WCWIDTH(cchar);
+				while (cl--)
+				    *r++ = *postmul++;
+			    }
 			}
 		    }
 		}
@@ -983,37 +987,39 @@
 		     * first
 		     */
 		    f -= lpreone;
-		    if ((m = f % lpremul)) {
-			/*
-			 * Some fraction of the repeated string needed.
-			 */
-			/* Need this much... */
-			c = m;
-			/* ...skipping this much first. */
-			m = lpremul - m;
-			MB_METACHARINIT();
-			for (t = premul; m > 0; ) {
-			    t += MB_METACHARLENCONV(t, &cchar);
-			    m -= WCWIDTH(cchar);
-			}
-			/* Now the rest of the repeated string. */
-			while (c > 0) {
-			    cl = MB_METACHARLENCONV(t, &cchar);
-			    while (cl--)
-				*r++ = *t++;
-			    c -= WCWIDTH(cchar);
+		    if (lpremul) {
+			if ((m = f % lpremul)) {
+			    /*
+			     * Some fraction of the repeated string needed.
+			     */
+			    /* Need this much... */
+			    c = m;
+			    /* ...skipping this much first. */
+			    m = lpremul - m;
+			    MB_METACHARINIT();
+			    for (t = premul; m > 0; ) {
+				t += MB_METACHARLENCONV(t, &cchar);
+				m -= WCWIDTH(cchar);
+			    }
+			    /* Now the rest of the repeated string. */
+			    while (c > 0) {
+				cl = MB_METACHARLENCONV(t, &cchar);
+				while (cl--)
+				    *r++ = *t++;
+				c -= WCWIDTH(cchar);
+			    }
 			}
-		    }
-		    for (cc = f / lpremul; cc--;) {
-			/*
-			 * Repeat the repeated string.
-			 */
-			MB_METACHARINIT();
-			for (c = lpremul, t = premul; c > 0; ) {
-			    cl = MB_METACHARLENCONV(t, &cchar);
-			    while (cl--)
-				*r++ = *t++;
-			    c -= WCWIDTH(cchar);
+			for (cc = f / lpremul; cc--;) {
+			    /*
+			     * Repeat the repeated string.
+			     */
+			    MB_METACHARINIT();
+			    for (c = lpremul, t = premul; c > 0; ) {
+				cl = MB_METACHARLENCONV(t, &cchar);
+				while (cl--)
+				    *r++ = *t++;
+				c -= WCWIDTH(cchar);
+			    }
 			}
 		    }
 		    if (preone) {
@@ -1089,27 +1095,29 @@
 			c -= WCWIDTH(cchar);
 		    }
 		}
-		/* Repeat the repeated string */
-		for (cc = f / lpostmul; cc--;) {
-		    MB_METACHARINIT();
-		    for (c = lpostmul, t = postmul; *t; ) {
-			cl = MB_METACHARLENCONV(t, &cchar);
-			while (cl--)
-			    *r++ = *t++;
-			c -= WCWIDTH(cchar);
+		if (lpostmul) {
+		    /* Repeat the repeated string */
+		    for (cc = f / lpostmul; cc--;) {
+			MB_METACHARINIT();
+			for (c = lpostmul, t = postmul; *t; ) {
+			    cl = MB_METACHARLENCONV(t, &cchar);
+			    while (cl--)
+				*r++ = *t++;
+			    c -= WCWIDTH(cchar);
+			}
 		    }
-		}
-		/*
-		 * See if there's any fraction of the repeated
-		 * string needed to fill up the remaining space.
-		 */
-		if ((m = f % lpostmul)) {
-		    MB_METACHARINIT();
-		    while (m > 0) {
-			cl = MB_METACHARLENCONV(postmul, &cchar);
-			while (cl--)
-			    *r++ = *postmul++;
-			m -= WCWIDTH(cchar);
+		    /*
+		     * See if there's any fraction of the repeated
+		     * string needed to fill up the remaining space.
+		     */
+		    if ((m = f % lpostmul)) {
+			MB_METACHARINIT();
+			while (m > 0) {
+			    cl = MB_METACHARLENCONV(postmul, &cchar);
+			    while (cl--)
+				*r++ = *postmul++;
+			    m -= WCWIDTH(cchar);
+			}
 		    }
 		}
 	    }
Index: Src/utils.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/utils.c,v
retrieving revision 1.137
diff -u -r1.137 utils.c
--- Src/utils.c	13 Sep 2006 20:55:30 -0000	1.137
+++ Src/utils.c	15 Sep 2006 13:00:30 -0000
@@ -527,8 +527,10 @@
     if (widthp) {
 	int wcw = wcwidth(c);
 	*widthp = (s - buf);
-	if (wcw > 0)
+	if (wcw >= 0)
 	    *widthp += wcw;
+	else
+	    (*widthp)++;
     }
     if (swidep)
 	*swidep = s;
@@ -550,12 +552,12 @@
 {
     int wcw;
     /* assume a single-byte character if not valid */
-    if (wc == WEOF)
+    if (wc == WEOF || unset(MULTIBYTE))
 	return 1;
     wcw = wcwidth(wc);
-    /* if not printable, assume zero width */
-    if (wcw <= 0)
-	return 0;
+    /* if not printable, assume width 1 */
+    if (wcw < 0)
+	return 1;
     return wcw;
 }
 
@@ -4077,12 +4079,14 @@
 		num++;
 	    } else if (width) {
 		/*
-		 * Returns -1 if not a printable character; best
-		 * just to ignore these.
+		 * Returns -1 if not a printable character.  We
+		 * turn this into 1 for backward compatibility.
 		 */
 		int wcw = wcwidth(wc);
-		if (wcw > 0)
+		if (wcw >= 0)
 		    num += wcw;
+		else
+		    num++;
 	    } else
 		num++;
 	    laststart = ptr;

-- 
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


To access the latest news from CSR copy this link into a web browser:  http://www.csr.com/email_sig.php


^ permalink raw reply	[relevance 3%]

* Re: set - $foo resets set -x
  @ 2006-09-20 16:04  3%       ` Bart Schaefer
  0 siblings, 0 replies; 200+ results
From: Bart Schaefer @ 2006-09-20 16:04 UTC (permalink / raw)
  To: zsh-workers

On Sep 20,  7:40pm, Andrey Borzenkov wrote:
}
} do you keep every version?

No.  I believe I have tarballs of 2.1.something, 2.2, and 2.6.something
in backups of my files from old computers.  I have an extracted source
tree of 2.4 on my present home computer because I dug it out of one
such backup years ago to compare something to 3.0, and it was still
sitting there when I transferred my whole disk image last time.  I've
been keeping my own CVS repository since early in the 3.0 series but
most of my commit logs now say "merge from SourceForge ..." where the
"..." is a set of mailing list article numbers cribbed from ChangeLog.

I had a falling-out with the maintainer who took over for the 2.5
series because he was dead-set on removing all the csh-isms and making
zsh into a POSIX-conformant ksh clone, so I just stopped upgrading zsh
for a few years and don't have any records of what went on during that
time.  Saner heads prevailed around the advent of 2.6 and I came back.

Tracking this particular thing to the mailing list was as much thanks
to Zoltan not being able to spell "obsolescent" as anything else.  His
same typo appears in both very old sources and those list postings. :-)

-- 


^ permalink raw reply	[relevance 3%]

* PATCH: fix tests under non-usual locale
@ 2006-09-22 19:25  5% Andrey Borzenkov
  0 siblings, 0 replies; 200+ results
From: Andrey Borzenkov @ 2006-09-22 19:25 UTC (permalink / raw)
  To: zsh-workers

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

this is rather long standing. I do not see any easier way to fix it.

Index: Test/A06assign.ztst
===================================================================
RCS file: /cvsroot/zsh/zsh/Test/A06assign.ztst,v
retrieving revision 1.3
diff -u -p -r1.3 A06assign.ztst
- --- Test/A06assign.ztst 2 Feb 2005 17:03:51 -0000       1.3
+++ Test/A06assign.ztst 22 Sep 2006 19:23:40 -0000
@@ -55,6 +55,13 @@
  (( i == 30 ))
 0:add to integer

+# According to official printf info page:
+#    A floating-point argument must use a period before any fractional
+#    digits, but is printed according to the `LC_NUMERIC' category of the
+#    current locale.
+# So, force LC_ALL to be C (otherwise it overrides LC_NUMERIC)
+
+ LC_ALL=C LC_NUMERIC=C
  float f=3.4
  f+=2.3
  printf "%g\n" f
Index: Test/B03print.ztst
===================================================================
RCS file: /cvsroot/zsh/zsh/Test/B03print.ztst,v
retrieving revision 1.14
diff -u -p -r1.14 B03print.ztst
- --- Test/B03print.ztst  9 Aug 2005 00:32:58 -0000       1.14
+++ Test/B03print.ztst  22 Sep 2006 19:23:40 -0000
@@ -76,6 +76,8 @@
 >123 678
 >90 0

+# See A06assign for full explanation
+ LC_ALL=C LC_NUMERIC=C
  printf '%g %g\n' 123.45 678 90.1
 0:test g format specifier
 >123.45 678
Index: Test/E01options.ztst
===================================================================
RCS file: /cvsroot/zsh/zsh/Test/E01options.ztst,v
retrieving revision 1.14
diff -u -p -r1.14 E01options.ztst
- --- Test/E01options.ztst        8 Aug 2005 17:20:12 -0000       1.14
+++ Test/E01options.ztst        22 Sep 2006 19:23:41 -0000
@@ -195,6 +195,8 @@
 >8#21
 >023

+  # now-a-days cd can easily be localized. Force default (POSIX) locale
+  LC_ALL=C LC_MESSAGES=C
   setopt cdablevars
   # only absolute paths are eligible for ~-expansion
   cdablevar1=tmpcd
@@ -207,8 +209,8 @@
   cd cdablevar2
 1q:CDABLE_VARS option
 >back in options.tmp
- -?(eval):cd:4: no such file or directory: cdablevar1
- -?(eval):cd:10: no such file or directory: cdablevar2
+?(eval):cd:6: no such file or directory: cdablevar1
+?(eval):cd:12: no such file or directory: cdablevar2

 # CHASE_DOTS should go with CHASE_LINKS in B01cd.ztst
 # which saves me having to write it here.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (GNU/Linux)

iD8DBQFFFDi6R6LMutpd94wRArkYAJ47A6RnSZrG2bjDUbEDxirCU8w3YwCguaDN
JGJqphYz75Yk3i8lq5BjvLk=
=u0T8
-----END PGP SIGNATURE-----


^ permalink raw reply	[relevance 5%]

* Re: A POSIX and a UTF-8 question
       [not found]       ` <20060904231639.GB5162@scowler.net>
@ 2006-10-07  8:03  5%     ` Clint Adams
  0 siblings, 0 replies; 200+ results
From: Clint Adams @ 2006-10-07  8:03 UTC (permalink / raw)
  To: zsh-workers

> > My guess is that it's already too late for any newly-released version of
> > zsh to be considered stable enough to go into RHEL5.  I don't know about
> > Debian.  Clint?
> 
> We can probably squeeze a new version in as late as mid-October.

More accurate would be "within the next few days".


^ permalink raw reply	[relevance 5%]

* expert help sought [offtopic]
@ 2006-10-23  6:55  3% Helmut Jarausch
  2006-10-23 12:04  3% ` Roman Neuhauser
  0 siblings, 1 reply; 200+ results
From: Helmut Jarausch @ 2006-10-23  6:55 UTC (permalink / raw)
  To: zsh-workers

Hi,

please help.
I am desparately in need for help on the following piece of
code within a 'configure' file.
It's run under '/bin/sh' which is a symlink to '/bin/bash'
but I known that real experts are reading this mailing list.

The following code fails in the 2nd line with 
syntax error near unexpected token `('
../htmlwidget2/configure: line 4957: `  case `(ac_space=' '; set | grep ac_space) 2>&1` in'

here are the lines 4956 ff

(set) 2>&1 |
  case `(ac_space=' '; set | grep ac_space) 2>&1` in
  *ac_space=\ *)
    # `set' does not quote correctly, so add quotes (double-quote substitution
    # turns \\\\ into \\, and sed turns \\ into \).
    sed -n \
      -e "s/'/'\\\\''/g" \
      -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
    ;;
  *)
    # `set' quotes correctly as required by POSIX, so do not add quotes.
    sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
    ;;
  esac >> confcache

I admit I don't really understand what's going on and even what's meant
to be going on.

Many thanks for your help,

Helmut Jarausch

Lehrstuhl fuer Numerische Mathematik
RWTH - Aachen University
D 52056 Aachen, Germany


^ permalink raw reply	[relevance 3%]

* Re: expert help sought [offtopic]
  2006-10-23  6:55  3% expert help sought [offtopic] Helmut Jarausch
@ 2006-10-23 12:04  3% ` Roman Neuhauser
  0 siblings, 0 replies; 200+ results
From: Roman Neuhauser @ 2006-10-23 12:04 UTC (permalink / raw)
  To: Helmut Jarausch; +Cc: zsh-workers

# jarausch@igpm.rwth-aachen.de / 2006-10-23 08:55:47 +0200:
> I am desparately in need for help on the following piece of
> code within a 'configure' file.
> It's run under '/bin/sh' which is a symlink to '/bin/bash'
> but I known that real experts are reading this mailing list.
> 
> The following code fails in the 2nd line with 
> syntax error near unexpected token `('
> ../htmlwidget2/configure: line 4957: `  case `(ac_space=' '; set | grep ac_space) 2>&1` in'
 
    My experience from porting FreeBSD's periodic(8) to RedHat suggests
    that bash can't parse quite a bit of valid POSIX sh syntax, it loves
    to get lost in parentheses and subshells. Try moving the subshell
    into a separate statement.

> here are the lines 4956 ff
> 
> (set) 2>&1 |
>   case `(ac_space=' '; set | grep ac_space) 2>&1` in
>   *ac_space=\ *)
>     # `set' does not quote correctly, so add quotes (double-quote substitution
>     # turns \\\\ into \\, and sed turns \\ into \).
>     sed -n \
>       -e "s/'/'\\\\''/g" \
>       -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
>     ;;
>   *)
>     # `set' quotes correctly as required by POSIX, so do not add quotes.
>     sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
>     ;;
>   esac >> confcache
> 
> I admit I don't really understand what's going on and even what's meant
> to be going on.

    The code is meant to write config.cache.

-- 
How many Vietnam vets does it take to screw in a light bulb?
You don't know, man.  You don't KNOW.
Cause you weren't THERE.             http://bash.org/?255991


^ permalink raw reply	[relevance 3%]

* Re: Is wait not interruptable?
  @ 2006-12-15 21:00  3%   ` Peter Stephenson
  2006-12-16 21:37  2%     ` Bart Schaefer
  0 siblings, 1 reply; 200+ results
From: Peter Stephenson @ 2006-12-15 21:00 UTC (permalink / raw)
  To: Zsh hackers list

Peter Stephenson wrote:
> The first is that the subshell itself (the stuff in parentheses) doesn't
> get killed because it's waiting for the child process.  This seems to be a
> feature of SIGTERM.  If you "setopt trapsasync" or send a different signal
> such as SIGHUP it does get killed.  I'm not really sure why SIGTERM is
> different.

I got a chance to look at the code in more detail.

It's not SIGTERM that's different, it's SIGHUP.  The code is:

    if (isset(TRAPSASYNC)) {
	sigemptyset(set);
    } else {
	sigfillset(set);
	sigdelset(set, sig);
#ifdef POSIX_SIGNALS
	sigdelset(set, SIGHUP);  /* still don't know why we add this? */
#endif
	if (wait_cmd)
	{
	    /*
	     * Using "wait" builtin.  We should allow SIGINT and
	     * execute traps delivered to the shell.
	     */
	    int sigtr;
	    sigdelset(set, SIGINT);
	    for (sigtr = 1; sigtr <= NSIG; sigtr++) {
		if (sigtrapped[sigtr] & ~ZSIG_IGNORED)
		    sigdelset(set, sigtr);
	    }
	}
    }

So there's not really any mystery about how it behaves, only why it's
the way it is.  POSIX is fairly light on what to do with signals:
http://www.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_11

TRAPSASYNC was really introduced, as the name suggests, to affect trap
execution (see second paragraph of the section in the URL), not the
point at which the signal is delivered to the shell, but in practice it
does the former by altering the latter.  The may be a case for always
handling the signal immediately and altering the code only to delay any
traps.  But I'm still not sure why it's done the way it is.

-- 
Peter Stephenson <p.w.stephenson@ntlworld.com>
Web page now at http://homepage.ntlworld.com/p.w.stephenson/


^ permalink raw reply	[relevance 3%]

* Re: Is wait not interruptable?
  2006-12-15 21:00  3%   ` Peter Stephenson
@ 2006-12-16 21:37  2%     ` Bart Schaefer
  2006-12-17 16:00  0%       ` Peter Stephenson
  0 siblings, 1 reply; 200+ results
From: Bart Schaefer @ 2006-12-16 21:37 UTC (permalink / raw)
  To: Zsh hackers list

On Dec 15, 12:05pm, Peter Stephenson wrote:
}
} > The ^C was typed 1 second after the command was 
} > started, and the first sleep plodded along to completion for its full 
} > 3 seconds.
} 
} I *think* the patch below fixes (b) by sending SIGHUP to our own process
} group when exiting from a non-interactive shell, but I'll take advice on
} this.  (I can at least then get the test program to work with "setopt hup
} trapsasync".)  The manual isn't clear over whether this is supposed to
} happen non-interactively, though it would probably be fair to assume

This is a conflict between subshells and other non-interactive shells.  I
believe a subshell whose parent is an interactive shell should propagate
HUP signals to any tasks that it backgrounded, but shells that are non-
interactive from the get-go should not.

This has to do with the defnition of SIGHUP, which is that it's a signal
sent by a controlling TTY to the foreground process group leader when the
TTY is disconnected.  Shells that are not a foreground group leader are
not responsible for propagating HUP signals.

This is of course all a mishmash from the way shells work.  If a shell
has started a foreground job and given that control of the TTY, then
when the line drops the foreground job will get HUP'd but the shell
will not -- it'll just get EOF after it reaps the foreground job and
goes back to read from the terminal again.  Generating a HUP to all its
other jobs in that circumstance is just to mimic the behavior of the
OS signalling the whole process group, which would have happened if the
shell had been the foreground job at the time of the hangup.

} if HUP is set in a non-interactive shell you'd expect the SIGHUP to be
} sent.

Well, yes and no.  In a non-interactive shell there is theoretically no
controlling TTY, so there's no reason to expect to receive a HUP in the
first place, so no reason to expect it to be sent either.

[In another message]

} TRAPSASYNC was really introduced, as the name suggests, to affect trap
} execution (see second paragraph of the section in the URL), not the
} point at which the signal is delivered to the shell, but in practice it
} does the former by altering the latter.  The may be a case for always
} handling the signal immediately and altering the code only to delay any
} traps.  But I'm still not sure why it's done the way it is.

The signals are handled the way they are mainly because of non-re-entrant
libraries (particularly malloc) that can be confused or broken by having
signal code executed at an arbitrary point.  The "wait" builtin should
probably set TRAPS_ASYNC implicitly during its execution, based on the
text in 2.11 at that POSIX URL you indicated.


^ permalink raw reply	[relevance 2%]

* Re: Is wait not interruptable?
  2006-12-16 21:37  2%     ` Bart Schaefer
@ 2006-12-17 16:00  0%       ` Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2006-12-17 16:00 UTC (permalink / raw)
  To: Zsh hackers list, pws

Bart Schaefer wrote:
> } if HUP is set in a non-interactive shell you'd expect the SIGHUP to be
> } sent.
> 
> Well, yes and no.  In a non-interactive shell there is theoretically no
> controlling TTY, so there's no reason to expect to receive a HUP in the
> first place, so no reason to expect it to be sent either.

Hmm... there's may still be a process group, with the shell executing
the commands as leader, right?  Although that will depend how the script
itself was started.  Potentially, I suppose it might also kill what
started the script, if that wasn't using job control.

It seems from the original post that bash is doing something to kill its
children when it gets a signal during execution of a script, so there
seems to be some discrepancy I haven't investigated further.

I see the external command kill on Linux allows you to send a signal to
a process group, but I don't think there's a way of doing that within
zsh.

> } TRAPSASYNC was really introduced, as the name suggests, to affect trap
> } execution (see second paragraph of the section in the URL), not the
> } point at which the signal is delivered to the shell, but in practice it
> } does the former by altering the latter.  The may be a case for always
> } handling the signal immediately and altering the code only to delay any
> } traps.  But I'm still not sure why it's done the way it is.
> 
> The signals are handled the way they are mainly because of non-re-entrant
> libraries (particularly malloc) that can be confused or broken by having
> signal code executed at an arbitrary point.

But that doesn't apply here, I don't think.  The code in question is in
signal_suspend_setup().  We only execute that when the shell is about to
suspend execution to wait for a child to exit; the signal mask thus
prepared is only used during sigsuspend() or equivalent.  After the
SIGCHLD (or possibly some other signal) has been received, we then
immediately undo the signal mask (or ideally leave it to the OS when
sigsuspend() returns).  So there's no question of interrupting arbitrary
code if the signal handler is executed at that point.

Indeed, in the Linux manual entry for signal(2), sigsuspend() is listed
as a "safe function"; if a signal handler executes while the shell is
here, it's explicitly OK to call general OS stuff like malloc().  We use
dont_queue_signals() around the code that calls signal_suspend() in
waitforpid(), presumably because of this.

I wondered if it was because receiving the "wrong" signal when waiting
for SIGCHLD would confuse the shell logic.  But the loops surrounding
both calls to signal_suspend() seem to contradict that.

Surely the right thing to do would be to use a more lenient signal mask
in signal_suspend(), since we know that's a good place for signal
handling---although we might have to queue traps for later execution
unless one of TRAPSASYNC or the wait builtin is in use.

So is the delayed execution of traps the only issue?  What have I
missed?  Signal handlers theselves don't need to guard against recursive
calling, do they?

> The "wait" builtin should
> probably set TRAPS_ASYNC implicitly during its execution, based on the
> text in 2.11 at that POSIX URL you indicated.

I think you're right that the wait code (which is currently special) and
the TRAPSASYNC code should probably do the same thing.

-- 
Peter Stephenson <p.w.stephenson@ntlworld.com>
Web page now at http://homepage.ntlworld.com/p.w.stephenson/


^ permalink raw reply	[relevance 0%]

* Re: printf %b
  @ 2007-01-04 16:32  3%   ` Stephane Chazelas
  2007-01-04 17:07  0%     ` Peter Stephenson
  0 siblings, 1 reply; 200+ results
From: Stephane Chazelas @ 2007-01-04 16:32 UTC (permalink / raw)
  To: Zsh hackers list

On Thu, Jan 04, 2007 at 03:36:12PM +0000, Peter Stephenson wrote:
[...]
> - \0NNN works for "echo" (OK)
> - printf's arguments are like echo (OK, need \0NNN.
>   However, Stephane... this means that
>     printf '\123'
>   *doesn't* print S any more, it needs '\0123', too; that's changed
>   back with the fix below.)
> - print without options is the same as echo except for some additions
>   (\C-..., \M-..., \E) (WRONG: \0NNN doesn't work but \NNN does)
> - \NNN works for bindkey sequences (and hence for "print -b")
>   (OK).
> 
> The same goes for \0xNN and \xNN.
[...]

Hi Peter,

POSIX says

printf '\123'
and
printf %b '\0123'

should output "S" (note that the two syntaxes are different!)

and

printf '\0123' should output <NL>3
printf %b '\123' should output \123 (I think).

Cheers,
Stéphane


^ permalink raw reply	[relevance 3%]

* Re: printf %b
  2007-01-04 16:32  3%   ` Stephane Chazelas
@ 2007-01-04 17:07  0%     ` Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2007-01-04 17:07 UTC (permalink / raw)
  To: Zsh hackers list

Stephane Chazelas wrote:
> POSIX says
> 
> printf '\123'
> and
> printf %b '\0123'
> 
> should output "S" (note that the two syntaxes are different!)
> 
> and
> 
> printf '\0123' should output <NL>3
> printf %b '\123' should output \123 (I think).

Thanks, I hadn't found that bit.  At least the really world is screwed
up, too.

Index: Src/builtin.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/builtin.c,v
retrieving revision 1.171
diff -u -r1.171 builtin.c
--- Src/builtin.c	10 Dec 2006 23:27:03 -0000	1.171
+++ Src/builtin.c	4 Jan 2007 17:05:53 -0000
@@ -3490,7 +3490,7 @@
 	fmt = OPT_ARG(ops,'f');
     if (fmt)
 	fmt = getkeystring(fmt, &flen, OPT_ISSET(ops,'b') ? GETKEYS_BINDKEY :
-			   GETKEYS_PRINTF, &fmttrunc);
+			   GETKEYS_PRINTF_FMT, &fmttrunc);
 
     first = args;
     
@@ -3954,7 +3954,7 @@
 			b = getkeystring(metafy(curarg, curlen, META_USEHEAP),
 					 &l,
 					 OPT_ISSET(ops,'b') ? GETKEYS_BINDKEY :
-					 GETKEYS_PRINTF, &nnl);
+					 GETKEYS_PRINTF_ARG, &nnl);
 		    } else {
 			b = curarg;
 			l = curlen;
Index: Src/zsh.h
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/zsh.h,v
retrieving revision 1.104
diff -u -r1.104 zsh.h
--- Src/zsh.h	4 Jan 2007 15:41:23 -0000	1.104
+++ Src/zsh.h	4 Jan 2007 17:05:55 -0000
@@ -1990,8 +1990,10 @@
  */
 /* echo builtin */
 #define GETKEYS_ECHO	(GETKEY_BACKSLASH_C)
-/* printf format string */
-#define GETKEYS_PRINTF	(GETKEY_BACKSLASH_C)
+/* printf format string:  \123 -> S, \0123 -> NL 3 */
+#define GETKEYS_PRINTF_FMT	(GETKEY_OCTAL_ESC|GETKEY_BACKSLASH_C)
+/* printf argument:  \123 -> \123, \0123 -> S */
+#define GETKEYS_PRINTF_ARG	(GETKEY_BACKSLASH_C)
 /* Full print without -e */
 #define GETKEYS_PRINT	(GETKEY_OCTAL_ESC|GETKEY_BACKSLASH_C|GETKEY_EMACS)
 /* bindkey */

-- 
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


To access the latest news from CSR copy this link into a web browser:  http://www.csr.com/email_sig.php


^ permalink raw reply	[relevance 0%]

* PATCH: printf width with multibyte characters
@ 2007-01-09 21:35  2% Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2007-01-09 21:35 UTC (permalink / raw)
  To: Zsh Hackers' List

This is, I think, the last of the places where widths of characters
needs to be calculated using multibyte characters if MULTIBYTE is set.
Consistently with other widths, the printing width isn't included, only
a count of the number of characters.

I would guess POSIX only makes guarantees for this for the portable
character set.

Index: Src/builtin.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/builtin.c,v
retrieving revision 1.172
diff -u -r1.172 builtin.c
--- Src/builtin.c	4 Jan 2007 17:24:02 -0000	1.172
+++ Src/builtin.c	9 Jan 2007 21:31:59 -0000
@@ -3792,6 +3792,12 @@
 	return ret;
     }
     
+    /*
+     * All the remaining code in this function is for printf-style
+     * output (printf itself, or print -f).  We still have to handle
+     * special cases of printing to a ZLE buffer or the history, however.
+     */
+
     if (OPT_ISSET(ops,'z') || OPT_ISSET(ops,'s')) {
 #ifdef HAVE_OPEN_MEMSTREAM
     	if ((fout = open_memstream(&buf, &mcount)) == NULL)
@@ -3948,26 +3954,74 @@
 	    case 's':
 	    case 'b':
 		if (curarg) {
-		    char *b;
-		    int l;
+		    char *b, *ptr;
+		    int lbytes, lchars, lleft;
+#ifdef MULTIBYTE_SUPPORT
+		    mbstate_t mbs;
+#endif
+
 		    if (*c == 'b') {
 			b = getkeystring(metafy(curarg, curlen, META_USEHEAP),
-					 &l,
+					 &lbytes,
 					 OPT_ISSET(ops,'b') ? GETKEYS_BINDKEY :
 					 GETKEYS_PRINTF_ARG, &nnl);
 		    } else {
 			b = curarg;
-			l = curlen;
+			lbytes = curlen;
+		    }
+		    /*
+		     * Handle width/precision here and use fwrite so that
+		     * nul characters can be output.
+		     *
+		     * First, examine width of string given that it
+		     * may contain multibyte characters.  The output
+		     * widths are for characters, so we need to count
+		     * (in lchars).  However, if we need to truncate
+		     * the string we need the width in bytes (in lbytes).
+		     */
+		    ptr = b;
+#ifdef MULTIBYTE_SUPPORT
+		    memset(&mbs, 0, sizeof(mbs));
+#endif
+
+		    for (lchars = 0, lleft = lbytes; lleft > 0; lchars++) {
+			int chars;
+
+			if (lchars == prec) {
+			    /* Truncate at this point. */
+			    lbytes = ptr - b;
+			    break;
+			}
+#ifdef MULTIBYTE_SUPPORT
+			if (isset(MULTIBYTE)) {
+			    chars = mbrlen(ptr, lleft, &mbs);
+			    if (chars < 0) {
+				/*
+				 * Invalid/incomplete character at this
+				 * point.  Assume all the rest are a
+				 * single byte.  That's about the best we
+				 * can do.
+				 */
+				lchars += lleft;
+				lbytes = (ptr - b) + lleft;
+				break;
+			    } else if (chars == 0) {
+				/* NUL, handle as real character */
+				chars = 1;
+			    }
+			}
+			else	/* use the non-multibyte code below */
+#endif
+			    chars = 1; /* compiler can optimise this...*/
+			lleft -= chars;
+			ptr += chars;
 		    }
-		    /* handle width/precision here and use fwrite so that
-		     * nul characters can be output */
-		    if (prec >= 0 && prec < l) l = prec;
 		    if (width > 0 && flags[2]) width = -width;
-		    if (width > 0 && l < width)
-		    	count += fprintf(fout, "%*c", width - l, ' ');
-		    count += fwrite(b, 1, l, fout);
-		    if (width < 0 && l < -width)
-		    	count += fprintf(fout, "%*c", -width - l, ' ');
+		    if (width > 0 && lchars < width)
+		    	count += fprintf(fout, "%*c", width - lchars, ' ');
+		    count += fwrite(b, 1, lbytes, fout);
+		    if (width < 0 && lchars < -width)
+		    	count += fprintf(fout, "%*c", -width - lchars, ' ');
 		    if (nnl) {
 			/* If the %b arg had a \c escape, truncate the fmt. */
 			flen = c - fmt + 1;
Index: Test/D07multibyte.ztst
===================================================================
RCS file: /cvsroot/zsh/zsh/Test/D07multibyte.ztst,v
retrieving revision 1.12
diff -u -r1.12 D07multibyte.ztst
--- Test/D07multibyte.ztst	7 Nov 2006 22:47:07 -0000	1.12
+++ Test/D07multibyte.ztst	9 Jan 2007 21:31:59 -0000
@@ -311,3 +311,7 @@
 0:Delimiters in parameter flags
 >barXX
 >YYYYYHIbar
+
+  printf "%4.3s\n" főobar
+0:Multibyte characters in printf widths
+> főo

-- 
Peter Stephenson <p.w.stephenson@ntlworld.com>
Web page now at http://homepage.ntlworld.com/p.w.stephenson/


^ permalink raw reply	[relevance 2%]

* Re: zsh handling of non-standard if-evaluations
       [not found]     ` <200701282157.l0SLveDn003073@pwslaptop.csr.com>
@ 2007-02-02 21:32  3%   ` Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2007-02-02 21:32 UTC (permalink / raw)
  To: Zsh Hackers' List

On Sun, 28 Jan 2007 21:57:40 +0000
Peter Stephenson <p.w.stephenson@ntlworld.com> wrote:
> (That seems a little strange, actually.  Either you'd expect == to find
> a programme called =, or you'd expect == to be a normal argument without
> any pattern match failure.  It seems that you need to quote the second
> argument: =\= does find = in the path.  That strikes me as a bug.)

Here's a rationalization, so that == does find = (unless NO_EQUALS is
on, obviously), and likewise for any other metacharacters that haven't
been dealt with at the time of the = expansion (note this is before
globbing---necessarily in the case of ~-expansion which is performed at
the same time as =-expansion).

However, it's very tempting to make "==" an exception (and document it)
since it's kind of intuitively obvious (if you're a geek) that "==" is a
test for equality rather than an attempt to look for a programme called
"=".  Still, POSIX doesn't give any imperative reason to do so.

(In case anyone's unclear, == in [[ ... ]] is and has always been
handled specially because zsh understands the syntax of [[ ... ]],
so it doesn't get handled as a normal command.  [ ... ] and test, on the
other hand, are ordinary builtins, hence the problem.)

Index: Src/string.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/string.c,v
retrieving revision 1.8
diff -u -r1.8 string.c
--- Src/string.c	28 Oct 2005 17:34:33 -0000	1.8
+++ Src/string.c	2 Feb 2007 21:29:26 -0000
@@ -135,7 +135,7 @@
     return ptr;
 }
 
-/* like strdup(), but with a specified length */
+/* like dupstring(), but with a specified length */
 
 /**/
 mod_export char *
Index: Src/subst.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/subst.c,v
retrieving revision 1.73
diff -u -r1.73 subst.c
--- Src/subst.c	26 Jan 2007 19:18:17 -0000	1.73
+++ Src/subst.c	2 Feb 2007 21:29:27 -0000
@@ -570,21 +570,21 @@
 	    return 1;
 	}
     } else if (*str == Equals && isset(EQUALS) && str[1]) {   /* =foo */
-	char sav, *pp, *cnam;
+	char *pp, *cnam, *cmdstr, *str1 = str+1;
 
-	for (pp = str + 1; !isend2(*pp); pp++);
-	sav = *pp;
-	*pp = 0;
-	if (!(cnam = findcmd(str + 1, 1))) {
+	for (pp = str1; !isend2(*pp); pp++)
+	    ;
+	cmdstr = dupstrpfx(str1, pp-str1);
+	untokenize(cmdstr);
+	remnulargs(cmdstr);
+	if (!(cnam = findcmd(cmdstr, 1))) {
 	    if (isset(NOMATCH))
-		zerr("%s not found", str + 1);
+		zerr("%s not found", cmdstr);
 	    return 0;
 	}
 	*namptr = dupstring(cnam);
-	if (sav) {
-	    *pp = sav;
+	if (*pp)
 	    *namptr = dyncat(*namptr, pp);
-	}
 	return 1;
     }
     return 0;

-- 
Peter Stephenson <p.w.stephenson@ntlworld.com>
Web page now at http://homepage.ntlworld.com/p.w.stephenson/


^ permalink raw reply	[relevance 3%]

* "jobs" command within substitution
@ 2007-03-08 19:27  4% Micah Cowan
       [not found]     ` <17393e3e0703081155o7a240628t49fae220ac9f49ae@mail.gmail.com>
  0 siblings, 1 reply; 200+ results
From: Micah Cowan @ 2007-03-08 19:27 UTC (permalink / raw)
  To: zsh-workers

Hello, all. This is my first post to this group.

I scoured the manpages and list archives, but could not find the answer 
I seek.

My question, in a nutshell, is: How can I effectively use the "jobs" 
builtin command in producing the interactive prompt?

-- THE PROBLEM --

The following line was the obvious choice (provided appropriate options 
are set), and indeed works fine in several other shells:

: PS1='$(jobs | pjobs_gen_prompt)'
: # pjobs_gen_prompt is a custom shell fn

However, I've discovered that, the output of

: echo $(jobs)

is empty (apart from the spurious newline), even when executing "jobs" 
in the current shell would produce output. In fact,

: ( jobs )

still produces the expected, same results as execution directly within 
the current shell.

It might be argued, due to the language of POSIX ("The jobs utility 
shall display the status of jobs that were started in the current shell 
environment"), that it is not required to do so for /copies/ of the 
current shell environment: however, the case between $(jobs) and (jobs) 
should at least be consistent, since their behavior in POSIX is defined 
the same. I don't think the language in the standard is precise enough 
to warrant me claiming that this actually /breaks/ POSIX, but it seems 
against the likely /intentions/ at any rate, at least to me.

My personal opinion is that this is a bug, but I'd be happy to hear 
explanations if this is intended behavior.

-- WORKAROUNDS? --

Regardless of whether this is a bug or not, I still need a way to do 
what I want. You can get a very clear picture of what I'm trying to 
accomplish by downloading my script (it lacks spit and polish that I 
plan to add soon, so it's not the "official" version yet; but it's 
functional):

http://micah.cowan.name/svn/promptjobs/trunk/prompt-jobs.sh

^^^ source this, DON'T execute it (it won't work).

and sourcing it (". ./prompt-jobs.sh"). After this, run a couple of jobs 
in the foreground (say, "man man" or "ls | less") and then suspend them 
via Ctrl-Z. In bash, this will produce a prompt such as:

   micah(1:man 2:ls)$

The prompt will be colorized in color-supporting terminals.

I wish to get the same effect in zsh. You can follow the same steps in 
zsh, and will get the colorized version of your prompt, but you won't 
get the joblists.

In the case of bash, I'm actually not using command-substitution on the 
value of PS1, but I'm using bash's PROMPT_COMMAND to /set/ PS1's value 
via a command-substitution. This is because, when bash is interpolating 
the value from PS1, it treats the escape-sequence protectors \[ and \] 
(equivalent to zsh's %{, %}) before it does the command-substitution, 
which would cause pjobs_gen_prompt's \[, \] to be printed literally. Zsh 
treats %{ and %} after command-substitution, so that's not a problem.

Is there any /other/ way to do this that will work, today, for zsh? 
Perhaps an equivalent to bash's PROMPT_COMMAND that I haven't found in 
the documentation, or some option I missed that will allow jobs within 
command substitution to produce the output I'm expecting?

Thanks /very/ much for taking the time to read this length explanation. 
And, please let me know what you think of my little script :)

-- 
Micah J. Cowan
Programmer, musician, typesetting enthusiast, gamer...
http://micah.cowan.name/


^ permalink raw reply	[relevance 4%]

* Re: "jobs" command within substitution
       [not found]       ` <45F070A9.5060502@cowan.name>
@ 2007-03-08 21:19  0%     ` Matt Wozniski
  2007-03-08 22:00  3%       ` Micah Cowan
  0 siblings, 1 reply; 200+ results
From: Matt Wozniski @ 2007-03-08 21:19 UTC (permalink / raw)
  To: zsh-workers, zsh-users

On 3/8/07, Micah Cowan wrote:
> Matt Wozniski wrote:
> > On 3/8/07, Micah Cowan wrote:
> >> Hello, all. This is my first post to this group.
> >>
> >> I scoured the manpages and list archives, but could not find the answer
> >> I seek.
> >>
> >> My question, in a nutshell, is: How can I effectively use the "jobs"
> >> builtin command in producing the interactive prompt?
> >
> > Rather than trying to parse the output of the 'jobs' command, you
> > might find yourself better suited by manipulating the variables
> > $jobdirs, $jobstates, and $jobtexts.  You correctly identified the
> > problem that you're hitting - $(jobs) is running in a subshell that
> > doesn't have any jobs in its job table.  I agree, however, that (jobs)
> > should also be blank, since it's also running in a subshell.  If,
> > however, you're dead-set on parsing the output of 'jobs', you could
> > use a syntax like 'jobs > >(read jobtext; echo $jobtext)', which is a
> > clever way to run jobs in the current shell and do the parsing in a
> > subshell via process substitution.
>
> Myself, I'd prefer to see both subshells produce the same output as the
> "current shell", as bash, pdksh and ksh do. However, dash goes the other
> way and makes ( jobs ) emit nothing (for all its claims of being a POSIX
> shell, though, dash is fairly broken in some respects, such as broken
> arithmetic expansion and lack of a line-editor [which POSIX requires]).
> I'd be interested in seeing what the OpenGroup committee has to say
> about it, since the standard is far from clear on the subject.
>
> I was not familiar with the variables you mention above. However, I'm
> not sure they solve the problem, as yet again, invoking them within a
> command-substitution will produce no information. The same problem would
> be true of using the other syntax you describe: I still have no
> available means to run the commands every time the prompt is issued,
> apart from within command substitution, which will kill the job-state
> info. Is there any way to get what I want executing in the "current" shell?
>
> Also, had you meant to post this reply to the list? It appears to have
> been sent to me only.

Yes, of course, I had meant to send it to the list.  My mistake.
*sheepish grin*.  So, you're right - the special variable $jobtexts
wouldn't match up in the subshell, but you could do something like
this:

$ function precmd {
export jt=""
for i in ${(kv)jobtexts}; jt="$jt:${i%% *}"
jt=${jt#:}
}

$ echo $jt
1:find:2:sleep

$ echo $(echo $jt)
1:find:2:sleep

And then you have a not-special, not-array version of jobtexts
exported into the environment of subshells that you can manipulate
however you want - and it even lets you remove the ugly dependence on
awk.  ;-)

(precmd is a function that gets called every time the editor is about
to display a prompt, FYI).

Like I said, though - even though this should take no effort
whatsoever to do with zsh - no more than 5 lines or so - it would be
difficult to maintain compatibility with bash.

The best way I can think of to do what you want, off the top of my
head, is the following:

function precmd {
  psvar[1]=""
  # For each key and each value in jobtexts
  for i in ${(kv)jobtexts}; do
    # Come up with a separator between psvar[1] and this text
    if [[ $sep == " " ]]; then
      sep=":"
    else
      sep=" "
    fi
    # Then tack it on to the end of psvar[1] - Removing from
    # the first space to the end of the element, if it has a space
    psvar[1]="${psvar[1]}$sep${i%% *}"
  done
  # Remove leading space we accidentally inserted
  psvar[1]=${psvar[1]# }
}

and

# Tell the prompt to reference psvar[1] (%?v == psvar[?])
PS1='micah(%1v)'

You don't even need to use prompt_subst.

Frankly, I'd just make your script check for ZSH right off the bat and
do it the simple way, leaving the complicated stuff for shells that
don't give you an elegant solution.

~Matt


^ permalink raw reply	[relevance 0%]

* Re: "jobs" command within substitution
  2007-03-08 21:19  0%     ` Matt Wozniski
@ 2007-03-08 22:00  3%       ` Micah Cowan
  0 siblings, 0 replies; 200+ results
From: Micah Cowan @ 2007-03-08 22:00 UTC (permalink / raw)
  To: Matt Wozniski; +Cc: zsh-workers, zsh-users

Matt Wozniski wrote:
> On 3/8/07, Micah Cowan wrote:
>> Matt Wozniski wrote:
>> > On 3/8/07, Micah Cowan wrote:
>> >> Hello, all. This is my first post to this group.
>> >>
>> >> I scoured the manpages and list archives, but could not find the 
>> answer
>> >> I seek.
>> >>
>> >> My question, in a nutshell, is: How can I effectively use the "jobs"
>> >> builtin command in producing the interactive prompt?
>> >
>> > Rather than trying to parse the output of the 'jobs' command, you
>> > might find yourself better suited by manipulating the variables
>> > $jobdirs, $jobstates, and $jobtexts.  You correctly identified the
>> > problem that you're hitting - $(jobs) is running in a subshell that
>> > doesn't have any jobs in its job table.  I agree, however, that (jobs)
>> > should also be blank, since it's also running in a subshell.  If,
>> > however, you're dead-set on parsing the output of 'jobs', you could
>> > use a syntax like 'jobs > >(read jobtext; echo $jobtext)', which is a
>> > clever way to run jobs in the current shell and do the parsing in a
>> > subshell via process substitution.
>>
>> Myself, I'd prefer to see both subshells produce the same output as the
>> "current shell", as bash, pdksh and ksh do. However, dash goes the other
>> way and makes ( jobs ) emit nothing (for all its claims of being a POSIX
>> shell, though, dash is fairly broken in some respects, such as broken
>> arithmetic expansion and lack of a line-editor [which POSIX requires]).
>> I'd be interested in seeing what the OpenGroup committee has to say
>> about it, since the standard is far from clear on the subject.
>>
>> I was not familiar with the variables you mention above. However, I'm
>> not sure they solve the problem, as yet again, invoking them within a
>> command-substitution will produce no information. The same problem would
>> be true of using the other syntax you describe: I still have no
>> available means to run the commands every time the prompt is issued,
>> apart from within command substitution, which will kill the job-state
>> info. Is there any way to get what I want executing in the "current" 
>> shell?
>>
>> Also, had you meant to post this reply to the list? It appears to have
>> been sent to me only.
> 
> Yes, of course, I had meant to send it to the list.  My mistake.
> *sheepish grin*.  So, you're right - the special variable $jobtexts
> wouldn't match up in the subshell, but you could do something like
> this:
> 
> $ function precmd {
> export jt=""
> for i in ${(kv)jobtexts}; jt="$jt:${i%% *}"
> jt=${jt#:}
> }
> 
> $ echo $jt
> 1:find:2:sleep
> 
> $ echo $(echo $jt)
> 1:find:2:sleep
> 
> And then you have a not-special, not-array version of jobtexts
> exported into the environment of subshells that you can manipulate
> however you want - and it even lets you remove the ugly dependence on
> awk.  ;-)
> 
> (precmd is a function that gets called every time the editor is about
> to display a prompt, FYI).

precmd looks to be /exactly/ what I was looking for, then. I'll I was so 
focused on the bashism, that I was searching and re-searching the 
special parameters, rather than special functions. Thanks!

Using jobtexts, etc is probably preferable to using the "jobs" output 
anyway, since zsh's appears to have a non-standard format (splitting a 
single job across lines), which will make my life more difficult. It's 
also probably more precise.

I probably won't lose the awk dependency, though, since the awk script 
also does some clean-up on the command names, and I'll probably add 
support for displaying the /arguments/ to certain commands (such as 
vim), or an alert color for some commands (sudo).

> Like I said, though - even though this should take no effort
> whatsoever to do with zsh - no more than 5 lines or so - it would be
> difficult to maintain compatibility with bash.

Eh, I've managed pretty well so far. Where I can't rely on common 
syntax, I can test for the shell (as you can see by my spamming of the 
shell namespace with vars like PJOBS_ZSH). I'm aiming for compliance 
with as many shells will provide me with a hook to the prompt, and are 
reasonably POSIX-compliant.

> The best way I can think of to do what you want, off the top of my
> head, is the following:

<solution snipped>

That'll make a great reference. I'll need to complicate it a bit what 
with my use of terminal escape sequences (tput output) and whatnot, but 
that makes a great start.

> Frankly, I'd just make your script check for ZSH right off the bat and
> do it the simple way, leaving the complicated stuff for shells that
> don't give you an elegant solution.

Yeah, I'm already doing that (it's just that the zsh-specific solution 
doesn't work). I already have to cater specifically to bash 
(PROMPT_COMMAND), and even the set of shells that will let me hook in 
via prompt substitution each have their unique ways of telling the 
line-editor to ignore the invisible terminal escape sequences I use for 
coloring.

Thanks very much for the help. For some reason, I simply couldn't find 
precmd or the job* vars on my own.

-- 
Micah J. Cowan
Programmer, musician, typesetting enthusiast, gamer...
http://micah.cowan.name/


^ permalink raw reply	[relevance 3%]

* Re: Bug in ulimit ?
  @ 2007-04-17 10:49  3%       ` Micah Cowan
  0 siblings, 0 replies; 200+ results
From: Micah Cowan @ 2007-04-17 10:49 UTC (permalink / raw)
  To: Micah Cowan; +Cc: davidpeer, zsh-workers

Micah Cowan wrote:
> Stephane Chazelas wrote:
>> Works as I'd expect from your man page quote here:
>>
>> $ time zsh -c 'ulimit -t 0; while :; do :; done'
>> zsh: cpu limit exceeded  zsh -c 'ulimit -t 0; while :; do :; done'
>> zsh -c 'ulimit -t 0; while :; do :; done'  0.72s user 0.28s system 95% cpu 1.050 total
> 
> Yes, I get those same results. However, in an interactive shell:

<snip>

Of course, this doesn't explain why you got your results for /soft/
limits above. I'm having some trouble isolating what the exact
difference is, but there does seem to be a difference between current
process's set limit, and child process whose limit was set by parent.


$ bash -c 'ulimit -t 0; ulimit -Ht; while :; do :; done'
0
Killed
$ bash -c 'ulimit -t 0; ulimit -Ht; (while :; do :; done)'
0
<loops forever>
$ bash -c 'ulimit -St 0; while :; do :; done'
CPU time limit exceeded (core dumped)
$ bash -c 'ulimit -St 0; (while :; do :; done)'
<loops forever>

We can see that for both hard and soft limits, the child is not stopped.
(Note that bash's default is to set the hard limit, unlike zsh which
sets soft. POSIX gives very little specification to ulimit whatsoever). But:

$ zsh -c 'ulimit -Ht 0; ulimit -Ht; while :; do :; done'
0
<loops>
$ zsh -c 'ulimit -Ht 0; (ulimit -Ht; while :; do :; done)'
0
<loops>
$ zsh -c 'ulimit -St 0; ulimit -St; while :; do :; done'
0
CPU time limit exceeded (core dumped)
$ zsh -c 'ulimit -St 0; (ulimit -St; while :; do :; done)'
0
CPU time limit exceeded (core dumped)

Note that zsh's behavior seems to depend more on whether it's hard or
soft, rather than whether it's the child or the original.

I can't make heads nor tails of it, but /something/'s definitely screwy.

-- 
Micah J. Cowan
Programmer, musician, typesetting enthusiast, gamer...
http://micah.cowan.name/


^ permalink raw reply	[relevance 3%]

* Re: PATCH: =~ regex match
  @ 2007-04-26 20:19  3%   ` Phil Pennock
  2007-04-27  9:33  3%     ` Peter Stephenson
  0 siblings, 1 reply; 200+ results
From: Phil Pennock @ 2007-04-26 20:19 UTC (permalink / raw)
  To: zsh-workers

On 2007-04-26 at 10:31 +0100, Peter Stephenson wrote:
> I thought about =~ and it seemed to me that since it would be largely
> there for bash compatibility it would be better to do it with the system
> regexp library, which would be more compatible and wouldn't depend on
> optional packages.  It shouldn't be too hard to do.  We probably
> wouldn't support BASH_REMATCH, however.

Bash uses extended regexps, so the PCRE stuff should be vaguely a
superset, although it might be worth adding a different match operator,
overloading with condid, to specify some PCRE options to pcre_compile; I
was thinking sticking another case before CPCRE_PLAIN in cond_pcre_match
which sets pcre_opts and then falls through to the plain case.  That
would mostly affect newline handling.

I was also thinking about how to deal with UTF8, which is another
potential advantage to sticking with PCRE.  Zsh isn't specifically
UTF-8 when in widechar, is it?  Is the "right" way something like
(untested):

#if defined(MULTIBYTE_SUPPORT) && defined(HAVE_NL_LANGINFO) && defined(CODESET)
  {
    static int have_utf8_pcre = -1;

    if (!strcmp(nl_langinfo(CODESET), "UTF-8")) {
      if (have_utf8_pcre == -1) {
        if (pcre_config(PCRE_CONFIG_UTF8, &have_utf8_pcre) {
	  have_utf8_pcre = -2; /* erk, failed to ask */
	}
      }

      if (have_utf8_pcre > 0) {
        pcre_opts |= PCRE_UTF8;
      }
    }
  }
#endif

Which means that in non-UTF-8 multibyte locales, you'll get per-octet
regexps, but in UTF-8 locales, a multibyte zsh with a libpcre also built
with UTF-8 support will let you get "proper" matching.

I'm envious of the =~ operator but that doesn't mean that I want to lose
the funky stuff of PCRE when I use it -- I like negative lookahead
assertions, freak that I am.

As to BASH_REMATCH ... how frowned upon are new zsh options which
auto-set for compatibility?  It wouldn't be hard, since the
infrastructure's all already in place.  Call the zsh option BASH_REMATCH
to set the BASH_REMATCH variable.  :^)

% [[ alphabetical =~ ^a([^a]+)a([^a]+)a ]] && print -l $match
lph
betic

Change the last parameter in cond_pcre_match()'s call to
zpcre_get_substrings() to be non-NULL if the zsh option is set so that a
different receptacle to "match" is set.

If I code this up, is it likely to make it in?  If not, I won't bother
as full bash compatibility isn't so important to me, only having =~.
It's not like POSIX is involved here ...

Thanks,
-Phil


^ permalink raw reply	[relevance 3%]

* Re: PATCH: =~ regex match
  2007-04-26 20:19  3%   ` Phil Pennock
@ 2007-04-27  9:33  3%     ` Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2007-04-27  9:33 UTC (permalink / raw)
  To: zsh-workers

Phil Pennock <zsh-workers+phil.pennock@spodhuis.org> wrote:
> I was also thinking about how to deal with UTF8, which is another
> potential advantage to sticking with PCRE.  Zsh isn't specifically
> UTF-8 when in widechar, is it?

That's correct, but that's actually an advantage of the system regular
expression libraries, which will use the locale in the same way as the
rest of the system to handle multibyte strings.

> #if defined(MULTIBYTE_SUPPORT) && defined(HAVE_NL_LANGINFO) && defined
> #(CODESET)
>   {
>     static int have_utf8_pcre = -1;
> 
>     if (!strcmp(nl_langinfo(CODESET), "UTF-8")) {
>       if (have_utf8_pcre == -1) {
>         if (pcre_config(PCRE_CONFIG_UTF8, &have_utf8_pcre) {
> 	  have_utf8_pcre = -2; /* erk, failed to ask */
> 	}
>       }
> 
>       if (have_utf8_pcre > 0) {
>         pcre_opts |= PCRE_UTF8;
>       }
>     }
>   }
> #endif
> 
> Which means that in non-UTF-8 multibyte locales, you'll get per-octet
> regexps, but in UTF-8 locales, a multibyte zsh with a libpcre also
> built with UTF-8 support will let you get "proper" matching.

You might want to add that to the pcre library, if appropriate; you
probably also need to test for isset(MULTIBYTE) since unsetting the
multibyte option is supposed to force all strings to be single bytes.

> I'm envious of the =~ operator but that doesn't mean that I want to
> lose the funky stuff of PCRE when I use it -- I like negative
> lookahead assertions, freak that I am.

I don't think there's any question of removing -pcre-match.

> As to BASH_REMATCH ... how frowned upon are new zsh options which
> auto-set for compatibility?  It wouldn't be hard, since the
> infrastructure's all already in place.  Call the zsh option
> BASH_REMATCH to set the BASH_REMATCH variable.  :^)

That would be perfectly sensible.

> If I code this up, is it likely to make it in?  If not, I won't bother
> as full bash compatibility isn't so important to me, only having =~.
> It's not like POSIX is involved here ...

Well, actually it is, since basic shell features should use basic system
features wherever possible rather than requiring optional libraries.  If
we're going to add =~ because it's in bash I don't seen any real point
in duplicating -pcre-match to do it, and the POSIX
regcomp/regexec/regerror/regfree should be available just about
everywhere.

When that happens...

> I just double-checked something in passing and discovered that Bash
> uses the equivalent of KSH_ARRAYS, so the variable would need to be
> marked similarly to that and provided with the entire matched portion
> of the string in index 0.

We'll do it the usual way and respect the setting of KSH_ARRAYS.  This
is on in bash compatibility mode.  If that's not set, but BASH_REMATCH
is, we'll put the first match in $BASH_REMATCH[1].

-- 
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


To access the latest news from CSR copy this link into a web browser:  http://www.csr.com/email_sig.php

To get further information regarding CSR, please visit our Investor Relations page at http://ir.csr.com/csr/about/overview


^ permalink raw reply	[relevance 3%]

* PATCH: and query for malloc(0).
@ 2007-04-27 21:35  3% Peter Stephenson
  2007-04-30  3:29  3% ` Geoff Wing
  0 siblings, 1 reply; 200+ results
From: Peter Stephenson @ 2007-04-27 21:35 UTC (permalink / raw)
  To: Zsh hackers list

Playing with POSIX regexes, I found some errors coming from zsh's memory
allocation with debugging on.  These turned out to resolve to some
malloc()s and free()s for zero length and the following oddity in
malloc():

    /* some systems want malloc to return the highest valid address plus one
       if it is called with an argument of zero */

    if (!size)
	return (MALLOC_RET_T) m_high;

Wuh...err...wuh...err...?   As I've commented in the patch below,

       TODO: really?  Suppose we allocate more memory, so
       that this is now in bounds, then a more rational application
       that thinks it can free() anything it malloc'ed, even
       of zero length, calls free for it?  Aren't we in big
       trouble?  Wouldn't it be safer just to allocate some
       memory anyway?

Actually, what was causing the immediate problem was a free() on
the address when it *was* still m_high, which was (correctly) being
flagged as an error by memory debugging (valgrind agreed something
was rotten).  But actually I think that's a side effect of the odd
code above.

This code already seemed to be ancient at the first mention of mem.c in
the mailing list archive in 1995.  If anyone knows anything, please
speak.  Otherwise I will commit the following patch.  valgrind and
the shell's own routines are much happier with it.

Index: Src/mem.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/mem.c,v
retrieving revision 1.14
diff -u -r1.14 mem.c
--- Src/mem.c	30 May 2006 22:35:03 -0000	1.14
+++ Src/mem.c	27 Apr 2007 21:24:56 -0000
@@ -830,10 +830,26 @@
 #endif
 
     /* some systems want malloc to return the highest valid address plus one
-       if it is called with an argument of zero */
+       if it is called with an argument of zero.
+    
+       TODO: really?  Suppose we allocate more memory, so
+       that this is now in bounds, then a more rational application
+       that thinks it can free() anything it malloc'ed, even
+       of zero length, calls free for it?  Aren't we in big
+       trouble?  Wouldn't it be safer just to allocate some
+       memory anyway?
+
+       If the above comment is really correct, then at least
+       we need to check in free() if we're freeing memory
+       at m_high.
+    */
 
     if (!size)
+#if 1
+	size = 1;
+#else
 	return (MALLOC_RET_T) m_high;
+#endif
 
     queue_signals();  /* just queue signals rather than handling them */
 
-- 
Peter Stephenson <p.w.stephenson@ntlworld.com>
Web page now at http://homepage.ntlworld.com/p.w.stephenson/


^ permalink raw reply	[relevance 3%]

* PATCH: zsh/regex and =~
@ 2007-04-28  7:56  1% ` Phil Pennock
  2007-04-28  8:20  6%   ` Phil Pennock
                     ` (3 more replies)
  0 siblings, 4 replies; 200+ results
From: Phil Pennock @ 2007-04-28  7:56 UTC (permalink / raw)
  To: zsh-workers

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

[ Sorry for not having one diff which creates new files, but "cvs diff -N"
  seems to be ignoring that little 'N' ]

The attached patch and files, which includes documentation, adds a new
loadable module, zsh/regex.  I've not examined widechar issues and which
regex libraries actually do handle these.  I've not looked at linkage
issues on platforms where regex (the POSIX interface, not regexp) is not
a part of libc.

This also includes my previous =~ work, replacing the previous patch.
I'm not sure that auto-unsetting REMATCH_PCRE is a good idea, so invite
comments; also as to which should be the default value; I suppose that
if pcre is not the default, then the warning can be put back in ...

My only test platform has been freebsd/amd64.

I've also cleaned up various memory leaks in zsh/pcre.
zsh/pcre now also sets $MATCH, not just $match.

I went with having $BASH_REMATCH be set instead of, rather than in
addition to, $MATCH and $match.  I'm again very open to persuasion here.

Oh, and the copyright notice in regex.c seems a bit disjointed, with
multiple names.  What's the copyright policy on newly contributed files?

zsh/regex provides the -regex-match conditional operator, the knowledge
of -regex-match and -pcre-match remains in cond.c with the COND_REGEX
handling for =~.

Also, I've decided that I much prefer the PCRE API to the POSIX regex
API.  :-)  I'm off to drink more wine to recover.

-Phil

[-- Attachment #2: regex-both.patch --]
[-- Type: text/x-diff, Size: 16747 bytes --]

Index: Doc/Zsh/cond.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Zsh/cond.yo,v
retrieving revision 1.3
diff -p -u -r1.3 cond.yo
--- Doc/Zsh/cond.yo	22 May 2000 15:01:35 -0000	1.3
+++ Doc/Zsh/cond.yo	28 Apr 2007 07:42:51 -0000
@@ -109,6 +109,11 @@ backward compatibility and should be con
 item(var(string) tt(!=) var(pattern))(
 true if var(string) does not match var(pattern).
 )
+item(var(string) tt(=~) var(regexp))(
+true if var(string) matches the PCRE regular expression
+var(regexp).  Requires the tt(zsh/pcre) module to be present,
+which is a compile-time option.
+)
 item(var(string1) tt(<) var(string2))(
 true if var(string1) comes before var(string2)
 based on ASCII value of their characters.
Index: Doc/Zsh/mod_pcre.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Zsh/mod_pcre.yo,v
retrieving revision 1.5
diff -p -u -r1.5 mod_pcre.yo
--- Doc/Zsh/mod_pcre.yo	20 Jun 2004 22:47:18 -0000	1.5
+++ Doc/Zsh/mod_pcre.yo	28 Apr 2007 07:42:51 -0000
@@ -22,14 +22,17 @@ Studies the previously-compiled PCRE whi
 matching.
 )
 findex(pcre_match)
-item(tt(pcre_match) [ tt(-a) var(arr) ] var(string))(
+item(tt(pcre_match) [ tt(-v) var(var) ] [ tt(-a) var(arr) ] var(string))(
 Returns successfully if tt(string) matches the previously-compiled
 PCRE.
 
 If the expression captures substrings within parentheses,
 tt(pcre_match) will set the array var($match) to those
 substrings, unless the tt(-a) option is given, in which
-case it will set the array var(arr).
+case it will set the array var(arr).  Similarly, the variable
+var($MATCH) will be set to the entire matched portion of the
+string, unless the tt(-v) option is given, in which var it will
+set the variable var(var).
 )
 enditem()
 
Index: Doc/Zsh/options.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Zsh/options.yo,v
retrieving revision 1.53
diff -p -u -r1.53 options.yo
--- Doc/Zsh/options.yo	5 Mar 2007 17:35:18 -0000	1.53
+++ Doc/Zsh/options.yo	28 Apr 2007 07:42:51 -0000
@@ -478,6 +478,19 @@ var(xx) is set to tt(LPAR())var(a b c)tt
 `var(fooabar foobbar foocbar)' instead of the default
 `var(fooa b cbar)'.
 )
+pindex(REMATCH_PCRE)
+cindex(regexp, PCRE)
+cindex(PCRE, regexp)
+item(tt(REMATCH_PCRE) <Z>)(
+If set, regular expression matching with the tt(=~) operator will use
+Perl-Compatible Regular Expressions from the PCRE library, if available.
+If not set, regular expressions will use the extended regexp syntax
+provided by the system libraries.
+Experimental:
+When zsh is invoked as tt(zsh), this option is initially set, but may be
+unset if the tt(zsh/pcre) module can not be loaded.  This behaviour, as
+well as the default status, is subject to change.
+)
 pindex(SH_GLOB)
 cindex(sh, globbing style)
 cindex(globbing style, sh)
@@ -1131,6 +1144,20 @@ enditem()
 
 subsect(Shell Emulation)
 startitem()
+pindex(BASH_REMATCH)
+cindex(bash, BASH_REMATCH variable)
+cindex(regexp, bash BASH_REMATCH variable)
+item(tt(BASH_REMATCH))(
+When set, matches performed with the tt(=~) operator will set the
+tt(BASH_REMATCH) array variable, instead of the default tt(MATCH) and
+tt(match) variables.  The first element of the tt(BASH_REMATCH) array
+will contain the entire matched text and subsequent elements will contain
+extracted substrings.  This option makes more sense when tt(KSH_ARRAYS) is
+also set, so that the entire matched portion is stored at index 0 and the
+first substring is at index 1.  Without this option, the tt(MATCH) variable
+contains the entire matched text and the tt(match) array variable will
+the substrings.
+)
 pindex(BSD_ECHO)
 cindex(echo, BSD compatible)
 item(tt(BSD_ECHO) <S>)(
Index: Src/cond.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/cond.c,v
retrieving revision 1.8
diff -p -u -r1.8 cond.c
--- Src/cond.c	30 May 2006 22:35:03 -0000	1.8
+++ Src/cond.c	28 Apr 2007 07:42:51 -0000
@@ -34,7 +34,7 @@ int tracingcond;
 
 static char *condstr[COND_MOD] = {
     "!", "&&", "||", "==", "!=", "<", ">", "-nt", "-ot", "-ef", "-eq",
-    "-ne", "-lt", "-gt", "-le", "-ge"
+    "-ne", "-lt", "-gt", "-le", "-ge", "=~"
 };
 
 /*
@@ -53,14 +53,14 @@ int
 evalcond(Estate state, char *fromtest)
 {
     struct stat *st;
-    char *left, *right;
+    char *left, *right, *overridename;
     Wordcode pcode;
     wordcode code;
     int ctype, htok = 0, ret;
 
  rec:
 
-    left = right = NULL;
+    left = right = overridename = NULL;
     pcode = state->pc++;
     code = *pcode;
     ctype = WC_COND_TYPE(code);
@@ -92,13 +92,42 @@ evalcond(Estate state, char *fromtest)
 	    state->pc = pcode + (WC_COND_SKIP(code) + 1);
 	    return ret;
 	}
+    case COND_REGEX:
+	{
+	    int loaded = 0;
+	    if (isset(REMATCHPCRE)) {
+		loaded = load_module_silence("zsh/pcre", 1);
+		if (loaded) {
+		    overridename = "-pcre-match";
+		} else {
+		    dosetopt(REMATCHPCRE, 0, 1);
+#if 0
+		    zwarnnam(fromtest, "zsh/pcre not available for regex");
+		    return 2;
+#endif
+		}
+	    }
+	    if (!loaded) {
+		loaded = load_module_silence("zsh/regex", 1);
+		if (loaded) {
+		    overridename = "-regex-match";
+		} else {
+		    zwarnnam(fromtest, "zsh/regex not available for regex");
+		    return 2;
+		}
+	    }
+	    ctype = COND_MODI;
+	}
     case COND_MOD:
     case COND_MODI:
 	{
 	    Conddef cd;
-	    char *name = ecgetstr(state, EC_NODUP, NULL), **strs;
+	    char *name = overridename;
+	    char **strs;
 	    int l = WC_COND_SKIP(code);
 
+	    if (name == NULL)
+		name = ecgetstr(state, EC_NODUP, NULL);
 	    if (ctype == COND_MOD)
 		strs = ecgetarr(state, l, EC_DUP, NULL);
 	    else {
@@ -139,7 +168,8 @@ evalcond(Estate state, char *fromtest)
 		    return !cd->handler(strs, cd->condid);
 		} else {
 		    zwarnnam(fromtest,
-			     "unrecognized condition: `%s'", name);
+			     "unrecognized condition: `%s'",
+			     name ? name : "<null>");
 		}
 	    }
 	    /* module not found, error */
Index: Src/options.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/options.c,v
retrieving revision 1.35
diff -p -u -r1.35 options.c
--- Src/options.c	15 Mar 2007 15:16:58 -0000	1.35
+++ Src/options.c	28 Apr 2007 07:42:51 -0000
@@ -88,6 +88,7 @@ static struct optname optns[] = {
 {{NULL, "banghist",	      OPT_NONBOURNE},		 BANGHIST},
 {{NULL, "bareglobqual",       OPT_EMULATE|OPT_ZSH},      BAREGLOBQUAL},
 {{NULL, "bashautolist",	      0},                        BASHAUTOLIST},
+{{NULL, "bashrematch",	      0},			 BASHREMATCH},
 {{NULL, "beep",		      OPT_ALL},			 BEEP},
 {{NULL, "bgnice",	      OPT_EMULATE|OPT_NONBOURNE},BGNICE},
 {{NULL, "braceccl",	      OPT_EMULATE},		 BRACECCL},
@@ -201,6 +202,7 @@ static struct optname optns[] = {
 {{NULL, "rcquotes",	      OPT_EMULATE},		 RCQUOTES},
 {{NULL, "rcs",		      OPT_ALL},			 RCS},
 {{NULL, "recexact",	      0},			 RECEXACT},
+{{NULL, "rematchpcre",	      OPT_ZSH},			 REMATCHPCRE},
 {{NULL, "restricted",	      OPT_SPECIAL},		 RESTRICTED},
 {{NULL, "rmstarsilent",	      OPT_BOURNE},		 RMSTARSILENT},
 {{NULL, "rmstarwait",	      0},			 RMSTARWAIT},
Index: Src/parse.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/parse.c,v
retrieving revision 1.64
diff -p -u -r1.64 parse.c
--- Src/parse.c	23 Apr 2007 17:24:23 -0000	1.64
+++ Src/parse.c	28 Apr 2007 07:42:52 -0000
@@ -2124,6 +2124,12 @@ par_cond_triple(char *a, char *b, char *
 	ecstr(a);
 	ecstr(c);
 	ecadd(ecnpats++);
+    } else if ((b[0] == Equals || b[0] == '=') &&
+               (b[1] == '~' || b[1] == Tilde) && ~b[2]) {
+	ecadd(WCB_COND(COND_REGEX, 0));
+	ecstr(a);
+	ecstr(c);
+	ecadd(ecnpats++);
     } else if (b[0] == '-') {
 	if ((t0 = get_cond_num(b + 1)) > -1) {
 	    ecadd(WCB_COND(t0 + COND_NT, 0));
Index: Src/text.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/text.c,v
retrieving revision 1.19
diff -p -u -r1.19 text.c
--- Src/text.c	23 Apr 2007 15:24:00 -0000	1.19
+++ Src/text.c	28 Apr 2007 07:42:52 -0000
@@ -640,7 +640,7 @@ gettext2(Estate state)
 	    {
 		static char *c1[] = {
 		    "=", "!=", "<", ">", "-nt", "-ot", "-ef", "-eq",
-		    "-ne", "-lt", "-gt", "-le", "-ge"
+		    "-ne", "-lt", "-gt", "-le", "-ge", "=~"
 		};
 
 		int ctype;
@@ -724,7 +724,7 @@ gettext2(Estate state)
 			}
 			break;
 		    default:
-			if (ctype <= COND_GE) {
+			if (ctype < COND_MOD) {
 			    /* Binary test: `a = b' etc. */
 			    taddstr(ecgetstr(state, EC_NODUP, NULL));
 			    taddstr(" ");
Index: Src/zsh.h
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/zsh.h,v
retrieving revision 1.112
diff -p -u -r1.112 zsh.h
--- Src/zsh.h	29 Mar 2007 21:35:39 -0000	1.112
+++ Src/zsh.h	28 Apr 2007 07:42:53 -0000
@@ -519,8 +519,9 @@ struct timedfn {
 #define COND_GT    13
 #define COND_LE    14
 #define COND_GE    15
-#define COND_MOD   16
-#define COND_MODI  17
+#define COND_REGEX 16
+#define COND_MOD   17
+#define COND_MODI  18
 
 typedef int (*CondHandler) _((char **, int));
 
@@ -1588,6 +1589,7 @@ enum {
     BANGHIST,
     BAREGLOBQUAL,
     BASHAUTOLIST,
+    BASHREMATCH,
     BEEP,
     BGNICE,
     BRACECCL,
@@ -1695,6 +1697,7 @@ enum {
     RCQUOTES,
     RCS,
     RECEXACT,
+    REMATCHPCRE,
     RESTRICTED,
     RMSTARSILENT,
     RMSTARWAIT,
Index: Src/Modules/pcre.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/Modules/pcre.c,v
retrieving revision 1.11
diff -p -u -r1.11 pcre.c
--- Src/Modules/pcre.c	5 Apr 2007 16:20:15 -0000	1.11
+++ Src/Modules/pcre.c	28 Apr 2007 07:42:53 -0000
@@ -3,7 +3,7 @@
  *
  * This file is part of zsh, the Z shell.
  *
- * Copyright (c) 2001, 2002, 2003, 2004 Clint Adams
+ * Copyright (c) 2001, 2002, 2003, 2004, 2007 Clint Adams
  * All rights reserved.
  *
  * Permission is hereby granted, without written agreement and without
@@ -42,6 +42,37 @@ static pcre_extra *pcre_hints;
 
 /**/
 static int
+zpcre_utf8_enabled(void)
+{
+#if defined(MULTIBYTE_SUPPORT) && defined(HAVE_NL_LANGINFO) && defined(CODESET)
+    static int have_utf8_pcre = -1;
+
+    /* value can toggle based on MULTIBYTE, so don't
+     * be too eager with caching */
+    if (have_utf8_pcre < -1)
+	return 0;
+
+    if (!isset(MULTIBYTE))
+	return 0;
+
+    if ((have_utf8_pcre == -1) &&
+        (!strcmp(nl_langinfo(CODESET), "UTF-8"))) {
+
+	if (pcre_config(PCRE_CONFIG_UTF8, &have_utf8_pcre))
+	    have_utf8_pcre = -2; /* erk, failed to ask */
+    }
+
+    if (have_utf8_pcre < 0)
+	return 0;
+    return have_utf8_pcre;
+
+#else
+    return 0;
+#endif
+}
+
+/**/
+static int
 bin_pcre_compile(char *nam, char **args, Options ops, UNUSED(int func))
 {
     int pcre_opts = 0, pcre_errptr;
@@ -52,8 +83,14 @@ bin_pcre_compile(char *nam, char **args,
     if(OPT_ISSET(ops,'m')) pcre_opts |= PCRE_MULTILINE;
     if(OPT_ISSET(ops,'x')) pcre_opts |= PCRE_EXTENDED;
     
+    if (zpcre_utf8_enabled())
+	pcre_opts |= PCRE_UTF8;
+
     pcre_hints = NULL;  /* Is this necessary? */
     
+    if (pcre_pattern)
+	pcre_free(pcre_pattern);
+
     pcre_pattern = pcre_compile(*args, pcre_opts, &pcre_error, &pcre_errptr, NULL);
     
     if (pcre_pattern == NULL)
@@ -100,37 +137,52 @@ bin_pcre_study(char *nam, UNUSED(char **
 
 /**/
 static int
-zpcre_get_substrings(char *arg, int *ovec, int ret, char *receptacle)
+zpcre_get_substrings(char *arg, int *ovec, int ret, char *matchvar, char *substravar, int matchedinarr)
 {
-    char **captures, **matches;
+    char **captures, **match_all, **matches;
+    int capture_start = 1;
 
-	if(!pcre_get_substring_list(arg, ovec, ret, (const char ***)&captures)) {
-	    
-	    matches = zarrdup(&captures[1]); /* first one would be entire string */
-	    if (receptacle == NULL)
-		setaparam("match", matches);
-	    else
-		setaparam(receptacle, matches);
-	    
-	    pcre_free_substring_list((const char **)captures);
-	}
+    if (matchedinarr)
+	capture_start = 0;
+    if (matchvar == NULL)
+	matchvar = "MATCH";
+    if (substravar == NULL)
+	substravar = "match";
+
+    /* captures[0] will be entire matched string, [1] first substring */
+    if(!pcre_get_substring_list(arg, ovec, ret, (const char ***)&captures)) {
+	match_all = ztrdup(captures[0]);
+	setsparam(matchvar, match_all);
+	matches = zarrdup(&captures[capture_start]);
+	setaparam(substravar, matches);
+	pcre_free_substring_list((const char **)captures);
+    }
 
-	return 0;
+    return 0;
 }
 
 /**/
 static int
 bin_pcre_match(char *nam, char **args, Options ops, UNUSED(int func))
 {
-    int ret, capcount, *ovec, ovecsize;
+    int ret, capcount, *ovec, ovecsize, c;
+    char *matched_portion = NULL;
     char *receptacle = NULL;
+    int return_value = 1;
+
+    if (pcre_pattern == NULL) {
+	zwarnnam(nam, "no pattern has been compiled");
+	return 1;
+    }
     
-    if(OPT_ISSET(ops,'a')) {
-	receptacle = *args++;
-	if(!*args) {
-	    zwarnnam(nam, "not enough arguments");
-	    return 1;
-	}
+    if(OPT_HASARG(ops,c='a')) {
+	receptacle = OPT_ARG(ops,c);
+    }
+    if(OPT_HASARG(ops,c='v')) {
+	matched_portion = OPT_ARG(ops,c);
+    }
+    if(!*args) {
+	zwarnnam(nam, "not enough arguments");
     }
     
     if ((ret = pcre_fullinfo(pcre_pattern, pcre_hints, PCRE_INFO_CAPTURECOUNT, &capcount)))
@@ -144,18 +196,20 @@ bin_pcre_match(char *nam, char **args, O
     
     ret = pcre_exec(pcre_pattern, pcre_hints, *args, strlen(*args), 0, 0, ovec, ovecsize);
     
-    if (ret==0) return 0;
-    else if (ret==PCRE_ERROR_NOMATCH) return 1; /* no match */
+    if (ret==0) return_value = 0;
+    else if (ret==PCRE_ERROR_NOMATCH) /* no match */;
     else if (ret>0) {
-	zpcre_get_substrings(*args, ovec, ret, receptacle);
-	return 0;
+	zpcre_get_substrings(*args, ovec, ret, matched_portion, receptacle, 0);
+	return_value = 0;
     }
     else {
 	zwarnnam(nam, "error in pcre_exec");
-	return 1;
     }
     
-    return 1;
+    if (ovec)
+	zfree(ovec, ovecsize*sizeof(int));
+
+    return return_value;
 }
 
 /**/
@@ -164,33 +218,63 @@ cond_pcre_match(char **a, int id)
 {
     pcre *pcre_pat;
     const char *pcre_err;
-    char *lhstr, *rhre;
+    char *lhstr, *rhre, *avar=NULL;
     int r = 0, pcre_opts = 0, pcre_errptr, capcnt, *ov, ovsize;
+    int return_value = 0;
+
+    if (zpcre_utf8_enabled())
+	pcre_opts |= PCRE_UTF8;
 
     lhstr = cond_str(a,0,0);
     rhre = cond_str(a,1,0);
+    pcre_pat = ov = NULL;
+
+    if (isset(BASHREMATCH))
+	avar="BASH_REMATCH";
 
     switch(id) {
 	 case CPCRE_PLAIN:
-		 pcre_pat = pcre_compile(rhre, pcre_opts, &pcre_err, &pcre_errptr, NULL);
-                 pcre_fullinfo(pcre_pat, NULL, PCRE_INFO_CAPTURECOUNT, &capcnt);
-    		 ovsize = (capcnt+1)*3;
-		 ov = zalloc(ovsize*sizeof(int));
-    		 r = pcre_exec(pcre_pat, NULL, lhstr, strlen(lhstr), 0, 0, ov, ovsize);
-    		if (r==0) return 1;
+		pcre_pat = pcre_compile(rhre, pcre_opts, &pcre_err, &pcre_errptr, NULL);
+		if (pcre_pat == NULL) {
+		    zwarn("failed to compile regexp /%s/: %s", rhre, pcre_err);
+		    break;
+		}
+                pcre_fullinfo(pcre_pat, NULL, PCRE_INFO_CAPTURECOUNT, &capcnt);
+    		ovsize = (capcnt+1)*3;
+		ov = zalloc(ovsize*sizeof(int));
+    		r = pcre_exec(pcre_pat, NULL, lhstr, strlen(lhstr), 0, 0, ov, ovsize);
+		/* r < 0 => error; r==0 match but not enough size in ov
+		 * r > 0 => (r-1) substrings found; r==1 => no substrings
+		 */
+    		if (r==0) {
+		    zwarn("reportable zsh problem: pcre_exec() returned 0");
+		    return_value = 1;
+		    break;
+		}
 	        else if (r==PCRE_ERROR_NOMATCH) return 0; /* no match */
+		else if (r<0) {
+		    zwarn("pcre_exec() error: %d", r);
+		    break;
+		}
                 else if (r>0) {
-		    zpcre_get_substrings(lhstr, ov, r, NULL);
-		    return 1;
+		    zpcre_get_substrings(lhstr, ov, r, NULL, avar, isset(BASHREMATCH));
+		    return_value = 1;
+		    break;
 		}
 		break;
     }
 
-    return 0;
+    if (pcre_pat)
+	pcre_free(pcre_pat);
+    if (ov)
+	zfree(ov, ovsize*sizeof(int));
+
+    return return_value;
 }
 
 static struct conddef cotab[] = {
     CONDDEF("pcre-match", CONDF_INFIX, cond_pcre_match, 0, 0, CPCRE_PLAIN)
+    /* CONDDEF can register =~ but it won't be found */
 };
 
 /**/
@@ -206,7 +290,7 @@ static struct conddef cotab[] = {
 static struct builtin bintab[] = {
     BUILTIN("pcre_compile", 0, bin_pcre_compile, 1, 1, 0, "aimx",  NULL),
     BUILTIN("pcre_study",   0, bin_pcre_study,   0, 0, 0, NULL,    NULL),
-    BUILTIN("pcre_match",   0, bin_pcre_match,   1, 2, 0, "a",    NULL)
+    BUILTIN("pcre_match",   0, bin_pcre_match,   1, 1, 0, "a:v:",    NULL)
 };
 
 

[-- Attachment #3: regex.mdd --]
[-- Type: text/plain, Size: 68 bytes --]

name=zsh/regex
link=dynamic
load=no

autobins=""

objects="regex.o"

[-- Attachment #4: regex.c --]
[-- Type: text/x-csrc, Size: 3879 bytes --]

/*
 * regex.c
 *
 * This file is part of zsh, the Z shell.
 *
 * Copyright (c) 2007 Phil Pennock
 * All Rights Reserved.
 *
 * Permission is hereby granted, without written agreement and without
 * license or royalty fees, to use, copy, modify, and distribute this
 * software and to distribute modified versions of this software for any
 * purpose, provided that the above copyright notice and the following
 * two paragraphs appear in all copies of this software.
 *
 * In no event shall Clint Adams or the Zsh Development Group be liable
 * to any party for direct, indirect, special, incidental, or consequential
 * damages arising out of the use of this software and its documentation,
 * even if Andrew Main and the Zsh Development Group have been advised of
 * the possibility of such damage.
 *
 * Clint Adams and the Zsh Development Group specifically disclaim any
 * warranties, including, but not limited to, the implied warranties of
 * merchantability and fitness for a particular purpose.  The software
 * provided hereunder is on an "as is" basis, and Andrew Main and the
 * Zsh Development Group have no obligation to provide maintenance,
 * support, updates, enhancements, or modifications.
 *
 */

#include "regex.mdh"
#include "regex.pro"

#include <regex.h>

/* we default to a vaguely modern syntax and set of capabilities */
#define ZREGEX_EXTENDED 0
/* if you want Basic syntax, make it an alternative options */

static void
zregex_regerrwarn(int r, regex_t *re, char *msg)
{
    char *errbuf;
    size_t errbufsz;

    errbufsz = regerror(r, re, NULL, 0);
    errbuf = zalloc(errbufsz*sizeof(char));
    regerror(r, re, errbuf, errbufsz);
    zwarn("%s: %s", msg, errbuf);
    zfree(errbuf, errbufsz);
}

/**/
static int
zcond_regex_match(char **a, int id)
{
    regex_t re;
    regmatch_t *m, *matches = NULL;
    size_t matchessz;
    char *lhstr, *rhre, *s, **arr, **x;
    int r, n, return_value, rcflags, reflags, nelem, start;

    lhstr = cond_str(a,0,0);
    rhre = cond_str(a,1,0);
    rcflags = reflags = 0;
    return_value = 0; /* 1 => matched successfully */

    switch(id) {
    case ZREGEX_EXTENDED:
	rcflags |= REG_EXTENDED;
	r = regcomp(&re, rhre, rcflags);
	if (r) {
	    zregex_regerrwarn(r, &re, "failed to compile regex");
	    break;
	}
	/* re.re_nsub is number of parenthesized groups, we also need
	 * 1 for the 0 offset, which is the entire matched portion
	 */
	matchessz = (re.re_nsub + 1) * sizeof(regmatch_t);
	matches = zalloc(matchessz);
	r = regexec(&re, lhstr, re.re_nsub+1, matches, reflags);
	if (r == REG_NOMATCH) /**/;
	else if (r == 0) {
	    return_value = 1;
	    if (isset(BASHREMATCH)) {
		start = 0;
		nelem = re.re_nsub + 1;
	    } else {
		start = 1;
		nelem = re.re_nsub;
	    }
	    /* entire matched portion + re_nsub substrings + NULL */
	    if (nelem) {
		arr = x = (char **) zalloc(sizeof(char *) * (nelem + 1));
		for (m = matches + start, n = start; n <= re.re_nsub; ++n, ++m, ++x) {
		    *x = ztrduppfx(lhstr + m->rm_so, m->rm_eo - m->rm_so);
		}
		*x = NULL;
	    }
	    if (isset(BASHREMATCH)) {
		setaparam("BASH_REMATCH", arr);
	    } else {
		m = matches;
		s = ztrduppfx(lhstr + m->rm_so, m->rm_eo - m->rm_so);
		setsparam("MATCH", s);
		if (nelem)
		    setaparam("match", arr);
	    }
	}
	else zregex_regerrwarn(r, &re, "regex matching error");
	break;
    }

    if (matches)
	zfree(matches, matchessz);
    regfree(&re);
    return return_value;
}

static struct conddef cotab[] = {
    CONDDEF("regex-match", CONDF_INFIX, zcond_regex_match, 0, 0, ZREGEX_EXTENDED)
};

/**/
int
setup_(UNUSED(Module m))
{
    return 0;
}

/**/
int
boot_(Module m)
{
    return !addconddefs(m->nam, cotab, sizeof(cotab)/sizeof(*cotab));
}

/**/
int
cleanup_(Module m)
{
    deleteconddefs(m->nam, cotab, sizeof(cotab)/sizeof(*cotab));
    return 0;
}

/**/
int
finish_(UNUSED(Module m))
{
    return 0;
}

^ permalink raw reply	[relevance 1%]

* Re: PATCH: zsh/regex and =~
  2007-04-28  7:56  1% ` PATCH: zsh/regex and =~ Phil Pennock
@ 2007-04-28  8:20  6%   ` Phil Pennock
  2007-04-29  0:51  0%   ` Phil Pennock
                     ` (2 subsequent siblings)
  3 siblings, 0 replies; 200+ results
From: Phil Pennock @ 2007-04-28  8:20 UTC (permalink / raw)
  To: zsh-workers

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

On 2007-04-28 at 00:56 -0700, Phil Pennock wrote:
> The attached patch and files, which includes documentation,

*sigh*  I say these things, I tinker with documentation for the options
etc, but do I remember to write documentation for the new module?

See attached, relative to the source tree as patched by the previous
mail.

[-- Attachment #2: zsh-regex-doc.patch --]
[-- Type: text/x-diff, Size: 1703 bytes --]

diff -pNur zsh-regexp/Doc/Makefile.in zsh-regex-doc/Doc/Makefile.in
--- zsh-regexp/Doc/Makefile.in	Sun Dec 17 08:02:02 2006
+++ zsh-regex-doc/Doc/Makefile.in	Sat Apr 28 01:08:36 2007
@@ -61,7 +61,7 @@ Zsh/mod_computil.yo \
 Zsh/mod_datetime.yo Zsh/mod_deltochar.yo \
 Zsh/mod_example.yo Zsh/mod_files.yo \
 Zsh/mod_mapfile.yo Zsh/mod_mathfunc.yo Zsh/mod_newuser.yo \
-Zsh/mod_parameter.yo Zsh/mod_pcre.yo \
+Zsh/mod_parameter.yo Zsh/mod_pcre.yo Zsh/mod_regex.yo \
 Zsh/mod_sched.yo Zsh/mod_socket.yo \
 Zsh/mod_stat.yo  Zsh/mod_system.yo Zsh/mod_tcp.yo \
 Zsh/mod_termcap.yo Zsh/mod_terminfo.yo \
diff -pNur zsh-regexp/Doc/Zsh/mod_regex.yo zsh-regex-doc/Doc/Zsh/mod_regex.yo
--- zsh-regexp/Doc/Zsh/mod_regex.yo	Wed Dec 31 16:00:00 1969
+++ zsh-regex-doc/Doc/Zsh/mod_regex.yo	Sat Apr 28 01:15:20 2007
@@ -0,0 +1,24 @@
+COMMENT(!MOD!zsh/regex
+Interface to the POSIX regex library.
+!MOD!)
+cindex(regular expressions, REGEX)
+The tt(zsh/regex) module makes available the following test condition:
+startitem()
+findex(regex-match)
+item(expr tt(-regex-match) regex)(
+Matches a string against a POSIX extended regular expression.
+The matched portion of the string will normally be placed in the tt($MATCH)
+variable.  If there are any capturing parentheses within the regex, then
+the tt($match) array variable will contain those.
+
+For example,
+
+[[ alphabetical -regex-match ^a([^a]+)a([^a]+)a ]] && print -l $MATCH X $match
+
+If tt(REGMATCH_PCRE) is not set, then the tt(=~) operator will automatically
+load this module as needed and will invoke the tt(-regex-match) operator.
+
+If tt(BASH_REMATCH) is set, then tt($BASH_REMATCH) will be set instead of
+tt($MATCH) and tt($match).
+)
+enditem()

^ permalink raw reply	[relevance 6%]

* Re: PATCH: zsh/regex and =~
  2007-04-28  7:56  1% ` PATCH: zsh/regex and =~ Phil Pennock
  2007-04-28  8:20  6%   ` Phil Pennock
@ 2007-04-29  0:51  0%   ` Phil Pennock
  2007-04-29 15:16  3%   ` Peter Stephenson
  2007-05-01 21:59  2%   ` Peter Stephenson
  3 siblings, 0 replies; 200+ results
From: Phil Pennock @ 2007-04-29  0:51 UTC (permalink / raw)
  To: zsh-workers

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

On 2007-04-28 at 00:56 -0700, Phil Pennock wrote:
> The attached patch and files, which includes documentation, adds a new
> loadable module, zsh/regex.  I've not examined widechar issues and which
> regex libraries actually do handle these.  I've not looked at linkage
> issues on platforms where regex (the POSIX interface, not regexp) is not
> a part of libc.

I noticed a gcc complaint that a variable might be used uninitialised;
this was bogus, but understandable.  The first patch below fixes it.
The second patch is a spelling correction in the docs.  Alternatively,
it might be a sign that the option needs to be renamed ...

arr is only initialised if nelem.  Later there are two references to it.
The second is guarded by "if (nelem)"; the first is guarded by
"if (isset(BASHREMATCH))".  If BASHREMATCH is set, nelem is always at
least 1.  Assuming re.re_nsub is never negative, which it isn't.  And
the patch also affirms this for sheer paranoia's sake.

-Phil

[-- Attachment #2: zsh-regex-bogus-unused.patch --]
[-- Type: text/x-diff, Size: 880 bytes --]

--- Src/Modules/regex.c.old	Sat Apr 28 17:40:12 2007
+++ Src/Modules/regex.c	Sat Apr 28 17:43:27 2007
@@ -75,6 +75,11 @@ zcond_regex_match(char **a, int id)
 	/* re.re_nsub is number of parenthesized groups, we also need
 	 * 1 for the 0 offset, which is the entire matched portion
 	 */
+	if (re.re_nsub < 0) {
+	    zwarn("INTERNAL ERROR: regcomp() returned "
+		    "negative subpattern count %d", re.re_nsub);
+	    break;
+	}
 	matchessz = (re.re_nsub + 1) * sizeof(regmatch_t);
 	matches = zalloc(matchessz);
 	r = regexec(&re, lhstr, re.re_nsub+1, matches, reflags);
@@ -88,6 +93,7 @@ zcond_regex_match(char **a, int id)
 		start = 1;
 		nelem = re.re_nsub;
 	    }
+	    arr = NULL; /* bogus gcc warning of used uninitialised */
 	    /* entire matched portion + re_nsub substrings + NULL */
 	    if (nelem) {
 		arr = x = (char **) zalloc(sizeof(char *) * (nelem + 1));

[-- Attachment #3: zsh-regex-speling.patch --]
[-- Type: text/x-diff, Size: 513 bytes --]

--- Doc/Zsh/mod_regex.yo.old	Sat Apr 28 17:45:57 2007
+++ Doc/Zsh/mod_regex.yo	Sat Apr 28 17:45:35 2007
@@ -15,7 +15,7 @@
 
 [[ alphabetical -regex-match ^a([^a]+)a([^a]+)a ]] && print -l $MATCH X $match
 
-If tt(REGMATCH_PCRE) is not set, then the tt(=~) operator will automatically
+If tt(REMATCH_PCRE) is not set, then the tt(=~) operator will automatically
 load this module as needed and will invoke the tt(-regex-match) operator.
 
 If tt(BASH_REMATCH) is set, then tt($BASH_REMATCH) will be set instead of

^ permalink raw reply	[relevance 0%]

* Re: PATCH: zsh/regex and =~
  2007-04-28  7:56  1% ` PATCH: zsh/regex and =~ Phil Pennock
  2007-04-28  8:20  6%   ` Phil Pennock
  2007-04-29  0:51  0%   ` Phil Pennock
@ 2007-04-29 15:16  3%   ` Peter Stephenson
  2007-04-29 15:28  3%     ` Peter Stephenson
  2007-05-01 21:59  2%   ` Peter Stephenson
  3 siblings, 1 reply; 200+ results
From: Peter Stephenson @ 2007-04-29 15:16 UTC (permalink / raw)
  To: zsh-workers

Phil Pennock wrote:
> This also includes my previous =~ work, replacing the previous patch.

As I said, I want to do =~ with standard POSIX regular expressions and
no add-ons.  I've already got this working.

-- 
Peter Stephenson <p.w.stephenson@ntlworld.com>
Web page now at http://homepage.ntlworld.com/p.w.stephenson/


^ permalink raw reply	[relevance 3%]

* Re: PATCH: zsh/regex and =~
  2007-04-29 15:16  3%   ` Peter Stephenson
@ 2007-04-29 15:28  3%     ` Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2007-04-29 15:28 UTC (permalink / raw)
  To: zsh-workers

Peter Stephenson wrote:
> Phil Pennock wrote:
> > This also includes my previous =~ work, replacing the previous patch.
> 
> As I said, I want to do =~ with standard POSIX regular expressions and
> no add-ons.  I've already got this working.

Having looked further, I see that's the effect of what you've done (with
other stuff)... however, (unless I missed something in one of the
subsequent patches) the documentation for =~ still claims it's (always)
based on pcre.

There's no harm in the regular expression stuff being a separate module,
but if it's going to be it might as well be loadable if and only
if configure detects the POSIX regexp stuff.  That's easy---I can
patch that later.

-- 
Peter Stephenson <p.w.stephenson@ntlworld.com>
Web page now at http://homepage.ntlworld.com/p.w.stephenson/


^ permalink raw reply	[relevance 3%]

* exec -l
@ 2007-04-30  0:52  2% Dave Yost
  2007-04-30  2:48  3% ` Phil Pennock
  0 siblings, 1 reply; 200+ results
From: Dave Yost @ 2007-04-30  0:52 UTC (permalink / raw)
  To: zsh-workers; +Cc: Bob Proulx

Why does zsh not have "exec -l" a la bash?

Thanks

Dave

  - - - - - -

Date: Sun, 29 Apr 2007 18:25:58 -0600
To: Dave Yost <Dave@Yost.com>
Cc: openssh-unix-dev@mindrot.org
Subject: Re: setting current dir of remote shell
From: bob@proulx.com (Bob Proulx)

Dave Yost wrote:
>  Bob Proulx wrote:
>  >For me the following works:
>  >  ssh -t someserver "cd $(pwd) && exec -l \$0"
>  >  $ echo $0
>  >  -bash
>
>  I assume you mean
>
>    ssh -t someserver "cd $(pwd) && exec \$0 -l"

No, I really did mean 'exec -l \$0'.  Your transposition is similar
and will have similar effects but is not identical.  (Very close to
though, and the difference is quite subtle.)

   help exec
   exec: exec [-cl] [-a name] file [redirection ...]
       Exec FILE, replacing this shell with the specified program.
       If FILE is not specified, the redirections take effect in this
       shell.  If the first argument is '-l', then place a dash in the
       zeroth arg passed to FILE, as login does.  If the '-c' option
       is supplied, FILE is executed with a null environment.  The '-a'
       option means to make set argv[0] of the executed process to NAME.
       If the file cannot be executed and the shell is not interactive,
       then the shell exits, unless the shell option 'execfail' is set.

The magic part is:

   "If the first argument is '-l', then place a dash in the zeroth arg
   passed to FILE, as login does."

The classic /bin/login program has always placed a dash as the first
character of the shell when starting up login shells.  Shells inspect
their first argument, their own name, and look for a '-' in the
leading part of the name.  If the shell finds a '-' there then they
assume they were started by login and configure themselves as a login
shell.  Login shells read the defined list of environment files such
as /etc/profile and others.

The transposition of using 'exec \$0 -l' instead of 'exec -l \$0'
won't place a dash in the leading part of the shell's name.  Therefore
the shell won't think it is a login in the same way that it would if
it were really a login shell started by /bin/login.  However the shell
will by the -l option be told to behave as a login shell.  At that
point the shell will behave fully as a login shell and there is no
difference.  However if child programs want to deduce if the parent
shell is a login shell or not they usually look at $0, as I did in my
example, and look to see if the shell's name starts with a dash or
not.  This difference is probably insignificant but child processes
won't be able to tell if the parent is a login shell in that case.

The problem is that POSIX does not specify any options to exec and
therefore use of 'exec -l' is non-standard by definition.  I do not
know which shells support it and which do not.  Bash supports it and
so if it is known to be working with bash then it is fine to use.  But
if it must be completely portable to unspecified shells then of course
it would be a problem.

Meanwhile, the very reason I like it is that 'exec -l $SOMESHELL' can
spawn a random, unknown, unspecified shell as $SOMESHELL and guarantee
that it will be a login shell even if $SOMESHELL does not take the -l
option.  Because of the /bin/login interface of placing a leading dash
all shells will respect that interface.  The classic csh is an example
of a shell that does not accept a -l option to behave as a login
shell.  Therefore 'exec csh -l' would fail while 'exec -l csh' would
succeed in producing csh running as a login shell.  (I think newer csh
variants have added the -l option for compatibility.)

Bob


^ permalink raw reply	[relevance 2%]

* Re: exec -l
  2007-04-30  0:52  2% exec -l Dave Yost
@ 2007-04-30  2:48  3% ` Phil Pennock
  0 siblings, 0 replies; 200+ results
From: Phil Pennock @ 2007-04-30  2:48 UTC (permalink / raw)
  To: zsh-workers

On 2007-04-29 at 17:52 -0700, Dave Yost wrote:
>  Why does zsh not have "exec -l" a la bash?

Because zsh had already introduced its own non-standard way to do the
same thing before bash added its own non-standard extension?  And
nobody's pushed to copy bash's behaviour?  And ksh has yet another way.
So there's no portable method and nobody's yet contributed code to zsh
to copy the interface provided by other shells.

The Single Unix Specification v3 doesn't include any flags for exec.
(Look in the XCU section).  Zsh does not provide any flags.

In zsh, you can put a "-" at the start of any external command by using
the "-" builtin command.  It's the first builtin listed in
zshbuiltins.1.  So, you'd do:

  exec - cmd

so that you exec cmd with argv[0] being "-cmd".  Or just "- cmd" to run
it as a child process.

Alternatively, zsh lets you specify _any_ string as argv[0] for a new
command by ensuring that the variable ARGV0 is set in the environment
when you run it.  So, for instance, you can do:

 ARGV0=-sh exec zsh

to exec zsh with argv[0] set to "-sh", such that zsh will emulate a
POSIX "sh" more closely and do so as a login shell.  This is what in ksh
would be "exec -a -sh zsh".

-Phil


^ permalink raw reply	[relevance 3%]

* Re: PATCH: and query for malloc(0).
  2007-04-27 21:35  3% PATCH: and query for malloc(0) Peter Stephenson
@ 2007-04-30  3:29  3% ` Geoff Wing
  2007-04-30  9:22  0%   ` Peter Stephenson
  0 siblings, 1 reply; 200+ results
From: Geoff Wing @ 2007-04-30  3:29 UTC (permalink / raw)
  To: Zsh Hackers

On Saturday 2007-04-28 07:36 +1000, Peter Stephenson output:
:Playing with POSIX regexes, I found some errors coming from zsh's memory
:allocation with debugging on.  These turned out to resolve to some
:malloc()s and free()s for zero length and the following oddity in
:malloc():
:    /* some systems want malloc to return the highest valid address plus one
:       if it is called with an argument of zero */
:    if (!size)
:	return (MALLOC_RET_T) m_high;

This appeared in zsh 2.5.  I don't know the origin.

It's a bit weird as different systems will do conflicting things with it.

NetBSD returns NULL

An older Solaris man page says for malloc(): "a unique pointer to the arena
 is returned"; and for bsdmalloc(): "a non-NULL pointer. ... These pointers
 should not be dereferenced."

SUS says: "If size is 0, either a null pointer or a unique pointer that can
 be successfully passed to free() shall be returned."

Given the above, I guess the patch is a reasonable fix.

We are not actually calling malloc(0) in-house, are we?

Regards,
Geoff


^ permalink raw reply	[relevance 3%]

* Re: PATCH: and query for malloc(0).
  2007-04-30  3:29  3% ` Geoff Wing
@ 2007-04-30  9:22  0%   ` Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2007-04-30  9:22 UTC (permalink / raw)
  To: Zsh Hackers

Geoff Wing wrote:
> On Saturday 2007-04-28 07:36 +1000, Peter Stephenson output:
> :Playing with POSIX regexes, I found some errors coming from zsh's memory
> :allocation with debugging on.  These turned out to resolve to some
> :malloc()s and free()s for zero length and the following oddity in
> :malloc():
> :    /* some systems want malloc to return the highest valid address plus one
> :       if it is called with an argument of zero */
> :    if (!size)
> :	return (MALLOC_RET_T) m_high;
>...
> Given the above, I guess the patch is a reasonable fix.

Thanks, I think I'll commit it and see what happens; under most
circumstances that will be very little.

> We are not actually calling malloc(0) in-house, are we?

No, that should be trapped up above in zalloc(), etc.  I've only seen
the problem when linked with a C library function that's calling
malloc(0).

-- 
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


To access the latest news from CSR copy this link into a web browser:  http://www.csr.com/email_sig.php

To get further information regarding CSR, please visit our Investor Relations page at http://ir.csr.com/csr/about/overview


^ permalink raw reply	[relevance 0%]

* Re: PATCH: zsh/regex and =~
  2007-04-28  7:56  1% ` PATCH: zsh/regex and =~ Phil Pennock
                     ` (2 preceding siblings ...)
  2007-04-29 15:16  3%   ` Peter Stephenson
@ 2007-05-01 21:59  2%   ` Peter Stephenson
  3 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2007-05-01 21:59 UTC (permalink / raw)
  To: zsh-workers

On Sat, 28 Apr 2007 00:56:35 -0700
Phil Pennock <zsh-workers+phil.pennock@spodhuis.org> wrote:
> The attached patch and files, which includes documentation, adds a new
> loadable module, zsh/regex.  I've not examined widechar issues and which
> regex libraries actually do handle these.  I've not looked at linkage
> issues on platforms where regex (the POSIX interface, not regexp) is not
> a part of libc.
> 
> This also includes my previous =~ work, replacing the previous patch.
> I'm not sure that auto-unsetting REMATCH_PCRE is a good idea, so invite
> comments; also as to which should be the default value; I suppose that
> if pcre is not the default, then the warning can be put back in ...

Here's what I've ended up with after putting the patches together and
tweaking them.  The tweaks include (some of these deal with points
above):

I didn't put RE_MATCH_PCRE on by default; it seems to me to be a
user choice and having it depend on the shell emulation is more
confusing than useful.  Similarly, I've made the condition code
behave identically (apart, obviously, from the module =~ uses)
whether or not the option is set; if the module you didn't
ask for is not available, you get an error message rather than
a different sort of regular expression.

I've fixed the doc for =~ and tweaked at least one other minor typo.

I've added the option NO_CASE_MATCH to zsh/regex handling (like bash).
I don't know enough about the PCRE library to decide whether it's
sensible to have the same effect there, but if it is that's fine by me.

I've made regex.mdd only compile regex.c based on locating all
four POSIX functions.  This is the best way of handling conditional
support for modules: if it's not supported, there's nothing there
at all, so anything that tests will find out straight away it's
not supported and the disk isn't cluttered with unusable junk.

I've added some debugging code to test for a bad id passed to
the regex-match handler.  This doesn't do a heck of a lot at
the moment, but the case statement was looking a bit lonely
with just one entry.

regex.c is substantially Phil's work so he's mentioned in the copyright.
(As the licence makes clear, no one has actually transferred their
copyright anyway, so if there's ever any argy-bargy it has to be
sorted out line by line or even character by character---the copyrights
at the top of the files are rather less legally meaningful than they look.)


I'll commit this even if there are quibbles, to establish either a stick
in the ground or a line in the sand.  (I asked what the difference
was and was told one was horizontal and the other vertical.)

Index: configure.ac
===================================================================
RCS file: /cvsroot/zsh/zsh/configure.ac,v
retrieving revision 1.61
diff -u -r1.61 configure.ac
--- configure.ac	5 Jan 2007 13:58:04 -0000	1.61
+++ configure.ac	1 May 2007 21:54:50 -0000
@@ -1135,7 +1135,8 @@
 	       erand48 open_memstream \
 	       wctomb iconv \
 	       grantpt unlockpt ptsname \
-	       htons ntohs)
+	       htons ntohs \
+	       regcomp regexec regerror regfree)
 AC_FUNC_STRCOLL
 
 if test x$enable_cap = xyes; then
Index: Doc/Makefile.in
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Makefile.in,v
retrieving revision 1.35
diff -u -r1.35 Makefile.in
--- Doc/Makefile.in	17 Dec 2006 16:02:02 -0000	1.35
+++ Doc/Makefile.in	1 May 2007 21:54:52 -0000
@@ -61,7 +61,7 @@
 Zsh/mod_datetime.yo Zsh/mod_deltochar.yo \
 Zsh/mod_example.yo Zsh/mod_files.yo \
 Zsh/mod_mapfile.yo Zsh/mod_mathfunc.yo Zsh/mod_newuser.yo \
-Zsh/mod_parameter.yo Zsh/mod_pcre.yo \
+Zsh/mod_parameter.yo Zsh/mod_pcre.yo Zsh/mod_regex.yo \
 Zsh/mod_sched.yo Zsh/mod_socket.yo \
 Zsh/mod_stat.yo  Zsh/mod_system.yo Zsh/mod_tcp.yo \
 Zsh/mod_termcap.yo Zsh/mod_terminfo.yo \
Index: Doc/Zsh/cond.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Zsh/cond.yo,v
retrieving revision 1.3
diff -u -r1.3 cond.yo
--- Doc/Zsh/cond.yo	22 May 2000 15:01:35 -0000	1.3
+++ Doc/Zsh/cond.yo	1 May 2007 21:54:52 -0000
@@ -109,6 +109,20 @@
 item(var(string) tt(!=) var(pattern))(
 true if var(string) does not match var(pattern).
 )
+item(var(string) tt(=~) var(regexp))(
+true if var(string) matches the regular expression
+var(regexp).  If the option tt(RE_MATCH_PCRE) is set
+var(regexp) is tested as a PCRE regular expression using
+the tt(zsh/pcre) module, else it is tested as a POSIX
+regular expression using the tt(zsh/regex) module.
+If the option tt(BASH_REMATCH) is set the array
+tt(BASH_REMATCH) is set to the substring that matched the pattern
+followed by the substrings that matched parenthesised
+subexpressions within the pattern; otherwise, the scalar parameter
+tt(MATCH) is set to the substring that matched the pattern and
+and the array tt(match) to the substrings that matched parenthesised
+subexpressions.
+)
 item(var(string1) tt(<) var(string2))(
 true if var(string1) comes before var(string2)
 based on ASCII value of their characters.
Index: Doc/Zsh/mod_pcre.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Zsh/mod_pcre.yo,v
retrieving revision 1.5
diff -u -r1.5 mod_pcre.yo
--- Doc/Zsh/mod_pcre.yo	20 Jun 2004 22:47:18 -0000	1.5
+++ Doc/Zsh/mod_pcre.yo	1 May 2007 21:54:52 -0000
@@ -22,14 +22,17 @@
 matching.
 )
 findex(pcre_match)
-item(tt(pcre_match) [ tt(-a) var(arr) ] var(string))(
+item(tt(pcre_match) [ tt(-v) var(var) ] [ tt(-a) var(arr) ] var(string))(
 Returns successfully if tt(string) matches the previously-compiled
 PCRE.
 
 If the expression captures substrings within parentheses,
 tt(pcre_match) will set the array var($match) to those
 substrings, unless the tt(-a) option is given, in which
-case it will set the array var(arr).
+case it will set the array var(arr).  Similarly, the variable
+var(MATCH) will be set to the entire matched portion of the
+string, unless the tt(-v) option is given, in which case the variable
+var(var) will be set.
 )
 enditem()
 
Index: Doc/Zsh/options.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Zsh/options.yo,v
retrieving revision 1.53
diff -u -r1.53 options.yo
--- Doc/Zsh/options.yo	5 Mar 2007 17:35:18 -0000	1.53
+++ Doc/Zsh/options.yo	1 May 2007 21:54:52 -0000
@@ -319,6 +319,13 @@
 can match the directory tt(CVS) owing to the presence of the globbing flag
 (unless the option tt(BARE_GLOB_QUAL) is unset).
 )
+pindex(CASE_MATCH)
+cindex(case-insensitive regular expression matches, option)
+cindex(regular expressions, case-insensitive matching, option)
+item(tt(CASE_MATCH) <D>)(
+Make regular expressions using the tt(zsh/regex) module (including
+matches with tt(=~)) sensitive to case.
+)
 pindex(CSH_NULL_GLOB)
 cindex(csh, null globbing style)
 cindex(null globbing style, csh)
@@ -478,6 +485,15 @@
 `var(fooabar foobbar foocbar)' instead of the default
 `var(fooa b cbar)'.
 )
+pindex(REMATCH_PCRE)
+cindex(regexp, PCRE)
+cindex(PCRE, regexp)
+item(tt(REMATCH_PCRE) <Z>)(
+If set, regular expression matching with the tt(=~) operator will use
+Perl-Compatible Regular Expressions from the PCRE library, if available.
+If not set, regular expressions will use the extended regexp syntax
+provided by the system libraries.
+)
 pindex(SH_GLOB)
 cindex(sh, globbing style)
 cindex(globbing style, sh)
@@ -1131,6 +1147,20 @@
 
 subsect(Shell Emulation)
 startitem()
+pindex(BASH_REMATCH)
+cindex(bash, BASH_REMATCH variable)
+cindex(regexp, bash BASH_REMATCH variable)
+item(tt(BASH_REMATCH))(
+When set, matches performed with the tt(=~) operator will set the
+tt(BASH_REMATCH) array variable, instead of the default tt(MATCH) and
+tt(match) variables.  The first element of the tt(BASH_REMATCH) array
+will contain the entire matched text and subsequent elements will contain
+extracted substrings.  This option makes more sense when tt(KSH_ARRAYS) is
+also set, so that the entire matched portion is stored at index 0 and the
+first substring is at index 1.  Without this option, the tt(MATCH) variable
+contains the entire matched text and the tt(match) array variable contains
+substrings.
+)
 pindex(BSD_ECHO)
 cindex(echo, BSD compatible)
 item(tt(BSD_ECHO) <S>)(
Index: Src/cond.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/cond.c,v
retrieving revision 1.8
diff -u -r1.8 cond.c
--- Src/cond.c	30 May 2006 22:35:03 -0000	1.8
+++ Src/cond.c	1 May 2007 21:54:52 -0000
@@ -34,7 +34,7 @@
 
 static char *condstr[COND_MOD] = {
     "!", "&&", "||", "==", "!=", "<", ">", "-nt", "-ot", "-ef", "-eq",
-    "-ne", "-lt", "-gt", "-le", "-ge"
+    "-ne", "-lt", "-gt", "-le", "-ge", "=~"
 };
 
 /*
@@ -53,14 +53,14 @@
 evalcond(Estate state, char *fromtest)
 {
     struct stat *st;
-    char *left, *right;
+    char *left, *right, *overridename, overridebuf[13];
     Wordcode pcode;
     wordcode code;
     int ctype, htok = 0, ret;
 
  rec:
 
-    left = right = NULL;
+    left = right = overridename = NULL;
     pcode = state->pc++;
     code = *pcode;
     ctype = WC_COND_TYPE(code);
@@ -92,13 +92,28 @@
 	    state->pc = pcode + (WC_COND_SKIP(code) + 1);
 	    return ret;
 	}
+    case COND_REGEX:
+	{
+	    char *modname = isset(REMATCHPCRE) ? "zsh/pcre" : "zsh/regex";
+	    if (!load_module_silence(modname, 1)) {
+		zwarnnam(fromtest, "%s not available for regex",
+			 modname);
+		return 2;
+	    }
+	    sprintf(overridename = overridebuf, "-%s-match", modname+4);
+	    ctype = COND_MODI;
+	}
+	/*FALLTHROUGH*/
     case COND_MOD:
     case COND_MODI:
 	{
 	    Conddef cd;
-	    char *name = ecgetstr(state, EC_NODUP, NULL), **strs;
+	    char *name = overridename;
+	    char **strs;
 	    int l = WC_COND_SKIP(code);
 
+	    if (name == NULL)
+		name = ecgetstr(state, EC_NODUP, NULL);
 	    if (ctype == COND_MOD)
 		strs = ecgetarr(state, l, EC_DUP, NULL);
 	    else {
@@ -139,7 +154,8 @@
 		    return !cd->handler(strs, cd->condid);
 		} else {
 		    zwarnnam(fromtest,
-			     "unrecognized condition: `%s'", name);
+			     "unrecognized condition: `%s'",
+			     name ? name : "<null>");
 		}
 	    }
 	    /* module not found, error */
Index: Src/options.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/options.c,v
retrieving revision 1.35
diff -u -r1.35 options.c
--- Src/options.c	15 Mar 2007 15:16:58 -0000	1.35
+++ Src/options.c	1 May 2007 21:54:54 -0000
@@ -88,11 +88,13 @@
 {{NULL, "banghist",	      OPT_NONBOURNE},		 BANGHIST},
 {{NULL, "bareglobqual",       OPT_EMULATE|OPT_ZSH},      BAREGLOBQUAL},
 {{NULL, "bashautolist",	      0},                        BASHAUTOLIST},
+{{NULL, "bashrematch",	      0},			 BASHREMATCH},
 {{NULL, "beep",		      OPT_ALL},			 BEEP},
 {{NULL, "bgnice",	      OPT_EMULATE|OPT_NONBOURNE},BGNICE},
 {{NULL, "braceccl",	      OPT_EMULATE},		 BRACECCL},
 {{NULL, "bsdecho",	      OPT_EMULATE|OPT_SH},	 BSDECHO},
 {{NULL, "caseglob",	      OPT_ALL},			 CASEGLOB},
+{{NULL, "casematch",	      OPT_ALL},			 CASEMATCH},
 {{NULL, "cbases",	      0},			 CBASES},
 {{NULL, "cdablevars",	      OPT_EMULATE},		 CDABLEVARS},
 {{NULL, "chasedots",	      OPT_EMULATE},		 CHASEDOTS},
@@ -201,6 +203,7 @@
 {{NULL, "rcquotes",	      OPT_EMULATE},		 RCQUOTES},
 {{NULL, "rcs",		      OPT_ALL},			 RCS},
 {{NULL, "recexact",	      0},			 RECEXACT},
+{{NULL, "rematchpcre",	      0},			 REMATCHPCRE},
 {{NULL, "restricted",	      OPT_SPECIAL},		 RESTRICTED},
 {{NULL, "rmstarsilent",	      OPT_BOURNE},		 RMSTARSILENT},
 {{NULL, "rmstarwait",	      0},			 RMSTARWAIT},
Index: Src/parse.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/parse.c,v
retrieving revision 1.64
diff -u -r1.64 parse.c
--- Src/parse.c	23 Apr 2007 17:24:23 -0000	1.64
+++ Src/parse.c	1 May 2007 21:54:54 -0000
@@ -2124,6 +2124,12 @@
 	ecstr(a);
 	ecstr(c);
 	ecadd(ecnpats++);
+    } else if ((b[0] == Equals || b[0] == '=') &&
+               (b[1] == '~' || b[1] == Tilde) && ~b[2]) {
+	ecadd(WCB_COND(COND_REGEX, 0));
+	ecstr(a);
+	ecstr(c);
+	ecadd(ecnpats++);
     } else if (b[0] == '-') {
 	if ((t0 = get_cond_num(b + 1)) > -1) {
 	    ecadd(WCB_COND(t0 + COND_NT, 0));
Index: Src/text.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/text.c,v
retrieving revision 1.19
diff -u -r1.19 text.c
--- Src/text.c	23 Apr 2007 15:24:00 -0000	1.19
+++ Src/text.c	1 May 2007 21:54:54 -0000
@@ -640,7 +640,7 @@
 	    {
 		static char *c1[] = {
 		    "=", "!=", "<", ">", "-nt", "-ot", "-ef", "-eq",
-		    "-ne", "-lt", "-gt", "-le", "-ge"
+		    "-ne", "-lt", "-gt", "-le", "-ge", "=~"
 		};
 
 		int ctype;
@@ -724,7 +724,7 @@
 			}
 			break;
 		    default:
-			if (ctype <= COND_GE) {
+			if (ctype < COND_MOD) {
 			    /* Binary test: `a = b' etc. */
 			    taddstr(ecgetstr(state, EC_NODUP, NULL));
 			    taddstr(" ");
Index: Src/zsh.h
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/zsh.h,v
retrieving revision 1.112
diff -u -r1.112 zsh.h
--- Src/zsh.h	29 Mar 2007 21:35:39 -0000	1.112
+++ Src/zsh.h	1 May 2007 21:54:57 -0000
@@ -519,8 +519,9 @@
 #define COND_GT    13
 #define COND_LE    14
 #define COND_GE    15
-#define COND_MOD   16
-#define COND_MODI  17
+#define COND_REGEX 16
+#define COND_MOD   17
+#define COND_MODI  18
 
 typedef int (*CondHandler) _((char **, int));
 
@@ -1588,11 +1589,13 @@
     BANGHIST,
     BAREGLOBQUAL,
     BASHAUTOLIST,
+    BASHREMATCH,
     BEEP,
     BGNICE,
     BRACECCL,
     BSDECHO,
     CASEGLOB,
+    CASEMATCH,
     CBASES,
     CDABLEVARS,
     CHASEDOTS,
@@ -1695,6 +1698,7 @@
     RCQUOTES,
     RCS,
     RECEXACT,
+    REMATCHPCRE,
     RESTRICTED,
     RMSTARSILENT,
     RMSTARWAIT,
Index: Src/Modules/pcre.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/Modules/pcre.c,v
retrieving revision 1.11
diff -u -r1.11 pcre.c
--- Src/Modules/pcre.c	5 Apr 2007 16:20:15 -0000	1.11
+++ Src/Modules/pcre.c	1 May 2007 21:54:57 -0000
@@ -3,7 +3,7 @@
  *
  * This file is part of zsh, the Z shell.
  *
- * Copyright (c) 2001, 2002, 2003, 2004 Clint Adams
+ * Copyright (c) 2001, 2002, 2003, 2004, 2007 Clint Adams
  * All rights reserved.
  *
  * Permission is hereby granted, without written agreement and without
@@ -42,6 +42,37 @@
 
 /**/
 static int
+zpcre_utf8_enabled(void)
+{
+#if defined(MULTIBYTE_SUPPORT) && defined(HAVE_NL_LANGINFO) && defined(CODESET)
+    static int have_utf8_pcre = -1;
+
+    /* value can toggle based on MULTIBYTE, so don't
+     * be too eager with caching */
+    if (have_utf8_pcre < -1)
+	return 0;
+
+    if (!isset(MULTIBYTE))
+	return 0;
+
+    if ((have_utf8_pcre == -1) &&
+        (!strcmp(nl_langinfo(CODESET), "UTF-8"))) {
+
+	if (pcre_config(PCRE_CONFIG_UTF8, &have_utf8_pcre))
+	    have_utf8_pcre = -2; /* erk, failed to ask */
+    }
+
+    if (have_utf8_pcre < 0)
+	return 0;
+    return have_utf8_pcre;
+
+#else
+    return 0;
+#endif
+}
+
+/**/
+static int
 bin_pcre_compile(char *nam, char **args, Options ops, UNUSED(int func))
 {
     int pcre_opts = 0, pcre_errptr;
@@ -52,8 +83,14 @@
     if(OPT_ISSET(ops,'m')) pcre_opts |= PCRE_MULTILINE;
     if(OPT_ISSET(ops,'x')) pcre_opts |= PCRE_EXTENDED;
     
+    if (zpcre_utf8_enabled())
+	pcre_opts |= PCRE_UTF8;
+
     pcre_hints = NULL;  /* Is this necessary? */
     
+    if (pcre_pattern)
+	pcre_free(pcre_pattern);
+
     pcre_pattern = pcre_compile(*args, pcre_opts, &pcre_error, &pcre_errptr, NULL);
     
     if (pcre_pattern == NULL)
@@ -100,37 +137,52 @@
 
 /**/
 static int
-zpcre_get_substrings(char *arg, int *ovec, int ret, char *receptacle)
+zpcre_get_substrings(char *arg, int *ovec, int ret, char *matchvar, char *substravar, int matchedinarr)
 {
-    char **captures, **matches;
+    char **captures, **match_all, **matches;
+    int capture_start = 1;
 
-	if(!pcre_get_substring_list(arg, ovec, ret, (const char ***)&captures)) {
-	    
-	    matches = zarrdup(&captures[1]); /* first one would be entire string */
-	    if (receptacle == NULL)
-		setaparam("match", matches);
-	    else
-		setaparam(receptacle, matches);
-	    
-	    pcre_free_substring_list((const char **)captures);
-	}
+    if (matchedinarr)
+	capture_start = 0;
+    if (matchvar == NULL)
+	matchvar = "MATCH";
+    if (substravar == NULL)
+	substravar = "match";
+
+    /* captures[0] will be entire matched string, [1] first substring */
+    if(!pcre_get_substring_list(arg, ovec, ret, (const char ***)&captures)) {
+	match_all = ztrdup(captures[0]);
+	setsparam(matchvar, match_all);
+	matches = zarrdup(&captures[capture_start]);
+	setaparam(substravar, matches);
+	pcre_free_substring_list((const char **)captures);
+    }
 
-	return 0;
+    return 0;
 }
 
 /**/
 static int
 bin_pcre_match(char *nam, char **args, Options ops, UNUSED(int func))
 {
-    int ret, capcount, *ovec, ovecsize;
+    int ret, capcount, *ovec, ovecsize, c;
+    char *matched_portion = NULL;
     char *receptacle = NULL;
+    int return_value = 1;
+
+    if (pcre_pattern == NULL) {
+	zwarnnam(nam, "no pattern has been compiled");
+	return 1;
+    }
     
-    if(OPT_ISSET(ops,'a')) {
-	receptacle = *args++;
-	if(!*args) {
-	    zwarnnam(nam, "not enough arguments");
-	    return 1;
-	}
+    if(OPT_HASARG(ops,c='a')) {
+	receptacle = OPT_ARG(ops,c);
+    }
+    if(OPT_HASARG(ops,c='v')) {
+	matched_portion = OPT_ARG(ops,c);
+    }
+    if(!*args) {
+	zwarnnam(nam, "not enough arguments");
     }
     
     if ((ret = pcre_fullinfo(pcre_pattern, pcre_hints, PCRE_INFO_CAPTURECOUNT, &capcount)))
@@ -144,18 +196,20 @@
     
     ret = pcre_exec(pcre_pattern, pcre_hints, *args, strlen(*args), 0, 0, ovec, ovecsize);
     
-    if (ret==0) return 0;
-    else if (ret==PCRE_ERROR_NOMATCH) return 1; /* no match */
+    if (ret==0) return_value = 0;
+    else if (ret==PCRE_ERROR_NOMATCH) /* no match */;
     else if (ret>0) {
-	zpcre_get_substrings(*args, ovec, ret, receptacle);
-	return 0;
+	zpcre_get_substrings(*args, ovec, ret, matched_portion, receptacle, 0);
+	return_value = 0;
     }
     else {
 	zwarnnam(nam, "error in pcre_exec");
-	return 1;
     }
     
-    return 1;
+    if (ovec)
+	zfree(ovec, ovecsize*sizeof(int));
+
+    return return_value;
 }
 
 /**/
@@ -164,33 +218,63 @@
 {
     pcre *pcre_pat;
     const char *pcre_err;
-    char *lhstr, *rhre;
+    char *lhstr, *rhre, *avar=NULL;
     int r = 0, pcre_opts = 0, pcre_errptr, capcnt, *ov, ovsize;
+    int return_value = 0;
+
+    if (zpcre_utf8_enabled())
+	pcre_opts |= PCRE_UTF8;
 
     lhstr = cond_str(a,0,0);
     rhre = cond_str(a,1,0);
+    pcre_pat = ov = NULL;
+
+    if (isset(BASHREMATCH))
+	avar="BASH_REMATCH";
 
     switch(id) {
 	 case CPCRE_PLAIN:
-		 pcre_pat = pcre_compile(rhre, pcre_opts, &pcre_err, &pcre_errptr, NULL);
-                 pcre_fullinfo(pcre_pat, NULL, PCRE_INFO_CAPTURECOUNT, &capcnt);
-    		 ovsize = (capcnt+1)*3;
-		 ov = zalloc(ovsize*sizeof(int));
-    		 r = pcre_exec(pcre_pat, NULL, lhstr, strlen(lhstr), 0, 0, ov, ovsize);
-    		if (r==0) return 1;
+		pcre_pat = pcre_compile(rhre, pcre_opts, &pcre_err, &pcre_errptr, NULL);
+		if (pcre_pat == NULL) {
+		    zwarn("failed to compile regexp /%s/: %s", rhre, pcre_err);
+		    break;
+		}
+                pcre_fullinfo(pcre_pat, NULL, PCRE_INFO_CAPTURECOUNT, &capcnt);
+    		ovsize = (capcnt+1)*3;
+		ov = zalloc(ovsize*sizeof(int));
+    		r = pcre_exec(pcre_pat, NULL, lhstr, strlen(lhstr), 0, 0, ov, ovsize);
+		/* r < 0 => error; r==0 match but not enough size in ov
+		 * r > 0 => (r-1) substrings found; r==1 => no substrings
+		 */
+    		if (r==0) {
+		    zwarn("reportable zsh problem: pcre_exec() returned 0");
+		    return_value = 1;
+		    break;
+		}
 	        else if (r==PCRE_ERROR_NOMATCH) return 0; /* no match */
+		else if (r<0) {
+		    zwarn("pcre_exec() error: %d", r);
+		    break;
+		}
                 else if (r>0) {
-		    zpcre_get_substrings(lhstr, ov, r, NULL);
-		    return 1;
+		    zpcre_get_substrings(lhstr, ov, r, NULL, avar, isset(BASHREMATCH));
+		    return_value = 1;
+		    break;
 		}
 		break;
     }
 
-    return 0;
+    if (pcre_pat)
+	pcre_free(pcre_pat);
+    if (ov)
+	zfree(ov, ovsize*sizeof(int));
+
+    return return_value;
 }
 
 static struct conddef cotab[] = {
     CONDDEF("pcre-match", CONDF_INFIX, cond_pcre_match, 0, 0, CPCRE_PLAIN)
+    /* CONDDEF can register =~ but it won't be found */
 };
 
 /**/
@@ -206,7 +290,7 @@
 static struct builtin bintab[] = {
     BUILTIN("pcre_compile", 0, bin_pcre_compile, 1, 1, 0, "aimx",  NULL),
     BUILTIN("pcre_study",   0, bin_pcre_study,   0, 0, 0, NULL,    NULL),
-    BUILTIN("pcre_match",   0, bin_pcre_match,   1, 2, 0, "a",    NULL)
+    BUILTIN("pcre_match",   0, bin_pcre_match,   1, 1, 0, "a:v:",    NULL)
 };
 
 
Index: Src/Modules/regex.c
===================================================================
RCS file: Src/Modules/regex.c
diff -N Src/Modules/regex.c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ Src/Modules/regex.c	1 May 2007 21:54:57 -0000
@@ -0,0 +1,161 @@
+/*
+ * regex.c
+ *
+ * This file is part of zsh, the Z shell.
+ *
+ * Copyright (c) 2007 Phil Pennock
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, without written agreement and without
+ * license or royalty fees, to use, copy, modify, and distribute this
+ * software and to distribute modified versions of this software for any
+ * purpose, provided that the above copyright notice and the following
+ * two paragraphs appear in all copies of this software.
+ *
+ * In no event shall Phil Pennock or the Zsh Development Group be liable
+ * to any party for direct, indirect, special, incidental, or consequential
+ * damages arising out of the use of this software and its documentation,
+ * even if Phil Pennock and the Zsh Development Group have been advised of
+ * the possibility of such damage.
+ *
+ * Phil Pennock and the Zsh Development Group specifically disclaim any
+ * warranties, including, but not limited to, the implied warranties of
+ * merchantability and fitness for a particular purpose.  The software
+ * provided hereunder is on an "as is" basis, and Phil Pennock and the
+ * Zsh Development Group have no obligation to provide maintenance,
+ * support, updates, enhancements, or modifications.
+ *
+ */
+
+#include "regex.mdh"
+#include "regex.pro"
+
+#include <regex.h>
+
+/* we default to a vaguely modern syntax and set of capabilities */
+#define ZREGEX_EXTENDED 0
+/* if you want Basic syntax, make it an alternative options */
+
+static void
+zregex_regerrwarn(int r, regex_t *re, char *msg)
+{
+    char *errbuf;
+    size_t errbufsz;
+
+    errbufsz = regerror(r, re, NULL, 0);
+    errbuf = zalloc(errbufsz*sizeof(char));
+    regerror(r, re, errbuf, errbufsz);
+    zwarn("%s: %s", msg, errbuf);
+    zfree(errbuf, errbufsz);
+}
+
+/**/
+static int
+zcond_regex_match(char **a, int id)
+{
+    regex_t re;
+    regmatch_t *m, *matches = NULL;
+    size_t matchessz;
+    char *lhstr, *rhre, *s, **arr, **x;
+    int r, n, return_value, rcflags, reflags, nelem, start;
+
+    lhstr = cond_str(a,0,0);
+    rhre = cond_str(a,1,0);
+    rcflags = reflags = 0;
+    return_value = 0; /* 1 => matched successfully */
+
+    switch(id) {
+    case ZREGEX_EXTENDED:
+	rcflags |= REG_EXTENDED;
+	if (!isset(CASEMATCH))
+	    rcflags |= REG_ICASE;
+	r = regcomp(&re, rhre, rcflags);
+	if (r) {
+	    zregex_regerrwarn(r, &re, "failed to compile regex");
+	    break;
+	}
+	/* re.re_nsub is number of parenthesized groups, we also need
+	 * 1 for the 0 offset, which is the entire matched portion
+	 */
+	if (re.re_nsub < 0) {
+	    zwarn("INTERNAL ERROR: regcomp() returned "
+		    "negative subpattern count %d", re.re_nsub);
+	    break;
+	}
+	matchessz = (re.re_nsub + 1) * sizeof(regmatch_t);
+	matches = zalloc(matchessz);
+	r = regexec(&re, lhstr, re.re_nsub+1, matches, reflags);
+	if (r == REG_NOMATCH) /**/;
+	else if (r == 0) {
+	    return_value = 1;
+	    if (isset(BASHREMATCH)) {
+		start = 0;
+		nelem = re.re_nsub + 1;
+	    } else {
+		start = 1;
+		nelem = re.re_nsub;
+	    }
+	    arr = NULL; /* bogus gcc warning of used uninitialised */
+	    /* entire matched portion + re_nsub substrings + NULL */
+	    if (nelem) {
+		arr = x = (char **) zalloc(sizeof(char *) * (nelem + 1));
+		for (m = matches + start, n = start; n <= re.re_nsub; ++n, ++m, ++x) {
+		    *x = ztrduppfx(lhstr + m->rm_so, m->rm_eo - m->rm_so);
+		}
+		*x = NULL;
+	    }
+	    if (isset(BASHREMATCH)) {
+		setaparam("BASH_REMATCH", arr);
+	    } else {
+		m = matches;
+		s = ztrduppfx(lhstr + m->rm_so, m->rm_eo - m->rm_so);
+		setsparam("MATCH", s);
+		if (nelem)
+		    setaparam("match", arr);
+	    }
+	}
+	else zregex_regerrwarn(r, &re, "regex matching error");
+	break;
+    default:
+	DPUTS(1, "bad regex option");
+	break;
+    }
+
+    if (matches)
+	zfree(matches, matchessz);
+    regfree(&re);
+    return return_value;
+}
+
+static struct conddef cotab[] = {
+    CONDDEF("regex-match", CONDF_INFIX, zcond_regex_match, 0, 0, ZREGEX_EXTENDED)
+};
+
+/**/
+int
+setup_(UNUSED(Module m))
+{
+    return 0;
+}
+
+/**/
+int
+boot_(Module m)
+{
+    return !addconddefs(m->nam, cotab, sizeof(cotab)/sizeof(*cotab));
+}
+
+/**/
+int
+cleanup_(Module m)
+{
+    deleteconddefs(m->nam, cotab, sizeof(cotab)/sizeof(*cotab));
+    return 0;
+}
+
+/**/
+int
+finish_(UNUSED(Module m))
+{
+    return 0;
+}
Index: Src/Modules/regex.mdd
===================================================================
RCS file: Src/Modules/regex.mdd
diff -N Src/Modules/regex.mdd
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ Src/Modules/regex.mdd	1 May 2007 21:54:57 -0000
@@ -0,0 +1,10 @@
+name=zsh/regex
+link=`if test x$ac_cv_func_regcomp = xyes && \
+         test x$ac_cv_func_regexec = xyes && \
+         test x$ac_cv_func_regerror = xyes && \
+         test x$ac_cv_func_regfree = xyes; then echo dynamic; else echo no; fi`
+load=no
+
+autobins=""
+
+objects="regex.o"

-- 
Peter Stephenson <p.w.stephenson@ntlworld.com>
Web page now at http://homepage.ntlworld.com/p.w.stephenson/


^ permalink raw reply	[relevance 2%]

* Re: [PATCH] exec compatibility
  @ 2007-05-07  5:56  3%   ` Bart Schaefer
  0 siblings, 0 replies; 200+ results
From: Bart Schaefer @ 2007-05-07  5:56 UTC (permalink / raw)
  To: zsh-workers

On May 4,  1:00pm, Peter Stephenson wrote:
}
} This is what I've ended up with for the exec patch.

One thing that rather annoys me about all this is that

	zsh% - exec sh
and
	zsh% exec - sh

seem no longer to be equivalent.  Am I wrong about that?

I'd be inclined to have these -c/-l/-a flags depend on the emulation mode,
or on POSIX_BUILTINS (though they aren't really POSIX, are they?) or on
something else, so that they're not available in default "zsh mode".

(Hmmm:  Make them a zmodload -F feature of the zsh/main module ...?)


^ permalink raw reply	[relevance 3%]

* Re: problems with 4.3.4 and Tru64
  @ 2007-05-10 11:03  1%         ` Timo Aaltonen
  0 siblings, 0 replies; 200+ results
From: Timo Aaltonen @ 2007-05-10 11:03 UTC (permalink / raw)
  To: zsh-workers

[-- Attachment #1: Type: TEXT/PLAIN, Size: 2019 bytes --]

On Thu, 10 May 2007, Peter Stephenson wrote:

> Timo Aaltonen <tjaalton@cc.hut.fi> wrote:
>> On Thu, 10 May 2007, Timo Aaltonen wrote:
>>
>>>>  Could you send a transcript of your session (as simple as
>>>> possible) made with "script" so we can see what is being sent to
>>>> the shell input?
>>>
>>> Attached.
>>
>> Forgot to mention that I pressed each of these keys twice;
>> ö - odiaeresis
>> ä - adiaeresis
>> å - aring
>
> Hmmm... nothing appears to be coming out; I'm looking for byte sequences
> like 0xc3 0xa4 (ä).
>
> Could we try a different tack?  Could you check the "multibyte" option has
> come on (use "setopt")?  This should happen automatically.  If it hasn't,
> the shell may not have built properly and we need to go back and look at
> the configuration.

Apparently multibyte is _not_ on, and running 'setopt multibyte' doesn't 
do anything. Configure does say that multibyte support is enabled. Setopt 
output:

replicant work 1 % setopt
interactive
monitor
norcs
shinstdin
zle


Attached is a script output of the configure/compile phase. The resulting 
binary is linked to libiconv.so:

#narya zsh 5080 # ldd 4.3.4/bin/zsh

         Main  =>   4.3.4/bin/zsh
         libiconv.so  =>   /usr/shlib/libiconv.so
         libm.so  =>   /usr/shlib/libm.so
         libc.so  =>   /usr/shlib/libc.so

> If multibyte mode is apparently enabled, try "cat >test.out", typing one of
> the characters, then ^D.  "xxd" or similar should show you the file
> contains a two-octet character like 0xc3 0xa4 (ä), 0xc3 0xb6 (ö), or 0xc3
> 0xa5 (å).  This may not tell us much, but it's a start...
>
> If that's all OK, try seeing if the shell is recognising multibyte
> characters internally.  Take the contents of a file with a multibyte
> character in it (say test.out) and do
>
> print ${#$(<test.out)}
>
> That should say 1 (i.e. one character found).  If it says 2 the shell is
> interpreting the multibyte stream wrongly.

Yep, printing works, and I could edit the file just fine.

thanks for helping out,

t

[-- Attachment #2: Type: TEXT/PLAIN, Size: 70769 bytes --]

Script started on Thu May 10 13:50:06 2007
\r^[[m^[[m^[[m^[[J$ ^[[Kh\bhutcompile /p/src/shells/zsh/hutcc/conf.sh
/p/work/lk/tjaalton/zsh-4.3.4 found, using it for compilation purposes.
Source directory: "/p/work/lk/tjaalton/zsh-4.3.4"
Object directory: "/p/work/lk/tjaalton/zsh-4.3.4"
gmake[1]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Doc'
rm -f *.html *.info* *.dvi *.ps *.pdf
rm -f *.aux *.cp *.cps *.fn *.fns *.ky *.log
rm -f *.pg *.pgs *.toc *.tp *.tps *.vr *.vrs
rm -rf infodir
gmake[1]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Doc'
gmake[1]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Etc'
rm -f FAQ.html
gmake[1]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Etc'
gmake[1]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src'
if test -f Makemod; then \
  gmake -f Makemod prefix='/v/gen/shells/zsh/4.3.4' exec_prefix='/v/dunix51_alpha/shells/zsh/4.3.4' bindir='/v/dunix51_alpha/shells/zsh/4.3.4/bin' libdir='/v/dunix51_alpha/shells/zsh/4.3.4/lib' MODDIR='/v/dunix51_alpha/shells/zsh/4.3.4/lib/zsh/4.3.4' infodir='/v/gen/shells/zsh/4.3.4/info' mandir='/v/gen/shells/zsh/4.3.4/man' datadir='/v/gen/shells/zsh/4.3.4/share' fndir='/v/gen/shells/zsh/4.3.4/share/zsh/4.3.4/functions' htmldir='/v/gen/shells/zsh/4.3.4/share/zsh/htmldoc' CC='cc' CPPFLAGS='-I/p/include' DEFS='-DHAVE_CONFIG_H' CFLAGS='-O' LDFLAGS='-L/p/lib' EXTRA_LDFLAGS='' DLCFLAGS='' DLLDFLAGS='' LIBLDFLAGS='' EXELDFLAGS='' LIBS='-liconv /p/lib/libncurses.a -lm  -lc' DL_EXT='' DLLD='' AWK='gawk' ANSI2KNR=': ansi2knr' YODL=': yodl' YODL2TXT=': yodl2txt' YODL2HTML=': yodl2html' FUNCTIONS_INSTALL='' tzsh='zsh' `echo clean-modules | sed 's/-modules//'`; \
fi; \
exit 0
gmake[2]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src'
gmake[3]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Builtins'
rm -f *.o *.export *.
rm -f rlimits.h
rm -f *.o.c *.syms *.pro *.epro *.mdh *.mdhi *.mdhs *.mdh.tmp
gmake[3]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Builtins'
gmake[3]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Modules'
rm -f *.o *.export *.
rm -f *.o.c *.syms *.pro *.epro *.mdh *.mdhi *.mdhs *.mdh.tmp
gmake[3]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Modules'
gmake[3]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Zle'
rm -f *.o *.export *.
rm -f zle_things.h zle_widget.h widgets.list thingies.list
rm -f *.o.c *.syms *.pro *.epro *.mdh *.mdhi *.mdhs *.mdh.tmp
gmake[3]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Zle'
rm -f *.o *.export *.
rm -f sigcount.h signames.c bltinmods.list version.h zshpaths.h zshxmods.h
rm -f *.o.c *.syms *.pro *.epro *.mdh *.mdhi *.mdhs *.mdh.tmp
gmake[2]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src'
rm -f stamp-modobjs stamp-modobjs.tmp
rm -f modules.stamp zsh
rm -f libzsh-*.
gmake[1]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src'
gmake[1]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Test'
rm -rf Modules .zcompdump *.tmp
gmake[1]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Test'
configure_options: "--prefix=/v/gen/shells/zsh/4.3.4 --exec-prefix=/v/dunix51_alpha/shells/zsh/4.3.4 --disable-dynamic --with-curses-terminfo"
configuring for zsh 4.3.4
checking build system type... alphaev67-dec-osf5.1b
checking host system type... alphaev67-dec-osf5.1b
checking for gcc... cc
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... no
checking whether cc accepts -g... yes
checking for cc option to accept ANSI C... none needed
checking whether large file support needs explicit enabling... no
checking how to run the C preprocessor... cc -E
checking for egrep... grep -E
checking for an ANSI C-conforming const... yes
checking for cc option to accept ANSI C... 
checking whether to use prototypes... yes
checking for working alloca.h... yes
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 gmake sets $(MAKE)... yes
checking for a BSD-compatible install... /p/bin/ginstall -c
checking for gawk... gawk
checking whether ln works... yes
checking for egrep... (cached) grep -E
checking for yodl... no
checking for pdfetex... pdfetex
checking for texi2pdf... texi2pdf
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... no
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... 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 sys/param.h usability... yes
checking sys/param.h presence... yes
checking for sys/param.h... yes
checking sys/filio.h usability... no
checking sys/filio.h presence... no
checking for sys/filio.h... no
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 stdarg.h usability... yes
checking stdarg.h presence... yes
checking for stdarg.h... yes
checking varargs.h usability... yes
checking varargs.h presence... yes
checking for varargs.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... yes
checking sys/stropts.h presence... yes
checking for sys/stropts.h... yes
checking iconv.h usability... yes
checking iconv.h presence... yes
checking for iconv.h... yes
checking for conflicts in sys/time.h and sys/select.h... no
checking TIOCGWINSZ in termios.h... no
checking TIOCGWINSZ in sys/ioctl.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 tigetstr... -lncurses
checking for library containing tigetflag... none required
checking for library containing tgetent... none required
checking curses.h usability... yes
checking curses.h presence... yes
checking for curses.h... yes
checking term.h usability... yes
checking term.h presence... yes
checking for term.h... yes
checking if term.h needs curses.h... no
checking if boolcodes is available... yes
checking if numcodes is available... yes
checking if strcodes is available... yes
checking if boolnames is available... yes
checking if numnames is available... yes
checking if strnames is available... yes
checking for library containing yp_all... none required
checking for socket in -lsocket... no
checking for iconv... no
checking for iconv in -liconv... yes
checking for iconv declaration... 
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... yes
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... no
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 strptime... yes
checking for mktime... yes
checking for timelocal... no
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 fchown... yes
checking for fchmod... yes
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... 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... no
checking for getipnodebyname... yes
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 getrusage... 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... yes
checking for tigetnum... yes
checking for tigetstr... yes
checking for setupterm... yes
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... (cached) no
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... yes
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 what style of signals to use... POSIX_SIGNALS
checking where signal.h is located... /usr/include/signal.h
checking where error names are located...  /usr/include/errno.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 limit RLIMIT_AIO_MEM... no
checking for limit RLIMIT_AIO_OPS... no
checking for limit RLIMIT_AS... yes
checking for limit RLIMIT_LOCKS... no
checking for limit RLIMIT_MEMLOCK... no
checking for limit RLIMIT_NPROC... no
checking for limit RLIMIT_NOFILE... yes
checking for limit RLIMIT_PTHREAD... no
checking for limit RLIMIT_RSS... yes
checking for limit RLIMIT_SBSIZE... no
checking for limit RLIMIT_TCACHE... no
checking for limit RLIMIT_VMEM... yes
checking for limit RLIMIT_SIGPENDING... no
checking for limit RLIMIT_MSGQUEUE... no
checking for limit RLIMIT_NICE... no
checking for limit RLIMIT_RTPRIO... no
checking if RLIMIT_VMEM and RLIMIT_RSS are the same... no
checking if RLIMIT_VMEM and RLIMIT_AS are the same... yes
checking if RLIMIT_RSS and RLIMIT_AS are the same... no
checking for struct rusage.ru_maxrss... yes
checking for struct rusage.ru_ixrss... yes
checking for struct rusage.ru_idrss... yes
checking for struct rusage.ru_isrss... yes
checking for struct rusage.ru_minflt... yes
checking for struct rusage.ru_majflt... yes
checking for struct rusage.ru_nswap... yes
checking for struct rusage.ru_inblock... yes
checking for struct rusage.ru_oublock... yes
checking for struct rusage.ru_msgsnd... yes
checking for struct rusage.ru_msgrcv... yes
checking for struct rusage.ru_nsignals... yes
checking for struct rusage.ru_nvcsw... yes
checking for struct rusage.ru_nivcsw... yes
checking for /dev/fd filesystem... no
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/adm/utmp
checking for wtmp file... /var/adm/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 mknod prototype in <sys/stat.h>... yes
checking for ioctl prototype in <unistd.h> or <termios.h>... no
checking for ioctl prototype in <sys/ioctl.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 has /dev/ptmx... yes
checking if /dev/ptmx is usable... yes
configure: checking for functions supporting multibyte characters
checking for iswalnum... yes
checking for iswcntrl... yes
checking for iswdigit... yes
checking for iswgraph... yes
checking for iswlower... yes
checking for iswprint... yes
checking for iswpunct... yes
checking for iswspace... yes
checking for iswupper... yes
checking for iswxdigit... yes
checking for mbrlen... yes
checking for mbrtowc... yes
checking for towupper... yes
checking for towlower... yes
checking for wcschr... yes
checking for wcscpy... yes
checking for wcslen... yes
checking for wcsncmp... yes
checking for wcsncpy... yes
checking for wcrtomb... yes
checking for wcwidth... yes
checking for wmemchr... yes
checking for wmemcmp... yes
checking for wmemcpy... yes
checking for wmemmove... yes
checking for wmemset... yes
configure: all functions found, multibyte support enabled
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: config.h is unchanged
config.status: executing config.modules commands
creating ./config.modules
config.status: executing stamp-h commands

zsh configuration
-----------------
zsh version               : 4.3.4
host operating system     : alphaev67-dec-osf5.1b
source code location      : /p/work/lk/tjaalton/zsh-4.3.4
compiler                  : cc
preprocessor flags        :  -I/p/include
executable compiler flags :  -O
executable linker flags   :  -L/p/lib  
library flags             : -liconv -lncurses -lm  -lc
installation basename     : zsh
binary install path       : /v/dunix51_alpha/shells/zsh/4.3.4/bin
man page install path     : /v/gen/shells/zsh/4.3.4/man
info install path         : /v/gen/shells/zsh/4.3.4/info
functions install path    : /v/gen/shells/zsh/4.3.4/share/zsh/4.3.4/functions
See config.modules for installed modules and functions.

Running gmake
gmake[1]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src'
cd .. && /bin/sh $top_srcdir/Src/mkmakemod.sh Src Makemod
creating Src/Makemod.in
config.status: creating Src/Makemod
gmake[2]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src'
echo 'timestamp for *.mdd files' > ../Src/modules.stamp
creating Src/Builtins/Makefile.in
config.status: creating Src/Builtins/Makefile
gmake[3]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Builtins'
gmake[3]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Builtins'
creating Src/Modules/Makefile.in
config.status: creating Src/Modules/Makefile
gmake[3]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Modules'
gmake[3]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Modules'
creating Src/Zle/Makefile.in
config.status: creating Src/Zle/Makefile
gmake[3]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Zle'
gmake[3]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Zle'
gmake[2]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src'
gmake[2]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src'
gawk -f /p/work/lk/tjaalton/zsh-4.3.4/Src/signames1.awk /usr/include/signal.h >sigtmp.c
cc -E sigtmp.c >sigtmp.out
gawk -f /p/work/lk/tjaalton/zsh-4.3.4/Src/signames2.awk sigtmp.out > signames.c
rm -f sigtmp.c sigtmp.out
grep 'define.*SIGCOUNT' signames.c > sigcount.h
gmake[3]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src'
gmake[3]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src'
Updated `zsh.mdh'.
echo 'timestamp for zsh.mdh against zsh.mdd' > zsh.mdhs
gawk -f /p/work/lk/tjaalton/zsh-4.3.4/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 /p/work/lk/tjaalton/zsh-4.3.4/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 /p/work/lk/tjaalton/zsh-4.3.4/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 /p/work/lk/tjaalton/zsh-4.3.4/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 /p/work/lk/tjaalton/zsh-4.3.4/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 /p/work/lk/tjaalton/zsh-4.3.4/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 /p/work/lk/tjaalton/zsh-4.3.4/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 /p/work/lk/tjaalton/zsh-4.3.4/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 /p/work/lk/tjaalton/zsh-4.3.4/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 /p/work/lk/tjaalton/zsh-4.3.4/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 /p/work/lk/tjaalton/zsh-4.3.4/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 /p/work/lk/tjaalton/zsh-4.3.4/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 /p/work/lk/tjaalton/zsh-4.3.4/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 /p/work/lk/tjaalton/zsh-4.3.4/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 /p/work/lk/tjaalton/zsh-4.3.4/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 /p/work/lk/tjaalton/zsh-4.3.4/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 /p/work/lk/tjaalton/zsh-4.3.4/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 /p/work/lk/tjaalton/zsh-4.3.4/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 /p/work/lk/tjaalton/zsh-4.3.4/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 /p/work/lk/tjaalton/zsh-4.3.4/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 /p/work/lk/tjaalton/zsh-4.3.4/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 /p/work/lk/tjaalton/zsh-4.3.4/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 /p/work/lk/tjaalton/zsh-4.3.4/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 /p/work/lk/tjaalton/zsh-4.3.4/Src/makepro.awk sort.c Src > sort.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < sort.syms) \
	> sort.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < sort.syms) \
	> `echo sort.epro | sed 's/\.epro$/.pro/'`
gawk -f /p/work/lk/tjaalton/zsh-4.3.4/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/'`
gawk -f /p/work/lk/tjaalton/zsh-4.3.4/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 /p/work/lk/tjaalton/zsh-4.3.4/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 /p/work/lk/tjaalton/zsh-4.3.4/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 /p/work/lk/tjaalton/zsh-4.3.4/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/'`
gmake[3]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src'
gmake[3]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src'
Updated `zsh.mdh'.
gmake[3]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Builtins'
gmake[4]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Builtins'
gmake[4]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Builtins'
Updated `rlimits.mdh'.
echo 'timestamp for rlimits.mdh against rlimits.mdd' > rlimits.mdhs
gawk -f /p/work/lk/tjaalton/zsh-4.3.4/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/'`
gmake[4]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Builtins'
gmake[4]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Builtins'
Updated `rlimits.mdh'.
gmake[4]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Builtins'
gmake[4]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Builtins'
Updated `sched.mdh'.
echo 'timestamp for sched.mdh against sched.mdd' > sched.mdhs
gawk -f /p/work/lk/tjaalton/zsh-4.3.4/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/'`
gmake[4]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Builtins'
gmake[4]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Builtins'
Updated `sched.mdh'.
gmake[3]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Builtins'
gmake[3]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Modules'
gmake[4]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Modules'
gmake[4]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Modules'
Updated `datetime.mdh'.
echo 'timestamp for datetime.mdh against datetime.mdd' > datetime.mdhs
gawk -f /p/work/lk/tjaalton/zsh-4.3.4/Src/makepro.awk datetime.c Src/Modules > datetime.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < datetime.syms) \
	> datetime.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < datetime.syms) \
	> `echo datetime.epro | sed 's/\.epro$/.pro/'`
gmake[4]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Modules'
gmake[4]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Modules'
Updated `datetime.mdh'.
gmake[4]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Modules'
gmake[4]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Modules'
Updated `langinfo.mdh'.
echo 'timestamp for langinfo.mdh against langinfo.mdd' > langinfo.mdhs
gawk -f /p/work/lk/tjaalton/zsh-4.3.4/Src/makepro.awk langinfo.c Src/Modules > langinfo.syms
(echo '/* Generated automatically */'; sed -n '/^E/{s/^E//;p;}' < langinfo.syms) \
	> langinfo.epro
(echo '/* Generated automatically */'; sed -n '/^L/{s/^L//;p;}' < langinfo.syms) \
	> `echo langinfo.epro | sed 's/\.epro$/.pro/'`
gmake[4]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Modules'
gmake[4]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Modules'
Updated `langinfo.mdh'.
gmake[4]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Modules'
gmake[4]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Modules'
Updated `parameter.mdh'.
echo 'timestamp for parameter.mdh against parameter.mdd' > parameter.mdhs
gawk -f /p/work/lk/tjaalton/zsh-4.3.4/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/'`
gmake[4]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Modules'
gmake[4]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Modules'
Updated `parameter.mdh'.
gmake[4]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Modules'
gmake[4]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Modules'
Updated `termcap.mdh'.
echo 'timestamp for termcap.mdh against termcap.mdd' > termcap.mdhs
gawk -f /p/work/lk/tjaalton/zsh-4.3.4/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/'`
gmake[4]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Modules'
gmake[4]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Modules'
Updated `termcap.mdh'.
gmake[4]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Modules'
gmake[4]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Modules'
Updated `terminfo.mdh'.
echo 'timestamp for terminfo.mdh against terminfo.mdd' > terminfo.mdhs
gawk -f /p/work/lk/tjaalton/zsh-4.3.4/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/'`
gmake[4]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Modules'
gmake[4]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Modules'
Updated `terminfo.mdh'.
gmake[4]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.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/ /' \
	< /p/work/lk/tjaalton/zsh-4.3.4/Src/Zle/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/ /' \
	< /p/work/lk/tjaalton/zsh-4.3.4/Src/Zle/iwidgets.list; \
) > thingies.list
( \
    echo '/** zle_things.h                              **/'; \
    echo '/** indices of and pointers to known thingies **/'; \
    echo; \
    echo 'enum {'; \
    sed -n -f /p/work/lk/tjaalton/zsh-4.3.4/Src/Zle/zle_things.sed < thingies.list; \
    echo '    ZLE_BUILTIN_THINGY_COUNT'; \
    echo '};'; \
) > zle_things.h
gmake[5]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Zle'
gmake[5]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Zle'
Updated `zle.mdh'.
echo 'timestamp for zle.mdh against zle.mdd' > zle.mdhs
gawk -f /p/work/lk/tjaalton/zsh-4.3.4/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 /p/work/lk/tjaalton/zsh-4.3.4/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 /p/work/lk/tjaalton/zsh-4.3.4/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 /p/work/lk/tjaalton/zsh-4.3.4/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 /p/work/lk/tjaalton/zsh-4.3.4/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 /p/work/lk/tjaalton/zsh-4.3.4/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 /p/work/lk/tjaalton/zsh-4.3.4/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 /p/work/lk/tjaalton/zsh-4.3.4/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 /p/work/lk/tjaalton/zsh-4.3.4/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 /p/work/lk/tjaalton/zsh-4.3.4/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 /p/work/lk/tjaalton/zsh-4.3.4/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 /p/work/lk/tjaalton/zsh-4.3.4/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 /p/work/lk/tjaalton/zsh-4.3.4/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/'`
gmake[5]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Zle'
gmake[5]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Zle'
Updated `zle.mdh'.
gmake[5]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Zle'
gmake[5]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Zle'
Updated `complete.mdh'.
echo 'timestamp for complete.mdh against complete.mdd' > complete.mdhs
gawk -f /p/work/lk/tjaalton/zsh-4.3.4/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 /p/work/lk/tjaalton/zsh-4.3.4/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 /p/work/lk/tjaalton/zsh-4.3.4/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 /p/work/lk/tjaalton/zsh-4.3.4/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/'`
gmake[5]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Zle'
gmake[5]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Zle'
Updated `complete.mdh'.
gmake[4]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Zle'
gmake[4]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Modules'
gmake[4]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Modules'
Updated `zutil.mdh'.
echo 'timestamp for zutil.mdh against zutil.mdd' > zutil.mdhs
gawk -f /p/work/lk/tjaalton/zsh-4.3.4/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/'`
gmake[4]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Modules'
gmake[4]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Modules'
Updated `zutil.mdh'.
gmake[3]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Modules'
gmake[3]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Zle'
gmake[4]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Zle'
gmake[4]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Zle'
Updated `compctl.mdh'.
echo 'timestamp for compctl.mdh against compctl.mdd' > compctl.mdhs
gawk -f /p/work/lk/tjaalton/zsh-4.3.4/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/'`
gmake[4]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Zle'
gmake[4]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Zle'
Updated `compctl.mdh'.
gmake[4]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Zle'
gmake[4]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Zle'
Updated `complist.mdh'.
echo 'timestamp for complist.mdh against complist.mdd' > complist.mdhs
gawk -f /p/work/lk/tjaalton/zsh-4.3.4/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/'`
gmake[4]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Zle'
gmake[4]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Zle'
Updated `complist.mdh'.
gmake[4]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Zle'
gmake[4]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Zle'
Updated `computil.mdh'.
echo 'timestamp for computil.mdh against computil.mdd' > computil.mdhs
gawk -f /p/work/lk/tjaalton/zsh-4.3.4/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/'`
gmake[4]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Zle'
gmake[4]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Zle'
Updated `computil.mdh'.
gmake[4]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Zle'
gmake[4]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Zle'
Updated `zleparameter.mdh'.
echo 'timestamp for zleparameter.mdh against zleparameter.mdd' > zleparameter.mdhs
gawk -f /p/work/lk/tjaalton/zsh-4.3.4/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/'`
gmake[4]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Zle'
gmake[4]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Zle'
Updated `zleparameter.mdh'.
gmake[3]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Zle'
gmake[2]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src'
rm -f stamp-modobjs.tmp
gmake[2]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src'
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o builtin.o builtin.c
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o compat.o compat.c
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o cond.o cond.c
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o exec.o exec.c
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o glob.o glob.c
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o hashtable.o hashtable.c
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o hist.o hist.c
srcdir='/p/work/lk/tjaalton/zsh-4.3.4/Src' CFMOD='../config.modules' \
  /bin/sh /p/work/lk/tjaalton/zsh-4.3.4/Src/mkbltnmlst.sh bltinmods.list
Updated `zshpaths.h'.
Creating `zshxmods.h'.
echo '#define ZSH_VERSION "'4.3.4'"' > version.h
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o init.o init.c
cc: Warning: init.c, line 1275: Non-void function "zsh_main" does not contain a return statement. (missingreturn)
mod_export int
-----------^
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o input.o input.c
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o jobs.o jobs.c
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o lex.o lex.c
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o linklist.o linklist.c
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o loop.o loop.c
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o math.o math.c
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o mem.o mem.c
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o module.o module.c
cc: Info: module.c, line 6: An invalid multibyte character was encountered in a comment. (badmbcomment)
 * Copyright (c) 1996-1997 Zoltán Hidvégi
-------------------------------^
cc: Info: module.c, line 6: An invalid multibyte character was encountered in a comment. (badmbcomment)
 * Copyright (c) 1996-1997 Zoltán Hidvégi
--------------------------------------^
cc: Info: module.c, line 15: An invalid multibyte character was encountered in a comment. (badmbcomment)
 * In no event shall Zoltán Hidvégi or the Zsh Development Group be liable
-------------------------^
cc: Info: module.c, line 15: An invalid multibyte character was encountered in a comment. (badmbcomment)
 * In no event shall Zoltán Hidvégi or the Zsh Development Group be liable
--------------------------------^
cc: Info: module.c, line 18: An invalid multibyte character was encountered in a comment. (badmbcomment)
 * even if Zoltán Hidvégi and the Zsh Development Group have been advised of
---------------^
cc: Info: module.c, line 18: An invalid multibyte character was encountered in a comment. (badmbcomment)
 * even if Zoltán Hidvégi and the Zsh Development Group have been advised of
----------------------^
cc: Info: module.c, line 21: An invalid multibyte character was encountered in a comment. (badmbcomment)
 * Zoltán Hidvégi and the Zsh Development Group specifically disclaim any
-------^
cc: Info: module.c, line 21: An invalid multibyte character was encountered in a comment. (badmbcomment)
 * Zoltán Hidvégi and the Zsh Development Group specifically disclaim any
--------------^
cc: Info: module.c, line 24: An invalid multibyte character was encountered in a comment. (badmbcomment)
 * provided hereunder is on an "as is" basis, and Zoltán Hidvégi and the
------------------------------------------------------^
cc: Info: module.c, line 24: An invalid multibyte character was encountered in a comment. (badmbcomment)
 * provided hereunder is on an "as is" basis, and Zoltán Hidvégi and the
-------------------------------------------------------------^
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o options.o options.c
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o params.o params.c
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o parse.o parse.c
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o pattern.o pattern.c
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o prompt.o prompt.c
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o signals.o signals.c
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o signames.o signames.c
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o sort.o sort.c
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o string.o string.c
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o subst.o subst.c
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o text.o text.c
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o utils.o utils.c
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -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 sort.o string.o subst.o text.o utils.o watch.o >> ../Src/stamp-modobjs.tmp
gmake[3]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Builtins'
gawk -f /p/work/lk/tjaalton/zsh-4.3.4/Src/Builtins/rlimits.awk /usr/include/sys/resource.h /dev/null > rlimits.h
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o rlimits.o rlimits.c
echo '' rlimits.o | sed 's" " Builtins/"g' >> ../../Src/stamp-modobjs.tmp
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o sched.o sched.c
echo '' sched.o | sed 's" " Builtins/"g' >> ../../Src/stamp-modobjs.tmp
gmake[3]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Builtins'
gmake[3]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Modules'
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o datetime.o datetime.c
cc: Warning: datetime.c, line 154: In the initializer for epochseconds_gsu.getfn, the referenced type of the pointer value "getcurrentsecs" is "function () returning long", which is not compatible with "function (pointer to struct param) returning long". (ptrmismatch)
{ getcurrentsecs, NULL, stdunsetfn };
--^
echo '' datetime.o | sed 's" " Modules/"g' >> ../../Src/stamp-modobjs.tmp
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o langinfo.o langinfo.c
echo '' langinfo.o | sed 's" " Modules/"g' >> ../../Src/stamp-modobjs.tmp
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o parameter.o parameter.c
echo '' parameter.o | sed 's" " Modules/"g' >> ../../Src/stamp-modobjs.tmp
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o termcap.o termcap.c
echo '' termcap.o | sed 's" " Modules/"g' >> ../../Src/stamp-modobjs.tmp
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o terminfo.o terminfo.c
echo '' terminfo.o | sed 's" " Modules/"g' >> ../../Src/stamp-modobjs.tmp
gmake[4]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Zle'
gmake[4]: `complete.mdh' is up to date.
gmake[4]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Zle'
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o zutil.o zutil.c
echo '' zutil.o | sed 's" " Modules/"g' >> ../../Src/stamp-modobjs.tmp
gmake[3]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Modules'
gmake[3]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Zle'
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o compctl.o compctl.c
cc: Info: compctl.c, line 520: In this statement, an array subscript expression is either less than zero or greater than the largest value that can be represented by the size_t type. (badsubscript)
			*argv = "" - 1;
-------------------------------------^
cc: Info: compctl.c, line 527: In this statement, an array subscript expression is either less than zero or greater than the largest value that can be represented by the size_t type. (badsubscript)
			*argv = "" - 1;
-------------------------------------^
cc: Info: compctl.c, line 557: In this statement, an array subscript expression is either less than zero or greater than the largest value that can be represented by the size_t type. (badsubscript)
		    *argv = "" - 1;
---------------------------------^
cc: Info: compctl.c, line 563: In this statement, an array subscript expression is either less than zero or greater than the largest value that can be represented by the size_t type. (badsubscript)
		    *argv = "" - 1;
---------------------------------^
cc: Info: compctl.c, line 569: In this statement, an array subscript expression is either less than zero or greater than the largest value that can be represented by the size_t type. (badsubscript)
		    *argv = "" - 1;
---------------------------------^
cc: Info: compctl.c, line 575: In this statement, an array subscript expression is either less than zero or greater than the largest value that can be represented by the size_t type. (badsubscript)
		    *argv = "" - 1;
---------------------------------^
cc: Info: compctl.c, line 586: In this statement, an array subscript expression is either less than zero or greater than the largest value that can be represented by the size_t type. (badsubscript)
		    *argv = "" - 1;
---------------------------------^
cc: Info: compctl.c, line 592: In this statement, an array subscript expression is either less than zero or greater than the largest value that can be represented by the size_t type. (badsubscript)
		    *argv = "" - 1;
---------------------------------^
cc: Info: compctl.c, line 598: In this statement, an array subscript expression is either less than zero or greater than the largest value that can be represented by the size_t type. (badsubscript)
		    *argv = "" - 1;
---------------------------------^
cc: Info: compctl.c, line 604: In this statement, an array subscript expression is either less than zero or greater than the largest value that can be represented by the size_t type. (badsubscript)
		    *argv = "" - 1;
---------------------------------^
cc: Info: compctl.c, line 610: In this statement, an array subscript expression is either less than zero or greater than the largest value that can be represented by the size_t type. (badsubscript)
		    *argv = "" - 1;
---------------------------------^
cc: Info: compctl.c, line 616: In this statement, an array subscript expression is either less than zero or greater than the largest value that can be represented by the size_t type. (badsubscript)
		    *argv = "" - 1;
---------------------------------^
cc: Info: compctl.c, line 622: In this statement, an array subscript expression is either less than zero or greater than the largest value that can be represented by the size_t type. (badsubscript)
		    *argv = "" - 1;
---------------------------------^
cc: Info: compctl.c, line 628: In this statement, an array subscript expression is either less than zero or greater than the largest value that can be represented by the size_t type. (badsubscript)
		    *argv = "" - 1;
---------------------------------^
cc: Info: compctl.c, line 634: In this statement, an array subscript expression is either less than zero or greater than the largest value that can be represented by the size_t type. (badsubscript)
		    *argv = "" - 1;
---------------------------------^
cc: Info: compctl.c, line 640: In this statement, an array subscript expression is either less than zero or greater than the largest value that can be represented by the size_t type. (badsubscript)
		    *argv = "" - 1;
---------------------------------^
cc: Info: compctl.c, line 646: In this statement, an array subscript expression is either less than zero or greater than the largest value that can be represented by the size_t type. (badsubscript)
		    *argv = "" - 1;
---------------------------------^
cc: Info: compctl.c, line 653: In this statement, an array subscript expression is either less than zero or greater than the largest value that can be represented by the size_t type. (badsubscript)
		    *argv = "" - 1;
---------------------------------^
cc: Info: compctl.c, line 662: In this statement, an array subscript expression is either less than zero or greater than the largest value that can be represented by the size_t type. (badsubscript)
		    *argv = "" - 1;
---------------------------------^
cc: Info: compctl.c, line 668: In this statement, an array subscript expression is either less than zero or greater than the largest value that can be represented by the size_t type. (badsubscript)
		    *argv = "" - 1;
---------------------------------^
cc: Info: compctl.c, line 677: In this statement, an array subscript expression is either less than zero or greater than the largest value that can be represented by the size_t type. (badsubscript)
		    *argv = "" - 1;
---------------------------------^
cc: Info: compctl.c, line 683: In this statement, an array subscript expression is either less than zero or greater than the largest value that can be represented by the size_t type. (badsubscript)
		    *argv = "" - 1;
---------------------------------^
cc: Info: compctl.c, line 689: In this statement, an array subscript expression is either less than zero or greater than the largest value that can be represented by the size_t type. (badsubscript)
		    *argv = "" - 1;
---------------------------------^
cc: Info: compctl.c, line 695: In this statement, an array subscript expression is either less than zero or greater than the largest value that can be represented by the size_t type. (badsubscript)
		    *argv = "" - 1;
---------------------------------^
cc: Info: compctl.c, line 701: In this statement, an array subscript expression is either less than zero or greater than the largest value that can be represented by the size_t type. (badsubscript)
		    *argv = "" - 1;
---------------------------------^
cc: Info: compctl.c, line 707: In this statement, an array subscript expression is either less than zero or greater than the largest value that can be represented by the size_t type. (badsubscript)
		    *argv = "" - 1;
---------------------------------^
cc: Info: compctl.c, line 713: In this statement, an array subscript expression is either less than zero or greater than the largest value that can be represented by the size_t type. (badsubscript)
		    *argv = "" - 1;
---------------------------------^
cc: Info: compctl.c, line 719: In this statement, an array subscript expression is either less than zero or greater than the largest value that can be represented by the size_t type. (badsubscript)
		    *argv = "" - 1;
---------------------------------^
cc: Info: compctl.c, line 742: In this statement, an array subscript expression is either less than zero or greater than the largest value that can be represented by the size_t type. (badsubscript)
		    *argv = "" - 1;
---------------------------------^
cc: Info: compctl.c, line 755: In this statement, an array subscript expression is either less than zero or greater than the largest value that can be represented by the size_t type. (badsubscript)
		    *argv = "" - 1;
---------------------------------^
cc: Info: compctl.c, line 776: In this statement, an array subscript expression is either less than zero or greater than the largest value that can be represented by the size_t type. (badsubscript)
		*argv = "" - 1;
-----------------------------^
echo '' compctl.o | sed 's" " Zle/"g' >> ../../Src/stamp-modobjs.tmp
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o complete.o complete.c
cc: Info: complete.c, line 577: In this statement, an array subscript expression is either less than zero or greater than the largest value that can be represented by the size_t type. (badsubscript)
                    p = "" - 1;
-----------------------------^
cc: Info: complete.c, line 581: In this statement, an array subscript expression is either less than zero or greater than the largest value that can be represented by the size_t type. (badsubscript)
                    p = "" - 1;
-----------------------------^
cc: Info: complete.c, line 602: In this statement, an array subscript expression is either less than zero or greater than the largest value that can be represented by the size_t type. (badsubscript)
		    p = "" - 1;
-----------------------------^
cc: Info: complete.c, line 607: In this statement, an array subscript expression is either less than zero or greater than the largest value that can be represented by the size_t type. (badsubscript)
		    p = "" - 1;
-----------------------------^
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o compcore.o compcore.c
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o compmatch.o compmatch.c
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -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. -I/p/include -DHAVE_CONFIG_H -O  -o complist.o complist.c
echo '' complist.o | sed 's" " Zle/"g' >> ../../Src/stamp-modobjs.tmp
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o computil.o computil.c
cc: Info: computil.c, line 1179: In this statement, an array subscript expression is either less than zero or greater than the largest value that can be represented by the size_t type. (badsubscript)
		    p = "" - 1;
-----------------------------^
cc: Info: computil.c, line 1187: In this statement, an array subscript expression is either less than zero or greater than the largest value that can be represented by the size_t type. (badsubscript)
		    p = "" - 1;
-----------------------------^
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)/' \
	< /p/work/lk/tjaalton/zsh-4.3.4/Src/Zle/iwidgets.list; \
) > widgets.list
( \
    echo '/** zle_widget.h                                **/'; \
    echo '/** indices of and pointers to internal widgets **/'; \
    echo; \
    echo 'enum {'; \
    sed -n -f /p/work/lk/tjaalton/zsh-4.3.4/Src/Zle/zle_widget.sed < widgets.list; \
    echo '    ZLE_BUILTIN_WIDGET_COUNT'; \
    echo '};'; \
) > zle_widget.h
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o zle_bindings.o zle_bindings.c
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o zle_hist.o zle_hist.c
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o zle_keymap.o zle_keymap.c
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o zle_main.o zle_main.c
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o zle_misc.o zle_misc.c
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o zle_move.o zle_move.c
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o zle_params.o zle_params.c
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o zle_refresh.o zle_refresh.c
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o zle_thingy.o zle_thingy.c
cc: Info: zle_thingy.c, line 671: In this statement, an array subscript expression is either less than zero or greater than the largest value that can be represented by the size_t type. (badsubscript)
		    *++args = "" - 1;
-----------------------------------^
cc: Info: zle_thingy.c, line 688: In this statement, an array subscript expression is either less than zero or greater than the largest value that can be represented by the size_t type. (badsubscript)
		    *++args = "" - 1;
-----------------------------------^
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o zle_tricky.o zle_tricky.c
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o zle_utils.o zle_utils.c
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -o zle_vi.o zle_vi.c
cc -c -I. -I/p/include -DHAVE_CONFIG_H -O  -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. -I/p/include -DHAVE_CONFIG_H -O  -o zleparameter.o zleparameter.c
echo '' zleparameter.o | sed 's" " Zle/"g' >> ../../Src/stamp-modobjs.tmp
gmake[3]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Zle'
gmake[2]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src'
Updated `stamp-modobjs'.
gmake[2]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src'
gawk -f /p/work/lk/tjaalton/zsh-4.3.4/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. -I/p/include -DHAVE_CONFIG_H -O -o main.o /p/work/lk/tjaalton/zsh-4.3.4/Src/main.c
gmake[2]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src'
gmake[2]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/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 sort.syms string.syms subst.syms text.syms utils.syms watch.syms  | sed -n '/^X/{s/^X//;p;}' | sort -u ) > zsh.export
gmake[2]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src'
rm -f zsh
cc -L/p/lib   -o zsh main.o  `cat stamp-modobjs`   -liconv -lncurses -lm  -lc
gmake[2]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src'
gmake[3]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Builtins'
gmake[3]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Builtins'
gmake[3]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Modules'
gmake[3]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Modules'
gmake[3]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Zle'
gmake[3]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src/Zle'
gmake[2]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src'
gmake[1]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Src'
gmake[1]: Entering directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Doc'
gmake[1]: Nothing to be done for `all'.
gmake[1]: Leaving directory `/m/fs/work/work/lk/tjaalton/zsh-4.3.4/Doc'
make successful.

*** gendir is: /v/gen/shells/zsh/4.3.4
*** bindir is: /v/dunix51_alpha/shells/zsh/4.3.4
*** Warning!! Script variables gendir and bindir
*** must ABSOLUTELY point to correct directory to continue.
*** Do not continue if you are unsure.
*** If you choose to continue you must give sudo password.
Installcommand is:
sudo hutinstall -g /v/gen/shells/zsh/4.3.4 -b /v/dunix51_alpha/shells/zsh/4.3.4 -u tjaalton -o /p/work/lk/tjaalton/zsh-4.3.4
hutcompile finished.
\r^[[m^[[m^[[m^[[J$ ^[[Ke\bexit

script done on Thu May 10 13:54:49 2007

^ permalink raw reply	[relevance 1%]

* Re: alias -s doesn't friendly deal with programs having an extension
  @ 2007-06-04 11:59  3%         ` Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2007-06-04 11:59 UTC (permalink / raw)
  To: Zsh-Workers

On Sun, 3 Jun 2007 23:18:05 +0200
Michael Prokop <news@michael-prokop.at> wrote:
> This would be great, I stumbled upon this bug with
> 
>   autoload zsh-mime-setup && zsh-mime-setup
> 
> and using catalyst.pl from the catalyst web framework.
> It took me some seconds to figure out why invoking catalyst.pl
> always resulted in "catalyst.pl baerli: No such file or directory". ;)

Hmm... do you have the style handle-nonexistent set to false?  Otherwise,
if it doesn't find the file locally it will simply try to execute it
anyway.  So if that's a normal executable script it should work.

Here's the fairly straighforward patch for the style option
find-file-in-path, and also the style file-path so you can find different
types of file in different paths, e.g.

zstyle ':mime:.png:' find-file-in-path true
zstyle ':mime:.png:' file-path ~/images /usr/local/share/pixmaps

No completion support yet.  That's a nice self-contained exercise for
someone.

Index: Doc/Zsh/contrib.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Zsh/contrib.yo,v
retrieving revision 1.69
diff -u -r1.69 contrib.yo
--- Doc/Zsh/contrib.yo	21 May 2007 11:32:03 -0000	1.69
+++ Doc/Zsh/contrib.yo	4 Jun 2007 11:54:51 -0000
@@ -1510,12 +1510,14 @@
 to style patterns in case the system is extended in future.  Some
 examples are given below.
 startitem()
+kindex(current-shell, MIME style)
 item(tt(current-shell))(
 If this boolean style is true, the mailcap handler for the context in
 question is run using the tt(eval) builtin instead of by starting a new
 tt(sh) process.  This is more efficient, but may not work in the occasional
 cases where the mailcap handler uses strict POSIX syntax.
 )
+kindex(execute-as-is, MIME style)
 item(tt(execute-as-is))(
 This style gives a list of patterns to be matched against files
 passed for execution with a handler program.  If the file matches
@@ -1527,10 +1529,36 @@
 handler, and the option tt(AUTO_CD) may be used to change to directories
 that happen to have MIME suffixes.
 )
+kindex(file-path, MIME style)
+item(tt(file-path))(
+Used if the style tt(find-file-in-path) is true for the same context.
+Set to an array of directories that are used for searching for the
+file to be handled; the default is the command path given by the
+special parameter tt(path).  The shell option tt(PATH_DIRS) is respected;
+if that is set, the appropriate path will be searched even if the
+name of the file to be handled as it appears on the command line contains
+a `tt(/)'.
+The full context is tt(:mime:.)var(suffix)tt(:), as described for the style
+tt(handler).
+)
+kindex(find-file-in-path, MIME style)
+item(tt(find-file-in-path))(
+If set, allows files whose names do not contain absolute paths
+to be searched for in the command path or the path specified by the
+tt(file-path) style.  If the file is not found in the path, it is looked
+for locally (whether or not the current directory is in the path); if it is
+not found locally, the handler will abort unless the tt(handle-nonexistent)
+style is set.  Files found in the path are tested as described for
+the style tt(execute-as-is).
+The full context is tt(:mime:.)var(suffix)tt(:), as described for the style
+tt(handler).
+)
+kindex(flags, MIME style)
 item(tt(flags))(
 Defines flags to go with a handler; the context is as for the
 tt(handler) style, and the format is as for the flags in tt(mailcap).
 )
+kindex(handle-nonexistent, MIME style)
 item(tt(handle-nonexistent))(
 By default, arguments that don't correspond to files are not passed
 to the MIME handler in order to prevent it from intercepting commands found
@@ -1539,7 +1567,10 @@
 handler even if they don't exist.  If it is not explicitly set it
 defaults to tt([[:alpha:]]#:/*) which allows URLs to be passed to the MIME
 handler even though they don't exist in that format in the file system.
+The full context is tt(:mime:.)var(suffix)tt(:), as described for the style
+tt(handler).
 )
+kindex(handler, MIME style)
 item(tt(handler))(
 Specifies a handler for a suffix; the suffix is given by the context as
 tt(:mime:.)var(suffix)tt(:), and the format of the handler is exactly
@@ -1550,12 +1581,14 @@
 or if the output is to be displayed through a pager (but not if the
 handler is itself a pager), it should include tt(copiousoutput).
 )
+kindex(mailcap, MIME style)
 item(tt(mailcap))(
 A list of files in the format of tt(~/.mailcap) and
 tt(/etc/mailcap) to be read during setup, replacing the default list
 which consists of those two files.  The context is tt(:mime:).
 A tt(PLUS()) in the list will be replaced by the default files.
 )
+kindex(mailcap-priorities, MIME style)
 item(tt(mailcap-priorities))(
 This style is used to resolve multiple mailcap entries for the same MIME
 type.  It consists of an array of the following elements, in descending
@@ -1585,6 +1618,7 @@
 Note that as this style is handled during initialisation, the context
 is always tt(:mime:), with no discrimination by suffix.
 )
+kindex(mailcap-prio-flags, MIME style)
 item(tt(mailcap-prio-flags))(
 This style is used when the keyword tt(flags) is encountered in the
 list of tests specified by the tt(mailcap-priorities) style.
@@ -1594,18 +1628,21 @@
 patterns in the list are preferred to later ones, and matched patterns
 are preferred to unmatched ones.
 )
+kindex(mime-types, MIME style)
 item(tt(mime-types))(
 A list of files in the format of tt(~/.mime.types) and
 tt(/etc/mime.types) to be read during setup, replacing the default list
 which consists of those two files.  The context is tt(:mime:).
 A tt(PLUS()) in the list will be replaced by the default files.
 )
+kindex(never-background, MIME style)
 item(tt(never-background))(
 If this boolean style is set, the handler for the given context is
 always run in the foreground, even if the flags provided in the mailcap
 entry suggest it need not be (for example, it doesn't require a
 terminal).
 )
+kindex(pager, MIME style)
 item(tt(pager))(
 If set, will be used instead of tt($PAGER) or tt(more) to handle
 suffixes where the tt(copiousoutput) flag is set.  The context is
Index: Functions/MIME/zsh-mime-handler
===================================================================
RCS file: /cvsroot/zsh/zsh/Functions/MIME/zsh-mime-handler,v
retrieving revision 1.9
diff -u -r1.9 zsh-mime-handler
--- Functions/MIME/zsh-mime-handler	9 Aug 2006 16:17:13 -0000	1.9
+++ Functions/MIME/zsh-mime-handler	4 Jun 2007 11:54:51 -0000
@@ -64,6 +64,22 @@
 local pattern
 local -a files
 
+# Search some path for the file, if required.
+# We do this before any other tests that need to find the
+# actual file or its directory.
+local dir
+local -a filepath
+if zstyle -t $context find-file-in-path && [[ $1 != /* ]] &&
+  [[ $1 != */* || -o pathdirs ]]; then
+  zstyle -a $context file-path filepath || filepath=($path)
+  for dir in $filepath; do
+    if [[ -e $dir/$1 ]]; then
+      1=$dir/$1
+      break
+    fi
+  done
+fi
+
 # In case the pattern contains glob qualifiers, as it does by default,
 # we need to do real globbing, not just pattern matching.
 # The strategy is to glob the files in the directory using the
@@ -111,7 +127,6 @@
 # terminal and display is set.
 zstyle -t $context never-background && no_bg=yes
 
-local -a files
 local hasmeta stdin
 
 # See if the handler has shell metacharacters in.
@@ -120,7 +135,7 @@
     hasmeta=1
 fi
 
-local -a execargs
+local -a execargs files
 
 if [[ $handler = *%s* ]]; then
   # We need to replace %s with the file(s).


-- 
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


To access the latest news from CSR copy this link into a web browser:  http://www.csr.com/email_sig.php

To get further information regarding CSR, please visit our Investor Relations page at http://ir.csr.com/csr/about/overview


^ permalink raw reply	[relevance 3%]

* PATCH: _git grep
@ 2007-06-24 15:13  6% Clint Adams
  0 siblings, 0 replies; 200+ results
From: Clint Adams @ 2007-06-24 15:13 UTC (permalink / raw)
  To: zsh-workers

git grep from Nikolai Weibull's repo.

Index: Completion/Unix/Command/_git
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/Unix/Command/_git,v
retrieving revision 1.5
diff -u -r1.5 _git
--- Completion/Unix/Command/_git	24 Jun 2007 14:58:16 -0000	1.5
+++ Completion/Unix/Command/_git	24 Jun 2007 15:11:50 -0000
@@ -829,10 +829,80 @@
     '::my revision:__git_revisions' && ret=0
 }
 
-# TODO: something better
 _git-grep () {
-  service=grep _grep
-  ret=0
+  local -a pattern_operators
+
+  if (( words[(I)-e] == CURRENT - 2 )); then
+    pattern_operators=(
+      '--and[both patterns must match]'
+      '--or[either pattern must match]'
+      '--not[the following pattern must not match]')
+  fi
+
+  local curcontext=$curcontext state line
+  declare -A opt_args
+
+  _arguments -A '--*' \
+    '--cached[grep blobs registered in index file instead of working tree]' \
+    '(-a --text)'{-a,--text}'[process binary files as if they were text]' \
+    '(-i --ignore-case)'{-i,--ignore-case}'[ignore case when matching]' \
+    '(-w --word-regexp)'{-w,--word-regexp}'[match only whole words]' \
+    '(-v --invert-match)'{-v,--invert-match}'[select non-matching lines]' \
+    '(   -H)-h[supress output of filenames]' \
+    '(-h   )-H[show filenames]' \
+    '--full-name[output paths relative to the project top directory]' \
+    '(-E --extended-regexp -G --basic-regexp)'{-E,--extended-regexp}'[use POSIX extended regexes]' \
+    '(-E --extended-regexp -G --basic-regexp)'{-G,--basic-regexp}'[use POSIX basic regexes]' \
+    '-n[prefix the line number to matching lines]' \
+    '(-l --files-with-matches -L --files-without-match)'{-l,--files-with-match}'[show only names of matching files]' \
+    '(-l --files-with-matches -L --files-without-match)'{-L,--files-without-match}'[show only names of non-matching files]' \
+    '(-c --count)'{-c,--count}'[show number of matching lines in files]' \
+    '-A[show trailing context]: :_guard "[[\:digit\:]]#" lines' \
+    '-B[show leading context]: :_guard "[[\:digit\:]]#" lines' \
+    '-C[show context]: :_guard "[[\:digit\:]]#" lines' \
+    '(1)*-f[read patterns from given file]:pattern file:_files' \
+    '(1)*-e[use the given pattern for matching]:pattern' \
+    $pattern_operators \
+    '--all-match[all patterns must match]' \
+    ':pattern:' \
+    '*::tree-or-file:->files' && ret=0
+  
+  case $state in
+    (files)
+      integer first_tree last_tree start end
+
+      (( start = words[(I)(-f|-e)] > 0 ? 1 : 2 ))
+      (( end = $#line - 1 ))
+
+      for (( i = start; i <= end; i++ )); do
+        [[ line[i] == '--' ]] && break
+        git cat-file -e "${(Q)line[i]}^{tree}" 2>/dev/null || break
+        if (( first_tree == 0 )); then
+          (( first_tree = last_tree = i ))
+        else
+          (( last_tree = i ))
+        fi
+      done
+
+      if (( last_tree == 0 || last_tree == end )); then
+        if (( first_tree == 0 )); then
+          _alternative \
+            'tree:tree:__git_trees' \
+            "file:file:__git_cached_files" && ret=0
+        else
+          _alternative \
+            'tree:tree:__git_trees' \
+            "tree file:tree-files:__git_tree_files $line[first_tree,last_tree]" && ret=0
+        fi
+      else
+        if (( first_tree == 0 )); then
+          __git_cached_files
+        else
+          __git_tree_files $line[first_tree,last_tree]
+        fi
+      fi
+      ;;
+  esac
 }
 
 # TODO: this isn't strictly right, but close enough


^ permalink raw reply	[relevance 6%]

* Re: command-not-found handler
  @ 2007-07-11 17:44  3%     ` Phil Pennock
  0 siblings, 0 replies; 200+ results
From: Phil Pennock @ 2007-07-11 17:44 UTC (permalink / raw)
  To: Zsh Hackers' List

On 2007-07-11 at 12:16 +0100, Peter Stephenson wrote:
> if this turns out to be useful.  (Note I called it _handle*r* since that
> seemed more natural.  A handler is something that handles an error.  A
> handle is a reference to a data structure.  If it means
> handle_command_not_found it should say so.  However, that's just me being
> picky and I'm not particularly bothered.)

> +If no external command is found but a function tt(command_not_found_handler)
> +exists the shell executes this function with all
> +command line arguments.

I think that the Debian bash extender was just as picky.

  command_not_found_handle
    The name of a shell function to be called if a command cannot be
    found. The return value of this function  should be  0,  if the
    command is available after execution of the function, otherwise 127
    (EX_NOTFOUND).  Enabled only in interactive, non POSIX mode shells.
    This is a Debian extension.

So I interpret that as meaning:
  unsplat_my_goofs() { blah; return 127; }
  command_not_found_handle=unsplat_my_goofs

However, I'm unable to get this to actually work on the Ubuntu-derived
distribution I'm using.

-Phil


^ permalink raw reply	[relevance 3%]

* Re: Substituting all but a trailing digit/number
  @ 2007-07-13 13:36  3%     ` Stephane Chazelas
  0 siblings, 0 replies; 200+ results
From: Stephane Chazelas @ 2007-07-13 13:36 UTC (permalink / raw)
  To: zzapper; +Cc: zsh-workers, zsh-users

On Fri, Jul 13, 2007 at 01:22:56PM +0000, zzapper wrote:
> Peter Stephenson <pws@csr.com> wrote in news:200707131248.l6DCmHAI018710
> @news01.csr.com:
> 
> > zzapper wrote:
> >> 
> >> I want to generalise top3 into top4,top5..etc
> >> 
> >> But how could I get filter just the trailing number (in VIM I would use 
> >> memory)
> > 
> > Use
> > 
> >   num=${(M)0%%<->}
> > 
> > The (M) tells the shell to substitute the matched part instead of
> > removing the matched part.
> Thanks Peter,
> And If I wanted to anchor the number to the end?
[...]

%% matches at the end, as much as possible.

You could also do

num=${0##*[!0-9]}

(remoes everything up to the rightmost non-digit).

That even happesns to  be POSIX.

Also, why are you using ls?

Why not simply

gvim -p *(.om[1,$num])

-- 
Stéphane


^ permalink raw reply	[relevance 3%]

* Not finding iconv and pcre
@ 2007-07-27 17:49  1% Renato Botelho
  0 siblings, 0 replies; 200+ results
From: Renato Botelho @ 2007-07-27 17:49 UTC (permalink / raw)
  To: zsh-workers

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

Zsh 4.3.4 is not finding iconv and pcre on FreeBSD. Here are some data:

garga@soc90:~/prs/zsh% make configure | grep -E -i '(pcre|iconv)'
checking pcre.h usability... no
checking pcre.h presence... no
checking for pcre.h... no
checking iconv.h usability... no
checking iconv.h presence... no
checking for iconv.h... no
checking for pcre_compile... no
checking for pcre_study... no
checking for pcre_exec... no
checking for iconv... no
garga@soc90:~/prs/zsh% ldconfig -r | grep -i -E '(pcre|iconv)'
        21:-lkiconv.2 => /lib/libkiconv.so.2
        95:-liconv.3 => /usr/local/lib/libiconv.so.3
        190:-lpcre.0 => /usr/local/lib/libpcre.so.0
        198:-lpcreposix.0 => /usr/local/lib/libpcreposix.so.0
        244:-lpcrecpp.0 => /usr/local/lib/libpcrecpp.so.0
garga@soc90:~/prs/zsh% ls -l /usr/local/include/pcre*
-r--r--r--  1 root  wheel  11842 Jul 19 08:42 /usr/local/include/pcre.h
-r--r--r--  1 root  wheel   6570 Jul 19 08:42 /usr/local/include/pcre_scanner.h
-r--r--r--  1 root  wheel   6041 Jul 19 08:42
/usr/local/include/pcre_stringpiece.h
-r--r--r--  1 root  wheel  25875 Jul 19 08:42 /usr/local/include/pcrecpp.h
-r--r--r--  1 root  wheel   6712 Jul 19 08:42 /usr/local/include/pcrecpparg.h
-r--r--r--  1 root  wheel   4871 Jul 19 08:42 /usr/local/include/pcreposix.h
garga@soc90:~/prs/zsh% ls -l /usr/local/include/*iconv*
-r--r--r--  1 root  wheel  4760 May 11 14:53 /usr/local/include/iconv.h

Does anyone have ideas about it?
-- 
Renato Botelho

[-- Attachment #2: config.log --]
[-- Type: application/octet-stream, Size: 376856 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.59.  Invocation command line was

  $ ./configure --with-curses-terminfo --with-tcsetpgrp --enable-etcdir=/etc --enable-fndir=/usr/local/share/zsh/4.3.4/functions --enable-function-subdirs --enable-site-fndir=/usr/local/share/zsh/site-functions --enable-zsh-mem --enable-zsh-secure-free --enable-maildir-support --enable-dynamic --enable-multibyte --prefix=/usr/local --mandir=/usr/local/man --infodir=/usr/local/info/ --build=i386-portbld-freebsd6.2

## --------- ##
## Platform. ##
## --------- ##

hostname = soc90.bluepex.com
uname -m = i386
uname -r = 6.2-STABLE
uname -s = FreeBSD
uname -v = FreeBSD 6.2-STABLE #1: Thu Jun 28 19:48:53 BRT 2007     root@soc90:/usr/obj/usr/src/sys/GARGA 

/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: /sbin
PATH: /bin
PATH: /usr/sbin
PATH: /usr/bin
PATH: /usr/games
PATH: /usr/local/sbin
PATH: /usr/local/bin
PATH: /home/garga/bin


## ----------- ##
## Core tests. ##
## ----------- ##

configure:1385: checking build system type
configure:1403: result: i386-portbld-freebsd6.2
configure:1411: checking host system type
configure:1425: result: i386-portbld-freebsd6.2
configure:1922: checking for gcc
configure:1948: result: cc
configure:2192: checking for C compiler version
configure:2195: cc --version </dev/null >&5
cc (GCC) 3.4.6 [FreeBSD] 20060305
Copyright (C) 2006 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.

configure:2198: $? = 0
configure:2200: cc -v </dev/null >&5
Using built-in specs.
Configured with: FreeBSD/i386 system compiler
Thread model: posix
gcc version 3.4.6 [FreeBSD] 20060305
configure:2203: $? = 0
configure:2205: cc -V </dev/null >&5
cc: `-V' option must have argument
configure:2208: $? = 1
configure:2231: checking for C compiler default output file name
configure:2234: cc -O2 -fno-strict-aliasing -pipe    conftest.c  >&5
configure:2237: $? = 0
configure:2283: result: a.out
configure:2288: checking whether the C compiler works
configure:2294: ./a.out
configure:2297: $? = 0
configure:2314: result: yes
configure:2321: checking whether we are cross compiling
configure:2323: result: no
configure:2326: checking for suffix of executables
configure:2328: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c  >&5
configure:2331: $? = 0
configure:2356: result: 
configure:2362: checking for suffix of object files
configure:2383: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:2386: $? = 0
configure:2408: result: o
configure:2412: checking whether we are using the GNU C compiler
configure:2436: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:2442: $? = 0
configure:2446: test -z 
			 || test ! -s conftest.err
configure:2449: $? = 0
configure:2452: test -s conftest.o
configure:2455: $? = 0
configure:2468: result: yes
configure:2474: checking whether cc accepts -g
configure:2495: cc -c -g  conftest.c >&5
configure:2501: $? = 0
configure:2505: test -z 
			 || test ! -s conftest.err
configure:2508: $? = 0
configure:2511: test -s conftest.o
configure:2514: $? = 0
configure:2525: result: yes
configure:2542: checking for cc option to accept ANSI C
configure:2612: cc  -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:2618: $? = 0
configure:2622: test -z 
			 || test ! -s conftest.err
configure:2625: $? = 0
configure:2628: test -s conftest.o
configure:2631: $? = 0
configure:2649: result: none needed
configure:2667: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
conftest.c:2: error: syntax error before "me"
configure:2673: $? = 1
configure: failed program was:
| #ifndef __cplusplus
|   choke me
| #endif
configure:2811: checking whether large file support needs explicit enabling
configure:2840: result: no
configure:2919: checking how to run the C preprocessor
configure:2954: cc -E  conftest.c
configure:2960: $? = 0
configure:2992: cc -E  conftest.c
conftest.c:23:28: ac_nonexistent.h: No such file or directory
configure:2998: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| /* end confdefs.h.  */
| #include <ac_nonexistent.h>
configure:3037: result: cc -E
configure:3061: cc -E  conftest.c
configure:3067: $? = 0
configure:3099: cc -E  conftest.c
conftest.c:23:28: ac_nonexistent.h: No such file or directory
configure:3105: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| /* end confdefs.h.  */
| #include <ac_nonexistent.h>
configure:3149: checking for egrep
configure:3159: result: grep -E
configure:3165: checking whether cc needs -traditional
conftest.c:23:20: termio.h: No such file or directory
configure:3207: result: no
configure:3213: checking for an ANSI C-conforming const
configure:3280: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:3286: $? = 0
configure:3290: test -z 
			 || test ! -s conftest.err
configure:3293: $? = 0
configure:3296: test -s conftest.o
configure:3299: $? = 0
configure:3310: result: yes
configure:3324: checking for cc option to accept ANSI C
configure:3364: cc -c -O2 -fno-strict-aliasing -pipe    conftest.c >&5
configure:3370: $? = 0
configure:3374: test -z 
			 || test ! -s conftest.err
configure:3377: $? = 0
configure:3380: test -s conftest.o
configure:3383: $? = 0
configure:3396: result: 
configure:3403: checking whether to use prototypes
configure:3422: result: yes
configure:3434: checking for working alloca.h
configure:3455: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c  >&5
conftest.c:24:20: alloca.h: No such file or directory
configure:3461: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| /* end confdefs.h.  */
| #include <alloca.h>
| int
| main ()
| {
| char *p = (char *) alloca (2 * sizeof (int));
|   ;
|   return 0;
| }
configure:3486: result: no
configure:3496: checking for alloca
configure:3537: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c  >&5
configure:3543: $? = 0
configure:3547: test -z 
			 || test ! -s conftest.err
configure:3550: $? = 0
configure:3553: test -s conftest
configure:3556: $? = 0
configure:3568: result: yes
configure:3791: checking if the compiler supports union initialisation
configure:3812: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:3818: $? = 0
configure:3822: test -z 
			 || test ! -s conftest.err
configure:3825: $? = 0
configure:3828: test -s conftest.o
configure:3831: $? = 0
configure:3842: result: yes
configure:3853: checking if signed to unsigned casting is broken
configure:3870: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c  >&5
configure:3873: $? = 0
configure:3875: ./conftest
configure:3878: $? = 1
configure: program exited with status 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| /* end confdefs.h.  */
| main(){return((int)(unsigned char)((char) -1) == 255);}
configure:3892: result: no
configure:3903: checking if the compiler supports variable-length arrays
configure:3924: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:3930: $? = 0
configure:3934: test -z 
			 || test ! -s conftest.err
configure:3937: $? = 0
configure:3940: test -s conftest.o
configure:3943: $? = 0
configure:3954: result: yes
configure:3965: checking whether make sets $(MAKE)
configure:3985: result: yes
configure:4006: checking for a BSD-compatible install
configure:4061: result: /usr/bin/install -c 
configure:4075: checking for gawk
configure:4104: result: no
configure:4075: checking for mawk
configure:4104: result: no
configure:4075: checking for nawk
configure:4091: found /usr/bin/nawk
configure:4101: result: nawk
configure:4110: checking whether ln works
configure:4128: result: yes
configure:4134: checking for egrep
configure:4144: result: grep -E
configure:4152: checking for yodl
configure:4181: result: no
configure:4193: checking for pdfetex
configure:4222: result: no
configure:4234: checking for texi2pdf
configure:4263: result: no
configure:4274: checking for ansi2knr
configure:4303: result: no
configure:4330: checking for dirent.h that defines DIR
configure:4354: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:4360: $? = 0
configure:4364: test -z 
			 || test ! -s conftest.err
configure:4367: $? = 0
configure:4370: test -s conftest.o
configure:4373: $? = 0
configure:4384: result: yes
configure:4397: checking for library containing opendir
configure:4427: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c  >&5
configure:4433: $? = 0
configure:4437: test -z 
			 || test ! -s conftest.err
configure:4440: $? = 0
configure:4443: test -s conftest
configure:4446: $? = 0
configure:4516: result: none required
configure:4652: checking for ANSI C header files
configure:4677: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:4683: $? = 0
configure:4687: test -z 
			 || test ! -s conftest.err
configure:4690: $? = 0
configure:4693: test -s conftest.o
configure:4696: $? = 0
configure:4785: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c  >&5
configure:4788: $? = 0
configure:4790: ./conftest
configure:4793: $? = 0
configure:4808: result: yes
configure:4818: checking whether time.h and sys/time.h may both be included
configure:4843: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:4849: $? = 0
configure:4853: test -z 
			 || test ! -s conftest.err
configure:4856: $? = 0
configure:4859: test -s conftest.o
configure:4862: $? = 0
configure:4873: result: yes
configure:4883: checking whether stat file-mode macros are broken
configure:4931: result: no
configure:4941: checking for sys/wait.h that is POSIX.1 compatible
configure:4972: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:4978: $? = 0
configure:4982: test -z 
			 || test ! -s conftest.err
configure:4985: $? = 0
configure:4988: test -s conftest.o
configure:4991: $? = 0
configure:5002: result: yes
configure:5069: checking for sys/types.h
configure:5085: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:5091: $? = 0
configure:5095: test -z 
			 || test ! -s conftest.err
configure:5098: $? = 0
configure:5101: test -s conftest.o
configure:5104: $? = 0
configure:5115: result: yes
configure:5069: checking for sys/stat.h
configure:5085: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:5091: $? = 0
configure:5095: test -z 
			 || test ! -s conftest.err
configure:5098: $? = 0
configure:5101: test -s conftest.o
configure:5104: $? = 0
configure:5115: result: yes
configure:5069: checking for stdlib.h
configure:5085: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:5091: $? = 0
configure:5095: test -z 
			 || test ! -s conftest.err
configure:5098: $? = 0
configure:5101: test -s conftest.o
configure:5104: $? = 0
configure:5115: result: yes
configure:5069: checking for string.h
configure:5085: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:5091: $? = 0
configure:5095: test -z 
			 || test ! -s conftest.err
configure:5098: $? = 0
configure:5101: test -s conftest.o
configure:5104: $? = 0
configure:5115: result: yes
configure:5069: checking for memory.h
configure:5085: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:5091: $? = 0
configure:5095: test -z 
			 || test ! -s conftest.err
configure:5098: $? = 0
configure:5101: test -s conftest.o
configure:5104: $? = 0
configure:5115: result: yes
configure:5069: checking for strings.h
configure:5085: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:5091: $? = 0
configure:5095: test -z 
			 || test ! -s conftest.err
configure:5098: $? = 0
configure:5101: test -s conftest.o
configure:5104: $? = 0
configure:5115: result: yes
configure:5069: checking for inttypes.h
configure:5085: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:5091: $? = 0
configure:5095: test -z 
			 || test ! -s conftest.err
configure:5098: $? = 0
configure:5101: test -s conftest.o
configure:5104: $? = 0
configure:5115: result: yes
configure:5069: checking for stdint.h
configure:5085: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:5091: $? = 0
configure:5095: test -z 
			 || test ! -s conftest.err
configure:5098: $? = 0
configure:5101: test -s conftest.o
configure:5104: $? = 0
configure:5115: result: yes
configure:5069: checking for unistd.h
configure:5085: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:5091: $? = 0
configure:5095: test -z 
			 || test ! -s conftest.err
configure:5098: $? = 0
configure:5101: test -s conftest.o
configure:5104: $? = 0
configure:5115: result: yes
configure:5184: checking sys/time.h usability
configure:5196: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:5202: $? = 0
configure:5206: test -z 
			 || test ! -s conftest.err
configure:5209: $? = 0
configure:5212: test -s conftest.o
configure:5215: $? = 0
configure:5225: result: yes
configure:5229: checking sys/time.h presence
configure:5239: cc -E  conftest.c
configure:5245: $? = 0
configure:5265: result: yes
configure:5300: checking for sys/time.h
configure:5307: result: yes
configure:5184: checking sys/times.h usability
configure:5196: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:5202: $? = 0
configure:5206: test -z 
			 || test ! -s conftest.err
configure:5209: $? = 0
configure:5212: test -s conftest.o
configure:5215: $? = 0
configure:5225: result: yes
configure:5229: checking sys/times.h presence
configure:5239: cc -E  conftest.c
configure:5245: $? = 0
configure:5265: result: yes
configure:5300: checking for sys/times.h
configure:5307: result: yes
configure:5184: checking sys/select.h usability
configure:5196: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:5202: $? = 0
configure:5206: test -z 
			 || test ! -s conftest.err
configure:5209: $? = 0
configure:5212: test -s conftest.o
configure:5215: $? = 0
configure:5225: result: yes
configure:5229: checking sys/select.h presence
configure:5239: cc -E  conftest.c
configure:5245: $? = 0
configure:5265: result: yes
configure:5300: checking for sys/select.h
configure:5307: result: yes
configure:5184: checking termcap.h usability
configure:5196: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:5202: $? = 0
configure:5206: test -z 
			 || test ! -s conftest.err
configure:5209: $? = 0
configure:5212: test -s conftest.o
configure:5215: $? = 0
configure:5225: result: yes
configure:5229: checking termcap.h presence
configure:5239: cc -E  conftest.c
configure:5245: $? = 0
configure:5265: result: yes
configure:5300: checking for termcap.h
configure:5307: result: yes
configure:5184: checking termio.h usability
configure:5196: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
conftest.c:78:20: termio.h: No such file or directory
configure:5202: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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
| /* end 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:5225: result: no
configure:5229: checking termio.h presence
configure:5239: cc -E  conftest.c
conftest.c:44:20: termio.h: No such file or directory
configure:5245: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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
| /* end confdefs.h.  */
| #include <termio.h>
configure:5265: result: no
configure:5300: checking for termio.h
configure:5307: result: no
configure:5184: checking termios.h usability
configure:5196: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:5202: $? = 0
configure:5206: test -z 
			 || test ! -s conftest.err
configure:5209: $? = 0
configure:5212: test -s conftest.o
configure:5215: $? = 0
configure:5225: result: yes
configure:5229: checking termios.h presence
configure:5239: cc -E  conftest.c
configure:5245: $? = 0
configure:5265: result: yes
configure:5300: checking for termios.h
configure:5307: result: yes
configure:5184: checking sys/param.h usability
configure:5196: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:5202: $? = 0
configure:5206: test -z 
			 || test ! -s conftest.err
configure:5209: $? = 0
configure:5212: test -s conftest.o
configure:5215: $? = 0
configure:5225: result: yes
configure:5229: checking sys/param.h presence
configure:5239: cc -E  conftest.c
configure:5245: $? = 0
configure:5265: result: yes
configure:5300: checking for sys/param.h
configure:5307: result: yes
configure:5184: checking sys/filio.h usability
configure:5196: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:5202: $? = 0
configure:5206: test -z 
			 || test ! -s conftest.err
configure:5209: $? = 0
configure:5212: test -s conftest.o
configure:5215: $? = 0
configure:5225: result: yes
configure:5229: checking sys/filio.h presence
configure:5239: cc -E  conftest.c
configure:5245: $? = 0
configure:5265: result: yes
configure:5300: checking for sys/filio.h
configure:5307: result: yes
configure:5175: checking for string.h
configure:5180: result: yes
configure:5175: checking for memory.h
configure:5180: result: yes
configure:5184: checking limits.h usability
configure:5196: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:5202: $? = 0
configure:5206: test -z 
			 || test ! -s conftest.err
configure:5209: $? = 0
configure:5212: test -s conftest.o
configure:5215: $? = 0
configure:5225: result: yes
configure:5229: checking limits.h presence
configure:5239: cc -E  conftest.c
configure:5245: $? = 0
configure:5265: result: yes
configure:5300: checking for limits.h
configure:5307: result: yes
configure:5184: checking fcntl.h usability
configure:5196: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:5202: $? = 0
configure:5206: test -z 
			 || test ! -s conftest.err
configure:5209: $? = 0
configure:5212: test -s conftest.o
configure:5215: $? = 0
configure:5225: result: yes
configure:5229: checking fcntl.h presence
configure:5239: cc -E  conftest.c
configure:5245: $? = 0
configure:5265: result: yes
configure:5300: checking for fcntl.h
configure:5307: result: yes
configure:5184: checking libc.h usability
configure:5196: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
conftest.c:85:18: libc.h: No such file or directory
configure:5202: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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
| /* end 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:5225: result: no
configure:5229: checking libc.h presence
configure:5239: cc -E  conftest.c
conftest.c:51:18: libc.h: No such file or directory
configure:5245: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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
| /* end confdefs.h.  */
| #include <libc.h>
configure:5265: result: no
configure:5300: checking for libc.h
configure:5307: result: no
configure:5184: checking sys/utsname.h usability
configure:5196: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:5202: $? = 0
configure:5206: test -z 
			 || test ! -s conftest.err
configure:5209: $? = 0
configure:5212: test -s conftest.o
configure:5215: $? = 0
configure:5225: result: yes
configure:5229: checking sys/utsname.h presence
configure:5239: cc -E  conftest.c
configure:5245: $? = 0
configure:5265: result: yes
configure:5300: checking for sys/utsname.h
configure:5307: result: yes
configure:5184: checking sys/resource.h usability
configure:5196: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:5202: $? = 0
configure:5206: test -z 
			 || test ! -s conftest.err
configure:5209: $? = 0
configure:5212: test -s conftest.o
configure:5215: $? = 0
configure:5225: result: yes
configure:5229: checking sys/resource.h presence
configure:5239: cc -E  conftest.c
configure:5245: $? = 0
configure:5265: result: yes
configure:5300: checking for sys/resource.h
configure:5307: result: yes
configure:5184: checking locale.h usability
configure:5196: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:5202: $? = 0
configure:5206: test -z 
			 || test ! -s conftest.err
configure:5209: $? = 0
configure:5212: test -s conftest.o
configure:5215: $? = 0
configure:5225: result: yes
configure:5229: checking locale.h presence
configure:5239: cc -E  conftest.c
configure:5245: $? = 0
configure:5265: result: yes
configure:5300: checking for locale.h
configure:5307: result: yes
configure:5184: checking errno.h usability
configure:5196: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:5202: $? = 0
configure:5206: test -z 
			 || test ! -s conftest.err
configure:5209: $? = 0
configure:5212: test -s conftest.o
configure:5215: $? = 0
configure:5225: result: yes
configure:5229: checking errno.h presence
configure:5239: cc -E  conftest.c
configure:5245: $? = 0
configure:5265: result: yes
configure:5300: checking for errno.h
configure:5307: result: yes
configure:5184: checking stdio.h usability
configure:5196: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:5202: $? = 0
configure:5206: test -z 
			 || test ! -s conftest.err
configure:5209: $? = 0
configure:5212: test -s conftest.o
configure:5215: $? = 0
configure:5225: result: yes
configure:5229: checking stdio.h presence
configure:5239: cc -E  conftest.c
configure:5245: $? = 0
configure:5265: result: yes
configure:5300: checking for stdio.h
configure:5307: result: yes
configure:5184: checking stdarg.h usability
configure:5196: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:5202: $? = 0
configure:5206: test -z 
			 || test ! -s conftest.err
configure:5209: $? = 0
configure:5212: test -s conftest.o
configure:5215: $? = 0
configure:5225: result: yes
configure:5229: checking stdarg.h presence
configure:5239: cc -E  conftest.c
configure:5245: $? = 0
configure:5265: result: yes
configure:5300: checking for stdarg.h
configure:5307: result: yes
configure:5184: checking varargs.h usability
configure:5196: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
In file included from conftest.c:91:
/usr/include/varargs.h:34:2: #error "<varargs.h> is obsolete with this version of GCC."
/usr/include/varargs.h:35:2: #error "Change your code to use <stdarg.h> instead."
configure:5202: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_H 1
| /* end 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 <varargs.h>
configure:5225: result: no
configure:5229: checking varargs.h presence
configure:5239: cc -E  conftest.c
In file included from conftest.c:57:
/usr/include/varargs.h:34:2: #error "<varargs.h> is obsolete with this version of GCC."
/usr/include/varargs.h:35:2: #error "Change your code to use <stdarg.h> instead."
configure:5245: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_H 1
| /* end confdefs.h.  */
| #include <varargs.h>
configure:5265: result: no
configure:5300: checking for varargs.h
configure:5307: result: no
configure:5175: checking for stdlib.h
configure:5180: result: yes
configure:5175: checking for unistd.h
configure:5180: result: yes
configure:5184: checking sys/capability.h usability
configure:5196: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
conftest.c:93:28: sys/capability.h: No such file or directory
configure:5202: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_UNISTD_H 1
| /* end 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:5225: result: no
configure:5229: checking sys/capability.h presence
configure:5239: cc -E  conftest.c
conftest.c:59:28: sys/capability.h: No such file or directory
configure:5245: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_UNISTD_H 1
| /* end confdefs.h.  */
| #include <sys/capability.h>
configure:5265: result: no
configure:5300: checking for sys/capability.h
configure:5307: result: no
configure:5184: checking utmp.h usability
configure:5196: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:5202: $? = 0
configure:5206: test -z 
			 || test ! -s conftest.err
configure:5209: $? = 0
configure:5212: test -s conftest.o
configure:5215: $? = 0
configure:5225: result: yes
configure:5229: checking utmp.h presence
configure:5239: cc -E  conftest.c
configure:5245: $? = 0
configure:5265: result: yes
configure:5300: checking for utmp.h
configure:5307: result: yes
configure:5184: checking utmpx.h usability
configure:5196: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
conftest.c:94:19: utmpx.h: No such file or directory
configure:5202: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_UTMP_H 1
| /* end 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:5225: result: no
configure:5229: checking utmpx.h presence
configure:5239: cc -E  conftest.c
conftest.c:60:19: utmpx.h: No such file or directory
configure:5245: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_UTMP_H 1
| /* end confdefs.h.  */
| #include <utmpx.h>
configure:5265: result: no
configure:5300: checking for utmpx.h
configure:5307: result: no
configure:5175: checking for sys/types.h
configure:5180: result: yes
configure:5184: checking pwd.h usability
configure:5196: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:5202: $? = 0
configure:5206: test -z 
			 || test ! -s conftest.err
configure:5209: $? = 0
configure:5212: test -s conftest.o
configure:5215: $? = 0
configure:5225: result: yes
configure:5229: checking pwd.h presence
configure:5239: cc -E  conftest.c
configure:5245: $? = 0
configure:5265: result: yes
configure:5300: checking for pwd.h
configure:5307: result: yes
configure:5184: checking grp.h usability
configure:5196: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:5202: $? = 0
configure:5206: test -z 
			 || test ! -s conftest.err
configure:5209: $? = 0
configure:5212: test -s conftest.o
configure:5215: $? = 0
configure:5225: result: yes
configure:5229: checking grp.h presence
configure:5239: cc -E  conftest.c
configure:5245: $? = 0
configure:5265: result: yes
configure:5300: checking for grp.h
configure:5307: result: yes
configure:5184: checking poll.h usability
configure:5196: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:5202: $? = 0
configure:5206: test -z 
			 || test ! -s conftest.err
configure:5209: $? = 0
configure:5212: test -s conftest.o
configure:5215: $? = 0
configure:5225: result: yes
configure:5229: checking poll.h presence
configure:5239: cc -E  conftest.c
configure:5245: $? = 0
configure:5265: result: yes
configure:5300: checking for poll.h
configure:5307: result: yes
configure:5184: checking sys/mman.h usability
configure:5196: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:5202: $? = 0
configure:5206: test -z 
			 || test ! -s conftest.err
configure:5209: $? = 0
configure:5212: test -s conftest.o
configure:5215: $? = 0
configure:5225: result: yes
configure:5229: checking sys/mman.h presence
configure:5239: cc -E  conftest.c
configure:5245: $? = 0
configure:5265: result: yes
configure:5300: checking for sys/mman.h
configure:5307: result: yes
configure:5184: checking netinet/in_systm.h usability
configure:5196: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:5202: $? = 0
configure:5206: test -z 
			 || test ! -s conftest.err
configure:5209: $? = 0
configure:5212: test -s conftest.o
configure:5215: $? = 0
configure:5225: result: yes
configure:5229: checking netinet/in_systm.h presence
configure:5239: cc -E  conftest.c
configure:5245: $? = 0
configure:5265: result: yes
configure:5300: checking for netinet/in_systm.h
configure:5307: result: yes
configure:5184: checking pcre.h usability
configure:5196: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
conftest.c:100:18: pcre.h: No such file or directory
configure:5202: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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
| /* end 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:5225: result: no
configure:5229: checking pcre.h presence
configure:5239: cc -E  conftest.c
conftest.c:66:18: pcre.h: No such file or directory
configure:5245: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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
| /* end confdefs.h.  */
| #include <pcre.h>
configure:5265: result: no
configure:5300: checking for pcre.h
configure:5307: result: no
configure:5184: checking langinfo.h usability
configure:5196: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:5202: $? = 0
configure:5206: test -z 
			 || test ! -s conftest.err
configure:5209: $? = 0
configure:5212: test -s conftest.o
configure:5215: $? = 0
configure:5225: result: yes
configure:5229: checking langinfo.h presence
configure:5239: cc -E  conftest.c
configure:5245: $? = 0
configure:5265: result: yes
configure:5300: checking for langinfo.h
configure:5307: result: yes
configure:5184: checking wchar.h usability
configure:5196: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:5202: $? = 0
configure:5206: test -z 
			 || test ! -s conftest.err
configure:5209: $? = 0
configure:5212: test -s conftest.o
configure:5215: $? = 0
configure:5225: result: yes
configure:5229: checking wchar.h presence
configure:5239: cc -E  conftest.c
configure:5245: $? = 0
configure:5265: result: yes
configure:5300: checking for wchar.h
configure:5307: result: yes
configure:5184: checking stddef.h usability
configure:5196: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:5202: $? = 0
configure:5206: test -z 
			 || test ! -s conftest.err
configure:5209: $? = 0
configure:5212: test -s conftest.o
configure:5215: $? = 0
configure:5225: result: yes
configure:5229: checking stddef.h presence
configure:5239: cc -E  conftest.c
configure:5245: $? = 0
configure:5265: result: yes
configure:5300: checking for stddef.h
configure:5307: result: yes
configure:5184: checking sys/stropts.h usability
configure:5196: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
conftest.c:103:25: sys/stropts.h: No such file or directory
configure:5202: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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
| /* end 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/stropts.h>
configure:5225: result: no
configure:5229: checking sys/stropts.h presence
configure:5239: cc -E  conftest.c
conftest.c:69:25: sys/stropts.h: No such file or directory
configure:5245: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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
| /* end confdefs.h.  */
| #include <sys/stropts.h>
configure:5265: result: no
configure:5300: checking for sys/stropts.h
configure:5307: result: no
configure:5184: checking iconv.h usability
configure:5196: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
conftest.c:103:19: iconv.h: No such file or directory
configure:5202: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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
| /* end 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 <iconv.h>
configure:5225: result: no
configure:5229: checking iconv.h presence
configure:5239: cc -E  conftest.c
conftest.c:69:19: iconv.h: No such file or directory
configure:5245: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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
| /* end confdefs.h.  */
| #include <iconv.h>
configure:5265: result: no
configure:5300: checking for iconv.h
configure:5307: result: no
configure:5335: checking dlfcn.h usability
configure:5347: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:5353: $? = 0
configure:5357: test -z 
			 || test ! -s conftest.err
configure:5360: $? = 0
configure:5363: test -s conftest.o
configure:5366: $? = 0
configure:5376: result: yes
configure:5380: checking dlfcn.h presence
configure:5390: cc -E  conftest.c
configure:5396: $? = 0
configure:5416: result: yes
configure:5451: checking for dlfcn.h
configure:5458: result: yes
configure:5485: checking dl.h usability
configure:5497: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
conftest.c:104:16: dl.h: No such file or directory
configure:5503: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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
| /* end 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:5526: result: no
configure:5530: checking dl.h presence
configure:5540: cc -E  conftest.c
conftest.c:70:16: dl.h: No such file or directory
configure:5546: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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
| /* end confdefs.h.  */
| #include <dl.h>
configure:5566: result: no
configure:5601: checking for dl.h
configure:5608: result: no
configure:5626: checking for conflicts in sys/time.h and sys/select.h
configure:5648: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:5654: $? = 0
configure:5658: test -z 
			 || test ! -s conftest.err
configure:5661: $? = 0
configure:5664: test -s conftest.o
configure:5667: $? = 0
configure:5678: result: no
configure:5691: checking TIOCGWINSZ in termios.h
configure:5716: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c  >&5
configure:5722: $? = 0
configure:5726: test -z 
			 || test ! -s conftest.err
configure:5729: $? = 0
configure:5732: test -s conftest
configure:5735: $? = 0
configure:5747: result: yes
configure:5821: checking for streams headers including struct winsize
configure:5843: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
conftest.c:70:24: sys/stream.h: No such file or directory
conftest.c:71:22: sys/ptem.h: No such file or directory
conftest.c: In function `main':
conftest.c:76: error: storage size of 'wsz' isn't known
configure:5849: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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
| /* end confdefs.h.  */
| #include <sys/stream.h>
| #include <sys/ptem.h>
| int
| main ()
| {
| struct winsize wsz
|   ;
|   return 0;
| }
configure:5873: result: no
configure:5883: checking for printf in -lc
configure:5913: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lc   >&5
conftest.c:77: warning: conflicting types for built-in function 'printf'
configure:5919: $? = 0
configure:5923: test -z 
			 || test ! -s conftest.err
configure:5926: $? = 0
configure:5929: test -s conftest
configure:5932: $? = 0
configure:5945: result: yes
configure:5953: checking for pow in -lm
configure:5983: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lm   -lc >&5
conftest.c:77: warning: conflicting types for built-in function 'pow'
configure:5989: $? = 0
configure:5993: test -z 
			 || test ! -s conftest.err
configure:5996: $? = 0
configure:5999: test -s conftest
configure:6002: $? = 0
configure:6015: result: yes
configure:6033: checking for library containing tigetstr
configure:6063: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lm  -lc >&5
/var/tmp//cc6QPQEJ.o(.text+0xd): In function `main':
: undefined reference to `tigetstr'
configure:6069: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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
| /* end 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 tigetstr ();
| int
| main ()
| {
| tigetstr ();
|   ;
|   return 0;
| }
configure:6118: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses  -lm  -lc >&5
configure:6124: $? = 0
configure:6128: test -z 
			 || test ! -s conftest.err
configure:6131: $? = 0
configure:6134: test -s conftest
configure:6137: $? = 0
configure:6152: result: -lncurses
configure:6183: checking for library containing tigetflag
configure:6213: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:6219: $? = 0
configure:6223: test -z 
			 || test ! -s conftest.err
configure:6226: $? = 0
configure:6229: test -s conftest
configure:6232: $? = 0
configure:6302: result: none required
configure:6309: checking for library containing tgetent
configure:6339: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:6345: $? = 0
configure:6349: test -z 
			 || test ! -s conftest.err
configure:6352: $? = 0
configure:6355: test -s conftest
configure:6358: $? = 0
configure:6428: result: none required
configure:6449: checking curses.h usability
configure:6461: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:6467: $? = 0
configure:6471: test -z 
			 || test ! -s conftest.err
configure:6474: $? = 0
configure:6477: test -s conftest.o
configure:6480: $? = 0
configure:6490: result: yes
configure:6494: checking curses.h presence
configure:6504: cc -E  conftest.c
configure:6510: $? = 0
configure:6530: result: yes
configure:6565: checking for curses.h
configure:6572: result: yes
configure:6661: checking term.h usability
configure:6673: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:6679: $? = 0
configure:6683: test -z 
			 || test ! -s conftest.err
configure:6686: $? = 0
configure:6689: test -s conftest.o
configure:6692: $? = 0
configure:6702: result: yes
configure:6706: checking term.h presence
configure:6716: cc -E  conftest.c
configure:6722: $? = 0
configure:6742: result: yes
configure:6777: checking for term.h
configure:6784: result: yes
configure:6792: checking if term.h needs curses.h
configure:6810: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
conftest.c: In function `main':
conftest.c:77: warning: initialization from incompatible pointer type
configure:6816: $? = 0
configure:6820: test -z 
			 || test ! -s conftest.err
configure:6823: $? = 0
configure:6826: test -s conftest.o
configure:6829: $? = 0
configure:6856: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
conftest.c: In function `main':
conftest.c:78: warning: initialization from incompatible pointer type
configure:6862: $? = 0
configure:6866: test -z 
			 || test ! -s conftest.err
configure:6869: $? = 0
configure:6872: test -s conftest.o
configure:6875: $? = 0
configure:6894: result: no
configure:6898: checking if boolcodes is available
configure:6919: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
conftest.c: In function `main':
conftest.c:80: warning: initialization from incompatible pointer type
configure:6925: $? = 0
configure:6929: test -z 
			 || test ! -s conftest.err
configure:6932: $? = 0
configure:6935: test -s conftest
configure:6938: $? = 0
configure:6952: result: yes
configure:6954: checking if numcodes is available
configure:6975: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
conftest.c: In function `main':
conftest.c:81: warning: initialization from incompatible pointer type
configure:6981: $? = 0
configure:6985: test -z 
			 || test ! -s conftest.err
configure:6988: $? = 0
configure:6991: test -s conftest
configure:6994: $? = 0
configure:7008: result: yes
configure:7010: checking if strcodes is available
configure:7031: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
conftest.c: In function `main':
conftest.c:82: warning: initialization from incompatible pointer type
configure:7037: $? = 0
configure:7041: test -z 
			 || test ! -s conftest.err
configure:7044: $? = 0
configure:7047: test -s conftest
configure:7050: $? = 0
configure:7064: result: yes
configure:7066: checking if boolnames is available
configure:7085: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
conftest.c: In function `main':
conftest.c:81: warning: initialization from incompatible pointer type
configure:7091: $? = 0
configure:7095: test -z 
			 || test ! -s conftest.err
configure:7098: $? = 0
configure:7101: test -s conftest
configure:7104: $? = 0
configure:7118: result: yes
configure:7120: checking if numnames is available
configure:7139: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
conftest.c: In function `main':
conftest.c:82: warning: initialization from incompatible pointer type
configure:7145: $? = 0
configure:7149: test -z 
			 || test ! -s conftest.err
configure:7152: $? = 0
configure:7155: test -s conftest
configure:7158: $? = 0
configure:7172: result: yes
configure:7174: checking if strnames is available
configure:7193: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
conftest.c: In function `main':
conftest.c:83: warning: initialization from incompatible pointer type
configure:7199: $? = 0
configure:7203: test -z 
			 || test ! -s conftest.err
configure:7206: $? = 0
configure:7209: test -s conftest
configure:7212: $? = 0
configure:7226: result: yes
configure:7235: checking for library containing yp_all
configure:7265: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:7271: $? = 0
configure:7275: test -z 
			 || test ! -s conftest.err
configure:7278: $? = 0
configure:7281: test -s conftest
configure:7284: $? = 0
configure:7354: result: none required
configure:7368: checking for dlopen in -ldl
configure:7398: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -ldl  -lncurses -lm  -lc >&5
/usr/bin/ld: cannot find -ldl
configure:7404: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 1
| /* end 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 ();
| int
| main ()
| {
| dlopen ();
|   ;
|   return 0;
| }
configure:7430: result: no
configure:7521: checking for socket in -lsocket
configure:7551: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lsocket  -lncurses -lm  -lc >&5
/usr/bin/ld: cannot find -lsocket
configure:7557: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 1
| /* end 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 ();
| int
| main ()
| {
| socket ();
|   ;
|   return 0;
| }
configure:7583: result: no
configure:8047: checking if an include file defines ospeed
configure:8074: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:8080: $? = 0
configure:8084: test -z 
			 || test ! -s conftest.err
configure:8087: $? = 0
configure:8090: test -s conftest
configure:8093: $? = 0
configure:8105: result: yes
configure:8186: checking return type of signal handlers
configure:8217: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:8223: $? = 0
configure:8227: test -z 
			 || test ! -s conftest.err
configure:8230: $? = 0
configure:8233: test -s conftest.o
configure:8236: $? = 0
configure:8247: result: void
configure:8255: checking for pid_t
configure:8279: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:8285: $? = 0
configure:8289: test -z 
			 || test ! -s conftest.err
configure:8292: $? = 0
configure:8295: test -s conftest.o
configure:8298: $? = 0
configure:8309: result: yes
configure:8321: checking for off_t
configure:8345: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:8351: $? = 0
configure:8355: test -z 
			 || test ! -s conftest.err
configure:8358: $? = 0
configure:8361: test -s conftest.o
configure:8364: $? = 0
configure:8375: result: yes
configure:8387: checking for ino_t
configure:8411: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:8417: $? = 0
configure:8421: test -z 
			 || test ! -s conftest.err
configure:8424: $? = 0
configure:8427: test -s conftest.o
configure:8430: $? = 0
configure:8441: result: yes
configure:8453: checking for mode_t
configure:8477: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:8483: $? = 0
configure:8487: test -z 
			 || test ! -s conftest.err
configure:8490: $? = 0
configure:8493: test -s conftest.o
configure:8496: $? = 0
configure:8507: result: yes
configure:8519: checking for uid_t in sys/types.h
configure:8542: result: yes
configure:8557: checking for size_t
configure:8581: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:8587: $? = 0
configure:8591: test -z 
			 || test ! -s conftest.err
configure:8594: $? = 0
configure:8597: test -s conftest.o
configure:8600: $? = 0
configure:8611: result: yes
configure:8624: checking if long is 64 bits
configure:8641: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:8644: $? = 0
configure:8646: ./conftest
configure:8649: $? = 1
configure: program exited with status 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 1
| #define HAVE_OSPEED 1
| #define RETSIGTYPE void
| /* end confdefs.h.  */
| int main() { return sizeof(long) < 8; }
configure:8663: result: no
configure:8684: checking if off_t is 64 bit
configure:8705: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:8708: $? = 0
configure:8710: ./conftest
configure:8713: $? = 0
configure:8727: result: yes
configure:8736: checking if ino_t is 64 bit
configure:8757: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:8760: $? = 0
configure:8762: ./conftest
configure:8765: $? = 1
configure: program exited with status 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 1
| #define HAVE_OSPEED 1
| #define RETSIGTYPE void
| #define OFF_T_IS_64_BIT 1
| /* end confdefs.h.  */
| 
| #include <sys/types.h>
| 
| main() { return sizeof(ino_t) < 8; }
| 
configure:8779: result: no
configure:8790: checking if compiler has a 64 bit type
configure:8873: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:8876: $? = 0
configure:8878: ./conftest
configure:8881: $? = 0
configure:9051: result: long long
configure:9059: checking for a corresponding unsigned 64 bit type
configure:9091: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:9094: $? = 0
configure:9096: ./conftest
configure:9099: $? = 0
configure:9165: result: unsigned long long
configure:9177: checking for sigset_t
configure:9199: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:9205: $? = 0
configure:9209: test -z 
			 || test ! -s conftest.err
configure:9212: $? = 0
configure:9215: test -s conftest.o
configure:9218: $? = 0
configure:9229: result: yes
configure:9240: checking for struct timezone
configure:9265: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:9271: $? = 0
configure:9275: test -z 
			 || test ! -s conftest.err
configure:9278: $? = 0
configure:9281: test -s conftest.o
configure:9284: $? = 0
configure:9296: result: yes
configure:9308: checking for struct utmp
configure:9336: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:9342: $? = 0
configure:9346: test -z 
			 || test ! -s conftest.err
configure:9349: $? = 0
configure:9352: test -s conftest.o
configure:9355: $? = 0
configure:9367: result: yes
configure:9378: checking for struct utmpx
configure:9406: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
conftest.c: In function `main':
conftest.c:97: error: storage size of 'testvar' isn't known
configure:9412: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 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
| /* end confdefs.h.  */
| 
| #ifdef HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #ifdef HAVE_UTMPX_H
| # include <utmpx.h>
| #endif
| 
| int
| main ()
| {
| struct utmpx testvar;
|   ;
|   return 0;
| }
configure:9437: result: no
configure:9449: checking for ut_host in struct utmp
configure:9477: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:9483: $? = 0
configure:9487: test -z 
			 || test ! -s conftest.err
configure:9490: $? = 0
configure:9493: test -s conftest.o
configure:9496: $? = 0
configure:9508: result: yes
configure:9519: checking for ut_host in struct utmpx
configure:9547: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
conftest.c: In function `main':
conftest.c:98: error: storage size of 'testvar' isn't known
configure:9553: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 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
| /* end confdefs.h.  */
| 
| #ifdef HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #ifdef HAVE_UTMPX_H
| # include <utmpx.h>
| #endif
| 
| int
| main ()
| {
| struct utmpx testvar; testvar.ut_host;
|   ;
|   return 0;
| }
configure:9578: result: no
configure:9589: checking for ut_xtime in struct utmpx
configure:9617: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
conftest.c: In function `main':
conftest.c:98: error: storage size of 'testvar' isn't known
configure:9623: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 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
| /* end confdefs.h.  */
| 
| #ifdef HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #ifdef HAVE_UTMPX_H
| # include <utmpx.h>
| #endif
| 
| int
| main ()
| {
| struct utmpx testvar; testvar.ut_xtime;
|   ;
|   return 0;
| }
configure:9648: result: no
configure:9659: checking for ut_tv in struct utmpx
configure:9687: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
conftest.c: In function `main':
conftest.c:98: error: storage size of 'testvar' isn't known
configure:9693: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 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
| /* end confdefs.h.  */
| 
| #ifdef HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #ifdef HAVE_UTMPX_H
| # include <utmpx.h>
| #endif
| 
| int
| main ()
| {
| struct utmpx testvar; testvar.ut_tv;
|   ;
|   return 0;
| }
configure:9718: result: no
configure:9730: checking for d_ino in struct dirent
configure:9758: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:9764: $? = 0
configure:9768: test -z 
			 || test ! -s conftest.err
configure:9771: $? = 0
configure:9774: test -s conftest.o
configure:9777: $? = 0
configure:9789: result: yes
configure:9800: checking for d_stat in struct dirent
configure:9828: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
conftest.c: In function `main':
conftest.c:99: error: structure has no member named `d_stat'
configure:9834: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 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
| /* end confdefs.h.  */
| 
| #ifdef HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #ifdef HAVE_DIRENT_H
| # include <dirent.h>
| #endif
| 
| int
| main ()
| {
| struct dirent testvar; testvar.d_stat;
|   ;
|   return 0;
| }
configure:9859: result: no
configure:9870: checking for d_ino in struct direct
configure:9904: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
conftest.c: In function `main':
conftest.c:105: error: storage size of 'testvar' isn't known
configure:9910: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 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
| /* end 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
| 
| int
| main ()
| {
| struct direct testvar; testvar.d_ino;
|   ;
|   return 0;
| }
configure:9935: result: no
configure:9946: checking for d_stat in struct direct
configure:9980: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
conftest.c: In function `main':
conftest.c:105: error: storage size of 'testvar' isn't known
configure:9986: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 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
| /* end 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
| 
| int
| main ()
| {
| struct direct testvar; testvar.d_stat;
|   ;
|   return 0;
| }
configure:10011: result: no
configure:10023: checking for sin6_scope_id in struct sockaddr_in6
configure:10049: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:10055: $? = 0
configure:10059: test -z 
			 || test ! -s conftest.err
configure:10062: $? = 0
configure:10065: test -s conftest.o
configure:10068: $? = 0
configure:10080: result: yes
configure:10094: checking if we need our own h_errno
configure:10115: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10121: $? = 0
configure:10125: test -z 
			 || test ! -s conftest.err
configure:10128: $? = 0
configure:10131: test -s conftest
configure:10134: $? = 0
configure:10146: result: no
configure:10278: checking for strftime
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
conftest.c:113: warning: conflicting types for built-in function 'strftime'
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for strptime
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for mktime
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for timelocal
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for difftime
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for gettimeofday
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for select
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for poll
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for readlink
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for faccessx
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
/var/tmp//ccH6YJzw.o(.text+0x14): In function `main':
: undefined reference to `faccessx'
/var/tmp//ccH6YJzw.o(.data+0x0): undefined reference to `faccessx'
configure:10341: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 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_STRPTIME 1
| #define HAVE_MKTIME 1
| #define HAVE_TIMELOCAL 1
| #define HAVE_DIFFTIME 1
| #define HAVE_GETTIMEOFDAY 1
| #define HAVE_SELECT 1
| #define HAVE_POLL 1
| #define HAVE_READLINK 1
| /* end confdefs.h.  */
| /* Define faccessx to an innocuous variant, in case <limits.h> declares faccessx.
|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
| #define faccessx innocuous_faccessx
| 
| /* System header to define __stub macros and hopefully few prototypes,
|     which can conflict with char faccessx (); below.
|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|     <limits.h> exists even on freestanding compilers.  */
| 
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
| 
| #undef faccessx
| 
| /* 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 ();
| /* 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
| char (*f) () = faccessx;
| #endif
| #ifdef __cplusplus
| }
| #endif
| 
| int
| main ()
| {
| return f != faccessx;
|   ;
|   return 0;
| }
configure:10366: result: no
configure:10278: checking for fchdir
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for ftruncate
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for fstat
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for lstat
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for lchown
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for fchown
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for fchmod
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for fseeko
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for ftello
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for mkfifo
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for _mktemp
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for mkstemp
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for waitpid
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for wait3
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for sigaction
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for sigblock
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for sighold
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
/var/tmp//ccZ96gVO.o(.text+0x14): In function `main':
: undefined reference to `sighold'
/var/tmp//ccZ96gVO.o(.data+0x0): undefined reference to `sighold'
configure:10341: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 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_STRPTIME 1
| #define HAVE_MKTIME 1
| #define HAVE_TIMELOCAL 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_FCHOWN 1
| #define HAVE_FCHMOD 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
| /* end confdefs.h.  */
| /* Define sighold to an innocuous variant, in case <limits.h> declares sighold.
|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
| #define sighold innocuous_sighold
| 
| /* System header to define __stub macros and hopefully few prototypes,
|     which can conflict with char sighold (); below.
|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|     <limits.h> exists even on freestanding compilers.  */
| 
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
| 
| #undef sighold
| 
| /* 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 ();
| /* 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
| char (*f) () = sighold;
| #endif
| #ifdef __cplusplus
| }
| #endif
| 
| int
| main ()
| {
| return f != sighold;
|   ;
|   return 0;
| }
configure:10366: result: no
configure:10278: checking for sigrelse
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
/var/tmp//ccYPES2r.o(.text+0x14): In function `main':
: undefined reference to `sigrelse'
/var/tmp//ccYPES2r.o(.data+0x0): undefined reference to `sigrelse'
configure:10341: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 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_STRPTIME 1
| #define HAVE_MKTIME 1
| #define HAVE_TIMELOCAL 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_FCHOWN 1
| #define HAVE_FCHMOD 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
| /* end confdefs.h.  */
| /* Define sigrelse to an innocuous variant, in case <limits.h> declares sigrelse.
|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
| #define sigrelse innocuous_sigrelse
| 
| /* System header to define __stub macros and hopefully few prototypes,
|     which can conflict with char sigrelse (); below.
|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|     <limits.h> exists even on freestanding compilers.  */
| 
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
| 
| #undef sigrelse
| 
| /* 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 ();
| /* 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
| char (*f) () = sigrelse;
| #endif
| #ifdef __cplusplus
| }
| #endif
| 
| int
| main ()
| {
| return f != sigrelse;
|   ;
|   return 0;
| }
configure:10366: result: no
configure:10278: checking for sigsetmask
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for sigprocmask
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for killpg
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for setpgid
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for setpgrp
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for tcsetpgrp
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for tcgetattr
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for nice
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for gethostname
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for gethostbyname2
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for getipnodebyname
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for inet_aton
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for inet_pton
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for inet_ntop
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for getlogin
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for getpwent
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for getpwnam
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for getpwuid
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for getgrgid
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for getgrnam
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for initgroups
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for nis_list
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
/var/tmp//ccHI0vZk.o(.text+0x14): In function `main':
: undefined reference to `nis_list'
/var/tmp//ccHI0vZk.o(.data+0x0): undefined reference to `nis_list'
configure:10341: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 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_STRPTIME 1
| #define HAVE_MKTIME 1
| #define HAVE_TIMELOCAL 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_FCHOWN 1
| #define HAVE_FCHMOD 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
| /* end confdefs.h.  */
| /* Define nis_list to an innocuous variant, in case <limits.h> declares nis_list.
|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
| #define nis_list innocuous_nis_list
| 
| /* System header to define __stub macros and hopefully few prototypes,
|     which can conflict with char nis_list (); below.
|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|     <limits.h> exists even on freestanding compilers.  */
| 
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
| 
| #undef nis_list
| 
| /* 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 ();
| /* 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
| char (*f) () = nis_list;
| #endif
| #ifdef __cplusplus
| }
| #endif
| 
| int
| main ()
| {
| return f != nis_list;
|   ;
|   return 0;
| }
configure:10366: result: no
configure:10278: checking for setuid
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for seteuid
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for setreuid
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for setresuid
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for setsid
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for memcpy
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
conftest.c:164: warning: conflicting types for built-in function 'memcpy'
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for memmove
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
conftest.c:165: warning: conflicting types for built-in function 'memmove'
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for strstr
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
conftest.c:166: warning: conflicting types for built-in function 'strstr'
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for strerror
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for getrlimit
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for getrusage
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for setlocale
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for uname
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for signgam
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for putenv
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for getenv
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for brk
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for sbrk
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for pathconf
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for sysconf
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for tgetent
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for tigetflag
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for tigetnum
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for tigetstr
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for setupterm
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for pcre_compile
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
/var/tmp//ccdC6U7N.o(.text+0x14): In function `main':
: undefined reference to `pcre_compile'
/var/tmp//ccdC6U7N.o(.data+0x0): undefined reference to `pcre_compile'
configure:10341: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 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_STRPTIME 1
| #define HAVE_MKTIME 1
| #define HAVE_TIMELOCAL 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_FCHOWN 1
| #define HAVE_FCHMOD 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_GETRUSAGE 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
| /* end confdefs.h.  */
| /* Define pcre_compile to an innocuous variant, in case <limits.h> declares pcre_compile.
|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
| #define pcre_compile innocuous_pcre_compile
| 
| /* System header to define __stub macros and hopefully few prototypes,
|     which can conflict with char pcre_compile (); below.
|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|     <limits.h> exists even on freestanding compilers.  */
| 
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
| 
| #undef pcre_compile
| 
| /* 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 ();
| /* 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
| char (*f) () = pcre_compile;
| #endif
| #ifdef __cplusplus
| }
| #endif
| 
| int
| main ()
| {
| return f != pcre_compile;
|   ;
|   return 0;
| }
configure:10366: result: no
configure:10278: checking for pcre_study
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
/var/tmp//ccADkd7S.o(.text+0x14): In function `main':
: undefined reference to `pcre_study'
/var/tmp//ccADkd7S.o(.data+0x0): undefined reference to `pcre_study'
configure:10341: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 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_STRPTIME 1
| #define HAVE_MKTIME 1
| #define HAVE_TIMELOCAL 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_FCHOWN 1
| #define HAVE_FCHMOD 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_GETRUSAGE 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
| /* end confdefs.h.  */
| /* Define pcre_study to an innocuous variant, in case <limits.h> declares pcre_study.
|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
| #define pcre_study innocuous_pcre_study
| 
| /* System header to define __stub macros and hopefully few prototypes,
|     which can conflict with char pcre_study (); below.
|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|     <limits.h> exists even on freestanding compilers.  */
| 
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
| 
| #undef pcre_study
| 
| /* 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 ();
| /* 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
| char (*f) () = pcre_study;
| #endif
| #ifdef __cplusplus
| }
| #endif
| 
| int
| main ()
| {
| return f != pcre_study;
|   ;
|   return 0;
| }
configure:10366: result: no
configure:10278: checking for pcre_exec
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
/var/tmp//ccLL6Uci.o(.text+0x14): In function `main':
: undefined reference to `pcre_exec'
/var/tmp//ccLL6Uci.o(.data+0x0): undefined reference to `pcre_exec'
configure:10341: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 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_STRPTIME 1
| #define HAVE_MKTIME 1
| #define HAVE_TIMELOCAL 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_FCHOWN 1
| #define HAVE_FCHMOD 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_GETRUSAGE 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
| /* end confdefs.h.  */
| /* Define pcre_exec to an innocuous variant, in case <limits.h> declares pcre_exec.
|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
| #define pcre_exec innocuous_pcre_exec
| 
| /* System header to define __stub macros and hopefully few prototypes,
|     which can conflict with char pcre_exec (); below.
|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|     <limits.h> exists even on freestanding compilers.  */
| 
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
| 
| #undef pcre_exec
| 
| /* 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 ();
| /* 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
| char (*f) () = pcre_exec;
| #endif
| #ifdef __cplusplus
| }
| #endif
| 
| int
| main ()
| {
| return f != pcre_exec;
|   ;
|   return 0;
| }
configure:10366: result: no
configure:10278: checking for nl_langinfo
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for erand48
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for open_memstream
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
/var/tmp//ccMAMVOm.o(.text+0x14): In function `main':
: undefined reference to `open_memstream'
/var/tmp//ccMAMVOm.o(.data+0x0): undefined reference to `open_memstream'
configure:10341: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 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_STRPTIME 1
| #define HAVE_MKTIME 1
| #define HAVE_TIMELOCAL 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_FCHOWN 1
| #define HAVE_FCHMOD 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_GETRUSAGE 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
| /* end confdefs.h.  */
| /* Define open_memstream to an innocuous variant, in case <limits.h> declares open_memstream.
|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
| #define open_memstream innocuous_open_memstream
| 
| /* System header to define __stub macros and hopefully few prototypes,
|     which can conflict with char open_memstream (); below.
|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|     <limits.h> exists even on freestanding compilers.  */
| 
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
| 
| #undef open_memstream
| 
| /* 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 ();
| /* 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
| char (*f) () = open_memstream;
| #endif
| #ifdef __cplusplus
| }
| #endif
| 
| int
| main ()
| {
| return f != open_memstream;
|   ;
|   return 0;
| }
configure:10366: result: no
configure:10278: checking for wctomb
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for iconv
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
/var/tmp//ccOCM8ar.o(.text+0x14): In function `main':
: undefined reference to `iconv'
/var/tmp//ccOCM8ar.o(.data+0x0): undefined reference to `iconv'
configure:10341: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 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_STRPTIME 1
| #define HAVE_MKTIME 1
| #define HAVE_TIMELOCAL 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_FCHOWN 1
| #define HAVE_FCHMOD 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_GETRUSAGE 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
| /* end confdefs.h.  */
| /* Define iconv to an innocuous variant, in case <limits.h> declares iconv.
|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
| #define iconv innocuous_iconv
| 
| /* System header to define __stub macros and hopefully few prototypes,
|     which can conflict with char iconv (); below.
|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|     <limits.h> exists even on freestanding compilers.  */
| 
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
| 
| #undef iconv
| 
| /* 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 ();
| /* 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
| char (*f) () = iconv;
| #endif
| #ifdef __cplusplus
| }
| #endif
| 
| int
| main ()
| {
| return f != iconv;
|   ;
|   return 0;
| }
configure:10366: result: no
configure:10278: checking for grantpt
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for unlockpt
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for ptsname
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for htons
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10278: checking for ntohs
configure:10335: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10341: $? = 0
configure:10345: test -z 
			 || test ! -s conftest.err
configure:10348: $? = 0
configure:10351: test -s conftest
configure:10354: $? = 0
configure:10366: result: yes
configure:10376: checking for working strcoll
configure:10402: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10405: $? = 0
configure:10407: ./conftest
configure:10410: $? = 0
configure:10424: result: yes
configure:10542: checking if tgetent accepts NULL
configure:10573: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10576: $? = 0
configure:10578: ./conftest
configure:10581: $? = 0
configure:10599: result: yes
configure:10607: checking if tgetent returns 0 on success
configure:10638: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10641: $? = 0
configure:10643: ./conftest
configure:10646: $? = 0
configure:10664: result: no
configure:10686: checking for stdlib.h
configure:10691: result: yes
configure:10686: checking for unistd.h
configure:10691: result: yes
configure:10835: checking for getpagesize
configure:10892: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:10898: $? = 0
configure:10902: test -z 
			 || test ! -s conftest.err
configure:10905: $? = 0
configure:10908: test -s conftest
configure:10911: $? = 0
configure:10923: result: yes
configure:10933: checking for working mmap
configure:11075: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:11078: $? = 0
configure:11080: ./conftest
configure:11083: $? = 0
configure:11097: result: yes
configure:11114: checking for munmap
configure:11171: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:11177: $? = 0
configure:11181: test -z 
			 || test ! -s conftest.err
configure:11184: $? = 0
configure:11187: test -s conftest
configure:11190: $? = 0
configure:11202: result: yes
configure:11114: checking for msync
configure:11171: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:11177: $? = 0
configure:11181: test -z 
			 || test ! -s conftest.err
configure:11184: $? = 0
configure:11187: test -s conftest
configure:11190: $? = 0
configure:11202: result: yes
configure:11215: checking whether getpgrp requires zero arguments
configure:11237: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
conftest.c: In function `main':
conftest.c:214: error: too many arguments to function `getpgrp'
configure:11243: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 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_STRPTIME 1
| #define HAVE_MKTIME 1
| #define HAVE_TIMELOCAL 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_FCHOWN 1
| #define HAVE_FCHMOD 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_GETRUSAGE 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_GRANTPT 1
| #define HAVE_UNLOCKPT 1
| #define HAVE_PTSNAME 1
| #define HAVE_HTONS 1
| #define HAVE_NTOHS 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
| /* end 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
| int
| main ()
| {
| getpgrp (0);
|   ;
|   return 0;
| }
configure:11268: result: yes
configure:11302: checking for dlopen
configure:11359: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:11365: $? = 0
configure:11369: test -z 
			 || test ! -s conftest.err
configure:11372: $? = 0
configure:11375: test -s conftest
configure:11378: $? = 0
configure:11390: result: yes
configure:11302: checking for dlerror
configure:11359: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:11365: $? = 0
configure:11369: test -z 
			 || test ! -s conftest.err
configure:11372: $? = 0
configure:11375: test -s conftest
configure:11378: $? = 0
configure:11390: result: yes
configure:11302: checking for dlsym
configure:11359: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:11365: $? = 0
configure:11369: test -z 
			 || test ! -s conftest.err
configure:11372: $? = 0
configure:11375: test -s conftest
configure:11378: $? = 0
configure:11390: result: yes
configure:11302: checking for dlclose
configure:11359: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:11365: $? = 0
configure:11369: test -z 
			 || test ! -s conftest.err
configure:11372: $? = 0
configure:11375: test -s conftest
configure:11378: $? = 0
configure:11390: result: yes
configure:11302: checking for load
configure:11359: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
/var/tmp//ccG9WnZJ.o(.text+0x14): In function `main':
: undefined reference to `load'
/var/tmp//ccG9WnZJ.o(.data+0x0): undefined reference to `load'
configure:11365: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 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_STRPTIME 1
| #define HAVE_MKTIME 1
| #define HAVE_TIMELOCAL 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_FCHOWN 1
| #define HAVE_FCHMOD 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_GETRUSAGE 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_GRANTPT 1
| #define HAVE_UNLOCKPT 1
| #define HAVE_PTSNAME 1
| #define HAVE_HTONS 1
| #define HAVE_NTOHS 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
| /* end confdefs.h.  */
| /* Define load to an innocuous variant, in case <limits.h> declares load.
|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
| #define load innocuous_load
| 
| /* System header to define __stub macros and hopefully few prototypes,
|     which can conflict with char load (); below.
|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|     <limits.h> exists even on freestanding compilers.  */
| 
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
| 
| #undef load
| 
| /* 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 ();
| /* 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
| char (*f) () = load;
| #endif
| #ifdef __cplusplus
| }
| #endif
| 
| int
| main ()
| {
| return f != load;
|   ;
|   return 0;
| }
configure:11390: result: no
configure:11302: checking for loadquery
configure:11359: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
/var/tmp//ccKutbND.o(.text+0x14): In function `main':
: undefined reference to `loadquery'
/var/tmp//ccKutbND.o(.data+0x0): undefined reference to `loadquery'
configure:11365: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 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_STRPTIME 1
| #define HAVE_MKTIME 1
| #define HAVE_TIMELOCAL 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_FCHOWN 1
| #define HAVE_FCHMOD 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_GETRUSAGE 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_GRANTPT 1
| #define HAVE_UNLOCKPT 1
| #define HAVE_PTSNAME 1
| #define HAVE_HTONS 1
| #define HAVE_NTOHS 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
| /* end confdefs.h.  */
| /* Define loadquery to an innocuous variant, in case <limits.h> declares loadquery.
|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
| #define loadquery innocuous_loadquery
| 
| /* System header to define __stub macros and hopefully few prototypes,
|     which can conflict with char loadquery (); below.
|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|     <limits.h> exists even on freestanding compilers.  */
| 
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
| 
| #undef loadquery
| 
| /* 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 ();
| /* 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
| char (*f) () = loadquery;
| #endif
| #ifdef __cplusplus
| }
| #endif
| 
| int
| main ()
| {
| return f != loadquery;
|   ;
|   return 0;
| }
configure:11390: result: no
configure:11302: checking for loadbind
configure:11359: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
/var/tmp//cc5DMiuu.o(.text+0x14): In function `main':
: undefined reference to `loadbind'
/var/tmp//cc5DMiuu.o(.data+0x0): undefined reference to `loadbind'
configure:11365: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 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_STRPTIME 1
| #define HAVE_MKTIME 1
| #define HAVE_TIMELOCAL 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_FCHOWN 1
| #define HAVE_FCHMOD 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_GETRUSAGE 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_GRANTPT 1
| #define HAVE_UNLOCKPT 1
| #define HAVE_PTSNAME 1
| #define HAVE_HTONS 1
| #define HAVE_NTOHS 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
| /* end confdefs.h.  */
| /* Define loadbind to an innocuous variant, in case <limits.h> declares loadbind.
|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
| #define loadbind innocuous_loadbind
| 
| /* System header to define __stub macros and hopefully few prototypes,
|     which can conflict with char loadbind (); below.
|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|     <limits.h> exists even on freestanding compilers.  */
| 
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
| 
| #undef loadbind
| 
| /* 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 ();
| /* 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
| char (*f) () = loadbind;
| #endif
| #ifdef __cplusplus
| }
| #endif
| 
| int
| main ()
| {
| return f != loadbind;
|   ;
|   return 0;
| }
configure:11390: result: no
configure:11302: checking for unload
configure:11359: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
/var/tmp//cc6YKLGj.o(.text+0x14): In function `main':
: undefined reference to `unload'
/var/tmp//cc6YKLGj.o(.data+0x0): undefined reference to `unload'
configure:11365: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 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_STRPTIME 1
| #define HAVE_MKTIME 1
| #define HAVE_TIMELOCAL 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_FCHOWN 1
| #define HAVE_FCHMOD 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_GETRUSAGE 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_GRANTPT 1
| #define HAVE_UNLOCKPT 1
| #define HAVE_PTSNAME 1
| #define HAVE_HTONS 1
| #define HAVE_NTOHS 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
| /* end confdefs.h.  */
| /* Define unload to an innocuous variant, in case <limits.h> declares unload.
|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
| #define unload innocuous_unload
| 
| /* System header to define __stub macros and hopefully few prototypes,
|     which can conflict with char unload (); below.
|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|     <limits.h> exists even on freestanding compilers.  */
| 
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
| 
| #undef unload
| 
| /* 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 ();
| /* 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
| char (*f) () = unload;
| #endif
| #ifdef __cplusplus
| }
| #endif
| 
| int
| main ()
| {
| return f != unload;
|   ;
|   return 0;
| }
configure:11390: result: no
configure:11302: checking for shl_load
configure:11359: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
/var/tmp//ccQyUkDZ.o(.text+0x14): In function `main':
: undefined reference to `shl_load'
/var/tmp//ccQyUkDZ.o(.data+0x0): undefined reference to `shl_load'
configure:11365: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 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_STRPTIME 1
| #define HAVE_MKTIME 1
| #define HAVE_TIMELOCAL 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_FCHOWN 1
| #define HAVE_FCHMOD 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_GETRUSAGE 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_GRANTPT 1
| #define HAVE_UNLOCKPT 1
| #define HAVE_PTSNAME 1
| #define HAVE_HTONS 1
| #define HAVE_NTOHS 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
| /* end confdefs.h.  */
| /* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
| #define shl_load innocuous_shl_load
| 
| /* System header to define __stub macros and hopefully few prototypes,
|     which can conflict with char shl_load (); below.
|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|     <limits.h> exists even on freestanding compilers.  */
| 
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
| 
| #undef shl_load
| 
| /* 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 ();
| /* 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
| char (*f) () = shl_load;
| #endif
| #ifdef __cplusplus
| }
| #endif
| 
| int
| main ()
| {
| return f != shl_load;
|   ;
|   return 0;
| }
configure:11390: result: no
configure:11302: checking for shl_unload
configure:11359: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
/var/tmp//ccHWCtmE.o(.text+0x14): In function `main':
: undefined reference to `shl_unload'
/var/tmp//ccHWCtmE.o(.data+0x0): undefined reference to `shl_unload'
configure:11365: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 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_STRPTIME 1
| #define HAVE_MKTIME 1
| #define HAVE_TIMELOCAL 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_FCHOWN 1
| #define HAVE_FCHMOD 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_GETRUSAGE 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_GRANTPT 1
| #define HAVE_UNLOCKPT 1
| #define HAVE_PTSNAME 1
| #define HAVE_HTONS 1
| #define HAVE_NTOHS 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
| /* end confdefs.h.  */
| /* Define shl_unload to an innocuous variant, in case <limits.h> declares shl_unload.
|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
| #define shl_unload innocuous_shl_unload
| 
| /* System header to define __stub macros and hopefully few prototypes,
|     which can conflict with char shl_unload (); below.
|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|     <limits.h> exists even on freestanding compilers.  */
| 
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
| 
| #undef shl_unload
| 
| /* 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 ();
| /* 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
| char (*f) () = shl_unload;
| #endif
| #ifdef __cplusplus
| }
| #endif
| 
| int
| main ()
| {
| return f != shl_unload;
|   ;
|   return 0;
| }
configure:11390: result: no
configure:11302: checking for shl_findsym
configure:11359: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
/var/tmp//ccCI3L5h.o(.text+0x14): In function `main':
: undefined reference to `shl_findsym'
/var/tmp//ccCI3L5h.o(.data+0x0): undefined reference to `shl_findsym'
configure:11365: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 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_STRPTIME 1
| #define HAVE_MKTIME 1
| #define HAVE_TIMELOCAL 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_FCHOWN 1
| #define HAVE_FCHMOD 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_GETRUSAGE 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_GRANTPT 1
| #define HAVE_UNLOCKPT 1
| #define HAVE_PTSNAME 1
| #define HAVE_HTONS 1
| #define HAVE_NTOHS 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
| /* end confdefs.h.  */
| /* Define shl_findsym to an innocuous variant, in case <limits.h> declares shl_findsym.
|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
| #define shl_findsym innocuous_shl_findsym
| 
| /* System header to define __stub macros and hopefully few prototypes,
|     which can conflict with char shl_findsym (); below.
|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|     <limits.h> exists even on freestanding compilers.  */
| 
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
| 
| #undef shl_findsym
| 
| /* 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 ();
| /* 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
| char (*f) () = shl_findsym;
| #endif
| #ifdef __cplusplus
| }
| #endif
| 
| int
| main ()
| {
| return f != shl_findsym;
|   ;
|   return 0;
| }
configure:11390: result: no
configure:11411: checking what style of signals to use
configure:11442: result: POSIX_SIGNALS
configure:11445: checking where signal.h is located
configure:11484: result: /usr/include/sys/signal.h
configure:11488: checking where error names are located
configure:11521: result:  /usr/include/errno.h
configure:11525: checking where the RLIMIT macros are located
configure:11558: result: /usr/include/sys/resource.h
configure:11574: checking if rlim_t is longer than a long
configure:11596: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:11599: $? = 0
configure:11601: ./conftest
configure:11604: $? = 0
configure:11618: result: yes
configure:11621: checking if rlim_t is a quad
configure:11650: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:11653: $? = 0
configure:11655: ./conftest
configure:11658: $? = 0
configure:11672: result: yes
configure:11743: checking for rlim_t
configure:11769: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:11775: $? = 0
configure:11779: test -z 
			 || test ! -s conftest.err
configure:11782: $? = 0
configure:11785: test -s conftest.o
configure:11788: $? = 0
configure:11799: result: yes
configure:11812: checking for limit RLIMIT_AIO_MEM
configure:11838: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
conftest.c: In function `main':
conftest.c:195: error: `RLIMIT_AIO_MEM' undeclared (first use in this function)
conftest.c:195: error: (Each undeclared identifier is reported only once
conftest.c:195: error: for each function it appears in.)
configure:11844: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 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_STRPTIME 1
| #define HAVE_MKTIME 1
| #define HAVE_TIMELOCAL 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_FCHOWN 1
| #define HAVE_FCHMOD 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_GETRUSAGE 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_GRANTPT 1
| #define HAVE_UNLOCKPT 1
| #define HAVE_PTSNAME 1
| #define HAVE_HTONS 1
| #define HAVE_NTOHS 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
| /* end confdefs.h.  */
| 
| #include <sys/types.h>
| #ifdef HAVE_SYS_TIME_H
| #include <sys/time.h>
| #endif
| #include <sys/resource.h>
| int
| main ()
| {
| RLIMIT_AIO_MEM
|   ;
|   return 0;
| }
configure:11868: result: no
configure:11879: checking for limit RLIMIT_AIO_OPS
configure:11905: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
conftest.c: In function `main':
conftest.c:195: error: `RLIMIT_AIO_OPS' undeclared (first use in this function)
conftest.c:195: error: (Each undeclared identifier is reported only once
conftest.c:195: error: for each function it appears in.)
configure:11911: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 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_STRPTIME 1
| #define HAVE_MKTIME 1
| #define HAVE_TIMELOCAL 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_FCHOWN 1
| #define HAVE_FCHMOD 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_GETRUSAGE 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_GRANTPT 1
| #define HAVE_UNLOCKPT 1
| #define HAVE_PTSNAME 1
| #define HAVE_HTONS 1
| #define HAVE_NTOHS 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
| /* end confdefs.h.  */
| 
| #include <sys/types.h>
| #ifdef HAVE_SYS_TIME_H
| #include <sys/time.h>
| #endif
| #include <sys/resource.h>
| int
| main ()
| {
| RLIMIT_AIO_OPS
|   ;
|   return 0;
| }
configure:11935: result: no
configure:11946: checking for limit RLIMIT_AS
configure:11972: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:11978: $? = 0
configure:11982: test -z 
			 || test ! -s conftest.err
configure:11985: $? = 0
configure:11988: test -s conftest.o
configure:11991: $? = 0
configure:12002: result: yes
configure:12013: checking for limit RLIMIT_LOCKS
configure:12039: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
conftest.c: In function `main':
conftest.c:196: error: `RLIMIT_LOCKS' undeclared (first use in this function)
conftest.c:196: error: (Each undeclared identifier is reported only once
conftest.c:196: error: for each function it appears in.)
configure:12045: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 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_STRPTIME 1
| #define HAVE_MKTIME 1
| #define HAVE_TIMELOCAL 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_FCHOWN 1
| #define HAVE_FCHMOD 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_GETRUSAGE 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_GRANTPT 1
| #define HAVE_UNLOCKPT 1
| #define HAVE_PTSNAME 1
| #define HAVE_HTONS 1
| #define HAVE_NTOHS 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_AS 1
| /* end confdefs.h.  */
| 
| #include <sys/types.h>
| #ifdef HAVE_SYS_TIME_H
| #include <sys/time.h>
| #endif
| #include <sys/resource.h>
| int
| main ()
| {
| RLIMIT_LOCKS
|   ;
|   return 0;
| }
configure:12069: result: no
configure:12080: checking for limit RLIMIT_MEMLOCK
configure:12106: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:12112: $? = 0
configure:12116: test -z 
			 || test ! -s conftest.err
configure:12119: $? = 0
configure:12122: test -s conftest.o
configure:12125: $? = 0
configure:12136: result: yes
configure:12147: checking for limit RLIMIT_NPROC
configure:12173: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:12179: $? = 0
configure:12183: test -z 
			 || test ! -s conftest.err
configure:12186: $? = 0
configure:12189: test -s conftest.o
configure:12192: $? = 0
configure:12203: result: yes
configure:12214: checking for limit RLIMIT_NOFILE
configure:12240: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:12246: $? = 0
configure:12250: test -z 
			 || test ! -s conftest.err
configure:12253: $? = 0
configure:12256: test -s conftest.o
configure:12259: $? = 0
configure:12270: result: yes
configure:12281: checking for limit RLIMIT_PTHREAD
configure:12307: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
conftest.c: In function `main':
conftest.c:199: error: `RLIMIT_PTHREAD' undeclared (first use in this function)
conftest.c:199: error: (Each undeclared identifier is reported only once
conftest.c:199: error: for each function it appears in.)
configure:12313: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 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_STRPTIME 1
| #define HAVE_MKTIME 1
| #define HAVE_TIMELOCAL 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_FCHOWN 1
| #define HAVE_FCHMOD 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_GETRUSAGE 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_GRANTPT 1
| #define HAVE_UNLOCKPT 1
| #define HAVE_PTSNAME 1
| #define HAVE_HTONS 1
| #define HAVE_NTOHS 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_AS 1
| #define HAVE_RLIMIT_MEMLOCK 1
| #define HAVE_RLIMIT_NPROC 1
| #define HAVE_RLIMIT_NOFILE 1
| /* end confdefs.h.  */
| 
| #include <sys/types.h>
| #ifdef HAVE_SYS_TIME_H
| #include <sys/time.h>
| #endif
| #include <sys/resource.h>
| int
| main ()
| {
| RLIMIT_PTHREAD
|   ;
|   return 0;
| }
configure:12337: result: no
configure:12348: checking for limit RLIMIT_RSS
configure:12374: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:12380: $? = 0
configure:12384: test -z 
			 || test ! -s conftest.err
configure:12387: $? = 0
configure:12390: test -s conftest.o
configure:12393: $? = 0
configure:12404: result: yes
configure:12415: checking for limit RLIMIT_SBSIZE
configure:12441: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:12447: $? = 0
configure:12451: test -z 
			 || test ! -s conftest.err
configure:12454: $? = 0
configure:12457: test -s conftest.o
configure:12460: $? = 0
configure:12471: result: yes
configure:12482: checking for limit RLIMIT_TCACHE
configure:12508: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
conftest.c: In function `main':
conftest.c:201: error: `RLIMIT_TCACHE' undeclared (first use in this function)
conftest.c:201: error: (Each undeclared identifier is reported only once
conftest.c:201: error: for each function it appears in.)
configure:12514: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 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_STRPTIME 1
| #define HAVE_MKTIME 1
| #define HAVE_TIMELOCAL 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_FCHOWN 1
| #define HAVE_FCHMOD 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_GETRUSAGE 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_GRANTPT 1
| #define HAVE_UNLOCKPT 1
| #define HAVE_PTSNAME 1
| #define HAVE_HTONS 1
| #define HAVE_NTOHS 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_AS 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
| /* end confdefs.h.  */
| 
| #include <sys/types.h>
| #ifdef HAVE_SYS_TIME_H
| #include <sys/time.h>
| #endif
| #include <sys/resource.h>
| int
| main ()
| {
| RLIMIT_TCACHE
|   ;
|   return 0;
| }
configure:12538: result: no
configure:12549: checking for limit RLIMIT_VMEM
configure:12575: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:12581: $? = 0
configure:12585: test -z 
			 || test ! -s conftest.err
configure:12588: $? = 0
configure:12591: test -s conftest.o
configure:12594: $? = 0
configure:12605: result: yes
configure:12616: checking for limit RLIMIT_SIGPENDING
configure:12642: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
conftest.c: In function `main':
conftest.c:202: error: `RLIMIT_SIGPENDING' undeclared (first use in this function)
conftest.c:202: error: (Each undeclared identifier is reported only once
conftest.c:202: error: for each function it appears in.)
configure:12648: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 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_STRPTIME 1
| #define HAVE_MKTIME 1
| #define HAVE_TIMELOCAL 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_FCHOWN 1
| #define HAVE_FCHMOD 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_GETRUSAGE 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_GRANTPT 1
| #define HAVE_UNLOCKPT 1
| #define HAVE_PTSNAME 1
| #define HAVE_HTONS 1
| #define HAVE_NTOHS 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_AS 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 HAVE_RLIMIT_VMEM 1
| /* end confdefs.h.  */
| 
| #include <sys/types.h>
| #ifdef HAVE_SYS_TIME_H
| #include <sys/time.h>
| #endif
| #include <sys/resource.h>
| int
| main ()
| {
| RLIMIT_SIGPENDING
|   ;
|   return 0;
| }
configure:12672: result: no
configure:12683: checking for limit RLIMIT_MSGQUEUE
configure:12709: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
conftest.c: In function `main':
conftest.c:202: error: `RLIMIT_MSGQUEUE' undeclared (first use in this function)
conftest.c:202: error: (Each undeclared identifier is reported only once
conftest.c:202: error: for each function it appears in.)
configure:12715: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 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_STRPTIME 1
| #define HAVE_MKTIME 1
| #define HAVE_TIMELOCAL 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_FCHOWN 1
| #define HAVE_FCHMOD 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_GETRUSAGE 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_GRANTPT 1
| #define HAVE_UNLOCKPT 1
| #define HAVE_PTSNAME 1
| #define HAVE_HTONS 1
| #define HAVE_NTOHS 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_AS 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 HAVE_RLIMIT_VMEM 1
| /* end confdefs.h.  */
| 
| #include <sys/types.h>
| #ifdef HAVE_SYS_TIME_H
| #include <sys/time.h>
| #endif
| #include <sys/resource.h>
| int
| main ()
| {
| RLIMIT_MSGQUEUE
|   ;
|   return 0;
| }
configure:12739: result: no
configure:12750: checking for limit RLIMIT_NICE
configure:12776: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
conftest.c: In function `main':
conftest.c:202: error: `RLIMIT_NICE' undeclared (first use in this function)
conftest.c:202: error: (Each undeclared identifier is reported only once
conftest.c:202: error: for each function it appears in.)
configure:12782: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 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_STRPTIME 1
| #define HAVE_MKTIME 1
| #define HAVE_TIMELOCAL 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_FCHOWN 1
| #define HAVE_FCHMOD 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_GETRUSAGE 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_GRANTPT 1
| #define HAVE_UNLOCKPT 1
| #define HAVE_PTSNAME 1
| #define HAVE_HTONS 1
| #define HAVE_NTOHS 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_AS 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 HAVE_RLIMIT_VMEM 1
| /* end confdefs.h.  */
| 
| #include <sys/types.h>
| #ifdef HAVE_SYS_TIME_H
| #include <sys/time.h>
| #endif
| #include <sys/resource.h>
| int
| main ()
| {
| RLIMIT_NICE
|   ;
|   return 0;
| }
configure:12806: result: no
configure:12817: checking for limit RLIMIT_RTPRIO
configure:12843: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
conftest.c: In function `main':
conftest.c:202: error: `RLIMIT_RTPRIO' undeclared (first use in this function)
conftest.c:202: error: (Each undeclared identifier is reported only once
conftest.c:202: error: for each function it appears in.)
configure:12849: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 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_STRPTIME 1
| #define HAVE_MKTIME 1
| #define HAVE_TIMELOCAL 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_FCHOWN 1
| #define HAVE_FCHMOD 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_GETRUSAGE 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_GRANTPT 1
| #define HAVE_UNLOCKPT 1
| #define HAVE_PTSNAME 1
| #define HAVE_HTONS 1
| #define HAVE_NTOHS 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_AS 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 HAVE_RLIMIT_VMEM 1
| /* end confdefs.h.  */
| 
| #include <sys/types.h>
| #ifdef HAVE_SYS_TIME_H
| #include <sys/time.h>
| #endif
| #include <sys/resource.h>
| int
| main ()
| {
| RLIMIT_RTPRIO
|   ;
|   return 0;
| }
configure:12873: result: no
configure:12885: checking if RLIMIT_VMEM and RLIMIT_RSS are the same
configure:12915: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:12918: $? = 0
configure:12920: ./conftest
configure:12923: $? = 1
configure: program exited with status 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 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_STRPTIME 1
| #define HAVE_MKTIME 1
| #define HAVE_TIMELOCAL 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_FCHOWN 1
| #define HAVE_FCHMOD 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_GETRUSAGE 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_GRANTPT 1
| #define HAVE_UNLOCKPT 1
| #define HAVE_PTSNAME 1
| #define HAVE_HTONS 1
| #define HAVE_NTOHS 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_AS 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 HAVE_RLIMIT_VMEM 1
| /* end 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:12937: result: no
configure:12950: checking if RLIMIT_VMEM and RLIMIT_AS are the same
configure:12980: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:12983: $? = 0
configure:12985: ./conftest
configure:12988: $? = 0
configure:13002: result: yes
configure:13015: checking if RLIMIT_RSS and RLIMIT_AS are the same
configure:13045: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:13048: $? = 0
configure:13050: ./conftest
configure:13053: $? = 1
configure: program exited with status 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 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_STRPTIME 1
| #define HAVE_MKTIME 1
| #define HAVE_TIMELOCAL 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_FCHOWN 1
| #define HAVE_FCHMOD 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_GETRUSAGE 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_GRANTPT 1
| #define HAVE_UNLOCKPT 1
| #define HAVE_PTSNAME 1
| #define HAVE_HTONS 1
| #define HAVE_NTOHS 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_AS 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 HAVE_RLIMIT_VMEM 1
| #define RLIMIT_VMEM_IS_AS 1
| /* end 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_RSS) && defined(HAVE_RLIMIT_AS)
| if (RLIMIT_AS == RLIMIT_RSS) ret = 0;
| #endif
| return ret;
| }
configure:13067: result: no
configure:13079: checking for struct rusage.ru_maxrss
configure:13107: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:13113: $? = 0
configure:13117: test -z 
			 || test ! -s conftest.err
configure:13120: $? = 0
configure:13123: test -s conftest.o
configure:13126: $? = 0
configure:13188: result: yes
configure:13198: checking for struct rusage.ru_ixrss
configure:13226: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:13232: $? = 0
configure:13236: test -z 
			 || test ! -s conftest.err
configure:13239: $? = 0
configure:13242: test -s conftest.o
configure:13245: $? = 0
configure:13307: result: yes
configure:13317: checking for struct rusage.ru_idrss
configure:13345: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:13351: $? = 0
configure:13355: test -z 
			 || test ! -s conftest.err
configure:13358: $? = 0
configure:13361: test -s conftest.o
configure:13364: $? = 0
configure:13426: result: yes
configure:13436: checking for struct rusage.ru_isrss
configure:13464: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:13470: $? = 0
configure:13474: test -z 
			 || test ! -s conftest.err
configure:13477: $? = 0
configure:13480: test -s conftest.o
configure:13483: $? = 0
configure:13545: result: yes
configure:13555: checking for struct rusage.ru_minflt
configure:13583: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:13589: $? = 0
configure:13593: test -z 
			 || test ! -s conftest.err
configure:13596: $? = 0
configure:13599: test -s conftest.o
configure:13602: $? = 0
configure:13664: result: yes
configure:13674: checking for struct rusage.ru_majflt
configure:13702: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:13708: $? = 0
configure:13712: test -z 
			 || test ! -s conftest.err
configure:13715: $? = 0
configure:13718: test -s conftest.o
configure:13721: $? = 0
configure:13783: result: yes
configure:13793: checking for struct rusage.ru_nswap
configure:13821: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:13827: $? = 0
configure:13831: test -z 
			 || test ! -s conftest.err
configure:13834: $? = 0
configure:13837: test -s conftest.o
configure:13840: $? = 0
configure:13902: result: yes
configure:13912: checking for struct rusage.ru_inblock
configure:13940: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:13946: $? = 0
configure:13950: test -z 
			 || test ! -s conftest.err
configure:13953: $? = 0
configure:13956: test -s conftest.o
configure:13959: $? = 0
configure:14021: result: yes
configure:14031: checking for struct rusage.ru_oublock
configure:14059: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:14065: $? = 0
configure:14069: test -z 
			 || test ! -s conftest.err
configure:14072: $? = 0
configure:14075: test -s conftest.o
configure:14078: $? = 0
configure:14140: result: yes
configure:14150: checking for struct rusage.ru_msgsnd
configure:14178: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:14184: $? = 0
configure:14188: test -z 
			 || test ! -s conftest.err
configure:14191: $? = 0
configure:14194: test -s conftest.o
configure:14197: $? = 0
configure:14259: result: yes
configure:14269: checking for struct rusage.ru_msgrcv
configure:14297: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:14303: $? = 0
configure:14307: test -z 
			 || test ! -s conftest.err
configure:14310: $? = 0
configure:14313: test -s conftest.o
configure:14316: $? = 0
configure:14378: result: yes
configure:14388: checking for struct rusage.ru_nsignals
configure:14416: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:14422: $? = 0
configure:14426: test -z 
			 || test ! -s conftest.err
configure:14429: $? = 0
configure:14432: test -s conftest.o
configure:14435: $? = 0
configure:14497: result: yes
configure:14507: checking for struct rusage.ru_nvcsw
configure:14535: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:14541: $? = 0
configure:14545: test -z 
			 || test ! -s conftest.err
configure:14548: $? = 0
configure:14551: test -s conftest.o
configure:14554: $? = 0
configure:14616: result: yes
configure:14626: checking for struct rusage.ru_nivcsw
configure:14654: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:14660: $? = 0
configure:14664: test -z 
			 || test ! -s conftest.err
configure:14667: $? = 0
configure:14670: test -s conftest.o
configure:14673: $? = 0
configure:14735: result: yes
configure:14770: checking for /dev/fd filesystem
configure:14779: result: no
configure:14788: checking for RFS superroot directory
configure:14795: result: no
configure:14806: checking whether we should use the native getcwd
configure:14816: result: no
configure:14829: checking for NIS
configure:14837: result: no
configure:14848: checking for NIS+
configure:14857: result: no
configure:14866: checking for utmp file
configure:14878: result: /var/run/utmp
configure:14889: checking for wtmp file
configure:14901: result: /var/log/wtmp
configure:14912: checking for utmpx file
configure:14924: result: no
configure:14935: checking for wtmpx file
configure:14947: result: no
configure:14959: checking for brk() prototype in <unistd.h>
configure:14981: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
conftest.c:211: error: conflicting types for 'brk'
/usr/include/unistd.h:459: error: previous declaration of 'brk' was here
conftest.c:211: error: conflicting types for 'brk'
/usr/include/unistd.h:459: error: previous declaration of 'brk' was here
configure:14987: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 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_STRPTIME 1
| #define HAVE_MKTIME 1
| #define HAVE_TIMELOCAL 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_FCHOWN 1
| #define HAVE_FCHMOD 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_GETRUSAGE 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_GRANTPT 1
| #define HAVE_UNLOCKPT 1
| #define HAVE_PTSNAME 1
| #define HAVE_HTONS 1
| #define HAVE_NTOHS 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_AS 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 HAVE_RLIMIT_VMEM 1
| #define RLIMIT_VMEM_IS_AS 1
| #define HAVE_STRUCT_RUSAGE_RU_MAXRSS 1
| #define HAVE_STRUCT_RUSAGE_RU_IXRSS 1
| #define HAVE_STRUCT_RUSAGE_RU_IDRSS 1
| #define HAVE_STRUCT_RUSAGE_RU_ISRSS 1
| #define HAVE_STRUCT_RUSAGE_RU_MINFLT 1
| #define HAVE_STRUCT_RUSAGE_RU_MAJFLT 1
| #define HAVE_STRUCT_RUSAGE_RU_NSWAP 1
| #define HAVE_STRUCT_RUSAGE_RU_INBLOCK 1
| #define HAVE_STRUCT_RUSAGE_RU_OUBLOCK 1
| #define HAVE_STRUCT_RUSAGE_RU_MSGSND 1
| #define HAVE_STRUCT_RUSAGE_RU_MSGRCV 1
| #define HAVE_STRUCT_RUSAGE_RU_NSIGNALS 1
| #define HAVE_STRUCT_RUSAGE_RU_NVCSW 1
| #define HAVE_STRUCT_RUSAGE_RU_NIVCSW 1
| #define DEFAULT_PATH "/bin:/usr/bin"
| #define PATH_UTMP_FILE "/var/run/utmp"
| #define PATH_WTMP_FILE "/var/log/wtmp"
| /* end confdefs.h.  */
| #include <unistd.h>
| double brk();
| int
| main ()
| {
| int i;
|   ;
|   return 0;
| }
configure:15011: result: yes
configure:15022: checking for sbrk() prototype in <unistd.h>
configure:15044: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
conftest.c:212: error: conflicting types for 'sbrk'
/usr/include/unistd.h:464: error: previous declaration of 'sbrk' was here
conftest.c:212: error: conflicting types for 'sbrk'
/usr/include/unistd.h:464: error: previous declaration of 'sbrk' was here
configure:15050: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 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_STRPTIME 1
| #define HAVE_MKTIME 1
| #define HAVE_TIMELOCAL 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_FCHOWN 1
| #define HAVE_FCHMOD 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_GETRUSAGE 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_GRANTPT 1
| #define HAVE_UNLOCKPT 1
| #define HAVE_PTSNAME 1
| #define HAVE_HTONS 1
| #define HAVE_NTOHS 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_AS 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 HAVE_RLIMIT_VMEM 1
| #define RLIMIT_VMEM_IS_AS 1
| #define HAVE_STRUCT_RUSAGE_RU_MAXRSS 1
| #define HAVE_STRUCT_RUSAGE_RU_IXRSS 1
| #define HAVE_STRUCT_RUSAGE_RU_IDRSS 1
| #define HAVE_STRUCT_RUSAGE_RU_ISRSS 1
| #define HAVE_STRUCT_RUSAGE_RU_MINFLT 1
| #define HAVE_STRUCT_RUSAGE_RU_MAJFLT 1
| #define HAVE_STRUCT_RUSAGE_RU_NSWAP 1
| #define HAVE_STRUCT_RUSAGE_RU_INBLOCK 1
| #define HAVE_STRUCT_RUSAGE_RU_OUBLOCK 1
| #define HAVE_STRUCT_RUSAGE_RU_MSGSND 1
| #define HAVE_STRUCT_RUSAGE_RU_MSGRCV 1
| #define HAVE_STRUCT_RUSAGE_RU_NSIGNALS 1
| #define HAVE_STRUCT_RUSAGE_RU_NVCSW 1
| #define HAVE_STRUCT_RUSAGE_RU_NIVCSW 1
| #define DEFAULT_PATH "/bin:/usr/bin"
| #define PATH_UTMP_FILE "/var/run/utmp"
| #define PATH_WTMP_FILE "/var/log/wtmp"
| #define HAVE_BRK_PROTO 1
| /* end confdefs.h.  */
| #include <unistd.h>
| double sbrk();
| int
| main ()
| {
| int i;
|   ;
|   return 0;
| }
configure:15074: result: yes
configure:15088: checking for mknod prototype in <sys/stat.h>
configure:15110: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
conftest.c:213: error: conflicting types for 'mknod'
/usr/include/sys/stat.h:328: error: previous declaration of 'mknod' was here
conftest.c:213: error: conflicting types for 'mknod'
/usr/include/sys/stat.h:328: error: previous declaration of 'mknod' was here
configure:15116: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 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_STRPTIME 1
| #define HAVE_MKTIME 1
| #define HAVE_TIMELOCAL 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_FCHOWN 1
| #define HAVE_FCHMOD 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_GETRUSAGE 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_GRANTPT 1
| #define HAVE_UNLOCKPT 1
| #define HAVE_PTSNAME 1
| #define HAVE_HTONS 1
| #define HAVE_NTOHS 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_AS 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 HAVE_RLIMIT_VMEM 1
| #define RLIMIT_VMEM_IS_AS 1
| #define HAVE_STRUCT_RUSAGE_RU_MAXRSS 1
| #define HAVE_STRUCT_RUSAGE_RU_IXRSS 1
| #define HAVE_STRUCT_RUSAGE_RU_IDRSS 1
| #define HAVE_STRUCT_RUSAGE_RU_ISRSS 1
| #define HAVE_STRUCT_RUSAGE_RU_MINFLT 1
| #define HAVE_STRUCT_RUSAGE_RU_MAJFLT 1
| #define HAVE_STRUCT_RUSAGE_RU_NSWAP 1
| #define HAVE_STRUCT_RUSAGE_RU_INBLOCK 1
| #define HAVE_STRUCT_RUSAGE_RU_OUBLOCK 1
| #define HAVE_STRUCT_RUSAGE_RU_MSGSND 1
| #define HAVE_STRUCT_RUSAGE_RU_MSGRCV 1
| #define HAVE_STRUCT_RUSAGE_RU_NSIGNALS 1
| #define HAVE_STRUCT_RUSAGE_RU_NVCSW 1
| #define HAVE_STRUCT_RUSAGE_RU_NIVCSW 1
| #define DEFAULT_PATH "/bin:/usr/bin"
| #define PATH_UTMP_FILE "/var/run/utmp"
| #define PATH_WTMP_FILE "/var/log/wtmp"
| #define HAVE_BRK_PROTO 1
| #define HAVE_SBRK_PROTO 1
| /* end confdefs.h.  */
| #include <sys/stat.h>
|    int mknod(double x);
| int
| main ()
| {
| int i;
|   ;
|   return 0;
| }
configure:15140: result: yes
configure:15150: checking for ioctl prototype in <unistd.h> or <termios.h>
configure:15178: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
conftest.c:220: error: conflicting types for 'ioctl'
/usr/include/sys/ioccom.h:71: error: previous declaration of 'ioctl' was here
conftest.c:220: error: conflicting types for 'ioctl'
/usr/include/sys/ioccom.h:71: error: previous declaration of 'ioctl' was here
configure:15184: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 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_STRPTIME 1
| #define HAVE_MKTIME 1
| #define HAVE_TIMELOCAL 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_FCHOWN 1
| #define HAVE_FCHMOD 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_GETRUSAGE 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_GRANTPT 1
| #define HAVE_UNLOCKPT 1
| #define HAVE_PTSNAME 1
| #define HAVE_HTONS 1
| #define HAVE_NTOHS 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_AS 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 HAVE_RLIMIT_VMEM 1
| #define RLIMIT_VMEM_IS_AS 1
| #define HAVE_STRUCT_RUSAGE_RU_MAXRSS 1
| #define HAVE_STRUCT_RUSAGE_RU_IXRSS 1
| #define HAVE_STRUCT_RUSAGE_RU_IDRSS 1
| #define HAVE_STRUCT_RUSAGE_RU_ISRSS 1
| #define HAVE_STRUCT_RUSAGE_RU_MINFLT 1
| #define HAVE_STRUCT_RUSAGE_RU_MAJFLT 1
| #define HAVE_STRUCT_RUSAGE_RU_NSWAP 1
| #define HAVE_STRUCT_RUSAGE_RU_INBLOCK 1
| #define HAVE_STRUCT_RUSAGE_RU_OUBLOCK 1
| #define HAVE_STRUCT_RUSAGE_RU_MSGSND 1
| #define HAVE_STRUCT_RUSAGE_RU_MSGRCV 1
| #define HAVE_STRUCT_RUSAGE_RU_NSIGNALS 1
| #define HAVE_STRUCT_RUSAGE_RU_NVCSW 1
| #define HAVE_STRUCT_RUSAGE_RU_NIVCSW 1
| #define DEFAULT_PATH "/bin:/usr/bin"
| #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_MKNOD_PROTO 1
| /* end confdefs.h.  */
| 
| #ifdef HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| #ifdef HAVE_TERMIOS_H
| # include <termios.h>
| #endif
| double ioctl();
| int
| main ()
| {
| int i;
|   ;
|   return 0;
| }
configure:15208: result: yes
configure:15352: checking if named FIFOs work
configure:15399: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:15402: $? = 0
configure:15404: ./conftest
configure:15407: $? = 0
configure:15422: result: yes
configure:15432: checking if echo in /bin/sh interprets escape sequences
configure:15443: result: no
configure:15454: checking if link() works
configure:15489: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:15492: $? = 0
configure:15494: ./conftest
configure:15497: $? = 0
configure:15511: result: yes
configure:15522: checking if kill(pid, 0) returns ESRCH correctly
configure:15549: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:15552: $? = 0
configure:15554: ./conftest
configure:15557: $? = 0
configure:15571: result: yes
configure:15585: checking if POSIX sigsuspend() works
configure:15627: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:15630: $? = 0
configure:15632: ./conftest
configure:15635: $? = 0
configure:15649: result: yes
configure:15771: checking if getpwnam() is faked
configure:15800: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:15803: $? = 0
configure:15805: ./conftest
configure:15808: $? = 0
configure:15822: result: no
configure:15835: checking base type of the third argument to accept
configure:15859: cc -c -O2 -fno-strict-aliasing -pipe   conftest.c >&5
configure:15865: $? = 0
configure:15869: test -z 
			 || test ! -s conftest.err
configure:15872: $? = 0
configure:15875: test -s conftest.o
configure:15878: $? = 0
configure:15895: result: socklen_t
configure:15904: checking if your system has /dev/ptmx
configure:15915: result: no
configure:16222: checking if your system uses ELF binaries
configure:16254: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:16257: $? = 0
configure:16259: ./conftest
configure:16262: $? = 0
configure:16276: result: yes
configure:16381: checking if your dlsym() needs a leading underscore
configure:16390: cc -c -O2 -fno-strict-aliasing -pipe   -fPIC conftest.c 1>&5
configure:16393: $? = 0
configure:16396: cc  -shared -o conftest.so conftest.o 1>&5
configure:16399: $? = 0
configure:16465: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:16468: $? = 0
configure:16470: ./conftest
configure:16473: $? = 0
configure:16488: result: no
configure:16501: checking if environ is available in shared libraries
configure:16523: cc -c -O2 -fno-strict-aliasing -pipe   -fPIC conftest1.c 1>&5
configure:16526: $? = 0
configure:16529: cc -o conftest1.so  -shared conftest1.o -lncurses -lm  -lc 1>&5
configure:16532: $? = 0
configure:16535: cc -c -O2 -fno-strict-aliasing -pipe   -fPIC conftest2.c 1>&5
configure:16538: $? = 0
configure:16541: cc -o conftest2.so  -shared conftest2.o -lncurses -lm  -lc 1>&5
configure:16544: $? = 0
configure:16611: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:16614: $? = 0
configure:16616: ./conftest
configure:16619: $? = 0
configure:16637: result: yes
configure:16642: checking if tgetent is available in shared libraries
configure:16664: cc -c -O2 -fno-strict-aliasing -pipe   -fPIC conftest1.c 1>&5
configure:16667: $? = 0
configure:16670: cc -o conftest1.so  -shared conftest1.o -lncurses -lm  -lc 1>&5
configure:16673: $? = 0
configure:16676: cc -c -O2 -fno-strict-aliasing -pipe   -fPIC conftest2.c 1>&5
configure:16679: $? = 0
configure:16682: cc -o conftest2.so  -shared conftest2.o -lncurses -lm  -lc 1>&5
configure:16685: $? = 0
configure:16752: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:16755: $? = 0
configure:16757: ./conftest
configure:16760: $? = 0
configure:16778: result: yes
configure:16783: checking if tigetstr is available in shared libraries
configure:16805: cc -c -O2 -fno-strict-aliasing -pipe   -fPIC conftest1.c 1>&5
configure:16808: $? = 0
configure:16811: cc -o conftest1.so  -shared conftest1.o -lncurses -lm  -lc 1>&5
configure:16814: $? = 0
configure:16817: cc -c -O2 -fno-strict-aliasing -pipe   -fPIC conftest2.c 1>&5
configure:16820: $? = 0
configure:16823: cc -o conftest2.so  -shared conftest2.o -lncurses -lm  -lc 1>&5
configure:16826: $? = 0
configure:16893: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:16896: $? = 0
configure:16898: ./conftest
configure:16901: $? = 0
configure:16919: result: yes
configure:16926: checking if name clashes in shared objects are OK
configure:16939: cc -c -O2 -fno-strict-aliasing -pipe   -fPIC conftest1.c 1>&5
configure:16942: $? = 0
configure:16945: cc -o conftest1.so  -shared conftest1.o -lncurses -lm  -lc 1>&5
configure:16948: $? = 0
configure:16951: cc -c -O2 -fno-strict-aliasing -pipe   -fPIC conftest2.c 1>&5
configure:16954: $? = 0
configure:16957: cc -o conftest2.so  -shared conftest2.o -lncurses -lm  -lc 1>&5
configure:16960: $? = 0
configure:17017: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:17020: $? = 0
configure:17022: ./conftest
configure:17025: $? = 0
configure:17043: result: yes
configure:17052: checking for working RTLD_GLOBAL
configure:17065: cc -c -O2 -fno-strict-aliasing -pipe   -fPIC conftest1.c 1>&5
configure:17068: $? = 0
configure:17071: cc -o conftest1.so  -shared conftest1.o -lncurses -lm  -lc 1>&5
configure:17074: $? = 0
configure:17077: cc -c -O2 -fno-strict-aliasing -pipe   -fPIC conftest2.c 1>&5
configure:17080: $? = 0
configure:17083: cc -o conftest2.so  -shared conftest2.o -lncurses -lm  -lc 1>&5
configure:17086: $? = 0
configure:17141: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:17144: $? = 0
configure:17146: ./conftest
configure:17149: $? = 0
configure:17167: result: yes
configure:17171: checking whether symbols in the executable are available
configure:17183: cc -c -O2 -fno-strict-aliasing -pipe   -fPIC conftest1.c 1>&5
configure:17186: $? = 0
configure:17189: cc -o conftest1.so  -shared conftest1.o -lncurses -lm  -lc 1>&5
configure:17192: $? = 0
configure:17249: cc -o conftest -O2 -fno-strict-aliasing -pipe     conftest.c -lncurses -lm  -lc >&5
configure:17252: $? = 0
configure:17254: ./conftest
/libexec/ld-elf.so.1: ./conftest1.so: Undefined symbol "fred"
configure:17257: $? = 1
configure: program exited with status 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define MACHTYPE "i386"
| #define VENDOR "portbld"
| #define OSTYPE "freebsd6.2"
| #define ZSH_MEM 1
| #define ZSH_SECURE_FREE 1
| #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 MAILDIR_SUPPORT 1
| #define MAX_FUNCTION_DEPTH 1000
| #define PROTOTYPES 1
| #define HAVE_ALLOCA 1
| #define HAVE_UNION_INIT 1
| #define HAVE_VARIABLE_LENGTH_ARRAYS 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_STDINT_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_STDARG_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_CURSES_H 1
| #define HAVE_TERM_H 1
| #define HAVE_BOOLCODES 1
| #define HAVE_NUMCODES 1
| #define HAVE_STRCODES 1
| #define HAVE_BOOLNAMES 1
| #define HAVE_NUMNAMES 1
| #define HAVE_STRNAMES 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_STRPTIME 1
| #define HAVE_MKTIME 1
| #define HAVE_TIMELOCAL 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_FCHOWN 1
| #define HAVE_FCHMOD 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_GETRUSAGE 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_GRANTPT 1
| #define HAVE_UNLOCKPT 1
| #define HAVE_PTSNAME 1
| #define HAVE_HTONS 1
| #define HAVE_NTOHS 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_AS 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 HAVE_RLIMIT_VMEM 1
| #define RLIMIT_VMEM_IS_AS 1
| #define HAVE_STRUCT_RUSAGE_RU_MAXRSS 1
| #define HAVE_STRUCT_RUSAGE_RU_IXRSS 1
| #define HAVE_STRUCT_RUSAGE_RU_IDRSS 1
| #define HAVE_STRUCT_RUSAGE_RU_ISRSS 1
| #define HAVE_STRUCT_RUSAGE_RU_MINFLT 1
| #define HAVE_STRUCT_RUSAGE_RU_MAJFLT 1
| #define HAVE_STRUCT_RUSAGE_RU_NSWAP 1
| #define HAVE_STRUCT_RUSAGE_RU_INBLOCK 1
| #define HAVE_STRUCT_RUSAGE_RU_OUBLOCK 1
| #define HAVE_STRUCT_RUSAGE_RU_MSGSND 1
| #define HAVE_STRUCT_RUSAGE_RU_MSGRCV 1
| #define HAVE_STRUCT_RUSAGE_RU_NSIGNALS 1
| #define HAVE_STRUCT_RUSAGE_RU_NVCSW 1
| #define HAVE_STRUCT_RUSAGE_RU_NIVCSW 1
| #define DEFAULT_PATH "/bin:/usr/bin"
| #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_MKNOD_PROTO 1
| #define HAVE_IOCTL_PROTO 1
| #define HAVE_FIFOS 1
| #define SH_USE_BSD_ECHO 1
| #define HAVE_LINK 1
| #define ZSOCKLEN_T socklen_t
| #define MULTIBYTE_SUPPORT 1
| #define DYNAMIC_NAME_CLASH_OK 1
| /* end confdefs.h.  */
| 
| #ifdef HPUXDYNAMIC
| #include <dl.h>
| #define RTLD_LAZY BIND_DEFERRED
| #define RTLD_GLOBAL DYNAMIC_PATH
| 
| char *zsh_gl_sym_addr ;
| 
| #define dlopen(file,mode) (void *)shl_load((file), (mode), (long) 0)
| #define dlclose(handle) shl_unload((shl_t)(handle))
| #define dlsym(handle,name) (zsh_gl_sym_addr=0,shl_findsym((shl_t *)&(handle),name,TYPE_UNDEFINED,&zsh_gl_sym_addr), (void *)zsh_gl_sym_addr)
| #define dlerror() 0
| #else
| #ifdef HAVE_DLFCN_H
| #include <dlfcn.h>
| #else
| #include <sys/types.h>
| #include <nlist.h>
| #include <link.h>
| #endif
| #endif
| #ifndef RTLD_LAZY
| #define RTLD_LAZY 1
| #endif
| #ifndef RTLD_GLOBAL
| #define RTLD_GLOBAL 0
| #endif
| 
| main()
| {
|     void *handle;
|     int (*barneysym)();
|     handle = dlopen("./conftest1.so", RTLD_LAZY | RTLD_GLOBAL);
|     if(!handle) exit(1);
|     barneysym = (int (*)()) dlsym(handle, "barney");
|     if(!barneysym) exit(1);
|     exit((*barneysym)() != 69);
| }
| 
| int fred () { return 42; }
| 
configure:17276: result: no
configure:17283: checking whether executables can be stripped
configure:17391: result: yes
configure:17394: checking whether libraries can be stripped
configure:17406: cc -c -O2 -fno-strict-aliasing -pipe   -fPIC conftest1.c 1>&5
configure:17409: $? = 0
configure:17412: cc -o conftest1.so  -shared -s conftest1.o -lncurses -lm  -lc 1>&5
configure:17415: $? = 0
configure:17468: cc -o conftest -O2 -fno-strict-aliasing -pipe    conftest.c -lncurses -lm  -lc >&5
configure:17471: $? = 0
configure:17473: ./conftest
configure:17476: $? = 0
configure:17494: result: yes
configure:17770: creating ./config.status

## ---------------------- ##
## Running config.status. ##
## ---------------------- ##

This file was extended by config.status, which was
generated by GNU Autoconf 2.59.  Invocation command line was

  CONFIG_FILES    = 
  CONFIG_HEADERS  = 
  CONFIG_LINKS    = 
  CONFIG_COMMANDS = 
  $ ./config.status 

on soc90.bluepex.com

config.status:18538: creating Config/defs.mk
config.status:18538: creating Makefile
config.status:18538: creating Doc/Makefile
config.status:18538: creating Etc/Makefile
config.status:18538: creating Src/Makefile
config.status:18538: creating Test/Makefile
config.status:18641: creating config.h
config.status:18943: executing config.modules commands
config.status:18943: executing stamp-h commands

## ---------------- ##
## Cache variables. ##
## ---------------- ##

ac_cv_build=i386-portbld-freebsd6.2
ac_cv_build_alias=i386-portbld-freebsd6.2
ac_cv_c_compiler_gnu=yes
ac_cv_c_const=yes
ac_cv_env_CC_set=set
ac_cv_env_CC_value=cc
ac_cv_env_CFLAGS_set=set
ac_cv_env_CFLAGS_value='-O2 -fno-strict-aliasing -pipe '
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=set
ac_cv_env_build_alias_value=i386-portbld-freebsd6.2
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_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_fchmod=yes
ac_cv_func_fchown=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_getrusage=yes
ac_cv_func_gettimeofday=yes
ac_cv_func_grantpt=yes
ac_cv_func_htons=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_mktime=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_ntohs=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_ptsname=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_strptime=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_timelocal=yes
ac_cv_func_uname=yes
ac_cv_func_unload=no
ac_cv_func_unlockpt=yes
ac_cv_func_wait3=yes
ac_cv_func_waitpid=yes
ac_cv_func_wctomb=yes
ac_cv_have_dev_ptmx=no
ac_cv_header_curses_h=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_iconv_h=no
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_stdarg_h=yes
ac_cv_header_stdc=yes
ac_cv_header_stddef_h=yes
ac_cv_header_stdint_h=yes
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_resource_h=yes
ac_cv_header_sys_select_h=yes
ac_cv_header_sys_stat_h=yes
ac_cv_header_sys_stropts_h=no
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_term_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_varargs_h=no
ac_cv_header_wchar_h=yes
ac_cv_host=i386-portbld-freebsd6.2
ac_cv_host_alias=i386-portbld-freebsd6.2
ac_cv_lib_c_printf=yes
ac_cv_lib_dl_dlopen=no
ac_cv_lib_m_pow=yes
ac_cv_lib_socket_socket=no
ac_cv_member_struct_rusage_ru_idrss=yes
ac_cv_member_struct_rusage_ru_inblock=yes
ac_cv_member_struct_rusage_ru_isrss=yes
ac_cv_member_struct_rusage_ru_ixrss=yes
ac_cv_member_struct_rusage_ru_majflt=yes
ac_cv_member_struct_rusage_ru_maxrss=yes
ac_cv_member_struct_rusage_ru_minflt=yes
ac_cv_member_struct_rusage_ru_msgrcv=yes
ac_cv_member_struct_rusage_ru_msgsnd=yes
ac_cv_member_struct_rusage_ru_nivcsw=yes
ac_cv_member_struct_rusage_ru_nsignals=yes
ac_cv_member_struct_rusage_ru_nswap=yes
ac_cv_member_struct_rusage_ru_nvcsw=yes
ac_cv_member_struct_rusage_ru_oublock=yes
ac_cv_objext=o
ac_cv_prog_AWK=nawk
ac_cv_prog_CPP='cc -E'
ac_cv_prog_LN=ln
ac_cv_prog_ac_ct_CC=cc
ac_cv_prog_cc_g=yes
ac_cv_prog_cc_stdc=''
ac_cv_prog_egrep='grep -E'
ac_cv_prog_gcc_traditional=no
ac_cv_prog_make_make_set=yes
ac_cv_search_opendir='none required'
ac_cv_search_tgetent='none required'
ac_cv_search_tigetflag='none required'
ac_cv_search_tigetstr=-lncurses
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_winsize_in_ptem=no
ac_cv_working_alloca_h=no
fp_cv_prog_cc_stdc=''
lt_cv_sys_max_cmd_len=262144
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_unicode_support=yes
zsh_cv_c_variable_length_arrays=yes
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=yes
zsh_cv_have_RLIMIT_LOCKS=no
zsh_cv_have_RLIMIT_MEMLOCK=yes
zsh_cv_have_RLIMIT_MSGQUEUE=no
zsh_cv_have_RLIMIT_NICE=no
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_RTPRIO=no
zsh_cv_have_RLIMIT_SBSIZE=yes
zsh_cv_have_RLIMIT_SIGPENDING=no
zsh_cv_have_RLIMIT_TCACHE=no
zsh_cv_have_RLIMIT_VMEM=yes
zsh_cv_header_sys_ioctl_h_ioctl_proto=no
zsh_cv_header_sys_stat_h_mknod_proto=yes
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_header_unistd_h_termios_h_ioctl_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_rss_is_as=no
zsh_cv_rlimit_vmem_is_as=yes
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=no
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=no
zsh_cv_sys_sigsuspend=yes
zsh_cv_sys_superroot=no
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

## ----------------- ##
## Output variables. ##
## ----------------- ##

ALLOCA=''
ANSI2KNR=': ansi2knr'
AWK='nawk'
CC='cc'
CFLAGS='-O2 -fno-strict-aliasing -pipe '
CPP='cc -E'
CPPFLAGS=''
D='D'
DEFS='-DHAVE_CONFIG_H'
DLCFLAGS='-fPIC'
DLLD='cc'
DLLDFLAGS='-shared'
DL_EXT='so'
E='N'
ECHO_C=''
ECHO_N='-n'
ECHO_T=''
EGREP='grep -E'
ERRNO_H=' /usr/include/errno.h'
EXEEXT=''
EXELDFLAGS=' -s'
EXPOPT=''
EXTRAZSHOBJS=''
EXTRA_LDFLAGS=''
FUNCTIONS_SUBDIRS='yes'
IMPOPT=''
INSTALL_DATA='install   -m 444'
INSTALL_PROGRAM='install  -s  -m 555'
INSTALL_SCRIPT='install   -m 555'
INSTLIB='install.bin-$(L)'
L='L'
LDFLAGS=''
LIBLDFLAGS=' -s'
LIBOBJS=''
LIBS='-lncurses -lm  -lc'
LINKMODS='NOLINKMODS'
LN='ln'
LTLIBOBJS=''
MOD_EXPORT=''
MOD_IMPORT_FUNCTION=''
MOD_IMPORT_VARIABLE=''
OBJEXT='o'
PACKAGE_BUGREPORT=''
PACKAGE_NAME=''
PACKAGE_STRING=''
PACKAGE_TARNAME=''
PACKAGE_VERSION=''
PATH_SEPARATOR=':'
PCRECONF=''
PDFETEX=': pdfetex'
RLIMITS_INC_H='/usr/include/sys/resource.h'
SET_MAKE=''
SHELL='/bin/sh'
SHORTBOOTNAMES='yes'
SIGNAL_H='/usr/include/sys/signal.h'
TEXI2PDF=''
U=''
UNINSTLIB='uninstall.bin-$(L)'
YODL=': yodl'
ac_ct_CC='cc'
bindir='${exec_prefix}/bin'
build='i386-portbld-freebsd6.2'
build_alias='i386-portbld-freebsd6.2'
build_cpu='i386'
build_os='freebsd6.2'
build_vendor='portbld'
datadir='${prefix}/share'
exec_prefix='${prefix}'
fndir='/usr/local/share/zsh/4.3.4/functions'
host='i386-portbld-freebsd6.2'
host_alias=''
host_cpu='i386'
host_os='freebsd6.2'
host_vendor='portbld'
includedir='${prefix}/include'
infodir='/usr/local/info/'
libdir='${exec_prefix}/lib'
libexecdir='${exec_prefix}/libexec'
localstatedir='${prefix}/var'
mandir='/usr/local/man'
oldincludedir='/usr/include'
prefix='/usr/local'
program_transform_name='s,x,x,'
sbindir='${exec_prefix}/sbin'
scriptdir='${prefix}/share/zsh/${VERSION}/scripts'
sharedstatedir='${prefix}/com'
sitefndir='/usr/local/share/zsh/site-functions'
sitescriptdir='${prefix}/share/zsh/scripts'
sysconfdir='${prefix}/etc'
target_alias=''
tzsh='zsh'
zlogin='/etc/zlogin'
zlogout='/etc/zlogout'
zprofile='/etc/zprofile'
zshenv='/etc/zshenv'
zshrc='/etc/zshrc'

## ------------- ##
## Output files. ##
## ------------- ##

CLEAN_MK='./Config/clean.mk'
CONFIG_MK='./Config/config.mk'
DEFS_MK='Config/defs.mk'
VERSION_MK='./Config/version.mk'

## ----------- ##
## confdefs.h. ##
## ----------- ##

#define CONFIG_LOCALE 1
#define DEFAULT_PATH "/bin:/usr/bin"
#define DL_EXT "so"
#define DYNAMIC 1
#define DYNAMIC_NAME_CLASH_OK 1
#define GETPGRP_VOID 1
#define GLOBAL_ZLOGIN "/etc/zlogin"
#define GLOBAL_ZLOGOUT "/etc/zlogout"
#define GLOBAL_ZPROFILE "/etc/zprofile"
#define GLOBAL_ZSHENV "/etc/zshenv"
#define GLOBAL_ZSHRC "/etc/zshrc"
#define HAVE_ALLOCA 1
#define HAVE_BOOLCODES 1
#define HAVE_BOOLNAMES 1
#define HAVE_BRK 1
#define HAVE_BRK_PROTO 1
#define HAVE_CURSES_H 1
#define HAVE_DIFFTIME 1
#define HAVE_DIRENT_H 1
#define HAVE_DLCLOSE 1
#define HAVE_DLERROR 1
#define HAVE_DLFCN_H 1
#define HAVE_DLOPEN 1
#define HAVE_DLSYM 1
#define HAVE_ERAND48 1
#define HAVE_ERRNO_H 1
#define HAVE_FCHDIR 1
#define HAVE_FCHMOD 1
#define HAVE_FCHOWN 1
#define HAVE_FCNTL_H 1
#define HAVE_FIFOS 1
#define HAVE_FSEEKO 1
#define HAVE_FSTAT 1
#define HAVE_FTELLO 1
#define HAVE_FTRUNCATE 1
#define HAVE_GETENV 1
#define HAVE_GETGRGID 1
#define HAVE_GETGRNAM 1
#define HAVE_GETHOSTBYNAME2 1
#define HAVE_GETHOSTNAME 1
#define HAVE_GETIPNODEBYNAME 1
#define HAVE_GETLOGIN 1
#define HAVE_GETPAGESIZE 1
#define HAVE_GETPWENT 1
#define HAVE_GETPWNAM 1
#define HAVE_GETPWUID 1
#define HAVE_GETRLIMIT 1
#define HAVE_GETRUSAGE 1
#define HAVE_GETTIMEOFDAY 1
#define HAVE_GRANTPT 1
#define HAVE_GRP_H 1
#define HAVE_HTONS 1
#define HAVE_INET_ATON 1
#define HAVE_INET_NTOP 1
#define HAVE_INET_PTON 1
#define HAVE_INITGROUPS 1
#define HAVE_INTTYPES_H 1
#define HAVE_IOCTL_PROTO 1
#define HAVE_KILLPG 1
#define HAVE_LANGINFO_H 1
#define HAVE_LCHOWN 1
#define HAVE_LIBM 1
#define HAVE_LIMITS_H 1
#define HAVE_LINK 1
#define HAVE_LOCALE_H 1
#define HAVE_LSTAT 1
#define HAVE_MEMCPY 1
#define HAVE_MEMMOVE 1
#define HAVE_MEMORY_H 1
#define HAVE_MEMORY_H 1
#define HAVE_MKFIFO 1
#define HAVE_MKNOD_PROTO 1
#define HAVE_MKSTEMP 1
#define HAVE_MKTIME 1
#define HAVE_MMAP 1
#define HAVE_MSYNC 1
#define HAVE_MUNMAP 1
#define HAVE_NETINET_IN_SYSTM_H 1
#define HAVE_NICE 1
#define HAVE_NL_LANGINFO 1
#define HAVE_NTOHS 1
#define HAVE_NUMCODES 1
#define HAVE_NUMNAMES 1
#define HAVE_OSPEED 1
#define HAVE_PATHCONF 1
#define HAVE_POLL 1
#define HAVE_POLL_H 1
#define HAVE_PTSNAME 1
#define HAVE_PUTENV 1
#define HAVE_PWD_H 1
#define HAVE_READLINK 1
#define HAVE_RLIMIT_AS 1
#define HAVE_RLIMIT_MEMLOCK 1
#define HAVE_RLIMIT_NOFILE 1
#define HAVE_RLIMIT_NPROC 1
#define HAVE_RLIMIT_RSS 1
#define HAVE_RLIMIT_SBSIZE 1
#define HAVE_RLIMIT_VMEM 1
#define HAVE_SBRK 1
#define HAVE_SBRK_PROTO 1
#define HAVE_SELECT 1
#define HAVE_SETEUID 1
#define HAVE_SETLOCALE 1
#define HAVE_SETPGID 1
#define HAVE_SETPGRP 1
#define HAVE_SETRESUID 1
#define HAVE_SETREUID 1
#define HAVE_SETSID 1
#define HAVE_SETUID 1
#define HAVE_SETUPTERM 1
#define HAVE_SIGACTION 1
#define HAVE_SIGBLOCK 1
#define HAVE_SIGNGAM 1
#define HAVE_SIGPROCMASK 1
#define HAVE_SIGSETMASK 1
#define HAVE_STDARG_H 1
#define HAVE_STDDEF_H 1
#define HAVE_STDINT_H 1
#define HAVE_STDIO_H 1
#define HAVE_STDLIB_H 1
#define HAVE_STDLIB_H 1
#define HAVE_STDLIB_H 1
#define HAVE_STRCODES 1
#define HAVE_STRCOLL 1
#define HAVE_STRERROR 1
#define HAVE_STRFTIME 1
#define HAVE_STRINGS_H 1
#define HAVE_STRING_H 1
#define HAVE_STRING_H 1
#define HAVE_STRNAMES 1
#define HAVE_STRPTIME 1
#define HAVE_STRSTR 1
#define HAVE_STRUCT_DIRENT_D_INO 1
#define HAVE_STRUCT_RUSAGE_RU_IDRSS 1
#define HAVE_STRUCT_RUSAGE_RU_INBLOCK 1
#define HAVE_STRUCT_RUSAGE_RU_ISRSS 1
#define HAVE_STRUCT_RUSAGE_RU_IXRSS 1
#define HAVE_STRUCT_RUSAGE_RU_MAJFLT 1
#define HAVE_STRUCT_RUSAGE_RU_MAXRSS 1
#define HAVE_STRUCT_RUSAGE_RU_MINFLT 1
#define HAVE_STRUCT_RUSAGE_RU_MSGRCV 1
#define HAVE_STRUCT_RUSAGE_RU_MSGSND 1
#define HAVE_STRUCT_RUSAGE_RU_NIVCSW 1
#define HAVE_STRUCT_RUSAGE_RU_NSIGNALS 1
#define HAVE_STRUCT_RUSAGE_RU_NSWAP 1
#define HAVE_STRUCT_RUSAGE_RU_NVCSW 1
#define HAVE_STRUCT_RUSAGE_RU_OUBLOCK 1
#define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
#define HAVE_STRUCT_TIMEZONE 1
#define HAVE_STRUCT_UTMP 1
#define HAVE_STRUCT_UTMP_UT_HOST 1
#define HAVE_SYSCONF 1
#define HAVE_SYS_FILIO_H 1
#define HAVE_SYS_MMAN_H 1
#define HAVE_SYS_PARAM_H 1
#define HAVE_SYS_RESOURCE_H 1
#define HAVE_SYS_SELECT_H 1
#define HAVE_SYS_STAT_H 1
#define HAVE_SYS_TIMES_H 1
#define HAVE_SYS_TIME_H 1
#define HAVE_SYS_TYPES_H 1
#define HAVE_SYS_TYPES_H 1
#define HAVE_SYS_UTSNAME_H 1
#define HAVE_SYS_WAIT_H 1
#define HAVE_TCGETATTR 1
#define HAVE_TCSETPGRP 1
#define HAVE_TERMCAP_H 1
#define HAVE_TERMIOS_H 1
#define HAVE_TERM_H 1
#define HAVE_TGETENT 1
#define HAVE_TIGETFLAG 1
#define HAVE_TIGETNUM 1
#define HAVE_TIGETSTR 1
#define HAVE_TIMELOCAL 1
#define HAVE_UNAME 1
#define HAVE_UNION_INIT 1
#define HAVE_UNISTD_H 1
#define HAVE_UNISTD_H 1
#define HAVE_UNISTD_H 1
#define HAVE_UNLOCKPT 1
#define HAVE_UTMP_H 1
#define HAVE_VARIABLE_LENGTH_ARRAYS 1
#define HAVE_WAIT3 1
#define HAVE_WAITPID 1
#define HAVE_WCHAR_H 1
#define HAVE_WCTOMB 1
#define HAVE__MKTEMP 1
#define MACHTYPE "i386"
#define MAILDIR_SUPPORT 1
#define MAX_FUNCTION_DEPTH 1000
#define MULTIBYTE_SUPPORT 1
#define OFF_T_IS_64_BIT 1
#define OSTYPE "freebsd6.2"
#define PACKAGE_BUGREPORT ""
#define PACKAGE_NAME ""
#define PACKAGE_STRING ""
#define PACKAGE_TARNAME ""
#define PACKAGE_VERSION ""
#define PATH_UTMP_FILE "/var/run/utmp"
#define PATH_WTMP_FILE "/var/log/wtmp"
#define POSIX_SIGNALS 1
#define POSIX_SIGNALS 1
#define PROTOTYPES 1
#define RESTRICTED_R 1
#define RETSIGTYPE void
#define RLIMIT_VMEM_IS_AS 1
#define RLIM_T_IS_QUAD_T 1
#define SH_USE_BSD_ECHO 1
#define STDC_HEADERS 1
#define TGETENT_ACCEPTS_NULL 1
#define TGETENT_SUCCESS 1
#define TIME_WITH_SYS_TIME 1
#define VENDOR "portbld"
#define ZSH_64_BIT_TYPE long long
#define ZSH_64_BIT_UTYPE unsigned long long
#define ZSH_MEM 1
#define ZSH_SECURE_FREE 1
#define ZSOCKLEN_T socklen_t

configure: exit 0

^ permalink raw reply	[relevance 1%]

* Re: putenv()/environ bug
  @ 2007-07-30 20:39  2%         ` Peter Stephenson
  2007-07-30 22:39  0%           ` Sean C. Farley
  0 siblings, 1 reply; 200+ results
From: Peter Stephenson @ 2007-07-30 20:39 UTC (permalink / raw)
  To: zsh-workers

On Sun, 29 Jul 2007 14:08:42 -0500 (CDT)
"Sean C. Farley" <scf@FreeBSD.org> wrote:
> On Sat, 28 Jul 2007, Andrey Borzenkov wrote:
> > What about - check if (un-)setenv is available and use them. On legacy
> > systems use existing implementation. This probably will mean we will
> > be using native utilities everywhere on modern systems.
> 
> That would work for me.  If anyone would like me to test any patches, I
> will.

This sounds the best, and it's working on Fedora 7.

I've tested if both setenv() and unsetenv() are available and if they
are we don't do any management of the environment ourselves, so
the hack in addenv() doesn't occur... I hope that works, otherwise
the implementation of the library is fairly well broken, the whole
point of setenv/unsetenv being to be able to do this in a standard
fashion.

The only references to environ we make with this code are to read it at
the start to initialise internval variables and to pass it to execs.
This seems to be sanctioned by POSIX.

As a TODO indicates, this means we don't actually need to store an "env"
string in the parameter structure, just a flag saying we've stuck the
value in the environment.  That can change when this stuff is clearly
working.

Index: configure.ac
===================================================================
RCS file: /cvsroot/zsh/zsh/configure.ac,v
retrieving revision 1.66
diff -u -r1.66 configure.ac
--- configure.ac	25 Jul 2007 14:54:57 -0000	1.66
+++ configure.ac	30 Jul 2007 20:36:27 -0000
@@ -1126,7 +1126,7 @@
 	       setlocale \
 	       uname \
 	       signgam \
-	       putenv getenv \
+	       putenv getenv setenv unsetenv xw\
 	       brk sbrk \
 	       pathconf sysconf \
 	       tgetent tigetflag tigetnum tigetstr setupterm \
Index: Src/exec.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/exec.c,v
retrieving revision 1.119
diff -u -r1.119 exec.c
--- Src/exec.c	13 Jul 2007 10:09:07 -0000	1.119
+++ Src/exec.c	30 Jul 2007 20:36:29 -0000
@@ -524,7 +524,16 @@
      * that as argv[0] for this external command       */
     if (unset(RESTRICTED) && (z = zgetenv("ARGV0"))) {
 	setdata(firstnode(args), (void *) ztrdup(z));
+	/*
+	 * Note we don't do anything with the parameter structure
+	 * for ARGV0: that's OK since we're about to exec or exit
+	 * on failure.
+	 */
+#ifdef HAVE_UNSETENV
+	unsetenv("ARGV0");
+#else
 	delenvvalue(z - 6);
+#endif
     } else if (flags & BINF_DASH) {
     /* Else if the pre-command `-' was given, we add `-' *
      * to the front of argv[0] for this command.         */
Index: Src/params.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/params.c,v
retrieving revision 1.133
diff -u -r1.133 params.c
--- Src/params.c	25 Jul 2007 09:26:51 -0000	1.133
+++ Src/params.c	30 Jul 2007 20:36:34 -0000
@@ -610,7 +610,7 @@
 createparamtable(void)
 {
     Param ip, pm;
-#ifndef HAVE_PUTENV
+#if !defined(HAVE_PUTENV) && !defined(HAVE_SETENV)
     char **new_environ;
     int  envsize;
 #endif
@@ -665,7 +665,7 @@
 
     setsparam("LOGNAME", ztrdup((str = getlogin()) && *str ? str : cached_username));
 
-#ifndef HAVE_PUTENV
+#if !defined(HAVE_PUTENV) && !defined(HAVE_SETENV)
     /* Copy the environment variables we are inheriting to dynamic *
      * memory, so we can do mallocs and frees on it.               */
     envsize = sizeof(char *)*(1 + arrlen(environ));
@@ -3855,6 +3855,30 @@
 int
 zputenv(char *str)
 {
+#ifdef HAVE_SETENV
+    /*
+     * If we are using unsetenv() to remove values from the
+     * environment, which is the safe thing to do, we
+     * need to use setenv() to put them there in the first place.
+     * Unfortunately this is a slightly different interface
+     * from what zputenv() assumes.
+     */
+    char *ptr;
+    int ret;
+
+    for (ptr = str; *ptr && *ptr != '='; ptr++)
+	;
+    if (*ptr) {
+	*ptr = '\0';
+	ret = setenv(str, ptr+1, 1);
+	*ptr = '=';
+    } else {
+	/* safety first */
+	DPUTS(1, "bad environment string");
+	ret = setenv(str, ptr, 1);
+    }
+    return ret;
+#else
 #ifdef HAVE_PUTENV
     return putenv(str);
 #else
@@ -3878,9 +3902,12 @@
     }
     return 0;
 #endif
+#endif
 }
 
 /**/
+#ifndef HAVE_UNSETENV
+/**/
 static int
 findenv(char *name, int *pos)
 {
@@ -3899,6 +3926,8 @@
     
     return 0;
 }
+/**/
+#endif
 
 /* Given *name = "foo", it searches the environment for string *
  * "foo=bar", and returns a pointer to the beginning of "bar"  */
@@ -3939,14 +3968,20 @@
 void
 addenv(Param pm, char *value)
 {
-    char *oldenv = 0, *newenv = 0, *env = 0;
+    char *newenv = 0;
+#ifndef HAVE_UNSETENV
+    char *oldenv = 0, *env = 0;
     int pos;
+#endif
 
-    /* First check if there is already an environment *
-     * variable matching string `name'. If not, and   *
-     * we are not requested to add new, return        */
+#ifndef HAVE_UNSETENV
+    /*
+     * First check if there is already an environment
+     * variable matching string `name'.
+     */
     if (findenv(pm->node.nam, &pos))
 	oldenv = environ[pos];
+#endif
 
      newenv = mkenvstr(pm->node.nam, value, pm->node.flags);
      if (zputenv(newenv)) {
@@ -3954,6 +3989,19 @@
 	pm->env = NULL;
 	return;
     }
+#ifdef HAVE_UNSETENV
+     /*
+      * If we are using setenv/unsetenv to manage the environment,
+      * we simply store the string we created in pm->env since
+      * memory management of the environment is handled entirely
+      * by the system.
+      *
+      * TODO: is this good enough to fix problem cases from
+      * the other branch?  If so, we don't actually need to
+      * store pm->env at all, just a flag that the value was set.
+      */
+     pm->env = newenv;
+#else
     /*
      * Under Cygwin we must use putenv() to maintain consistency.
      * Unfortunately, current version (1.1.2) copies argument and may
@@ -3973,6 +4021,7 @@
 
     DPUTS(1, "addenv should never reach the end");
     pm->env = NULL;
+#endif
 }
 
 
@@ -4003,6 +4052,7 @@
  * string.                                         */
 
 
+#ifndef HAVE_UNSETENV
 /**/
 void
 delenvvalue(char *x)
@@ -4018,6 +4068,8 @@
     }
     zsfree(x);
 }
+#endif
+
 
 /* Delete a pointer from the list of pointers to environment *
  * variables by shifting all the other pointers up one slot. */
@@ -4026,7 +4078,12 @@
 void
 delenv(Param pm)
 {
+#ifdef HAVE_UNSETENV
+    unsetenv(pm->node.nam);
+    zsfree(pm->env);
+#else
     delenvvalue(pm->env);
+#endif
     pm->env = NULL;
     /*
      * Note we don't remove PM_EXPORT from the flags.  This
Index: Src/system.h
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/system.h,v
retrieving revision 1.44
diff -u -r1.44 system.h
--- Src/system.h	23 Apr 2007 15:15:13 -0000	1.44
+++ Src/system.h	30 Jul 2007 20:36:34 -0000
@@ -693,6 +693,15 @@
 
 extern char **environ;
 
+/*
+ * We always need setenv and unsetenv in pairs, because
+ * we don't know how to do memory management on the values set.
+ */
+#ifndef HAVE_UNSETENV
+#undef HAVE_SETENV
+#endif
+
+
 /* These variables are sometimes defined in, *
  * and needed by, the termcap library.       */
 #if MUST_DEFINE_OSPEED


-- 
Peter Stephenson <p.w.stephenson@ntlworld.com>
Web page now at http://homepage.ntlworld.com/p.w.stephenson/


^ permalink raw reply	[relevance 2%]

* Re: putenv()/environ bug
  2007-07-30 20:39  2%         ` Peter Stephenson
@ 2007-07-30 22:39  0%           ` Sean C. Farley
  0 siblings, 0 replies; 200+ results
From: Sean C. Farley @ 2007-07-30 22:39 UTC (permalink / raw)
  To: Peter Stephenson; +Cc: Sean C. Farley, zsh-workers

On Mon, 30 Jul 2007, Peter Stephenson wrote:

> On Sun, 29 Jul 2007 14:08:42 -0500 (CDT)
> "Sean C. Farley" <scf@FreeBSD.org> wrote:
>> On Sat, 28 Jul 2007, Andrey Borzenkov wrote:
>>> What about - check if (un-)setenv is available and use them. On
>>> legacy systems use existing implementation. This probably will mean
>>> we will be using native utilities everywhere on modern systems.
>>
>> That would work for me.  If anyone would like me to test any patches,
>> I will.
>
> This sounds the best, and it's working on Fedora 7.
>
> I've tested if both setenv() and unsetenv() are available and if they
> are we don't do any management of the environment ourselves, so the
> hack in addenv() doesn't occur... I hope that works, otherwise the
> implementation of the library is fairly well broken, the whole point
> of setenv/unsetenv being to be able to do this in a standard fashion.
>
> The only references to environ we make with this code are to read it
> at the start to initialise internval variables and to pass it to
> execs.  This seems to be sanctioned by POSIX.
>
> As a TODO indicates, this means we don't actually need to store an
> "env" string in the parameter structure, just a flag saying we've
> stuck the value in the environment.  That can change when this stuff
> is clearly working.

This change fixes the issue concerning the *env() functions in FreeBSD
7-CURRENT.  It works also with 6-STABLE.  Thank you.

Sean

P.S.  I am not subscribed; please keep me in the Cc.
-- 
scf@FreeBSD.org


^ permalink raw reply	[relevance 0%]

* [PATCH] Many missing options for git-diff zsh completion
@ 2007-08-03 12:56  4% Matthieu Moy
  0 siblings, 0 replies; 200+ results
From: Matthieu Moy @ 2007-08-03 12:56 UTC (permalink / raw)
  To: zsh-workers

Hi,

git-diff has a lot more options that the latest _git file has.

Here's a patch that adds them (feel free to remove a few of them if
you do not believe they're common enough, but the list seems fine as
it is).

Please, Cc me in your replies, I'm not a list subscriber.

Thanks,

-- 
Matthieu

--- Completion/Unix/_git    2007-08-03 12:50:05 +0000
+++ Completion/Unix/_git    2007-08-03 12:50:15 +0000
@@ -22,17 +22,39 @@
 
 # TODO: -s and --diff-filter are undocumented
 diff_args=(
+  '--abbrev-[Instead of showing the full object name, show only handful hexdigits prefix.]: :_guard "[[\:digit\:]]#" number'
+  '--binary[In addition to --full-index, output "binary diff" that can be applied with "git apply".]'
+  '(-c --cached)'{-c,--cached}'[show cached files in the output]'
+  '--color-words[Show colored word diff, i.e. color words which have changed.]'
+  '--color[Show colored diff.]'
   '--diff-filter=-[filter to apply to diff]'
   '--find-copies-harder[try harder to find copies]'
   '--name-only[show only names of changed files]'
   '--name-status[show only names and status of changed files]'
+  '--no-color[Turn off colored diff, even when the configuration file gives the default to color output.]'
+  '--no-renames[Turn off rename detection, even when the configuration file gives the default to do so.]'
+  '--numstat[Similar to --stat, but shows numbers in decimal notation and pathname without abbreviation.]'
+  '--patch-with-raw[Synonym for "-p --raw".]'
+  '--patch-with-stat[Synonym for "-p --stat".]'
   '--pickaxe-all[when -S finds a change, show all changes in that changeset]'
+  '--pickaxe-regex[Make the <string> not a plain string but an extended POSIX regex to match.]'
+  '--raw[Generate the raw format.]'
+  '--stat[Generate a diffstat.]'
+  '--summary[Output a condensed summary of extended header information such as creations, renames and mode changes.]'
+  '--text[Treat all files as text.]'
+  '(-1 --base)'{-1,--base}'[Diff against the base version]'
+  '(-2 --base)'{-2,--ours}'[Diff against our branch version]'
+  '(-3 --base)'{-3,--theirs}'[Diff against their branch version]'
+  '-0[omit diff output for unmerged entries and just show "Unmerged".]'
+  '-a[Shorthand for "--text".]'
+  '--full-index[Instead of the first handful characters, show full object name of pre- and post-image blob on the "index" line when generating a patch format output.]'
   '-B-[break complete rewrite changes into pairs of given size]: :_guard "[[\:digit\:]]#" size'
   '-C-[detect copies as well as renames with given score]: :_guard "[[\:digit\:]]#" size'
   '-l-[number of rename/copy targets to run]: :_guard "[[\:digit\:]]#" number'
   '-M-[detect renames with given score]: :_guard "[[\:digit\:]]#" size'
   '-O-[output patch in the order of glob-pattern lines in given file]:file:_files'
   '-p[generate diff in patch format]'
+  '-q[Remain silent even on nonexistent files]'
   '-R[do a reverse diff]'
   '-S-[look for differences that contain the given string]:string'
   '-s[do not produce any output]'



^ permalink raw reply	[relevance 4%]

* Re: inconsistent behavior observed with export VAR=VAL versus VAR=VAL zsh 4.2.6
  @ 2007-08-18  9:46  4%   ` Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2007-08-18  9:46 UTC (permalink / raw)
  To: Nex Magik, zsh-workers

On Fri, 17 Aug 2007 23:15:36 +0100
Peter Stephenson <p.w.stephenson@ntlworld.com> wrote:
> Nex Magik wrote:
>> stimpy% Y="foo bar"
>...
>> stimpy% export Z=$(/bin/echo $Y):$PATH
>> export: not an identifier: bar:/tmp/opt/spi/RapiDev_99a-RC1/tools/bin:/opt/gc
>> c-3.2.3/bin:/opt/python-2.4.4/bin:/usr/local/bin:/bin:/usr/bin:/home/jkim/bin
>> /exec/i686-Linux2:/home/jkim/bin/shell:/home/jkim/bin/shell/LOGIN/i686-Linux2
>> stimpy
> 
> If this is what you're worried about, it's not a bug.  zsh applies
> completely consistent rules for arguments splitting of commands,
> including "export" and it's relatives, which means if you don't want
> $(...) expansions to be split into words then you must tell it not to.
> The standard way is to put double quotes around the expansion.  However,
> if you want to change the behaviour permanently you can set the option
> KSH_TYPESET.  See its documentation in the zshoptions manual.

Jason told me this was to do with a bash script he was trying to run in
zsh, and I notice that we don't turn on KSH_TYPESET in Bourne/POSIX
shell emulation, only ksh emulation.  It's not obvious to me from the
POSIX docs at www.opengroup.org that the bash behaviour is the approved
one, but they usually get this right and it's possible I'm missing
some obscure paragraph.  Has anyone run across this?

-- 
Peter Stephenson <p.w.stephenson@ntlworld.com>
Web page now at http://homepage.ntlworld.com/p.w.stephenson/


^ permalink raw reply	[relevance 4%]

* Re: Bug#439036: chgrp builtin from zsh/files does not dereference symlinks (non-POSIX)
@ 2007-08-21 22:57  4% Clint Adams
  0 siblings, 0 replies; 200+ results
From: Clint Adams @ 2007-08-21 22:57 UTC (permalink / raw)
  To: zsh-workers; +Cc: vincent, 439036-forwarded

On Tue, Aug 21, 2007 at 09:31:11PM +0200, Vincent Lefevre wrote:
> The chgrp builtin (and chown?) does not dereference symlinks, though
> POSIX requires symlinks to be dereferenced by default. Moreover, the
> behavior on symlinks is not documented in the zshmodules(1) man page.
> 
> There are still missing features (options) compared to POSIX chgrp,
> but I think that at least the default behavior and supported options
> should be the same as in POSIX.

I think this sabotages -s .  POSIX's -H, -L, -P options are still
missing.

Index: Doc/Zsh/mod_files.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Zsh/mod_files.yo,v
retrieving revision 1.2
diff -u -r1.2 mod_files.yo
--- Doc/Zsh/mod_files.yo	3 Jul 2007 17:06:04 -0000	1.2
+++ Doc/Zsh/mod_files.yo	21 Aug 2007 22:47:47 -0000
@@ -6,12 +6,12 @@
 
 startitem()
 findex(chgrp)
-item(tt(chgrp) [ tt(-Rs) ] var(group) var(filename) ...)(
+item(tt(chgrp) [ tt(-hRs) ] var(group) var(filename) ...)(
 Changes group of files specified.  This is equivalent to tt(chown) with
 a var(user-spec) argument of `tt(:)var(group)'.
 )
 findex(chown)
-item(tt(chown) [ tt(-Rs) ] var(user-spec) var(filename) ...)(
+item(tt(chown) [ tt(-hRs) ] var(user-spec) var(filename) ...)(
 Changes ownership and group of files specified.
 
 The var(user-spec) can be in four forms:
@@ -33,6 +33,9 @@
 appropriate) or a decimal user ID (group ID).  Interpretation as a name
 takes precedence, if there is an all-numeric username (or group name).
 
+If the target is a symbolic link, the tt(-h) option causes tt(chown) to set
+the ownership of the link instead of its target.
+
 The tt(-R) option causes tt(chown) to recursively descend into directories,
 changing the ownership of all files in the directory after
 changing the ownership of the directory itself.
Index: Src/Modules/files.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/Modules/files.c,v
retrieving revision 1.17
diff -u -r1.17 files.c
--- Src/Modules/files.c	6 Jul 2007 21:52:40 -0000	1.17
+++ Src/Modules/files.c	21 Aug 2007 22:47:48 -0000
@@ -593,6 +593,19 @@
 {
     struct chownmagic *chm = magic;
 
+    if(chown(rp, chm->uid, chm->gid)) {
+	zwarnnam(chm->nam, "%s: %e", arg, errno);
+	return 1;
+    }
+    return 0;
+}
+
+/**/
+static int
+chown_dolchown(char *arg, char *rp, UNUSED(struct stat const *sp), void *magic)
+{
+    struct chownmagic *chm = magic;
+
     if(lchown(rp, chm->uid, chm->gid)) {
 	zwarnnam(chm->nam, "%s: %e", arg, errno);
 	return 1;
@@ -600,6 +613,7 @@
     return 0;
 }
 
+
 /**/
 static unsigned long getnumeric(char *p, int *errp)
 {
@@ -684,7 +698,8 @@
     }
     free(uspec);
     return recursivecmd(nam, 0, OPT_ISSET(ops,'R'), OPT_ISSET(ops,'s'),
-	args + 1, chown_dochown, recurse_donothing, chown_dochown, &chm);
+	args + 1, OPT_ISSET(ops, 'h') ? chown_dolchown : chown_dochown, recurse_donothing,
+	OPT_ISSET(ops, 'h') ? chown_dolchown : chown_dochown, &chm);
 }
 
 /* module paraphernalia */
@@ -696,8 +711,8 @@
 #endif
 
 static struct builtin bintab[] = {
-    BUILTIN("chgrp", 0, bin_chown, 2, -1, BIN_CHGRP, "Rs",    NULL),
-    BUILTIN("chown", 0, bin_chown, 2, -1, BIN_CHOWN, "Rs",    NULL),
+    BUILTIN("chgrp", 0, bin_chown, 2, -1, BIN_CHGRP, "hRs",    NULL),
+    BUILTIN("chown", 0, bin_chown, 2, -1, BIN_CHOWN, "hRs",    NULL),
     BUILTIN("ln",    0, bin_ln,    1, -1, BIN_LN,    LN_OPTS, NULL),
     BUILTIN("mkdir", 0, bin_mkdir, 1, -1, 0,         "pm:",   NULL),
     BUILTIN("mv",    0, bin_ln,    2, -1, BIN_MV,    "fi",    NULL),



^ permalink raw reply	[relevance 4%]

* PATCH: _git (large)
@ 2007-09-25 15:59  1% Clint Adams
  0 siblings, 0 replies; 200+ results
From: Clint Adams @ 2007-09-25 15:59 UTC (permalink / raw)
  To: zsh-workers

This reduces the diff between ours and Nikolai's _git to about 21K.
Hopefully it doesn't break everything.

Index: Completion/Unix/Command/_git
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/Unix/Command/_git,v
retrieving revision 1.22
diff -u -r1.22 _git
--- Completion/Unix/Command/_git	23 Sep 2007 19:44:06 -0000	1.22
+++ Completion/Unix/Command/_git	25 Sep 2007 15:55:21 -0000
@@ -1,77 +1,87 @@
-#compdef git git-annotate git-apply git-checkout-index git-clean git-commit-tree git-describe git-hash-object git-index-pack git-init-db git-instaweb git-merge-index git-merge-tree git-mktag git-mktree git-pack-objects git-prune-packed git-read-tree git-remote git-rev-parse git-unpack-objects git-update-index git-write-tree git-cat-file git-diff-index git-diff-files git-diff-stages git-diff-tree git-fsck-objects git-ls-files git-ls-tree git-quiltimport git-merge-base git-name-rev git-rev-list git-show-index git-tar-tree git-unpack-file git-var git-verify-pack git-clone-pack git-fetch-pack git-http-fetch git-local-fetch git-peek-remote git-receive-pack git-send-pack git-ssh-fetch git-ssh-upload git-update-server-info git-upload-pack git-add git-am git-applymbox git-bisect git-branch git-checkout git-cherry-pick git-clone git-commit git-diff git-fetch git-format-patch git-grep git-log git-ls-remote git-merge git-mv git-octopus git-pull git-push git-rebase git-repack git-rerere git-reset git-resolve git-revert git-shortlog git-show-branch git-status git-verify-tag git-whatchanged git-applypatch git-archimport git-archive git-convert-objects git-cvsimport git-lost-found git-merge-one-file git-prune git-relink git-svnimport git-symbolic-ref git-tag git-update-ref git-check-ref-format git-cherry git-count-objects git-daemon git-get-tar-commit-id git-mailinfo git-mailsplit git-patch-id git-request-pull git-rm git-send-email git-stripspace
+#compdef git git-add git-am git-annotate git-apply git-applymbox git-applypatch git-archimport git-archive git-bisect git-blame git-branch git-cat-file git-check-ref-format git-checkout git-checkout-index git-cherry git-cherry-pick git-clean git-clone git-clone-pack git-commit git-commit-tree git-convert-objects git-count-objects git-cvsexportcommit git-cvsimport git-daemon git-describe git-diff git-diff-files git-diff-index git-diff-stages git-diff-tree git-fast-import git-fetch git-fetch-pack git-fmt-merge-msg git-format-patch git-fsck git-gc git-get-tar-commit-id git-grep git-hash-object git-http-fetch git-http-push git-imap-send git-index-pack git-init git-instaweb git-local-fetch git-log git-lost-found git-ls-files git-ls-remote git-ls-tree git-mailinfo git-mailsplit git-merge git-merge-base git-merge-file git-merge-index git-merge-one-file git-merge-tree git-mktag git-mktree git-mv git-name-rev git-octopus git-pack-objects git-pack-redundant git-pack-refs git-patch-id git-peek-remote git-prune git-prune-packed git-pull git-push git-quiltimport git-read-tree git-rebase git-receive-pack git-reflog git-relink git-remote git-repack gut-runstatus git-config git-request-pull git-rerere git-reset git-rev-list git-rev-parse git-revert git-rm git-send-email git-send-pack git-shortlog git-show git-show-branch git-show-index git-ssh-fetch git-ssh-upload git-status git-stripspace git-svn git-svnimport git-symbolic-ref git-tag git-tar-tree git-unpack-file git-unpack-objects git-update-index git-update-ref git-update-server-info git-upload-pack git-var git-verify-pack git-verify-tag git-whatchanged git-write-tree
 
 # Commands not completed:
-# git-sh-setup
-# git-shell
+# git-cvsserver
 # git-parse-remote 
+# git-shell
+# git-sh-setup
 
-# TODO: most commands need a valid git repository to run, so add a check for it
-# so that we can make our handling a little bit cleaner (need to deal with
-# GIT_DIR=... stuff as pre-command modifier)
+# TODO: All if (( words[(I)-option] )) should be turned into
+# if (( words[(I)-option] > 0 && words[(I)-option] < CURRENT )), as the user
+# may go back and want to add an option before -option and in that case should
+# be able to complete whatever may come before -option.
 
 # TODO: suggested zstyles:
 #
 # zstyle ':completion::*:git-{name-rev,add,rm}:*' ignore-line true
 
-typeset -g nul_arg=
+declare -g nul_arg=
 
 nul_arg='-z[use NUL termination on output]'
 
-typeset -ga diff_args
+declare -g abbrev_arg
+
+abbrev_arg='--abbrev=-[set minimum SHA1 display-length]: :_guard "[[\:digit\:]]##" length'
+
+declare -g find_copies_harder_arg=
+
+find_copies_harder_arg='--find-copies-harder[try harder to find copies]'
+
+declare -g diff_l_arg
+
+diff_l_arg='-l-[limit number of rename/copy targets to run]: :_guard "[[\:digit\:]]#" number'
+
+declare -ga diff_args
 
-# TODO: -s and --diff-filter are undocumented
 diff_args=(
-  '--abbrev-[Instead of showing the full object name, show only handful hexdigits prefix.]: :_guard "[[\:digit\:]]#" number'
-  '--binary[In addition to --full-index, output "binary diff" that can be applied with "git apply".]'
-  '(-c --cached)'{-c,--cached}'[show cached files in the output]'
-  '--color-words[Show colored word diff, i.e. color words which have changed.]'
-  '--color[Show colored diff.]'
-  '--diff-filter=-[filter to apply to diff]'
-  '--find-copies-harder[try harder to find copies]'
-  '--name-only[show only names of changed files]'
-  '--name-status[show only names and status of changed files]'
-  '--no-color[Turn off colored diff, even when the configuration file gives the default to color output.]'
-  '--no-renames[Turn off rename detection, even when the configuration file gives the default to do so.]'
-  '--numstat[Similar to --stat, but shows numbers in decimal notation and pathname without abbreviation.]'
-  '--patch-with-raw[Synonym for "-p --raw".]'
-  '--patch-with-stat[Synonym for "-p --stat".]'
-  '--pickaxe-all[when -S finds a change, show all changes in that changeset]'
-  '--pickaxe-regex[Make the <string> not a plain string but an extended POSIX regex to match.]'
-  '--raw[Generate the raw format.]'
-  '--stat[Generate a diffstat.]'
-  '--summary[Output a condensed summary of extended header information such as creations, renames and mode changes.]'
-  '--text[Treat all files as text.]'
-  '(-1 --base)'{-1,--base}'[Diff against the base version]'
-  '(-2 --base)'{-2,--ours}'[Diff against our branch version]'
-  '(-3 --base)'{-3,--theirs}'[Diff against their branch version]'
-  '-0[omit diff output for unmerged entries and just show "Unmerged".]'
-  '-a[Shorthand for "--text".]'
-  '--full-index[Instead of the first handful characters, show full object name of pre- and post-image blob on the "index" line when generating a patch format output.]'
+  '--diff-filter=-[select certain kinds of files for diff]: :_guard "[ACDMRTUXB*]#" kinds'
+  $find_copies_harder_arg
+  '(--name-only --name-status -u -p --stat --patch-with-stat --patch-with-raw --raw --numstat --shortstat --summary)--name-only[show only names of changed files]'
+  '(--name-only --name-status -u -p --stat --patch-with-stat --patch-with-raw --raw --numstat --shortstat --summary)--name-status[show only names and status of changed files]'
+  '(--name-only --name-status -u -p --stat --patch-with-stat --patch-with-raw --raw --numstat --shortstat --summary)'{-u,-p}'[generate diff in patch format]'
+  '(--name-only --name-status -u -p --stat --patch-with-stat --patch-with-raw --raw --numstat --shortstat --summary)--stat=-[generate a diffstat instead of a patch]:: :__git_guard_diff-stat-width' \
+  '(--name-only --name-status -u -p --stat --patch-with-stat --patch-with-raw --raw --numstat --shortstat --summary)--patch-with-stat[generate patch and prepend its diffstat]' \
+  '(--name-only --name-status -u -p --stat --patch-with-stat --patch-with-raw --raw --numstat --shortstat --summary)--patch-with-raw[generate patch but also keep the default raw diff output]' \
+  '(--name-only --name-status -u -p --stat --patch-with-stat --patch-with-raw --raw --numstat --shortstat --summary)--raw[generate the default raw diff output]' \
+  '(--name-only --name-status -u -p --stat --patch-with-stat --patch-with-raw --raw --numstat --shortstat --summary)--numstat[generate a more machine-friendly diffstat]' \
+  '(--name-only --name-status -u -p --stat --patch-with-stat --patch-with-raw --raw --numstat --shortstat --summary)--shortstat[generate a summary diffstat]' \
+  '(--name-only --name-status -u -p --stat --patch-with-stat --patch-with-raw --raw --numstat --shortstat --summary)--summary[generate a condensed summary of extended header information]' \
   '-B-[break complete rewrite changes into pairs of given size]: :_guard "[[\:digit\:]]#" size'
-  '-C-[detect copies as well as renames with given score]: :_guard "[[\:digit\:]]#" size'
-  '-l-[number of rename/copy targets to run]: :_guard "[[\:digit\:]]#" number'
-  '-M-[detect renames with given score]: :_guard "[[\:digit\:]]#" size'
+  '-C-[detect copies as well as renames with given scope]: :_guard "[[\:digit\:]]#" size'
+  $diff_l_arg
+  '-M-[detect renames with given scope]: :_guard "[[\:digit\:]]#" size'
   '-O-[output patch in the order of glob-pattern lines in given file]:file:_files'
-  '-p[generate diff in patch format]'
-  '-q[Remain silent even on nonexistent files]'
   '-R[do a reverse diff]'
   '-S-[look for differences that contain the given string]:string'
-  '-s[do not produce any output]'
-  '-u[synonym for -p]'
+  '--pickaxe-all[when -S finds a change, show all changes in that changeset]'
+  '--pickaxe-regex[treat argument of -S as regular expression]'
+  '--full-index[show full object name of pre- and post-image blob]'
+  '(--full-index)--binary[in addition to --full-index, output binary diffs for git-apply]'
+  '(        --no-color --color-words)--color[show colored diff]'
+  '(--color            --color-words)--no-color[turn off colored diff]'
+  '(--color --no-color              )--color-words[show colored-word diff]'
+  '--no-renames[turn off rename detection]'
+  '--check[warn if changes introduce trailing whitespace or space/tab indents]'
+  '(-a --text)'{-a,--text}'[treat all files as text]'
+  '(-b --ignore-space-change -w --ignore-all-space)'{-b,--ignore-space-change}'[ignore changes in amount of white space]'
+  '(-b --ignore-space-change -w --ignore-all-space)'{-w,--ignore-all-space}'[ignore white space when comparing lines]'
+  $abbrev_arg
   $nul_arg
+  '--exit-code[report exit code 1 if differences, 0 otherwise]'
+  '(--exit-code)--quiet[disable all output]'
 )
 
-typeset -g pretty_arg=
+declare -g pretty_arg=
 pretty_arg='--pretty=-[pretty print commit messages]::pretty print:((raw\:"the raw commits"
                                                                      medium\:"most parts of the messages"
                                                                      short\:"few headers and only subject of messages"
                                                                      full\:"all parts of the commit messages"
                                                                      oneline\:"commit-ids and subject of messages"))'
 
-typeset -g exec_arg=
+declare -g exec_arg=
 exec_arg='--exec=-[specify path to git-upload-pack on remote side]:remote path'
 
-typeset -ga fetch_args
+declare -ga fetch_args
 
 fetch_args=(
   '-a[fetch all objects]'
@@ -79,24 +89,86 @@
   '--recover[recover from a failed fetch]'
   '-t[fetch trees associated with commit objects]'
   '-v[show what is downloaded]'
-  '-w[write out the given commit-id to the given file]:new file'
+  '-w[write commit-id into the filename under "$GIT_DIR/refs/<filename>"]:filename'
 )
 
-typeset -ga merge_strategy
+declare -g merge_strategy_arg
 
-merge_strategy=(
-  '(-s --strategy)'{-s,--strategy=}'[use given merge strategy]:strategy:(octopus recursive resolve stupid)')
+merge_strategy_arg='*'{-s,--strategy=-}'[use given merge strategy]:merge strategy:__git_merge_strategies'
 
-typeset -ga force_ref_arg
+declare -ga merge_args
+
+# TODO: Add descriptions to strategies (stupid is undocumented).
+merge_args=(
+  '(-n --no-summary)'{-n,--no-summary}'[do not show diffstat at the end of the merge]'
+  '--no-commit[perform the merge but do not autocommit]'
+  '--squash[merge, but do not make a commit]'
+  $merge_strategy_arg
+)
+
+declare -ga force_ref_arg
 
 force_ref_arg=('(-f --force)'{-f,--force}'[allow refs that are not ancestors to be updated]')
 
-typeset -ga tags_fetch_arg
+declare -ga tags_fetch_arg
+
+tags_fetch_arg=(
+  '(--no-tags -t --tags)--no-tags[disable automatic tag following]'
+  '(--no-tags -t --tags)'{-t,--tags}'[fetch remote tags]'
+)
+
+
+author_conversion_file_arg_spec='[specify author-conversion file]:author-conversion file:_files'
+
+declare -g author_conversion_file_arg=
+author_conversion_file_arg='-A'$author_conversion_file_arg_spec
+
+declare -g long_author_conversion_file_arg=
+long_author_conversion_file_arg='--authors-file=-'$author_conversion_file_arg_spec
+
+declare -g verbose_arg=
+verbose_arg='-v[produce verbose output]'
+
+declare -g help_arg=
+help_arg='-h[display usage information]'
+
+declare -ga common_fetch_args
+
+common_fetch_args=(
+  '(-a --append)'{-a,--append}'[append ref names and object names of fetched refs to "$GIT_DIR/FETCH_HEAD"]'
+  '--upload-pack[pass --exec=<upload-pack> to git-fetch-pack]:remote pack'
+  $force_ref_arg
+  $tags_fetch_arg
+  '(-k --keep)'{-k,--keep}'[keep downloaded pack]'
+  '(-u --update-head-ok)'{-u,--update-head-ok}'[allow updates of current branch head]'
+  '--depth=-[deepen the history of a shallow repository by the given number of commits]: :_guard "[[\:guard\:]]" "depth"'
+)
+
+declare -ga common_apply_args
 
-tags_fetch_arg=('(-t --tags)'{-t,--tags}'[fetch remote tags]')
+common_apply_args=(
+  '--whitespace=-[detect a new or modified line that ends with trailing whitespaces]: :__git_apply_whitespace_strategies'
+  '-p-[remove N leading slashes from traditional diff paths]: :_guard  "[[\:digit\:]]#" number'
+  '-C-[ensure at least N lines of context match before and after each change]: :_guard  "[[\:digit\:]]#" number')
+
+declare -g template_arg=
+
+template_arg='--template=-[directory to use as a template for the object database]:directory:_directories'
+
+declare -g shared_arg=
+
+shared_arg='--shared=-[share repository amongst several users]::permissions:__git_repository_permissions'
+
+__git_zstyle_default () {
+  zstyle -t $1 $2
+  if (( $status == 2 )); then
+    zstyle $*
+  fi
+}
 
 # TODO: either skip uninteresting commands or skip the description - the list
 # is just too long
+(( $+functions[_git_commands] )) ||
 _git_commands () {
   local -a commands
 
@@ -250,32 +322,54 @@
     '::revision:__git_revisions' && ret=0
 }
 
+(( $+functions[_git-apply] )) ||
 _git-apply () {
   _arguments \
     $nul_arg \
-    '*--apply[apply patches that would otherwise not be applied]' \
-    '*--check[check if patches are applicable]' \
-    '*--exclude=-[skip files matching specified pattern]:file pattern' \
-    '*--index[make sure that the patch is applicable to the index]' \
-    '*--index-info[output information about original version of a blob if available]' \
-    '*--no-merge[do not use merge behavior]' \
-    '*--numstat[same as --stat but in decimal notation and complete pathnames]' \
-    '*--stat[output diffstat for the input]' \
-    '*--summary[output summary of git-diff extended headers]' \
-    '*:file:_files' && ret=0
+    '--allow-binary-replacement[allow binary files to be patched]' \
+    '--apply[apply patches that would otherwise not be applied]' \
+    '--cached[apply patches without touching the working tree]' \
+    '--check[check if patches are applicable (turns off "apply")]' \
+    '--exclude=-[skip files matching specified pattern]:pattern' \
+    '--inaccurate-eof[work around missing-new-line-at-EOF bugs]' \
+    '--index[make sure that the patch is applicable to the index]' \
+    '--index-info[output information about original version of a blob if available]' \
+    '--no-add[ignore additions made by the patch]' \
+    '--numstat[same as --stat but in decimal notation and complete pathnames (turns off "apply")]' \
+    '(-R --reverse)'{-R,--reverse}'[apply patches in reverse]' \
+    '--reject[apply as much as possible, and leave rejected hunks in .rej files]' \
+    '--stat[output diffstat for the input (turns off "apply")]' \
+    '--summary[output summary of git-diff extended headers (turns off "apply")]' \
+    '--unidiff-zero[disable unified-diff-context check]' \
+    '(-v --verbose)'{-v,--verbose}'[report progress to stderr]' \
+    $common_apply_args \
+    '*::patch:_files' && ret=0
+}
+
+# NOTE: Documentation mentions options that don’t exist anymore, for example,
+# --since, and shows -C twice!aa
+(( $+functions[_git-blame] )) ||
+_git-blame () {
+  _git-annotate
 }
 
+(( $+functions[_git-checkout-index] )) ||
 _git-checkout-index () {
   _arguments -S \
+    $nul_arg \
     '(-a --all :)'{-a,--all}'[check out all files in the index]' \
     '(-f --force)'{-f,--force}'[force overwrite of existing files]' \
     '(-n --no-create)'{-n,--no-create}'[do not checkout new files]' \
+    '--stage=-[check out files from named stage]:stage:(1 2 3 all)' \
+    '--stdin[read list of paths from the standard input]' \
+    '--temp[write the content to temporary files]' \
+    '--prefix=-[prefix to use when creating files]:directory:_directories' \
     '(-q --quiet)'{-q,--quiet}'[do not complain about existing files or missing files]' \
     '(-u --index)'{-u,--index}'[update stat information in index]' \
-    '--prefix=-[prefix to use when creating files]:directory:_directories' \
-    '*:file:_files' && ret=0
+    '*::file:__git_cached_files' && ret=0
 }
 
+(( $+functions[_git-clean] )) ||
 _git-clean () {
   _arguments \
     '-d[remove untracked directories]' \
@@ -285,6 +379,7 @@
     '(-X -x)-X[remove only files ignored by git]' && ret=0
 }
 
+(( $+functions[_git-commit-tree] )) ||
 _git-commit-tree () {
   if (( CURRENT == 2 )); then
     __git_trees && ret=0
@@ -297,8 +392,9 @@
   fi
 }
 
+(( $+functions[_git-hash-object] )) ||
 _git-hash-object () {
-  _arguments \
+  _arguments -S \
     '(:)--stdin[read object from standard input]' \
     '-t[the type of object to create]:object type:((blob\:"a blob of data"
                                                     commit\:"a tree with parent commits"
@@ -308,24 +404,61 @@
     '(--stdin):file:_files' && ret=0
 }
 
+(( $+functions[_git-index-pack] )) ||
 _git-index-pack () {
+  local -a stdin_arguments
+
+  if (( words[(I)--stdin] )); then
+    stdin_arguments=(
+      '--fix-thin[record deltified objects, based on objects not included]'
+      '--keep=-[create .keep file]::reason:')
+  fi
+
   _arguments \
+    '-v[report progress to stderr]' \
     '-o[write generated pack index into specified file]:file:_files' \
+    '--stdin[read pack from stdin and instead write to specified file]' \
+    $stdin_arguments \
     ':pack file:_files -g "*.pack"' && ret=0
 }
 
-_git-init-db () {
+(( $+functions[_git-init] )) ||
+_git-init () {
+  _arguments \
+    $shared_arg \
+    $template_arg && ret=0
+}
+
+(( $+functions[_git-merge-file] )) ||
+_git-merge-file () {
+  integer n_labels=${#${(M)words[1,CURRENT-1]:#-L}}
+  local label_argument
+
+  if (( n_labels < 3 )) || [[ $words[CURRENT-1] == -L ]]; then
+    local -a ordinals
+
+    ordinals=(first second third)
+
+    label_argument="*-L[label to use for the $ordinals[n_labels+1] file]:label"
+  fi
+
   _arguments \
-    '--template=-[directory to use as a template for the object database]:directory:_directories' && ret=0
+    $label_argument \
+    '(-p --stdout)'{-p,--stdout}'[send merged file to standard output instead of overwriting first file]' \
+    '(-q --quiet)'{-q,--quiet}'[do not warn about conflicts]' \
+    ':current file:_files' \
+    ':base file:_files' \
+    ':other file:_files' && ret=0
 }
 
+(( $+functions[_git-merge-index] )) ||
 _git-merge-index () {
   if (( CURRENT > 2 )) && [[ $words[CURRENT-1] != -[oq] ]]; then
     _arguments -S \
       '(:)-a[run merge against all files in the index that need merging]' \
       '*:index file:__git_cached_files' && ret=0
   else
-    typeset -a arguments
+    declare -a arguments
 
     (( CURRENT == 2 )) && arguments+='-o[skip failed merges]'
     (( CURRENT == 2 || CURRENT == 3 )) && arguments+='(-o)-q[do not complain about failed merges]'
@@ -335,6 +468,8 @@
   fi
 }
 
+# TODO: Shouldn’t we add a __git_branches type completion?
+(( $+functions[_git-merge-tree] )) ||
 _git-merge-tree () {
   _arguments \
     ':base-tree:__git_tree_ishs' \
@@ -342,50 +477,117 @@
     ':branch 2:__git_tree_ishs' && ret=0
 }
 
+(( $+functions[_git-mktag] )) ||
 _git-mktag () {
   _message 'no arguments allowed; only accepts tags on standard input'
 }
 
+(( $+functions[_git-mktree] )) ||
 _git-mktree () {
   _arguments \
-    $nul_arg && ret=0
+    '-z[read NUL-terminated ls-tree -z output]' && ret=0
 }
 
+(( $+functions[_git-pack-objects] )) ||
 _git-pack-objects () {
   _arguments \
-    '--depth=-[maximum delta depth]' \
+    '(--revs)--all[include all refs as well as revisions already specified]' \
+    '--all-progress[force progress output, even during write-out phase]' \
+    '--delta-base-offset[use delta-base-offset packing]' \
+    '--depth=-[maximum delta depth]: :_guard "[[\:digit\:]]#" number' \
     '--incremental[ignore objects that have already been packed]' \
+    '--no-reuse-delta[do not reuse existing deltas, but compute them from scratch]' \
     '--non-empty[only create a package if it contains at least one object]' \
     '--local[similar to --incremental, but only ignore unpacked non-local objects]' \
-    '--window=-[number of objects to use per delta compression]' \
+    '--progress[force progress output]' \
+    '--revs[read revision arguments from standard input]' \
     '(:)--stdout[write the pack to standard output]' \
-    ':base-name:_files' && ret=0
+    '-q[do not report progress]' \
+    '(--revs)--unpacked[limit objects to pack to those not already packed]' \
+    '--window=-[number of objects to use per delta compression]: :_guard "[[\:digit\:]]#" number' \
+    '(--stdout):base-name:_files' && ret=0
 }
 
+(( $+functions[_git-prune-packed] )) ||
 _git-prune-packed () {
-  _arguments \
-    '-n[only list the objects that would be removed]' && ret=0
+  _arguments -S \
+    '-n[only list the objects that would be removed]' \
+    '-q[suppress progress output]' && ret=0
 }
 
+(( $+functions[_git-read-tree] )) ||
 _git-read-tree () {
-  if (( CURRENT == 2 )); then
-    _arguments \
-      '--reset[perform a merge, not just a read, ignoring unmerged entries]' \
-      '--trivial[only perform trivial merges]' \
-      '-m[perform a merge, not just a read]' \
-      ':tree-ish:__git_tree_ishs' && ret=0
-  elif [[ $words[2] == (-m|--reset) ]]; then
-    _arguments \
-      '-i[update only the index; ignore changes in work tree]' \
-      '-u[update the work tree after successful merge]' \
-      '2:first tree-ish to be read/merged:__git_tree_ishs' \
-      '3:second tree-ish to be read/merged:__git_tree_ishs' \
-      '4:third tree-ish to be read/merged:__git_tree_ishs' && ret=0
-  else
-    _message 'no more arguments'
+  local aggressive_arg
+
+  if (( words[(I)-m] )); then
+    aggressive_arg='--aggressive[try harder to resolve merge conflicts]'
   fi
+
+  local -a ui_args
+
+  if (( words[(I)(-m|--reset|--prefix)] )); then
+    ui_args=(
+      '(   -i)-u[update the work tree after successful merge]'
+      '(-u   )-i[update only the index; ignore changes in work tree]')
+  fi
+
+  local exclude_per_directory_arg
+
+  if (( words[(I)-u] )); then
+    exclude_per_directory_arg='--exclude-per-directory=-[specify .gitignore file]:.gitignore file:_files'
+  fi
+
+  _arguments -A '-*' \
+    '(   --reset --prefix)-m[perform a merge, not just a read]' \
+    '(-m         --prefix)--reset[perform a merge, not just a read, ignoring unmerged entries]' \
+    '(-m --reset          2 3)--prefix=-[read the contents of specified tree-ish under specified directory]:prefix:_directories -r ""' \
+    $aggressive_arg \
+    $ui_args \
+    $exclude_per_directory_arg \
+    '1:first tree-ish to be read/merged:__git_tree_ishs' \
+    '2:second tree-ish to be read/merged:__git_tree_ishs' \
+    '3:third tree-ish to be read/merged:__git_tree_ishs' && ret=0
 }
 
+# TODO: Complete value regex somehow?
+(( $+functions[_git-config] )) ||
+_git-config () {
+  local name_arg
+
+  if (( words[(I)--get-regexp] )); then
+    name_arg=':name regex'
+  elif (( words[(I)--get(-all|)] )); then
+    name_arg=':name:__git_config_gettable_name'
+  else
+    name_arg=':name:__git_config_name'
+  fi
+
+  _arguments -A '--*' \
+    '(         --global)--system[use system-wide config file]' \
+    '(--system         )--global[use user-global config file]' \
+    '(      --bool)--int[setting is an integer]' \
+    '(--int       )--bool[setting is a boolean]' \
+    $name_arg \
+    ":value:__git_config_values $words[CURRENT-1]" \
+    '::value regex' \
+    - '(actions)' \
+    '(: -)--rename-section[rename the given section]:section:__git_config_section_names:new name'  \
+    '(: -)--remove-section[remove the given section]:section:__git_config_section_names' \
+    '(3 -)--add[add new value without altering any existing ones]' \
+    '(2 -)--unset[remove the first matching value of the key]' \
+    '(2 -)--unset-all[remove all matching values of the key]' \
+    '(2 -)--get[get the first matching value of the key]' \
+    '(2 -)--get-all[get all matching values of the key]' \
+    '(2 -)--get-regexp[like "--get-all", but interpret "name" as a regular expression]' \
+    '(-)--replace-all[replace all values of the given key]' \
+    '(: --int --bool)'{-l,--list}'[list all variables set in config file]' && ret=0
+}
+
+# NOTE: --track is undocumented.
+# TODO: --track, -t, --master, and -m should take remote branches, I guess.
+# NOTE: --master is undocumented.
+# NOTE: --fetch is undocumented.
+(( $+functions[_git-remote] )) ||
 _git-remote () {
   local curcontext=$curcontext state line
   declare -A opt_args
@@ -427,57 +629,65 @@
   esac
 }
 
+(( $+functions[_git-unpack-objects] )) ||
 _git-unpack-objects () {
   _arguments \
     '-n[only list the objects that would be unpacked]' \
-    '-q[run quietly]' && ret=0
+    '-q[run quietly]' \
+    '-r[try recovering objects from corrupt packs]' && ret=0
 }
 
+(( $+functions[_git-update-index] )) ||
 _git-update-index () {
-  local -a refreshables
+  local nul_arg
 
-  if (( $words[(I)--refresh] )); then
-    refreshables=(
-      '--ignore-missing[ignore missing files when refreshing the index]'
-      '--unmerged[if unmerged changes exists, ignore them instead of exiting]'
-      '-q[run quietly]')
+  if (( words[(I)--stdin] )); then
+    nul_arg='-z[paths are separated with NUL instead of LF for --stdin]'
   fi
 
   _arguments -S \
     $refreshables \
     '--add[add files not already in the index]' \
-    '--cacheinfo[insert information directly into the cache]: :_guard "[0-7]#" "octal file mode": :_guard "[[\:xdigit\:]]#" "object id":file:_files' \
+    '(         --force-remove)--remove[remove files that are in the index but are missing from the work tree]' \
+    '(--remove               )--force-remove[remove files from both work tree and the index]' \
+    '(-q --unmerged --ignore-missing)--refresh[refresh the index]' \
+    '-q[run quietly]' \
+    '--unmerged[if unmerged changes exists, ignore them instead of exiting]' \
+    '--ignore-missing[ignore missing files when refreshing the index]' \
+    '*--cacheinfo[insert information directly into the cache]: :_guard "[0-7]#" "octal file mode": :_guard "[[\:xdigit\:]]#" "object id":file:_files' \
+    '(: -)--index-info[read index information from stdin.]' \
     '--chmod=-[set the execute permissions on the updated files]:permission:((-x\:executable +x\:"not executable"))' \
-    '(--remove)--force-remove[remove files from both work tree and the index]' \
-    '--index-info[read index information from stdin.]' \
+    '(                   --no-assume-unchanged)--assume-unchanged[set the "assume unchanged" bit for the given paths]' \
+    '(--assume-unchanged                      )--no-assume-unchanged[unset the "assume unchanged" bit for the given paths]' \
+    '(-)'{-g,--again}'[run git-update-index on differing index entries]' \
+    '(-)--unresolve[restore "unmerged" or "needs updating" state of files]' \
     '--info-only[only insert files object-IDs into index]' \
-    '--refresh[refresh the index]' \
-    '(--force-remove)--remove[remove files that are in the index but are missing from the work tree]' \
     '--replace[replace files already in the index if necessary]' \
-    '--stdin[read list of paths from standard input]' \
+    '(: -)--stdin[read list of paths from standard input]' \
     '--verbose[report what is being added and removed from the index]' \
-    '-z[paths are separated with NUL instead of LF for --stdin]' \
-    '*:file:_files' && ret=0
+    $nul_arg \
+    '*::file:_files' && ret=0
 }
 
+(( $+functions[_git-write-tree] )) ||
 _git-write-tree () {
   _arguments \
-    '--missing-ok[ignore objects in the index that are missing in the object database]' && ret=0
+    '--missing-ok[ignore objects in the index that are missing in the object database]'
+    '--prefix=-[write tree representing given sub-directory]:sub-directory:_directories -r ""' && ret=0
 }
 
+(( $+functions[_git-cat-file] )) ||
 _git-cat-file () {
-  if (( CURRENT == 2 )); then
-    _arguments \
-      '-t[show the type of the given object]' \
-      '-s[show the size of the given object]' \
-      '*: :_values "object type" blob commit tag tree' && ret=0
-  elif (( CURRENT == 3 )); then
-    __git_objects && ret=0
-  else
-    _message 'no more arguments'
-  fi
+  _arguments \
+    '(   -s -e -p 1)-t[show the type of the given object]' \
+    '(-t    -e -p 1)-s[show the size of the given object]' \
+    '(-t -s    -p 1)-e[exit with zero status if object exists]' \
+    '(-t -s -e    1)-p[pretty-print the given object]' \
+    '(-t -s -e -p  ):object type:(blob commit tag tree)' \
+    '(-t -s -e -p  ):object:__git_objects' && ret=0
 }
 
+(( $+functions[_git-describe] )) ||
 _git-describe () {
   _arguments \
     $abbrev_arg \
@@ -489,6 +699,8 @@
     '*:committish:__git_committishs' && ret=0
 }
 
+# TODO: Use __git_modified_files instead?
+(( $+functions[_git-diff-index] )) ||
 _git-diff-index () {
   _arguments -S \
     $diff_args \
@@ -498,18 +710,25 @@
     '*::index file:__git_cached_files' && ret=0
 }
 
+# TODO: Use __git_modified_files instead?
+(( $+functions[_git-diff-files] )) ||
 _git-diff-files () {
   _arguments \
     $diff_args \
-    '(-0 -1 -2 -3 --base --ours --theirs -c --cc)-0[omit diff output for unmerged entries]' \
-    '(-0 -1 -2 -3 --base --ours --theirs -c --cc)'{-1,--base}'[diff against "base" version]' \
-    '(-0 -1 -2 -3 --base --ours --theirs -c --cc)'{-2,--ours}'[diff against "our branch" version]' \
-    '(-0 -1 -2 -3 --base --ours --theirs -c --cc)'{-3,--theirs}'[diff against "their branch" version]' \
-    '(-0 -1 -2 -3 --base --ours --theirs -c --cc)'{-c,--cc}'[compare "our branch", "their branch" and working tree files]' \
+    '(-0 -1 -2 -3 --base --ours --theirs -c --cc --no-index)-0[omit diff output for unmerged entries]' \
+    '(-0 -1 -2 -3 --base --ours --theirs -c --cc --no-index)'{-1,--base}'[diff against "base" version]' \
+    '(-0 -1 -2 -3 --base --ours --theirs -c --cc --no-index)'{-2,--ours}'[diff against "our branch" version]' \
+    '(-0 -1 -2 -3 --base --ours --theirs -c --cc --no-index)'{-3,--theirs}'[diff against "their branch" version]' \
+    '(-0 -1 -2 -3 --base --ours --theirs -c --cc --no-index)'{-c,--cc}'[compare "our branch", "their branch" and working tree files]' \
+    '(-0 -1 -2 -3 --base --ours --theirs -c --cc --no-index --exit-code *)--no-index[compare given files / directories]' \
     '-q[remain silent even on nonexisting files]' \
+    '1:file:_files' \
+    '2:file:_files' \
     '*::file:_files' && ret=0
 }
 
+# TODO: Use __git_modified_files instead?
+(( $+functions[_git-diff-stages] )) ||
 _git-diff-stages () {
   _arguments \
     $diff_args \
@@ -518,19 +737,22 @@
     '*::index file:_files' && ret=0
 }
 
+# TODO: Use __git_modified_files instead?
+(( $+functions[_git-diff-tree] )) ||
 _git-diff-tree () {
   local curcontext=$curcontext state line
-  typeset -A opt_args
+  declare -A opt_args
 
   _arguments -C -S \
     $diff_args \
     $pretty_arg \
+    '--encoding=-[re-code commit log-message in given encoding]::log-message encoding:__git_encodings' \
     '--no-commit-id[skip output of commit IDs]' \
     '--root[show diff against the empty tree]' \
     '--stdin[read commit and tree information from standard input]' \
     '-m[show merge commits]' \
-    '(-t)-r[recurse into subdirectories]' \
-    '-t[show tree entry itself as well as subtrees (implies -r)]' \
+    '-r[recurse into subdirectories]' \
+    '(-r)-t[show tree entry itself as well as subtrees (implies -r)]' \
     '-s[do not show differences]' \
     '-v[show commit message before the differences]' \
     '(-c --cc)-c[show differences from each of the parents to the merge result]' \
@@ -562,18 +784,24 @@
   esac
 }
 
-_git-fsck-objects () {
-  _arguments -S \
+(( $+functions[_git-fmt-merge-msg] )) ||
+_git-fmt-merge-msg () {
+  _message "you probably should not be issuing this command"
+}
+
+(( $+functions[_git-fsck] )) ||
+_git-fsck () {
+  _arguments \
     '--cache[consider objects recorded in the index as head nodes for reachability traces]' \
-    '(--standalone)--full[check all object directories]' \
+    '--full[check all object directories]' \
     '--root[show root nodes]' \
-    '(--full)--standalone[check only the current object directory]' \
     '--strict[do strict checking]' \
     '--tags[show tags]' \
     '--unreachable[show objects that are unreferenced in the object database]' \
-    '*:object:__git_objects' && ret=0
+    '*::object:__git_objects' && ret=0
 }
 
+(( $+functions[_git-ls-files] )) ||
 _git-ls-files () {
   _arguments -S \
     $nul_arg \
@@ -584,24 +812,32 @@
     '(-m --modified)'{-m,--modified}'[show modified files in the output]' \
     '(-o --others)'{-o,--others}'[show other files in the output]' \
     '(-s --stage)'{-s,--stage}'[show stage files in the output]' \
-    '-t[identify each files status]' \
+    '(-t -v)-t[identify each files status (HMRCK?)]' \
     '(-u --unmerged)'{-u,--unmerged}'[show unmerged files in the output]' \
+    '(-t -v)-v[identify each files status (hmrck?)]' \
     '*'{-x,--exclude=-}'[skip files matching given pattern]:file pattern' \
     '*'{-X,--exclude-from=-}'[skip files matching patterns in given file]:file:_files' \
     '*--exclude-per-directory=-[skip directories matching patterns in given file]:file:_files' \
-    '*:index file:__git_files' && ret=0
+    '--directory[if a whole directory is classified as "other", show just its name]' \
+    '--error-unmatch[if any <file> does not appear in the index, treat this as an error]' \
+    '--full-name[force paths to be output relative to the project top directory]' \
+    '*::index file:_files' && ret=0
 }
 
+(( $+functions[_git-ls-tree] )) ||
 _git-ls-tree () {
   local curcontext=$curcontext state line
-  typeset -A opt_args
+  declare -A opt_args
 
-  _arguments \
+  _arguments -C \
     $nul_arg \
-    '-d[do not show children of given tree]' \
+    $abbrev_arg \
+    '(-t)-d[do not show children of given tree (implies -t)]' \
+    {--name-only,--name-status}'[list only filenames, one per line]' \
     '-r[recurse into subdirectories]' \
+    '-t[show tree entries even when going to recurse them]' \
     ':tree-ish:__git_tree_ishs' \
-    '*:tree file:->files' && ret=0
+    '*::tree file:->files' && ret=0
 
   case $state in
     files)
@@ -610,6 +846,12 @@
   esac
 }
 
+(( $+functions[_git-imap-send] )) ||
+_git-imap-send () {
+  _message 'no arguments allowed; accepts mailbox file on standard input'
+}
+
+(( $+functions[_git-quiltimport] )) ||
 _git-quiltimport () {
   _arguments \
     "--dry-run[check patches and warn if they can't be imported]" \
@@ -617,6 +859,7 @@
     '--patches[set directory containing patches]:patch directory:_directories' && ret=0
 }
 
+(( $+functions[_git-merge-base] )) ||
 _git-merge-base () {
   _arguments \
     '(-a --all)'{-a,--all}'[show all common ancestors]' \
@@ -624,6 +867,7 @@
     ':commit 2:__git_commits' && ret=0
 }
 
+(( $+functions[_git-name-rev] )) ||
 _git-name-rev () {
   _arguments -S \
     '--tags[only use tags to name the commits]' \
@@ -632,50 +876,67 @@
     '(--stdin --all)*:commit-ish:__git_revisions' && ret=0
 }
 
-# TODO: --no-merges undocumented
+(( $+functions[_git-pack-redundant] )) ||
+_git-pack-redundant () {
+  _arguments \
+    '(:)--all[process all packs]' \
+    '--alt-odb[do not require objects to be present in local packs]' \
+    '--verbose[output some statistics to stderr]' \
+    '(--all)*::packs:_files -g "*.pack"' && ret=0
+}
+
+# TODO: --timestamp undocumented.
+# TODO: __git_commits2 should be reworked/reworded.
+(( $+functions[_git-rev-list] )) ||
 _git-rev-list () {
-  if (( $words[(I)--] && $words[(I)--] != CURRENT )); then
+  if (( words[(I)--] && words[(I)--] != CURRENT )); then
     _arguments \
-      '*:index file:__git_files' && ret=0
+      '*:index file:__git_cached_files' && ret=0
   else
-    local show_breaks
+    declare -a revision_arguments
+
+    __git_setup_revision_arguments
 
-    (( $words[(I)--merge-order] )) && show_breaks='--show-breaks[show commit prefixes]'
     _arguments -S \
-      '--all[show all commits from refs]' \
-      '--bisect[show only the middlemost commit object]' \
-      '(--sparse)--dense[this is the inverse of --sparse, and is also the default]' \
+      $revision_arguments \
       '(--pretty)--header[show commit headers]' \
-      '--objects[show object ids of objects referenced by the listed commits]' \
-      '--max-age[maximum age of commits to output]: :_guard "[[\:digit\:]]#" number' \
-      '--max-count[maximum number of commits to output]: :_guard "[[\:digit\:]]#" timestamp' \
-      '(--topo-order)--merge-order[decompose into minimal and maximal epochs]' \
-      '--min-age[minimum age of commits to output]: :_guard "[[\:digit\:]]#" timestamp' \
-      '--parents[show parent commits]' \
-      '(--header)'$pretty_arg \
-      '(--dense)--sparse[when paths are given, output only commits that changes any of them]' \
-      '(--merge-order)--topo-order[show commits in topological order]' \
-      $show_breaks \
-      '--unpacked[show only unpacked commits]' \
+      '--timestamp[undocumented]' \
+      '--bisect[show only the middlemost commit object]' \
+      '--stdin[read commit objects from standard input]' \
       '*:commit id:__git_commits2' && ret=0
   fi
 }
 
+(( $+functions[_git-show] )) ||
+_git-show () {
+  declare -a revision_arguments
+
+  __git_setup_revision_arguments
+
+  _arguments -S \
+    $revision_arguments \
+    '*:object:__git_revisions' && ret=0
+}
+
+(( $+functions[_git-show-index] )) ||
 _git-show-index () {
   _message 'no arguments allowed; accepts index file on standard input'
 }
 
+(( $+functions[_git-tar-tree] )) ||
 _git-tar-tree () {
   _arguments \
     ':tree-ish:__git_tree_ishs' \
-    ':base-name:_files' && ret=0
+    ':base:_files' && ret=0
 }
 
+(( $+functions[_git-unpack-file] )) ||
 _git-unpack-file () {
   _arguments \
     ':blob id:__git_blobs' && ret=0
 }
 
+(( $+functions[_git-var] )) ||
 _git-var () {
   _arguments \
     '(:)-l[show logical variables]' \
@@ -683,40 +944,66 @@
                     GIT_COMMITTER_IDENT\:"name and email of committer"))' && ret=0
 }
 
+(( $+functions[_git-verify-pack] )) ||
 _git-verify-pack () {
   _arguments -S \
     '-v[show objects contained in pack]' \
     '*:index file:_files -g "*.idx"' && ret=0
 }
  
-__git-clone_or_fetch-pack () {
+(( $+functions[_git-clone-pack] )) ||
+_git-clone-pack () {
   _arguments \
     $exec_arg \
-    ':remote repository:__git_remote_repository' \
+    ':repository:__git_any_repositories' \
     '*:head:__git_heads' && ret=0
 }
 
-_git-clone-pack () {
-  __git-clone_or_fetch-pack
+(( $+functions[_git-fetch-pack] )) ||
+_git-fetch-pack () {
+  _arguments \
+    $exec_arg \
+    '-k[do not invoke "git-unpack-objects" on received data]'
+    '-q[pass "-q" flag to "git-unpack-objects"]' \
+    ':repository:__git_any_repositories' \
+    '*:head:__git_heads' && ret=0
 }
 
-_git-fetch-pack () {
-  __git-clone_or_fetch-pack
+(( $+functions[_git-fast-import] )) ||
+_git-fast-import () {
+  _arguments \
+    '--date-format=-[specify the types of dates being passed]:((raw\:"native git format"
+                                                                rfc2822\:"standard email format"
+                                                                now\:"use current time and timezone"))' \
+    '--max-pack-size=-[maximum size of each packfile]: :_guard "[[\:digit\:]]#" "maximum pack size"' \
+    '--depth=-[maximum delta depth for blob and tree deltification]: :_guard "[[\:digit\:]]#" "maximum delta depth"' \
+    '--active-branches=-[maximum number of branches to maintain active at once]: :_guard "[[\:digit\:]]#" "maximum number of branches"' \
+    '--export-marks=-[dump the internal marks table to given file]:export file:_files' \
+    '--export-pack-edges=-[list packfiles and last commit on branches in them in given file]:export file:_files' \
+    '--force[force updating modified existing branches]' \
+    '--quiet[disable all non-fatal output]' \
+    '--stats[display statistics about object created]' && ret=0
 }
 
-# TODO: __git_commits appropriate here?  Probably not, as this should be a
-# remote commit, but perhaps good enough?
-__git-http_or_ssh-fetch () {
+(( $+functions[_git-http-fetch] )) ||
+_git-http-fetch () {
   _arguments \
     $fetch_args \
     ':commit id:__git_commits' \
     ':URL:_urls' && ret=0
 }
 
-_git-http-fetch () {
-  __git-http_or_ssh-fetch
+(( $+functions[_git-http-push] )) ||
+_git-http-push () {
+  _arguments \
+    '--complete[do not assume that the remote repository is complete]' \
+    $force_ref_arg \
+    '--verbose[report the list of objects being walked locally and sent to the remote]' \
+    ':URL:_urls' \
+    '*:remote refs' && ret=0
 }
 
+(( $+functions[_git-local-fetch] )) ||
 _git-local-fetch () {
   _arguments \
     $fetch_args \
@@ -727,46 +1014,107 @@
     ':directory:_directories' && ret=0
 }
 
+(( $+functions[_git-peek-remote] )) ||
 _git-peek-remote () {
   _arguments \
     $exec_arg \
-    ':remote repository:__git_remote_repository' && ret=0
+    ':repository:__git_repository' && ret=0
+}
+
+# TODO: --dry-run undocumented.
+# TODO: -n undocumented.
+# TODO: --stale-fix undocumented.
+# TODO: --verbose undocumented.
+# TODO: -- undocumented.
+(( $+functions[_git-reflog] )) ||
+_git-reflog () {
+  declare -a revision_arguments
+
+  __git_setup_revision_arguments
+
+  if (( CURRENT == 2 )); then
+    local curcontext=$curcontext state line
+    declare -A opt_args
+
+    _arguments -C \
+      $revision_arguments \
+      ':subcommand:->subcommand' && ret=0
+
+    case $state in
+      (subcommand)
+        declare -a reflog_cmds
+
+        reflog_cmds=(
+        'expire:prune old reflog entries'
+        'show:show log of the current branch')
+
+        _describe -t subcommands 'subcommands' reflog_cmds && ret=0
+        ;;
+    esac
+  else
+    case $words[2] in
+      (expire)
+        _arguments -S \
+          '(-n --dry-run)'{-n,--dry-run}'[undocumented]' \
+          '--expire=-[prune entries older than given time]:date' \
+          '--expire-unreachable=-[prune entries older than given time and unreachable]:date' \
+          '--stale-fix[undocumented]' \
+          '--all[prune all refs]' \
+          '--verbose' && ret=0
+        ;;
+      (show|--*)
+        _arguments -S \
+          $revision_arguments \
+          ':subcommand:' && ret=0
+        ;;
+    esac
+  fi
 }
 
+(( $+functions[_git-receive-pack] )) ||
 _git-receive-pack () {
-  _arguments \
-    ':directory:_directories' && ret=0
+  _message "you probably should not be issuing this command"
 }
 
+(( $+functions[_git-send-pack] )) ||
 _git-send-pack () {
   _arguments \
     $exec_arg \
     '--all[update all refs that exist locally]' \
     '--force[update remote orphaned refs]' \
-    ':remote repository:__git_remote_repository' \
+    ':repository:__git_any_repositories' \
     '*:remote refs' && ret=0
 }
 
-# TODO: git-shell, but that's only invoked by other git commands.
-
+(( $+functions[_git-ssh-fetch] )) ||
 _git-ssh-fetch () {
-  __git-http_or_ssh-fetch
+  _arguments \
+    $fetch_args \
+    ':commit id:__git_commits' \
+    ':URL:_urls' && ret=0
 }
 
+(( $+functions[_git-ssh-upload] )) ||
 _git-ssh-upload () {
-  __git-http_or_ssh-fetch
+  _arguments \
+    $fetch_args \
+    ':commit id:__git_commits' \
+    ':URL:_urls' && ret=0
 }
 
+(( $+functions[_git-update-server-info] )) ||
 _git-update-server-info () {
   _arguments \
-    '(-f --force)'{-f,--force}'[update the info files from scratch]'
+    '(-f --force)'{-f,--force}'[update the info files from scratch]' && ret=0
 }
 
+(( $+functions[_git-upload-pack] )) ||
 _git-upload-pack () {
   _arguments \
     ':directory:_directories' && ret=0
 }
 
+(( $+functions[_git-add] )) ||
 _git-add () {
   local curcontext=$curcontext state line
   declare -A opt_args
@@ -775,7 +1123,7 @@
     '-n[do not actually add files; only show which ones would be added]' \
     '-v[show files as they are added]' \
     '-f[allow adding otherwise ignored files]' \
-    '(-i --interactive)'{-i,--interactive}'[add contents interactively to the index]' \
+    '(-i --interactive : -)'{-i,--interactive}'[add contents interactively to the index]' \
     '*:file:->files' && ret=0
 
   case $state in
@@ -794,30 +1142,26 @@
       ;;
   esac
 }
+__git_zstyle_default ':completion::complete:git-add:argument-rest:*' ignore-line yes
 
+(( $+functions[_git-am] )) ||
 _git-am () {
   _arguments \
     '--3way[use 3-way merge if patch does not apply cleanly]' \
+    '--binary[pass "--allow-binary-replacement" to "git-apply"]' \
     '--dotest=-[use given directory as working area instead of .dotest]:directory:_directories' \
     '--interactive[apply patches interactively]' \
-    '--keep[do not modify Subject: header]' \
-    '--signoff[add Signed-off-by: line to the commit message]' \
+    '--keep[pass "-k" flag to "git-mailinfo"]' \
+    '--resolved[continue after resolving patch failure by hand]' \
+    '--signoff[add "Signed-off-by:" line to the commit message]' \
     '--skip[skip the current patch]' \
-    '--utf8[encode commit information in UTF-8]' \
+    '--utf8[pass "-u" flag to "git-mailinfo"]' \
+    '--no-utf8[do not pass "-u" flag to "git-mailinfo"]' \
+    $common_apply_args \
     '*:mbox file:_files' && ret=0
 }
 
-_git-applymbox () {
-  _arguments \
-    '-k[do not modify Subject: header]' \
-    '-m[apply patches with git-apply and fail if patch is unclean]' \
-    '-q[apply patches interactively]' \
-    '-u[encode commit information in UTF-8]' \
-    '(1)-c[restart command after fixing an unclean patch]:patch:_files -g ".dotest/0*"' \
-    ':mbox file:_files' \
-    '::signoff file:__git_signoff_file' && ret=0
-}
-
+(( $+functions[_git-archive] )) ||
 _git-archive () {
   local curcontext=$curcontext state line
   declare -A opt_args
@@ -845,7 +1189,7 @@
   _arguments -C \
     '--format=-[format of the resulting archive]:archive format:__git_archive_formats' \
     '(- :)--list[list available archive formats]' \
-    '--prefix=-[prepend the given path prefix to to each filename]' \
+    '--prefix=-[prepend the given path prefix to to each filename]:path prefix:_directories -r ""' \
     $backend_args \
     '--remote=-[archive remote repository]:remote repository:__git_any_repositories' \
     ':tree-ish:__git_tree_ishs' \
@@ -858,6 +1202,19 @@
   esac
 }
 
+(( $+functions[_git-applymbox] )) ||
+_git-applymbox () {
+  _arguments -A '-*' \
+    '-k[do not modify "Subject:" header]' \
+    '-m[apply patches with "git-apply" and fail if patch is unclean]' \
+    '-q[apply patches interactively]' \
+    '-u[encode commit information in UTF-8]' \
+    '(1)-c[restart command after fixing an unclean patch]:patch:_files -g ".dotest/0*"' \
+    ':mbox file:_files' \
+    '::signoff file:__git_signoff_file' && ret=0
+}
+
+(( $+functions[_git-bisect] )) ||
 _git-bisect () {
   local bisect_cmds
 
@@ -899,29 +1256,116 @@
   fi
 }
 
+# TODO: complete branch names?
+(( $+functions[_git-branch] )) ||
 _git-branch () {
-  _arguments \
-    '(-D)-d[delete a branch, which must be fully merged]' \
-    '(-d)-D[delete a branch]' \
-    ':branch-name' \
-    ':base branch:__git_revisions' && ret=0
-}
-
+  local my_abbrev_arg
+  if (( words[(I)-v] > 0 && words[(I)-v] < CURRENT )); then
+    my_abbrev_arg=$abbrev_arg
+  fi
+
+  declare -a dependent_deletion_args
+  if (( words[(I)-d] || words[(I)-D] )); then
+    dependent_deletion_args=(
+      '-r[delete remote-tracking branches]'
+      '*:branch-name:__git_branch_names')
+  fi
+
+  declare -a dependent_modification_args
+  if (( words[(I)-m] || words[(I)-M] )); then
+    dependent_modification_args=(
+      ':old or new branch-name:__git_branch_names'
+      '::new branch-name:__git_branch_names')
+  fi
+
+  # TODO: I’m not happy with having to force a pattern with -A.
+  _arguments -S -A "-*" \
+    - list \
+      '(        --no-color)--color[turn on branch coloring]' \
+      '(--color           )--no-color[turn off branch coloring]' \
+      '(   -a)-r[list only the remote-tracking branches]' \
+      '(-r   )-a[list both remote-tracking branches and local branches]' \
+      '-v[show SHA1 and commit subject line for each head]' \
+      $my_abbrev_arg \
+    - create \
+      "-l[create the branch's reflog]" \
+      '-f[force the creation of a new branch]' \
+      ':branch-name:__git_branch_names' \
+      '::start-point:__git_revisions' \
+    - modify \
+      '(   -M)-m[rename a branch and the corresponding reflog]' \
+      '(-m   )-M[rename a branch even if the new branch-name already exists]' \
+      $dependent_modification_args \
+    - delete \
+      '(   -D)-d[delete a fully merged branch]' \
+      '(-d   )-D[delete a branch]' \
+      $dependent_deletion_args && ret=0
+}
+__git_zstyle_default ':completion::complete:git-branch:delete-argument-rest:*' ignore-line yes
+
+# TODO: __git_tree_ishs is just stupid.  It should be giving us a list of tags
+# and perhaps also allow all that just with ^{tree} and so on.  Not quite sure
+# how to do that, though.
+(( $+functions[_git-checkout] )) ||
 _git-checkout () {
-  _arguments \
-    '-f[force a complete re-read]' \
-    '-b[create a new branch based at given branch]:branch-name' \
-    ':branch:__git_revisions' \
-    '*:file:_files' && ret=0
+  local curcontext=$curcontext state line
+  declare -A opt_args
+
+  local new_branch_reflog_arg
+
+  if (( words[(I)-b] > 0 )); then
+    new_branch_reflog_arg="-l[create the new branch's reflog]"
+  fi
+
+  # TODO: This isn’t quite correct in regards of the handling of the “--”
+  # option, as it should prevent us from seeing a branch, not stop matching
+  # options.
+  _arguments -C -S -A "-*" \
+    - switch-branch \
+      '-q[suppress feedback messages]' \
+      '-f[force a complete re-read]' \
+      '-b[create a new branch based at given branch]: :__git_guard_branch-name' \
+      $new_branch_reflog_arg \
+      '-m[3way merge current branch, working tree and new branch]' \
+      '::branch:__git_revisions' \
+    - update-files \
+      '::tree-ish:__git_tree_ishs' \
+      '::file:->files' && ret=0
+
+  case $state in
+    (files)
+      if [[ -n $line[1] ]]; then
+        __git_tree_files $line[1] && ret=0
+      else
+        __git_cached_files && ret=0
+      fi
+      ;;
+  esac
 }
 
+(( $+functions[_git-cherry-pick] )) ||
 _git-cherry-pick () {
   _arguments \
+    '(-e --edit)'{-e,--edit}'[edit commit before committing the revert]' \
     '(-n --no-commit)'{-n,--no-commit}'[do not make the actually commit]' \
-    '(-r --replay)'{-r,--replay}'[use the original commit message intact]' \
+    '(-r --replay)'{-r,--replay}'[use original commit message intact]' \
+    '-x[append information about what commit was cherry-picked]' \
     ':commit:__git_revisions' && ret=0
 }
 
+(( $+functions[_git-clean] )) ||
+_git-clean () {
+  _arguments -S \
+    '-d[also remove untracked directories]' \
+    '-n[do a dry run]' \
+    '-q[run quietly]' \
+    '(-X   )-x[also remove ignored files]' \
+    '(   -x)-X[remove only ignored files]' \
+    '*:file:_files' && ret=0
+}
+
+# TODO: The --no-checkout is undocumented.
+(( $+functions[_git-clone] )) ||
 _git-clone () {
   local -a shared
 
@@ -944,23 +1388,33 @@
     '*:directory:_directories' && ret=0
 }
 
+(( $+functions[_git-commit] )) ||
 _git-commit () {
   _arguments -S \
     '(-a --all)'{-a,--all}'[update all paths in the index file]' \
-    '(-s --signoff)'{-s,--signoff}'[add Signed-off-by line at the end of the commit message]' \
-    '(-v --verify -n --no-verify)'{-v,--verify}'[look for suspicious lines the commit introduces]' \
-    '(-n --no-verify -v --verify)'{-n,--no-verify}'[do not look for suspicious lines the commit introduces]' \
+    '--author[override the author name used in the commit]:author name' \
     '(-e --edit)'{-e,--edit}'[edit the commit message before committing]' \
-    '*:file:_files' \
+    '(-o --only -i --include)'{-i,--include}'[update the given files and commit the whole index]' \
+    '(-o --only -i --include)'{-o,--only}'[commit only the given files]' \
+    '(-n --no-verify)'{-n,--no-verify}'[do not look for suspicious lines the commit introduces]' \
+    '(-s --signoff)'{-s,--signoff}'[add Signed-off-by line at the end of the commit message]' \
+    '(-q --quiet -v --verbose)'{-q,--quiet}'[suppress commit summary message]' \
+    '(-q --quiet -v --verbose)'{-v,--verbose}'[show unified diff of all file changes]' \
+    '(-u --untracked-files)'{-u,--untracked-files}'[show files in untracked directories]' \
+    '*:file:__git_modified_files' \
     - '(message)' \
-      '(-c -C --reedit-message --reuse-message)'{-c,--reedit-message=}'[use existing commit object and edit log message]:commit id:__git_commits' \
-      '(-c -C --reedit-message --reuse-message)'{-C,--reuse-message=}'[use existing commit object with same log message]:commit id:__git_commits' \
-      '(-F --file)'{-F,--file=}'[read commit message from given file]:file:_files' \
-      '(-m --message)'{-m,--message=}'[use the given message as the commit message]:message' && ret=0
+      '--amend[amend the tip of the current branch]' \
+      {-c,--reedit-message=}'[use existing commit object and edit log message]:commit:__git_commits' \
+      {-C,--reuse-message=}'[use existing commit object with same log message]:commit:__git_commits' \
+      {-F,--file=}'[read commit message from given file]:file:_files' \
+      {-m,--message=}'[use the given message as the commit message]:message' && ret=0
 }
+__git_zstyle_default ':completion::complete:git-commit:argument-rest:*' ignore-line yes
+
 
 # TODO: __git_files should be __git_tree_files (do like in git-diff-tree and
 # such)
+(( $+functions[_git-diff] )) ||
 _git-diff () {
   _arguments -S \
     $diff_args \
@@ -969,31 +1423,40 @@
     '*::index file:__git_modified_files' && ret=0
 }
 
+(( $+functions[_git-fetch] )) ||
 _git-fetch () {
   _arguments \
-    '(-a --append)'{-a,--append}'[append fetched refs instead of overwriting]' \
-    $force_ref_arg \
-    $tags_fetch_arg \
-    '(-u --update-head-ok)'{-u,--update-head-ok}'[allow updates of current branch head]' \
+    $common_fetch_args \
     ':repository:__git_any_repositories' \
     '*:refspec:__git_ref_specs' && ret=0
 }
 
-# TODO: should support R1..R2 syntax
+(( $+functions[_git-format-patch] )) ||
 _git-format-patch () {
   _arguments \
-    '(-a --author)'{-a,--author}'[output From: header for your own commits as well]' \
-    '(-d --date)'{-d,--date}'[output Date: header for your own commits as well]' \
+    $diff_args \
     '(-h --help)'{-h,--help}'[display usage information]' \
-    '(-k --keep-subject)'{-k,--keep-subject}'[do not strip/add \[PATCH\] from the first line of the commit message]' \
-    '(-m --mbox)'{-m,--mbox}'[use true mbox formatted output]' \
-    '(-n --numbered)'{-n,--numbered}'[name output in \[PATCH n/m\] format]' \
+    '(-k --keep-subject -n --numbered)'{-k,--keep-subject}'[do not strip/add \[PATCH\] from the first line of the commit message]' \
+    '(-k --keep-subject -n --numbered)'{-n,--numbered}'[name output in \[PATCH n/m\] format]' \
+    '--start-number=[start numbering patches at given number]: :_guard "[[\:digit\:]]" "patch number"' \
     '(-o --output-directory --stdout)'{-o,--output-directory}'[store resulting files in given directory]:directory:_directories' \
-    '(-o --output-directory --mbox)--stdout[output the generated mbox on standard output (implies --mbox)]' \
-    ':their revision:__git_revisions' \
-    '::my revision:__git_revisions' && ret=0
+    '(-o --output-directory)--stdout[output the generated mbox on standard output (implies --mbox)]' \
+    '(-s --signoff)'{-s,--signoff}'[add "Signed-off-by:" line to the commit message]' \
+    '--attach=-[create attachments instead of inlining patches]::git version string' \
+    '--thread[make the second and subsequent mails refer to the first]' \
+    '--in-reply-to=[make the first mail a reply to the given message]:message id' \
+    '--ignore-if-in-upstream[do not include a patch that matches a commit in the given range]' \
+    '--suffix[use the given suffix for filenames]:filename suffix' \
+    ':commit range:__git_commit_ranges' && ret=0
+}
+
+(( $+functions[_git-gc] )) ||
+_git-gc () {
+  _arguments \
+    '--prune[remove unreferenced loose objects]' && ret=0
 }
 
+(( $+functions[_git-grep] )) ||
 _git-grep () {
   local -a pattern_operators
 
@@ -1070,12 +1533,18 @@
   esac
 }
 
-# TODO: this isn't strictly right, but close enough
+(( $+functions[_git-log] )) ||
 _git-log () {
-  _git-rev-list
+  declare -a revision_arguments
+
+  __git_setup_revision_arguments
+
+  _arguments -S \
+    $revision_arguments && ret=0
 }
 
 # TODO: repository needs fixing
+(( $+functions[_git-ls-remote] )) ||
 _git-ls-remote () {
   _arguments \
     '(-h --heads)'{-h,--heads}'[show only refs under refs/heads]' \
@@ -1084,62 +1553,90 @@
     '*: :__git_references' && ret=0
 }
 
+(( $+functions[_git-merge] )) ||
 _git-merge () {
   _arguments \
-    '(-n --no-summary)'{-n,--no-summary}'[do not show diffstat at end of merge]' \
-    $merge_strategy \
+    $merge_args \
     ':merge message' \
-    ':head:__git_revisions' \
-    '*:remote:__git_revisions' && ret=0
+    '*:remote:__git_commits' && ret=0
 }
 
+(( $+functions[_git-mv] )) ||
 _git-mv () {
   _arguments \
     '-f[force renaming/moving even if targets exist]' \
     '-k[skip move/renames that would lead to errors]' \
     '-n[only show what would happen]' \
-    '*:index file:__git_files' && ret=0
+    '*:source:__git_cached_files' \
+    ':destination:_files' && ret=0
 }
 
+(( $+functions[_git-octupus] )) ||
 _git-octupus () {
   _nothing
 }
 
+(( $+functions[_git-pull] )) ||
 _git-pull () {
   _arguments \
-    $merge_strategy \
-    $force_ref_arg \
-    $tags_fetch_arg \
-    '(-a --append)'{-a,--append}'[append ref-names and object-names to .git/FETCH_HEAD]' \
-    '--no-commit[do not commit the merge]' \
-    '(-n --no-summary)'{-n,--no-summary}'[do not show diffstate at end of merge]' \
-    '(-u,--update-head-ok)'{-u,--update-head-ok}'[allow updating of head to current branch]' \
+    $merge_args \
+    $common_fetch_args \
     ':repository:__git_any_repositories' \
     '*:refspec:__git_ref_specs' && ret=0
 }
 
+# NOTE: For --receive-pack we use _files to complete, even though this will
+# only complete files on the local end, not the remote end.  Still, it may be
+# helpful to get some sort of completion going, perhaps modifying the path
+# later on to match the remote end.
+(( $+functions[_git-push] )) ||
 _git-push () {
   _arguments \
     $force_ref_arg \
     '--all[fetch all refs]' \
-    ':repository:__git_any_repositories' \
-    '*:refspec:__git_ref_specs' && ret=0
+    '--tags[all tags under "$GIT_DIR/refs/tags" are pushed]' \
+    '(--receive-pack --exec)'{--receive-pack=-,--exec=-}'[path to git-receive-pack on remote]:remote path:_files' \
+    '--repo=-[default repository to use]:repository:__git_any_repositories' \
+    '(       --no-thin)--thin[try to minimize number of objects to be sent]' \
+    '(--thin          )--no-thin[do not try to minimize number of objects to be sent]' \
+    $verbose_arg \
+    '::repository:__git_any_repositories' \
+    '*::refspec:__git_ref_specs' && ret=0
 }
 
+(( $+functions[_git-rebase] )) ||
 _git-rebase () {
-  _arguments \
-    ':upstream branch:__git_revisions' \
-    '::working branch:__git_revisions' && ret=0
+  if [[ $words[2] == --(abort|continue|skip) ]]; then
+    _message 'no more options'
+  else
+    _arguments \
+      '--onto[start new branch with HEAD equal to "newbase"]:newbase' \
+      '--continue[continue after failure]' \
+      '--abort[abort current rebase]' \
+      '--skip[skip the current patch]' \
+      '--merge[use merging strategies to rebase]' \
+      $merge_strategy_arg \
+      $verbose_arg \
+      '-C-[ensure that given lines of surrounding context match]: :_guard "[[\:digit\:]]##" "lines of context"' \
+      ':upstream branch:__git_revisions' \
+      '::working branch:__git_revisions' && ret=0
+  fi
 }
 
+(( $+functions[_git-repack] )) ||
 _git-repack () {
   _arguments \
     '-a[pack all objects into a single pack]' \
     '-d[remove redundant packs after packing]' \
-    '-l[ignore unpacked non-local objects]' \
-    '-n[do not update server information]' && ret=0
+    '-f[pass "--no-reuse-delta" option to "git pack-objects"]' \
+    '-l[pass "--local" option to "git pack-objects"]' \
+    '-n[do not update server information]' \
+    '-q[pass "-q" option to "git pack-objects"]' \
+    '--window=-[number of objects to consider when doing delta compression]' \
+    '--depth=-[maximum delta depth]' && ret=0
 }
 
+(( $+functions[_git-rerere] )) ||
 _git-rerere () {
   declare -a commands
 
@@ -1152,219 +1649,329 @@
   _describe -t commands 'command' commands
 }
 
+(( $+functions[_git-reset] )) ||
 _git-reset () {
-  _arguments \
+  local commit_arg path_arg
+
+  if [[ $words[2] == --mixed ]]; then
+    commit_arg=':commit:__git_revisions'
+    path_arg="*:file:__git_tree_files $words[3]"
+  else
+    commit_arg='::commit:__git_revisions'
+  fi
+
+  _arguments -S -A '--*' \
     '(        --soft --hard)--mixed[like --soft but report what has not been updated (default)]' \
     '(--mixed        --hard)--soft[do not touch the index file nor the working tree]' \
     '(--mixed --soft       )--hard[match the working tree and index to the given tree]' \
-    ':commit-ish:__git_revisions' \
-    '*:path:_files' && ret=0
-}
-
-_git-resolve () {
-  _arguments \
-    ':current commit:__git_revisions' \
-    ':merged commit:__git_revisions' \
-    ':commit message'
+    $commit_arg \
+    $path_arg && ret=0
 }
 
+(( $+functions[_git-revert] )) ||
 _git-revert () {
   _arguments \
-    '(-n --no-commit)'{-n,--no-commit}'[do not commit the reversion]'
-    '(-r --replay)'{-r,--replay}'[use the original commit message intact]' \
-    ':commit:__git_revisions' && ret=0
+    '(-e --edit --no-edit)'{-e,--edit}'[edit the commit before committing the revert]' \
+    '(-e --edit --no-edit)--no-edit[do not start the commit message editor]' \
+    '(-n --no-commit)'{-n,--no-commit}'[do not commit the reversion]' \
+    ':commit:__git_commits' && ret=0
 }
 
+# TODO: should take all arguments found in setup_revisions() (probably more or
+# less what git-rev-list takes).
+(( $+functions[_git-shortlog] )) ||
 _git-shortlog () {
-  _nothing
+  declare -a revision_arguments
+
+  __git_setup_revision_arguments
+
+  _arguments -S \
+    $revision_arguments \
+    '(: -)'{-h,--help}'[print a short usage message and exit]' \
+    '(-n --numbered)'{-n,--numbered}'[sort according to number of commits]' \
+    '(-s --summary)'{-s,--summary}'[suppress commit description]' \
+    '*::commitish:__git_committishs' && ret=0
 }
 
+# TODO: --date-order is undocumented.
+# TODO: Better completion of --reflog.
+(( $+functions[_git-show-branch] )) ||
 _git-show-branch () {
-  _arguments \
-    '--all[show all refs under $GIT_DIR/refs]' \
-    '--heads[show all refs under $GIT_DIR/refs/heads]' \
-    '--independent[show only the reference that can not be reached from any of the other]' \
-    '--list[do not display any commit ancestry]' \
-    '--merge-base[act like "git-merge-base -a" but with two heads]' \
-    '--more=-[go given number of commit beyond common ancestor (no ancestry if negative)]:number' \
-    '--no-name[do not show naming strings for each commit]' \
-    '--sha1-name[name commits with unique prefix of object names]' \
-    '--topo-order[show commits in topological order]' \
-    '--tags[show all refs under $GIT_DIR/refs/tags]' \
-    '*:reference:__git_revisions' && ret=0
+  _arguments -S \
+    '(--more        --independent --merge-base)--list[synonym to "--more=-1"]' \
+    - branches \
+      '(-a --all)'{-a,--all}'[show both remote-tracking branches and local branches]' \
+      '(-r --remotes)'{-r,--remotes}'[show remote-tracking branches]' \
+      '(       --list --independent --merge-base)--more=-[go given number of commit beyond common ancestor (no ancestry if negative)]:: :_guard "[[\:digit\:]]" limit' \
+      '(--more --list               --merge-base)--independent[show only the reference that can not be reached from any of the other]' \
+      '(--more --list --independent             )--merge-base[act like "git-merge-base -a" but with two heads]' \
+      '--current[include current branch to the list of revs]' \
+      '(          --sha1-name)--no-name[do not show naming strings for each commit]' \
+      '(--no-name            )--sha1-name[name commits with unique prefix of object names]' \
+      '--topo-order[show commits in topological order]' \
+      '--topics[show only commits that are NOT on the first branch given]' \
+      '--sparse[output merges that are reachable from multiple tips being shown]' \
+      '--date-order[undocumented]' \
+      '*:revision:__git_revisions' \
+    - reflogs \
+      '(-g --reflog)'{-g,--reflog=-}'[show reflog entries for given ref]::number of entries and base' \
+      ':reference:__git_references' && ret=0
 }
 
+(( $+functions[_git-status] )) ||
 _git-status () {
-  _nothing
+  _git-commit
 }
+__git_zstyle_default ':completion::complete:git-status:argument-rest:*' ignore-line yes
 
+(( $+functions[_git-verify-tag] )) ||
 _git-verify-tag () {
   _arguments \
     ':tag:__git_tag_ids' && ret=0
 }
 
-# TODO: this should be a combination of git-rev-list and git-diff-tree
+# TODO: This should take those arguments that git-diff-tree can take, as well.
+(( $+functions[_git-whatchanged] )) ||
 _git-whatchanged () {
+  declare -a revision_arguments
+
+  __git_setup_revision_arguments
+
+  _arguments -S \
+    $revision_arguments \
+    '1::commit id:__git_commits2' \
+    '*:managed file:__git_cached_files' && ret=0
 }
 
+(( $+functions[_git-applypatch] )) ||
 _git-applypatch () {
   _arguments \
     ':message file:_files' \
     ':patch file:_files' \
     ':info file:_files' \
-    '::signoff file:_files' && ret=0
+    '::signoff file:__git_signoff_file' && ret=0
 }
 
 # TODO: archive/branch can use _arch_archives perhaps?
+(( $+functions[_git-archimport] )) ||
 _git-archimport () {
   _arguments \
-    '-h[display usage information]' \
-    '-v[produce verbose output]' \
+    '-a[auto-register archives at http://mirrors.sourcecontrol.net]' \
+    '-D[attempt to import trees that have been merged from]: :_guard "[[\:digit\:]]#" depth' \
+    '-f[use the fast patchset import strategy]' \
+    $help_arg \
+    '-o[use old-style branch names]' \
     '-T[create a tag for every commit]' \
     '-t[use given directory as temporary directory]:directory:_directories' \
+    $verbose_arg \
     ':archive/branch' \
     '::archive/branch'
 }
 
+(( $+functions[_git-convert-objects] )) ||
 _git-convert-objects () {
-  _arguments \
-    ':object:__git_objects'
+  _nothing
+}
+
+# TODO: Could use _cvs_root from _cvs for completing argument to -d.
+# TODO: -h is undocumented.
+(( $+functions[_git-cvsexportcommit] )) ||
+_git-cvsexportcommit () {
+  _arguments \
+    '-c[commit automatically if the patch applied cleanly]' \
+    '-p[be pedantic (paranoid) when applying patches]' \
+    '-a[add authorship information]' \
+    '-d[set an alternative CVSROOT to use]:cvsroot' \
+    '-f[force the merge, even if the files are not up to date]' \
+    '-P[force the parent commit, even if it is not a direct parent]' \
+    '-m[prepend the commit message with the provided prefix]:message prefix' \
+    $verbose_arg \
+    $help_arg \
+    '::parent commit id:__git_commits' \
+    ':commit id:__git_commits' && ret=0
 }
 
 # TODO: _cvs_root for -d would be nice
+(( $+functions[_git-cvsimport] )) ||
 _git-cvsimport () {
   _arguments \
+    $author_conversion_file_arg \
     '-C[specify the git repository to import into]:directory:_directories' \
     '-d[specify the root of the CVS archive]:cvsroot' \
-    '-h[display usage information]' \
+    $help_arg \
     '-i[do not perform a checkout after importing]' \
     '-k[remove keywords from source files in the CVS archive]' \
-    '-u[convert underscores in tag and branch names to dots]' \
-    '-M[attempt to detect merges based on the commit message with custom pattern]:pattern' \
     '-m[attempt to detect merges based on the commit message]' \
-    '-o[specify the branch into which you wish to import]:branch' \
+    '-M[attempt to detect merges based on the commit message with custom pattern]:pattern' \
+    '-o[specify the branch into which you wish to import]:branch:__git_branches' \
+    '-P[read cvsps output file]:file:_files' \
     '-p[specify additionaly options for cvsps]:cvsps-options' \
     '-s[substitute the "/" character in branch names with given substitution]:substitute' \
-    '-v[produce verbose output]' \
+    '-u[convert underscores in tag and branch names to dots]' \
+    '-S[skip paths matching given regex]:regex' \
+    '-a[import all commits, including recent ones]' \
+    '-L[limit the number of commits imported]: :_guard "[[\:digit\:]]" limit' \
+    $verbose_arg \
     '-z[specify timestamp fuzz factor to cvsps]:fuzz-factor' \
     ':cvsmodule' && ret=0
 }
 
-# TODO: documentation is weird
+(( $+functions[_git-lost-found] )) ||
 _git-lost-found () {
-  _message "awaiting better documentation before proceeding..."
+  _nothing
+}
+
+(( $+functions[_git-pack-refs] )) ||
+_git-pack-refs () {
+  _arguments \
+    '--all[pack all refs]' \
+    "(        --no-prune)--prune[remove loose refs after packing them]" \
+    "(--prune           )--no-prune[don't remove loose refs after packing them]" && ret=0
 }
 
 # TODO: something better
+(( $+functions[_git-merge-one-file] )) ||
 _git-merge-one-file () {
   _message "you probably should not be issuing this command"
 }
 
+(( $+functions[_git-prune] )) ||
 _git-prune () {
   _arguments -S \
-    '-n[do not remove anything; just report what would have been removed]' && ret=0
+    '-n[do not remove anything; just report what would have been removed]'
+    '*::heads:__git_heads' && ret=0
 }
 
+(( $+functions[_git-relink] )) ||
 _git-relink () {
   _arguments \
     '--safe[stop if two objects with the same hash exist but have different sizes]' \
+    ':directory:_directories' \
+    ':directory:_directories' \
     '*:directory:_directories' && ret=0
 }
 
 # TODO: import stuff from _svn
+# TODO: Improve completion of -P argument.
+(( $+functions[_git-svnimport] )) ||
 _git-svnimport () {
   _arguments \
+    $author_conversion_file_arg \
     '-b[specify the name of the SVN branches directory]:directory:_directories' \
     '-C[specify the git repository to import into]:directory:_directories' \
-    '-D[use direct HTTP-requests if possible]:path' \
     '-d[use direct HTTP-requests if possible for logs only]:path' \
-    '-h[display usage information]' \
+    '-D[use direct HTTP-requests if possible]:path' \
+    $help_arg \
     '-i[do not perform a checkout after importing]' \
     '-l[limit the number of SVN changesets to pull]: :_guard "[[\:digit\:]]#" number' \
-    '-o[specify the branch into which you wish to import]:branch' \
-    '-M[attempt to detect merges based on the commit message with custom pattern]:pattern' \
     '-m[attempt to detect merges based on the commit message]' \
+    '-M[attempt to detect merges based on the commit message with custom pattern]:pattern' \
+    '-o[specify the branch into which you wish to import]:branch' \
+    '-r[prepend "rX: " to commit messages, where X is the subversion revision]' \
     '-s[specify the change number to start importing from:start-revision' \
-    '-t[specify the name of the SVN trunk]:trunk:_directories' \
     '-T[specify the name of the SVN tags directory]:directory:_directories' \
-    '-v[produce verbose output]' \
+    '-t[specify the name of the SVN trunk]:trunk:_directories' \
+    '-I[import svn:ignore directory property to files with given name]:ignored file:_files' \
+    '-R[specify how often git repository should be repacked]: :_guard "[[\:digit\:]]#" "number of revisions"' \
+    '-P[import only given path of the SVN tree]::_directory' \
+    $verbose_arg \
     ':svn-repositry-url:_urls' \
     '::directory:_directories' && ret=0
 }
 
 # TODO: how do we complete argument 1?
-# TODO: argument 2 should be __git_heads, but with full path
+(( $+functions[_git-symbolic-ref] )) ||
 _git-symbolic-ref () {
-  _arguments \
+  _arguments -A '-*' \
+    '-q[do not issue error if specified name is not a symbolic ref]' \
+    '-m[update reflog for specified name with specied reason]:reason for update' \
     ':symbolic reference' \
-    ':reference' && ret=0
+    '::reference:__git_references' && ret=0
 }
 
-# TODO: first argument right?
-# TODO: document options once they are in man
-# key-id for -u could perhaps be completed from _gpg somehow
+(( $+functions[_git-tag] )) ||
 _git-tag () {
-  local message=
-
-  if (( $words[(I)-[asu]] )); then
-    message='-m[specify tag message]'
-  fi
+  local message_args=
 
-  _arguments \
-    $message \
-    ':tag-name:__git_tags' \
-    '::head:__git_revisions' \
-    - '(creation)' \
-      '-a[annotate]' \
-      '-f[create a new tag even if one with the same name already exists]' \
-      '-s[annotate and sign]' \
-      '-u[annotate and sign with given key-id]:key-id' \
-    - '(deletion)' \
-      '-d[delete]:tag:__git_tags' && ret=0
+  if (( words[(I)-[asu]] )); then
+    message_args=(
+      '(   -F)-m[specify tag message]:message'
+      '(-m   )-F[read tag message from given file]:message file:_files')
+  fi
+
+  _arguments -A '-*' \
+    - creation \
+      '(   -s -u)-a[create an unsigned, annotated tag]' \
+      '(-a    -u)-s[create an signed and annotated tag]' \
+      '(-a -s   )-u[create a tag, annotated and signed with the given key]:secret key:__git_gpg_secret_keys' \
+      '(   -v)-f[create a new tag even if one with the same name already exists]' \
+      '(-f   )-v[verifies the gpg signutare of the given tag]' \
+      $message_args \
+      ':tag name:__git_tags' \
+      '::head:__git_revisions' \
+    - deletion \
+      '-d[delete tags]:*:tag names:__git_tags' \
+    - listing \
+      '-l[list tags matching pattern]:pattern' && ret=0
 }
+__git_zstyle_default ':completion::complete:git-tag:deletion-option-d-rest:*' ignore-line yes
 
+(( $+functions[_git-update-ref] )) ||
 _git-update-ref () {
   _arguments \
+    '-m[update reflog for specified name with specied reason]:reason for update' \
+    '(:)-d[delete given reference after verifying its value]:symbolic reference:__git_revisions:old reference:__git_revisions' \
     ':symbolic reference:__git_revisions' \
     ':new reference:__git_revisions' \
     '::old reference:__git_revisions' && ret=0
 }
 
+(( $+functions[_git-check-ref-format] )) ||
 _git-check-ref-format () {
   _arguments \
     ':reference:__git_revisions' && ret=0
 }
 
 
+(( $+functions[_git-cherry] )) ||
 _git-cherry () {
   _arguments \
-    '-v[be verbose]' \
+    $verbose_arg \
     ':upstream:__git_revisions' \
-    '::head:__git_revisions' && ret=0
+    '::head:__git_revisions' \
+    '::limit:__git_revisions' && ret=0
 }
 
+(( $+functions[_git-count-objects] )) ||
 _git-count-objects () {
-  _nothing
+  _arguments \
+    '-v[also report number of in-pack objects and objects that can be removed]' && ret=0
 }
 
-# TODO: do better than _directory?  The directory needs to be a git-repository,
+# TODO: do better than _directories?  The directory needs to be a git-repository,
 # so one could check for a required file in the given directory.
+(( $+functions[_git-daemon] )) ||
 _git-daemon () {
   _arguments -S \
+    '--strict-paths[match paths exactly]' \
+    '--base-path=[remap all the path requests as relative to the given path]:path:_directories' \
     '--export-all[allow pulling from all repositories without verification]' \
     '(--port)--inetd[run server as an inetd service]' \
+    '(--inetd)--port=-[specify port to listen to]' \
     '--init-timeout=-[specify timeout between connection and request]' \
-    '--port=-[specify port to listen to]' \
-    '--syslog[log to syslog instead of stderr]' \
     '--timeout=-[specify timeout for sub-requests]' \
+    '--syslog[log to syslog instead of stderr]' \
+    '--user-path=[allow ~user notation to be used in requests]::path:_directories' \
     '--verbose[log details about incoming connections and requested files]' \
-    '*:repository:_directory' && ret=0
+    '*:repository:_directories' && ret=0
 }
 
+(( $+functions[_git-get-tar-commit-id] )) ||
 _git-get-tar-commit-id () {
   _message 'no arguments allowed; accepts tar-file on standard input'
 }
 
+(( $+functions[_git-instaweb] )) ||
 _git-instaweb () {
   _arguments \
     '(-l --local)'{-l,--local}'[bind the web server to 127.0.0.1]' \
@@ -1377,32 +1984,43 @@
     '--restart[restart the HTTP-daemon and exit]' && ret=0
 }
 
+(( $+functions[_git-mailinfo] )) ||
 _git-mailinfo () {
   _arguments \
     '-k[do not strip/add \[PATCH\] from the first line of the commit message]' \
-    '-u[encode commit information in UTF-8]' \
+    '(-u --encoding)-u[encode commit information in UTF-8]' \
+    '(-u --encoding)--encoding[encode commit information in given encoding]:encoding:__git_encodings' \
     ':message file:_files' \
     ':patch file:_files' && ret=0
 }
 
+# TODO:
+# /* Backwards compatibility: if no -o specified, accept
+#    <mbox> <dir> or just <dir> */
+(( $+functions[_git-mailsplit] )) ||
 _git-mailsplit () {
-  _arguments \
-    '-d-[specify number of leading zeros]: :_guard "[[\:digit\:]]#" "precision' \
-    ':mbox file/directory:_files' \
-    '::directory:_directories' && ret=0
+  _arguments -S \
+    '-b[if file does not begin with "From " line, assume it is a single mail message]' \
+    '-d-[specify number of leading zeros]: :_guard "[[\:digit\:]]#" precision' \
+    '-f-[skip the first N numbers]: :_guard "[[\:digit\:]]#" number' \
+    '-o-[directory in which to place individual messages]:directory:_directories' \
+    '*::mbox file:_files' && ret=0
 }
 
+(( $+functions[_git-patch-id] )) ||
 _git-patch-id () {
   _message 'no arguments allowed; accepts patch on standard input'
 }
 
+(( $+functions[_git-request-pull] )) ||
 _git-request-pull () {
   _arguments \
-    ':start commit:__git_revisions' \
+    ':start commit:__git_commits' \
     ':url:_urls' \
-    ':end commit:__git_revisions'
+    '::end commit:__git_commits'
 }
 
+(( $+functions[_git-rev-parse] )) ||
 _git-rev-parse () {
   _arguments \
     '(--revs-only --no-revs)--revs-only[do not output flags and parameters not meant for "git-rev-list"]' \
@@ -1427,6 +2045,17 @@
     '*:args' && ret=0
 }
 
+(( $+functions[_git-runstatus] )) ||
+_git-runstatus () {
+  _arguments \
+    '--color[show colored status, highlighting modified files]' \
+    '--nocolor[turn of colored output]' \
+    '--amend[show status based on HEAD^1 instead of HEAD]' \
+    '--verbose[show unified diff of all file changes]' \
+    '--untracked[show files in untracked directories]' && ret=0
+}
+
+(( $+functions[_git-rm] )) ||
 _git-rm () {
   _arguments -S -A '-*' \
     '-f[override the up-to-date check]' \
@@ -1436,27 +2065,225 @@
     '*:files:__git_cached_files' && ret=0
 }
 
+(( $+functions[_git-send-email] )) ||
 _git-send-email () {
   _arguments \
+    '--bcc=["Bcc:" value for each email]:email address:_email_addresses' \
+    '--cc=[starting "Cc:" value for each email]:email address:_email_addresses' \
     '(--no-chain-reply-to)--chain-reply-to[each email will be sent as a reply to the previous one sent]' \
     '(--chain-reply-to)--no-chain-reply-to[all emails after the first will be sent as replies to the first one]' \
     '--compose[use $EDITOR to edit an introductory message for the patch series]' \
-    '--from[specify the sender of the emails]' \
-    '--in-reply-to[specify the contents of the first In-Reply-To header]' \
-    '--smtp-server[specify the outgoing smtp server]:smtp server:_hosts' \
-    '--subject[specify the initial subject of the email thread]' \
-    '--to[specify the primary recipient of the emails]' \
-    ':file:_files' && ret=0
+    '--from=[specify the sender of the emails]:email address:_email_addresses' \
+    '--in-reply-to=[specify the contents of the first In-Reply-To header]:message-id' \
+    '--no-signed-off-by-cc[do not add emails foudn in "Signed-off-by:" lines to the "Cc:" list]' \
+    '--quiet[be less verbose]' \
+    '--smtp-server=[specify the outgoing smtp server]:smtp server:_hosts' \
+    '--subject=[specify the initial subject of the email thread]:subject' \
+    '--suppress-from[do not add the "From:" address to the "Cc:" list]' \
+    '--dry-run[do everything except actually send the emails]' \
+    '--envelope-sender[specify the envelope sender used to send the emails]:email address:_email_addresses' \
+    '--to=[specify the primary recipient of the emails]:email address:_email_addresses' \
+    '*:file:_files' && ret=0
+}
+
+# TODO: -h, -H, and --help are undocumented.
+# TODO: -V and --version are undocumented.
+# TODO: --minimize-connections is undocumented.
+# TODO: --remote is undocumented.
+# TODO: --log-window-size is undocumented.
+# TODO: --config-dir is undocumented.
+# TODO: --no-auth-cache is undocumented.
+# TODO: -C and --copy-similarity are undocumented.
+# TODO: --fetch-all and --all are undocumented.
+# TODO: -v and --verbose are undocumented.
+# TODO: -r and --revisions for show-ignore are undocumented.
+# TODO: migrate is undocumented.
+# TODO: --minimize for migrate is undocumented.
+# TODO: -r, --color, --pager, and --non-recursive for log are undocumented.
+# TODO: --local for rebase is undocumented.
+# TODO: --message, -m, --file, -F, --revision, and -r for commit-diff are
+# undocumented.
+(( $+functions[_git-svn] )) ||
+_git-svn () {
+  local curcontext=$curcontext state line
+  declare -A opt_args
+
+  _arguments -C \
+    '(- :)--version[display version information]' \
+    '(- :)--help[display help message]' \
+    ':command:->command' \
+    '*::options:->options' && ret=0
+
+  case $state in
+    (command)
+      declare -a commands
+
+      commands=(
+        'init:initialize an empty git repository with additional svn data'
+        'fetch:fetch revisions from the SVN remote'
+        'clone:same as init, followed by fetch'
+        'rebase:fetch revs from SVN parent of HEAD and rebase current work on it'
+        'dcommit:commit diffs from given head onto SVN repository'
+        'log:output SVN log-messages'
+        "find-rev:output git commit corresponding to the given SVN revision's hash"
+        'set-tree:commit given commit or tree to SVN repository'
+        'show-ignore:output corresponding .gitignore file of svn:ignore'
+        'commit-diff:commit diff of two tree-ishs')
+      ;;
+    (options)
+      declare -a arguments
+
+      if [[ $line[1] == (fetch|clone|dcommit|set-tree|rebase|migrate|init) ]]; then
+        arguments+=(
+          '--username=[username to use for SVN transport]:username:_users'
+          '--config-dir=[undocumented]:configuration directory:_directories'
+          '--no-auth-cache[undocumented]')
+      fi
+
+      if [[ $line[1] == (fetch|clone|dcommit|set-tree|rebase|log) ]]; then
+        arguments+=(
+          '(   --authors-file)'$author_conversion_file_arg
+          '(-A               )'$long_author_conversion_file_arg)
+      fi
+
+      # TODO: --repack-flags can be improved by actually completing the legal
+      # flags to git-repack.
+      if [[ $line[1] == (fetch|clone|dcommit|set-tree|rebase) ]]; then
+        arguments+=(
+          '(-q --quiet)'{-q,--quiet}'[make git-svn less verbose]'
+          '--repack=[repack files (for given number of revisions)]:: :_guard "[[\:digit\:]]#" "revision limit"'
+          '(--repack-flags --repack-args --repack-opts)'{--repack-flags=,--repack-args=,--repack-opts=}'[flags to pass to git-repack]:git-repack flags'
+          '(                --no-follow-parent)--follow-parent[follow parent commit]'
+          '(--follow-parent                   )--no-follow-parent[do not follow parent commit]'
+          '--log-window-size=[undocumented]')
+      fi
+
+      if [[ $line[1] == (clone|init) ]]; then
+        arguments+=(
+          $shared_arg
+          $template_arg
+          '(-T --trunk)'{-T-,--trunk=}'[set trunk sub-directory]:trunk sub-directory:->subdirectory'
+          '(-t --tags)'{-t-,--tags=}'[set tags sub-directory]:tags sub-directory:->subdirectory'
+          '(-b --branches)'{-b-,--branches=}'[set branches sub-directory]:branches sub-directory:->subdirectory'
+          '--no-metadata[set svn-remote.X.noMetadata]'
+          '--use-svm-props[set svn-remote.X.useSvmProps]'
+          '--use-svnsync-props[set svn-remote.X.useSvnsyncProps]'
+          '--rewrite-root=[set svn-remote.X.rewriteRoot]:new root'
+          '--prefix=[prefix to use for names of remotes]:path prefix:_directories -r ""')
+      fi
+
+      if [[ $line[1] == (dcommit|set-tree|commit-diff) ]]; then
+        arguments+=(
+          '--rmdir[remove empty directories from SVN tree after commit]'
+          '(-e --edit)'{-e,--edit}'[edit commit message before committing]'
+          $find_copies_harder_arg
+          $diff_l_arg
+          '(-C --copy-similarity)'{-C-,--copy-similarity=}'[undocumented]:number')
+      fi
+
+      # FIXME: What arguments does clone actually take here?
+      if [[ $line[1] == (fetch|clone) ]]; then
+        arguments+=(
+          '(-r --revision)'{-r,--revision}'[only fetch given revision or revision range]:revision:->__git_svn_revisions'
+          '::svn remote:__git_svn-remotes')
+      fi
+
+      if [[ $line[1] == (dcommit|rebase) ]]; then
+        arguments+=(
+          '(-m --merge)'{-m,--merge}'[use merging strategies, if necessary]')
+      fi
+
+      if [[ $line[1] == (fetch|dcommit|rebase) ]]; then
+        arguments+=(
+          '(--fetch-all --all)'{--fetch-all,--all}'[undocumented]')
+      fi
+
+      if [[ $line[1] == (dcommit|rebase) ]]; then
+        arguments+=(
+            $merge_strategy_arg)
+      fi
+
+      if [[ $line[1] == (dcommit|log|rebase) ]]; then
+        arguments+=(
+          '(- --verbose)'{-v,--verbose}'[output extra information]')
+      fi
+
+      case $line[1] in
+        (clone)
+          arguments+=(
+            ':url:_urls'
+            '::directory:_directories')
+          ;;
+        (set-tree)
+          arguments+=('--stdin[read list of commits to commit from stdin]')
+          ;;
+        (show-ignore)
+          arguments+=('-r --revision)'{-r,--revision)'[undocumented]:revision:->__git_svn_revisions'
+        (dcommit)
+          arguments+=(
+            '(-n --dry-run)'{-n,--dry-run}'[output git-commands that would show diffs that would be committed]')
+          ;;
+        (migrate)
+          arguments+=(
+            '--minimize[undocumented]')
+          ;;
+        (log)
+          declare -a revision_arguments
+
+          __git_setup_revision_arguments
+
+          arguments+=(
+            $revision_arguments
+            '(-r --revision)'{-r-,--revision=}'[revisions to output log information for]: :__git_svn_revision_numbers'
+            '--limit=[like --max-count, but not counting merged/excluded commits]: :_guard "[[\:digit\:]]#" limit'
+            '--incremental[give output suitable for concatenation]'
+            '--show-commit[output git commit SHA-1, as well]'
+            '--oneline[similar to --pretty=oneline]'
+            '--color[undocumented]'
+            '--pager[undocumented]:pager:_files -g *(*)'
+            '--non-recursive[undocumented]')
+          ;;
+        (rebase)
+          arguments+=(
+            '--local[undocumented]')
+          ;;
+        (commit-diff)
+          arguments+=(
+            '(-m --message)'{-m-,--message=}'[undocumented]:message'
+            '(-F --file)'{-F-,--file=}'[undocumented]:file:_files'
+            '(-r --revision)'{-r-,--revision=}'[undocumented]:revision:__git_svn_revisions')
+          ;;
+      esac
+
+      _arguments -C \
+        '(-h -H --help)'{-h,-H,--help}'[display usage information]' \
+        '(-V --version)'{-V,--version}'[display version information]' \
+        '--minimize-connections[undocumented]' \
+        '(-R --svn-remote --remote)'{-R,--svn-remote,--remote}'[svn remote to use]:svn remote:__git_svn-remotes'
+        '(-i --id)'{-i,--id}'[set GIT_SVN_ID]:GIT_SVN_ID'
+        $arguments && ret=0
+
+      case $state in
+        (subdirectory)
+          _alternative \
+            'sub-directories:sub-directory:_directories' \
+            'urls: :_urls' && ret=0
+          ;;
+      esac
+      ;;
+  esac
 }
 
+(( $+functions[_git-stripspace] )) ||
 _git-stripspace () {
   _message 'no arguments allowed; accepts input file on standard input'
 }
 
 # ---
 
+(( $+functions[__git_guard] )) ||
 __git_guard () {
-  typeset -A opts
+  declare -A opts
 
   zparseopts -K -D -A opts M: J: V: 1 2 n F: X:
 
@@ -1471,6 +2298,28 @@
   [[ -n "$PREFIX$SUFFIX" ]]
 }
 
+__git_guard_branch-name () {
+  if [[ -n "$PREFIX$SUFFIX" ]]; then
+    _call_program check-ref-format git check-ref-format "refs/heads/$PREFIX$SUFFIX" &>/dev/null
+    (( ${#pipestatus:#0} > 0 )) && return 1
+  fi
+
+  _message -e 'branch-name'
+
+  [[ -n "$PREFIX$SUFFIX" ]]
+}
+
+__git_guard_diff-stat-width () {
+  if [[ $PREFIX == *,* ]]; then
+    compset -P '*,'
+    _guard "[[:digit:]]#" "filename width"
+  else
+    compset -S ',*'
+    _guard "[[:digit:]]#" "width"
+  fi
+}
+
+(( $+functions[__git_command_successful] )) ||
 __git_command_successful () {
   if (( ${#pipestatus:#0} > 0 )); then
     _message 'not a git repository'
@@ -1479,26 +2328,32 @@
   return 0
 }
 
+(( $+functions[__git_objects] )) ||
 __git_objects () {
   __git_guard $* "[[:xdigit:]]#" "object"
 }
 
+(( $+functions[__git_trees] )) ||
 __git_trees () {
   __git_guard $* "[[:xdigit:]]#" "tree"
 }
 
+(( $+functions[__git_tree_ishs] )) ||
 __git_tree_ishs () {
-  __git_guard $* "[[:xdigit:]]#" "tree-ish"
+  __git_commits 
 }
 
+(( $+functions[__git_blobs] )) ||
 __git_blobs () {
   _git_guard $* "[[:xdigit:]]#" 'blob id'
 }
 
+(( $+functions[__git_stages] )) ||
 __git_stages () {
   __git_guard $* "[[:digit:]]#" 'stage'
 }
 
+(( $+functions[__git_files] )) ||
 __git_files () {
   local expl files ls_opts opts gitdir
 
@@ -1516,51 +2371,94 @@
   _wanted files expl 'index file' _multi_parts $@ - / files
 }
 
+(( $+functions[__git_cached_files] )) ||
 __git_cached_files () {
   __git_files $* --cached
 }
 
+(( $+functions[__git_deleted_files] )) ||
+__git_deleted_files () {
+  __git_files $* --deleted
+}
+
+(( $+functions[__git_killed_files] )) ||
+__git_killed_files () {
+  __git_files $* --killed
+}
+
+(( $+functions[__git_modified_files] )) ||
 __git_modified_files () {
   __git_files $* --modified
 }
 
+(( $+functions[__git_other_files] )) ||
 __git_other_files () {
   __git_files $* --others
 }
 
+(( $+functions[__git_unmerged_files] )) ||
+__git_unmerged_files () {
+  __git_files $* --unmerged
+}
+
+(( $+functions[__git_tree_files] )) ||
 __git_tree_files () {
-  local expl tree_files
+  local multi_parts_opts
 
-  tree_files=(${"${(@f)$(git-ls-tree -r $@[-1] 2>/dev/null)}"#*$'\t'})
-  if (( $? == 0 )); then
-    _wanted files expl 'tree file' _multi_parts $@[1,-2] - / tree_files
-  else
-    _message 'not a git repository'
+  zparseopts -D -E -a multi_parts_opts M: J: V: 1 2 n F: X:
+
+  local tree
+  integer at_least_one_tree_added
+  local -a tree_files
+
+  (( at_least_one_tree_added = 0 ))
+  for tree in $*; do
+    tree_files+=(${(ps:\0:)"$(_call_program tree-files git ls-tree --name-only -z -r $tree 2>/dev/null)"})
+    __git_command_successful && (( at_least_one_tree_added = 1 ))
+  done
+
+  if (( !at_least_one_tree_added )); then
+    return
   fi
+
+  local expl
+
+  # FIXME: Why doesn’t -f to compadd work here?
+  _wanted files expl 'tree file' _multi_parts $multi_parts_opts - / tree_files
 }
 
 # TODO: deal with things that __git_heads and __git_tags has in common (i.e.,
 # if both exists, they need to be completed to heads/x and tags/x.
+(( $+functions[__git_commits] )) ||
 __git_commits () {
   _alternative \
     'heads::__git_heads' \
     'tags::__git_tags'
 }
 
+(( $+functions[__git_committishs] )) ||
 __git_committishs () {
   __git_commits
 }
 
 # TODO: deal with prefixes and suffixes listed in git-rev-parse
+(( $+functions[__git_revisions] )) ||
 __git_revisions () {
   __git_commits $*
 }
 
+(( $+functions[__git_commits2] )) ||
 __git_commits2 () {
   compset -P '\\\^'
   __git_commits
 }
 
+(( $+functions[__git_commit_ranges] )) ||
+__git_commit_ranges () {
+  compset -P '*..'
+  __git_commits $*
+}
+
 # FIXME: these should be imported from _ssh
 # TODO: this should take -/ to only get directories
 _remote_files () {
@@ -1596,6 +2494,7 @@
   fi
 }
 
+(( $+functions[__git_remote_repository] )) ||
 __git_remote_repository () {
   local service
 
@@ -1604,19 +2503,27 @@
   if compset -P '*:'; then
     _remote_files
   else
-    _alternative \
-      'directories::_directories' \
-      'hosts:host:_ssh_hosts -S:'
+    _ssh_hosts -S:
   fi
 }
 
+(( $+functions[__git_repository] )) ||
+__git_repository () {
+  _alternative \
+    'directories::_directories' \
+    'remote repositories::__git_remote_repository'
+}
+
 # should also be $GIT_DIR/remotes/origin
+(( $+functions[__git_any_repositories] )) ||
 __git_any_repositories () {
   _alternative \
-    'files::_files' \
+    'directories::_directories' \
+    'remotes::__git_remotes' \
     'remote repositories::__git_remote_repository'
 }
 
+(( $+functions[__git_remotes] )) ||
 __git_remotes () {
   local expl gitdir remotes
 
@@ -1640,6 +2547,7 @@
   fi
 }
 
+(( $+functions[__git_ref_specs] )) ||
 __git_ref_specs () {
   if compset -P '*:'; then
     __git_heads
@@ -1653,36 +2561,39 @@
   fi
 }
 
+(( $+functions[__git_signoff_file] )) ||
 __git_signoff_file () {
   _alternative \
     'signoffs:signoff:(yes true me please)' \
     'files:signoff file:_files'
 }
 
+(( $+functions[__git_tag_ids] )) ||
 __git_tag_ids () {
 }
 
+(( $+functions[__git_heads_or_tags] )) ||
 __git_heads_or_tags () {
   local expl
-  typeset -a refs opts
-  typeset -A ours
+  declare -a refs opts
+  declare -A ours
 
   zparseopts -K -D -a opts S: M: J: V: 1 2 n F: X: P:=ours T:=ours
 
   (( $+ours[-P] )) || ours[-P]=./.
 
-  refs=(${${"${(@f)$(git ls-remote --$ours[-T] $ours[-P] 2>/dev/null)}"#*$'\t'}#refs/$ours[-T]/})
-  if (( $? == 0 )); then
-    _wanted $ours[-T] expl $ours[-T] compadd $opts - $refs
-  else
-    _message 'not a git repository'
-  fi
+  refs=(${${${${(f)"$(_call_program $ours[-T] git ls-remote --$ours[-T] $ours[-P] 2>/dev/null)"}#*$'\t'}:#*\^*}#refs/$ours[-T]/})
+  __git_command_successful || return
+
+  _wanted $ours[-T] expl $ours[-T] compadd $opts - $refs
 }
 
+(( $+functions[__git_heads] )) ||
 __git_heads () {
   __git_heads_or_tags $* -T heads && ret=0
 }
 
+(( $+functions[__git_tags] )) ||
 __git_tags () {
   __git_heads_or_tags $* -T tags && ret=0
 }
@@ -1694,6 +2605,7 @@
 # __git_heads and __git_tags)
 # TODO: instead of "./.", we should be looking in the repository specified as
 # an argument to the command (but default to "./." I suppose (why not "."?))
+(( $+functions[__git_references] )) ||
 __git_references () {
 #  _alternative \
 #    'heads::__git_heads' \
@@ -1702,17 +2614,28 @@
 
   # TODO: deal with GIT_DIR
   if [[ $_git_refs_cache_pwd != $PWD ]]; then
-    _git_refs_cache=(${${"${(@f)$(git ls-remote ./. 2>/dev/null)}"#*$'\t'}#refs/(heads|tags)/})
+    _git_refs_cache=(${${${(f)"$(_call_program references git ls-remote ./. 2>/dev/null)"}#*$'\t'}#refs/(heads|tags)/})
+    __git_command_successful || return
     _git_refs_cache_pwd=$PWD
   fi
 
-  if (( $? == 0 )); then
-    _wanted references expl 'references' compadd - $_git_refs_cache
-  else
-    _message 'not a git repository'
+  _wanted references expl 'references' compadd - $_git_refs_cache
+}
+
+(( $+functions[__git_local_references] )) ||
+__git_local_references () {
+  local expl
+
+  if [[ $_git_local_refs_cache_pwd != $PWD ]]; then
+    _git_local_refs_cache=(${${${(f)"$(_call_program references git ls-remote ./. 2>/dev/null)"}#*$'\t'}#refs/})
+    __git_command_successful || return
+    _git_local_refs_cache_pwd=$PWD
   fi
+
+  _wanted references expl 'references' compadd - $_git_local_refs_cache
 }
 
+(( $+functions[__git_branch_names] )) ||
 __git_branch_names () {
   local expl
   declare -a branch_names
@@ -1723,6 +2646,253 @@
   _wanted branch-names expl branch-name compadd $* - $branch_names
 }
 
+(( $+functions[__git_config_name] )) ||
+__git_config_name () {
+  local label=names
+
+  declare -a names
+
+  if [[ -prefix alias.* ]]; then
+    _message 'command-alias name'
+  elif [[ -prefix branch.*.* ]]; then
+    compset -P 'branch.*.'
+
+    names=(
+      'remote:what remote git-fetch should fetch'
+      'merge:default refspec to be marked for merging')
+  elif [[ -prefix branch.* ]]; then
+    compset -P 'branch.'
+
+    __git_branch_names -S '.' -r '.'
+    return
+  elif [[ -prefix remote.*.* ]]; then
+    compset -P 'remote.*.'
+
+    names=(
+      'url:URL of a remote repository'
+      'fetch:default set of refspecs for git-fetch'
+      'push:default set of refspecs for git-push'
+      'skipDefaultUpdate:whether to skip this remote when running git-remote'
+      'receivepack:default program to execute on remote when pushing'
+      'uploadpack:default program to execute on remote when fetching'
+      'tagopt:options for retrieving remote tags')
+  elif [[ -prefix remote.* ]]; then
+    compset -P 'remote.'
+
+    __git_remotes -S '.' -r '.'
+    return
+  elif [[ -prefix remotes.* ]]; then
+    compset -P 'remotes.'
+
+    __git_remote-groups
+    return 
+  elif [[ -prefix gitcvs.* ]]; then
+    names=(
+      'enabled:whether the cvs pserver interface is enabled'
+      'logfile:name of log file for cvs pserver'
+      'allbinary:whether to treat all files from CVS as binary')
+
+    if [[ -prefix gitcvs.*.* ]]; then
+      compset -P 'gitcvs.*.'
+
+      label="gitcvs ${${words[CURRENT]#gitcvs.}%.*}-specific setting"
+    else
+      compset -P 'gitcvs.'
+
+      label='gitcvs setting'
+
+      names+=(
+        'dbname:name of database to use'
+        'dbdriver:name of DBI driver to use'
+        'dbuser:username to connect to database as'
+        'dbpass:password to use when connecting to database')
+
+      declare -a suffixed_names
+      suffixed_names=(
+        'ext:ext-connection-method-specific settings'
+        'pserver:pserver-connection-method-specific settings')
+
+      _describe -t suffixed-names 'gitcvs connection-specific setting' suffixed_names -M 'm:{a-zA-Z}={A-Za-z}' -M 'r:|.=* r:|=*' -S '.' -r '.' && ret=0
+    fi
+  elif [[ -prefix svn-remote.*.* ]]; then
+    compset -P 'svn.*.'
+
+    label="git-svn ${${words[CURRENT]#svn.}%.*}-specific setting"
+
+    names=(
+      'noMetadata:disable git-svn-id\: lines at end of commits (fetch, clone, dcommit, set-tree, rebase)'
+      'useSvmProps:whether to use remappings of URLs and UUIDs from mirrors (fetch, clone, dcommit, set-tree, rebase)'
+      'useSvnsyncProps:similar to useSvmProps, but for the svnsync command (fetch, clone, dcommit, set-tree, rebase)'
+      'rewriteRoot:alternate root URL to use')
+
+  elif [[ -prefix svn-remote.* ]]; then
+    compset -P 'svn-remote.'
+
+    __git_svn-remotes -M 'm:{a-zA-Z}={A-Za-z}' -M 'r:|.=* r:|=*' -S '.' -r '.' && ret=0
+    return
+  else
+    names=(
+      'core.fileMode:whether differences in the executable bit is relevant'
+      "core.autocrlf:what type of conversion of CRLF's git should do"
+      'core.symlinks:whether symlinks are treated as special files or not'
+      'core.gitProxy:command to execute to establish a connection to remote server'
+      'core.ignoreStat:whether modification times of files are ignored'
+      'core.preferSymlinkRefs:whether symbolic-reference files should be symlinks'
+      'core.bare:whether this repository has a working tree or not'
+      'core.logAllRefUpdates:whether to log updates of references'
+      'core.repositoryFormatVersion:internal variable determining the repository version'
+      'core.sharedRepository:what kind of sharing is done for this repository'
+      'core.warnAmbiguousRefs:whether to warn if a ref name is ambiguous'
+      'core.compression:level of compression to apply to packs'
+      'core.legacyheaders:whether to use the legacy object-header-format'
+      'core.packedGitWindowSize:size of mappings of pack files'
+      'core.packedGitLimit:maximum number of bytes to map from pack files'
+      'core.deltaBaseCacheLimit:maximum size of cache for base objects'
+      'apply.whitespace:default value for the --whitespace option to git-apply'
+      'color.branch:when to color output of git-branch'
+      'color.branch.current:color of the current branch'
+      'color.branch.local:color of a local branch'
+      'color.branch.remote:color of a remote branch'
+      'color.branch.plain:color of other branches'
+      'color.diff:when to color diff output'
+      'color.diff.plain:color of context text'
+      'color.diff.meta:color of metainformation'
+      'color.diff.frag:color of hunk headers'
+      'color.diff.old:color of removed lines'
+      'color.diff.new:color of added lines'
+      'color.diff.commit:color of commit headers'
+      'color.diff.whitespace:color of dubious whitespace'
+      'color.pager:whether the pager is fed colored output'
+      'color.status:when to color output of git-status'
+      'color.status.header:color of header text'
+      'color.status.added:color of added, but not yet committed, files'
+      'color.status.updated:color of updated, but not yet committed, files'
+      'color.status.changed:color of changed, but not yet added in the index, files'
+      'color.status.untracked:color of files not currently being tracked'
+      'diff.renameLimit:number of files to consider when detecting copy/renames'
+      'diff.renames:how hard to try to detect renames'
+      'fetch.unpackLimit:maximum number of objects to unpack when fetching'
+      'format.headers:additional email headers to include in email patches'
+      'format.suffix:default suffix for output files from git-format-patch'
+      'gc.packrefs:whether to allow git-gc to run git-pack-refs or not'
+      'gc.reflogexpire:default age for "git reflog expire"'
+      'gc.reflogexpireunreachable:default age for "git reflog expire" for unreachable'
+      'gc.rerereresolved:number of days to keep records of resolved merges'
+      'gc.rerereunresolved:number of days to keep records of unresolved merges'
+      'http.sslVerify:whether to verify the SSL certificate for HTTPS'
+      'http.sslCert:file containing SSL certificates for HTTPS'
+      'http.sslKey:file containing the SSL private key for HTTPS'
+      'http.sslCAInfo:file containing CA certificates to verify against for HTTPS'
+      'http.sslCAPath:path containing files with CA certificates to verify against for HTTPS'
+      'http.maxRequests:how many HTTP requests to launch in parallel'
+      'http.lowSpeedLimit:lower limit for HTTP transfer-speed'
+      'http.lowSpeedTime:duration for http.lowSpeedLimit'
+      'http.noEPSV:whether to disable the use of the EPSV ftp-command'
+      'i18n.commitEncoding:character encoding commit messages are stored in'
+      'i18n.logOutputEncoding:character encoding commit messages are output in'
+      'log.showroot:whether to show initial commit as a diff against an empty tree or not'
+      'merge.summary:whether to include summaries of merged commits'
+      'merge.tool:tool to use for merges (by git-mergetool)'
+      'merge.verbosity:amount of output shown by recursive merge strategy'
+      'pack.window:size of window used by git-pack-objects'
+      'pull.octopus:default merge strategy to use when pulling multiple branches'
+      'pull.twohead:default merge strategy to use when pulling a single branch'
+      'repack.usedeltabaseoffset:whether to allow git-repack to use delta-base offsets'
+      'show.difftree:default git-diff-tree options for git-show'
+      'showbranch.default:default set of branches for git-show-branch'
+      'tar.umask:umask to apply for git-tar-tree'
+      'user.email:email address used for commits'
+      'user.name:full name used for commits'
+      'user.signingkey:default GPG key to use when creating signed tags'
+      'whatchanged.difftree:default git-diff-tree arguments for git-whatchanged'
+      'receive.unpackLimit:maximum number of objects to unpack when pushing'
+      'receive.denyNonFastforwards:whether git-receive-pack denies ref updates which are not fast-forwards'
+      'transfer.unpackLimit:default value for fetch.unpackLimit and receive.unpackLimit'
+      'imap.Folder:IMAP folder to use with git-imap-send'
+      'imap.Tunnel:tunneling command to use for git-imap-send'
+      'imap.Host:host git-imap-send should connect to'
+      'imap.User:user git-imap-send should log in as'
+      'imap.Pass:password git-imap-send should use when logging in'
+      'imap.Port:port git-imap-send should connect on'
+      'instaweb.local:whether instaweb should bind to 127.0.0.1'
+      'instaweb.httpd:HTTP-daemon command-line to execute for instaweb'
+      'instaweb.port:port to bind HTTP daemon to for instaweb'
+      'instaweb.browser:web-browser command-line to execute for instaweb'
+      'instaweb.modulepath:module path for the Apache HTTP-daemon for instaweb'
+      'svn.noMetadata:disable git-svn-id\: lines at end of commits (fetch, clone, dcommit, set-tree, rebase)'
+      'svn.useSvmProps:whether to use remappings of URLs and UUIDs from mirrors (fetch, clone, dcommit, set-tree, rebase)'
+      'svn.useSvnsyncProps:similar to useSvmProps, but for the svnsync command (fetch, clone, dcommit, set-tree, rebase)'
+      'svn.followparent:whether to follow parent commit (fetch, clone, dcommit, set-tree, rebase)'
+      'svn.authorsfile:default authors file to use (fetch, clone, dcommit, set-tree, rebase)'
+      'svn.username:username to use for SVN transport (fetch, clone, dcommit, set-tree, rebase, init)'
+      'svn.configdir:configuration directory to use (fetch, clone, dcommit, set-tree, rebase, init)'
+      'svn.noauthcache:undocumented (fetch, clone, dcommit, set-tree, rebase, init)'
+      'svn.quiet:make git-svn less verbose (fetch, clone, dcommit, set-tree, rebase)'
+      'svn.repack:repack files (for given number of revisions) (fetch, clone, dcommit, set-tree, rebase)'
+      'svn.repackflags:flags to pass to git-repack (fetch, clone, dcommit, set-tree, rebase)'
+      'svn.logwindowsize:undocumented (fetch, clone, dcommit, set-tree, rebase)'
+      'svn.shared:share repository amongst several users (init, clone)'
+      'svn.template:directory to use as a template for the object database (init, clone)'
+      'svn.trunk:trunk sub-directory to use (init, clone)'
+      'svn.tags:tags sub-directory to use (init, clone)'
+      'svn.branches:branches sub-directory to use (init, clone)'
+      'svn.prefix:prefix to use for names on remotes (init, clone)'
+      'svn.rmdir:remove empty directories from SVN tree after commit (dcommit, set-tree, commit-diff)'
+      'svn.edit:edit commit message before committing (dcommit, set-tree, commit-diff)'
+      'svn.findcopiesharder:try harder to find copies (dcommit, set-tree, commit-diff)'
+      'svn.l:limit number of rename/copy targets to run (dcommit, set-tree, commit-diff)'
+      'svn.copysimilarity:undocumented (dcommit, set-tree, commit-diff)'
+      'svn.revision:only use given revision or revision range (fetch, clone, show-ignore, log, commit-diff)'
+      'svn.merge:use merging strategies, if necessary (dcommit, rebase)'
+      'svn.fetch-all:undocumented (fetch, dcommit, rebase)'
+      'svn.stdin:read list of commits to commit from stdin (set-tree)'
+      'svn.strategy:use given merge strategy (dcommit, rebase)'
+      'svn.verbose:output extra information (dcommit, log, rebase)'
+      'svn.dryrun:output git-commands that would show diffs that would be committed (dcommit)'
+      'svn.minimize:undocumented (migrate)'
+      'svn.limit:like --max-count, but not counting merged/excluded commits (log)'
+      'svn.incremental:give output suitable for concatenation (log)'
+      'svn.showcommit:output git commit SHA-1, as well (log)'
+      'svn.oneline:similar to --pretty=oneline (log)'
+      'svn.color:undocumented (log)'
+      'svn.pager:undocumented (log)'
+      'svn.nonrecursive:undocumented (log)'
+      'svn.local:undocumented (rebase)'
+      'svn.message:undocumented (commit-diff)'
+      'svn.file:(commit-diff) undocumented')
+
+    declare -a suffixed_names
+
+    suffixed_names=(
+      'alias:command aliases'
+      'branch:prefix for branch-specific variables'
+      'remote:prefix for remote-repository variables'
+      'remotes:prefix for remote-groups'
+      'gitcvs:prefix for git-cvsserver-specific variables'
+      'svn-remote:prefix for git-svn remote-repository variables')
+
+    _describe -t suffixed-names 'special name' suffixed_names -M 'm:{a-zA-Z}={A-Za-z}' -M 'r:|.=* r:|=*' -S '.' -r '.' && ret=0
+  fi
+
+  _describe -t names $label names -M 'm:{a-zA-Z}={A-Za-z}' -M 'r:|.=* r:|=*' && ret=0
+}
+
+(( $+functions[__git_config_gettable_name] )) ||
+__git_config_gettable_name () {
+  local expl
+  declare -a names
+
+  # TODO: This is strictly not correct, as names can have equal signs in them
+  # as well.  However, there’s no good way to tell from the output of
+  # git-config, so this’ll have to do until we write our own .git/config
+  # parser (which will never happen because it’s not worth the trouble).
+  names=(${${(f)"$(_call_program names git config --list)"}%%\=*})
+  __git_command_successful || return
+
+  _wanted names expl 'names' compadd $names
+}
+
+(( $+functions[__git_config_filtered_gettable_name] )) ||
 __git_config_filtered_gettable_name () {
   local expl
   declare -a names
@@ -1735,31 +2905,716 @@
   _wanted $2 expl $3 compadd $names
 }
 
+(( $+functions[__git_remote-groups] )) ||
 __git_remote-groups () {
   __git_config_filtered_gettable_name 'remotes' remote-groups 'remote-groups'
 }
 
-__git_local_references () {
+(( $+functions[__git_svn-remotes] )) ||
+__git_svn-remotes () {
   local expl
+  declare -a names
 
-  if [[ $_git_local_refs_cache_pwd != $PWD ]]; then
-    _git_local_refs_cache=(${${"${(@f)$(git ls-remote ./. 2>/dev/null)}"#*$'\t'}#refs/})
-    _git_local_refs_cache_pwd=$PWD
-  fi
+  # TODO: See __git_config_gettable_name for discussion on how to actually get
+  # out the names, skipping the values.
+  names=(${${${(M)${${(f)"$(_call_program $2 git config --list)"}%%\=*}:#svn-remote.*}#svn-remote.}%%.*})
+  __git_command_successful || return
 
-  if (( $? == 0 )); then
-    _wanted references expl 'references' compadd - $_git_local_refs_cache
-  else
-    _message 'not a git repository'
+  _wanted svn-remotes expl 'svn remote' compadd $names
+}
+
+# TODO: It’d be really cool if both the default and the current value could be
+# shown for all values.
+(( $+functions[__git_config_values] )) ||
+__git_config_values () {
+  local compadd_opts
+
+  zparseopts -D -E -a compadd_opts M: J: V: 1 2 n F: X:
+
+  case $1 in
+    ((#i)core.fileMode)
+      declare -a booleans
+
+      booleans=(
+        {true,yes}':track changes to executable bit of files'
+        {false,no}':ignore changes to executable bit of files')
+
+      _describe -t boolean 'boolean' booleans
+      ;;
+    ((#i)core.autocrlf)
+      declare -a modes
+
+      modes=(
+        {true,yes}':convert CRLF to LF when reading and LF to CRLF when writing'
+        {false,no}':leave CRLF at the end of lines in text files as is'
+        'input:convert CRLF to LF when reading')
+
+      _describe -t crlfmode 'crlf mode' modes
+      ;;
+    ((#i)core.symlinks)
+      declare -a booleans
+
+      booleans=(
+        {true,yes}':record symlink files as such'
+        {false,no}':check out symlinks as plain files that contain the link text')
+
+      _describe -t boolean 'boolean' booleans
+      ;;
+    ((#i)core.gitProxy)
+      _message 'proxy command'
+      ;;
+    ((#i)core.ignoreStat)
+      declare -a booleans
+
+      booleans=(
+        {true,yes}':working-copy files are unchanged until marked as changed'
+        {false,no}':use lstat() to determine if a file has changed')
+
+      _describe -t boolean 'boolean' booleans
+      ;;
+    ((#i)core.preferSymlinkRefs)
+      declare -a booleans
+
+      booleans=(
+        {true,yes}':use symbolic links for symbolic reference files'
+        {false,no}':use "symref" files for symbolic reference files')
+
+      _describe -t boolean 'boolean' booleans
+      ;;
+    ((#i)core.bare)
+      declare -a booleans
+
+      booleans=(
+        {true,yes}':the repository does not have a working directory'
+        {false,no}':the repository has a working directory')
+
+      _describe -t boolean 'boolean' booleans
+      ;;
+    ((#i)core.logAllRefUpdates)
+      declare -a booleans
+
+      booleans=(
+        {true,yes}':create ref files for branch heads'
+        {false,no}":don't automatically create ref files")
+
+      _describe -t boolean 'boolean' booleans
+      ;;
+    ((#i)core.repositoryFormatVersion)
+      _message 'repository format version string (internal)'
+      ;;
+    ((#i)core.sharedRepository)
+      __git_repository_permissions
+      ;;
+    ((#i)core.warnAmbiguousRefs)
+      declare -a booleans
+
+      booleans=(
+        {true,yes}':warn if a ref name matches multiple refs'
+        {false,no}':ignore ambiguous ref names')
+      
+      _describe -t boolean 'boolean' booleans
+      ;;
+    ((#i)core.compression)
+      declare -a levels
+
+      levels=(
+        '-1:default level of compression'
+        '0:do not deflate files'
+        '1:minimum compression'
+        '2:a little more compression'
+        '3:slightly more compression'
+        '4:a bit more compression'
+        '5:even more compression'
+        '6:slightly even more compression'
+        '7:getting there'
+        '8:close to maximum compression'
+        '9:maximum compression')
+
+      _describe -t compression-level 'compression level' levels
+      ;;
+    ((#i)core.legacyheaders)
+      declare -a booleans
+
+      booleans=(
+        {true,yes}':use compatiblity format for loose objects'
+        {false,no}':use new, more efficient, format for loose objects')
+
+      _describe -t boolean 'boolean' booleans
+      ;;
+    ((#i)core.(packedGit(WindowSize|Limit)|deltaBaseCacheLimit))
+      _guard '[[:digit:]]#([kmg]|)' 'number of bytes'
+      ;;
+    ((#i)alias.*)
+      _message 'git sub-command with arguments'
+      ;;
+    ((#i)apply.whitespace)
+      __git_apply_whitespace_strategies
+      ;;
+    ((#i)branch.*.remote)
+      __git_remotes
+      ;;
+    ((#i)branch.*.merge)
+      __git_references
+      ;;
+    ((#i)color.(branch|diff|pager|status))
+      declare -a booleans
+
+      booleans=(
+        {always,true}':always output in color'
+        {never,false}':never output in color'
+        'auto:output in color if to a terminal')
+
+      _describe -t boolean 'boolean' booleans
+      ;;
+    ((#i)color.*.*)
+      compset -P '* '
+
+      case ($words[CURRENT]) in
+        (?*' '?*' '*)
+          if [[ $words[CURRENT] == *(bold|dim|ul|blink|reverse)* ]]; then
+            __git_colors
+          else
+            __git_color_attributes
+          fi
+          ;;
+        (*)
+          local suffix q_flag
+          if [[ $words[CURRENT] == [\"\']* ]]; then
+            suffix=' '
+            q_flag=-q
+          else
+            suffix='\ '
+          fi
+
+          if [[ $words[CURRENT] == *(bold|dim|ul|blink|reverse)* ]]; then
+            __git_colors -S $suffix $q_flag
+          else
+            _alternative \
+              'colors:color:__git_colors -S $suffix $q_flag' \
+              'attributes:attribute:__git_color_attributes -S $suffix $q_flag'
+          fi
+          ;;
+      esac
+      ;;
+    ((#i)diff.renameLimit)
+      _guard "[[:digit:]]#" number
+      ;;
+    ((#i)diff.renames)
+      declare -a settings
+
+      settings=(
+        {true,yes}':enable basic rename detection'
+        {false,no}":don't try to detect renames"
+        {copies,copy}':detect file renames and copies')
+
+      _describe -t values 'rename-detection setting' settings
+      ;;
+    ((#i)(fetch|receive|transfer).unpackLimit)
+      _guard "[[:digit:]]#" 'maximum number of objects to unpack'
+      ;;
+    ((#i)format.headers)
+      _message 'email header'
+      ;;
+    ((#i)format.suffix)
+      _message 'filename suffix'
+      ;;
+    ((#i)gc.packrefs)
+      declare -a values
+
+      values=(
+        {true,yes}':pack references when collecting garbage'
+        {false,no}':leave references alone when collecting garbage'
+        'notbare:pack references if the repository has a working directory')
+
+      _describe -t values 'value' values
+      ;;
+    ((#i)gc.(reflogexpire(unreachable|)|rerere(un|)resolved))
+      # TODO: It would be nice if the default value was shown under a separate
+      # description/tag.
+      __git_datetimes
+      ;;
+    ((#i)gitcvs.(*.|)enabled)
+      declare -a booleans
+
+      booleans=(
+        {true,yes}':enable the cvs server interface'
+        {false,no}":don't enable the cvs server interface")
+
+      _describe -t booleans 'boolean' booleans
+      ;;
+    ((#i)gitcvs.(*.|)logfile)
+      _files
+      ;;
+    ((#i)gitcvs.(*.|)allbinary)
+      declare -a booleans
+
+      booleans=(
+        {true,yes}':tell the client to treat all files as binary'
+        {false,no}':treat files normally')
+
+      _describe -t booleans 'boolean' booleans
+      ;;
+    ((#i)gitcvs.dbname)
+      # TODO: In the future, when computers are self-aware and this won’t
+      # really matter anymore, one could inspect what gitcvs.dbdriver is set to
+      # and complete possible databases for that DBI driver.
+      _message -e 'database name'
+      ;;
+    ((#i)gitcvs.dbdriver)
+      declare -a drivers
+
+      # TODO: Would be nice to only include those that are installed, but I
+      # couldn’t figure out a good way of doing that when I wrote this code.
+      drivers=(
+        'SQLite:use the SQLite database driver (default)'
+        'Pg:use the Pg database driver')
+
+      _describe -t dbi-drivers 'DBI driver' drivers
+      ;;
+    ((#i)gitcvs.dbuser)
+      local expl
+
+      _description users expl 'database user'
+      _users $expl
+      ;;
+    ((#i)gitcvs.dbpass)
+      _message -e 'database password'
+      ;;
+    ((#i)http.sslVerify)
+      declare -a booleans
+
+      booleans=(
+        {true,yes}':verify SSL certificates when fetching or pushing over HTTP'
+        {false,no}':skip verification of SSL certificates')
+
+      _describe -t booleans 'boolean' booleans
+      ;;
+    ((#i)http.sslCert)
+      local expl
+
+      _wanted files expl 'SSL certificate file' _files
+      ;;
+    ((#i)http.sslKey)
+      local expl
+
+      _wanted files expl 'SSL private-key file' _files
+      ;;
+    ((#i)http.sslCAInfo)
+      local expl
+
+      _wanted files expl 'certificates file' _files
+      ;;
+    ((#i)http.sslCAPath)
+      local expl
+
+      _wanted files expl 'CA certificates file' _files
+      ;;
+    ((#i)http.maxRequests)
+      _guard "[[:digit:]]#" 'maximum number of requests'
+      ;;
+    ((#i)http.lowSpeedLimit)
+      # TODO: Need a better description
+      _guard "[[:digit:]]#([kmg]|)" number
+      ;;
+    ((#i)http.lowSpeedTime)
+      _guard "[[:digit:]]#" seconds
+      ;;
+    ((#i)http.noEPSV)
+      declare -a booleans
+
+      booleans=(
+        {true,yes}":don't use EPSV mode over FTP (for stupid servers)"
+        {false,no}':use EPSV mode over FTP')
+
+      _describe -t booleans 'boolean' booleans
+      ;;
+    ((#i)i18n.(commitEncoding|logOutputEncoding))
+      __git_encodings
+      ;;
+    ((#i)log.showroot)
+      declare -a booleans
+
+      booleans=(
+        {true,yes}':show initial commit as a diff against an empty tree'
+        {false,no}':hide initial commit')
+
+      _describe -t booleans 'boolean' booleans
+      ;;
+    ((#i)merge.summary)
+      declare -a booleans
+
+      # TODO: Use (default) in more descriptions.
+      booleans=(
+        {true,yes}':include summaries in merge commit messages'
+        {false,no}":don't add summaries to merge commit messages (default)")
+
+      _describe -t booleans 'boolean' booleans
+      ;;
+    ((#i)merge.tool)
+      declare -a tools
+
+      tools=(kdiff3 tkdiff meld xxdiff emerge vimdiff)
+
+      _describe -t merge-tools 'merge tool' tools
+      ;;
+    ((#i)merge.verbosity)
+      declare -a levels
+
+      levels=(
+        '0:only final error message if conflicts were detected'
+        '1:conflicts'
+        '2:conflicts and file changes'
+        '5:debugging information')
+
+      _describe -t verbosity-levels 'verbosity level' levels
+      ;;
+    ((#i)pack.window)
+      _guard '[[:digit:]]#' 'window size'
+      ;;
+    ((#i)pull.(octopus|twohead))
+      __git_merge_strategies
+      ;;
+    ((#i)remote.*.url)
+      _urls
+      ;;
+    ((#i)remote.*.fetch)
+      : TODO
+      ;;
+    ((#i)remote.*.push)
+      : TODO
+      ;;
+    ((#i)remote.*.skipDefaultUpdate)
+      declare -a booleans
+
+      booleans=(
+        {true,yes}':skip this remote by default'
+        {false,no}':update this remote by default')
+
+      _describe -t booleans 'boolean' booleans
+      ;;
+    ((#i)remote.*.(receivepack|uploadpack))
+      # TODO: Perhaps actually use SSH here?
+      local expl
+
+      _wanted files expl "remote git-${${1##*.}%pack}-pack program" _files -g *(*)
+      ;;
+    ((#i)remote.*.tagopt)
+      declare -a opts
+
+      opts=(
+        "--no-tags:don't fetch tags automatically"
+        '"":fetch tags as usual')
+
+      _describe -t tag-options 'tag retrieval' opts
+      ;;
+    ((#i)remotes.*)
+      compset -P '* '
+
+      local suffix
+      if [[ $words[CURRENT] == [\"\']* ]]; then
+        suffix=' '
+      else
+        suffix='\ '
+      fi
+
+      # TODO: Should really only complete unique remotes, that is, not the same
+      # remote more than once in the list.
+      __git_remotes -S $suffix -q
+      ;;
+    ((#i)repack.usedeltabaseoffset)
+      declare -a booleans
+
+      booleas=(
+        {true,yes}':allow creation of delta-base-offset packs'
+        {false,no}":don't create delta-base-offset packs")
+
+      _describe -t booleans 'boolean' booleans
+      ;;
+    ((#i)show.difftree)
+      # TODO: This should complete the options available to these two commands.
+      _message 'default options to git-diff-tree and git-show'
+      ;;
+    ((#i)showbranch.default)
+      __git_branch_names
+      ;;
+    ((#i)tar.umask)
+      _alternative \
+        'number: :_guard "[0-7]#" "numeric mode"' \
+        "values:special value:((user:\"use user's current umask\"))"
+      ;;
+    ((#i)user.email)
+      _email_addresses
+      ;;
+    ((#i)user.name)
+      _users
+      ;;
+    ((#i)user.signingkey)
+      __git_gpg_secret_keys
+      ;;
+    ((#i)whatchanged.difftree)
+      # TODO: This should complete the options available to git-diff-tree.
+      _message 'default options to git-diff-tree when invoking git-whatchanged'
+      ;;
+    ((#i)receive.denyNonFastForwards)
+      declare -a booleans
+
+      booleans=(
+        {true,yes}":git-receive-pack will deny a ref update that isn't a fast forward"
+        {false,no}":allow a ref update that isn't a fast forward")
+
+      _describe -t booleans 'boolean' booleans
+      ;;
+    ((#i)imap.folder)
+      _mailboxes
+      ;;
+    ((#i)imap.tunnel)
+      _message -e commands 'imap tunneling command'
+      ;;
+    ((#i)imap.host)
+      _hosts
+      ;;
+    ((#i)imap.user)
+      # TODO: If imap.host is set, complete users on that system?
+      _users
+      ;;
+    ((#i)imap.pass)
+      _message -e passwords 'imap password'
+      ;;
+    ((#i)imap.port)
+      _ports
+      ;;
+    ((#i)instaweb.local)
+      declare -a booleans
+
+      booleans=(
+        {true,yes}':bind the HTTP daemon to 127.0.0.1'
+        {false,no}":don't bind the HTTP daemon to a specific address")
+
+      _describe -t booleans 'boolean' booleans
+      ;;
+    ((#i)instaweb.httpd)
+      _message -e command-lines 'HTTP-daemon command-line'
+      ;;
+    ((#i)instaweb.port)
+      _ports
+      ;;
+    ((#i)instaweb.browser)
+      _message -e command-lines 'web-browser command-line'
+      ;;
+    ((#i)instaweb.modulepath)
+      local expl
+
+      _description directories expl 'module path'
+      _directories $expl
+      ;;
+    ((#i)(svn.|svn-remote.*.)noMetaData)
+      declare -a booleans
+
+      booleans=(
+        {true,yes}':disable git-svn-id: lines at end of commits'
+        {false,no}':add git-svn-id: lines at end of commits')
+
+      _describe -t booleans 'boolean' booleans
+      ;;
+    ((#i)(svn.|svn-remote.*.)(useSvmProps|useSvnsyncProps))
+      declare -a booleans
+
+      booleans=(
+        {true,yes}':remap URLs and UUIDs for mirrors'
+        {false,no}":don't remap URLs and UUIDs for mirrors")
+
+      _describe -t booleans 'boolean' booleans
+      ;;
+    ((#i)svn.followparent)
+      __git_boolean_settings true 'follow parent commit'
+      ;;
+    ((#i)svn.authorsfile)
+      local expl
+
+      _description files expl 'authors-conversion file'
+      _files $expl
+      ;;
+    ((#i)svn.username)
+      _users
+      ;;
+    ((#i)svn.configdir)
+      _directories
+      ;;
+    ((#i)svn.noauthcache)
+      # TODO: Update description once this gets documented.
+      __git_boolean_settings false 'use auth cache'
+      ;;
+    ((#i)svn.quiet)
+      __git_boolean_settings false 'make git-svn less verbose' 'let git-svn produce verbose output'
+      ;;
+    ((#i)svn.repack)
+      _guard '[[:digit:]]#' 'revision limit'
+      ;;
+    ((#i)svn.repackflags)
+      # TODO: Should complete git-repack arguments
+      _message -e 'git-repack flags'
+      ;;
+    ((#i)svn.logwindowsize)
+      # TODO: Update description once this gets documented.
+      _guard '[[:digit:]]#' 'log-window size'
+      ;;
+    ((#i)svn.shared)
+      __git_repository_permissions
+      ;;
+    ((#i)svn.template)
+      # NOTE: This is of course ridiculous, as this can never be useful.  Only
+      # here for completeness.
+      _directories
+      ;;
+    ((#i)svn.(trunk|tags|branches))
+      _alternative \
+        'sub-directories:sub-directory:_directories' \
+        'urls: :_urls' && ret=0
+      ;;
+    ((#i)svn.prefix)
+      _message -e 'prefix'
+      ;;
+    ((#i)svn.rmdir)
+      __git_boolean_settings false 'remove empty directories from SVN tree after commit' 'leave empty directories from SVN tree after commit'
+      ;;
+    ((#i)svn.edit)
+      __git_boolean_settings false 'edit commit message before committing' 'use commit message from SVN'
+      ;;
+    ((#i)svn.findcopiesharder)
+      __git_boolean_settings false 'try harder to find copies' 'use simple copy-finding algorithm'
+      ;;
+    ((#i)svn.l)
+      _guard "[[:digit:]]#" number
+      ;;
+    ((#i)svn.copysimilarity)
+      __git_boolean_settings false 'undocumented'
+      ;;
+    ((#i)svn.revision)
+      __git_svn_revisions
+      ;;
+    ((#i)svn.merge)
+      __git_boolean_settings false 'use merging strategies' "don't try to merge"
+      ;;
+    ((#i)svn.fetch-all)
+      __git_boolean_settings false 'undocumented'
+      ;;
+    ((#i)svn.stdin)
+      __git_boolean_settings false 'read list of commits to commit from stdin' "don't necessarily read list of commits to commit from stdin"
+      ;;
+    ((#i)svn.strategy)
+      __git_merge_strategies
+      ;;
+    ((#i)svn.verbose)
+      __git_boolean_settings false 'output extra information'
+      ;;
+    ((#i)svn.dryrun)
+      __git_boolean_settings false 'output git-commands that would show diffs that would be committed' 'actually run the git commands'
+      ;;
+    ((#i)svn.minimize)
+      __git_boolean_settings false 'undocumented'
+      ;;
+    ((#i)svn.limit)
+      _guard "[[:digit:]]#" limit
+      ;;
+    ((#i)svn.incremental)
+      __git_boolean_settings false 'give output suitable for concatenation'
+      ;;
+    ((#i)svn.showcommit)
+      __git_boolean_settings false 'output git commit SHA-1, as well' "don't output git commit SHA-1"
+      ;;
+    ((#i)svn.online)
+      __git_boolean_settings false 'produce output similar to --pretty=oneline'
+      ;;
+    ((#i)svn.color)
+      __git_boolean_settings false 'undocumented'
+      ;;
+    ((#i)svn.pager)
+      _message -e 'undocumented'
+      ;;
+    ((#i)svn.nonrecursive)
+      __git_boolean_settings false 'undocumented'
+      ;;
+    ((#i)svn.local)
+      __git_boolean_settings false 'undocumented'
+      ;;
+    ((#i)svn.message)
+      _message -e 'undocumented'
+      ;;
+    ((#i)svn.file)
+      _message -e 'undocumented'
+      ;;
+    ((#i)svn-remote.*.rewriteRoot)
+      _message -e 'new root'
+      ;;
+    (*)
+      _message 'value'
+      ;;
+  esac
+}
+
+# __git_boolean_settings [-t TAG] [-l LABEL] DEFAULT 'follow parent commit' ['follow HEAD commit']
+#
+# -t can be used to specify a tag to use (default: booleans).
+# -l can be used to specify a label to use (default: 'boolean').
+# 
+# The first argument is the default value, so that the description of the
+# default value can be suffixed with " (default)".  The second argument
+# is the description for the true value.  If a third argument is given,
+# it is used as the description for the false value.  If it is not given,
+# the description will be the true value's description with the prefix
+# "don't ".
+(( $+functions[__git_boolean_settings] )) ||
+__git_boolean_settings () {
+  local tag label garbage 
+
+  zparseopts -D -E -a garba S: M: J: V: 1 2 n F: X: -t=tag -l=label
+
+  declare -A descriptions
+
+  descriptions=(true $2 false "don't $2")
+
+  if (( $# > 2 )); then
+    descriptions[false]=$3
   fi
+
+  descriptions[$1]+=" (default)"
+
+  declare -a booleans
+
+  booleans=(
+    {true,yes}':'$descriptions[true]
+    {false,no}':'$descriptions[false])
+
+  _describe -t ${tag:-booleans} ${label:-boolean} booleans
 }
 
-# ---
+# TODO: Use this function in other places.
+(( $+functions[__git_colors] )) ||
+__git_colors () {
+  declare -a colors
+
+  colors=(black red green yellow blue magenta cyan white)
 
-__git_is_indexed () {
-  [[ -n $(git ls-files $REPLY) ]]
+  _describe -t colors 'color' colors $*
 }
 
+# TODO: Use this function in other places.
+(( $+functions[__git_color_attributes] )) ||
+__git_color_attributes () {
+  declare -a attributes
+
+  attributes=(bold dim ul blink reverse)
+
+  _describe -t attributes 'attribute' attributes $*
+}
+
+(( $+functions[__git_config_section_names] )) ||
+__git_config_section_names () {
+  # TODO: Come up with a good way of extracting this information.
+  _guard "?#" "section name"
+}
+
+(( $+functions[__git_archive_formats] )) ||
 __git_archive_formats () {
   local expl
   declare -a formats
@@ -1769,3 +3624,84 @@
 
   _wanted archive-formats expl 'archive format' compadd $formats
 }
+
+(( $+functions[__git_gpg_secret_keys] )) ||
+__git_gpg_secret_keys () {
+  local expl
+
+  _wanted secret-keys expl 'secret key' compadd \
+    ${${(Mo)$(_call_program secret-keys gpg --list-secret-keys 2>/dev/null):%<*>}//(<|>)/}
+}
+
+(( $+functions[__git_merge_strategies] )) ||
+__git_merge_strategies () {
+  declare -a merge_strategies_cache
+
+  merge_strategies_cache=(${${=${${(M)${(f)"$(<$(git --exec-path)/git-merge)"}:#all_strategies*}##all_strategies=\'}%%\'}:#recur})
+
+  local expl
+  _wanted merge-strategies expl 'merge strategy' compadd - $merge_strategies_cache
+}
+
+# TODO: Use this in more places.
+(( $+functions[__git_datetimes] )) ||
+__git_datetimes () {
+  _guard "*" 'time specification'
+}
+
+# TODO: Use this in more places.
+# TODO: Use better algorithm, as shown in iconv completer (separate it to a new
+# Type).
+(( $+functions[__git_encodings] )) ||
+__git_encodings () {
+  local expl
+  _wanted encodings expl 'encoding' compadd "$@" \
+    -M 'm:{a-zA-Z}={A-Za-z} r:|-=* r:|=*' \
+    ${${${(f)"$(_call_program encodings iconv --list)"}## #}%//}
+}
+
+(( $+functions[__git_repository_permissions] )) ||
+__git_repository_permissions () {
+  declare -a permissions
+
+  permissions=(
+    {group,true,yes}':files and objects are group-writable'
+    {all,world,everybody}':files and objects are readable by all users and group-shareable'
+    {umask,false}':use permissions reported by umask()')
+
+  _describe -t permissions 'permission' permissions
+}
+
+(( $+functions[__git_apply_whitespace_strategies] )) ||
+__git_apply_whitespace_strategies () {
+  declare -a strategies
+
+  strategies=(
+    'nowarn:turn off the trailing-whitespace warning'
+    'warn:output trailing-whitespace warning, but apply patch'
+    'error:output trailing-whitespace warning and refuse to apply patch'
+    'error-all:same as "error", but output warnings for all files'
+    'strip:output trailing-whitespace warning and strip trailing whitespace')
+
+  _describe -t strategies 'trailing-whitespace resolution strategy' strategies
+}
+
+(( $+functions[__git_svn_revisions] )) ||
+__git_svn_revisions () {
+  if [[ -prefix *: ]]; then
+    compset -P '*:'
+
+    _alternative \
+      'revision-numbers: :__git_svn_revision_numbers' \
+      'symbolic-revisions:symbolic revision:((HEAD\:"the topmost revision of the SVN repository"))'
+  else
+    _alternative \
+      'revision-numbers: :__git_svn_revision_numbers' \
+      'symbolic-revisions:symbolic revision:__git_svn_base_revisions'
+  fi
+}
+
+(( $+functions[__git_svn_revision_numbers] )) ||
+__git_svn_revision_numbers () {
+  _guard "[[:digit:]]#" "revision number"
+}


^ permalink raw reply	[relevance 1%]

* bug in patterns used for filename expansion (e.g. a[b/c]d)
@ 2007-10-09 12:40  4% Vincent Lefevre
  2007-10-09 12:59  0% ` Peter Stephenson
  0 siblings, 1 reply; 200+ results
From: Vincent Lefevre @ 2007-10-09 12:40 UTC (permalink / raw)
  To: zsh-workers

zsh 4.3.4 isn't POSIX-compliant concerning filename expansion and
unmatched [. POSIX[*] says:

  For example, the pattern "a[b/c]d" does not match such pathnames as
  abd or a/d. It only matches a pathname of literally a[b/c]d.

[*] http://www.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_13_03

But with zsh 4.3.4:

prunille% ls a[b/c]d
zsh: no matches found: a[b/c]d

while the file exists (no problem with bash, dash or ksh93). For more
information, see the following thread:

https://www.opengroup.org/sophocles/show_archive.tpl?source=L&listname=austin-group-l&first=1&pagesize=80&searchstring=Defect+in+XCU+2.13.3&zone=G

-- 
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 / Arenaire project (LIP, ENS-Lyon)


^ permalink raw reply	[relevance 4%]

* Re: bug in patterns used for filename expansion (e.g. a[b/c]d)
  2007-10-09 12:40  4% bug in patterns used for filename expansion (e.g. a[b/c]d) Vincent Lefevre
@ 2007-10-09 12:59  0% ` Peter Stephenson
  2007-10-09 14:12  3%   ` Vincent Lefevre
  2007-10-09 15:00  4%   ` Stephane Chazelas
  0 siblings, 2 replies; 200+ results
From: Peter Stephenson @ 2007-10-09 12:59 UTC (permalink / raw)
  To: zsh-workers

Vincent Lefevre wrote:
> zsh 4.3.4 isn't POSIX-compliant concerning filename expansion and
> unmatched [. POSIX[*] says:
> 
>   For example, the pattern "a[b/c]d" does not match such pathnames as
>   abd or a/d. It only matches a pathname of literally a[b/c]d.
> 
> [*] http://www.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#t
> ag_02_13_03
> 
> But with zsh 4.3.4:
> 
> prunille% ls a[b/c]d
> zsh: no matches found: a[b/c]d

As I said on the Austin group list, this isn't a bug.  It's controlled
by the option NOMATCH; you'll find that if zsh is in compatibility mode
that option is unset.

-- 
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


^ permalink raw reply	[relevance 0%]

* Re: bug in patterns used for filename expansion (e.g. a[b/c]d)
  2007-10-09 12:59  0% ` Peter Stephenson
@ 2007-10-09 14:12  3%   ` Vincent Lefevre
  2007-10-09 14:46  4%     ` Peter Stephenson
  2007-10-09 15:24  4%     ` Bart Schaefer
  2007-10-09 15:00  4%   ` Stephane Chazelas
  1 sibling, 2 replies; 200+ results
From: Vincent Lefevre @ 2007-10-09 14:12 UTC (permalink / raw)
  To: zsh-workers

On 2007-10-09 13:59:44 +0100, Peter Stephenson wrote:
> As I said on the Austin group list, this isn't a bug.  It's controlled
> by the option NOMATCH; you'll find that if zsh is in compatibility mode
> that option is unset.

OK, but these compatibility modes are not really clear, e.g. which sh
and which ksh? And what about POSIX?

In particular:

vin:~> mkdir 'a[b'
vin:~> touch 'a[b'/file

vin:~> ksh --version
zsh 4.3.4 (i686-pc-linux-gnu)
vin:~> ksh
$ ls a[b/*
ls: a[b/*: No such file or directory

vin:~> ksh93
$ ls a[b/*
> ksh93: syntax error: `[' unmatched

vin:~> ksh -c 'ls a[b/*'
ls: a[b/*: No such file or directory
vin:~> ksh93 -c 'ls a[b/*'
ls: a[b/*[: No such file or directory

vin:~> touch 'a[b/*'
vin:~> ksh93 -c 'ls a[b/*'
ls: a[b/*[: No such file or directory
vin:~> ksh -c 'ls a[b/*'
a[b/*

-- 
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 / Arenaire project (LIP, ENS-Lyon)


^ permalink raw reply	[relevance 3%]

* Re: bug in patterns used for filename expansion (e.g. a[b/c]d)
  2007-10-09 14:12  3%   ` Vincent Lefevre
@ 2007-10-09 14:46  4%     ` Peter Stephenson
  2007-10-09 15:24  4%     ` Bart Schaefer
  1 sibling, 0 replies; 200+ results
From: Peter Stephenson @ 2007-10-09 14:46 UTC (permalink / raw)
  To: zsh-workers

Vincent Lefevre wrote:
> On 2007-10-09 13:59:44 +0100, Peter Stephenson wrote:
> > As I said on the Austin group list, this isn't a bug.  It's controlled
> > by the option NOMATCH; you'll find that if zsh is in compatibility mode
> > that option is unset.
> 
> OK, but these compatibility modes are not really clear

Yes, I tend to agree with that, although it's partly because the targets
are moving and we haven't tried very hard to keep up.

> e.g. which sh and which ksh? And what about POSIX?

"sh" usually means POSIX with a leaning towards traditional
behaviour where that's not in conflict with the spec.  Anything in "sh"
mode that's definitely in violation of POSIX can be regarded as a bug.
(Whether it's going to get fixed is another matter, as with the long
standing word-splitting niggle that Wayne eventually fixed.)

"ksh" really means ksh88 and it probably ought to be documented as
such.  There have been vague plans to have more recent ksh features but
they need architectural changes.

pws


^ permalink raw reply	[relevance 4%]

* Re: bug in patterns used for filename expansion (e.g. a[b/c]d)
  2007-10-09 12:59  0% ` Peter Stephenson
  2007-10-09 14:12  3%   ` Vincent Lefevre
@ 2007-10-09 15:00  4%   ` Stephane Chazelas
  1 sibling, 0 replies; 200+ results
From: Stephane Chazelas @ 2007-10-09 15:00 UTC (permalink / raw)
  To: zsh-workers

On Tue, Oct 09, 2007 at 01:59:44PM +0100, Peter Stephenson wrote:
> Vincent Lefevre wrote:
> > zsh 4.3.4 isn't POSIX-compliant concerning filename expansion and
> > unmatched [. POSIX[*] says:
> > 
> >   For example, the pattern "a[b/c]d" does not match such pathnames as
> >   abd or a/d. It only matches a pathname of literally a[b/c]d.
> > 
> > [*] http://www.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#t
> > ag_02_13_03
> > 
> > But with zsh 4.3.4:
> > 
> > prunille% ls a[b/c]d
> > zsh: no matches found: a[b/c]d
> 
> As I said on the Austin group list, this isn't a bug.  It's controlled
> by the option NOMATCH; you'll find that if zsh is in compatibility mode
> that option is unset.
[...]

On the other hand:

$ mkdir -p 'a[b/c]d' abd
$ zsh -c 'echo a[b/c]d'
abd
$ ARGV0=sh zsh -c 'echo a[b/c]d'
abd

According to POSIX, it should not match abd.

But I'd agree that POSIX requirement looks a bit silly.

Cheers,
Stéphane


^ permalink raw reply	[relevance 4%]

* Re: bug in patterns used for filename expansion (e.g. a[b/c]d)
  2007-10-09 14:12  3%   ` Vincent Lefevre
  2007-10-09 14:46  4%     ` Peter Stephenson
@ 2007-10-09 15:24  4%     ` Bart Schaefer
  1 sibling, 0 replies; 200+ results
From: Bart Schaefer @ 2007-10-09 15:24 UTC (permalink / raw)
  To: zsh-workers

On Oct 9,  4:12pm, Vincent Lefevre wrote:
} Subject: Re: bug in patterns used for filename expansion (e.g. a[b/c]d)
}
} On 2007-10-09 13:59:44 +0100, Peter Stephenson wrote:
} > As I said on the Austin group list, this isn't a bug.  It's controlled
} > by the option NOMATCH; you'll find that if zsh is in compatibility mode
} > that option is unset.
} 
} OK, but these compatibility modes are not really clear, e.g. which sh
} and which ksh? And what about POSIX?

The intent is that starting zsh as "sh" provides full POSIX compatility.

However, starting zsh as "ksh" has never promised to be 100% compatible
with any version of ksh; it just means that most of the behavior becomes
ksh-like.  Similarly "emulate csh" makes no promise that zsh will be a
drop-in replacement for csh, and even when started as "sh" there is no
specific other-thing-that-calls-itself-"sh" that you can point at to say
"zsh works like that."

That said, the thing zsh-as-ksh is most like is ksh88.
 
} vin:~> ksh --version
} zsh 4.3.4 (i686-pc-linux-gnu)
} vin:~> ksh
} $ ls a[b/*
} ls: a[b/*: No such file or directory
} 
} vin:~> ksh93
} $ ls a[b/*
} > ksh93: syntax error: `[' unmatched

This is exactly the difference between bash and ksh as mentioned on
the austin-group, is it not?

} vin:~> ksh -c 'ls a[b/*'
} ls: a[b/*: No such file or directory
} vin:~> ksh93 -c 'ls a[b/*'
} ls: a[b/*[: No such file or directory

Where'd that extra '[' come from?  I'd say this is a ksh bug.

} vin:~> touch 'a[b/*'
} vin:~> ksh93 -c 'ls a[b/*'
} ls: a[b/*[: No such file or directory
} vin:~> ksh -c 'ls a[b/*'
} a[b/*

Again modulo the extra-bracket bug, this is the bash v. ksh thing.


^ permalink raw reply	[relevance 4%]

* Re: Bug#452915: zsh segfaults when doing: export TERM=dumb; export TERM=xterm; export TERM=dumb
       [not found]     <20071126031203.11847.39822.reportbug@itchy>
@ 2007-11-26  3:25  0% ` Clint Adams
  0 siblings, 0 replies; 200+ results
From: Clint Adams @ 2007-11-26  3:25 UTC (permalink / raw)
  To: zsh-workers; +Cc: Niv Sardi, 452915-forwarded

Lovely stack stomp.

On Mon, Nov 26, 2007 at 02:12:03PM +1100, Niv Sardi wrote:
> zsh-test@itchy:~$ gdb zsh4
> GNU gdb 6.6.90.20070912-debian
> Copyright (C) 2007 Free Software Foundation, Inc.
> License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
> This is free software: you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
> and "show warranty" for details.
> This GDB was configured as "i486-linux-gnu"...
> Using host libthread_db library "/lib/i686/cmov/libthread_db.so.1".
> (gdb) r
> Starting program: /bin/zsh4
> itchy% export TERM=dumb; export TERM=xterm; export TERM=dumb
> %
> Program received signal SIGSEGV, Segmentation fault.
> 0xb7e0fae0 in ?? () from /lib/i686/cmov/libc.so.6
> (gdb) bt
> #0  0xb7e0fae0 in ?? () from /lib/i686/cmov/libc.so.6
> #1  0x00000001 in ?? ()
> #2  0x00000001 in ?? ()
> #3  0x080d2fe0 in ?? ()
> #4  0xb7dc3ca0 in ?? () from /lib/i686/cmov/libc.so.6
> #5  0xbfea7948 in ?? ()
> #6  0xb7ed28da in ?? () from /lib/i686/cmov/libc.so.6
> #7  0xbfea7908 in ?? ()
> #8  0xb7ef0140 in ?? () from /lib/i686/cmov/libc.so.6
> #9  0x00000000 in ?? ()
> 
> zsh-test@itchy:~$ gdb zsh4
> GNU gdb 6.6.90.20070912-debian
> Copyright (C) 2007 Free Software Foundation, Inc.
> License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
> This is free software: you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
> and "show warranty" for details.
> This GDB was configured as "i486-linux-gnu"...
> Using host libthread_db library "/lib/i686/cmov/libthread_db.so.1".
> (gdb) r
> Starting program: /bin/zsh4
> itchy% export TERM=dumb; export TERM=dumb
> itchy% export TERM=dumb; export TERM=xterm; export TERM=dumb
> *** glibc detected *** /bin/zsh4: double free or corruption (fasttop): 0x080e30a0 ***
> ======= Backtrace: =========
> /lib/i686/cmov/libc.so.6[0xb7e70765]
> /lib/i686/cmov/libc.so.6(cfree+0x90)[0xb7e741e0]
> /bin/zsh4(init_term+0x118)[0x807b648]
> /bin/zsh4(setstrvalue+0x38d)[0x809276d]
> /bin/zsh4(assignsparam+0xd7)[0x8095d87]
> /bin/zsh4[0x805a0a9]
> /bin/zsh4(bin_typeset+0x509)[0x805ad79]
> /bin/zsh4(execbuiltin+0x50d)[0x805d07d]
> /bin/zsh4[0x806aa22]
> /bin/zsh4[0x806acd8]
> /bin/zsh4[0x806b0aa]
> /bin/zsh4(execlist+0x415)[0x806be05]
> /bin/zsh4(execode+0x3a)[0x806bffa]
> /bin/zsh4(loop+0xac)[0x807c1bc]
> /bin/zsh4(zsh_main+0x1e4)[0x807ce34]
> /bin/zsh4(main+0x22)[0x8054822]
> /lib/i686/cmov/libc.so.6(__libc_start_main+0xe0)[0xb7e1b450]
> /bin/zsh4[0x8054791]
> ======= Memory map: ========
> 08048000-080c0000 r-xp 00000000 08:0a 6087       /bin/zsh4
> 080c0000-080c4000 rw-p 00077000 08:0a 6087       /bin/zsh4
> 080c4000-080fc000 rw-p 080c4000 00:00 0          [heap]
> b7b00000-b7b21000 rw-p b7b00000 00:00 0
> b7b21000-b7c00000 ---p b7b21000 00:00 0
> b7c38000-b7c44000 r-xp 00000000 08:0a 30168      /lib/libgcc_s.so.1
> b7c44000-b7c45000 rw-p 0000b000 08:0a 30168      /lib/libgcc_s.so.1
> b7c5b000-b7c78000 r-xp 00000000 08:09 296917     /usr/lib/zsh/4.3.4/zsh/complete.so
> b7c78000-b7c79000 rw-p 0001d000 08:09 296917     /usr/lib/zsh/4.3.4/zsh/complete.so
> b7c79000-b7ca6000 r-xp 00000000 08:09 296921     /usr/lib/zsh/4.3.4/zsh/zle.so
> b7ca6000-b7cab000 rw-p 0002d000 08:09 296921     /usr/lib/zsh/4.3.4/zsh/zle.so
> b7cab000-b7cb4000 r-xp 00000000 08:0a 32303      /lib/i686/cmov/libnss_files-2.7.so
> b7cb4000-b7cb6000 rw-p 00008000 08:0a 32303      /lib/i686/cmov/libnss_files-2.7.so
> b7cb6000-b7cbe000 r-xp 00000000 08:0a 32305      /lib/i686/cmov/libnss_nis-2.7.so
> b7cbe000-b7cc0000 rw-p 00007000 08:0a 32305      /lib/i686/cmov/libnss_nis-2.7.so
> b7cc0000-b7cc7000 r-xp 00000000 08:0a 32301      /lib/i686/cmov/libnss_compat-2.7.so
> b7cc7000-b7cc9000 rw-p 00006000 08:0a 32301      /lib/i686/cmov/libnss_compat-2.7.so
> b7cc9000-b7e04000 r--p 00000000 08:09 312529     /usr/lib/locale/locale-archive
> b7e04000-b7e05000 rw-p b7e04000 00:00 0
> b7e05000-b7f4c000 r-xp 00000000 08:0a 32294      /lib/i686/cmov/libc-2.7.so
> b7f4c000-b7f4d000 r--p 00147000 08:0a 32294      /lib/i686/cmov/libc-2.7.so
> b7f4d000-b7f4f000 rw-p 00148000 08:0a 32294      /lib/i686/cmov/libc-2.7.so
> b7f4f000-b7f52000 rw-p b7f4f000 00:00 0
> b7f52000-b7f75000 r-xp 00000000 08:0a 32298      /lib/i686/cmov/libm-2.7.so
> b7f75000-b7f77000 rw-p 00023000 08:0a 32298      /lib/i686/cmov/libm-2.7.so
> b7f77000-b7fa5000 r-xp 00000000 08:0a 30204      /lib/libncurses.so.5.6
> b7fa5000-b7fa8000 rw-p 0002d000 08:0a 30204      /lib/libncurses.so.5.6
> b7fa8000-b7fa9000 rw-p b7fa8000 00:00 0
> b7fa9000-b7fbd000 r-xp 00000000 08:0a 32300      /lib/i686/cmov/libnsl-2.7.so
> b7fbd000-b7fbf000 rw-p 00013000 08:0a 32300      /lib/i686/cmov/libnsl-2.7.so
> b7fbf000-b7fc1000 rw-p b7fbf000 00:00 0
> b7fc1000-b7fc3000 r-xp 00000000 08:0a 32297      /lib/i686/cmov/libdl-2.7.so
> b7fc3000-b7fc5000 rw-p 00001000 08:0a 32297      /lib/i686/cmov/libdl-2.7.so
> b7fc5000-b7fcb000 r-xp 00000000 08:09 296915     /usr/lib/zsh/4.3.4/zsh/zutil.so
> b7fcb000-b7fcc000 rw-p 00005000 08:09 296915     /usr/lib/zsh/4.3.4/zsh/zutil.so
> b7fcc000-b7fce000 r-xp 00000000 08:09 296910     /usr/lib/zsh/4.3.4/zsh/terminfo.so
> b7fce000-b7fcf000 rw-p 00001000 08:09 296910     /usr/lib/zsh/4.3.4/zsh/terminfo.so
> b7fd0000-b7fd4000 rw-p b7fd0000 00:00 0
> b7fd4000-b7fdb000 r--s 00000000 08:09 309855     /usr/lib/gconv/gconv-modules.cache
> b7fdb000-b7fdd000 rw-p b7fdb000 00:00 0
> b7fdd000-b7ff9000 r-xp 00000000 08:0a 30144      /lib/ld-2.7.so
> b7ff9000-b7ffb000 rw-p 0001b000 08:0a 30144      /lib/ld-2.7.so
> bfc50000-bfc66000 rw-p bfc50000 00:00 0          [stack]
> ffffe000-fffff000 r-xp 00000000 00:00 0          [vdso]
> 
> Program received signal SIGABRT, Aborted.
> 0xffffe410 in __kernel_vsyscall ()
> 
> 
> 
> -- System Information:
> Debian Release: lenny/sid
>   APT prefers unstable
>   APT policy: (500, 'unstable'), (500, 'stable'), (1, 'experimental')
> Architecture: i386 (i686)
> 
> Kernel: Linux 2.6.22-3-686 (SMP w/1 CPU core)
> Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
> Shell: /bin/sh linked to /bin/bash
> 
> Versions of packages zsh depends on:
> ii  debconf [debconf-2.0]     1.5.17         Debian configuration management sy
> ii  libc6                     2.7-1          GNU C Library: Shared libraries
> ii  libncurses5               5.6+20071103-1 Shared libraries for terminal hand
> 
> Versions of packages zsh recommends:
> ii  libcap1                       1:1.10-14  support for getting/setting POSIX.
> ii  libpcre3                      7.3-2      Perl 5 Compatible Regular Expressi
> 
> -- no debconf information
> 


^ permalink raw reply	[relevance 0%]

* PATCH: _find: new options
@ 2007-11-30 22:29  5% arno
  0 siblings, 0 replies; 200+ results
From: arno @ 2007-11-30 22:29 UTC (permalink / raw)
  To: zsh-workers

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

Hi,
there have been a few new options since last _find update.
So, here is an updated zsh completion

arno.

--- _find	2007-11-14 20:29:11.000000000 +0100
+++ _find.new	2007-11-30 23:11:59.000000000 +0100
@@ -5,11 +5,16 @@
   '*-depth' \
   '*-follow' \
   '*-help' \
+  '*-ignore_readdir_race' \
   '*-maxdepth:maximum search depth:' \
   '*-mindepth:minimum search depth:' \
   '*-mount' \
+  '*-noignore_readdir_race' \
   '*-noleaf' \
+  '*-regextype:regexp syntax:(emacs posix-awk posix-basic posix-egrep posix-extended)' \
   '*-version' \
+  '*-warn' \
+  '*-nowarn' \
   '*-xdev' \
   '*-amin:access time (minutes):' \
   '*-cmin:inode change time (minutes):' \
@@ -36,17 +41,23 @@
   '*-ipath:path pattern to search (case insensitive):' \
   '*-regex:regular expression to search:' \
   '*-iregex:regular expression to search (case insensitive):' \
+  '*-wholename:full path pattern to search:' \
+  '*-iwholename:full path pattern to search (case insensitive):' \
   '*-inum:inode number:' \
   '*-links:number of links:' \
   '*-nouser' \
   '*-nogroup' \
   '*-perm:file permission bits:' \
   '*-size:file size:' \
+  '*-samefile:same inode as:_files' \
   '*-true' \
   '*-type:file type:((b\:block\ special\ file c\:character\ special\ file d\:directory p\:named\ pipe f\:normal\ file l\:symbolic\ link s\:socket))' \
   '*-xtype:file type:((b\:block\ special\ file c\:character\ special\ file d\:directory p\:named\ pipe f\:normal\ file l\:symbolic\ link s\:socket))' \
+  '*-delete' \
   '*-exec:program: _command_names -e:*\;::program arguments: _normal' \
+  '*-execdir:program: _command_names -e:*\;::program arguments: _normal' \
   '*-ok:program: _command_names -e:*\;::program arguments: _normal' \
+  '*-okdir:program: _command_names -e:*\;::program arguments: _normal' \
   '*-fls:output file:_files' \
   '*-fprint:output file:_files' \
   '*-fprint0:output file:_files' \
@@ -55,5 +66,6 @@
   '*-print0' \
   '*-printf:output format:' \
   '*-prune' \
+  '*-quit' \
   '*-ls' \
   '*:directory:_files -/'

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[relevance 5%]

* Re: deadlock caused by gettext usage in a signal handler
  @ 2007-12-04 18:02  3%   ` Guillaume Chazarain
  0 siblings, 0 replies; 200+ results
From: Guillaume Chazarain @ 2007-12-04 18:02 UTC (permalink / raw)
  To: zsh-workers

Le Mon, 3 Dec 2007 22:43:24 +0000,
Peter Stephenson <p.w.stephenson@ntlworld.com> a écrit :

> zsh doesn't ever use gettext() directly

I overlooked that, great that Zsh does not use strsignal and perror ;-)
Zsh seems to use dlerror though, hopefully not in a signal handler.

> Alternatively, we could use strerror_r()

strerror_r also calls into gettext, so I don't see how this solves the
problem. I have been caught by the gettext initialization as it's a
bigger malloc consumer than a simple gettext call but according to a
comment by Paul Eggert in:

http://cvs.savannah.gnu.org/viewvc/diffutils/lib/c-stack.c?root=diffutils&view=markup

Do not translate them in the signal handler, since gettext is not
async-signal-safe.

You can see that strerror_r calls gettext in:

http://sourceware.org/cgi-bin/cvsweb.cgi/libc/string/_strerror.c?rev=1.1.2.2&content-type=text/x-cvsweb-markup&cvsroot=glibc

return (char *) _(_sys_errlist_internal[errnum]);

> To get diff output for a test failure while I was writing this I needed

Does that mean you managed to make a reproducible test case?

> to use "diff -a" in ztst.zsh.  I'm not sure if the option is universal,
> however.

Confused, I can't see any diff invocation in your patch. From some
googling, POSIX does not specify it
(http://www.opengroup.org/onlinepubs/009695399/utilities/diff.html),
but the BSDs provide it anyway
(http://www.freebsd.org/cgi/man.cgi?query=diff&apropos=0&sektion=0&manpath=FreeBSD+6.0-RELEASE&format=html),
some use GNU diff.

It seems to me a possible solution would be to rewrite strerror() in Zsh
to initially build a static table of translated error messages as
well as the translation of "Unknown error ". Don't know how much this
would delay the Zsh startup though.

Thanks.

-- 
Guillaume


^ permalink raw reply	[relevance 3%]

* Re: Bug#451382: i18n is NOT so easy!
  @ 2007-12-09 22:49  2%                 ` Bart Schaefer
  0 siblings, 0 replies; 200+ results
From: Bart Schaefer @ 2007-12-09 22:49 UTC (permalink / raw)
  To: 451382, zsh-workers

On Dec 9,  6:01pm, Peter Stephenson wrote:
} Subject: Re: Bug#451382: i18n is NOT so easy!
}
} This scheme has various merits: (i) it is robust about changes to
} the English text (ii) the explicit msgid serves as a visual cue that
} there's something here that shouldn't be monkeyed with without good
} reason (and that even if you change the English text it should mean
} the same thing) (iii) the msgid in the catalogues is compact.

This is close to the same scheme that I [*] adopted for localization
of zmail twelve years ago.  Except that we used a two-argument C
macro with the msgid and English text, rather than a delimited string.

We also had a number of tools that massaged the C source to add any new
msgid where a programmer had forgotten to use one, and to extract and
build the default English catalog file which could then be turned over
to translators.  It'd be pretty easy, I expect, to write a perl script
to find $"..." strings in shell scripts and extract them.

I'd be cautious about treating everything up to the first colon in a
$"..." string as a msgid key, though.  Error messages are going to
look like $"thing that failed: reason it failed" a lot of the time.  Or
would that have to be written "thing that failed: "$"reason it failed"
for this to work in the first place?  Anyway, it might be better to
adopt something like $"{msgid}original text" and treat both $"{message}"
and $"message" the same when only one of the two parts is found.

An additional issue that zsh may or may not have to address is that
you need entirely separate strings for things like plurals.  You can't
localize something like:

	There %s %d thing%s in the bucket

where the %s get replaced by "are" and "s" when the %d is not 1, and
"is" and "" otherwise.  You must instead have two strings (sometimes
three for the zero case):

	There are %d things in the bucket
	There is 1 thing in the bucket
	There is nothing in the bucket

There are gobs of other niggling details that I'm sure I've forgotten.

} However, it seems like we can get something better by interfacing to
} the library at a lower level, in particular to catopen() (strictly
} this is a different family of interfaces). That accepts an absolute
} path to a catalogue and also uses the environment variable NLSPATH to
} search for files.

This is also what I did back then in zmail -- gettext() didn't really
even exist yet at that point, at least not in a fully-developed form.
The POSIX cat*() interfaces work just fine, though NLSPATH searching
has some pretty nasty bugs on older operating systems.

[*] That's sort of the royal "I" as actually there was a whole team
of people working for me on it.

-- 


^ permalink raw reply	[relevance 2%]

* Re: "set -o foo" does not fail / does not abort the shell
  @ 2007-12-11 16:35  3%   ` Bart Schaefer
  2007-12-11 16:39  0%     ` Peter Stephenson
  0 siblings, 1 reply; 200+ results
From: Bart Schaefer @ 2007-12-11 16:35 UTC (permalink / raw)
  To: zsh-workers

On Dec 11,  1:56pm, Peter Stephenson wrote:
}
} Vincent Lefevre wrote:
} > I've tried the following with zsh-4.3.4-dev-4:
} > 
} > $ Src/zsh -f -c 'emulate sh; set -o foo; echo "Didn''t abort ($?)"'
} > set: no such option: foo
} > Didn't abort (0)
} > 
} > This is incorrect. The shell should abort as 'set' is a special
} > builtin[*]:
} 
} This is easy.

I'm left wondering if this shouldn't be a POSIX-mode thing, i.e. whether
zsh in "native mode" should continue as it has.


^ permalink raw reply	[relevance 3%]

* Re: "set -o foo" does not fail / does not abort the shell
  2007-12-11 16:35  3%   ` Bart Schaefer
@ 2007-12-11 16:39  0%     ` Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2007-12-11 16:39 UTC (permalink / raw)
  To: zsh-workers

Bart Schaefer wrote:
> On Dec 11,  1:56pm, Peter Stephenson wrote:
> }
> } Vincent Lefevre wrote:
> } > I've tried the following with zsh-4.3.4-dev-4:
> } > 
> } > $ Src/zsh -f -c 'emulate sh; set -o foo; echo "Didn''t abort ($?)"'
> } > set: no such option: foo
> } > Didn't abort (0)
> } > 
> } > This is incorrect. The shell should abort as 'set' is a special
> } > builtin[*]:
> } 
> } This is easy.
> 
> I'm left wondering if this shouldn't be a POSIX-mode thing, i.e. whether
> zsh in "native mode" should continue as it has.

I'd be more impressed with that if zsh as it was even returned a
non-zero status in this case, but it doesn't.  So some kind of change
definitely seems warranted.

-- 
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


^ permalink raw reply	[relevance 0%]

* Re: [RFE] %a support in printf builtin (when available)
  @ 2008-01-24 11:58  3% ` Vincent Lefevre
  0 siblings, 0 replies; 200+ results
From: Vincent Lefevre @ 2008-01-24 11:58 UTC (permalink / raw)
  To: zsh-workers

On 2006-04-07 17:04:58 +0200, Vincent Lefevre wrote:
> Under Debian/unstable:
> 
> dixsept% where printf
> printf: shell built-in command
> /usr/bin/printf
> dixsept% printf "%a\n" 1.1
> printf: %a: invalid directive
> dixsept% /usr/bin/printf "%a\n" 1.1
> 0x8.ccccccccccccccdp-3
> dixsept%
> 
> Note: the %a format appeared in C99.

Also the %a format in now in the POSIX revision draft for the printf
shell utility.

Moreover supporting the ' flag (as defined in the printf function),
like the printf command from the coreutils, would also be useful.

-- 
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 / Arenaire project (LIP, ENS-Lyon)


^ permalink raw reply	[relevance 3%]

* Re: * Re: Failed tests of zsh 4.3.5 in Solaris 10 w/Sun Studio 12 CC
  @ 2008-02-26 16:10  4%         ` Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2008-02-26 16:10 UTC (permalink / raw)
  To: Dagobert Michelsen; +Cc: zsh-workers

Dagobert Michelsen wrote:
> 16896:  -> libiconv:libiconv_open(0xdf986e04, 0x80c1e90)
> 
> ...and...
> 
> thor% mdb -p 16896
> Loading modules: [ ]
>  > 0xdf986e04/S
> 0xdf986e04:     646
>  > 0x80c1e90/S
> 0x80c1e90:      UCS-4BE
> 
> Looks like there is no 646:
> 
> thor% /opt/csw/bin/iconv -l | grep 646
> ANSI_X3.4-1968 ANSI_X3.4-1986 ASCII CP367 IBM367 ISO-IR-6 ISO646-US  
> ISO_646.IRV:1991 US US-ASCII CSASCII
> ISO-10646-UCS-2 UCS-2 CSUNICODE
> ISO-10646-UCS-4 UCS-4 CSUCS4
> ISO-IR-14 ISO646-JP JIS_C6220-1969-RO JP CSISO14JISC6220RO
> CN GB_1988-80 ISO-IR-57 ISO646-CN CSISO57GB1988
> 
> Is this an error from zsh or is this a bug in libiconv?

The first argument comes directly from what nl_langinfo(CODESET) is
returning.  I've tried it on our rather old Solaris 8 system and I get
the same as you, 646---and my iconv doesn't handle that either.

I asked the nice man from Mountain View about "nl_langinfo CODESET 646"
and it seems Solaris just sort of does that if doesn't think much of the
current codeset (e.g. not installed).

So I think we just need to massage it to some reasonable default, which
probably means "US-ASCII" (I'm not sure why that's better than "ASCII",
which I thought was unique, but that's what people seem to use---POSIX
rather self-centredly suggests "POSIX" but iconv doesn't seem to support
that).  I don't think 646 means anything, so I haven't made this
dependent on system.  Assuming ASCII shouldn't be a problem:  if the
7-bit subset isn't ASCII the shell is likely to have disappeared in a
puff of smoke by now.

I suppose trapping "" is a good thing, too, since iconv_open() doesn't
appear to have useful defaults (and there's no reason why it should
have).

As they say in US police dramas, "I'm denying your 646".  Or something.

Index: Src/utils.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/utils.c,v
retrieving revision 1.177
diff -u -r1.177 utils.c
--- Src/utils.c	26 Feb 2008 14:50:05 -0000	1.177
+++ Src/utils.c	26 Feb 2008 16:02:07 -0000
@@ -4867,6 +4867,7 @@
 		} else {
 #   ifdef HAVE_ICONV
 		    ICONV_CONST char *inptr = inbuf;
+		    const char *codesetstr = nl_langinfo(CODESET);
     	    	    inbytes = 4;
 		    outbytes = 6;
 		    /* store value in big endian form */
@@ -4875,6 +4876,18 @@
 			wval >>= 8;
 		    }
 
+		    /*
+		     * If the code set isn't handled, we'd better
+		     * assume it's US-ASCII rather than just failing
+		     * hopelessly.  Solaris has a weird habit of
+		     * returning 646.
+		     *
+		     * It shouldn't ever be NULL, but while we're
+		     * being paranoid...
+		     */
+		    if (!codessetstr || !*codsetstr ||
+			!strcmp(codesetstr, "646"))
+			codesetstr == "US-ASCII";
     	    	    cd = iconv_open(nl_langinfo(CODESET), "UCS-4BE");
 		    if (cd == (iconv_t)-1) {
 			zerr("cannot do charset conversion (iconv failed)");


-- 
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


^ permalink raw reply	[relevance 4%]

* printf %s in UTF-8 is not POSIX-compliant
@ 2008-03-04  1:29  8% Vincent Lefevre
  2008-03-04  1:37  9% ` Vincent Lefevre
  2008-03-04  9:40  5% ` Peter Stephenson
  0 siblings, 2 replies; 200+ results
From: Vincent Lefevre @ 2008-03-04  1:29 UTC (permalink / raw)
  To: zsh-workers

Hi,

Under UTF-8 locales:

vin:~> zsh-beta -f
vin% emulate sh
vin% printf ".%2s.\n" é
. é.
vin% /usr/bin/printf ".%2s.\n" é 
.é.
vin%

As you can see, the zsh printf builtin doesn't behave like the
coreutils printf, and this is zsh which is wrong. Indeed, the
precision is the number of bytes, not the number of characters.

http://www.opengroup.org/onlinepubs/009695399/utilities/printf.html

says (in the extended description) that the "file format notation"
shall be used for the format (and %s isn't an exception).

http://www.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap05.html

(file format notation) says:

  s
    The argument shall be taken to be a string and bytes from the
    string shall be written until the end of the string or the number
    of bytes indicated by the precision specification of the argument
    is reached. If the precision is omitted from the argument, it
    shall be taken to be infinite, so all bytes up to the end of the
    string shall be written.

Note: ksh93 has the same bug, but not pdksh and bash. But bash may
change its behavior if not under POSIX compatibility, see

  http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=459413

-- 
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 / Arenaire project (LIP, ENS-Lyon)


^ permalink raw reply	[relevance 8%]

* Re: printf %s in UTF-8 is not POSIX-compliant
  2008-03-04  1:29  8% printf %s in UTF-8 is not POSIX-compliant Vincent Lefevre
@ 2008-03-04  1:37  9% ` Vincent Lefevre
  2008-03-04  9:40  5% ` Peter Stephenson
  1 sibling, 0 replies; 200+ results
From: Vincent Lefevre @ 2008-03-04  1:37 UTC (permalink / raw)
  To: zsh-workers

I mixed up the field width and the precision, but there's the same
problem:

vin% emulate sh
vin% printf ".%.2s.\n" éabc      
.éa.
vin% /usr/bin/printf ".%.2s.\n" éabc
.é.
vin%

and POSIX says:

  field width
    An optional string of decimal digits to specify a minimum field
    width. For an output field, if the converted value has fewer
    bytes than the field width, [...]
    ^^^^^

-- 
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 / Arenaire project (LIP, ENS-Lyon)


^ permalink raw reply	[relevance 9%]

* Re: printf %s in UTF-8 is not POSIX-compliant
  2008-03-04  1:29  8% printf %s in UTF-8 is not POSIX-compliant Vincent Lefevre
  2008-03-04  1:37  9% ` Vincent Lefevre
@ 2008-03-04  9:40  5% ` Peter Stephenson
  2008-03-05  0:27  9%   ` Vincent Lefevre
  1 sibling, 1 reply; 200+ results
From: Peter Stephenson @ 2008-03-04  9:40 UTC (permalink / raw)
  To: zsh-workers

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 931 bytes --]

Vincent Lefevre wrote:
> Under UTF-8 locales:
> 
> vin:~> zsh-beta -f
> vin% emulate sh
> vin% printf ".%2s.\n" é
> . é.
> vin% /usr/bin/printf ".%2s.\n" é 
> .é.
> vin%
> 
> As you can see, the zsh printf builtin doesn't behave like the
> coreutils printf, and this is zsh which is wrong. Indeed, the
> precision is the number of bytes, not the number of characters.

That seems to me useless.  I can understand in C that a string is a
low-level entity consisting of a set of bytes, but I don't see why a
shell should force the user to count the size of a multibyte character
in the particular locale.

You can fix it by unsetting the MULTIBYTE option.

printf() { emulate -L zsh; unsetopt multibyte; builtin printf "$@" }

-- 
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


^ permalink raw reply	[relevance 5%]

* Re: printf %s in UTF-8 is not POSIX-compliant
  2008-03-04  9:40  5% ` Peter Stephenson
@ 2008-03-05  0:27  9%   ` Vincent Lefevre
  2008-03-05  1:34  9%     ` Bart Schaefer
  2008-03-05 10:41 10%     ` Peter Stephenson
  0 siblings, 2 replies; 200+ results
From: Vincent Lefevre @ 2008-03-05  0:27 UTC (permalink / raw)
  To: zsh-workers

On 2008-03-04 09:40:07 +0000, Peter Stephenson wrote:
> That seems to me useless.

But that what's POSIX requires (and this hasn't changed in the latest
draft). Also, there may be reasons (e.g. file formats with limited
field sizes). So, zsh should follow the specification, at least when
it emulates sh, since the user may write scripts based on it.

> I can understand in C that a string is a low-level entity consisting
> of a set of bytes, but I don't see why a shell should force the user
> to count the size of a multibyte character in the particular locale.

Well, there could be an extension to give the sizes in characters
instead of bytes.

> You can fix it by unsetting the MULTIBYTE option.
> 
> printf() { emulate -L zsh; unsetopt multibyte; builtin printf "$@" }

There's a missing semi-colon:

printf() { emulate -L zsh; unsetopt multibyte; builtin printf "$@"; }

-- 
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 / Arenaire project (LIP, ENS-Lyon)


^ permalink raw reply	[relevance 9%]

* Re: printf %s in UTF-8 is not POSIX-compliant
  2008-03-05  0:27  9%   ` Vincent Lefevre
@ 2008-03-05  1:34  9%     ` Bart Schaefer
  2008-03-06  1:27  5%       ` Vincent Lefevre
  2008-03-05 10:41 10%     ` Peter Stephenson
  1 sibling, 1 reply; 200+ results
From: Bart Schaefer @ 2008-03-05  1:34 UTC (permalink / raw)
  To: zsh-workers

On Mar 5,  1:27am, Vincent Lefevre wrote:
} Subject: Re: printf %s in UTF-8 is not POSIX-compliant
}
} > printf() { emulate -L zsh; unsetopt multibyte; builtin printf "$@" }
} 
} There's a missing semi-colon:

No, there isn't.  Zsh doesn't require it, even though bash and ksh do.


^ permalink raw reply	[relevance 9%]

* Re: printf %s in UTF-8 is not POSIX-compliant
  2008-03-05  0:27  9%   ` Vincent Lefevre
  2008-03-05  1:34  9%     ` Bart Schaefer
@ 2008-03-05 10:41 10%     ` Peter Stephenson
  2008-03-06  1:39 10%       ` Vincent Lefevre
  2008-03-06 17:09  9%       ` Bart Schaefer
  1 sibling, 2 replies; 200+ results
From: Peter Stephenson @ 2008-03-05 10:41 UTC (permalink / raw)
  To: zsh-workers

Vincent Lefevre wrote:
> On 2008-03-04 09:40:07 +0000, Peter Stephenson wrote:
> > That seems to me useless.
> 
> But that what's POSIX requires (and this hasn't changed in the latest
> draft). Also, there may be reasons (e.g. file formats with limited
> field sizes). So, zsh should follow the specification, at least when
> it emulates sh, since the user may write scripts based on it.

There may be something we can do, but at the moment it looks more
complicated than that.  Emulations are tied to the behaviour of
interactive shells, so although it's likely you do indeed want
bog-standard byte oriented behaviour if the intention is to run a script
as sh (POSIX mostly deals in the "portable character set", broadly ASCII
so other multibyte effects are irrelevant and best turned off), it's
much less clear that turning off MULTIBYTE for all forms of sh emulation
is useful.  In particular, "emulate sh" is the nearest we have to bash
emulation and bash users are likely to expect multibyte characters to
work naturally.

Is it time to introduce a separate "bash" emulation (meaning smart,
interactive shell not necessarily 100% POSIX compatible) and
document that "sh" emulation is aimed at POSIX compatibility?
"emulate bash" already works but is treated the same way as "emulate sh".

-- 
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


^ permalink raw reply	[relevance 10%]

* Re: printf %s in UTF-8 is not POSIX-compliant
  2008-03-05  1:34  9%     ` Bart Schaefer
@ 2008-03-06  1:27  5%       ` Vincent Lefevre
  0 siblings, 0 replies; 200+ results
From: Vincent Lefevre @ 2008-03-06  1:27 UTC (permalink / raw)
  To: zsh-workers

On 2008-03-04 17:34:13 -0800, Bart Schaefer wrote:
> On Mar 5,  1:27am, Vincent Lefevre wrote:
> } Subject: Re: printf %s in UTF-8 is not POSIX-compliant
> }
> } > printf() { emulate -L zsh; unsetopt multibyte; builtin printf "$@" }
> } 
> } There's a missing semi-colon:
> 
> No, there isn't.  Zsh doesn't require it, even though bash and ksh do.

Zsh does require it too:

vin:~> zsh -f
vin% emulate sh
vin% printf() { emulate -L zsh; unsetopt multibyte; builtin printf "$@" }
function>

-- 
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 / Arenaire project (LIP, ENS-Lyon)


^ permalink raw reply	[relevance 5%]

* Re: printf %s in UTF-8 is not POSIX-compliant
  2008-03-05 10:41 10%     ` Peter Stephenson
@ 2008-03-06  1:39 10%       ` Vincent Lefevre
  2008-03-06  9:46  9%         ` Peter Stephenson
  2008-03-06 17:09  9%       ` Bart Schaefer
  1 sibling, 1 reply; 200+ results
From: Vincent Lefevre @ 2008-03-06  1:39 UTC (permalink / raw)
  To: zsh-workers

On 2008-03-05 10:41:48 +0000, Peter Stephenson wrote:
> In particular, "emulate sh" is the nearest we have to bash emulation
> and bash users are likely to expect multibyte characters to work
> naturally.

I don't know what you mean by "naturally", but zsh currently behaves
differently from bash in sh emulation:

vin:~> sh
sh-3.1$ printf ".%2s.\n" é
.é.
sh-3.1$ exit
vin:~> zsh -f
vin% emulate sh
vin% printf ".%2s.\n" é
. é.
vin% 

And the behavior of bash, when run as sh, will not change. So,
I expect zsh to do the same in sh emulation mode.

Note that bash still outputs .é. (POSIX behavior) when run as bash,
but this may change.

> Is it time to introduce a separate "bash" emulation (meaning smart,
> interactive shell not necessarily 100% POSIX compatible) and
> document that "sh" emulation is aimed at POSIX compatibility?
> "emulate bash" already works but is treated the same way as "emulate sh".

Perhaps it should have the same differences as bash with and without
POSIX mode. I don't know what the best behavior is about the startup
files. From the bash man page:

  [...] When invoked as sh, bash enters posix mode after the startup
  files are read.

  When bash is started in posix mode, as with the --posix command line
  option, it follows the POSIX standard for startup files. [...]

-- 
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 / Arenaire project (LIP, ENS-Lyon)


^ permalink raw reply	[relevance 10%]

* Re: printf %s in UTF-8 is not POSIX-compliant
  2008-03-06  1:39 10%       ` Vincent Lefevre
@ 2008-03-06  9:46  9%         ` Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2008-03-06  9:46 UTC (permalink / raw)
  To: zsh-workers

On Thu, 6 Mar 2008 02:39:50 +0100
Vincent Lefevre <vincent@vinc17.org> wrote:
> On 2008-03-05 10:41:48 +0000, Peter Stephenson wrote:
> > In particular, "emulate sh" is the nearest we have to bash emulation
> > and bash users are likely to expect multibyte characters to work
> > naturally.
> 
> I don't know what you mean by "naturally", but zsh currently behaves
> differently from bash in sh emulation:

MULTIBYTE has lots of different effects.  The point is we either decide to
turn it on or off; I don't see any point in a special option for this one
very minor case.  zsh is never going to be completely compatible with every
advanced feature of bash, anyway.  So MULTIBYTE almost certainly needs to
be on in that case, but off for POSIX emulation.

> Perhaps it should have the same differences as bash with and without
> POSIX mode.

I think tracking every possible difference in "sh" and "bash" emulations,
even if they were made separate, would be going way too far.  However, if
we had several dozen more people working on the shell, one of them might
have time to look at it.

-- 
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


^ permalink raw reply	[relevance 9%]

* Re: printf %s in UTF-8 is not POSIX-compliant
  2008-03-05 10:41 10%     ` Peter Stephenson
  2008-03-06  1:39 10%       ` Vincent Lefevre
@ 2008-03-06 17:09  9%       ` Bart Schaefer
  2008-03-06 17:45  4%         ` Peter Stephenson
  1 sibling, 1 reply; 200+ results
From: Bart Schaefer @ 2008-03-06 17:09 UTC (permalink / raw)
  To: zsh-workers

On Mar 5, 10:41am, Peter Stephenson wrote:
}
} Is it time to introduce a separate "bash" emulation (meaning smart,
} interactive shell not necessarily 100% POSIX compatible) and
} document that "sh" emulation is aimed at POSIX compatibility?

After reading some of the more recent posts on this thread, I've got
an opinion on this.

I think "emulate sh" should emulate the POSIX shell to the greatest
extent possible.  If that means turning off MULTIBYTE, turn it off.
(Of course there are still subtle differences between starting the
shell as "sh" and running "emulate sh" after it has started.  There
probably isn't any way to entirely resolve that.)

However, if "emulate bash" is going to mean something other than a
synonym for "sh", then some effort should be put into being a bit
closer to bash than it's currently possible to be.  For example,
at least set the various BASH_* options, the way "emulate csh" sets
the smattering of CSH_* options.

Of course "emulate bash" isn't even in the documentation at present.
(The "Compatibilty" section referenced from the "emulate" command
doesn't discuss csh, either, even though the "emulate" doc does list
csh among the possible arguments.)

A final thought on MULTIBYTE:  Is it perhaps reasonable to split this
into two options, one that affects line editor operations and one that
affects internals?  If someone does "emulate sh; setopt zle" it seems
there might be some expectation that ZLE can adapt to a terminal that
displays multibyte even if the input is all treated as raw bytes once
accept-line hands it off.  That might mean that e.g. _main_complete
needs to look at the state of ZLE_MULTIBYTE (or whatever) and setopt
MULTIBYTE locally to correspond.  Other widgets could also be affected,
so the emphasis here is on "reasonable."

(Possible workaround:  setopt MULTIBYTE in zle_line_init and unset it
again in preexec.)


^ permalink raw reply	[relevance 9%]

* Re: printf %s in UTF-8 is not POSIX-compliant
  2008-03-06 17:09  9%       ` Bart Schaefer
@ 2008-03-06 17:45  4%         ` Peter Stephenson
  2008-03-07  2:29  8%           ` Bart Schaefer
  0 siblings, 1 reply; 200+ results
From: Peter Stephenson @ 2008-03-06 17:45 UTC (permalink / raw)
  To: zsh-workers

On Thu, 06 Mar 2008 09:09:01 -0800
Bart Schaefer <schaefer@brasslantern.com> wrote:
> I think "emulate sh" should emulate the POSIX shell to the greatest
> extent possible.  If that means turning off MULTIBYTE, turn it off.

That seems basically sensible.

> However, if "emulate bash" is going to mean something other than a
> synonym for "sh", then some effort should be put into being a bit
> closer to bash than it's currently possible to be.  For example,
> at least set the various BASH_* options, the way "emulate csh" sets
> the smattering of CSH_* options.

I'm not sure the first sentence agrees with the second.  Are you suggesting
new options?

> A final thought on MULTIBYTE:  Is it perhaps reasonable to split this
> into two options, one that affects line editor operations and one that
> affects internals?  If someone does "emulate sh; setopt zle" it seems
> there might be some expectation that ZLE can adapt to a terminal that
> displays multibyte even if the input is all treated as raw bytes once
> accept-line hands it off.  That might mean that e.g. _main_complete
> needs to look at the state of ZLE_MULTIBYTE (or whatever) and setopt
> MULTIBYTE locally to correspond.  Other widgets could also be affected,
> so the emphasis here is on "reasonable."

I think it can be done, and is reasonable if done properly, but is likely
to be bug-prone in the case where one option is on and the other off.  The
library code (mostly in utils.c) will need the correct option passing down
to it, widgets (including basic zle widgets) will need to be careful, and
the combination isn't likely to get well-tested anyway.

Index: Doc/Zsh/options.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Zsh/options.yo,v
retrieving revision 1.56
diff -u -r1.56 options.yo
--- Doc/Zsh/options.yo	1 Feb 2008 19:59:48 -0000	1.56
+++ Doc/Zsh/options.yo	6 Mar 2008 17:36:57 -0000
@@ -427,10 +427,10 @@
 Append a trailing `tt(/)' to all directory
 names resulting from filename generation (globbing).
 )
-pindex(MULTIBYTE <D>)
+pindex(MULTIBYTE)
 cindex(characters, multibyte, in expansion and globbing)
 cindex(multibyte characters, in expansion and globbing)
-item(tt(MULTIBYTE))(
+item(tt(MULTIBYTE) <C> <K> <Z>)(
 Respect multibyte characters when found in strings.
 When this option is set, strings are examined using the
 system library to determine how many bytes form a character, depending
@@ -438,8 +438,10 @@
 pattern matching, parameter values and various delimiters.
 
 The option is on by default if the shell was compiled with
-tt(MULTIBYTE_SUPPORT); otherwise it is off by default and has no effect if
-turned on.
+tt(MULTIBYTE_SUPPORT) except in tt(sh) emulation; otherwise it is off by
+default and has no effect if turned on.  The mode is off in tt(sh)
+emulation for compatibility but for interative use may need to be
+turned on if the terminal interprets multibyte characters.
 
 If the option is off a single byte is always treated as a single
 character.  This setting is designed purely for examining strings
Index: Src/options.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/options.c,v
retrieving revision 1.38
diff -u -r1.38 options.c
--- Src/options.c	19 Dec 2007 21:49:35 -0000	1.38
+++ Src/options.c	6 Mar 2008 17:36:57 -0000
@@ -173,7 +173,7 @@
 {{NULL, "monitor",	      OPT_SPECIAL},		 MONITOR},
 {{NULL, "multibyte",
 #ifdef MULTIBYTE_SUPPORT
-			      OPT_ALL
+			      OPT_EMULATE|OPT_ZSH|OPT_CSH|OPT_KSH
 #else
 			      0
 #endif

-- 
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


^ permalink raw reply	[relevance 4%]

* Re: printf %s in UTF-8 is not POSIX-compliant
  2008-03-06 17:45  4%         ` Peter Stephenson
@ 2008-03-07  2:29  8%           ` Bart Schaefer
  0 siblings, 0 replies; 200+ results
From: Bart Schaefer @ 2008-03-07  2:29 UTC (permalink / raw)
  To: zsh-workers

On Mar 6,  5:45pm, Peter Stephenson wrote:
} Subject: Re: printf %s in UTF-8 is not POSIX-compliant
}
} On Thu, 06 Mar 2008 09:09:01 -0800
} Bart Schaefer <schaefer@brasslantern.com> wrote:
} > However, if "emulate bash" is going to mean something other than a
} > synonym for "sh", then some effort should be put into being a bit
} > closer to bash than it's currently possible to be.  For example,
} > at least set the various BASH_* options, the way "emulate csh" sets
} > the smattering of CSH_* options.
} 
} I'm not sure the first sentence agrees with the second. Are you
} suggesting new options?

Well, I considered suggesting that we comprehend bash prompt sequences,
but then decided that was going too far.  What I meant, I guess, was
"closer than it's currently possible to get by running 'emulate'".

} > A final thought on MULTIBYTE:  Is it perhaps reasonable to split this
} > into two options, one that affects line editor operations and one that
} > affects internals?
} 
} I think it can be done, and is reasonable if done properly, but is
} likely to be bug-prone in the case where one option is on and the
} other off.

Yes, that's exactly the issue.  Regardless of the size or complexity of
the job to alter the C code, it's unreasonable if the result introduces
more script bugs than it fixes incompatibilities.


^ permalink raw reply	[relevance 8%]

* Re: PATCH: (large) initial support for combining characters in ZLE.
  @ 2008-04-14 12:00  4% ` Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2008-04-14 12:00 UTC (permalink / raw)
  To: Zsh Hackers' List

Documention changes, some of them somewhat overdue.

I wonder if it's time to merge the FAQ into the main documentation as
zshfaq.1?

Index: Doc/Zsh/roadmap.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Zsh/roadmap.yo,v
retrieving revision 1.10
diff -u -r1.10 roadmap.yo
--- Doc/Zsh/roadmap.yo	1 Feb 2008 19:59:48 -0000	1.10
+++ Doc/Zsh/roadmap.yo	14 Apr 2008 11:50:10 -0000
@@ -44,6 +44,13 @@
 tt(HISTSIZE) and tt(SAVEHIST) in ifzman(zmanref(zshparam))\
 ifnzman(noderef(Parameters Used By The Shell)).
 
+The shell now supports the UTF-8 character set (and also others if
+supported by the operating system).  This is (mostly) handled transparently
+by the shell, but the degree of support in terminal emulators is variable.
+There is some discussion of this in the shell FAQ,
+http://zsh.dotsrc.org/FAQ/ .  Note in particular that for combining
+characters to be handled the option tt(COMBINING_CHARS) needs to be set.
+
 subsect(Completion)
 
 Completion is a feature present in many shells. It allows the user to
Index: Etc/FAQ.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Etc/FAQ.yo,v
retrieving revision 1.37
diff -u -r1.37 FAQ.yo
--- Etc/FAQ.yo	31 Mar 2008 15:03:11 -0000	1.37
+++ Etc/FAQ.yo	14 Apr 2008 11:50:14 -0000
@@ -126,11 +126,11 @@
 4.5. How do I get started with programmable completion?
 4.6. Suppose I want to complete all files during a special completion?
 
-Chapter 5:  Multibyte input
+Chapter 5:  Multibyte input and output
 
 5.1. What is multibyte input?
-5.2. How does zsh handle multibyte input?
-5.3. How do I ensure multibyte input works on my system?
+5.2. How does zsh handle multibyte input and output?
+5.3. How do I ensure multibyte input and output work on my system?
 5.4. How can I input characters that aren't on my keyboard?
 
 Chapter 6:  The future of zsh
@@ -1961,7 +1961,7 @@
   such as expansion or approximate completion.
 
 
-chapter(Multibyte input)
+chapter(Multibyte input and output)
 label(c5)
 
 sect(What is multibyte input?)
@@ -2012,7 +2012,7 @@
   in those formats.)
 
 
-sect(How does zsh handle multibyte input?)
+sect(How does zsh handle multibyte input and output?)
 
   Until version 4.3, zsh didn't handle multibyte input properly at all.
   Each octet in a multibyte character would look to the shell like a
@@ -2021,50 +2021,44 @@
   cause all sorts of odd effects.  (It was possible to edit in zsh using
   single-byte extensions of ASCII such as the ISO 8859 family, however.)
 
-  From version 4.3, multibyte input is handled in the line editor if zsh
-  has been compiled with the appropriate definitions.  This will happen
-  automatically if the compiler defines __STDC_ISO_10646__, which is true
-  for many recent GNU-based systems.  On other systems you must configure
-  zsh with the argument --enable-multibyte to configure.  Explicit use of
-  --enable-multibyte should work on many other recent UNIX systems; if it
-  works on yours, and that's not mentioned in the shell documentation,
-  please report this to zsh-workers@sunsite.dk, and if it doesn't but you
-  can work out why not we'd also be interested in hearing.
-
-  (The reason for the test for __STDC_ISO_10646__ is that its presence
-  happens to indicate that the required library support is likely to be
-  present, short-circuiting a large number of configuration tests.  This
-  isn't strictly guaranteed, since the definition indicates the rather more
-  limited fact that the wide character representation used internally by
-  the shell is Unicode.  However, in practice such systems provide the
-  right level of support for zsh to use.  It would be better to test
-  individually for the library features the shell needs; unfortunately
-  there are a lot of them.)
-
-  You can test if multibyte handling is compiled into your version of the
-  shell by running:
-  verb(
-    (bindkey -m)
-  )
-  which should output a warning:
-  verb(
-    bindkey: warning: `bindkey -m' disables multibyte support
-  )
-  If it doesn't, you don't have multibyte support in your shell.  The
-  parentheses are there to run the command in a subshell, which protects
-  your interactive shell from the effects being warned about.
-
-  Multibyte strings are not yet handled anywhere else in the shell.  This
-  means, for example, patterns treat multibyte characters as a set of single
-  octets and the ${#var} syntax counts octets, not characters.  There will
-  probably be new syntax to ensure that zsh can work both in its traditional
-  way as well as when interpreting multibyte characters.
+  From version 4.3.4, multibyte input is handled in the line editor if zsh
+  has been compiled with the appropriate definitions, and is automatically
+  activated.  This is indicated by the option tt(MULTIBYTE), which is
+  set by default on shells that support multibyte mode.  Hence you
+  can test this with a standard option test:  `tt([[ -o multibyte ]])'.
+
+  The tt(MULTIBYTE) option affects the entire shell: parameter expansion,
+  pattern matching, etc. count valid multibyte character strings as a
+  single character.  You can unset the option locally in a function to
+  revert to single-byte operation.
+
+  Note that if the shell is emulating a Bourne shell the tt(MULTIBYTE)
+  option is unset by default.  This allows various POSIX modes to
+  work normally (POSIX does not deal with multibyte characters).  If
+  you use a "sh" or "ksh" emulation interactively you shouldprobably
+  set the tt(MULTIBYTE) option.
+
+  The other option that affects multibyte support is tt(COMBINING_CHARS),
+  new in version 4.3.7.  When this is set, any zero-length punctuation
+  characters that follow an alphanumeric character (the base character) are
+  assumed to be modifications (accents etc.) to the base character and to
+  be displayed within the same screen area as the base character.  As not
+  all terminals handle this, even if they correctly display the base
+  multibyte character, this option is not on by default.  The KDE terminal
+  emulator tt(konsole) is known to handle combining characters.
+
+  The tt(COMBINING_CHARS) option only affects output; combining characters
+  may always be input, but when the option is off will be displayed
+  specially.  By default this is as a code point (the index of the
+  character in the character set) between angle brackets, usually
+  in inverse video.  Highlighting of such special characters can
+  be modified using the new array parameter tt(zle_highlight).
 
 
-sect(How do I ensure multibyte input works on my system?)
+sect(How do I ensure multibyte input and output work on my system?)
 
   Once you have a version of zsh with multibyte support, you need to
-  ensure the envivronment is correct.  We'll assume you're using UTF-8.
+  ensure the environment is correct.  We'll assume you're using UTF-8.
   Many modern systems may come set up correctly already.  Try one of
   the editing widgets described in the next section to see.
 
@@ -2163,6 +2157,9 @@
   however, using UTF-8 massively extends the number of valid characters
   that can be produced.
 
+  See also url(http://www.cl.cam.ac.uk/~mgk25/unicode.html#input)http://www.cl.cam.ac.uk/~mgk25/unicode.html#input)
+  for general information on entering Unicode characters from a keyboard.
+
 
 chapter(The future of zsh)
 


^ permalink raw reply	[relevance 4%]

* PATCH: _git tweaks
@ 2008-04-16 17:45  6% Clint Adams
  0 siblings, 0 replies; 200+ results
From: Clint Adams @ 2008-04-16 17:45 UTC (permalink / raw)
  To: zsh-workers

Someone should do completion for 'git stash'.

Index: Completion/Unix/Command/_git
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/Unix/Command/_git,v
retrieving revision 1.63
diff -u -r1.63 _git
--- Completion/Unix/Command/_git	23 Mar 2008 16:18:20 -0000	1.63
+++ Completion/Unix/Command/_git	16 Apr 2008 17:41:21 -0000
@@ -35,6 +35,7 @@
   '(--name-only --name-status -u -p --stat --patch-with-stat --patch-with-raw --raw --numstat --shortstat --summary)--numstat[generate a more machine-friendly diffstat]' \
   '(--name-only --name-status -u -p --stat --patch-with-stat --patch-with-raw --raw --numstat --shortstat --summary)--shortstat[generate a summary diffstat]' \
   '(--name-only --name-status -u -p --stat --patch-with-stat --patch-with-raw --raw --numstat --shortstat --summary)--summary[generate a condensed summary of extended header information]' \
+  '(--name-only --name-status -u -p --stat --patch-with-stat --patch-with-raw --raw --numstat --shortstat --summary)--dirstat[generate a dirstat]' \
   '-B-[break complete rewrite changes into pairs of given size]: :_guard "[[\:digit\:]]#" size'
   '-C-[detect copies as well as renames with given scope]: :_guard "[[\:digit\:]]#" size'
   $diff_l_arg
@@ -58,6 +59,7 @@
   $nul_arg
   '--exit-code[report exit code 1 if differences, 0 otherwise]'
   '(--exit-code)--quiet[disable all output]'
+  '--relative=:path:_files -/'
 )
 
 pretty_arg='--pretty=-[pretty print commit messages]::pretty print:((raw\:"the raw commits"
@@ -1629,7 +1631,9 @@
 (( $+functions[_git-gc] )) ||
 _git-gc () {
   _arguments \
-    '--prune[remove unreferenced loose objects]' && ret=0
+    '--aggressive[more aggressively optimize]' \
+    '--auto[check whether housekeeping is required]' \
+    '--quiet[suppress all progress reports]' && ret=0
 }
 
 (( $+functions[_git-grep] )) ||
@@ -1658,7 +1662,7 @@
     '(-E --extended-regexp -G --basic-regexp)'{-E,--extended-regexp}'[use POSIX extended regexes]' \
     '(-E --extended-regexp -G --basic-regexp)'{-G,--basic-regexp}'[use POSIX basic regexes]' \
     '-n[prefix the line number to matching lines]' \
-    '(-l --files-with-matches -L --files-without-match)'{-l,--files-with-match}'[show only names of matching files]' \
+    '(-l --files-with-matches -L --files-without-match --name-only)'{-l,--files-with-matches,--name-only}'[show only names of matching files]' \
     '(-l --files-with-matches -L --files-without-match)'{-L,--files-without-match}'[show only names of non-matching files]' \
     '(-c --count)'{-c,--count}'[show number of matching lines in files]' \
     '-A[show trailing context]: :_guard "[[\:digit\:]]#" lines' \
@@ -2009,7 +2013,7 @@
     '-i[do not perform a checkout after importing]' \
     '-k[remove keywords from source files in the CVS archive]' \
     '-m[attempt to detect merges based on the commit message]' \
-    '-M[attempt to detect merges based on the commit message with custom pattern]:pattern' \
+    '*-M[attempt to detect merges based on the commit message with custom pattern]:pattern' \
     '-o[specify the branch into which you wish to import]:branch:__git_branch_names' \
     '-P[read cvsps output file]:file:_files' \
     '-p[specify additionaly options for cvsps]:cvsps-options' \
@@ -2050,7 +2054,8 @@
 (( $+functions[_git-prune] )) ||
 _git-prune () {
   _arguments -S \
-    '-n[do not remove anything; just report what would have been removed]'
+    '-n[do not remove anything; just report what would have been removed]' \
+    '--expire:time:' \
     '*::heads:__git_heads' && ret=0
 }
 


^ permalink raw reply	[relevance 6%]

* PATCH: alternative wcwidth() implementation
@ 2008-04-22 10:50  1% Peter Stephenson
  2008-04-22 16:15  0% ` Peter Stephenson
  0 siblings, 1 reply; 200+ results
From: Peter Stephenson @ 2008-04-22 10:50 UTC (permalink / raw)
  To: Zsh hackers list

This attempts to test for a broken wcwidth() and uses Markus Kuhn's if
necessary.  It's a bit desperate, because we need to assume wchar_t is a
Unicode code point, but at this stage we are desperate.

Jun T. will have to decide if this is helping on MacOS, otherwise it's
back to the drawing board.

I note we should supposedly be defining _XOPEN_SOURCE to get wcwidth(),
at least with glibc, but apparently generally don't (though I did for the
configure test).  I'm a bit frightened of changing this, but POSIX does
suggest it's part of the XSI extension, so probably we ought to.
Indeed, we do define _XOPEN_SOURCE_EXTENDED if needed for curses.h;
probably the right thing to do is in the #else case, #define
_XOPEN_SOURCE if MULTIBYTE_SUPPORT is present.

Index: configure.ac
===================================================================
RCS file: /cvsroot/zsh/zsh/configure.ac,v
retrieving revision 1.96
diff -u -r1.96 configure.ac
--- configure.ac	28 Mar 2008 11:56:46 -0000	1.96
+++ configure.ac	22 Apr 2008 10:36:01 -0000
@@ -2266,8 +2266,63 @@
 ])
 AH_TEMPLATE([MULTIBYTE_SUPPORT],
 [Define to 1 if you want support for multibyte character sets.])
+AH_TEMPLATE([BROKEN_WCWIDTH],
+[Define to 1 if the wcwidth() function is present but broken.])
 if test x$zsh_cv_c_unicode_support = xyes; then
   AC_DEFINE(MULTIBYTE_SUPPORT)
+
+  dnl Test for a wcwidth() implementation that gives the wrong width for
+  dnl zero-width combining characters.
+  dnl For the test we use a combining acute accent (\u0301).
+  dnl We input it as UTF-8 since that is the standard we can rely
+  dnl upon most:  we can't rely on a wchar_t being stored as a
+  dnl Unicode code point on all systems.
+  dnl The programme returns 0 only if all the conditions for brokenness
+  dnl are met:
+  dnl - the programme compiled, linked and ran
+  dnl - we successfully set a UTF-8 locale
+  dnl - the locale we set plausibly converted the UTF-8 string
+  dnl   for a zero-width combining character (the only way to be
+  dnl   100% sure would be to output it and ask if it looked right)
+  dnl - the converted wide character gave a non-zero width.
+  dnl locale -a is a fallback; on most systems we should find en_US.UTF-8.
+  [locale_prog='char *my_locales[] = {
+  "en_US.UTF-8", "en_GB.UTF-8", "en.UTF-8", '
+  locale_prog="$locale_prog"`locale -a 2>/dev/null | \
+    sed -e 's/utf8/UTF-8/' | grep UTF-8 | \
+    while read line; do echo " \"$line\","; done;`
+  locale_prog="$locale_prog 0 };
+  #define _XOPEN_SOURCE
+  #include <stdlib.h>
+  #include <locale.h>
+  #include <wchar.h>
+
+  int main() {
+    char **localep;
+    char comb_acute_mb[] = { (char)0xcc, (char)0x81 };
+    wchar_t wc;
+
+    for (localep = my_locales; *localep; localep++)
+      if (setlocale(LC_ALL, *localep) &&
+          mbtowc(&wc, comb_acute_mb, 2) == 2)
+	  break;
+    if (!*localep)
+      return 1;
+    if (wcwidth(wc) == 0)
+      return 1;
+    return 0;
+  }
+  "]
+
+  AC_CACHE_CHECK(if the wcwidth() function is broken,
+  zsh_cv_c_broken_wcwidth,
+  [AC_TRY_RUN([$locale_prog],
+  zsh_cv_c_broken_wcwidth=yes,
+  zsh_cv_c_broken_wcwidth=no,
+  zsh_cv_c_broken_wcwidth=no)])
+  if test x$zsh_cv_c_broken_wcwdith = xyes; then
+    AC_DEFINE(BROKEN_WCWIDTH)
+  fi
 fi
 
 dnl
Index: Src/builtin.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/builtin.c,v
retrieving revision 1.190
diff -u -r1.190 builtin.c
--- Src/builtin.c	3 Apr 2008 15:20:22 -0000	1.190
+++ Src/builtin.c	22 Apr 2008 10:36:06 -0000
@@ -3668,7 +3668,7 @@
 			width += l;
 			break;
 		    }
-		    wcw = wcwidth(wc);
+		    wcw = WCWIDTH(wc);
 		    /* treat unprintable as 0 */
 		    if (wcw > 0)
 			width += wcw;
Index: Src/compat.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/compat.c,v
retrieving revision 1.16
diff -u -r1.16 compat.c
--- Src/compat.c	3 Mar 2008 12:29:56 -0000	1.16
+++ Src/compat.c	22 Apr 2008 10:36:07 -0000
@@ -549,4 +549,327 @@
 		*endptr = any ? s - 1 : nptr;
 	return (acc);
 }
-#endif
+#endif /* HAVE_STRTOUL */
+
+/**/
+#ifdef BROKEN_WCWIDTH
+
+/*
+ * This is an implementation of wcwidth() and wcswidth() (defined in
+ * IEEE Std 1002.1-2001) for Unicode.
+ *
+ * http://www.opengroup.org/onlinepubs/007904975/functions/wcwidth.html
+ * http://www.opengroup.org/onlinepubs/007904975/functions/wcswidth.html
+ *
+ * In fixed-width output devices, Latin characters all occupy a single
+ * "cell" position of equal width, whereas ideographic CJK characters
+ * occupy two such cells. Interoperability between terminal-line
+ * applications and (teletype-style) character terminals using the
+ * UTF-8 encoding requires agreement on which character should advance
+ * the cursor by how many cell positions. No established formal
+ * standards exist at present on which Unicode character shall occupy
+ * how many cell positions on character terminals. These routines are
+ * a first attempt of defining such behavior based on simple rules
+ * applied to data provided by the Unicode Consortium.
+ *
+ * For some graphical characters, the Unicode standard explicitly
+ * defines a character-cell width via the definition of the East Asian
+ * FullWidth (F), Wide (W), Half-width (H), and Narrow (Na) classes.
+ * In all these cases, there is no ambiguity about which width a
+ * terminal shall use. For characters in the East Asian Ambiguous (A)
+ * class, the width choice depends purely on a preference of backward
+ * compatibility with either historic CJK or Western practice.
+ * Choosing single-width for these characters is easy to justify as
+ * the appropriate long-term solution, as the CJK practice of
+ * displaying these characters as double-width comes from historic
+ * implementation simplicity (8-bit encoded characters were displayed
+ * single-width and 16-bit ones double-width, even for Greek,
+ * Cyrillic, etc.) and not any typographic considerations.
+ *
+ * Much less clear is the choice of width for the Not East Asian
+ * (Neutral) class. Existing practice does not dictate a width for any
+ * of these characters. It would nevertheless make sense
+ * typographically to allocate two character cells to characters such
+ * as for instance EM SPACE or VOLUME INTEGRAL, which cannot be
+ * represented adequately with a single-width glyph. The following
+ * routines at present merely assign a single-cell width to all
+ * neutral characters, in the interest of simplicity. This is not
+ * entirely satisfactory and should be reconsidered before
+ * establishing a formal standard in this area. At the moment, the
+ * decision which Not East Asian (Neutral) characters should be
+ * represented by double-width glyphs cannot yet be answered by
+ * applying a simple rule from the Unicode database content. Setting
+ * up a proper standard for the behavior of UTF-8 character terminals
+ * will require a careful analysis not only of each Unicode character,
+ * but also of each presentation form, something the author of these
+ * routines has avoided to do so far.
+ *
+ * http://www.unicode.org/unicode/reports/tr11/
+ *
+ * Markus Kuhn -- 2007-05-26 (Unicode 5.0)
+ *
+ * Permission to use, copy, modify, and distribute this software
+ * for any purpose and without fee is hereby granted. The author
+ * disclaims all warranties with regard to this software.
+ *
+ * Latest version: http://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c
+ */
+
+struct interval {
+  int first;
+  int last;
+};
+
+/* auxiliary function for binary search in interval table */
+static int bisearch(wchar_t ucs, const struct interval *table, int max) {
+  int min = 0;
+  int mid;
+
+  if (ucs < table[0].first || ucs > table[max].last)
+    return 0;
+  while (max >= min) {
+    mid = (min + max) / 2;
+    if (ucs > table[mid].last)
+      min = mid + 1;
+    else if (ucs < table[mid].first)
+      max = mid - 1;
+    else
+      return 1;
+  }
+
+  return 0;
+}
+
+
+/* The following two functions define the column width of an ISO 10646
+ * character as follows:
+ *
+ *    - The null character (U+0000) has a column width of 0.
+ *
+ *    - Other C0/C1 control characters and DEL will lead to a return
+ *      value of -1.
+ *
+ *    - Non-spacing and enclosing combining characters (general
+ *      category code Mn or Me in the Unicode database) have a
+ *      column width of 0.
+ *
+ *    - SOFT HYPHEN (U+00AD) has a column width of 1.
+ *
+ *    - Other format characters (general category code Cf in the Unicode
+ *      database) and ZERO WIDTH SPACE (U+200B) have a column width of 0.
+ *
+ *    - Hangul Jamo medial vowels and final consonants (U+1160-U+11FF)
+ *      have a column width of 0.
+ *
+ *    - Spacing characters in the East Asian Wide (W) or East Asian
+ *      Full-width (F) category as defined in Unicode Technical
+ *      Report #11 have a column width of 2.
+ *
+ *    - All remaining characters (including all printable
+ *      ISO 8859-1 and WGL4 characters, Unicode control characters,
+ *      etc.) have a column width of 1.
+ *
+ * This implementation assumes that wchar_t characters are encoded
+ * in ISO 10646.
+ */
+
+/**/
+int
+mk_wcwidth(wchar_t ucs)
+{
+  /* sorted list of non-overlapping intervals of non-spacing characters */
+  /* generated by "uniset +cat=Me +cat=Mn +cat=Cf -00AD +1160-11FF +200B c" */
+  static const struct interval combining[] = {
+    { 0x0300, 0x036F }, { 0x0483, 0x0486 }, { 0x0488, 0x0489 },
+    { 0x0591, 0x05BD }, { 0x05BF, 0x05BF }, { 0x05C1, 0x05C2 },
+    { 0x05C4, 0x05C5 }, { 0x05C7, 0x05C7 }, { 0x0600, 0x0603 },
+    { 0x0610, 0x0615 }, { 0x064B, 0x065E }, { 0x0670, 0x0670 },
+    { 0x06D6, 0x06E4 }, { 0x06E7, 0x06E8 }, { 0x06EA, 0x06ED },
+    { 0x070F, 0x070F }, { 0x0711, 0x0711 }, { 0x0730, 0x074A },
+    { 0x07A6, 0x07B0 }, { 0x07EB, 0x07F3 }, { 0x0901, 0x0902 },
+    { 0x093C, 0x093C }, { 0x0941, 0x0948 }, { 0x094D, 0x094D },
+    { 0x0951, 0x0954 }, { 0x0962, 0x0963 }, { 0x0981, 0x0981 },
+    { 0x09BC, 0x09BC }, { 0x09C1, 0x09C4 }, { 0x09CD, 0x09CD },
+    { 0x09E2, 0x09E3 }, { 0x0A01, 0x0A02 }, { 0x0A3C, 0x0A3C },
+    { 0x0A41, 0x0A42 }, { 0x0A47, 0x0A48 }, { 0x0A4B, 0x0A4D },
+    { 0x0A70, 0x0A71 }, { 0x0A81, 0x0A82 }, { 0x0ABC, 0x0ABC },
+    { 0x0AC1, 0x0AC5 }, { 0x0AC7, 0x0AC8 }, { 0x0ACD, 0x0ACD },
+    { 0x0AE2, 0x0AE3 }, { 0x0B01, 0x0B01 }, { 0x0B3C, 0x0B3C },
+    { 0x0B3F, 0x0B3F }, { 0x0B41, 0x0B43 }, { 0x0B4D, 0x0B4D },
+    { 0x0B56, 0x0B56 }, { 0x0B82, 0x0B82 }, { 0x0BC0, 0x0BC0 },
+    { 0x0BCD, 0x0BCD }, { 0x0C3E, 0x0C40 }, { 0x0C46, 0x0C48 },
+    { 0x0C4A, 0x0C4D }, { 0x0C55, 0x0C56 }, { 0x0CBC, 0x0CBC },
+    { 0x0CBF, 0x0CBF }, { 0x0CC6, 0x0CC6 }, { 0x0CCC, 0x0CCD },
+    { 0x0CE2, 0x0CE3 }, { 0x0D41, 0x0D43 }, { 0x0D4D, 0x0D4D },
+    { 0x0DCA, 0x0DCA }, { 0x0DD2, 0x0DD4 }, { 0x0DD6, 0x0DD6 },
+    { 0x0E31, 0x0E31 }, { 0x0E34, 0x0E3A }, { 0x0E47, 0x0E4E },
+    { 0x0EB1, 0x0EB1 }, { 0x0EB4, 0x0EB9 }, { 0x0EBB, 0x0EBC },
+    { 0x0EC8, 0x0ECD }, { 0x0F18, 0x0F19 }, { 0x0F35, 0x0F35 },
+    { 0x0F37, 0x0F37 }, { 0x0F39, 0x0F39 }, { 0x0F71, 0x0F7E },
+    { 0x0F80, 0x0F84 }, { 0x0F86, 0x0F87 }, { 0x0F90, 0x0F97 },
+    { 0x0F99, 0x0FBC }, { 0x0FC6, 0x0FC6 }, { 0x102D, 0x1030 },
+    { 0x1032, 0x1032 }, { 0x1036, 0x1037 }, { 0x1039, 0x1039 },
+    { 0x1058, 0x1059 }, { 0x1160, 0x11FF }, { 0x135F, 0x135F },
+    { 0x1712, 0x1714 }, { 0x1732, 0x1734 }, { 0x1752, 0x1753 },
+    { 0x1772, 0x1773 }, { 0x17B4, 0x17B5 }, { 0x17B7, 0x17BD },
+    { 0x17C6, 0x17C6 }, { 0x17C9, 0x17D3 }, { 0x17DD, 0x17DD },
+    { 0x180B, 0x180D }, { 0x18A9, 0x18A9 }, { 0x1920, 0x1922 },
+    { 0x1927, 0x1928 }, { 0x1932, 0x1932 }, { 0x1939, 0x193B },
+    { 0x1A17, 0x1A18 }, { 0x1B00, 0x1B03 }, { 0x1B34, 0x1B34 },
+    { 0x1B36, 0x1B3A }, { 0x1B3C, 0x1B3C }, { 0x1B42, 0x1B42 },
+    { 0x1B6B, 0x1B73 }, { 0x1DC0, 0x1DCA }, { 0x1DFE, 0x1DFF },
+    { 0x200B, 0x200F }, { 0x202A, 0x202E }, { 0x2060, 0x2063 },
+    { 0x206A, 0x206F }, { 0x20D0, 0x20EF }, { 0x302A, 0x302F },
+    { 0x3099, 0x309A }, { 0xA806, 0xA806 }, { 0xA80B, 0xA80B },
+    { 0xA825, 0xA826 }, { 0xFB1E, 0xFB1E }, { 0xFE00, 0xFE0F },
+    { 0xFE20, 0xFE23 }, { 0xFEFF, 0xFEFF }, { 0xFFF9, 0xFFFB },
+    { 0x10A01, 0x10A03 }, { 0x10A05, 0x10A06 }, { 0x10A0C, 0x10A0F },
+    { 0x10A38, 0x10A3A }, { 0x10A3F, 0x10A3F }, { 0x1D167, 0x1D169 },
+    { 0x1D173, 0x1D182 }, { 0x1D185, 0x1D18B }, { 0x1D1AA, 0x1D1AD },
+    { 0x1D242, 0x1D244 }, { 0xE0001, 0xE0001 }, { 0xE0020, 0xE007F },
+    { 0xE0100, 0xE01EF }
+  };
+
+  /* test for 8-bit control characters */
+  if (ucs == 0)
+    return 0;
+  if (ucs < 32 || (ucs >= 0x7f && ucs < 0xa0))
+    return -1;
+
+  /* binary search in table of non-spacing characters */
+  if (bisearch(ucs, combining,
+	       sizeof(combining) / sizeof(struct interval) - 1))
+    return 0;
+
+  /* if we arrive here, ucs is not a combining or C0/C1 control character */
+
+  return 1 + 
+    (ucs >= 0x1100 &&
+     (ucs <= 0x115f ||                    /* Hangul Jamo init. consonants */
+      ucs == 0x2329 || ucs == 0x232a ||
+      (ucs >= 0x2e80 && ucs <= 0xa4cf &&
+       ucs != 0x303f) ||                  /* CJK ... Yi */
+      (ucs >= 0xac00 && ucs <= 0xd7a3) || /* Hangul Syllables */
+      (ucs >= 0xf900 && ucs <= 0xfaff) || /* CJK Compatibility Ideographs */
+      (ucs >= 0xfe10 && ucs <= 0xfe19) || /* Vertical forms */
+      (ucs >= 0xfe30 && ucs <= 0xfe6f) || /* CJK Compatibility Forms */
+      (ucs >= 0xff00 && ucs <= 0xff60) || /* Fullwidth Forms */
+      (ucs >= 0xffe0 && ucs <= 0xffe6) ||
+      (ucs >= 0x20000 && ucs <= 0x2fffd) ||
+      (ucs >= 0x30000 && ucs <= 0x3fffd)));
+}
+
+
+/*
+ * The following functions are part of the original wcwidth.c:
+ * we don't use them but I've kept them in case - pws.
+ */
+#if 0
+int mk_wcswidth(const wchar_t *pwcs, size_t n)
+{
+  int w, width = 0;
+
+  for (;*pwcs && n-- > 0; pwcs++)
+    if ((w = mk_wcwidth(*pwcs)) < 0)
+      return -1;
+    else
+      width += w;
+
+  return width;
+}
+
+
+/*
+ * The following functions are the same as mk_wcwidth() and
+ * mk_wcswidth(), except that spacing characters in the East Asian
+ * Ambiguous (A) category as defined in Unicode Technical Report #11
+ * have a column width of 2. This variant might be useful for users of
+ * CJK legacy encodings who want to migrate to UCS without changing
+ * the traditional terminal character-width behaviour. It is not
+ * otherwise recommended for general use.
+ */
+int mk_wcwidth_cjk(wchar_t ucs)
+{
+  /* sorted list of non-overlapping intervals of East Asian Ambiguous
+   * characters, generated by "uniset +WIDTH-A -cat=Me -cat=Mn -cat=Cf c" */
+  static const struct interval ambiguous[] = {
+    { 0x00A1, 0x00A1 }, { 0x00A4, 0x00A4 }, { 0x00A7, 0x00A8 },
+    { 0x00AA, 0x00AA }, { 0x00AE, 0x00AE }, { 0x00B0, 0x00B4 },
+    { 0x00B6, 0x00BA }, { 0x00BC, 0x00BF }, { 0x00C6, 0x00C6 },
+    { 0x00D0, 0x00D0 }, { 0x00D7, 0x00D8 }, { 0x00DE, 0x00E1 },
+    { 0x00E6, 0x00E6 }, { 0x00E8, 0x00EA }, { 0x00EC, 0x00ED },
+    { 0x00F0, 0x00F0 }, { 0x00F2, 0x00F3 }, { 0x00F7, 0x00FA },
+    { 0x00FC, 0x00FC }, { 0x00FE, 0x00FE }, { 0x0101, 0x0101 },
+    { 0x0111, 0x0111 }, { 0x0113, 0x0113 }, { 0x011B, 0x011B },
+    { 0x0126, 0x0127 }, { 0x012B, 0x012B }, { 0x0131, 0x0133 },
+    { 0x0138, 0x0138 }, { 0x013F, 0x0142 }, { 0x0144, 0x0144 },
+    { 0x0148, 0x014B }, { 0x014D, 0x014D }, { 0x0152, 0x0153 },
+    { 0x0166, 0x0167 }, { 0x016B, 0x016B }, { 0x01CE, 0x01CE },
+    { 0x01D0, 0x01D0 }, { 0x01D2, 0x01D2 }, { 0x01D4, 0x01D4 },
+    { 0x01D6, 0x01D6 }, { 0x01D8, 0x01D8 }, { 0x01DA, 0x01DA },
+    { 0x01DC, 0x01DC }, { 0x0251, 0x0251 }, { 0x0261, 0x0261 },
+    { 0x02C4, 0x02C4 }, { 0x02C7, 0x02C7 }, { 0x02C9, 0x02CB },
+    { 0x02CD, 0x02CD }, { 0x02D0, 0x02D0 }, { 0x02D8, 0x02DB },
+    { 0x02DD, 0x02DD }, { 0x02DF, 0x02DF }, { 0x0391, 0x03A1 },
+    { 0x03A3, 0x03A9 }, { 0x03B1, 0x03C1 }, { 0x03C3, 0x03C9 },
+    { 0x0401, 0x0401 }, { 0x0410, 0x044F }, { 0x0451, 0x0451 },
+    { 0x2010, 0x2010 }, { 0x2013, 0x2016 }, { 0x2018, 0x2019 },
+    { 0x201C, 0x201D }, { 0x2020, 0x2022 }, { 0x2024, 0x2027 },
+    { 0x2030, 0x2030 }, { 0x2032, 0x2033 }, { 0x2035, 0x2035 },
+    { 0x203B, 0x203B }, { 0x203E, 0x203E }, { 0x2074, 0x2074 },
+    { 0x207F, 0x207F }, { 0x2081, 0x2084 }, { 0x20AC, 0x20AC },
+    { 0x2103, 0x2103 }, { 0x2105, 0x2105 }, { 0x2109, 0x2109 },
+    { 0x2113, 0x2113 }, { 0x2116, 0x2116 }, { 0x2121, 0x2122 },
+    { 0x2126, 0x2126 }, { 0x212B, 0x212B }, { 0x2153, 0x2154 },
+    { 0x215B, 0x215E }, { 0x2160, 0x216B }, { 0x2170, 0x2179 },
+    { 0x2190, 0x2199 }, { 0x21B8, 0x21B9 }, { 0x21D2, 0x21D2 },
+    { 0x21D4, 0x21D4 }, { 0x21E7, 0x21E7 }, { 0x2200, 0x2200 },
+    { 0x2202, 0x2203 }, { 0x2207, 0x2208 }, { 0x220B, 0x220B },
+    { 0x220F, 0x220F }, { 0x2211, 0x2211 }, { 0x2215, 0x2215 },
+    { 0x221A, 0x221A }, { 0x221D, 0x2220 }, { 0x2223, 0x2223 },
+    { 0x2225, 0x2225 }, { 0x2227, 0x222C }, { 0x222E, 0x222E },
+    { 0x2234, 0x2237 }, { 0x223C, 0x223D }, { 0x2248, 0x2248 },
+    { 0x224C, 0x224C }, { 0x2252, 0x2252 }, { 0x2260, 0x2261 },
+    { 0x2264, 0x2267 }, { 0x226A, 0x226B }, { 0x226E, 0x226F },
+    { 0x2282, 0x2283 }, { 0x2286, 0x2287 }, { 0x2295, 0x2295 },
+    { 0x2299, 0x2299 }, { 0x22A5, 0x22A5 }, { 0x22BF, 0x22BF },
+    { 0x2312, 0x2312 }, { 0x2460, 0x24E9 }, { 0x24EB, 0x254B },
+    { 0x2550, 0x2573 }, { 0x2580, 0x258F }, { 0x2592, 0x2595 },
+    { 0x25A0, 0x25A1 }, { 0x25A3, 0x25A9 }, { 0x25B2, 0x25B3 },
+    { 0x25B6, 0x25B7 }, { 0x25BC, 0x25BD }, { 0x25C0, 0x25C1 },
+    { 0x25C6, 0x25C8 }, { 0x25CB, 0x25CB }, { 0x25CE, 0x25D1 },
+    { 0x25E2, 0x25E5 }, { 0x25EF, 0x25EF }, { 0x2605, 0x2606 },
+    { 0x2609, 0x2609 }, { 0x260E, 0x260F }, { 0x2614, 0x2615 },
+    { 0x261C, 0x261C }, { 0x261E, 0x261E }, { 0x2640, 0x2640 },
+    { 0x2642, 0x2642 }, { 0x2660, 0x2661 }, { 0x2663, 0x2665 },
+    { 0x2667, 0x266A }, { 0x266C, 0x266D }, { 0x266F, 0x266F },
+    { 0x273D, 0x273D }, { 0x2776, 0x277F }, { 0xE000, 0xF8FF },
+    { 0xFFFD, 0xFFFD }, { 0xF0000, 0xFFFFD }, { 0x100000, 0x10FFFD }
+  };
+
+  /* binary search in table of non-spacing characters */
+  if (bisearch(ucs, ambiguous,
+	       sizeof(ambiguous) / sizeof(struct interval) - 1))
+    return 2;
+
+  return mk_wcwidth(ucs);
+}
+
+
+int mk_wcswidth_cjk(const wchar_t *pwcs, size_t n)
+{
+  int w, width = 0;
+
+  for (;*pwcs && n-- > 0; pwcs++)
+    if ((w = mk_wcwidth_cjk(*pwcs)) < 0)
+      return -1;
+    else
+      width += w;
+
+  return width;
+}
+#endif /* 0 */
+
+/**/
+#endif /* BROKEN_WCWIDTH */
+
Index: Src/prompt.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/prompt.c,v
retrieving revision 1.46
diff -u -r1.46 prompt.c
--- Src/prompt.c	17 Feb 2008 18:15:10 -0000	1.46
+++ Src/prompt.c	22 Apr 2008 10:36:07 -0000
@@ -960,10 +960,10 @@
 		break;
 	    default:
 		/*
-		 * If the character isn't printable, wcwidth() returns
+		 * If the character isn't printable, WCWIDTH() returns
 		 * -1.  We assume width 1.
 		 */
-		wcw = wcwidth(wc);
+		wcw = WCWIDTH(wc);
 		if (wcw >= 0)
 		    w += wcw;
 		else
@@ -1177,7 +1177,7 @@
 				remw--;
 				break;
 			    default:
-				wcw = wcwidth(cc);
+				wcw = WCWIDTH(cc);
 				if (wcw >= 0)
 				    remw -= wcw;
 				else
@@ -1249,7 +1249,7 @@
 				maxwidth--;
 				break;
 			    default:
-				wcw = wcwidth(cc);
+				wcw = WCWIDTH(cc);
 				if (wcw >= 0)
 				    maxwidth -= wcw;
 				else
Index: Src/utils.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/utils.c,v
retrieving revision 1.187
diff -u -r1.187 utils.c
--- Src/utils.c	21 Apr 2008 11:49:57 -0000	1.187
+++ Src/utils.c	22 Apr 2008 10:36:09 -0000
@@ -548,7 +548,7 @@
     }
 
     if (widthp) {
-	int wcw = wcwidth(c);
+	int wcw = WCWIDTH(c);
 	*widthp = (s - buf);
 	if (wcw >= 0)
 	    *widthp += wcw;
@@ -581,7 +581,7 @@
     /* assume a single-byte character if not valid */
     if (wc == WEOF || unset(MULTIBYTE))
 	return 1;
-    wcw = wcwidth(wc);
+    wcw = WCWIDTH(wc);
     /* if not printable, assume width 1 */
     if (wcw < 0)
 	return 1;
@@ -4097,7 +4097,7 @@
 		 * Returns -1 if not a printable character.  We
 		 * turn this into 1 for backward compatibility.
 		 */
-		int wcw = wcwidth(wc);
+		int wcw = WCWIDTH(wc);
 		if (wcw >= 0)
 		    num += wcw;
 		else
Index: Src/zsh.h
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/zsh.h,v
retrieving revision 1.124
diff -u -r1.124 zsh.h
--- Src/zsh.h	21 Apr 2008 11:49:58 -0000	1.124
+++ Src/zsh.h	22 Apr 2008 10:36:11 -0000
@@ -2256,12 +2256,21 @@
 #define MB_METASTRWIDTH(str)	mb_metastrlen(str, 1)
 #define MB_METASTRLEN2(str, widthp)	mb_metastrlen(str, widthp)
 
+#ifdef BROKEN_WCWIDTH
+#define WCWIDTH(wc)	wcwidth_mk(wc)
+#else
+#define WCWIDTH(wc)	wcwidth(wc)
+#endif
 /*
- * Note WCWIDTH() takes wint_t, typically as a convchar_t.
+ * Note WCWIDTH_WINT() takes wint_t, typically as a convchar_t.
  * It's written to use the wint_t from mb_metacharlenconv() without
  * further tests.
+ *
+ * This version has a non-multibyte definition that simply returns
+ * 1.  We never expose WCWIDTH() in the non-multibyte world since
+ * it's just a proxy for wcwidth() itself.
  */
-#define WCWIDTH(wc)	zwcwidth(wc)
+#define WCWIDTH_WINT(wc)	zwcwidth(wc)
 
 #define MB_INCOMPLETE	((size_t)-2)
 #define MB_INVALID	((size_t)-1)
@@ -2286,9 +2295,6 @@
  *
  * wc is assumed to be a wchar_t (i.e. we don't need zwcwidth).
  *
- * This may need to be more careful if we import a wcwidth() for
- * compatibility to try to avoid clashes with the system library.
- *
  * Pedantic note: in Unicode, a combining character need not be
  * zero length.  However, we are concerned here about display;
  * we simply need to know whether the character will be displayed
@@ -2296,7 +2302,15 @@
  * sense throughout the shell.  I am not aware of a way of
  * detecting the Unicode trait in standard libraries.
  */
-#define IS_COMBINING(wc)	(wcwidth(wc) == 0)
+#ifdef BROKEN_WCWIDTH
+/*
+ * We can't be quite sure the wcwidth we've provided is entirely
+ * in agreement with the system's, so be extra safe.
+ */
+#define IS_COMBINING(wc)	(WCWIDTH(wc) == 0 && !iswcntrl(wc))
+#else
+#define IS_COMBINING(wc)	(WCWIDTH(wc) == 0)
+#endif
 /*
  * Test for the base of a combining character.
  *
@@ -2305,7 +2319,7 @@
  * is, as long as it has non-zero width.  We need to avoid all forms of
  * space because the shell will split words on any whitespace.
  */
-#define IS_BASECHAR(wc)		(iswgraph(wc) && wcwidth(wc) > 0)
+#define IS_BASECHAR(wc)		(iswgraph(wc) && WCWIDTH(wc) > 0)
 
 #else /* not MULTIBYTE_SUPPORT */
 
@@ -2317,7 +2331,7 @@
 #define MB_METASTRWIDTH(str)	ztrlen(str)
 #define MB_METASTRLEN2(str, widthp)	ztrlen(str)
 
-#define WCWIDTH(c)	(1)
+#define WCWIDTH_WINT(c)	(1)
 
 /* Leave character or string as is. */
 #define ZWC(c)	c
Index: Src/Zle/complist.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/Zle/complist.c,v
retrieving revision 1.112
diff -u -r1.112 complist.c
--- Src/Zle/complist.c	20 Apr 2008 21:17:29 -0000	1.112
+++ Src/Zle/complist.c	22 Apr 2008 10:36:13 -0000
@@ -1017,7 +1017,7 @@
 	}
 	else
 #endif
-	    width = WCWIDTH(cchar);
+	    width = WCWIDTH_WINT(cchar);
 
 	if (doesc && cchar == ZWC('%')) {
 	    p += len;
Index: Src/Zle/zle_misc.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/Zle/zle_misc.c,v
retrieving revision 1.51
diff -u -r1.51 zle_misc.c
--- Src/Zle/zle_misc.c	21 Apr 2008 17:58:59 -0000	1.51
+++ Src/Zle/zle_misc.c	22 Apr 2008 10:36:17 -0000
@@ -50,7 +50,8 @@
     if (insmode)
 	spaceinline(m * len);
     else {
-	int pos = zlecs, diff, i;
+	int pos = zlecs, diff, i, width;
+	int lastchar_base = 0;
 
 	/*
 	 * Calculate the number of character positions we are
@@ -59,10 +60,30 @@
 	 * (i.e. even if control, or double width, or with combining
 	 * characters) is treated as 1 for the purpose of replacing
 	 * what's there already.
+	 *
+	 * However, to do that we need to know whether combining
+	 * characters are going to be treated as such.  Here
+	 * lastchar_base = 0 is something that isn't a combining
+	 * character and won't be treated by zsh as the base for one
+	 * lastchar_base = 1 is a suitable base character.
+	 * We don't change lastchar_type for combining characters
+	 * since they only depend on the base character.
+	 *
+	 * The difference won't usually matter, but it means,
+	 * for example, that a combining character inserted at
+	 * the start of the line will overwrite rather than
+	 * insert, which would be illogical; similarly at the
+	 * start of a command line argument.
 	 */
 	for (i = 0, count = 0; i < len; i++) {
-	    int width = wcwidth(zstr[i]);
-	    count += (width != 0) ? 1 : 0;
+	    if (IS_COMBINING(zstr[i])) {
+		/* width is zero unless we didn't have a base character */
+		if (!lastchar_base)
+		    count += 1;
+	    } else {
+		count++;
+		lastchar_base = IS_BASECHAR(zstr[i]);
+	    }
 	}
 	/*
 	 * Ensure we replace a complete combining character
Index: Src/Zle/zle_refresh.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/Zle/zle_refresh.c,v
retrieving revision 1.60
diff -u -r1.60 zle_refresh.c
--- Src/Zle/zle_refresh.c	21 Apr 2008 11:49:58 -0000	1.60
+++ Src/Zle/zle_refresh.c	22 Apr 2008 10:36:17 -0000
@@ -1222,7 +1222,7 @@
 	    }
 	}
 #ifdef MULTIBYTE_SUPPORT
-	else if (iswprint(*t) && (width = wcwidth(*t)) > 0) {
+	else if (iswprint(*t) && (width = WCWIDTH(*t)) > 0) {
 	    int ichars;
 	    if (width > rpms.sen - rpms.s) {
 		int started = 0;
@@ -1397,7 +1397,7 @@
 	for (; u < outputline + outll; u++) {
 #ifdef MULTIBYTE_SUPPORT
 	    if (iswprint(*u)) {
-		int width = wcwidth(*u);
+		int width = WCWIDTH(*u);
 		/* Handle wide characters as above */
 		if (width > rpms.sen - rpms.s) {
 		    do {
@@ -2144,7 +2144,7 @@
    characters occupying more than one column.  We could flag that
    this has happened (since it's not that common to have characters
    wider than one column), but for now it's easier not to use the
-   trick if we are using wcwidth() on the prompt.  It's not that
+   trick if we are using WCWIDTH() on the prompt.  It's not that
    common to be editing in the middle of the prompt anyway, I would
    think.
    */
@@ -2264,7 +2264,7 @@
 	if (tmpline[t0] == ZWC('\t'))
 	    vsiz = (vsiz | 7) + 2;
 #ifdef MULTIBYTE_SUPPORT
-	else if (iswprint(tmpline[t0]) && (width = wcwidth(tmpline[t0]) > 0)) {
+	else if (iswprint(tmpline[t0]) && (width = WCWIDTH(tmpline[t0]) > 0)) {
 	    vsiz += width;
 	    if (isset(COMBININGCHARS) && IS_BASECHAR(tmpline[t0])) {
 		while (t0 < tmpll-1 && IS_COMBINING(tmpline[t0+1]))
@@ -2340,7 +2340,7 @@
 	    vp++;
 #ifdef MULTIBYTE_SUPPORT
 	} else if (iswprint(tmpline[t0]) &&
-		   (width = wcwidth(tmpline[t0])) > 0) {
+		   (width = WCWIDTH(tmpline[t0])) > 0) {
 	    int ichars;
 	    if (isset(COMBININGCHARS) && IS_BASECHAR(tmpline[t0])) {
 		/*
Index: Src/Zle/zle_tricky.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/Zle/zle_tricky.c,v
retrieving revision 1.93
diff -u -r1.93 zle_tricky.c
--- Src/Zle/zle_tricky.c	14 Apr 2008 14:57:54 -0000	1.93
+++ Src/Zle/zle_tricky.c	22 Apr 2008 10:36:17 -0000
@@ -2375,7 +2375,7 @@
 		    }
 		} else
 		    p += clen;
-		cc += WCWIDTH(cchar);
+		cc += WCWIDTH_WINT(cchar);
 		if (dopr && !(cc % columns))
 			fputs(" \010", shout);
 	    }


-- 
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


^ permalink raw reply	[relevance 1%]

* Re: PATCH: alternative wcwidth() implementation
  2008-04-22 10:50  1% PATCH: alternative wcwidth() implementation Peter Stephenson
@ 2008-04-22 16:15  0% ` Peter Stephenson
  2008-04-23 10:33  0%   ` Peter Stephenson
  0 siblings, 1 reply; 200+ results
From: Peter Stephenson @ 2008-04-22 16:15 UTC (permalink / raw)
  To: Zsh hackers list

On Tue, 22 Apr 2008 11:50:18 +0100
Peter Stephenson <pws@csr.com> wrote:
> I note we should supposedly be defining _XOPEN_SOURCE to get wcwidth(),
> at least with glibc, but apparently generally don't (though I did for the
> configure test).  I'm a bit frightened of changing this, but POSIX does
> suggest it's part of the XSI extension, so probably we ought to.
> Indeed, we do define _XOPEN_SOURCE_EXTENDED if needed for curses.h;
> probably the right thing to do is in the #else case, #define
> _XOPEN_SOURCE if MULTIBYTE_SUPPORT is present.

Let's try it.

Index: Src/system.h
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/system.h,v
retrieving revision 1.49
diff -u -r1.49 system.h
--- Src/system.h	14 Dec 2007 15:14:06 -0000	1.49
+++ Src/system.h	22 Apr 2008 16:13:20 -0000
@@ -53,7 +53,12 @@
 #endif
 
 #if defined(ZSH_CURSES_SOURCE) && defined(ZSH_CURSES_NEEDS_XOPEN)
-#define _XOPEN_SOURCE_EXTENDED 1
+# define _XOPEN_SOURCE_EXTENDED 1
+#else
+# ifdef MULTIBYTE_SUPPORT
+/* Needed for wcwidth() which is part of XSI */
+#  define _XOPEN_SOURCE 1
+# endif
 #endif
 
 /*

-- 
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


^ permalink raw reply	[relevance 0%]

* Re: PATCH: alternative wcwidth() implementation
  2008-04-22 16:15  0% ` Peter Stephenson
@ 2008-04-23 10:33  0%   ` Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2008-04-23 10:33 UTC (permalink / raw)
  To: Zsh hackers list

On Tue, 22 Apr 2008 17:15:43 +0100
Peter Stephenson <pws@csr.com> wrote:
> On Tue, 22 Apr 2008 11:50:18 +0100
> Peter Stephenson <pws@csr.com> wrote:
> > I note we should supposedly be defining _XOPEN_SOURCE to get wcwidth(),
> > at least with glibc, but apparently generally don't (though I did for the
> > configure test).  I'm a bit frightened of changing this, but POSIX does
> > suggest it's part of the XSI extension, so probably we ought to.
> > Indeed, we do define _XOPEN_SOURCE_EXTENDED if needed for curses.h;
> > probably the right thing to do is in the #else case, #define
> > _XOPEN_SOURCE if MULTIBYTE_SUPPORT is present.
> 
> Let's try it.

On Solaris 8 this isn't good enough: we need the _EXTENDED version or we
don't get the full interface from sys/time.h.  That's already in use in
some cases, maybe this isn't too big a deal...

Index: Src/system.h
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/system.h,v
retrieving revision 1.50
diff -u -r1.50 system.h
--- Src/system.h	22 Apr 2008 16:18:55 -0000	1.50
+++ Src/system.h	23 Apr 2008 10:30:05 -0000
@@ -56,8 +56,13 @@
 # define _XOPEN_SOURCE_EXTENDED 1
 #else
 # ifdef MULTIBYTE_SUPPORT
-/* Needed for wcwidth() which is part of XSI */
-#  define _XOPEN_SOURCE 1
+/*
+ * Needed for wcwidth() which is part of XSI.
+ * Various other uses of the interface mean we can't get away with just
+ * _XOPEN_SOURCE.
+ */
+/*#  define _XOPEN_SOURCE 1*/
+#  define _XOPEN_SOURCE_EXTENDED 1
 # endif
 #endif
 
-- 
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


^ permalink raw reply	[relevance 0%]

* Re: Bug#479764: shell builtin mv fails to move files across devices
    @ 2008-05-06 18:52  3%   ` Stephane Chazelas
  1 sibling, 0 replies; 200+ results
From: Stephane Chazelas @ 2008-05-06 18:52 UTC (permalink / raw)
  To: zsh-workers, martin f krafft, 479764

On Tue, May 06, 2008 at 04:03:03PM +0100, Clint Adams wrote:
> On Tue, May 06, 2008 at 03:42:08PM +0100, martin f krafft wrote:
> > lapse:~/debian|master|debian.ch% echo $ZSH_VERSION
> > 4.3.6-dev-0+0428
> > lapse:~/debian|master|debian.ch% zmodload zsh/files
> > lapse:~/debian|master|debian.ch% which mv
> > mv: shell built-in command
> > lapse:~/debian|master|debian.ch% mv /tmp/debian.ch_T-Shirt_20080422-poll.png .
> > mv: /tmp/debian.ch_T-Shirt_20080422-poll.png: invalid cross-device link
> 
> Anyone up for changing this in a future version?
> 
>     Note  that  this  mv  will not move files across devices.  Historical
>     versions of mv, when actual renaming is impossible, fall back on copying
>     and removing files; if this behaviour is desired, use cp and rm manually.
>     This  may  change  in  a future version.

Note that POSIX requires mv to be able to move files (and now
directories) accross file systems. Note that it's quite a
complex task as it involves recreating the files as they were
(permissions, ownership, ACLs, sparse files), handle conflicts,
handle hard links correctly, and handle the error cases
properly. It's not as simple as cp+rm, it would rather be pax
-rw && rm -rf 

-- 
Stéphane


^ permalink raw reply	[relevance 3%]

* Re: Bug#479764: shell builtin mv fails to move files across devices
  @ 2008-05-06 20:55  3%       ` Phil Pennock
  0 siblings, 0 replies; 200+ results
From: Phil Pennock @ 2008-05-06 20:55 UTC (permalink / raw)
  To: martin f krafft; +Cc: Bart Schaefer, zsh-workers, 479764

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

On 2008-05-06 at 17:55 +0100, martin f krafft wrote:
> What, if I may ask, is the purpose of zsh/files?

If I correctly recall the gist of a verbal conversation about 11 years
ago with the author, in a university environment with heavily multi-user
systems which were often abused by people writing My First Fork Bomb, it
was to have the availability to load in sufficient builtins to make it
easier to deal with systems which won't let you fork() anymore more; to
do basic recovery work and have the commands available; to avoid fork()
overheads when dealing with a loaded single-CPU Solaris box, etc.

But mostly, IIRC, to build a static version of the shell with the module
already loaded, to put on a boot/recovery diskette and so reduce what
was needed.

It pre-dates busybox, which has since become the common way of doing
this.

It wasn't intended to provide full versions of the commands, the
commands which are there don't implement all the POSIX options, etc.
It's intended to provide enough to be useful in emergencies.

Most people shouldn't need to use it.

Mind, it's availability was one of the factors which led to the author
successfully convincing me to switch shells to zsh.  :^)  There were
times when it _really_ mattered.

It's probably worth adding a note to the documentation that the
implementations are not complete (for Standards compliance) and that the
module should probably only be loaded for emergency recovery situations;
loading it for routine use is premature over-optimisation.

-Phil

[-- Attachment #2: Type: application/pgp-signature, Size: 163 bytes --]

^ permalink raw reply	[relevance 3%]

* New completions for awk cut join sort - attached
@ 2008-05-13 15:55  4% Omari Norman
  2008-05-13 16:07  0% ` Stephane Chazelas
  2008-05-13 16:11  0% ` Peter Stephenson
  0 siblings, 2 replies; 200+ results
From: Omari Norman @ 2008-05-13 15:55 UTC (permalink / raw)
  To: zsh-workers

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

Hi all,

I just wrote some completions for awk, cut, join, and sort. I was
surprised that zsh didn't include these already. The awk one isn't
perfect but it's a lot better than nothing. The awk one only completes
basic POSIX awk options (i.e. not gawk or mawk options) while cut, join,
and sort completions are for the GNU versions.

I find these helpful, particularly because these commands all use
different flags ("-F", "-t", and "-d") to do the exact same thing, even
though these commands will often appear in the same pipeline! awk often
trips me up in other ways, and this completion really helps with that
too.

I have attached the completions. Hopefully they can be included in the
next zsh release, though the awk completion could use some expert
attention (see comments in _awk). Thanks. --Omari


-- 
Though the bag does not inflate, oxygen is flowing.

[-- Attachment #2: _awk --]
[-- Type: text/plain, Size: 972 bytes --]

#compdef awk

# completions for awk
# This only aims to complete POSIX awk options, as described in
# awk(P). Most awk implementations, such as gawk and mawk, will have
# additional options that this does not complete. Also, currently
# this completion does not allow everything that POSIX allows. For
# example, awk(P) states that the user may specify assignments
# without using the -v option; this does not support that.
#
# In addition, the "program text" completion is not perfect. For
# instance, type "awk -" and then hit tab. You will be presented
# both with the dashed options and with the "program text" option.
# Fixing this is beyond my current _arguments expertise--help
# appreciated.

_arguments -S -s '-F[define input field separator to be an extended regular expression]:extended regular expression:' \
    '*-v[assign values to variables]:assignment:' \
    '(1)-f[program file]:program file:_files' \
    '1:program text:' \
    '*:input files:_files'

[-- Attachment #3: _cut --]
[-- Type: text/plain, Size: 1044 bytes --]

#compdef cut

# zsh completions for GNU cut version 5.97

local arguments

arguments=(
    '(-f --fields -b --bytes -c --characters)'{-b+,--bytes=}'[select only these bytes]:bytes:'
    '(-f --fields -b --bytes -c --characters)'{-c+,--characters=}'[select only these characters]:characters:'
    '(-f --fields -b --bytes -c --characters)'{-f+,--fields=}'[select only these fields; also print any line that contains no delimiter character, unless the -s option is specified]:fields:'
    '(-d --delimiter)'{-d+,--delimiter=}'[use delimiter instead of tab for field delimiter]:delimiter:'
    -n'[(ignored)]'
    --complement'[complement the set of selected bytes, characters or fields]'
    '(-s --only-delimited)'{-s+,--only-delimited=}'[do not print lines not containing delimiters]'
    '--output-delimiter=[use string as the output delimiter; the default is to use the input delimiter]:string:'
    --help'[display help and exit]'
    --version'[display version information and exit]'
    '*:filename:_files'
    )

_arguments -s $arguments

[-- Attachment #4: _join --]
[-- Type: text/plain, Size: 933 bytes --]

#compdef join

# completions for GNU join version 5.97

local arguments

arguments=(
    '-a+[print unpairable lines coming from file FILENUM, where FILENUM is 1 or 2, corresponding to FILE1 or FILE2]:file number:(1 2)'
    '-e+[replace missing input fields with EMPTY]:replacement string:'
    '(-i --ignore-case)'{-i,--ignore-case}'[ignore differences in case when comparing fields]'
    "-j+[equivalent to '-1 FIELD -2 FIELD']:field number:"
    '-o+[obey FORMAT while constructing output line]:format string:'
    '-t+[use CHAR as input and output field separator]:separator:'
    '-v+[like -a FILENUM, but suppress joined output lines]:file number:(1 2)'
    '-1+[join on this FIELD of file 1]:field number:'
    '-2+[join on this FIELD of file 2]:field number:'
    --help'[display help and exit]'
    --version'[output version information and exit]'
    '1:file 1:_files'
    '2:file 2:_files'
    )

_arguments -s $arguments

[-- Attachment #5: _sort --]
[-- Type: text/plain, Size: 2016 bytes --]

#compdef sort

# zsh completions for GNU sort version 5.97
# limitation: --key does not work exactly right
local arguments

arguments=(
    '(-b --ignore-leading-blanks)'{-b,--ignore-leading-blanks}'[ignore leading blanks]'
    '(-d --dictionary-order)'{-d,--dictionary-order}'[consider only blanks and alphanumeric characters]'
    '(-f --ignore-case)'{-f,--ignore-case}'[fold lower case to upper case characters]'
    '(-g --general-numeric-sort)'{-g,--general-numeric-sort}'[compare according to general numeric value]'
    '(-i --ignore-nonprinting)'{-i,--ignore-nonprinting}'[consider only printable characters]'
    '(-M --month-sort)'{-M,--month-sort}"[compare (unknown) < 'JAN' < ... < 'DEC']"
    '(-n --numeric-sort)'{-n,--numeric-sort}'[compare according to string numerical value]'
    '(-r --reverse)'{-r,--reverse}'[reverse the result of comparisons]'
    '(-c --check)'{-c,--check}'[check whether input is sorted; do not sort]'
    '(-k --key)'{-k+,--key=}'[start a key at POS1, end it as POS2 (origin 1)]:key:'
    '(-m --merge)'{-m,--merge}'[merge already sorted files; do not sort]'
    '(-o --output)'{-o+,--output=}'[write result to FILE instead of standard output]:filename:_files'
    '(-s --stable)'{-s+,--stable=}'[stabilize sort by disabling last-resort comparison]'
    '(-S --buffer-size)'{-S+,--buffer-size=}'[use SIZE for main memory buffer]:size:'
    '(-t --field-separator)'{-t+,--field-separator=}'[use SEP instead of non-blank to blank transition]:separator:'
    '(-T --temporary-directory)'{-T+,--temporary-directory=}'[use DIR for temporaries, not $TMPDIR or /tmp; multiple options specify multiple directories]:directory'
    '(-u --unique)'{-u,--unique}'[with -c, check for strict ordering; without -c, output only the first of an equal run]'
    '(-z --zero-terminated)'{-z,--zero-terminated}'[end lines with 0 byte, not newline]'
    --help'[display help and exit]'
    --version'[output version information and exit]'
    '*:filename:_files'
    )

_arguments -s $arguments

^ permalink raw reply	[relevance 4%]

* Re: New completions for awk cut join sort - attached
  2008-05-13 15:55  4% New completions for awk cut join sort - attached Omari Norman
@ 2008-05-13 16:07  0% ` Stephane Chazelas
  2008-05-13 16:11  0% ` Peter Stephenson
  1 sibling, 0 replies; 200+ results
From: Stephane Chazelas @ 2008-05-13 16:07 UTC (permalink / raw)
  To: Omari Norman; +Cc: zsh-workers

On Tue, May 13, 2008 at 11:55:32AM -0400, Omari Norman wrote:
[...]
> # completions for awk
> # This only aims to complete POSIX awk options, as described in
> # awk(P). Most awk implementations, such as gawk and mawk, will have
> # additional options that this does not complete. Also, currently
> # this completion does not allow everything that POSIX allows. For
> # example, awk(P) states that the user may specify assignments
> # without using the -v option; this does not support that.
> #
> # In addition, the "program text" completion is not perfect. For
> # instance, type "awk -" and then hit tab. You will be presented
> # both with the dashed options and with the "program text" option.
> # Fixing this is beyond my current _arguments expertise--help
> # appreciated.
> 
> _arguments -S -s '-F[define input field separator to be an extended regular expression]:extended regular expression:' \
>     '*-v[assign values to variables]:assignment:' \
>     '(1)-f[program file]:program file:_files' \
>     '1:program text:' \
>     '*:input files:_files'
[...]

Note that the remaining arguments of awk can also be awk
variable assignments or the special string "-" to specify stdin.

regards,
Stéphane


^ permalink raw reply	[relevance 0%]

* Re: New completions for awk cut join sort - attached
  2008-05-13 15:55  4% New completions for awk cut join sort - attached Omari Norman
  2008-05-13 16:07  0% ` Stephane Chazelas
@ 2008-05-13 16:11  0% ` Peter Stephenson
  1 sibling, 0 replies; 200+ results
From: Peter Stephenson @ 2008-05-13 16:11 UTC (permalink / raw)
  To: Omari Norman; +Cc: zsh-workers

Omari Norman wrote:
> I just wrote some completions for awk, cut, join, and sort. I was
> surprised that zsh didn't include these already. The awk one isn't
> perfect but it's a lot better than nothing. The awk one only completes
> basic POSIX awk options (i.e. not gawk or mawk options) while cut, join,
> and sort completions are for the GNU versions.

Thanks, we've now got a completion for cut but I've added the others.
Patches to these from anyone are welcome.

-- 
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


^ permalink raw reply	[relevance 0%]

* PATCH: rewrite of completion matching
@ 2008-06-07 20:34  4% Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2008-06-07 20:34 UTC (permalink / raw)
  To: Zsh hackers list

This is the long-hoped-for rewrite of the completion matching code so as
to handle arbitary characters instead of just a set of 256 single-byte
characters.  However, this is only half the story:  I have not modified
it to use wide characters yet, so it won't work with multibyte character
sets.  That second step ought to be much more mechanical than this one,
though it's still not trivial to identify anything as standard as a
well-defined interface to the matching code so it will take some
fiddling.

Astonishingly, after I'd removed all the trivial errors, it passed all
the compmatch tests straight away; so, although there are bound to be
glitches, it's going to need wider testing to find them out.

It's now possible (and recommended) to use m:{[:lower:]}={[:upper:]}
etc. for case matching, but until I change the code for wide characters
this won't actually gain you much.  I've updated compinstall to do
this.

By the way, you can now do partial word completion with
'r:|[[:punct:]]=**' instead of 'r:|[.,_-]=**', should you want to.

There are some limitations.  I'm aware of one place which is plain
wrong: if you use a negative character class assertion, [^...], in file
matching, then compfiles -p/-P is supposed to generate a match that
matches either that class, or the character on the command line.  Cases
like "[^[:upper:]]" with the character on the command line "A" stumped
me, so this doesn't work.  (It ought to be possible to do this as
"(A|[^[:upper:]])" but I've left such subtleties for now.)  What the
effect of this is likely to be is obscure, given that none of the
compfiles code is documented and nor is the point where it's called in
_path_files.  However, I don't think negative character class assertions
are very common in completion.

Other places marked "TODO" are mostly points where I noticed the
existing code was probably imperfect but haven't done anything about it,
rather than new problems.

I've handled the difficult case, the one where Bart and Andrey provided
commentary on what was supposed to be going on, as follows.  Instead of
attempting to assemble the string for the command line immediately and
then testing whether it was correct, I have assembled an appropriate set
of pattern match assertions (or restrictions, as I called them in the
code) for the string, and passed that down to the point where pattern
matching is done.  At this point the assertions are used to attempt to
recover the character on the line.  If it remained ambiguous even at
this point I have given up---clearly there's not a lot of point in
completion if it's simply guessing characters, so I don't think this is
likely to be a problem in practice.  Actually, I don't think this code
is used much for anything apart from correspondence classes, which is
the easy case.

I know that the matching test suite does tickle that code, but only in
small ways---individual characters being replaced by others.  Hence I
remain dubious that it's all perfect.  (In fact, I just discovered a
major error and the tests passed even before I'd fixed it.)  However,
by the same token I've no reason to believe the code it replaces was
perfect either.


Index: Completion/compinstall
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/compinstall,v
retrieving revision 1.12
diff -u -r1.12 compinstall
--- Completion/compinstall	18 Mar 2008 15:14:22 -0000	1.12
+++ Completion/compinstall	7 Jun 2008 20:19:34 -0000
@@ -985,8 +985,14 @@
   for (( eltcnt = 1; eltcnt <= $#mlist; eltcnt++ )); do
     [[ $mlist[eltcnt] == "+"* ]] && a_or_r[$eltcnt]='+'
     [[ -z $mlist[$eltcnt] ]] && n_list[$eltcnt]=$eltcnt
+    # Accept the old form of lower/upper correspondence, but we'll
+    # output the new one instead.
     [[ $mlist[$eltcnt] = *"m:{a-z}={A-Z}"* ]] && c_list[$eltcnt]=$eltcnt
+    [[ $mlist[$eltcnt] = *"m:{[:lower:]}={[:upper:]}"* ]] &&
+      c_list[$eltcnt]=$eltcnt
     [[ $mlist[$eltcnt] = *"m:{a-zA-Z}={A-Za-z}"* ]] && C_list[$eltcnt]=$eltcnt
+    [[ $mlist[$eltcnt] = *"m:{[:lower:][:upper:]}={[:upper:][:lower:]}"* ]] &&
+      C_list[$eltcnt]=$eltcnt
     # For partial word stuff, we use backreferences to find out what
     # the set of separators was.
     if [[ $mlist[$eltcnt] = (#b)*"r:|["([^\]]#)"]=*"#" r:|=*"* ]]; then
@@ -1105,8 +1111,10 @@
   # and reconstructing the elements of the matcher array.
   for (( eltcnt = 1; eltcnt <= 4; eltcnt++ )); do
     elt=
-    [[ $c_list[$eltcnt] != ' ' ]] && elt="${elt:+$elt }m:{a-z}={A-Z}"
-    [[ $C_list[$eltcnt] != ' ' ]] && elt="${elt:+$elt }m:{a-zA-Z}={A-Za-z}"
+    [[ $c_list[$eltcnt] != ' ' ]] &&
+      elt="${elt:+$elt }m:{[:lower:]}={[:upper:]}"
+    [[ $C_list[$eltcnt] != ' ' ]] &&
+      elt="${elt:+$elt }m:{[:lower:][:upper:]}={[:upper:][:lower:]}"
     [[ $p_list[$eltcnt] != ' ' ]] &&
       elt="${elt:+$elt }r:|[${pw_seps[$eltcnt]}]=*${pw_dstar[$eltcnt]}\
  r:|=*${pw_dstar[$eltcnt]}"
Index: Doc/Zsh/compwid.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Zsh/compwid.yo,v
retrieving revision 1.40
diff -u -r1.40 compwid.yo
--- Doc/Zsh/compwid.yo	7 Oct 2006 12:15:57 -0000	1.40
+++ Doc/Zsh/compwid.yo	7 Jun 2008 20:19:35 -0000
@@ -918,15 +918,35 @@
 meaning directly after the opening brace.  They indicate that a range of
 characters on the line match a range of characters in the trial
 completion, but (unlike ordinary character classes) paired according to
-the corresponding position in the sequence. For example, to make any
-lowercase letter on the line match the corresponding uppercase letter in
-the trial completion, you can use `tt(m:{a-z}={A-Z})'.  More than one
-pair of classes can occur, in which case the first class before the
-tt(=) corresponds to the first after it, and so on.  If one side has
+the corresponding position in the sequence.  For example, to make any
+ASCII lower case letter on the line match the corresponding upper case
+letter in the trial completion, you can use `tt(m:{a-z}={A-Z})'
+(however, see below for the recommended form for this).  More
+than one pair of classes can occur, in which case the first class before
+the tt(=) corresponds to the first after it, and so on.  If one side has
 more such classes than the other side, the superfluous classes behave
 like normal character classes.  In anchor patterns correspondence classes
 also behave like normal character classes.
 
+The standard `tt([:)var(name)tt(:])' forms described for standard shell
+patterns,
+ifnzman(noderef(Filename Generation))\
+ifzman(see the section FILENAME GENERATION in zmanref(zshexpn)),
+may appear in correspondence classes as well as normal character
+classes.  The only special behaviour in correspondence classes is if
+the form on the left and the form on the right are each one of
+tt([:upper:]), tt([:lower:]).  In these cases the
+character in the word and the character on the line must be the same up
+to a difference in case.  Hence to make any lower case character on the
+line match the corresponding upper case character in the trial
+completion you can use `tt(m:{[:lower:]}={[:upper:]})'.  Although the
+matching system does not yet handle multibyte characters, this is likely
+to be a future extension, at which point this syntax will handle
+arbitrary alphabets ; hence this form, rather than the use of explicit
+ranges, is thee recommended form.  In other cases
+`tt([:)var(name)tt(:])' forms are allowed, but imply no special
+constraint on the characters beyond that implied by the test itself.
+
 The pattern var(tpat) may also be one or two stars, `tt(*)' or
 `tt(**)'. This means that the pattern on the command line can match
 any number of characters in the trial completion. In this case the
@@ -948,7 +968,7 @@
 generated and uppercase letters on the line match the corresponding
 lowercase letters in the words:
 
-example(compadd -M 'L:|[nN][oO]= M:_= M:{A-Z}={a-z}' - \ 
+example(compadd -M 'L:|[nN][oO]= M:_= M:{[:up[er:]}={[:lower:]}' - \ 
   ${(k)options} )
 
 The first part says that the pattern `tt([nN][oO])' at the beginning
@@ -979,12 +999,12 @@
 the same as in the option example, except here we wish to retain the
 characters in the list of completions:
 
-example(compadd -M 'm:{a-z}={A-Z}' ... )
+example(compadd -M 'm:{[:lower:]}={[:upper:]}' ... )
 
 This makes lowercase letters match their uppercase counterparts.
 To make uppercase letters match the lowercase forms as well:
 
-example(compadd -M 'm:{a-zA-Z}={A-Za-z}' ... )
+example(compadd -M 'm:{[:lower:][:upper:]}={[:upper:][:lower:]}' ... )
 
 A nice example for the use of tt(*) patterns is partial word
 completion. Sometimes you would like to make strings like `tt(c.s.u)'
@@ -1046,23 +1066,23 @@
 complete strings with trailing numbers. Here one could use the simple
 form with only one anchor as in:
 
-example(compadd -M 'r:|[A-Z0-9]=* r:|=*' LikeTHIS FooHoo 5foo123 5bar234)
+example(compadd -M 'r:|[[:upper:]0-9]=* r:|=*' LikeTHIS FooHoo 5foo123 5bar234)
 
 But with this, the string `tt(H)' would neither complete to `tt(FooHoo)'
 nor to `tt(LikeTHIS)' because in each case there is an uppercase
 letter before the `tt(H)' and that is matched by the anchor. Likewise, 
 a `tt(2)' would not be completed. In both cases this could be changed
-by using `tt(r:|[A-Z0-9]=**)', but then `tt(H)' completes to both
+by using `tt(r:|[[:upper:]0-9]=**)', but then `tt(H)' completes to both
 `tt(LikeTHIS)' and `tt(FooHoo)' and a `tt(2)' matches the other
 strings because characters can be inserted before every uppercase
 letter and digit. To avoid this one would use:
 
-example(compadd -M 'r:[^A-Z0-9]||[A-Z0-9]=** r:|=*' \ 
+example(compadd -M 'r:[^[:upper:]0-9]||[[:upper:]0-9]=** r:|=*' \ 
     LikeTHIS FooHoo foo123 bar234)
 
 By using these two anchors, a `tt(H)' matches only uppercase `tt(H)'s that 
 are immediately preceded by something matching the left anchor
-`tt([^A-Z0-9])'. The effect is, of course, that `tt(H)' matches only
+`tt([^[:upper:]0-9])'. The effect is, of course, that `tt(H)' matches only
 the string `tt(FooHoo)', a `tt(2)' matches only `tt(bar234)' and so on.
 
 When using the completion system (see
Index: Src/pattern.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/pattern.c,v
retrieving revision 1.46
diff -u -r1.46 pattern.c
--- Src/pattern.c	17 May 2008 12:15:19 -0000	1.46
+++ Src/pattern.c	7 Jun 2008 20:19:37 -0000
@@ -193,25 +193,6 @@
  *	     	    v      v  	  	    ^
  *	            ------------------------
  */
-#define PP_ALPHA  1
-#define PP_ALNUM  2
-#define PP_ASCII  3
-#define PP_BLANK  4
-#define PP_CNTRL  5
-#define PP_DIGIT  6
-#define PP_GRAPH  7
-#define PP_LOWER  8
-#define PP_PRINT  9
-#define PP_PUNCT  10
-#define PP_SPACE  11
-#define PP_UPPER  12
-#define PP_XDIGIT 13
-#define PP_IDENT  14
-#define PP_IFS    15
-#define PP_IFSSPACE   16
-#define PP_WORD   17
-#define PP_UNKWN  18
-#define PP_RANGE  19
 
 #define	P_OP(p)		((p)->l & 0xff)
 #define	P_NEXT(p)	((p)->l >> 8)
@@ -1057,6 +1038,127 @@
     return 1;
 }
 
+
+static const char *colon_stuffs[]  = {
+    "alpha", "alnum", "ascii", "blank", "cntrl", "digit", "graph", 
+    "lower", "print", "punct", "space", "upper", "xdigit", "IDENT",
+    "IFS", "IFSSPACE", "WORD", NULL
+};
+
+/*
+ * Handle the guts of a [:stuff:] character class element.
+ * start is the beginning of "stuff" and len is its length.
+ * This code is exported for the benefit of completion matching.
+ */
+
+/**/
+mod_export int
+range_type(char *start, int len)
+{
+    const char **csp;
+
+    for (csp = colon_stuffs; *csp; csp++) {
+	if (!strncmp(start, *csp, len))
+	    return (csp - colon_stuffs) + PP_FIRST;
+    }
+
+    return PP_UNKWN;
+}
+
+
+/*
+ * Convert the contents of a [...] or [^...] expression (just the
+ * ... part) back into a string.  This is used by compfiles -p/-P
+ * for some reason.  The compiled form (a metafied string) is
+ * passed in rangestr.
+ *
+ * If outstr is non-NULL the compiled form is placed there.  It
+ * must be sufficiently long.  A terminating NULL is appended.
+ *
+ * Return the length required, not including the terminating NULL.
+ *
+ * TODO: this is non-multibyte for now.  It will need to be defined
+ * appropriately with MULTIBYTE_SUPPORT when the completion matching
+ * code catches up.
+ */
+
+/**/
+mod_export int
+pattern_range_to_string(char *rangestr, char *outstr)
+{
+    int len = 0;
+
+    while (*rangestr) {
+	if (imeta(STOUC(*rangestr))) {
+	    int swtype = STOUC(*rangestr) - STOUC(Meta);
+
+	    if (swtype == 0) {
+		/* Ordindary metafied character */
+		if (outstr)
+		{
+		    *outstr++ = Meta;
+		    *outstr++ = rangestr[1] ^ 32;
+		}
+		len += 2;
+		rangestr += 2;
+	    } else if (swtype == PP_RANGE) {
+		/* X-Y range */
+		int i;
+
+		for (i = 0; i < 2; i++) {
+		    if (*rangestr == Meta) {
+			if (outstr) {
+			    *outstr++ = Meta;
+			    *outstr++ = rangestr[1];
+			}
+			len += 2;
+			rangestr += 2;
+		    } else {
+			if (outstr)
+			    *outstr++ = *rangestr;
+			len++;
+			rangestr++;
+		    }
+
+		    if (i == 0) {
+			if (outstr)
+			    *outstr++ = '-';
+			len++;
+		    }
+		}
+	    } else if (swtype >= PP_FIRST && swtype <= PP_LAST) {
+		/* [:stuff:]; we need to output [: and :] */
+		const char *found = colon_stuffs[swtype - PP_FIRST];
+		int newlen = strlen(found);
+		if (outstr) {
+		    strcpy(outstr, "[:");
+		    outstr += 2;
+		    memcpy(outstr, found, newlen);
+		    outstr += newlen;
+		    strcpy(outstr, ":]");
+		    outstr += 2;
+		}
+		len += newlen + 4;
+		rangestr++;
+	    } else {
+		/* shouldn't happen */
+		DPUTS(1, "BUG: unknown PP_ code in pattern range");
+		rangestr++;
+	    }
+	} else {
+	    /* ordinary character, guaranteed no Meta handling needed */
+	    if (outstr)
+		*outstr++ = *rangestr;
+	    len++;
+	    rangestr++;
+	}
+    }
+
+    if (outstr)
+	*outstr = '\0';
+    return len;
+}
+
 /*
  * compile a chunk such as a literal string or a [...] followed
  * by a possible hash operator
@@ -1230,45 +1332,10 @@
 			/* Posix range. */
 			patparse += 2;
 			len = nptr - patparse;
-			if (!strncmp(patparse, "alpha", len))
-			    ch = PP_ALPHA;
-			else if (!strncmp(patparse, "alnum", len))
-			    ch = PP_ALNUM;
-			else if (!strncmp(patparse, "ascii", len))
-			    ch = PP_ASCII;
-			else if (!strncmp(patparse, "blank", len))
-			    ch = PP_BLANK;
-			else if (!strncmp(patparse, "cntrl", len))
-			    ch = PP_CNTRL;
-			else if (!strncmp(patparse, "digit", len))
-			    ch = PP_DIGIT;
-			else if (!strncmp(patparse, "graph", len))
-			    ch = PP_GRAPH;
-			else if (!strncmp(patparse, "lower", len))
-			    ch = PP_LOWER;
-			else if (!strncmp(patparse, "print", len))
-			    ch = PP_PRINT;
-			else if (!strncmp(patparse, "punct", len))
-			    ch = PP_PUNCT;
-			else if (!strncmp(patparse, "space", len))
-			    ch = PP_SPACE;
-			else if (!strncmp(patparse, "upper", len))
-			    ch = PP_UPPER;
-			else if (!strncmp(patparse, "xdigit", len))
-			    ch = PP_XDIGIT;
-			else if (!strncmp(patparse, "IDENT", len))
-			    ch = PP_IDENT;
-			else if (!strncmp(patparse, "IFS", len))
-			    ch = PP_IFS;
-			else if (!strncmp(patparse, "IFSSPACE", len))
-			    ch = PP_IFSSPACE;
-			else if (!strncmp(patparse, "WORD", len))
-			    ch = PP_WORD;
-			else
-			    ch = PP_UNKWN;
+			ch = range_type(patparse, len);
 			patparse = nptr + 2;
 			if (ch != PP_UNKWN)
-			    patadd(NULL, STOUC(Meta+ch), 1, PA_NOALIGN);
+			    patadd(NULL, STOUC(Meta) + ch, 1, PA_NOALIGN);
 			continue;
 		}
 		charstart = patparse;
@@ -1276,7 +1343,7 @@
 
 		if (*patparse == '-' && patparse[1] &&
 		    patparse[1] != Outbrack) {
-		    patadd(NULL, STOUC(Meta+PP_RANGE), 1, PA_NOALIGN);
+		    patadd(NULL, STOUC(Meta)+PP_RANGE, 1, PA_NOALIGN);
 		    if (itok(*charstart)) {
 			patadd(0, STOUC(ztokens[*charstart - Pound]), 1,
 			       PA_NOALIGN);
@@ -2369,19 +2436,19 @@
 		wchar_t cr = CHARREF(patinput, patinend);
 		char *scanop = (char *)P_OPERAND(scan);
 		if (patglobflags & GF_MULTIBYTE) {
-		    if (mb_patmatchrange(scanop, cr) ^
+		    if (mb_patmatchrange(scanop, cr, NULL, NULL) ^
 			(P_OP(scan) == P_ANYOF))
 			fail = 1;
 		    else
 			CHARINC(patinput, patinend);
-		} else if (patmatchrange(scanop, (int)cr) ^
+		} else if (patmatchrange(scanop, (int)cr, NULL, NULL) ^
 			   (P_OP(scan) == P_ANYOF))
 		    fail = 1;
 		else
 		    CHARINC(patinput, patinend);
 #else
 		if (patmatchrange((char *)P_OPERAND(scan),
-				   CHARREF(patinput, patinend)) ^
+				  CHARREF(patinput, patinend), NULL, NULL) ^
 		    (P_OP(scan) == P_ANYOF))
 		    fail = 1;
 		else
@@ -3122,12 +3189,33 @@
 /**/
 #ifdef MULTIBYTE_SUPPORT
 
+/*
+ * See if character ch matches a pattern range specification.
+ * The null-terminated specification is in range; the test
+ * character is in ch.
+ *
+ * indptr is used by completion matching, which is why this
+ * function is exported.  If indptr is not NULL we set *indptr
+ * to the index of the character in the range string, adjusted
+ * in the case of "A-B" ranges such that A would count as its
+ * normal index (say IA), B would count as IA + (B-A), and any
+ * character within the range as appropriate.  We're not strictly
+ * guaranteed this fits within a wint_t, but if this is Unicode
+ * in 32 bits we have a fair amount of distance left over.
+ *
+ * mtp is used in the same circumstances.  *mtp returns the match type:
+ * 0 for a standard character, else the PP_ index.  It's not
+ * useful if the match failed.
+ */
+
 /**/
-static int
-mb_patmatchrange(char *range, wchar_t ch)
+mod_export int
+mb_patmatchrange(char *range, wchar_t ch, wint_t *indptr, int *mtp)
 {
     wchar_t r1, r2;
 
+    if (indptr)
+	*indptr = 0;
     /*
      * Careful here: unlike other strings, range is a NULL-terminated,
      * metafied string, because we need to treat the Posix and hyphenated
@@ -3135,7 +3223,10 @@
      */
     while (*range) {
 	if (imeta(STOUC(*range))) {
-	    switch (STOUC(*range++) - STOUC(Meta)) {
+	    int swtype = STOUC(*range++) - STOUC(Meta);
+	    if (mtp)
+		*mtp = swtype;
+	    switch (swtype) {
 	    case 0:
 		/* ordinary metafied character */
 		range--;
@@ -3214,8 +3305,19 @@
 	    case PP_RANGE:
 		r1 = metacharinc(&range);
 		r2 = metacharinc(&range);
-		if (r1 <= ch && ch <= r2)
+		if (r1 <= ch && ch <= r2) {
+		    if (indptr)
+			*indptr += ch - r1;
 		    return 1;
+		}
+		/* Careful not to screw up counting with bogus range */
+		if (indptr && r1 < r2) {
+		    /*
+		     * This gets incremented again below to get
+		     * us past the range end.  This is correct.
+		     */
+		    *indptr += r2 - r1;
+		}
 		break;
 	    case PP_UNKWN:
 		DPUTS(1, "BUG: unknown posix range passed through.\n");
@@ -3224,21 +3326,130 @@
 		DPUTS(1, "BUG: unknown metacharacter in range.");
 		break;
 	    }
-	} else if (metacharinc(&range) == ch)
+	} else if (metacharinc(&range) == ch) {
+	    if (mtp)
+		*mtp = 0;
 	    return 1;
+	}
+	if (indptr)
+	    (*indptr)++;
     }
     return 0;
 }
 
+
+#if 0
+/*
+ * This is effectively the reverse of mb_patmatchrange().
+ * Given a range descriptor of the same form, and an index into it,
+ * try to determine the character that is matched.  If the index
+ * points to a [:...:] generic style match, set chr to WEOF and
+ * return the type in mtp instead.  Return 1 if successful, 0 if
+ * there was no corresponding index.  Note all pointer arguments
+ * must be non-null.
+ *
+ * TODO: for now the completion matching code does not handle
+ * multibyte.  When it does, we will need either this, or
+ * patmatchindex(), but not both---unlike user-initiated pattern
+ * matching, multibyte mode in the line editor is always on when available.
+ */
+
 /**/
+mod_export int
+mb_patmatchindex(char *range, wint_t ind, wint_t *chr, int *mtp)
+{
+    wchar_t r1, r2, rchr;
+    wint_t rdiff;
+
+    *chr = WEOF;
+    *mtp = 0;
+
+    while (*range) {
+	if (imeta(STOUC(*range))) {
+	    int swtype = STOUC(*range++) - STOUC(Meta);
+	    switch (swtype) {
+	    case 0:
+		range--;
+		rchr = metacharinc(&range);
+		if (!ind) {
+		    *chr = (wint_t) rchr;
+		    return 1;
+		}
+		break;
+
+	    case PP_ALPHA:
+	    case PP_ALNUM:
+	    case PP_ASCII:
+	    case PP_BLANK:
+	    case PP_CNTRL:
+	    case PP_DIGIT:
+	    case PP_GRAPH:
+	    case PP_LOWER:
+	    case PP_PRINT:
+	    case PP_PUNCT:
+	    case PP_SPACE:
+	    case PP_UPPER:
+	    case PP_XDIGIT:
+	    case PP_IDENT:
+	    case PP_IFS:
+	    case PP_IFSSPACE:
+	    case PP_WORD:
+		if (!ind) {
+		    *mtp = swtype;
+		    return 1;
+		}
+		break;
+
+	    case PP_RANGE:
+		r1 = metacharinc(&range);
+		r2 = metacharinc(&range);
+		rdiff = (wint_t)r2 - (wint_t)r1; 
+		if (rdiff >= ind) {
+		    *chr = (wint_t)r1 + ind;
+		    return 1;
+		}
+		/* note the extra decrement to ind below */
+		ind -= rdiff;
+		break;
+	    case PP_UNKWN:
+		DPUTS(1, "BUG: unknown posix range passed through.\n");
+		break;
+	    default:
+		DPUTS(1, "BUG: unknown metacharacter in range.");
+		break;
+	    }
+	} else {
+	    rchr = metacharinc(&range);
+	    if (!ind) {
+		*chr = (wint_t)rchr;
+		return 1;
+	    }
+	}
+	if (!ind--)
+	    break;
+    }
+
+    /* No corresponding index. */
+    return 0;
+}
 #endif
 
 /**/
-static int
-patmatchrange(char *range, int ch)
+#endif
+
+/*
+ * Identical function to mb_patmatchrange() above for single-byte
+ * characters.
+ */
+
+/**/
+mod_export int
+patmatchrange(char *range, int ch, int *indptr, int *mtp)
 {
     int r1, r2;
 
+    if (indptr)
+	*indptr = 0;
     /*
      * Careful here: unlike other strings, range is a NULL-terminated,
      * metafied string, because we need to treat the Posix and hyphenated
@@ -3246,7 +3457,10 @@
      */
     for (; *range; range++) {
 	if (imeta(STOUC(*range))) {
-	    switch (STOUC(*range)-STOUC(Meta)) {
+	    int swtype = STOUC(*range) - STOUC(Meta);
+	    if (mtp)
+		*mtp = swtype;
+	    switch (swtype) {
 	    case 0:
 		if (STOUC(*++range ^ 32) == ch)
 		    return 1;
@@ -3326,8 +3540,13 @@
 		r2 = STOUC(UNMETA(range));
 		if (*range == Meta)
 		    range++;
-		if (r1 <= ch && ch <= r2)
+		if (r1 <= ch && ch <= r2) {
+		    if (indptr)
+			*indptr += ch - r1;
 		    return 1;
+		}
+		if (indptr && r1 < r2)
+		    *indptr += r2 - r1;
 		break;
 	    case PP_UNKWN:
 		DPUTS(1, "BUG: unknown posix range passed through.\n");
@@ -3336,9 +3555,100 @@
 		DPUTS(1, "BUG: unknown metacharacter in range.");
 		break;
 	    }
-	} else if (STOUC(*range) == ch)
+	} else if (STOUC(*range) == ch) {
+	    if (mtp)
+		*mtp = 0;
 	    return 1;
+	}
+	if (indptr)
+	    (*indptr)++;
+    }
+    return 0;
+}
+
+/*
+ * Identical function to mb_patmatchindex() above for single-byte
+ * characters.  Here -1 represents a character that needs a special type.
+ */
+
+/**/
+mod_export int
+patmatchindex(char *range, int ind, int *chr, int *mtp)
+{
+    int r1, r2, rdiff, rchr;
+
+    *chr = -1;
+    *mtp = 0;
+
+    for (; *range; range++) {
+	if (imeta(STOUC(*range))) {
+	    int swtype = STOUC(*range) - STOUC(Meta);
+	    switch (swtype) {
+	    case 0:
+		/* ordinary metafied character */
+		rchr = STOUC(*++range) ^ 32;
+		if (!ind) {
+		    *chr = rchr;
+		    return 1;
+		}
+		break;
+
+	    case PP_ALPHA:
+	    case PP_ALNUM:
+	    case PP_ASCII:
+	    case PP_BLANK:
+	    case PP_CNTRL:
+	    case PP_DIGIT:
+	    case PP_GRAPH:
+	    case PP_LOWER:
+	    case PP_PRINT:
+	    case PP_PUNCT:
+	    case PP_SPACE:
+	    case PP_UPPER:
+	    case PP_XDIGIT:
+	    case PP_IDENT:
+	    case PP_IFS:
+	    case PP_IFSSPACE:
+	    case PP_WORD:
+		if (!ind) {
+		    *mtp = swtype;
+		    return 1;
+		}
+		break;
+
+	    case PP_RANGE:
+		range++;
+		r1 = STOUC(UNMETA(range));
+		METACHARINC(range);
+		r2 = STOUC(UNMETA(range));
+		if (*range == Meta)
+		    range++;
+		rdiff = r2 - r1; 
+		if (rdiff >= ind) {
+		    *chr = r1 + ind;
+		    return 1;
+		}
+		/* note the extra decrement to ind below */
+		ind -= rdiff;
+		break;
+	    case PP_UNKWN:
+		DPUTS(1, "BUG: unknown posix range passed through.\n");
+		break;
+	    default:
+		DPUTS(1, "BUG: unknown metacharacter in range.");
+		break;
+	    }
+	} else {
+	    if (!ind) {
+		*chr = STOUC(*range);
+		return 1;
+	    }
+	}
+	if (!ind--)
+	    break;
     }
+
+    /* No corresponding index. */
     return 0;
 }
 
@@ -3382,14 +3692,14 @@
 #ifdef MULTIBYTE_SUPPORT
 	    wchar_t cr = CHARREF(scan, patinend);
 	    if (patglobflags & GF_MULTIBYTE) {
-		if (mb_patmatchrange(opnd, cr) ^
+		if (mb_patmatchrange(opnd, cr, NULL, NULL) ^
 		    (P_OP(p) == P_ANYOF))
 		    break;
-	    } else if (patmatchrange(opnd, (int)cr) ^
+	    } else if (patmatchrange(opnd, (int)cr, NULL, NULL) ^
 		       (P_OP(p) == P_ANYOF))
 		break;
 #else
-	    if (patmatchrange(opnd, CHARREF(scan, patinend)) ^
+	    if (patmatchrange(opnd, CHARREF(scan, patinend), NULL, NULL) ^
 		(P_OP(p) == P_ANYOF))
 		break;
 #endif
Index: Src/zsh.h
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/zsh.h,v
retrieving revision 1.136
diff -u -r1.136 zsh.h
--- Src/zsh.h	1 Jun 2008 17:58:42 -0000	1.136
+++ Src/zsh.h	7 Jun 2008 20:19:38 -0000
@@ -1307,6 +1307,48 @@
 #define PAT_HAS_EXCLUDP	0x0800	/* (internal): top-level path1~path2. */
 #define PAT_LCMATCHUC   0x1000  /* equivalent to setting (#l) */
 
+/*
+ * Special match types used in character classes.  These
+ * are represented as tokens, with Meta added.  The character
+ * class is represented as a metafied string, with only these
+ * tokens special.  Note that an active leading "!" or "^" for
+ * negation is not part of the string but is flagged in the
+ * surrounding context.
+ *
+ * These types are also used in character and equivalence classes
+ * in completion matching.
+ *
+ * This must be kept ordered by the array colon_stuffs in pattern.c.
+ */
+/* Special value for first definition */
+#define PP_FIRST  1
+/* POSIX-defined types:  [:alpha:] etc. */
+#define PP_ALPHA  1
+#define PP_ALNUM  2
+#define PP_ASCII  3
+#define PP_BLANK  4
+#define PP_CNTRL  5
+#define PP_DIGIT  6
+#define PP_GRAPH  7
+#define PP_LOWER  8
+#define PP_PRINT  9
+#define PP_PUNCT  10
+#define PP_SPACE  11
+#define PP_UPPER  12
+#define PP_XDIGIT 13
+/* Zsh additions:  [:IDENT:] etc. */
+#define PP_IDENT  14
+#define PP_IFS    15
+#define PP_IFSSPACE   16
+#define PP_WORD   17
+/* Special value for last definition */
+#define PP_LAST   17
+
+/* Unknown type.  Not used in a valid token. */
+#define PP_UNKWN  18
+/* Range: token followed by the (possibly multibyte) start and end */
+#define PP_RANGE  19
+
 /* Globbing flags: lower 8 bits gives approx count */
 #define GF_LCMATCHUC	0x0100
 #define GF_IGNCASE	0x0200
Index: Src/Zle/comp.h
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/Zle/comp.h,v
retrieving revision 1.17
diff -u -r1.17 comp.h
--- Src/Zle/comp.h	6 May 2008 16:01:19 -0000	1.17
+++ Src/Zle/comp.h	7 Jun 2008 20:19:38 -0000
@@ -162,12 +162,49 @@
 #define CMF_RIGHT 4
 #define CMF_INTER 8
 
+/*
+ * Types of cpattern structure.
+ * Note freecpattern() assumes any <= CPAT_EQUIV have string.
+ */
+enum {
+    CPAT_CCLASS,		/* [...]: ordinary character class */
+    CPAT_NCLASS,		/* [!...]: ordinary character class, negated */
+    CPAT_EQUIV,			/* {...}: equivalence class */
+    CPAT_ANY,			/* ?: any character */
+    CPAT_CHAR			/* Single character given explicitly */
+};
+
+/*
+ * A pattern element in a matcher specification.
+ * Unlike normal patterns this only presents one character in
+ * either the test completion or the word on the command line.
+ */
 struct cpattern {
     Cpattern next;		/* next sub-pattern */
-    unsigned char tab[256];	/* table of matched characters */
-    int equiv;			/* if this is a {...} class */
+    int tp;			/* type of object as above */
+    union {
+	char *str;		/* if a character class, the objects
+				 * in it in a similar form to normal
+				 * pattern matching (a metafied string
+				 * with tokens).
+				 * Note the allocated length may be longer
+				 * than the null-terminated string.
+				 */
+	int chr;		/* if a single character, it
+				 * TODO: eventually should be a
+				 * convchar_t.
+				 */
+    } u;
 };
 
+/*
+ * For now this just handles single-byte characters.
+ * TODO: this will change.
+ */
+#define PATMATCHRANGE(r, c, ip, mtp)	patmatchrange(r, c, ip, mtp)
+#define PATMATCHINDEX(r, i, cp, mtp)	patmatchindex(r, i, cp, mtp)
+#define CONVCAST(c)	(c)
+
 /* This is a special return value for parse_cmatcher(), *
  * signalling an error. */
 
Index: Src/Zle/complete.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/Zle/complete.c,v
retrieving revision 1.39
diff -u -r1.39 complete.c
--- Src/Zle/complete.c	6 Jul 2007 21:52:40 -0000	1.39
+++ Src/Zle/complete.c	7 Jun 2008 20:19:38 -0000
@@ -122,13 +122,15 @@
 
     while (p) {
 	n = p->next;
+	if (p->tp <= CPAT_EQUIV)
+	    free(p->u.str);
 	zfree(p, sizeof(struct cpattern));
 
 	p = n;
     }
 }
 
-/* Copy a completion matcher list. */
+/* Copy a completion matcher list into permanent storage. */
 
 /**/
 mod_export Cmatcher
@@ -157,22 +159,51 @@
     return r;
 }
 
+/*
+ * Copy a single entry in a matcher pattern.
+ * If useheap is 1, it comes from the heap.
+ */
+
+/**/
+mod_export Cpattern
+cp_cpattern_element(Cpattern o)
+{
+    Cpattern n = zalloc(sizeof(struct cpattern));
+
+    n->next = NULL;
+
+    n->tp = o->tp;
+    switch (o->tp)
+    {
+    case CPAT_CCLASS:
+    case CPAT_NCLASS:
+    case CPAT_EQUIV:
+	n->u.str = ztrdup(o->u.str);
+	break;
+
+    case CPAT_CHAR:
+	n->u.chr = o->u.chr;
+	break;
+
+    default:
+	/* just to keep compiler quiet */
+	break;
+    }
+
+    return n;
+}
+
 /* Copy a completion matcher pattern. */
 
 /**/
 static Cpattern
 cpcpattern(Cpattern o)
 {
-    Cpattern r = NULL, *p = &r, n;
+    Cpattern r = NULL, *p = &r;
 
     while (o) {
-	*p = n = (Cpattern) zalloc(sizeof(struct cpattern));
-
-	n->next = NULL;
-	memcpy(n->tab, o->tab, 256);
-	n->equiv = o->equiv;
-
-	p = &(n->next);
+	*p = cp_cpattern_element(o);
+	p = &((*p)->next);
 	o = o->next;
     }
     return r;
@@ -331,14 +362,26 @@
     return ret;
 }
 
-/* Parse a pattern for matcher control. */
+/*
+ * Parse a pattern for matcher control. 
+ * name is the name of the builtin from which this is called, for errors.
+ * *sp is the input string and will be updated to the end of the parsed
+ *   pattern.
+ * *lp will be set to the number of characters (possibly multibyte)
+ *   that the pattern will match.  This must be deterministic, given
+ *   the syntax allowed here.
+ * e, if non-zero, is the ASCII end character to match; if zero,
+ *   stop on a blank.
+ * *err is set to 1 to indicate an error, else to 0.
+ */
 
 /**/
 static Cpattern
 parse_pattern(char *name, char **sp, int *lp, char e, int *err)
 {
     Cpattern ret = NULL, r = NULL, n;
-    unsigned char *s = (unsigned char *) *sp;
+    char *s = *sp;
+    int inchar;
     int l = 0;
 
     *err = 0;
@@ -346,25 +389,18 @@
     while (*s && (e ? (*s != e) : !inblank(*s))) {
 	n = (Cpattern) hcalloc(sizeof(*n));
 	n->next = NULL;
-	n->equiv = 0;
 
-	if (*s == '[') {
-	    s = parse_class(n, s + 1, ']');
-	    if (!*s) {
-		*err = 1;
-		zwarnnam(name, "unterminated character class");
-		return NULL;
-	    }
-	} else if (*s == '{') {
-	    n->equiv = 1;
-	    s = parse_class(n, s + 1, '}');
+	if (*s == '[' || *s == '{') {
+	    s = parse_class(n, s);
 	    if (!*s) {
 		*err = 1;
 		zwarnnam(name, "unterminated character class");
 		return NULL;
 	    }
+	    s++;
 	} else if (*s == '?') {
-	    memset(n->tab, 1, 256);
+	    n->tp = CPAT_ANY;
+	    s++;
 	} else if (*s == '*' || *s == '(' || *s == ')' || *s == '=') {
 	    *err = 1;
 	    zwarnnam(name, "invalid pattern character `%c'", *s);
@@ -373,8 +409,13 @@
 	    if (*s == '\\' && s[1])
 		s++;
 
-	    memset(n->tab, 0, 256);
-	    n->tab[*s] = 1;
+	    if (*s == Meta)
+		inchar = STOUC(*++s) ^ 32;
+	    else
+		inchar = STOUC(*s);
+	    s++;
+	    n->tp = CPAT_CHAR;
+	    n->u.chr = inchar;
 	}
 	if (ret)
 	    r->next = n;
@@ -384,7 +425,6 @@
 	r = n;
 
 	l++;
-	s++;
     }
     *sp = (char *) s;
     *lp = l;
@@ -394,28 +434,86 @@
 /* Parse a character class for matcher control. */
 
 /**/
-static unsigned char *
-parse_class(Cpattern p, unsigned char *s, unsigned char e)
+static char *
+parse_class(Cpattern p, char *iptr)
 {
-    int n = 0, i = 1, j, eq = (e == '}'), k = 1;
-
-    if (!eq && (*s == '!' || *s == '^') && s[1] != e) { n = 1; s++; }
-
-    memset(p->tab, n, 256);
-
-    n = !n;
-    while (*s && (k || *s != e)) {
-	if (s[1] == '-' && s[2] && s[2] != e) {
-	    /* a run of characters */
-	    for (j = (int) *s; j <= (int) s[2]; j++)
-		p->tab[j] = (eq ? i++ : n);
+    int endchar, firsttime = 1;
+    char *optr, *nptr;
 
-	    s += 3;
+    if (*iptr++ == '[') {
+	endchar = ']';
+	/* TODO: surely [^]] is valid? */
+	if ((*iptr == '!' || *iptr == '^') && iptr[1] != ']') {
+	    p->tp = CPAT_NCLASS;
+	    iptr++;
 	} else
-	    p->tab[*s++] = (eq ? i++ : n);
-	k = 0;
+	    p->tp = CPAT_CCLASS;
+    } else {
+	endchar = '}';
+	p->tp = CPAT_EQUIV;
+    }
+
+    /* find end of class.  End character can appear literally first. */
+    for (optr = iptr; optr == iptr || *optr != endchar; optr++)
+	if (!*optr)
+	    return optr;
+    /*
+     * We can always fit the parsed class within the same length
+     * because of the tokenization (including a null byte).
+     *
+     * As the input string is metafied, but shouldn't contain shell
+     * tokens, we can just add our own tokens willy nilly.
+     */
+    optr = p->u.str = zalloc((optr-iptr) + 1);
+
+    while (firsttime || *iptr != endchar) {
+	int ch;
+
+	if (*iptr == '[' && iptr[1] == ':' &&
+	    (nptr = strchr((char *)iptr + 2, ':')) && nptr[1] == ']') {
+	    /* Range type */
+	    iptr += 2;
+	    ch = range_type((char *)iptr, nptr-iptr);
+	    iptr = nptr + 2;
+	    if (ch != PP_UNKWN)
+		*optr++ = STOUC(Meta) + ch;
+	} else {
+	    /* characters stay metafied */
+	    char *ptr1 = iptr;
+	    if (*iptr == Meta)
+		iptr++;
+	    iptr++;
+	    if (*iptr == '-' && iptr[1] && iptr[1] != endchar) {
+		/* a run of characters */
+		iptr++;
+		/* range token */
+		*optr++ = Meta + PP_RANGE;
+
+		/* start of range character */
+		if (*ptr1 == Meta) {
+		    *optr++ = Meta;
+		    *optr++ = ptr1[1] ^ 32;
+		} else
+		    *optr++ = *ptr1;
+
+		if (*iptr == Meta) {
+		    *optr++ = *iptr++;
+		    *optr++ = *iptr++;
+		} else
+		    *optr++ = *iptr++;
+	    } else {
+		if (*ptr1 == Meta) {
+		    *optr++ = Meta;
+		    *optr++ = ptr1[1] ^ 32;
+		} else
+		    *optr++ = *ptr1;
+	    }
+	}
+	firsttime = 0;
     }
-    return s;
+
+    *optr = '\0';
+    return iptr;
 }
 
 /**/
Index: Src/Zle/compmatch.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/Zle/compmatch.c,v
retrieving revision 1.53
diff -u -r1.53 compmatch.c
--- Src/Zle/compmatch.c	18 Jan 2008 16:41:36 -0000	1.53
+++ Src/Zle/compmatch.c	7 Jun 2008 20:19:39 -0000
@@ -30,37 +30,68 @@
 #include "complete.mdh"
 #include "compmatch.pro"
 
-/* This compares two cpattern lists and returns non-zero if they are
- * equal. */
+/*
+ * This compares two cpattern lists and returns non-zero if they are
+ * equal (N.B. opposite sense to usual *cmp()).
+ *
+ * The old version of this didn't worry about whether the lists
+ * were the same length.  This one does.  It's hard to see how
+ * that can be wrong even if it's unnecessary.
+ */
 
 /**/
 static int
-cmp_cpatterns(Cpattern a, Cpattern b)
+cpatterns_same(Cpattern a, Cpattern b)
 {
     while (a) {
-	if (a->equiv != b->equiv || memcmp(a->tab, b->tab, 256))
+	if (!b)
 	    return 0;
+	if (a->tp != b->tp)
+	    return 0;
+	switch (a->tp) {
+	case CPAT_CCLASS:
+	case CPAT_NCLASS:
+	case CPAT_EQUIV:
+	    /*
+	     * Patterns can actually match the same even if
+	     * the range strings don't compare differently, but
+	     * I don't think we need to handle that subtlety.
+	     */
+	    if (strcmp(a->u.str, b->u.str) != 0)
+		return 0;
+	    break;
+
+	case CPAT_CHAR:
+	    if (a->u.chr != b->u.chr)
+		return 0;
+	    break;
+
+	default:
+	    /* here to silence compiler */
+	    break;
+	}
+
 	a = a->next;
 	b = b->next;
     }
-    return 1;
+    return !b;
 }
 
 /* This compares two cmatchers and returns non-zero if they are equal. */
 
 /**/
 static int
-cmp_cmatchers(Cmatcher a, Cmatcher b)
+cmatchers_same(Cmatcher a, Cmatcher b)
 {
     return (a == b ||
 	    (a->flags == b->flags &&
 	     a->llen == b->llen && a->wlen == b->wlen &&
-	     (!a->llen || cmp_cpatterns(a->line, b->line)) &&
-	     (a->wlen <= 0 || cmp_cpatterns(a->word, b->word)) &&
+	     (!a->llen || cpatterns_same(a->line, b->line)) &&
+	     (a->wlen <= 0 || cpatterns_same(a->word, b->word)) &&
 	     (!(a->flags & (CMF_LEFT | CMF_RIGHT)) ||
 	      (a->lalen == b->lalen && a->ralen == b->ralen &&
-	       (!a->lalen || cmp_cpatterns(a->left, b->left)) &&
-	       (!a->ralen || cmp_cpatterns(a->right, b->right))))));
+	       (!a->lalen || cpatterns_same(a->left, b->left)) &&
+	       (!a->ralen || cpatterns_same(a->right, b->right))))));
 }
 
 /* Add the given matchers to the bmatcher list. */
@@ -97,7 +128,7 @@
 	t = 0;
 	for (ms = mstack; ms && !t; ms = ms->next)
 	    for (mp = ms->matcher; mp && !t; mp = mp->next)
-		t = cmp_cmatchers(mp, p->matcher);
+		t = cmatchers_same(mp, p->matcher);
 
 	p = p->next;
 	if (!t) {
@@ -449,7 +480,7 @@
     }
 }
 
-/* This tests if the string from the line l matches the word w. In bp
+/* This tests if the string from the line l matches the word w. In *bpp
  * the offset for the brace is returned, in rwlp the length of the
  * matched prefix or suffix, not including the stuff before or after
  * the last anchor is given. When sfx is non-zero matching is done from
@@ -1113,55 +1144,330 @@
     return r;
 }
 
-/* Check if the given pattern matches the given string.             *
+
+/*
+ * Guts of a single pattern for pattern_match().
+ * Return non-zero if match successful.
+ * If the class was an equivalence, return 1 + the index into
+ * the equivalence class (see pattern.c for how this is calculated).
+ */
+
+/**/
+mod_export int
+pattern_match1(Cpattern p, int c, int *mtp)
+{
+    /* TODO: should become convchar_t */
+    int ind;
+
+    *mtp = 0;
+    switch (p->tp) {
+    case CPAT_CCLASS:
+	return PATMATCHRANGE(p->u.str, CONVCAST(c), NULL, NULL);
+
+    case CPAT_NCLASS:
+	return !PATMATCHRANGE(p->u.str, CONVCAST(c), NULL, NULL);
+
+    case CPAT_EQUIV:
+	if (PATMATCHRANGE(p->u.str, CONVCAST(c), &ind, mtp))
+	    return ind + 1;
+	else
+	    return 0;
+
+    case CPAT_ANY:
+	return 1;
+
+    case CPAT_CHAR:
+	return (p->u.chr == c);
+
+    default:
+	DPUTS(1, "bad matcher pattern type");
+	return 0;
+    }
+}
+
+
+/*
+ * Use an equivalence to deduce the line character from the word, or
+ * vice versa.  (If vice versa, then "line" and "word" are reversed
+ * in what follows.  The logic is symmetric.)
+ * lp is the line pattern.
+ * wind is the index returned by a pattern match on the word pattern,
+ * with type wmtp.
+ * wchr is the word character.
+ * Return -1 if no matching character, else the character.
+ *
+ * Only makes sense if lp->tp == CPAT_EQUIV and the (unseen) word
+ * pattern also has that type.
+ */
+static int
+pattern_match_equivalence(Cpattern lp, int wind, int wmtp, int wchr)
+{
+    int lchr, lmtp;
+
+    if (!PATMATCHINDEX(lp->u.str, wind-1, &lchr, &lmtp)) {
+	/*
+	 * No equivalent.  No possible match; give up.
+	 */
+	return -1;
+    }
+    /*
+     * If we matched an exact character rather than a range
+     * type, return it.
+     */
+    if (lchr != -1)
+	return lchr;
+
+    /*
+     * Check the match types.  We may want a case-changed
+     * version of the word character.
+     */
+    if (wmtp == PP_UPPER && lmtp == PP_LOWER)
+	return tulower(wchr);
+    else if (wmtp == PP_LOWER && lmtp == PP_UPPER)
+	return tuupper(wchr);
+    else if (wmtp == lmtp) {
+	/*
+	 * Be lenient and allow identical replacements
+	 * for character classes, although in fact this
+	 * doesn't give special functionality for equivalence
+	 * classes.
+	 */
+	return wchr;
+    } else {
+	/*
+	 * Non-matching generic types; this can't work.
+	 */
+	return -1;
+    }
+}
+
+/*
+ * Check if the given pattern matches the given string.
  *  p and  s are either anchor or line pattern and string;
  * wp and ws are word (candidate) pattern and string
  *
- * If only one pattern is given, we just check if characters match
+ * If only one pattern is given, we just check if characters match.
  * If both line and word are given, we check that characters match
- * for {...} classes by comparing relative numbers in sequence.
+ * for {...} classes by comparing positions in the strings.
  *
  * Patterns and strings are always passed in pairs, so it is enough
  * to check for non-NULL wp. p should always be present.
+ *
+ * If prestrict is not NULL, it is a chain of patterns at least as long
+ * as the line string.  In this case we are still assembling the line at
+ * s (which has been allocated but doesn't yet contain anything useful)
+ * and must continue to do so as we go along; prestrict gives
+ * restrictions on the line character to be applied along side the other
+ * patterns.  In the simple case a restriction is a character to be put
+ * in place; otherwise it is a set of possible characters and we have to
+ * deduce an actual matching character.  Note prestrict is never an
+ * equivalence class.  In extreme cases we can't deduce a unique
+ * character; then the match fails.
  */
 
 /**/
 mod_export int
-pattern_match(Cpattern p, char *s, Cpattern wp, char *ws)
+pattern_match_restrict(Cpattern p, char *s, Cpattern wp, char *ws,
+		       Cpattern prestrict)
 {
-    unsigned char c;
-    unsigned char wc;
+    int c, ind;
+    int wc, wind;
+    int len, wlen, mt, wmt;
 
     while (p && wp && *s && *ws) {
-	c = p->tab[*((unsigned char *) s)];
-	wc = wp->tab[*((unsigned char *) ws)];
-
-	if (!c || !wc || c != wc)
+	/* First test the word character */
+	if (*ws == Meta) {
+	    wc = STOUC(ws[1]) ^ 32;
+	    wlen = 2;
+	} else {
+	    wc = STOUC(*ws);
+	    wlen = 1;
+	}
+	wind = pattern_match1(wp, wc, &wmt);
+	if (!wind)
 	    return 0;
 
-	s++;
-	ws++;
+	/*
+	 * Now the line character; deal with the case where
+	 * we don't yet have it, only a restriction on it.
+	 */
+	if (prestrict) {
+	    if (prestrict->tp == CPAT_CHAR) {
+		/*
+		 * Easy case: restricted to an exact character on
+		 * the line.  Procede as normal.
+		 */
+		c = prestrict->u.chr;
+	    } else {
+		if (p->tp == CPAT_CHAR) {
+		    /*
+		     * Normal line pattern is an exact character:  as
+		     * long as this matches prestrict, we can proceed
+		     * as usual.
+		     */
+		    c = p->u.chr;
+		} else if (p->tp == CPAT_EQUIV) {
+		    /*
+		     * An equivalence, so we can deduce the character
+		     * backwards from the word pattern and see if it
+		     * matches prestrict.
+		     */
+		    if ((c = pattern_match_equivalence(p, wind, wmt, wc)) == -1)
+			return 0;
+		} else {
+		    /*
+		     * Not an equivalence, so that means we must match
+		     * the word (not just the word pattern), so grab it
+		     * and make sure it fulfills our needs.  I think.
+		     * Not 100% sure about that, but what else can
+		     * we do?  We haven't actually been passed a string
+		     * from the command line.
+		     */
+		    c = wc;
+		}
+		/* Character so deduced must match the restriction. */
+		if (!pattern_match1(prestrict, c, &mt))
+		    return 0;
+	    }
+	    len = imeta(c) ? 2 : 1;
+	} else {
+	    /* We have the character itself. */
+	    if (*s == Meta) {
+		c = STOUC(s[1]) ^ 32;
+		len = 2;
+	    } else {
+		c = STOUC(*s);
+		len = 1;
+	    }
+	}
+	/*
+	 * If either is "?", they match each other; no further tests.
+	 * Apply this even if the character wasn't convertable;
+	 * there's no point trying to be clever in that case.
+	 */
+	if (p->tp != CPAT_ANY || wp->tp != CPAT_ANY)
+	{
+	    ind = pattern_match1(p, c, &mt);
+	    if (!ind)
+		return 0;
+	    if (ind != wind)
+		return 0;
+	    if (mt != wmt) {
+		/*
+		 * Special case if matching lower vs. upper or
+		 * vice versa.  The transformed characters must match.
+		 * We don't need to check the transformation is
+		 * the appropriate one for each character separately,
+		 * since that was done in pattern_match1(), so just
+		 * compare lower-cased versions of both.
+		 */
+		if ((mt == PP_LOWER || mt == PP_UPPER) &&
+		    (wmt == PP_LOWER || wmt == PP_UPPER)) {
+		    if (tulower(c) != tulower(wc))
+			return 0;
+		} else {
+		    /* Other different classes can't match. */
+		    return 0;
+		}
+	    }
+	}
+
+	if (prestrict) {
+	    /* We need to assemble the line */
+	    if (imeta(c)) {
+		*s++ = Meta;
+		*s++ = c ^ 32;
+	    } else {
+		*s++ = c;
+	    }
+	    prestrict = prestrict->next;
+	} else
+	    s += len;
+	ws += wlen;
 	p = p->next;
 	wp = wp->next;
     }
 
     while (p && *s) {
-	if (!p->tab[*((unsigned char *) s)])
+	if (prestrict) {
+	    /*
+	     * As above, but with even less info to go on.
+	     * (Can this happen?)  At least handle the cases where
+	     * one of our patterns has given us a specific character.
+	     */
+	    if (prestrict->tp == CPAT_CHAR) {
+		c = prestrict->u.chr;
+	    } else {
+		if (p->tp == CPAT_CHAR) {
+		    c = p->u.chr;
+		} else {
+		    /*
+		     * OK.  Here we are in a function with just a line
+		     * pattern and another pattern to restrict the
+		     * characters that can go on the line, and no actual
+		     * characters.  We're matching two patterns against
+		     * one another to generate a character to insert.
+		     * This is a bit too psychedelic, so I'm going to
+		     * bale out now.  See you on the ground.
+		     */
+		    return 0;
+		}
+		if (!pattern_match1(prestrict, c, &mt))
+		    return 0;
+	    }
+	} else {
+	    if (*s == Meta) {
+		c = STOUC(s[1]) ^ 32;
+		len = 2;
+	    } else {
+		c = STOUC(*s);
+		len = 1;
+	    }
+	}
+	if (!pattern_match1(p, c, &mt))
 	    return 0;
 	p = p->next;
-	s++;
+	if (prestrict) {
+	    if (imeta(c)) {
+		*s++ = Meta;
+		*s++ = c ^ 32;
+	    } else {
+		*s++ = c;
+	    }
+	    prestrict = prestrict->next;
+	} else
+	    s += len;
     }
 
     while (wp && *ws) {
-	if (!wp->tab[*((unsigned char *) ws)])
+	/* No funny business when we only have the word pattern. */
+	if (*ws == Meta) {
+	    wc = STOUC(ws[1]) ^ 32;
+	    wlen = 2;
+	} else {
+	    wc = STOUC(*ws);
+	    wlen = 1;
+	}
+	if (!pattern_match1(wp, wc, &wmt))
 	    return 0;
 	wp = wp->next;
-	ws++;
+	ws += wlen;
     }
 
     return 1;
 }
 
+/*
+ * The usual version of pattern matching, without the line string
+ * being handled by restriction.
+ */
+/**/
+mod_export int
+pattern_match(Cpattern p, char *s, Cpattern wp, char *ws)
+{
+    return pattern_match_restrict(p, s, wp, ws, NULL);
+}
+
 /* This splits the given string into a list of cline structs, separated
  * at those places where one of the anchors of an `*' pattern was found.
  * plen gives the number of characters on the line that matched this
@@ -1256,11 +1562,11 @@
     return ret;
 }
 
-/* This builds all the possible line patterns for the pattern pat in the
- * buffer line. Initially line is the same as lp, but during recursive
- * calls lp is incremented for storing successive characters. Whenever
- * a full possible string is build, we test if this line matches the
- * string given by wlen and word.
+
+/*
+ * This builds all the possible line patterns for the pattern pat in the
+ * buffer line.  Then we test if this line matches the string given by
+ * wlen and word.
  *
  * wpat contains pattern that matched previously
  * lpat contains the pattern for line we build
@@ -1269,91 +1575,297 @@
  *
  * The return value is the length of the string matched in the word, it
  * is zero if we couldn't build a line that matches the word.
+ *
+ * TODO: a lot of the nastiness associated with variable string
+ * lengths can go when we switch to wide characters.  (Why didn't
+ * I just keep line unmetafied and metafy into place at the end?  Er...)
  */
 
-
 /**/
 static int
-bld_line(Cpattern wpat, Cpattern lpat, char *line, char *lp,
-	 char *mword, char *word, int wlen, int sfx)
+bld_line(Cmatcher mp, char **linep, char *mword, char *word, int wlen, int sfx)
 {
-    if (lpat) {
-	/* Still working on the pattern. */
-
-	int i, l;
-	unsigned char c = 0;
+    Cpattern lpat = mp->line;
+    Cpattern wpat = mp->word;
+    Cpattern curgenpat;
+    VARARR(struct cpattern, genpatarr, mp->llen);
+    Cmlist ms;
+    int llen, rl;
+    char *oword = word, *line = *linep;
 
-	/* Get the number of the character for a correspondence class
-	 * if it has a corresponding class. */
-	if (lpat->equiv)
-	    if (wpat && *mword) {
-		c = wpat->tab[STOUC(*mword)];
-		wpat = wpat->next;
-		mword++;
+    /*
+     * Loop over all characters.  At this stage, line is an empty
+     * space of length llen (not counting the null byte) which we assemble as
+     * we go along.
+     *
+     * However, first we need to know what characters can appear at each
+     * point in the line.  For this we assemble an list genpatarr of the
+     * same length as the line.  (It's convenient to store this as an
+     * array but it's linked as a list, too.)  If there are equivalences
+     * we use mword to derive the equivalent character; when we've
+     * reached the end of mword, equivalences are treated just like
+     * ordinary character classes.  For character classes we just attach
+     * the class to the genpatarr list and apply it as a restriction
+     * when we finally match the line against the set of matchers.
+     */
+    curgenpat = genpatarr;
+    while (lpat) {
+	int wchr = (*mword == Meta) ? STOUC(mword[1]) ^ 32 : STOUC(*mword);
+	int wmtp, wind;
+	/*
+	 * If the line pattern is an equivalence, query wpat to find the
+	 * word part of the equivalence.  If we don't find one we don't try
+	 * equivalencing but use lpat as an ordinary match.  (It's not
+	 * entirely clear to me this is the correct behaviour on a
+	 * failed character match within the equivalence, but that was
+	 * the behaviour of the old logic that this replaces.)
+	 */
+	if (lpat->tp == CPAT_EQUIV && wpat && *mword) {
+	    wind = pattern_match1(wpat, wchr, &wmtp);
+	    wpat = wpat->next;
+	    mword += (*mword == Meta) ? 2 : 1;
+	} else
+	    wind = 0;
+	if (wind) {
+	    /*
+	     * Successful match for word side of equivalence.
+	     * Find the line equivalent.
+	     */
+	    int lchr;
+	    if ((lchr = pattern_match_equivalence(lpat, wind, wmtp, wchr))
+		== -1) {
+		/*
+		 * No equivalent.  No possible match; give up.
+		 */
+		return 0;
 	    }
+	    /*
+	     * We now have an exact character to match,
+	     * so make up a pattern element for it.
+	     */
+	    curgenpat->tp = CPAT_CHAR;
+	    curgenpat->u.chr = lchr;
+	} else {
+	    /*
+	     * Not an equivalence class, so we just keep the
+	     * test in the lpat as it is.
+	     */
+	    curgenpat->tp = lpat->tp;
+	    if (lpat->tp == CPAT_CHAR)
+		curgenpat->u.chr = lpat->u.chr;
+	    else if (lpat->tp != CPAT_ANY) {
+		/*
+		 * The string isn't modified and is only needed in calls from
+		 * this function, so we don't even need to copy it.
+		 */
+		curgenpat->u.str = lpat->u.str;
+	    }
+	}
+	lpat = lpat->next;
+	/*
+	 * This linked list is defined above as an array.
+	 * We could get away with just keeping it as an array
+	 * and passing it down as such, but that's a bit icky
+	 * since the generic linkage of Cpatterns is as a linked
+	 * list and we should keep our local memory management
+	 * problems to ourselvess.
+	 */
+	if (lpat)
+	    curgenpat->next = curgenpat+1;
+	else
+	    curgenpat->next = NULL;
+	curgenpat++;
+    }
 
+    /*
+     * We now know how to match the word with the line patterns; let's
+     * see if it does.  We will use the information in curgenpat if we
+     * are successful to work out what character goes on the line.  This
+     * is a bit hairy, as in "the Yeti is a creature that is a bit
+     * hairy".
+     */
+    llen = mp->llen;
+    rl = 0;
 
-	/* Walk through the table in the pattern and try the characters
-	 * that may appear in the current position. */
-	for (i = 0; i < 256; i++)
-	    if ((lpat->equiv && c) ? (c == lpat->tab[i]) : lpat->tab[i]) {
-		*lp = i;
-		/* We stored the character, now call ourselves to build
-		 * the rest. */
-		if ((l = bld_line(wpat, lpat->next, line, lp + 1,
-				  mword, word, wlen, sfx)))
-		    return l;
-	    }
-    } else {
-	/* We reached the end, i.e. the line string is fully build, now
-	 * see if it matches the given word. */
+    if (sfx)
+    {
+	/*
+	 * We need to work backwards from the end of both the
+	 * word and the line strings.
+	 *
+	 * Position at the end of the word by counting characters.
+	 */
+	int l = wlen;
+	while (l--)
+	    word += (*word == Meta) ? 2 : 1;
 
-	Cmlist ms;
-	Cmatcher mp;
-	int l = lp - line, t, rl = 0, ind, add;
+	/*
+	 * We construct the line from the end.  We've left
+	 * enough space for possible Meta's.
+	 */
+	line += 2 * llen;
+	*line = '\0';
+	curgenpat = genpatarr + llen;
+    } else
+	curgenpat = genpatarr;
 
-	/* Quick test if the strings are exactly the same. */
-	if (l == wlen && !strncmp(line, word, l))
-	    return l;
+    /* we now reuse mp, lpat, wpat for the global matchers */
+    while (llen && wlen) {
+	int wchr, wmtp;
+	char *wp;
+	Cpattern tmpgenpat;
 
 	if (sfx) {
-	    line = lp; word += wlen;
-	    ind = -1; add = -1;
-	} else {
-	    ind = 0; add = 1;
-	}
-	/* We loop through the whole line string built. */
-	while (l && wlen) {
-	    if (word[ind] == line[ind]) {
-		/* The same character in both strings, skip over. */
-		line += add; word += add;
-		l--; wlen--; rl++;
+	    if (word > oword + 1 && word[-2] == Meta)
+		wp = word - 2;
+	    else
+		wp = word - 1;
+	    curgenpat--;
+	} else
+	    wp = word;
+	if (*wp == Meta)
+	    wchr = STOUC(wp[1]) ^ 32;
+	else
+	    wchr = STOUC(*wp);
+	if (pattern_match1(curgenpat, wchr, &wmtp))
+	{
+	    int lchr;
+	    /*
+	     * We can match the line character directly with the word
+	     * character.  If the line character is a fixed one,
+	     * keep it, since we went to all that trouble above,
+	     * else if it's generic, keep the word character,
+	     * since we have no choice.
+	     */
+	    if (curgenpat->tp == CPAT_CHAR)
+		lchr = curgenpat->u.chr;
+	    else
+		lchr = wchr;
+	    if (imeta(lchr)) {
+		if (sfx)
+		    line -= 2;
+		line[0] = Meta;
+		line[1] = lchr ^ 32;
+		if (!sfx)
+		    line += 2;
 	    } else {
-		t = 0;
-		for (ms = bmatchers; ms && !t; ms = ms->next) {
-		    mp = ms->matcher;
-		    if (mp && !mp->flags && mp->wlen <= wlen && mp->llen <= l &&
-			pattern_match(mp->line, (sfx ? line - mp->llen : line),
-				      mp->word, (sfx ? word - mp->wlen : word))) {
-			/* Both the line and the word pattern matched,
-			 * now skip over the matched portions. */
+		if (sfx)
+		    line--;
+		line[0] = lchr;
+		if (!sfx)
+		    line++;
+	    }
+
+	    llen--;
+	    wlen--;
+	    rl++;
+
+	    if (sfx)
+		word = wp;
+	    else {
+		if (llen)
+		    curgenpat++;
+		word += (*word == Meta) ? 2 : 1;
+	    }
+	}
+	else
+	{
+	    char *lp;
+	    /*
+	     * Need to loop over pattern matchers.
+	     */
+	    for (ms = bmatchers; ms; ms = ms->next) {
+		mp = ms->matcher;
+		/*
+		 * This is the nightmare case: we have line and
+		 * and word matchers and some pattern which restricts
+		 * the value on the line without us knowing exactly
+		 * what it is.  Despatch to the special function
+		 * for that.
+		 */
+		if (mp && !mp->flags && mp->wlen <= wlen &&
+		    mp->llen <= llen)
+		{
+		    if (sfx) {
+			/*
+			 * We haven't assembled the line yet, and with
+			 * Meta characters we don't yet know the length.
+			 * We'll fix this up later.
+			 */
+			lp = line - 2 * mp->llen;
+		    } else
+			lp = line;
+		    wp = word;
+		    if (sfx) {
+			int l = mp->wlen;
+			while (l--) {
+			    if (wp > oword + 1 && wp[-2] == Meta)
+				wp -= 2;
+			    else
+				wp--;
+			}
+
+			tmpgenpat = curgenpat - mp->llen;
+		    } else
+			tmpgenpat = curgenpat;
+		    if (pattern_match_restrict(mp->line, lp,
+					       mp->word, wp, tmpgenpat)) {
+			/*
+			 * Matched: advance over as many characters
+			 * of the patterns and strings as
+			 * we've done matches.
+			 */
 			if (sfx) {
-			    line -= mp->llen; word -= mp->wlen;
+			    int imove = mp->llen, nchar;
+			    char *pmove = lp;
+			    word = wp;
+			    
+			    /* Close the gap we left in the line string */
+			    while (imove--)
+				pmove += (*pmove == Meta) ? 2 : 1;
+			    /* Number of bytes to move */
+			    nchar = (int)(pmove - lp);
+			    /* The size of the gap */
+			    imove = 2 * mp->llen - nchar;
+			    if (imove) {
+				lp = line - imove;
+				/* Moving up, so start at the top */
+				while (nchar--)
+				    *--line = *--lp;
+				/* line is at the start of the moved text */
+			    }
+
+			    curgenpat = tmpgenpat;
 			} else {
-			    line += mp->llen; word += mp->wlen;
+			    int cnt = mp->llen;
+			    while (cnt--) {
+				line += (*line == Meta) ? 2 : 1;
+			    }
+
+			    cnt = mp->wlen;
+			    while (cnt--)
+				word += (*word == Meta) ? 2 : 1;
+
+			    curgenpat += mp->llen;
 			}
-			l -= mp->llen; wlen -= mp->wlen; rl += mp->wlen;
-			t = 1;
+			llen -= mp->llen;
+			wlen -= mp->wlen;
+			rl += mp->wlen;
+			break;
 		    }
 		}
-		if (!t)
-		    /* Didn't match, give up. */
-		    return 0;
 	    }
+	    if (!ms)
+		return 0;	/* Didn't match, give up */
 	}
-	if (!l)
-	    /* Unmatched portion in the line built, return matched length. */
-	    return rl;
+    }
+    if (!llen) {
+	/* Unmatched portion in the line built, return matched length. */
+	if (sfx)
+	    *linep = line;
+	else
+	    *line = '\0';
+	return rl;
     }
     return 0;
 }
@@ -1386,8 +1898,10 @@
 		    if ((t = pattern_match(mp->word, sa, NULL, NULL)) ||
 			pattern_match(mp->word, sb, NULL, NULL)) {
 			/* It matched one of the strings, t says which one. */
-			VARARR(char, line, mp->llen + 1);
-			char **ap, **bp;
+			/* TODO: double to allow Meta, not necessary
+			   when properly unmetafied */
+			VARARR(char, linearr, 2*mp->llen + 1);
+			char **ap, **bp, *line = linearr;
 			int *alp, *blp;
 
 			if (t) {
@@ -1399,10 +1913,8 @@
 			}
 			/* Now try to build a string that matches the other
 			 * string. */
-			if ((bl = bld_line(mp->word, mp->line, line, line,
-					   *ap, *bp, *blp, 0))) {
+			if ((bl = bld_line(mp, &line, *ap, *bp, *blp, 0))) {
 			    /* Found one, put it into the return string. */
-			    line[mp->llen] = '\0';
 			    if (rr <= mp->llen) {
 				char *or = rs;
 
@@ -1444,7 +1956,11 @@
     return rs;
 }
 
-/* This compares the anchors stored in two top-level clines. */
+/*
+ * This compares the anchors stored in two top-level clines.
+ * It returns 1 if the anchors are the same, 2 if they are
+ * compatible (and have been combined in "o"), 0 otherwise.
+ */
 
 /**/
 static int
@@ -1591,9 +2107,11 @@
 				       NULL, NULL)) ||
 		     pattern_match(mp->word, nw - (sfx ? mp->wlen : 0),
 				   NULL, NULL))) {
-		    VARARR(char, line, mp->llen + 1);
+		    /* TODO: doubled to allow Meta, not necessary
+		     * when properly unmetafied */
+		    VARARR(char, linearr, 2*mp->llen + 1);
 		    int bl;
-		    char *mw;
+		    char *mw, *line = linearr;
 
 		    /* Then build all the possible lines and see
 		     * if one of them matches the other string. */
@@ -1602,11 +2120,10 @@
 		    else
 			mw = nw - (sfx ? mp->wlen : 0);
 
-		    if ((bl = bld_line(mp->word, mp->line, line, line,
-				       mw, (t ? nw : ow), (t ? nl : ol), sfx)))  {
+		    if ((bl = bld_line(mp, &line, mw, (t ? nw : ow),
+				       (t ? nl : ol), sfx)))  {
 			/* Yep, one of the lines matched the other
 			 * string. */
-			line[mp->llen] = '\0';
 
 			if (t) {
 			    ol = mp->wlen; nl = bl;
Index: Src/Zle/computil.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/Zle/computil.c,v
retrieving revision 1.106
diff -u -r1.106 computil.c
--- Src/Zle/computil.c	7 Mar 2008 23:06:42 -0000	1.106
+++ Src/Zle/computil.c	7 Jun 2008 20:19:40 -0000
@@ -3997,6 +3997,239 @@
     return (found ? ret : NULL);
 }
 
+
+/*
+ * This code constructs (from heap) and returns a string that
+ * corresponds to a series of matches; when compiled as a pattern, at
+ * each position it matches either the character from the string "add"
+ * or the corresponding single-character match from the set of matchers.
+ * To take a simple case, if add is "a" and the single matcher for the
+ * character position matches "[0-9]", the pattern returned is "[0-9a]".
+ * We take account of equivalences between the word and line, too.
+ *
+ * As there are virtually no comments in this file, I don't really
+ * know why we're doing this, but it's to do with a matcher which
+ * is passed as an argument to the utility compfiles -p/-P.
+ */
+static char *
+cfp_matcher_range(Cmatcher *ms, char *add)
+{
+    Cmatcher *mp, m;
+    int len = 0, mt;
+    char *ret = NULL, *p = NULL, *adds = add;
+
+    /*
+     * Do this twice:  once to work out the length of the
+     * string in len, the second time to build it in ret.
+     * This is probably worthwhile because otherwise memory
+     * management is difficult.
+     */
+    for (;;) {
+	for (mp = ms; *add; add++, mp++) {
+	    if (!(m = *mp)) {
+		/*
+		 * No matcher, so just match the character
+		 * itself.
+		 *
+		 * TODO: surely this needs quoting if it's a
+		 * metacharacter?
+		 */
+		if (ret) {
+		    if (imeta(*add)) {
+			*p++ = Meta;
+			*p++ = *add ^ 32;
+		    } else
+			*p++ = *add;
+		} else
+		    len += imeta(*add) ? 2 : 1;
+	    } else if (m->flags & CMF_RIGHT) {
+		/*
+		 * Right-anchored:  match anything followed
+		 * by the character itself.
+		 */
+		if (ret) {
+		    *p++ = '*';
+		    /* TODO: quote again? */
+		    if (imeta(*add)) {
+			*p++ = Meta;
+			*p++ = *add ^ 32;
+		    } else
+			*p++ = *add;
+		} else
+		    len += imeta(*add) ? 3 : 2;
+	    } else {
+		/* The usual set of matcher possibilities. */
+		int ind;
+		if (m->line->tp == CPAT_EQUIV &&
+		    m->word->tp == CPAT_EQUIV) {
+		    /*
+		     * Genuine equivalence.  Add the character to match
+		     * and the equivalent character from the word
+		     * pattern.
+		     *
+		     * TODO: we could be more careful here with special
+		     * cases as we are in the basic character class
+		     * code below.
+		     */
+		    if (ret) {
+			*p++ = '[';
+			if (imeta(*add)) {
+			    *p++ = Meta;
+			    *p++ = *add ^ 32;
+			} else
+			    *p++ = *add;
+		    } else
+			len += imeta(*add) ? 3 : 2;
+		    if (PATMATCHRANGE(m->line->u.str, CONVCAST(*add),
+				      &ind, &mt)) {
+			/*
+			 * Find the equivalent match for ind in the
+			 * word pattern.
+			 */
+			if ((ind = pattern_match_equivalence
+			     (m->word, ind, mt, CONVCAST(*add))) != -1) {
+			    if (ret) {
+				if (imeta(ind)) {
+				    *p++ = Meta;
+				    *p++ = ind ^ 32;
+				} else
+				    *p++ = ind;
+			    } else
+				len += imeta(ind) ? 2 : 1;
+			}
+		    }
+		    if (ret)
+			*p++ = ']';
+		    else
+			len++;
+		} else {
+		    int newlen, addadd;
+
+		    switch (m->word->tp) {
+		    case CPAT_NCLASS:
+			/*
+			 * TODO: the old logic implies that we need to
+			 * match *add, i.e. it should be deleted from
+			 * the set of character's we're not allowed to
+			 * match.  That's too much like hard work for
+			 * now.  Indeed, in general it's impossible
+			 * without trickery.  Consider *add == 'A',
+			 * range == "[^[:upper:]]": we would have to
+			 * resort to something like "(A|[^[:upper:]])";
+			 * and in an expression like that *add may or
+			 * may not need backslashing.  So we're deep
+			 * into see-if-we-can-get-away-without
+			 * territory.
+			 */
+			if (ret) {
+			    *p++ = '[';
+			    *p++ = '^';
+			} else
+			    len += 2;
+			/*
+			 * Convert the compiled range string back
+			 * to an ordinary string.
+			 */
+			newlen =
+			    pattern_range_to_string(m->word->u.str, p);
+			DPUTS(!newlen, "empty character range");
+			if (ret) {
+			    p += newlen;
+			    *p++ = ']';
+			} else
+			    len += newlen + 1;
+			break;
+			    
+		    case CPAT_CCLASS:
+			/*
+			 * If there is an equivalence only on one
+			 * side it's not equivalent to anything.
+			 * Treat it as an ordinary character class.
+			 */ 
+		    case CPAT_EQUIV:
+		    case CPAT_CHAR:
+			if (ret)
+			    *p++ = '[';
+			else
+			    len++;
+			/*
+			 * We needed to add *add specially only if
+			 * it is not covered by the range.  This
+			 * is necessary for correct syntax---consider
+			 * if *add is ] and ] is also the first
+			 * character in the range.
+			 */
+			addadd = !pattern_match1(m->word, CONVCAST(*add), &mt);
+			if (addadd && *add == ']') {
+			    if (ret)
+				*p++ = *add;
+			    else
+				len++;
+			}
+			if (m->word->tp == CPAT_CHAR) {
+			    /*
+			     * The matcher just matches a single
+			     * character, but we need to be able
+			     * to match *add, too, hence we do
+			     * this as a [...].
+			     */
+			    if (ret) {
+				if (imeta(m->word->u.chr)) {
+				    *p++ = Meta;
+				    *p++ = m->word->u.chr ^ 32;
+				} else
+				    *p++ = m->word->u.chr;
+			    } else
+				len += imeta(m->word->u.chr) ? 2 : 1;
+			} else {
+			    /*
+			     * Convert the compiled range string back
+			     * to an ordinary string.
+			     */
+			    newlen =
+				pattern_range_to_string(m->word->u.str, p);
+			    DPUTS(!newlen, "empty character range");
+			    if (ret)
+				p += newlen;
+			    else
+				len += newlen;
+			}
+			if (addadd && *add != ']') {
+			    if (ret) {
+				if (imeta(*add)) {
+				    *p++ = Meta;
+				    *p++ = *add ^ 32;
+				} else
+				    *p++ = *add;
+			    } else
+				len += imeta(*add) ? 2 : 1;
+			}
+			if (ret)
+			    *p++ = ']';
+			else
+			    len++;
+			break;
+
+		    case CPAT_ANY:
+			if (ret)
+			    *p++ = '?';
+			else
+			    len++;
+			break;
+		    }
+		}
+	    }
+	}
+	if (ret) {
+	    *p = '\0';
+	    return ret;
+	}
+	p = ret = zhalloc(len + 1);
+	add = adds;
+    }
+}
+
+
 static char *
 cfp_matcher_pats(char *matcher, char *add)
 {
@@ -4064,64 +4297,8 @@
 			break;
 		    }
 	}
-	if (*add) {
-	    char *ret = "", buf[259];
-
-	    for (mp = ms; *add; add++, mp++) {
-		if (!(m = *mp)) {
-		    buf[0] = *add;
-		    buf[1] = '\0';
-		} else if (m->flags & CMF_RIGHT) {
-		    buf[0] = '*';
-		    buf[1] = *add;
-		    buf[2] = '\0';
-		} else {
-		    unsigned char *t, c;
-		    char *p = buf;
-		    int i;
-
-		    for (i = 256, t = m->word->tab; i--; t++)
-			if (*t)
-			    break;
-		    if (i) {
-			t = m->word->tab;
-			*p++ = '[';
-			if (m->line->equiv && m->word->equiv) {
-			    *p++ = *add;
-			    c = m->line->tab[STOUC(*add)];
-			    for (i = 0; i < 256; i++)
-				if (m->word->tab[i] == c) {
-				    *p++ = (char) i;
-				    break;
-				}
-			} else {
-			    if (*add == ']' || t[STOUC(']')])
-				*p++ = ']';
-			    for (i = 0; i < 256; i++, t++)
-				if (*t && ((char) i) != *add &&
-				    i != ']' && i != '-' &&
-				    i != '^' && i != '!')
-				    *p++ = (char) i;
-			    *p++ = *add;
-			    t = m->word->tab;
-			    if (*add != '^' && t[STOUC('^')])
-				*p++ = '^';
-			    if (*add != '!' && t[STOUC('!')])
-				*p++ = '!';
-			    if (*add != '-' && t[STOUC('-')])
-				*p++ = '-';
-			}
-			*p++ = ']';
-			*p = '\0';
-		    } else {
-			*p = '?';
-			p[1] = '\0';
-		    }
-		}
-		ret = dyncat(ret, buf);
-	    }
-	    return ret;
-	}
+	if (*add)
+	    return cfp_matcher_range(ms, add);
     }
     return add;
 }


-- 
Peter Stephenson <p.w.stephenson@ntlworld.com>
Web page now at http://homepage.ntlworld.com/p.w.stephenson/


^ permalink raw reply	[relevance 4%]

* Re: arithmetic operator precedence
  @ 2008-06-16  8:17  3%       ` Vincent Lefevre
  0 siblings, 0 replies; 200+ results
From: Vincent Lefevre @ 2008-06-16  8:17 UTC (permalink / raw)
  To: Zsh hackers list; +Cc: Bart Schaefer

On 2008-06-12 16:01:26 +0100, Stephane Chazelas wrote:
> I find the zsh precedence more intuitive but that's not of much

ditto

> help given that I get to use those binary operators mostly only
> in C/perl, so I have to know the C precedence anyway.
> 
> And having zsh behaving differently doesn't help at all.

I agree. POSIX even requires C-like behavior:

http://www.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_06_04

  2.6.4 Arithmetic Expansion

  Arithmetic expansion provides a mechanism for evaluating an
  arithmetic expression and substituting its value. The format for
  arithmetic expansion shall be as follows:

    $((expression))

  The expression shall be treated as if it were in double-quotes,
  except that a double-quote inside the expression is not treated
  specially. The shell shall expand all tokens in the expression for
  parameter expansion, command substitution, and quote removal.

  Next, the shell shall treat this as an arithmetic expression and
  substitute the value of the expression. The arithmetic expression
  shall be processed according to the rules given in Arithmetic
                                                     ^^^^^^^^^^
  Precision and Operations , with the following exceptions:
  ^^^^^^^^^^^^^^^^^^^^^^^^

(the exceptions are not about precedence), where the link to
Arithmetic Precision and Operations is:

http://www.opengroup.org/onlinepubs/009695399/utilities/xcu_chap01.html#tag_01_07_02_01

which corresponds to the ISO C operators.

-- 
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 / Arenaire project (LIP, ENS-Lyon)


^ permalink raw reply	[relevance 3%]

* Re: arithmetic operator precedence
  @ 2008-06-16 13:59  3%     ` Stephane Chazelas
  2008-06-16 14:33  0%       ` Vincent Lefevre
    1 sibling, 1 reply; 200+ results
From: Stephane Chazelas @ 2008-06-16 13:59 UTC (permalink / raw)
  To: Peter Stephenson; +Cc: Zsh hackers list

On Mon, Jun 16, 2008 at 02:42:11PM +0100, Peter Stephenson wrote:
> On Mon, 16 Jun 2008 10:07:26 +0200
> Vincent Lefevre <vincent@vinc17.org> wrote:
> > Speaking of precedence, the following one is nasty:
> > 
> > vin% zsh -c 'echo $((-3**2))'
> > 9 
> > vin% bash -c 'echo $((-3**2))'
> > 9
> > vin% ksh93 -c 'echo $((-3**2))'
> > 9
> > 
> > IMHO these shells should be fixed to give -9, i.e. ** should have
> > the precedence over the unary -, like conventional math writing.
> 
> That's an interesting point for C_PRECEDENCES since I was trying to get
> it behave as much as possible like Perl.  What does anyone else think?
[...]

It's at least consistent with other shells and bc at the moment:

~$ bash -c 'echo $((-2**2))'
4
~$ zsh -c 'echo $((-2**2))'
4
~$ ksh93 -c 'echo $((-2**2))'
4
~$ echo '-2 ^ 2' | bc
4

bc is one place where POSIX specifies the precedence of
unary-minus vs power:
http://www.opengroup.org/onlinepubs/009695399/utilities/bc.html
minus has higher precedence than ^ which I have to say is more
intuitive to me.

Having said that:

~$ perl -le 'print -2 ** 2'
-4
~$ python -c 'print -2 ** 2'
-4
~$ ruby -e 'print -2 ** 2'
-4%
~$ gawk 'BEGIN {print -2 ** 2}'
-4

TCL has pow(x, y) instead of an operator.

-- 
Stéphane


^ permalink raw reply	[relevance 3%]

* Re: arithmetic operator precedence
  2008-06-16 13:59  3%     ` Stephane Chazelas
@ 2008-06-16 14:33  0%       ` Vincent Lefevre
  0 siblings, 0 replies; 200+ results
From: Vincent Lefevre @ 2008-06-16 14:33 UTC (permalink / raw)
  To: Zsh hackers list; +Cc: Peter Stephenson

On 2008-06-16 14:59:34 +0100, Stephane Chazelas wrote:
> It's at least consistent with other shells and bc at the moment:
> 
> ~$ bash -c 'echo $((-2**2))'
> 4
> ~$ zsh -c 'echo $((-2**2))'
> 4
> ~$ ksh93 -c 'echo $((-2**2))'
> 4
> ~$ echo '-2 ^ 2' | bc
> 4

That are almost the only ones.

> bc is one place where POSIX specifies the precedence of
> unary-minus vs power:
> http://www.opengroup.org/onlinepubs/009695399/utilities/bc.html
> minus has higher precedence than ^ which I have to say is more
> intuitive to me.

Most users find the other way more intuitive, as with conventional
math writing

    2
  -2  = -4

(and that's also the reason why ** is right-associative, whereas
most operations are left-associative).

> Having said that:
> 
> ~$ perl -le 'print -2 ** 2'
> -4
> ~$ python -c 'print -2 ** 2'
> -4
> ~$ ruby -e 'print -2 ** 2'
> -4%
> ~$ gawk 'BEGIN {print -2 ** 2}'
> -4

and:

vin:~> calc -- '-2 ^ 2'
        -4
vin:~> qalc '-2 ^ 2'
-(2^2) = -4
vin:~> wcalc '-2 ^ 2'
 = -4
vin:~> echo '-2 ^ 2' | gp -q
-4
vin:~> echo '-2 ^ 2;' | maple -q
                                      -4
vin:~> echo '-2 ^ 2; quit' | mupad -S
>> -2 ^ 2; quit

                                    -4

-- 
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 / Arenaire project (LIP, ENS-Lyon)


^ permalink raw reply	[relevance 0%]

* Re: arithmetic operator precedence
  @ 2008-06-17  9:45  3%       ` Stephane Chazelas
  2008-06-17 10:24  0%         ` Richard Hartmann
  2008-06-17 11:19  0%         ` Vincent Lefevre
  0 siblings, 2 replies; 200+ results
From: Stephane Chazelas @ 2008-06-17  9:45 UTC (permalink / raw)
  To: Richard Hartmann; +Cc: Peter Stephenson, Zsh hackers list

On Tue, Jun 17, 2008 at 11:19:40AM +0200, Richard Hartmann wrote:
[...]
> > That's an interesting point for C_PRECEDENCES since I was trying to get
> > it behave as much as possible like Perl.  What does anyone else think?
> 
> Being unsure myself, I did some somewhat extensive research. The only
> mathematically correct way of doing this is
> 
>   -3**2   = -9
>   (-3)**2 =  9
[...]

In which way is it more "mathematically" correct?

Is that because -3² is -9? 

But ** is not ^, it's a binary operator whose shape reminds that
of multiply, like a multiply++. And even then, POSIX's ^ in bc
is handled as -3^2 = 9.

It could be a good idea to ask ksh, POSIX/bc and perl authors for
the rationale behind their choices.

-- 
Stéphane


^ permalink raw reply	[relevance 3%]

* Re: arithmetic operator precedence
  2008-06-17  9:45  3%       ` Stephane Chazelas
@ 2008-06-17 10:24  0%         ` Richard Hartmann
  2008-06-17 10:24  0%           ` Richard Hartmann
  2008-06-17 10:38  3%           ` Stephane Chazelas
  2008-06-17 11:19  0%         ` Vincent Lefevre
  1 sibling, 2 replies; 200+ results
From: Richard Hartmann @ 2008-06-17 10:24 UTC (permalink / raw)
  To: Richard Hartmann, Peter Stephenson, Zsh hackers list

On Tue, Jun 17, 2008 at 11:45, Stephane Chazelas
<Stephane_Chazelas@yahoo.fr> wrote:


> In which way is it more "mathematically" correct?
>
> Is that because -3² is -9?
>
> But ** is not ^, it's a binary operator whose shape reminds that
> of multiply, like a multiply++. And even then, POSIX's ^ in bc
> is handled as -3^2 = 9.

As far as I know, ^ and ** are fuly equivalent. If that is not the case, then
sorry. Do you have a link/manpage/whatever on this topic?


> It could be a good idea to ask ksh, POSIX/bc and perl authors for
> the rationale behind their choices.


Richard

^ permalink raw reply	[relevance 0%]

* Re: arithmetic operator precedence
  2008-06-17 10:24  0%         ` Richard Hartmann
@ 2008-06-17 10:24  0%           ` Richard Hartmann
  2008-06-17 10:38  3%           ` Stephane Chazelas
  1 sibling, 0 replies; 200+ results
From: Richard Hartmann @ 2008-06-17 10:24 UTC (permalink / raw)
  To: Richard Hartmann, Peter Stephenson, Zsh hackers list

Sorry, forgot to answer that part..

On Tue, Jun 17, 2008 at 12:24, Richard Hartmann
<richih.mailinglist@gmail.com> wrote:
> On Tue, Jun 17, 2008 at 11:45, Stephane Chazelas

>> It could be a good idea to ask ksh, POSIX/bc and perl authors for
>> the rationale behind their choices.

Agreed.


Richard


^ permalink raw reply	[relevance 0%]

* Re: arithmetic operator precedence
  2008-06-17 10:24  0%         ` Richard Hartmann
  2008-06-17 10:24  0%           ` Richard Hartmann
@ 2008-06-17 10:38  3%           ` Stephane Chazelas
                                 ` (2 more replies)
  1 sibling, 3 replies; 200+ results
From: Stephane Chazelas @ 2008-06-17 10:38 UTC (permalink / raw)
  To: Richard Hartmann; +Cc: Peter Stephenson, Zsh hackers list

On Tue, Jun 17, 2008 at 12:24:12PM +0200, Richard Hartmann wrote:
> On Tue, Jun 17, 2008 at 11:45, Stephane Chazelas
> <Stephane_Chazelas@yahoo.fr> wrote:
> 
> 
> > In which way is it more "mathematically" correct?
> >
> > Is that because -3² is -9?
> >
> > But ** is not ^, it's a binary operator whose shape reminds that
> > of multiply, like a multiply++. And even then, POSIX's ^ in bc
> > is handled as -3^2 = 9.
> 
> As far as I know, ^ and ** are fuly equivalent. If that is not the case, then
> sorry. Do you have a link/manpage/whatever on this topic?
[...]

Not sure what you mean. ^ in bc is the power operator and
there's no ** there. In shells, ** is the power operator and ^
is the XOR operator.

What I meant is that ^ reminds of the /human/ (as opposed to
/computer/) representation as it indicates that follows must be
raised up as in 3². So, one can understand that it should follow
the same rules (that is -3^2 should be the same as -3², even
though that's not what POSIX decided for bc). But given that **
has more the shape of the * operator, I'm not sure we can tell
the same thing.

Anyway, I was just curious about Peter's statement. I'm most
probably not as versed in maths as he is, so was curious about
the rationale behind his statement about -3**2 = 9 not being
mathematically correct.

Looking at bc history, it seems to have appeared in Unix V6
(1975), and it was a wrapper written in yacc around dc (a
reverse polish calculator: _3 2 ^ is less ambiguous there). I'm
not versed enough in yacc or grammars to tell whether the
precedence was the same, but you can have a look at:

http://minnie.tuhs.org/UnixTree/V6/usr/source/s1/bc.y.html

 %right '='
 %left '+' '-'
 %left '*' '/' '%'
 %right '^'
 %left UMINUS
[...]
 e       :  e '+' e
                 = bundle( $1, $3, "+" );
         |  e '-' e
                 = bundle( $1, $3, "-" );
         | '-' e         %prec UMINUS
                 = bundle( " 0", $2, "-" );
         |  e '*' e
                 = bundle( $1, $3, "*" );
         |  e '/' e
                 = bundle( $1, $3, "/" );
         |  e '%' e
                 = bundle( $1, $3, "%%" );
         |  e '^' e
                 = bundle( $1, $3, "^" );
[...]

-- 
Stéphane


^ permalink raw reply	[relevance 3%]

* Re: arithmetic operator precedence
  2008-06-17 10:38  3%           ` Stephane Chazelas
  @ 2008-06-17 10:45  0%             ` Richard Hartmann
  2008-06-17 11:38  0%             ` Vincent Lefevre
  2 siblings, 0 replies; 200+ results
From: Richard Hartmann @ 2008-06-17 10:45 UTC (permalink / raw)
  To: Richard Hartmann, Peter Stephenson, Zsh hackers list

On Tue, Jun 17, 2008 at 12:38, Stephane Chazelas
<Stephane_Chazelas@yahoo.fr> wrote:


> Not sure what you mean. ^ in bc is the power operator and
> there's no ** there. In shells, ** is the power operator and ^
> is the XOR operator.

I did not refer to the XOR interpretation of ^, of course.
What I thought you said is that ^ and ** as in

  3^2  = 9
  3**2 = 9

are not the same. Did not make sense to me, but did not want
to discard the idea entirely without checking.


> What I meant is that ^ reminds of the /human/ (as opposed to
> /computer/) representation as it indicates that follows must be
> raised up as in 3². So, one can understand that it should follow
> the same rules (that is -3^2 should be the same as -3², even
> though that's not what POSIX decided for bc). But given that **
> has more the shape of the * operator, I'm not sure we can tell
> the same thing.

I can see what you mean, but the operator, not its representation,
must be must stay the same. Do I understand you correctly that
you think this is the way to go:

  -3^2  = -9
  -3**2 =  9

If yes, that looks _really_ harmful to me.


> Anyway, I was just curious about Peter's statement. I'm most
> probably not as versed in maths as he is, so was curious about
> the rationale behind his statement about -3**2 = 9 not being
> mathematically correct.

See above for my question, requesting clarification.


Richard

^ permalink raw reply	[relevance 0%]

* Re: arithmetic operator precedence
  2008-06-17  9:45  3%       ` Stephane Chazelas
  2008-06-17 10:24  0%         ` Richard Hartmann
@ 2008-06-17 11:19  0%         ` Vincent Lefevre
  2008-06-17 11:57  4%           ` Stephane Chazelas
  1 sibling, 1 reply; 200+ results
From: Vincent Lefevre @ 2008-06-17 11:19 UTC (permalink / raw)
  To: Zsh hackers list; +Cc: Richard Hartmann, Peter Stephenson

On 2008-06-17 10:45:09 +0100, Stephane Chazelas wrote:
> But ** is not ^, it's a binary operator whose shape reminds that
> of multiply, like a multiply++.

So, why is ** right-associative while * is left-associative?

> And even then, POSIX's ^ in bc is handled as -3^2 = 9.

But note that bc is the only calculator with such an unfortunate
choice. And I doubt that bc has been designed by end users. Also,
perhaps those who wrote bc in the first place didn't think about
this problem and just wanted to privilege the precedence of
unary operators as it is often the case.

> It could be a good idea to ask ksh, POSIX/bc and perl authors for
> the rationale behind their choices.

I think that Perl authors would say something like conventional math
writing (that's what some of authors of calculators say and what users
often demand).

-- 
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 / Arenaire project (LIP, ENS-Lyon)


^ permalink raw reply	[relevance 0%]

* Re: arithmetic operator precedence
  @ 2008-06-17 11:28  3%               ` Vincent Lefevre
    0 siblings, 1 reply; 200+ results
From: Vincent Lefevre @ 2008-06-17 11:28 UTC (permalink / raw)
  To: Zsh hackers list

On 2008-06-17 11:43:40 +0100, Peter Stephenson wrote:
> On Tue, 17 Jun 2008 11:38:29 +0100
> Stephane Chazelas <Stephane_Chazelas@yahoo.fr> wrote:
> > Anyway, I was just curious about Peter's statement. I'm most
> > probably not as versed in maths as he is, so was curious about
> > the rationale behind his statement about -3**2 = 9 not being
> > mathematically correct.
> 
> That was Vincent.  I'm inclined to leave the shell the way it is since
> there seems to be no widespread agreement on having C_PRECEDENCES (which
> probably few people will set explicitly) different from other shells (for
> which it will automatically be used in the appropriate emulation).

Well, the C language doesn't have a power operator (there's a power
function, with prefix notation, so no precedence problem with it).

Concerning the precedence of & and |, I'd say that zsh should do what
POSIX requires in sh emulation mode.

Also, when people don't agree about the precedence of operators, a
solution could be to require parentheses (but I don't know if this
is easy to implement such rules). At least ambiguity is avoided.

-- 
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 / Arenaire project (LIP, ENS-Lyon)


^ permalink raw reply	[relevance 3%]

* Re: arithmetic operator precedence
  2008-06-17 10:38  3%           ` Stephane Chazelas
    2008-06-17 10:45  0%             ` Richard Hartmann
@ 2008-06-17 11:38  0%             ` Vincent Lefevre
  2 siblings, 0 replies; 200+ results
From: Vincent Lefevre @ 2008-06-17 11:38 UTC (permalink / raw)
  To: Zsh hackers list; +Cc: Richard Hartmann, Peter Stephenson

On 2008-06-17 11:38:29 +0100, Stephane Chazelas wrote:
> What I meant is that ^ reminds of the /human/ (as opposed to
> /computer/) representation as it indicates that follows must be
> raised up as in 3². So, one can understand that it should follow
> the same rules (that is -3^2 should be the same as -3², even
> though that's not what POSIX decided for bc). But given that **
> has more the shape of the * operator, I'm not sure we can tell
> the same thing.

Note that in math, -(a * b) and (-a) * b are equivalent (even in
the general case of a ring), and I'd say that most people regard
- a * b more like -(a * b) than (-a) * b. So, you can't really
compare to * without confusion.

Also ** is merely a replacement for the more conventional (and
shorter) ^ when ^ can't be used (e.g. because it already has
another meaning).

Math writing asside, the fact that -3**2 and 0-3**2 return different
results is quite confusing too.

-- 
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 / Arenaire project (LIP, ENS-Lyon)


^ permalink raw reply	[relevance 0%]

* Re: arithmetic operator precedence
  2008-06-17 11:19  0%         ` Vincent Lefevre
@ 2008-06-17 11:57  4%           ` Stephane Chazelas
  2008-06-17 12:35  4%             ` Vincent Lefevre
  0 siblings, 1 reply; 200+ results
From: Stephane Chazelas @ 2008-06-17 11:57 UTC (permalink / raw)
  To: Zsh hackers list, Richard Hartmann, Peter Stephenson

On Tue, Jun 17, 2008 at 01:19:34PM +0200, Vincent Lefevre wrote:
> On 2008-06-17 10:45:09 +0100, Stephane Chazelas wrote:
> > But ** is not ^, it's a binary operator whose shape reminds that
> > of multiply, like a multiply++.
> 
> So, why is ** right-associative while * is left-associative?

Don't know. I can't think of a good reason why 2**3**4 shoud be
2**(3**4) rather than (2**3)**4

Or
  4    / 4\                4
 3     \3 / rather than / 3\
2     2                 \2 /


> > And even then, POSIX's ^ in bc is handled as -3^2 = 9.
> 
> But note that bc is the only calculator with such an unfortunate
> choice. And I doubt that bc has been designed by end users. Also,
> perhaps those who wrote bc in the first place didn't think about
> this problem and just wanted to privilege the precedence of
> unary operators as it is often the case.

Which makes sense to me. I was serious when I said that -3 ** 2
was more intuitive to me. Because -3 for me looks like a single
number constant.

BTW, I think I've got a rationale for -3 ** 2 == 9:

I think POSIX allows $((a * 3)) only as far as $a contains a
constant. If it contains "1 + 1", you won't be guaranteed to
have either 6 or 4.

SUSv3> If the shell variable x contains a value that forms a valid
SUSv3> integer constant, then the arithmetic expansions "$((x))" and
SUSv3> "$(($x))" shall return the same value.

So, if you agree that -3 is an integer constant, and agree that
as POSIX says variable expansion should be performed before the
arithmetic expression is evaluated, so that x=3; echo $(($x *
2)) is the same as echo $((-3 ** 2)), that'd mean tha

x=-3; $((x ** 2)) would either have to expand to -9, or $((-3 **
2)) should expand to 9.


> > It could be a good idea to ask ksh, POSIX/bc and perl authors for
> > the rationale behind their choices.
> 
> I think that Perl authors would say something like conventional math
> writing (that's what some of authors of calculators say and what users
> often demand).
[...]

But I don't write 2**3 in conventional math writing, nor do I
write (1+2)/3.

I can understand there be different rules, because of the
linear, one character right to the previous one contraint of
computer strings while we have 2D freedom in hand writing.

1 + 2
-----
  3

has to be translated to (1+2)/3 because of that constraint.

-- 
Stéphane


^ permalink raw reply	[relevance 4%]

* Re: arithmetic operator precedence
  @ 2008-06-17 12:05  4%                   ` Vincent Lefevre
    1 sibling, 0 replies; 200+ results
From: Vincent Lefevre @ 2008-06-17 12:05 UTC (permalink / raw)
  To: Zsh hackers list

On 2008-06-17 12:46:43 +0100, Peter Stephenson wrote:
> That would be quite sensible, but the problem is we already have two
> cases: traditional zsh behaviour, which we don't want to change now, and
> "some sort of" compatilibity mode.  As it looks like "some sort of"
> compatibility might as well be with other shells (so the option could
> really be called "SH_PRECEDENCES", although it's perhaps less obvious that
> means "something approximating to the precedences you probably expect if
> you are a regular programmer") this doesn't give us room for manoeuvre
> without yet another option.

Yes, at least two options are needed. You have the precedences defined
by POSIX (e.g. & vs ==). But concerning the power operator **, this
isn't defined by POSIX, and even the other shells that implement it
may change its behavior and/or make the behavior controlled by an
option.

-- 
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 / Arenaire project (LIP, ENS-Lyon)


^ permalink raw reply	[relevance 4%]

* Re: arithmetic operator precedence
  2008-06-17 11:57  4%           ` Stephane Chazelas
@ 2008-06-17 12:35  4%             ` Vincent Lefevre
  2008-06-17 12:46  5%               ` Stephane Chazelas
  0 siblings, 1 reply; 200+ results
From: Vincent Lefevre @ 2008-06-17 12:35 UTC (permalink / raw)
  To: Zsh hackers list; +Cc: Richard Hartmann, Peter Stephenson

On 2008-06-17 12:57:42 +0100, Stephane Chazelas wrote:
> Which makes sense to me. I was serious when I said that -3 ** 2
> was more intuitive to me. Because -3 for me looks like a single
> number constant.

But it behaves in the same way as - 3, which doesn't look like a
single number constant. And in math, when writing -3^2, the -3 isn't
a single number constant; said otherwise, you need to take the whole
expression into account.

BTW, note that in C at least, -3 isn't a single number constant.
And this fact is visible in practice, e.g. on a machine with 32-bit
int's:

#include <stdio.h>
int main (void)
{
  printf ("%d %d\n",
          (int) sizeof(-2147483648),
          (int) sizeof(-2147483647));
  return 0;
}

outputs "8 4", though the value -2147483648 fits in an int (if
-2147483648 were regarded as a single number constant, one would
have got "4 4").

> BTW, I think I've got a rationale for -3 ** 2 == 9:
> 
> I think POSIX allows $((a * 3)) only as far as $a contains a
> constant. If it contains "1 + 1", you won't be guaranteed to
> have either 6 or 4.

But this rationale doesn't apply if the shell chooses to return 6
(which is IMHO the right extension, and what both bash and zsh do),
i.e. you can see $((a * 3)) as equivalent to $(((a) * 3)). Indeed,
with this choice, -3**2 == -9 is consistent with:

  $ a=-3
  $ echo $((a ** 2))
  9

> So, if you agree that -3 is an integer constant, and agree that
> as POSIX says variable expansion should be performed before the
> arithmetic expression is evaluated, so that x=3; echo $(($x *
> 2)) is the same as echo $((-3 ** 2)), that'd mean tha

But POSIX does not say that variable expansion should be performed
before the arithmetic expression (at least in th way you think).
If POSIX said so, then with a="1 + 1", $((a * 3)) would give
$((1 + 1 * 3)) after variable expansion (without being able to make
the difference with $((1 + 1 * 3)) written directly), then 5 after
arithmetic expansion. But neither zsh nor bash behaves in that way.

> > I think that Perl authors would say something like conventional math
> > writing (that's what some of authors of calculators say and what users
> > often demand).
> [...]
> 
> But I don't write 2**3 in conventional math writing,

But there is a direct equivalence (the only ambiguity is where the
part in exponent ends, and there's an rule in languages for that).

Let's take another example: "-3!" which is conventional math writing.
In math, this means -(3!), i.e. -6. As you can see, -3 isn't regarded
as a constant. And if a shell (or some other language) wants to
support the factorial, it should regard -3! as -(3!).

-- 
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 / Arenaire project (LIP, ENS-Lyon)


^ permalink raw reply	[relevance 4%]

* Re: arithmetic operator precedence
  2008-06-17 12:35  4%             ` Vincent Lefevre
@ 2008-06-17 12:46  5%               ` Stephane Chazelas
  2008-06-17 13:02  4%                 ` Vincent Lefevre
  0 siblings, 1 reply; 200+ results
From: Stephane Chazelas @ 2008-06-17 12:46 UTC (permalink / raw)
  To: Zsh hackers list, Richard Hartmann, Peter Stephenson

On Tue, Jun 17, 2008 at 02:35:51PM +0200, Vincent Lefevre wrote:
[...]
> But POSIX does not say that variable expansion should be performed
> before the arithmetic expression (at least in th way you think).
> If POSIX said so, then with a="1 + 1", $((a * 3)) would give
> $((1 + 1 * 3)) after variable expansion (without being able to make
> the difference with $((1 + 1 * 3)) written directly), then 5 after
> arithmetic expansion. But neither zsh nor bash behaves in that way.
[...]

$((a * 3)) is unspecified as per POSIX if $a doesn't contain an
integer constant. That was my point.

If $a contains an integer constant such as -3, then as per
POSIX, $((a * 3)) should be the same as $(($a * 3)), that is
$((-3 * 3)). If we extend that to the non-POSIX **, that would
be:

a=-3; $((a ** 2)) should be the same as $((-3 ** 2)).

So, if a future version of POSIX adds a **, it is bound to
specify it as $((-3 ** 2)) == 9 if it wants to keep consistant.

That would even be in accordance with all the existing shell
implementations that have **.

So, I think that with SH_PRECEDENCE, $((-3 ** 2)) should give 9.

-- 
Stéphane


^ permalink raw reply	[relevance 5%]

* Re: arithmetic operator precedence
  2008-06-17 12:46  5%               ` Stephane Chazelas
@ 2008-06-17 13:02  4%                 ` Vincent Lefevre
  2008-06-17 13:20  5%                   ` Stephane Chazelas
  0 siblings, 1 reply; 200+ results
From: Vincent Lefevre @ 2008-06-17 13:02 UTC (permalink / raw)
  To: Zsh hackers list; +Cc: Richard Hartmann, Peter Stephenson

On 2008-06-17 13:46:07 +0100, Stephane Chazelas wrote:
> On Tue, Jun 17, 2008 at 02:35:51PM +0200, Vincent Lefevre wrote:
> [...]
> > But POSIX does not say that variable expansion should be performed
> > before the arithmetic expression (at least in th way you think).
> > If POSIX said so, then with a="1 + 1", $((a * 3)) would give
> > $((1 + 1 * 3)) after variable expansion (without being able to make
> > the difference with $((1 + 1 * 3)) written directly), then 5 after
> > arithmetic expansion. But neither zsh nor bash behaves in that way.
> [...]
> 
> $((a * 3)) is unspecified as per POSIX if $a doesn't contain an
> integer constant. That was my point.

It is unspecified. So, the shell is right to choose how it sees it.

> If $a contains an integer constant such as -3, then as per
> POSIX, $((a * 3)) should be the same as $(($a * 3)), that is
> $((-3 * 3)).

No, POSIX does not say that. It happens to be the same thing here
just because of the properties of *, but you can't deduce anything
for extensions. And in practice, shells don't treat $((a * 3)) and
$(($a * 3)) in the same way:

vin:~> a="1 + 1"
vin:~> echo $((a * 3))
6
vin:~> echo $(($a * 3))
4

> If we extend that to the non-POSIX **, that would be:
> 
> a=-3; $((a ** 2)) should be the same as $((-3 ** 2)).

No, if we extend POSIX in an intuitive way (see above), $((a ** 2))
should be the same as $(((-3) ** 2)), hence 9. So, no problem with
$((-3**2)) being -9.

> So, if a future version of POSIX adds a **, it is bound to
> specify it as $((-3 ** 2)) == 9 if it wants to keep consistant.

Choosing -9 is also consistent (see above).

-- 
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 / Arenaire project (LIP, ENS-Lyon)


^ permalink raw reply	[relevance 4%]

* Re: arithmetic operator precedence
  2008-06-17 13:02  4%                 ` Vincent Lefevre
@ 2008-06-17 13:20  5%                   ` Stephane Chazelas
  2008-06-17 14:33  5%                     ` Vincent Lefevre
  2008-06-17 14:35  3%                     ` Stephane Chazelas
  0 siblings, 2 replies; 200+ results
From: Stephane Chazelas @ 2008-06-17 13:20 UTC (permalink / raw)
  To: Zsh hackers list, Richard Hartmann, Peter Stephenson

On Tue, Jun 17, 2008 at 03:02:46PM +0200, Vincent Lefevre wrote:
[...]
> It is unspecified. So, the shell is right to choose how it sees it.
> 
> > If $a contains an integer constant such as -3, then as per
> > POSIX, $((a * 3)) should be the same as $(($a * 3)), that is
> > $((-3 * 3)).
> 
> No, POSIX does not say that. It happens to be the same thing here
> just because of the properties of *, but you can't deduce anything
> for extensions.

It says $((x)) is meant to be the same as $(($x)) which I
understand as any occurrance of a variable name (other than $-,
$?, $0... obviously) in $((...)) should be the same as if the $
was not ommited (when $x contains an integer constant).

That's a recent addition to the text. Only recent versions of
ash (BSD shs) support that for instance, which is why it has
been recommanded for a while to write it $(($x + 1)) instead of
$((x + 1)) in POSIX scripts. And I still use x=$(($x + 1)).

For newer ashes, $((x + 1)) is now accepted and note that you do
get an error in ash if $x is not an integer constant.

> And in practice, shells don't treat $((a * 3)) and
> $(($a * 3)) in the same way:
> 
> vin:~> a="1 + 1"
> vin:~> echo $((a * 3))
> 6
> vin:~> echo $(($a * 3))
> 4

But here, $a doesn't contain an integer constant, that's out of
the scope of POSIX.

> 
> > If we extend that to the non-POSIX **, that would be:
> > 
> > a=-3; $((a ** 2)) should be the same as $((-3 ** 2)).
> 
> No, if we extend POSIX in an intuitive way (see above), $((a ** 2))
> should be the same as $(((-3) ** 2)), hence 9. So, no problem with
> $((-3**2)) being -9.
[...]

No, POSIX does say that $((a ** 2)) is the same as $(($a ** 2))
because $a contains an integer constant, and that's $((-3**2)).

-- 
Stéphane


^ permalink raw reply	[relevance 5%]

* Re: arithmetic operator precedence
  2008-06-17 13:20  5%                   ` Stephane Chazelas
@ 2008-06-17 14:33  5%                     ` Vincent Lefevre
  2008-06-17 14:53  4%                       ` Stephane Chazelas
  2008-06-17 14:35  3%                     ` Stephane Chazelas
  1 sibling, 1 reply; 200+ results
From: Vincent Lefevre @ 2008-06-17 14:33 UTC (permalink / raw)
  To: Zsh hackers list; +Cc: Richard Hartmann, Peter Stephenson

On 2008-06-17 14:20:39 +0100, Stephane Chazelas wrote:
> On Tue, Jun 17, 2008 at 03:02:46PM +0200, Vincent Lefevre wrote:
> [...]
> > It is unspecified. So, the shell is right to choose how it sees it.
> > 
> > > If $a contains an integer constant such as -3, then as per
> > > POSIX, $((a * 3)) should be the same as $(($a * 3)), that is
> > > $((-3 * 3)).
> > 
> > No, POSIX does not say that. It happens to be the same thing here
> > just because of the properties of *, but you can't deduce anything
> > for extensions.
> 
> It says $((x)) is meant to be the same as $(($x))

Yes, but not more, and only if x is a valid integer constant.
Note that recognizing negative constants is not required by POSIX;
so, they are extensions, just like "1+1".

BTW, I've just sent a mail to the Austin group about that and other
things related to arithmetic expansion.

> which I understand as any occurrance of a variable name (other than
> $-, $?, $0... obviously) in $((...)) should be the same as if the $
> was not ommited (when $x contains an integer constant).

No, POSIX doesn't say that. This sentence is a mean to define the
value of x from the contents of $x. But note that parsing has already
been done and you have something like a C expression ("The arithmetic
expression shall be processed according to the rules given in
Arithmetic Precision and Operations"); variables are just replaced
by their values, like in C. Without any extension, both interpretations
are equivalent anyway.

> That's a recent addition to the text. Only recent versions of
> ash (BSD shs) support that for instance, which is why it has
> been recommanded for a while to write it $(($x + 1)) instead of
> $((x + 1)) in POSIX scripts. And I still use x=$(($x + 1)).

But if you want to use extensions and/or more complex expressions,
you should add parentheses, e.g. x=$((($x) + 1)). This will also
work.

> > And in practice, shells don't treat $((a * 3)) and
> > $(($a * 3)) in the same way:
> > 
> > vin:~> a="1 + 1"
> > vin:~> echo $((a * 3))
> > 6
> > vin:~> echo $(($a * 3))
> > 4
> 
> But here, $a doesn't contain an integer constant, that's out of
> the scope of POSIX.

Not completely. The shell may recognize "1 + 1" as an integer constant
as an extension, in which case 6 would be the only valid result. Note
that negative numbers are in the same case.

Also ** is out of the scope of POSIX too.

> No, POSIX does say that $((a ** 2)) is the same as $(($a ** 2))
> because $a contains an integer constant, and that's $((-3**2)).

No (see above). You are 3 times wrong. POSIX doesn't say anything
about **, POSIX doesn't say that non-trivial expressions $((a ...))
and $(($a ...)) are equivalent (and in pratice, they aren't), POSIX
doesn't say anything about negative constants (probably a bug, but
the whole section needs to be improved anyway). Perhaps instead of
saying falsehood, you should read the standards.

-- 
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 / Arenaire project (LIP, ENS-Lyon)


^ permalink raw reply	[relevance 5%]

* Re: arithmetic operator precedence
  2008-06-17 13:20  5%                   ` Stephane Chazelas
  2008-06-17 14:33  5%                     ` Vincent Lefevre
@ 2008-06-17 14:35  3%                     ` Stephane Chazelas
  2008-06-17 15:05  4%                       ` Vincent Lefevre
  1 sibling, 1 reply; 200+ results
From: Stephane Chazelas @ 2008-06-17 14:35 UTC (permalink / raw)
  To: Zsh hackers list, Richard Hartmann, Peter Stephenson

On Tue, Jun 17, 2008 at 02:20:39PM +0100, Stephane Chazelas wrote:
> On Tue, Jun 17, 2008 at 03:02:46PM +0200, Vincent Lefevre wrote:
> [...]
> > It is unspecified. So, the shell is right to choose how it sees it.
> > 
> > > If $a contains an integer constant such as -3, then as per
> > > POSIX, $((a * 3)) should be the same as $(($a * 3)), that is
> > > $((-3 * 3)).
> > 
> > No, POSIX does not say that. It happens to be the same thing here
> > just because of the properties of *, but you can't deduce anything
> > for extensions.
> 
> It says $((x)) is meant to be the same as $(($x)) which I
> understand as any occurrance of a variable name (other than $-,
> $?, $0... obviously) in $((...)) should be the same as if the $
> was not ommited (when $x contains an integer constant).
[...]

It can't be that simple though, as in

x=-1; $((1 x))

which would be POSIX but fails in all shells.

Or

x=1; $((x = 1 + x))

which obviously is not meant to be the same as $(($x = 1 + $x))

So that

  If the shell variable x contains a value that forms a valid
  integer constant, then the arithmetic expansions "$((x))" and
  "$(($x))" shall return the same value.

says either too little or too much to be useful.

-- 
Stéphane


^ permalink raw reply	[relevance 3%]

* Re: arithmetic operator precedence
  2008-06-17 14:33  5%                     ` Vincent Lefevre
@ 2008-06-17 14:53  4%                       ` Stephane Chazelas
  2008-06-17 15:49  4%                         ` Vincent Lefevre
  0 siblings, 1 reply; 200+ results
From: Stephane Chazelas @ 2008-06-17 14:53 UTC (permalink / raw)
  To: Zsh hackers list, Richard Hartmann, Peter Stephenson

On Tue, Jun 17, 2008 at 04:33:57PM +0200, Vincent Lefevre wrote:
[...]
> > which I understand as any occurrance of a variable name (other than
> > $-, $?, $0... obviously) in $((...)) should be the same as if the $
> > was not ommited (when $x contains an integer constant).
> 
> No, POSIX doesn't say that. This sentence is a mean to define the
> value of x from the contents of $x. But note that parsing has already
> been done and you have something like a C expression ("The arithmetic
> expression shall be processed according to the rules given in
> Arithmetic Precision and Operations"); variables are just replaced
> by their values, like in C. Without any extension, both interpretations
> are equivalent anyway.

That's one interpretation.

[...]
> Also ** is out of the scope of POSIX too.

Yes, as I said I think clearly enough, if POSIX were to specify
** _in a future version of the standard_, it is more likely that
it implements it as -3 ** 2 == 9, to avoid confusion.

- because it doesn't at the moment clearly state how bare
  variable names are to be interpreted as you point out (it's true
  that I was interpreting maybe a bit too much)

- because it doesn't clearly state whether -3 is an integer
  constant or not. ash allows a=-3; echo $((a * 3)) while it
  doesn't allow a=0-3; echo $((a * 3)) for instance. But then,
  given that a negative number can be the result of an
  arithmetic expansion, I can't see how it can be interpreted in
  any other way than -3 is an integer constant.

- because all existing shell implementations do it that way at
  the moment.

> > No, POSIX does say that $((a ** 2)) is the same as $(($a ** 2))
> > because $a contains an integer constant, and that's $((-3**2)).
> 
> No (see above). You are 3 times wrong. POSIX doesn't say anything
> about **, POSIX doesn't say that non-trivial expressions $((a ...))
> and $(($a ...)) are equivalent (and in pratice, they aren't), POSIX
> doesn't say anything about negative constants (probably a bug, but
> the whole section needs to be improved anyway). Perhaps instead of
> saying falsehood, you should read the standards.
[...]

No need to be rude.


Now, I think this has probably been discussed enough by now.

What is certain is that I will keep writing x=$(($x + 1)) and
make sure all the variables I use in arithmetic expansions
contain integer constants (negative or not), and if for some
obscure reason, I want to write a non-POSIX script meant to be
portable to ksh93, bash and zsh, I'll write

x=$((($y)**3))

as some shell maintainer might want to follow your advice in the
future and change the behavior so that

x=$(($y**3)) doesn't work anymore as I would expect it to.

I'll stop digressing on this on the list, please feel free to
follow up in private if you're keen.

-- 
Stéphane


^ permalink raw reply	[relevance 4%]

* Re: arithmetic operator precedence
  2008-06-17 14:35  3%                     ` Stephane Chazelas
@ 2008-06-17 15:05  4%                       ` Vincent Lefevre
  0 siblings, 0 replies; 200+ results
From: Vincent Lefevre @ 2008-06-17 15:05 UTC (permalink / raw)
  To: Zsh hackers list; +Cc: Richard Hartmann, Peter Stephenson

On 2008-06-17 15:35:59 +0100, Stephane Chazelas wrote:
> It can't be that simple though, as in
> 
> x=-1; $((1 x))
> 
> which would be POSIX but fails in all shells.

No, $((1 x)) is an invalid expression (unless the shell sees this
as an extension), so POSIX requires it to fail.

This is different from $((1 $x)), where the expansion of $x occurs
first.

> Or
> 
> x=1; $((x = 1 + x))
> 
> which obviously is not meant to be the same as $(($x = 1 + $x))

So? What's the problem with them not being the same?

Note that POSIX says:

  The shell shall expand all tokens in the expression for parameter
                                                          ^^^^^^^^^
  expansion, command substitution, and quote removal.
  ^^^^^^^^^

  Next, the shell shall treat this as an arithmetic expression
  ^^^^

In the first case, the expression is x = 1 + x. In the second case,
it is 1 = 1 + 1.

> So that
> 
>   If the shell variable x contains a value that forms a valid
>   integer constant, then the arithmetic expansions "$((x))" and
>   "$(($x))" shall return the same value.
> 
> says either too little or too much to be useful.

I agree that this isn't perfect (BTW, see my mail in the Austin group
when it appears -- I haven't received a copy yet).

-- 
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 / Arenaire project (LIP, ENS-Lyon)


^ permalink raw reply	[relevance 4%]

* Re: arithmetic operator precedence
  2008-06-17 14:53  4%                       ` Stephane Chazelas
@ 2008-06-17 15:49  4%                         ` Vincent Lefevre
  0 siblings, 0 replies; 200+ results
From: Vincent Lefevre @ 2008-06-17 15:49 UTC (permalink / raw)
  To: Zsh hackers list; +Cc: Richard Hartmann, Peter Stephenson

On 2008-06-17 15:53:38 +0100, Stephane Chazelas wrote:
> On Tue, Jun 17, 2008 at 04:33:57PM +0200, Vincent Lefevre wrote:
> [...]
> > > which I understand as any occurrance of a variable name (other than
> > > $-, $?, $0... obviously) in $((...)) should be the same as if the $
> > > was not ommited (when $x contains an integer constant).
> > 
> > No, POSIX doesn't say that. This sentence is a mean to define the
> > value of x from the contents of $x. But note that parsing has already
> > been done and you have something like a C expression ("The arithmetic
> > expression shall be processed according to the rules given in
> > Arithmetic Precision and Operations"); variables are just replaced
> > by their values, like in C. Without any extension, both interpretations
> > are equivalent anyway.
> 
> That's one interpretation.

And that's the most intuitive one I can see. And that's why both bash
and zsh follow this interpretation.

> [...]
> > Also ** is out of the scope of POSIX too.
> 
> Yes, as I said I think clearly enough, if POSIX were to specify
> ** _in a future version of the standard_,

No, you said: "POSIX does say that $((a ** 2)) is the same as $(($a ** 2))
because $a contains an integer constant, and that's $((-3**2))."

> it is more likely that it implements it as -3 ** 2 == 9, to avoid
> confusion.

That's your opinion. I'd say it is very unlikely to regard
$((a ** 2)) as $(($a ** 2)) because
  1. It is very confusing (more precisely, the $(($a ** 2)) form is
     confusing as far arithmetic evaluation is concerned, and that's
     probably why the form with variables in arithmetic expressions
     have been added).
  2. Several shells (bash, zsh) do it in another way, and AFAIK,
     no-one has complained on their behavior.

> - because it doesn't at the moment clearly state how bare
>   variable names are to be interpreted as you point out (it's true
>   that I was interpreting maybe a bit too much)

As it does a reference to C expressions, I'd say that it should do
like C. Note that with your interpretation, two passes are necessary
if the shell regards advanced forms of integer constants (such as
"1 + 1"): one to identify the variable names, and one to reparse the
expression after replacing the variable names.

> - because it doesn't clearly state whether -3 is an integer
>   constant or not. ash allows a=-3; echo $((a * 3)) while it
>   doesn't allow a=0-3; echo $((a * 3)) for instance. But then,
>   given that a negative number can be the result of an
>   arithmetic expansion, I can't see how it can be interpreted in
>   any other way than -3 is an integer constant.

Yes, that's why it's probably a bug (but POSIX doesn't even say
that the shell should be able to re-read the output value).

> - because all existing shell implementations do it that way at
>   the moment.

Only for precedence reasons (probably without much reflection and
because the unnecessary precedence of the unary - over * was already
there), certainly not because $((a ** 2)) and $(($a ** 2)) are
regarded as the same: they are handled differently.

BTW, when using directed rounding modes, this is very confusing in C.

-- 
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 / Arenaire project (LIP, ENS-Lyon)


^ permalink raw reply	[relevance 4%]

* Re: environment settings
  @ 2008-06-18 10:38  3%                   ` Vincent Lefevre
  0 siblings, 0 replies; 200+ results
From: Vincent Lefevre @ 2008-06-18 10:38 UTC (permalink / raw)
  To: zsh-workers; +Cc: Mikael Magnusson

On 2008-06-17 21:32:29 +0100, Stephane Chazelas wrote:
> And while we're at it, it can also do an "unfunction echo" and
> "unalias echo" because someone might have redefined "echo" in
> the ~/.zshenv to behave POSIXly.

If the script uses zsh features of echo, yes. Now, in practice, if
a user writes a zsh script for himself, he knows what he has put in
his .zshenv, so that he should know what he needs to undefine in his
scripts (most often, there's nothing to do). Those who want to write
portable scripts shouldn't write zsh scripts anyway (BTW, even Debian
goes back from bash to POSIX sh). So, in short, there's no practical
problem.

> Let's be serious please. Or let's do as for csh, where one must
> add the -f to the shebang line to avoid this kind of problem.

Well, concerning csh, the -f is necessary just because users do nasty
things in their .cshrc (but csh is also at fault by not have something
like .cshenv where users can put *minimal* things). Anyway csh is
incompatible with everything else, has bugs and is no longer standard.
One should not write csh scripts any longer.

> ~/.zshenv can be a useful tool but it must be used with care. 

Yes, it must be used with care, but this is also true for other
config files.

Also, bash is really annoying by not sourcing some rc file:

brocoli:~> which tps
/home/vlefevre/bin/tps

(I install my own utilities, written by myself, in my home directory.)

brocoli:~> ssh -t doublejack tps
Connected to doublejack (from 140.77.14.28)
DISPLAY: localhost:11.0
bash: tps: command not found
Connection to doublejack closed.

Fortunately this has been fixed in Debian.

-- 
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 / Arenaire project (LIP, ENS-Lyon)


^ permalink raw reply	[relevance 3%]

* Re: arithmetic operator precedence
  @ 2008-06-19  9:54  5%                     ` Stephane Chazelas
  2008-06-19 16:00  5%                       ` Vincent Lefevre
    1 sibling, 1 reply; 200+ results
From: Stephane Chazelas @ 2008-06-19  9:54 UTC (permalink / raw)
  To: Jun T.; +Cc: zsh-workers

On Thu, Jun 19, 2008 at 06:37:17PM +0900, Jun T. wrote:
> 
> At 0:46 PM +0100 08.6.17, Peter Stephenson wrote:
> >As it looks like "some sort of"
> >compatibility might as well be with other shells (so the option could
> >really be called "SH_PRECEDENCES", although it's perhaps less obvious that
> >means "something approximating to the precedences you probably expect if
> >you are a regular programmer") this doesn't give us room for manoeuvre
> >without yet another option.
> 
> -3**2 = 9 is quite counter-intuitive and "mathematically wrong",
[...]

I don't find it counter-intuitive nor mathematically wrong as
there's no "**" operator of that shape in "maths".

But to rephrase what I was trying to say rather awkwardly
before.

With all the existing operators, one can do

x=$(( some-expression ))
y=$(( some-other-expression ))
z=$(( $x <op> $y ))

and it's OK whatever some-expression and some-other-expression
and <op> as long as they are POSIX.

The syntax above is the only one you can write in a POSIX
script, and POSIX guarantees it to work at the moment.

If you change ** so that it has  higher precedence than the
unary minus, you break that harmony.

Typically, that means you'll have to write:

z=$(( ($x) <op> ($y) ))

because you now have operators that have higher precedence than
the unary "-" and unary "+".

Again ** is not a POSIX operator, so it's not really a concern
at this time, as you can't use ** in a POSIX script anyway. But
that's to show how it could become one if POSIX was to include
"**" in a future version of the standard and set its precedence
as you suggest.

-- 
Stéphane


^ permalink raw reply	[relevance 5%]

* Re: arithmetic operator precedence
  @ 2008-06-19 12:29  3%                       ` Richard Hartmann
  2008-06-19 16:04  3%                         ` Vincent Lefevre
  0 siblings, 1 reply; 200+ results
From: Richard Hartmann @ 2008-06-19 12:29 UTC (permalink / raw)
  To: Peter Stephenson; +Cc: zsh-workers

On Thu, Jun 19, 2008 at 11:58, Peter Stephenson <pws@csr.com> wrote:


> That seems a good idea in any case.

Can you add that this is done to remain both backwards and shell-
compatible and that this is not what a 'real' language/calculator
will do? Perhaps even include a reference to the POSIX argument.

Personally, I still think it is better to be compatbile to accepted
math syntax than to the older/other implementations, but.. :)


Richard


^ permalink raw reply	[relevance 3%]

* Re: arithmetic operator precedence
  2008-06-19  9:54  5%                     ` Stephane Chazelas
@ 2008-06-19 16:00  5%                       ` Vincent Lefevre
  2008-06-19 16:20  5%                         ` Stephane Chazelas
  0 siblings, 1 reply; 200+ results
From: Vincent Lefevre @ 2008-06-19 16:00 UTC (permalink / raw)
  To: zsh-workers; +Cc: Jun T.

On 2008-06-19 10:54:54 +0100, Stephane Chazelas wrote:
> With all the existing operators, one can do
> 
> x=$(( some-expression ))
> y=$(( some-other-expression ))
> z=$(( $x <op> $y ))
> 
> and it's OK whatever some-expression and some-other-expression
> and <op> as long as they are POSIX.

This is not guaranteed to work. Indeed POSIX allows constants other
than the "canonical" ones to be recognized. With such constants,
you can get wrong results. Whether such constants can occur for some
reason is another matter. In *practice*, it is safer to write:

  z=$(( ($x) <op> ($y) ))

and even safer to write:

  z=$(( x <op> y ))

though it may not work in non-POSIX shells.

> The syntax above is the only one you can write in a POSIX
> script, and POSIX guarantees it to work at the moment.
> 
> If you change ** so that it has  higher precedence than the
> unary minus, you break that harmony.

That's a completely stupid reason. In practice, many shells recognize
other constants, such as "1+1" (this is allowed by POSIX), even more
than those which support **. For instance:

$ a='1+1'; echo $((a * 2)); echo $((3**2))
4
pdksh: 3**2: unexpected `*'

and:

$ a='1+1'; echo $((a * 2)); echo $((3**2))
4
posh: 3**2: unexpected `*'

So, writing z=$(( $x <op> $y )) will not work anyway.

Shells should be designed to work *in practice* (and do what the
user expects to get), not to work specifically on theoretical
implementations that will never exist.

-- 
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 / Arenaire project (LIP, ENS-Lyon)


^ permalink raw reply	[relevance 5%]

* Re: arithmetic operator precedence
  2008-06-19 12:29  3%                       ` Richard Hartmann
@ 2008-06-19 16:04  3%                         ` Vincent Lefevre
  2008-06-19 16:10  0%                           ` Mikael Magnusson
  0 siblings, 1 reply; 200+ results
From: Vincent Lefevre @ 2008-06-19 16:04 UTC (permalink / raw)
  To: zsh-workers

On 2008-06-19 14:29:03 +0200, Richard Hartmann wrote:
> On Thu, Jun 19, 2008 at 11:58, Peter Stephenson <pws@csr.com> wrote:
> > That seems a good idea in any case.
> 
> Can you add that this is done to remain both backwards and shell-
> compatible and that this is not what a 'real' language/calculator
> will do?

This isn't shell-compatible. AFAIK, only bash and ksh93 support **.

> Perhaps even include a reference to the POSIX argument.

There's no POSIX argument. ** is just an extension.

-- 
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 / Arenaire project (LIP, ENS-Lyon)


^ permalink raw reply	[relevance 3%]

* Re: arithmetic operator precedence
  2008-06-19 16:04  3%                         ` Vincent Lefevre
@ 2008-06-19 16:10  0%                           ` Mikael Magnusson
  2008-06-19 16:27  0%                             ` Stephane Chazelas
  0 siblings, 1 reply; 200+ results
From: Mikael Magnusson @ 2008-06-19 16:10 UTC (permalink / raw)
  To: zsh-workers

2008/6/19 Vincent Lefevre <vincent@vinc17.org>:
> On 2008-06-19 14:29:03 +0200, Richard Hartmann wrote:
>> On Thu, Jun 19, 2008 at 11:58, Peter Stephenson <pws@csr.com> wrote:
>> > That seems a good idea in any case.
>>
>> Can you add that this is done to remain both backwards and shell-
>> compatible and that this is not what a 'real' language/calculator
>> will do?
>
> This isn't shell-compatible. AFAIK, only bash and ksh93 support **.
>
>> Perhaps even include a reference to the POSIX argument.
>
> There's no POSIX argument. ** is just an extension.

I've followed this discussion, and I'm left wondering only one thing.
If it's decided that $(( -1 ** 2 )) == 1, then what's the point? Why
would anyone ever write that? Why require everyone to write -(1**2) when
the expression makes no sense at all without the parentheses? Ie you would
just write 1**2 without the - at all, nobody would ever write (-1)**2.

-- 
Mikael Magnusson


^ permalink raw reply	[relevance 0%]

* Re: arithmetic operator precedence
  2008-06-19 16:00  5%                       ` Vincent Lefevre
@ 2008-06-19 16:20  5%                         ` Stephane Chazelas
  2008-06-19 17:14  3%                           ` Vincent Lefevre
  0 siblings, 1 reply; 200+ results
From: Stephane Chazelas @ 2008-06-19 16:20 UTC (permalink / raw)
  To: zsh-workers, Jun T.

On Thu, Jun 19, 2008 at 06:00:24PM +0200, Vincent Lefevre wrote:
> On 2008-06-19 10:54:54 +0100, Stephane Chazelas wrote:
> > With all the existing operators, one can do
> > 
> > x=$(( some-expression ))
> > y=$(( some-other-expression ))
> > z=$(( $x <op> $y ))
> > 
> > and it's OK whatever some-expression and some-other-expression
> > and <op> as long as they are POSIX.
> 
> This is not guaranteed to work. Indeed POSIX allows constants other
> than the "canonical" ones to be recognized. With such constants,
> you can get wrong results. Whether such constants can occur for some
> reason is another matter. In *practice*, it is safer to write:
> 
>   z=$(( ($x) <op> ($y) ))
> 
> and even safer to write:
> 
>   z=$(( x <op> y ))
> 
> though it may not work in non-POSIX shells.

I'm under the impression your misunderstand the purpose of
POSIX. POSIX is a tool to help people write portable
applications (when it comes to shells, that means _scripts_).

You cannot write z=$(( x <op> y ))

in a POSIX script, because the result is unspecified.

z=$(($x <op> $y))

is specified (with the conditions I detailed).

If in your script, you make sure $x and $y are integer constants
(as in [-+]?(0[xX][a-fA-F0-9]+|0[0-7]+|[1-9][0-9]*)), then it
will work as expected.

If $x and $y are valid arithmetic expressions that may not be
integer constants as described above, then you need:

z=$((($x) <op> ($y)))

But I wouldn't do such things in a script.

My example was about $x and $y being the result of arithmetic
expansions.


[...]
> Shells should be designed to work *in practice* (and do what the
> user expects to get), not to work specifically on theoretical
> implementations that will never exist.
[...]

POSIX is not about a theoretical implementation. It's the
specification of an API or a language if you like.

Just like the C spec doesn't specify a theoretical compiler, but
a language. Of course, someone who wants to design a C compiler
must refer to that spec, but the main target of that spec is
people writing C code.

-- 
Stéphane


^ permalink raw reply	[relevance 5%]

* Re: arithmetic operator precedence
  2008-06-19 16:10  0%                           ` Mikael Magnusson
@ 2008-06-19 16:27  0%                             ` Stephane Chazelas
  0 siblings, 0 replies; 200+ results
From: Stephane Chazelas @ 2008-06-19 16:27 UTC (permalink / raw)
  To: Mikael Magnusson; +Cc: zsh-workers

On Thu, Jun 19, 2008 at 06:10:56PM +0200, Mikael Magnusson wrote:
> 2008/6/19 Vincent Lefevre <vincent@vinc17.org>:
> > On 2008-06-19 14:29:03 +0200, Richard Hartmann wrote:
> >> On Thu, Jun 19, 2008 at 11:58, Peter Stephenson <pws@csr.com> wrote:
> >> > That seems a good idea in any case.
> >>
> >> Can you add that this is done to remain both backwards and shell-
> >> compatible and that this is not what a 'real' language/calculator
> >> will do?
> >
> > This isn't shell-compatible. AFAIK, only bash and ksh93 support **.
> >
> >> Perhaps even include a reference to the POSIX argument.
> >
> > There's no POSIX argument. ** is just an extension.
> 
> I've followed this discussion, and I'm left wondering only one thing.
> If it's decided that $(( -1 ** 2 )) == 1, then what's the point? Why
> would anyone ever write that? Why require everyone to write -(1**2) when
> the expression makes no sense at all without the parentheses? Ie you would
> just write 1**2 without the - at all, nobody would ever write (-1)**2.
[...]

Think of:

double() {
  REPLY=$(($1 * 2))
}

square() {
  REPLY=$(($1 ** 2))
}

Where those functions are meant to be passed a number, positive
or negative, not any random arithmetic expression.

If you make ** have higher precedence than unary "-", then
square -1

returns -1

while double -1 returns -2 as expected.

-- 
Stéphane


^ permalink raw reply	[relevance 0%]

* Re: arithmetic operator precedence
  2008-06-19 16:20  5%                         ` Stephane Chazelas
@ 2008-06-19 17:14  3%                           ` Vincent Lefevre
  0 siblings, 0 replies; 200+ results
From: Vincent Lefevre @ 2008-06-19 17:14 UTC (permalink / raw)
  To: zsh-workers; +Cc: Jun T.

On 2008-06-19 17:20:36 +0100, Stephane Chazelas wrote:
> I'm under the impression your misunderstand the purpose of
> POSIX. POSIX is a tool to help people write portable
> applications (when it comes to shells, that means _scripts_).
> 
> You cannot write z=$(( x <op> y ))
> 
> in a POSIX script, because the result is unspecified.
> 
> z=$(($x <op> $y))
> 
> is specified (with the conditions I detailed).
> 
> If in your script, you make sure $x and $y are integer constants
> (as in [-+]?(0[xX][a-fA-F0-9]+|0[0-7]+|[1-9][0-9]*)), then it
> will work as expected.

I think it is useless to continue the discussion with someone that
hasn't read what POSIX says.

-- 
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 / Arenaire project (LIP, ENS-Lyon)


^ permalink raw reply	[relevance 3%]

* Re: Zsh migrated to Symbian OS - Contributing back details.
       [not found]     <20080429111157.67641fc2@news01>
@ 2008-07-16  5:23  3% ` Karthikeyan.Balu
  2008-07-16 12:27  0%   ` Karthik B
  0 siblings, 1 reply; 200+ results
From: Karthikeyan.Balu @ 2008-07-16  5:23 UTC (permalink / raw)
  To: zsh-workers; +Cc: pws

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

Hi All,
Further to the below mail from Peter Stephenson, this would give a broad 
overview of the changes to Zsh project during its migration onto Symbian 
OS.

Let me know how can we move further on this activity.

Symbian OS supports Zsh

   1.   Overview:
The Open source Zsh was migrated onto Symbian OS using PIPS (PIPS is POSIX 
on Symbian OS) libraries, the Standard set of POSIX libraries on Symbian.

None of the Zsh project defects have been fixed during this activity and 
all the changes are to support Zsh on Symbian OS.

 2.     Limitations:
This section elaborates the features that were not supported due to the 
limitations in PIPS/Symbian.
a. Signal related features are not supported -
PIPS currently don?t support Signals, because of which features like 
stopping, terminating a process are not supported. Signals are being 
implemented and this can be supported soon.

   3.   Key modifications to open source Zsh:
      a.        Make changes
The build and the project specification files for Symbian reflect the 
.Makefile of Zsh project. The tools of Symbian will use these 
specifications to generate the binary.

      b.        Source changes
Most of the changes during the migration have been blocked under 
__SYMBIAN32__ which is defined by the tools.

As Symbian doesn?t support two phase construction of a process, popen3() 
an API which creates a process with the image and gets three file 
descriptors corresponding to the stdio of the client process is used 
instead of fork() and exec ().  Most of the changes done to Zsh project 
are specific to the usage of popen3 ().

   4. Sourced from and version:

http://linux.softpedia.com/get/Programming/Interpreters/Zsh-1183.shtml 
(4.2.6 version).

Thanks,
Karthik.




Peter Stephenson <pws@csr.com> 
04/29/2008 03:41 PM

To
Karthikeyan.Balu@symbian.com
cc

Subject
Re: Zsh migrated to Symbian OS - Contributing back details.






Hi,

Thanks for the note... we'd certainly be interested in integrating your
changes back to zsh.  This would have to be the latest development version
(4.3) since there isn't any active development of older branches.

As you no doubt know, most of the discussion about details goes on on the
zsh-workers mailing list.  We'd be happy to look at patches to allow
compilation on Symbian.  Putting appropriate #ifdef's in the code is
probably the easy bit; setting up the configuration in the first place is
perhaps more difficult.  Are you using a cross-compiler?  This probably
makes things difficult, since zsh has to probe various bits of run-time
behaviour when configure is run.  We would probably need to look at other
ways of providing the necessary information.  Alternatively, I suppose we
might be able to supply a library of pre-built configuration headers for
special cases like this.

Anyway, if you let the mailing list know the sort of changes you have we
can start to think about the best way of integrating them.

Regards,
pws

-- 
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



**********************************************************************
 Symbian Software Ltd is a company registered in England and Wales
with registered number 4190020 and registered office at 2-6
Boundary Row, Southwark, London,  SE1 8HP, UK. This message is
intended only for use by the named addressee and may contain
privileged and/or confidential information. If you are not the
named addressee you should not disseminate, copy or take any action
in reliance on it. If you have received this message in error
please notify postmaster@symbian.com and delete the message and any
attachments accompanying it immediately. Neither Symbian nor any of
its Affiliates accepts liability for any corruption, interception,
amendment, tampering or viruses occurring to this message in
transit or for any message sent by its employees which is not in
compliance with Symbian corporate policy.
**********************************************************************

[-- Attachment #2: Type: text/html, Size: 6314 bytes --]

^ permalink raw reply	[relevance 3%]

* Re: Zsh migrated to Symbian OS - Contributing back details.
  2008-07-16  5:23  3% ` Zsh migrated to Symbian OS - Contributing back details Karthikeyan.Balu
@ 2008-07-16 12:27  0%   ` Karthik B
  2008-07-17  5:17  0%     ` Karthik B
  0 siblings, 1 reply; 200+ results
From: Karthik B @ 2008-07-16 12:27 UTC (permalink / raw)
  To: Karthikeyan.Balu; +Cc: zsh-workers, pws

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

I understand that the changes have to be merged with the current development
branch of the Zsh project, meanwhile i would be glad to answer any of your
specific queries.

Karthik.


On Wed, Jul 16, 2008 at 10:53 AM, <Karthikeyan.Balu@symbian.com> wrote:

>
> Hi All,
> Further to the below mail from Peter Stephenson, this would give a broad
> overview of the changes to Zsh project during its migration onto Symbian OS.
>
> Let me know how can we move further on this activity.
>
> *Symbian OS supports Zsh*
>
>
> *   1.        Overview:*
> The Open source Zsh was migrated onto Symbian OS using PIPS (PIPS is POSIX
> on Symbian OS) libraries, the Standard set of POSIX libraries on Symbian.
>
> None of the Zsh project defects have been fixed during this activity and
> all the changes are to support Zsh on Symbian OS.
>
> * 2.        Limitations:*
> This section elaborates the features that were not supported due to the
> limitations in PIPS/Symbian.
> *a. Signal related features are not supported -*
> PIPS currently don't support Signals, because of which features like
> stopping, terminating a process are not supported. Signals are being
> implemented and this can be supported soon.
>
> *   3.        Key modifications to open source Zsh:*
>       a.        Make changes
> The build and the project specification files for Symbian reflect the
> .Makefile of Zsh project. The tools of Symbian will use these specifications
> to generate the binary.
>
>       b.        Source changes
> Most of the changes during the migration have been blocked under
> __SYMBIAN32__ which is defined by the tools.
>
> As Symbian doesn't support two phase construction of a process, popen3() an
> API which creates a process with the image and gets three file descriptors
> corresponding to the stdio of the child process is used instead of fork()
> and exec ().  Most of the changes done to Zsh project are specific to the
> usage of popen3 ().
>
> *   4. Sourced from and version:*
>
> *http://linux.softpedia.com/get/Programming/Interpreters/Zsh-1183.shtml*(4.2.6 version).
>
> Thanks,
> Karthik.
>
>
>
>  *Peter Stephenson <pws@csr.com>*
>
> 04/29/2008 03:41 PM
>   To
> Karthikeyan.Balu@symbian.com  cc
>   Subject
> Re: Zsh migrated to Symbian OS - Contributing back details.
>
>
>
>
> Hi,
>
> Thanks for the note... we'd certainly be interested in integrating your
> changes back to zsh.  This would have to be the latest development version
> (4.3) since there isn't any active development of older branches.
>
> As you no doubt know, most of the discussion about details goes on on the
> zsh-workers mailing list.  We'd be happy to look at patches to allow
> compilation on Symbian.  Putting appropriate #ifdef's in the code is
> probably the easy bit; setting up the configuration in the first place is
> perhaps more difficult.  Are you using a cross-compiler?  This probably
> makes things difficult, since zsh has to probe various bits of run-time
> behaviour when configure is run.  We would probably need to look at other
> ways of providing the necessary information.  Alternatively, I suppose we
> might be able to supply a library of pre-built configuration headers for
> special cases like this.
>
> Anyway, if you let the mailing list know the sort of changes you have we
> can start to think about the best way of integrating them.
>
> Regards,
> pws
>
> --
> 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
>
>
> **********************************************************************
> Symbian Software Ltd is a company registered in England and Wales with
> registered number 4190020 and registered office at 2-6 Boundary Row,
> Southwark, London, SE1 8HP, UK. This message is intended only for use by the
> named addressee and may contain privileged and/or confidential information.
> If you are not the named addressee you should not disseminate, copy or take
> any action in reliance on it. If you have received this message in error
> please notify postmaster@symbian.com and delete the message and any
> attachments accompanying it immediately. Neither Symbian nor any of its
> Affiliates accepts liability for any corruption, interception, amendment,
> tampering or viruses occurring to this message in transit or for any message
> sent by its employees which is not in compliance with Symbian corporate
> policy.
> **********************************************************************



Hi Peter,

To introduce myself, Iam a software engineer  working  for a company called
Symbian (www.symbian.com) in Bangalore, India.

I have been subscribed to zsh-workers since long time and have seen lots of
your postings related to submissions/defect fixes/technical discussions, so
thought you would be my better point of contact for my interest.

Actually, i was involved in a project of Symbian where we had migrated Zsh
onto Symbian OS sourced from the opensource Zsh project (
http://linux.softpedia.com/get/Programming/Interpreters/Zsh-1183.shtml),
now we are interested to look at the possibilities of contributing back our
changes to the Zsh project, for which i would like to know the process
involved from the Zsh project perspective and moving forward we can discuss
about the changes and the list of features that we were not able to support
due to certain limitations.

Iam sorry if you are not the right person for this query, please do redirect
me to the person who would be of better help in that case.

PS: This is just an initial mail to inform about our work, we can further
discuss in detail.

Thanks,
Karthik.

[-- Attachment #2: Type: text/html, Size: 8647 bytes --]

^ permalink raw reply	[relevance 0%]

* Re: Zsh migrated to Symbian OS - Contributing back details.
  2008-07-16 12:27  0%   ` Karthik B
@ 2008-07-17  5:17  0%     ` Karthik B
  0 siblings, 0 replies; 200+ results
From: Karthik B @ 2008-07-17  5:17 UTC (permalink / raw)
  To: zsh-workers; +Cc: pws, Karthikeyan.Balu

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

Hi,

Please reply with your suggestions for contribution.

Here are my views,

1. Contributing back to the current development brach of the Zsh project.
    - This is just by getting our changes under a compiler switch specific
to Symbian, may be __SYMBIAN32__, then making sure the code compiles and
works as expected for both the platforms. Symbian code structure is
different from the Zsh project, hence we need to change this to align with
Zsh project.
    -  Any update to the Symbian specific source can only be performed by
using the available Symbian SDK for Windows as we currently don't have one
for Linux and there is no solution yet to emulate Symbian OS on Linux.

2. Contribution categorised by platform, having a separate code base for
Symbian.
   - This is just by pushing our code with the current code structure, the
integration to this branch would be an extra effort.

3. Zsh project advertising the source hosted in Symbian Developer Network.
    - This doesn't need any contribution to the Zsh project, the integration
activities will have to be maintained by Symbian.

Please post your views about any other sort of possibilities.

Thanks,
Karthik.

On Wed, Jul 16, 2008 at 5:57 PM, Karthik B <karthikeyan.balu@gmail.com>
wrote:

> I understand that the changes have to be merged with the current
> development branch of the Zsh project, meanwhile i would be glad to answer
> any of your specific queries.
>
> Karthik.
>
>
> On Wed, Jul 16, 2008 at 10:53 AM, <Karthikeyan.Balu@symbian.com> wrote:
>
>>
>> Hi All,
>> Further to the below mail from Peter Stephenson, this would give a broad
>> overview of the changes to Zsh project during its migration onto Symbian OS.
>>
>> Let me know how can we move further on this activity.
>>
>> *Symbian OS supports Zsh*
>>
>>
>> *   1.        Overview:*
>> The Open source Zsh was migrated onto Symbian OS using PIPS (PIPS is POSIX
>> on Symbian OS) libraries, the Standard set of POSIX libraries on Symbian.
>>
>> None of the Zsh project defects have been fixed during this activity and
>> all the changes are to support Zsh on Symbian OS.
>>
>> * 2.        Limitations:*
>> This section elaborates the features that were not supported due to the
>> limitations in PIPS/Symbian.
>> *a. Signal related features are not supported -*
>> PIPS currently don't support Signals, because of which features like
>> stopping, terminating a process are not supported. Signals are being
>> implemented and this can be supported soon.
>>
>> *   3.        Key modifications to open source Zsh:*
>>       a.        Make changes
>> The build and the project specification files for Symbian reflect the
>> .Makefile of Zsh project. The tools of Symbian will use these specifications
>> to generate the binary.
>>
>>       b.        Source changes
>> Most of the changes during the migration have been blocked under
>> __SYMBIAN32__ which is defined by the tools.
>>
>> As Symbian doesn't support two phase construction of a process, popen3()
>> an API which creates a process with the image and gets three file
>> descriptors corresponding to the stdio of the child process is used instead
>> of fork() and exec ().  Most of the changes done to Zsh project are specific
>> to the usage of popen3 ().
>>
>> *   4. Sourced from and version:*
>>
>> *http://linux.softpedia.com/get/Programming/Interpreters/Zsh-1183.shtml*(4.2.6 version).
>>
>> Thanks,
>> Karthik.
>>
>>
>>
>>  *Peter Stephenson <pws@csr.com>*
>>
>> 04/29/2008 03:41 PM
>>   To
>> Karthikeyan.Balu@symbian.com  cc
>>   Subject
>> Re: Zsh migrated to Symbian OS - Contributing back details.
>>
>>
>>
>>
>> Hi,
>>
>> Thanks for the note... we'd certainly be interested in integrating your
>> changes back to zsh.  This would have to be the latest development version
>> (4.3) since there isn't any active development of older branches.
>>
>> As you no doubt know, most of the discussion about details goes on on the
>> zsh-workers mailing list.  We'd be happy to look at patches to allow
>> compilation on Symbian.  Putting appropriate #ifdef's in the code is
>> probably the easy bit; setting up the configuration in the first place is
>> perhaps more difficult.  Are you using a cross-compiler?  This probably
>> makes things difficult, since zsh has to probe various bits of run-time
>> behaviour when configure is run.  We would probably need to look at other
>> ways of providing the necessary information.  Alternatively, I suppose we
>> might be able to supply a library of pre-built configuration headers for
>> special cases like this.
>>
>> Anyway, if you let the mailing list know the sort of changes you have we
>> can start to think about the best way of integrating them.
>>
>> Regards,
>> pws
>>
>> --
>> 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
>>
>>
>> **********************************************************************
>> Symbian Software Ltd is a company registered in England and Wales with
>> registered number 4190020 and registered office at 2-6 Boundary Row,
>> Southwark, London, SE1 8HP, UK. This message is intended only for use by the
>> named addressee and may contain privileged and/or confidential information.
>> If you are not the named addressee you should not disseminate, copy or take
>> any action in reliance on it. If you have received this message in error
>> please notify postmaster@symbian.com and delete the message and any
>> attachments accompanying it immediately. Neither Symbian nor any of its
>> Affiliates accepts liability for any corruption, interception, amendment,
>> tampering or viruses occurring to this message in transit or for any message
>> sent by its employees which is not in compliance with Symbian corporate
>> policy.
>> **********************************************************************
>
>
>
> Hi Peter,
>
> To introduce myself, Iam a software engineer  working  for a company called
> Symbian (www.symbian.com) in Bangalore, India.
>
> I have been subscribed to zsh-workers since long time and have seen lots of
> your postings related to submissions/defect fixes/technical discussions, so
> thought you would be my better point of contact for my interest.
>
> Actually, i was involved in a project of Symbian where we had migrated Zsh
> onto Symbian OS sourced from the opensource Zsh project (
> http://linux.softpedia.com/get/Programming/Interpreters/Zsh-1183.shtml),
> now we are interested to look at the possibilities of contributing back our
> changes to the Zsh project, for which i would like to know the process
> involved from the Zsh project perspective and moving forward we can discuss
> about the changes and the list of features that we were not able to support
> due to certain limitations.
>
> Iam sorry if you are not the right person for this query, please do
> redirect me to the person who would be of better help in that case.
>
> PS: This is just an initial mail to inform about our work, we can further
> discuss in detail.
>
> Thanks,
> Karthik.
>
>
>

[-- Attachment #2: Type: text/html, Size: 10505 bytes --]

^ permalink raw reply	[relevance 0%]

* Re: Weird exit caused in a trap DEBUG which sources a file.
  @ 2008-08-01 15:21  3%         ` Rocky Bernstein
    0 siblings, 1 reply; 200+ results
From: Rocky Bernstein @ 2008-08-01 15:21 UTC (permalink / raw)
  To: zsh-workers

Comments in line.

On Fri, Aug 1, 2008 at 9:37 AM, Peter Stephenson <pws@csr.com> wrote:
> On Fri, 1 Aug 2008 08:29:29 -0400
> "Rocky Bernstein" <rocky.bernstein@gmail.com> wrote:
>> Looks like the crucial change that makes zsh 4.3.5-dev and current SVN
>> sources fail is an extra source after the trap DEBUG:
>
> Thanks, this is what I needed.

No, thank you! I just tried the patch and it works fine.

So there's no mystery. I've been porting the bash debugger code to
zsh. So far, print/eval, stepping and some stack frame commands work.
But this is far from ready for general consumption.

Part of this is a more general effort at writing about POSIX shells
which I give maybe a 50% chance of happening.

>
> The source code wasn't handling the variable that indicates a trap has told
> us to return from a function properly.  The variable is only primed for
> action if negative.  That's the init.c hunk.
>
> The signals.c hunk is to save and restore trapreturn for nested trap
> handlers.  I'm not sure it's necessary; I am sure it's not wrong and
> prevents hostages to fortune.

Not sure the additional code is necessary or that nested trap handlers
are necessary?  I'm pretty sure you mean the former. Nested trap
handlers are useful.

>
> The hairy trap tests still pass, which is good; it would be better to add
> this as a test, too, which shouldn't be too hard as there's nothing here
> that depends on external behaviour.
>
> I've documented the variable trapreturn better.

Thanks. It seems weird that trapreturn is is initialised to -1 for a
function trap and
 -2 for a non-function trap and decremented for subsequent function
calls. Because this means that trapreturn for a for a function trap
that calls a function would have the same value as for a non-function
trap.


>
> Index: Src/exec.c
> ===================================================================
> RCS file: /cvsroot/zsh/zsh/Src/exec.c,v
> retrieving revision 1.135
> diff -u -r1.135 exec.c
> --- Src/exec.c  31 Jul 2008 08:44:21 -0000      1.135
> +++ Src/exec.c  1 Aug 2008 13:29:06 -0000
> @@ -64,7 +64,23 @@
>  /**/
>  mod_export int errflag;
>
> -/* Status of return from a trap */
> +/*
> + * Status of return from a trap.
> + * This is only active if we are inside a trap, else its value
> + * is irrelevant.  It is initialised to -1 for a function trap and
> + * -2 for a non-function trap and if negative is decremented as
> + * we go deeper into functions and incremented as we come back up.
> + * The value is used to decide if an explicit "return" should cause
> + * a return from the caller of the trap; it does this by setting
> + * trapreturn to a status (i.e. a non-negative value).
> + *
> + * In summary, trapreturn is
> + * - zero unless we are in a trap
> + * - negative in a trap unless it has triggered.  Code uses this
> + *   to detect an active trap.
> + * - non-negative in a trap once it was triggered.  It should remain
> + *   non-negative until restored after execution of the trap.
> + */
>
>  /**/
>  int trapreturn;
> Index: Src/init.c
> ===================================================================
> RCS file: /cvsroot/zsh/zsh/Src/init.c,v
> retrieving revision 1.87
> diff -u -r1.87 init.c
> --- Src/init.c  31 Jul 2008 08:44:21 -0000      1.87
> +++ Src/init.c  1 Aug 2008 13:29:06 -0000
> @@ -191,7 +191,7 @@
>            exit(lastval);
>        if (((!interact || sourcelevel) && errflag) || retflag)
>            break;
> -       if (trapreturn) {
> +       if (trapreturn >= 0) {
>            lastval = trapreturn;
>            trapreturn = 0;
>        }
> Index: Src/signals.c
> ===================================================================
> RCS file: /cvsroot/zsh/zsh/Src/signals.c,v
> retrieving revision 1.47
> diff -u -r1.47 signals.c
> --- Src/signals.c       31 Jul 2008 08:44:21 -0000      1.47
> +++ Src/signals.c       1 Aug 2008 13:29:06 -0000
> @@ -1085,6 +1085,7 @@
>     int trapret = 0;
>     int obreaks = breaks;
>     int oretflag = retflag;
> +    int otrapreturn = trapreturn;
>     int isfunc;
>     int traperr;
>
> @@ -1183,6 +1184,7 @@
>        trapret = trapreturn + 1;
>     }
>     traperr = errflag;
> +    trapreturn = otrapreturn;
>     execrestore();
>     lexrestore();
>
>
> --
> 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
>


^ permalink raw reply	[relevance 3%]

* Re: Weird exit caused in a trap DEBUG which sources a file.
  @ 2008-08-05 11:18  4%                     ` Rocky Bernstein
  0 siblings, 0 replies; 200+ results
From: Rocky Bernstein @ 2008-08-05 11:18 UTC (permalink / raw)
  To: zsh-workers

On Sun, Aug 3, 2008 at 7:50 AM, Peter Stephenson
<p.w.stephenson@ntlworld.com> wrote:
> On Sun, 3 Aug 2008 07:28:37 -0400
> "Rocky Bernstein" <rocky.bernstein@gmail.com> wrote:
>> I do not see why this is semantically complicated when the trap DEBUG
>> occurs before the statement it refers to is run.  Can you give a very
>> specific example of something you feel is tricky?
>
> You mean that the new return value from a DEBUG trap should skip
> everything that would happen until the next trap is run?

Yes.

> That's kind of
> what I ended up saying, and that's well-defined.

Ok. I misunderstood. My mistake. I misremembered bash. The way it
currently works is that a return code 1 from a trap causes a skip. See
http://bashdb.sourceforge.net/bashdb.html#SEC36 for a description of
the debugger command.

Right now in bash returning 2 means immediate return. However, it
might be slick to have a negative value skip that many levels of
return. For a debugger this isn't strictly necessary because the
debugger can keep track of the number of levels to return. However for
those who write small custom trap DEBUG code (which right now is
probably anyone who uses it) it can be a nice convenience.

>
>> David Korn made a mistake and he says so.  Chet Ramey also says he
>> changed the behavior because he thought it a mistake too. zsh copied
>> the mistake. The only claim I've heard for keeping the mistake is
>> compatibility with previous versions of zsh. However right now there
>> is no evidence that anyone is making use of this mistake that would
>> not be happier if it weren't made.
>
> Well, there's no actual evidence it won't cause the toppling of
> governments in small Himalayan kingdoms, either.  We probably won't find
> out unless we change the default.  I agree setting DEBUG_BEFORE_CMD is
> generally more useful, but you're the only user of the feature I've
> heard from at all, and I still don't know if there's anything that makes
> it hard to set the feature explicitly, in either direction (and at least
> trying to set it in your script is the only way to guarantee the correct
> behaviour).

Well of course right now I do that, because I have to. :-)

As for ensuring correct behavior, because the of the dearth of bugs,
clearly I'll  have to put some tests in to make sure features and bug
fixes are there. I've been through this before. I probably won't
explicitly test for trap DEBUG but rather may check $ZSH_VERSION.

>From my side it would be nice if the debuggers in bash, ksh and zsh
shared the same code. But I agree all of this is small stuff.

>
> If you're going to produce a working debugger that requires this to be
> set then I'll be very tempted to change the default, since a generally
> available working debugger is extremely useful.

There are lots of other useful changes I see happening so if I have a
limit, I'd probably want to save that for some of the other things.
Probably the next thing on the list is a way to get subshell levels.
SHLVL check zsh/bash invocations, but one would like the same thing
for subshells. (In bash it is called $BASH_SUBSHELL) I suspect this is
pretty straightforward to do.

Instead my argument was based on the fact that it's the Right Thing To
Do (tm). There are a number of little benefits one gets by doing the
right thing.  Above I  gave one small example.

Here are some other small examples:

Consider this thread on "How to debug a running process"
http://groups.google.com/group/comp.unix.shell/browse_thread/thread/87c3f728476ed29d/5e056069f30efa35
 which was written before I was aware of the current zsh behavior.

Someone who reads that and decides to do follow  will have to know and
remember to set the ZSH-specific option to be more useful.

RIght now I'm in early stages of writing a book which covers program
development in POSIX shell. It will cover trap DEBUG, but I suppose
I'd also have to mention the ZSH specific option. Do we want people
reminded that this mistake was made and that ZSH makes its presence
known by still setting doing this in a less helpful way?

"trap DEBUG" is not currently mandated in POSIX 1003.1. However  David
Korn has said that a number of the features that are common in the
POSIX-compatible shells should eventually find their way into some
more aggressive spec. Making zsh like bash and ksh will only serve to
increase the likelihood that when this happens, trap DEBUG will be
there and done in the right way.

>
> Any definite views from anyone else are welcome.
>

As before with bash and ksh, resounding silence against and one or two
people who've weighed in and said it seems like a good thing.  I think
it safe to say this is analogous to making the mistake 0/0=1. Many
people won't notice or care or feel that strongly about. Personally
having been annoyed 3 times by it, so it is irksome to me. Something
like 8 years ago, I mentioned it to David Korn and he quickly
acknowledged and changed it.

Ok. I'll stop and I'll try to resist from written any more. Far more
has been written about this than the possibly 1 character change to
set this correctly. And by the way, if the current default is kept, it
probably needs to be set it when "emulate sh" or "emulate bash" is in
effect.


^ permalink raw reply	[relevance 4%]

* Re: PATCH: skip command from debug trap
  @ 2008-08-06 19:09  3%         ` Rocky Bernstein
  0 siblings, 0 replies; 200+ results
From: Rocky Bernstein @ 2008-08-06 19:09 UTC (permalink / raw)
  To: Peter Stephenson; +Cc: Zsh hackers list

On Wed, Aug 6, 2008 at 1:54 PM, Peter Stephenson <pws@csr.com> wrote:
> "Rocky Bernstein" wrote:
>> Others have noted the challenges in adding an option to return. Making
>> the semantics of the return statement already more complicated doesn't
>> seem wise.
>
> However, as I've pointed out I can guarantee to make that compatible
> with the current shell, and at the same time make return work as in
> other shells (apart from the math eval of the numeric argument, which
> would cause an error in other shells anyway) which it doesn't at the
> moment.  Once we have the latter adding an option is trivial.  Adding an
> option to a builtin is about the simplest thing it's possible to do.

Ok. Adding an option to the return builtin is simple, even if there is
no other shell that I know of that currently does this.

But given the choice of adding
   1) an option in the return statement everywhere that is specific to
just "trap DEBUG" or
   2) specifying what specific numbers do when on a return from "trap DEBUG",

isn't 2) simpler and more consistent with programming in shell
languages work? I take it as a given that every function or command is
going to have error codes that are somewhat arbitrary and that I'm not
going to intuit.

For example POSIX 1003.1 specifies that grep returns 1 when no lines
were selected and greater than 1 if there was an error, and for xargs
it says return code 126 means "The utility specified by *utility* was
found but could not be invoked. Seems a bit arbitrary and not
something I am likely to remember past my current need. But I think
someone working with shells is used to the idea that different
functions or commands return numbers indicate certain things.


>
>> A couple other approaches are setting a variable or calling a routine.
>>  For example  "trap_return --skip"  or TRAP_RETURN="skip"
>
> On the other hand, I can't make this compatible with existing versions
> (the standard namespace pollution problem).
>
> I don't like adding a new builtin just for this.
>
> The variable version is doable, we've done similar things before.  You'd
> have to note that it didn't force return from the current environment,
> either the inline trap or TRAPDEBUG.  You'd also have to be prepared for
> the shell to manipulate the variable behind your back, else you'd run
> into problems with having it set on future traps.  It's not disastrous,
> but I'm not convinced this is simpler.  In fact, at the moment it seems
> to me manifestly much more complicated.
>
> --
> 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
>


^ permalink raw reply	[relevance 3%]

* Re: DEBUG_CMD_LINE (Was Re: PATCH: skip command from debug trap)
  @ 2008-08-07 10:40  3%       ` Stephane Chazelas
  2008-08-07 12:06  0%         ` Peter Stephenson
  0 siblings, 1 reply; 200+ results
From: Stephane Chazelas @ 2008-08-07 10:40 UTC (permalink / raw)
  To: Peter Stephenson; +Cc: Zsh hackers list

On Thu, Aug 07, 2008 at 11:14:38AM +0100, Peter Stephenson wrote:
[...]
> > BTW, shouldn't PROMPT_SUBST be enabled by default in sh and ksh
> > emulation?
> 
> If they do that, then presumably yes.
[...]

It's required by SUSv3 for non-priviledged users for systems
supporting the User Portability Utilities option (so include the
sh of Unix conformant systems, but not necessarily POSIX
conformant ones I suppose).

> > Is there a way to run shell code (other than assignments and
> > arithmetic expansion) upon the expansion of PS4? I thought of
> > /(e:code:), but in scalar context I couldn't find a way for
> > globbing to be performed.
> 
> I don't see how this differs from the stuff in $(...), which is treated as
> a complete command line.  Do you mean you need code to run within
> the current shell?
[...]

Yes, sorry, I forgot the most important part of my sentence,
"without forking a subshell", or as you put it: "within
the current shell" but I suppose it's not easy to determine what
the current shell is when PS4 is expanded (especially in
pipe-lines).

The idea behind it being another way to have a DEBUG trap.

-- 
Stéphane


^ permalink raw reply	[relevance 3%]

* Re: DEBUG_CMD_LINE (Was Re: PATCH: skip command from debug trap)
  2008-08-07 10:40  3%       ` Stephane Chazelas
@ 2008-08-07 12:06  0%         ` Peter Stephenson
  2008-08-07 13:37  0%           ` Rocky Bernstein
  0 siblings, 1 reply; 200+ results
From: Peter Stephenson @ 2008-08-07 12:06 UTC (permalink / raw)
  To: Zsh hackers list

On Thu, 7 Aug 2008 11:40:30 +0100
Stephane Chazelas <Stephane_Chazelas@yahoo.fr> wrote:
> On Thu, Aug 07, 2008 at 11:14:38AM +0100, Peter Stephenson wrote:
> [...]
> > > BTW, shouldn't PROMPT_SUBST be enabled by default in sh and ksh
> > > emulation?
> > 
> > If they do that, then presumably yes.
> [...]
> 
> It's required by SUSv3 for non-priviledged users for systems
> supporting the User Portability Utilities option (so include the
> sh of Unix conformant systems, but not necessarily POSIX
> conformant ones I suppose).

Looks like it's already set up for ksh.  It should probably be turned on
for other Bourne-style shells.  I suppose it wasn't done originally because
at the time that meant old-fashioned, fairly limited Bourne shells, but
nowadays it doesn't.  "promptvars" is on by default in bash.

Index: Doc/Zsh/options.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Zsh/options.yo,v
retrieving revision 1.61
diff -u -r1.61 options.yo
--- Doc/Zsh/options.yo	12 Jun 2008 13:45:05 -0000	1.61
+++ Doc/Zsh/options.yo	7 Aug 2008 12:04:46 -0000
@@ -1009,7 +1009,7 @@
 )
 pindex(PROMPT_SUBST)
 cindex(prompt, parameter expansion)
-item(tt(PROMPT_SUBST) <K>)(
+item(tt(PROMPT_SUBST) <K> <S>)(
 If set, em(parameter expansion), em(command substitution) and
 em(arithmetic expansion) are performed in prompts.  Substitutions
 within prompts do not affect the command status.
Index: Src/options.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/options.c,v
retrieving revision 1.43
diff -u -r1.43 options.c
--- Src/options.c	31 Jul 2008 08:44:21 -0000	1.43
+++ Src/options.c	7 Aug 2008 12:04:47 -0000
@@ -198,7 +198,7 @@
 {{NULL, "promptcr",	      OPT_ALL},			 PROMPTCR},
 {{NULL, "promptpercent",      OPT_NONBOURNE},		 PROMPTPERCENT},
 {{NULL, "promptsp",	      OPT_ALL},			 PROMPTSP},
-{{NULL, "promptsubst",	      OPT_KSH},			 PROMPTSUBST},
+{{NULL, "promptsubst",	      OPT_BOURNE},		 PROMPTSUBST},
 {{NULL, "pushdignoredups",    OPT_EMULATE},		 PUSHDIGNOREDUPS},
 {{NULL, "pushdminus",	      OPT_EMULATE},		 PUSHDMINUS},
 {{NULL, "pushdsilent",	      0},			 PUSHDSILENT},

-- 
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


^ permalink raw reply	[relevance 0%]

* Re: DEBUG_CMD_LINE (Was Re: PATCH: skip command from debug trap)
  2008-08-07 12:06  0%         ` Peter Stephenson
@ 2008-08-07 13:37  0%           ` Rocky Bernstein
  0 siblings, 0 replies; 200+ results
From: Rocky Bernstein @ 2008-08-07 13:37 UTC (permalink / raw)
  To: Zsh hackers list

On Thu, Aug 7, 2008 at 8:06 AM, Peter Stephenson <pws@csr.com> wrote:
> On Thu, 7 Aug 2008 11:40:30 +0100
> Stephane Chazelas <Stephane_Chazelas@yahoo.fr> wrote:
>> On Thu, Aug 07, 2008 at 11:14:38AM +0100, Peter Stephenson wrote:
>> [...]
>> > > BTW, shouldn't PROMPT_SUBST be enabled by default in sh and ksh
>> > > emulation?
>> >
>> > If they do that, then presumably yes.
>> [...]
>>
>> It's required by SUSv3 for non-priviledged users for systems
>> supporting the User Portability Utilities option (so include the
>> sh of Unix conformant systems, but not necessarily POSIX
>> conformant ones I suppose).
>
> Looks like it's already set up for ksh.  It should probably be turned on
> for other Bourne-style shells.  I suppose it wasn't done originally because
> at the time that meant old-fashioned, fairly limited Bourne shells, but
> nowadays it doesn't.  "promptvars" is on by default in bash.

Perhaps it is time to change the default in zsh as well. I don't think
it  ikely someone sets PS4 with backticks and $() and so on and
expects to see exactly those strings in trace output.

However if older zsh compatibility is a concern here, the usual thing
to do is warn that the option is changing, and after a release or so
make the change.

>
> Index: Doc/Zsh/options.yo
> ===================================================================
> RCS file: /cvsroot/zsh/zsh/Doc/Zsh/options.yo,v
> retrieving revision 1.61
> diff -u -r1.61 options.yo
> --- Doc/Zsh/options.yo  12 Jun 2008 13:45:05 -0000      1.61
> +++ Doc/Zsh/options.yo  7 Aug 2008 12:04:46 -0000
> @@ -1009,7 +1009,7 @@
>  )
>  pindex(PROMPT_SUBST)
>  cindex(prompt, parameter expansion)
> -item(tt(PROMPT_SUBST) <K>)(
> +item(tt(PROMPT_SUBST) <K> <S>)(
>  If set, em(parameter expansion), em(command substitution) and
>  em(arithmetic expansion) are performed in prompts.  Substitutions
>  within prompts do not affect the command status.
> Index: Src/options.c
> ===================================================================
> RCS file: /cvsroot/zsh/zsh/Src/options.c,v
> retrieving revision 1.43
> diff -u -r1.43 options.c
> --- Src/options.c       31 Jul 2008 08:44:21 -0000      1.43
> +++ Src/options.c       7 Aug 2008 12:04:47 -0000
> @@ -198,7 +198,7 @@
>  {{NULL, "promptcr",          OPT_ALL},                  PROMPTCR},
>  {{NULL, "promptpercent",      OPT_NONBOURNE},           PROMPTPERCENT},
>  {{NULL, "promptsp",          OPT_ALL},                  PROMPTSP},
> -{{NULL, "promptsubst",       OPT_KSH},                  PROMPTSUBST},
> +{{NULL, "promptsubst",       OPT_BOURNE},               PROMPTSUBST},
>  {{NULL, "pushdignoredups",    OPT_EMULATE},             PUSHDIGNOREDUPS},
>  {{NULL, "pushdminus",        OPT_EMULATE},              PUSHDMINUS},
>  {{NULL, "pushdsilent",       0},                        PUSHDSILENT},
>
> --
> 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
>


^ permalink raw reply	[relevance 0%]

* Re: Weird error message when using bash or ksh form of array initialization
  @ 2008-08-25  0:12  4%   ` Rocky Bernstein
  0 siblings, 0 replies; 200+ results
From: Rocky Bernstein @ 2008-08-25  0:12 UTC (permalink / raw)
  To: Zsh hackers list

Thanks folks for the explanation of what's happening.

It kind of strikes me as not a good language design when entering
similar valid constructs from a couple of other POSIX-compatible
shells causes such a damaging misinterpretation to take place. You say:

  typeset -a foo=()
  typeset -a sources

defines "typeset", "-a" and "foo=" as functions? Wow! I'd be hard
pressed to find many would would find that an advantage.

It reminds me of this example sometimes mentioned in the context of
Fortran. If one writes:

  DO 10 I=1.5
instead of
  DO 10 I=1,5

both are valid but mean very different things. The first sets variable
DO10I to 1.5 in one of the weird, but acceptable, ways. The second is
probably a much more common Fortran statement to start a loop.

I mention this because when you read about this with respect to
Fortran, it is not generally given in the context how this distinction
is a interesting thing that programmer should be aware of, or what a
great language Fortran is because it allows such things to be
confused. Rather it is given as a consequence of the weakness of some
language-design decisions.

In the context of zsh, we have one of the zsh function forms:

   word ... () [ term ] command

competing (and winning) with this erroneous statement:
   typeset -a xx=()

Given that the relevant function form used is zsh specific, it doesn't
strike me that the convenience this form allows outweighs the damage
of the consequences of its inadvertent misuse above.

Is it really that helpful to allow define several functions with the
same body? If so, there are other ways to do this.

Here are some simple solutions to make what's happening clearer, reduce
confusion and give a better error message.
   * change "command" to "compound command" above.
   * disallow the shared-body multiple function definition, i.e.
remove ... above
   * disallow that specific kind of function in ksh and bash emulation form
      since it isn't POSIX 1003.1 anyway.

Comments in line, but I think they say pretty much the same as above.

On Sun, Aug 24, 2008 at 4:32 PM, Bart Schaefer
<schaefer@brasslantern.com> wrote:
> On Aug 24, 12:05pm, Rocky Bernstein wrote:
> }
> } When I run this (erroneous?) program:
> }
> }   typeset -a fd=()
>
> Zsh does not support that syntax;

I realize that. And IMHO I think it should support it when bash or ksh
emulation is in force ;-). But more troublesome is the fact that it gives
an error message that is probably going to be a bit puzzling to most
people who know ksh and bash, but zsh less so.

> typeset is a command, not a keyword,
> so its arguments are parsed like normal shell words, not like parameter
> assignments.

Um. Okay. "typeset" is not a reserved word in POSIX shell, bash or ksh
either. That in of itself is not a big problem. It is when it is combined
with this zsh-specific function definition form:

   word ... () [ term ] command

that we get bad karma. The above is not a POSIX 1003.1 function
form. The following is:

   fname() compound-command[io-redirect ...]
                ^^^^^^^^^^^^^

So changing "command" above to "compound command" would be enough to
give a more meaningful error message. There are other possibilities.

>
> As Mikael pointed out, the above syntax defines three functions, named
> "typeset", "-a", and "fd=", because the shell word "()" is a token that
> denotes that a function name precedes it and a function body follows.
>
> Quoting it as 'fd=()' like Mikael suggested would prevent the function
> definition interpretation, but produces the error "can't assign initial
> value for array".

I think it interesting that like zsh, Ruby does in fact does allow
function (or more appropriately, methods) to have a '=' suffix. But
where Ruby differs is that this allows for a semantic simplification
by allowing one to write something that looks like an assignment
statement when it is in fact a method call (usually setting an
instance variable).  Furthermore, there is syntactic sugar to allows
spaces around the equals. So in contrast, zsh allows  function
definitions with = suffixes, but other parts of the zsh language work
to not allow it the benefits it might otherwise have and that, for
example, that Ruby exploits.


^ permalink raw reply	[relevance 4%]

* [zsh] ant completion broken
@ 2008-08-31  9:23  3% David LE BOURGEOIS
  2008-08-31 13:30  0% ` Peter Stephenson
  0 siblings, 1 reply; 200+ results
From: David LE BOURGEOIS @ 2008-08-31  9:23 UTC (permalink / raw)
  To: zsh-workers

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

Hello.

I wish to report a problem about zsh-4.3.6, concerning the _ant
completion file. The zsh-workers/24129 fix breaks the ant completion for
target name.

In fact, the regular expression used in sed contains two spaces. And
since, in most of XML tags, the property separator is a single space,
the completion fails for many of build.xml files.

As a fix, deleting one of the two spaces from the regular expression
makes the ant completion working again. Also, replacing the remaining
single space by the POSIX [[:blank:]] pattern might provide a safer
parsing of the target name.

So, I send a patch file as attachment that fixes the _ant file.

Thank you for considering my report.

Regards.

PS: Does it matter if I ask to be Cc:ed for getting all replies?

-- 
David LE BOURGEOIS
E-mail : david.lebourgeois (at) free.fr
XMPP   : david.lebourgeois (at) jabber.fr
PGP    : http://david.lebourgeois.free.fr/pgp/

[-- Attachment #2: _ant.patch --]
[-- Type: text/plain, Size: 638 bytes --]

--- zsh-4.3.6/Completion/Unix/Command/_ant	2007-11-29 10:45:58.000000000 +0100
+++ zsh-4.3.6/Completion/Unix/Command/_ant.new	2008-08-31 10:42:55.000000000 +0200
@@ -10,7 +10,7 @@
     importedfiles=( $(sed -n "s/ *<import[^>]* file=[\"']\([^\"']*\)[\"'].*/\1/p" < $1) )
     # Tweaked to omit targets beginning with "-" that can't
     # be invoked from the command line; see zsh-workers/24129.
-    sed -n "s/ *<target[^>]*  name=[\"']\([^-][^\"']*\)[\"'].*/\1/p" $1
+    sed -n "s/ *<target[^>]*[[:blank:]]name=[\"']\([^-][^\"']*\)[\"'].*/\1/p" $1
     if (( $#importedfiles )) ; then
 	( cd $1:h
     	for file in $importedfiles ; do

[-- Attachment #3: _ant.patch.asc --]
[-- Type: text/plain, Size: 189 bytes --]

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)

iD4DBQBIumI6fGpn1bRTyEYRAhyBAKC3AWK5df2OveanWP88C+1JIAOyXwCXbCnq
sdJLBChTN6vYYuveJ+byag==
=diPn
-----END PGP SIGNATURE-----

^ permalink raw reply	[relevance 3%]

* Re: [zsh] ant completion broken
  2008-08-31  9:23  3% [zsh] ant completion broken David LE BOURGEOIS
@ 2008-08-31 13:30  0% ` Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2008-08-31 13:30 UTC (permalink / raw)
  To: zsh-workers; +Cc: David LE BOURGEOIS

On Sun, 31 Aug 2008 11:23:34 +0200
David LE BOURGEOIS <david.lebourgeois@free.fr> wrote:
> I wish to report a problem about zsh-4.3.6, concerning the _ant
> completion file. The zsh-workers/24129 fix breaks the ant completion for
> target name.
> 
> In fact, the regular expression used in sed contains two spaces. And
> since, in most of XML tags, the property separator is a single space,
> the completion fails for many of build.xml files.
> 
> As a fix, deleting one of the two spaces from the regular expression
> makes the ant completion working again. Also, replacing the remaining
> single space by the POSIX [[:blank:]] pattern might provide a safer
> parsing of the target name.

I'd prefer just deleting one of the spaces if that works OK, since zsh
has historically worked with some pretty ancient versions of sed.  I'm
not sure this is necessary, just can't prove it isn't, so if the
following works...

Index: Completion/Unix/Command/_ant
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/Unix/Command/_ant,v
retrieving revision 1.16
diff -u -r1.16 _ant
--- Completion/Unix/Command/_ant	29 Nov 2007 09:49:43 -0000	1.16
+++ Completion/Unix/Command/_ant	31 Aug 2008 13:28:06 -0000
@@ -10,7 +10,7 @@
     importedfiles=( $(sed -n "s/ *<import[^>]* file=[\"']\([^\"']*\)[\"'].*/\1/p" < $1) )
     # Tweaked to omit targets beginning with "-" that can't
     # be invoked from the command line; see zsh-workers/24129.
-    sed -n "s/ *<target[^>]*  name=[\"']\([^-][^\"']*\)[\"'].*/\1/p" $1
+    sed -n "s/ *<target[^>]* name=[\"']\([^-][^\"']*\)[\"'].*/\1/p" $1
     if (( $#importedfiles )) ; then
 	( cd $1:h
     	for file in $importedfiles ; do


-- 
Peter Stephenson <p.w.stephenson@ntlworld.com>
Web page now at http://homepage.ntlworld.com/p.w.stephenson/


^ permalink raw reply	[relevance 0%]

* Re: preventing the leading space in process substitution
       [not found]             ` <6cd6de210809101151q4d0a2a35p452fe656e0ee7dd5@mail.gmail.com>
@ 2008-09-11 12:00  0%           ` Peter Stephenson
  2008-09-11 12:44  0%             ` Rocky Bernstein
  0 siblings, 1 reply; 200+ results
From: Peter Stephenson @ 2008-09-11 12:00 UTC (permalink / raw)
  To: Zsh Hackers' List

On Wed, 10 Sep 2008 14:51:04 -0400
"Rocky Bernstein" <rocky.bernstein@gmail.com> wrote:
> Also (mentioned previously), I think the multiple function definition with a
> single body syntax should be removed when sh or bash emulation is in effect.
> Those POSIX shell variants neither support this form and having it around
> allows it to get confused causing a more obscure error message when one
> writes "typeset -a foo=(list)" which is valid in those other POSIX shell
> variants.

(Moved to zsh-workers.)

That's probably useful; it's been spotted before that multiple function
definitions of this form can be pretty confusing to zsh users, too.

Note, however, that the case you showed already gives a different error,
since the parentheses aren't empty.  In bash/ksh emulation you should get
the reasonable "typeset: foo: can't assign initial value for array".

Index: Doc/Zsh/options.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Zsh/options.yo,v
retrieving revision 1.63
diff -u -r1.63 options.yo
--- Doc/Zsh/options.yo	7 Aug 2008 16:27:15 -0000	1.63
+++ Doc/Zsh/options.yo	11 Sep 2008 11:43:08 -0000
@@ -1133,6 +1133,14 @@
 
 will restore normally handling of tt(SIGINT) after the function exits.
 )
+pindex(MULTI_FUNC_DEF)
+item(tt(MULTI_FUNC_DEF) <Z>)(
+Allow definitions of multiple functions at once in the form `tt(fn1
+fn2)var(...)tt(LPAR()RPAR())'; if the option is not set, this causes
+a parse error.  Definition of multiple functions with the tt(function)
+keyword is always allowed.  Multiple function definitions are not often
+used and can cause obscure errors.
+)
 pindex(MULTIOS)
 item(tt(MULTIOS) <Z>)(
 Perform implicit bf(tee)s or bf(cat)s when multiple
Index: Src/options.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/options.c,v
retrieving revision 1.45
diff -u -r1.45 options.c
--- Src/options.c	7 Aug 2008 16:27:15 -0000	1.45
+++ Src/options.c	11 Sep 2008 11:43:08 -0000
@@ -181,6 +181,7 @@
 			      0
 #endif
 			      },			 MULTIBYTE},
+{{NULL, "multifuncdef",	      OPT_EMULATE|OPT_ZSH},	 MULTIFUNCDEF},
 {{NULL, "multios",	      OPT_EMULATE|OPT_ZSH},	 MULTIOS},
 {{NULL, "nomatch",	      OPT_EMULATE|OPT_NONBOURNE},NOMATCH},
 {{NULL, "notify",	      OPT_ZSH},			 NOTIFY},
Index: Src/parse.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/parse.c,v
retrieving revision 1.73
diff -u -r1.73 parse.c
--- Src/parse.c	1 Sep 2008 20:18:48 -0000	1.73
+++ Src/parse.c	11 Sep 2008 11:43:08 -0000
@@ -1663,6 +1663,9 @@
 	    zlong oldlineno = lineno;
 	    int onp, so, oecssub = ecssub;
 
+	    if (!isset(MULTIFUNCDEF) && argc > 1)
+		YYERROR(oecused);
+
 	    *complex = c;
 	    lineno = 0;
 	    incmdpos = 1;
Index: Src/zsh.h
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/zsh.h,v
retrieving revision 1.145
diff -u -r1.145 zsh.h
--- Src/zsh.h	3 Sep 2008 09:08:22 -0000	1.145
+++ Src/zsh.h	11 Sep 2008 11:43:08 -0000
@@ -1882,6 +1882,7 @@
     MENUCOMPLETE,
     MONITOR,
     MULTIBYTE,
+    MULTIFUNCDEF,
     MULTIOS,
     NOMATCH,
     NOTIFY,


-- 
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


^ permalink raw reply	[relevance 0%]

* Re: preventing the leading space in process substitution
  2008-09-11 12:00  0%           ` preventing the leading space in process substitution Peter Stephenson
@ 2008-09-11 12:44  0%             ` Rocky Bernstein
  0 siblings, 0 replies; 200+ results
From: Rocky Bernstein @ 2008-09-11 12:44 UTC (permalink / raw)
  To: Peter Stephenson; +Cc: Zsh Hackers' List

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

Thanks. I think this will be a big improvement.

A gentle nudge on having trap DEBUG (if not other traps as well) inherited
in subshells. ;-)

Thanks again.

On Thu, Sep 11, 2008 at 8:00 AM, Peter Stephenson <pws@csr.com> wrote:

> On Wed, 10 Sep 2008 14:51:04 -0400
> "Rocky Bernstein" <rocky.bernstein@gmail.com> wrote:
> > Also (mentioned previously), I think the multiple function definition
> with a
> > single body syntax should be removed when sh or bash emulation is in
> effect.
> > Those POSIX shell variants neither support this form and having it around
> > allows it to get confused causing a more obscure error message when one
> > writes "typeset -a foo=(list)" which is valid in those other POSIX shell
> > variants.
>
> (Moved to zsh-workers.)
>
> That's probably useful; it's been spotted before that multiple function
> definitions of this form can be pretty confusing to zsh users, too.
>
> Note, however, that the case you showed already gives a different error,
> since the parentheses aren't empty.  In bash/ksh emulation you should get
> the reasonable "typeset: foo: can't assign initial value for array".
>
> Index: Doc/Zsh/options.yo
> ===================================================================
> RCS file: /cvsroot/zsh/zsh/Doc/Zsh/options.yo,v
> retrieving revision 1.63
> diff -u -r1.63 options.yo
> --- Doc/Zsh/options.yo  7 Aug 2008 16:27:15 -0000       1.63
> +++ Doc/Zsh/options.yo  11 Sep 2008 11:43:08 -0000
> @@ -1133,6 +1133,14 @@
>
>  will restore normally handling of tt(SIGINT) after the function exits.
>  )
> +pindex(MULTI_FUNC_DEF)
> +item(tt(MULTI_FUNC_DEF) <Z>)(
> +Allow definitions of multiple functions at once in the form `tt(fn1
> +fn2)var(...)tt(LPAR()RPAR())'; if the option is not set, this causes
> +a parse error.  Definition of multiple functions with the tt(function)
> +keyword is always allowed.  Multiple function definitions are not often
> +used and can cause obscure errors.
> +)
>  pindex(MULTIOS)
>  item(tt(MULTIOS) <Z>)(
>  Perform implicit bf(tee)s or bf(cat)s when multiple
> Index: Src/options.c
> ===================================================================
> RCS file: /cvsroot/zsh/zsh/Src/options.c,v
> retrieving revision 1.45
> diff -u -r1.45 options.c
> --- Src/options.c       7 Aug 2008 16:27:15 -0000       1.45
> +++ Src/options.c       11 Sep 2008 11:43:08 -0000
> @@ -181,6 +181,7 @@
>                              0
>  #endif
>                              },                         MULTIBYTE},
> +{{NULL, "multifuncdef",              OPT_EMULATE|OPT_ZSH},
>  MULTIFUNCDEF},
>  {{NULL, "multios",           OPT_EMULATE|OPT_ZSH},      MULTIOS},
>  {{NULL, "nomatch",           OPT_EMULATE|OPT_NONBOURNE},NOMATCH},
>  {{NULL, "notify",            OPT_ZSH},                  NOTIFY},
> Index: Src/parse.c
> ===================================================================
> RCS file: /cvsroot/zsh/zsh/Src/parse.c,v
> retrieving revision 1.73
> diff -u -r1.73 parse.c
> --- Src/parse.c 1 Sep 2008 20:18:48 -0000       1.73
> +++ Src/parse.c 11 Sep 2008 11:43:08 -0000
> @@ -1663,6 +1663,9 @@
>            zlong oldlineno = lineno;
>            int onp, so, oecssub = ecssub;
>
> +           if (!isset(MULTIFUNCDEF) && argc > 1)
> +               YYERROR(oecused);
> +
>            *complex = c;
>            lineno = 0;
>            incmdpos = 1;
> Index: Src/zsh.h
> ===================================================================
> RCS file: /cvsroot/zsh/zsh/Src/zsh.h,v
> retrieving revision 1.145
> diff -u -r1.145 zsh.h
> --- Src/zsh.h   3 Sep 2008 09:08:22 -0000       1.145
> +++ Src/zsh.h   11 Sep 2008 11:43:08 -0000
> @@ -1882,6 +1882,7 @@
>     MENUCOMPLETE,
>     MONITOR,
>     MULTIBYTE,
> +    MULTIFUNCDEF,
>     MULTIOS,
>     NOMATCH,
>     NOTIFY,
>
>
> --
> 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
>

[-- Attachment #2: Type: text/html, Size: 5712 bytes --]

^ permalink raw reply	[relevance 0%]

* Re: Help me track down a tough bug? (probably funcfiletrace, subshells and possibly I/O redirection)
  @ 2008-09-29 14:11  3%           ` Rocky Bernstein
  2008-09-29 14:25  0%             ` Peter Stephenson
  0 siblings, 1 reply; 200+ results
From: Rocky Bernstein @ 2008-09-29 14:11 UTC (permalink / raw)
  To: Peter Stephenson; +Cc: Zsh hackers list

On Mon, Sep 29, 2008 at 7:25 AM, Peter Stephenson <pws@csr.com> wrote:
> "Rocky Bernstein" wrote:
>> Thanks. This addresses one of the problem seen. There are still the
>> others -- output disappearing and weird line numbers shown further up
>> in the trace. But we will take these one at a time.
>
> Please could you send a simple example of a remaining incorrect line
> number.  I would expect it would be reproducible without the debugger.

Sorry. Here's a trace from the reduced debugger. I've added comments as before.

./zshdb2.sh
./zshdb2.sh:39 ./zshdb2.sh:34   # Debug output in lib/frame.sh

# Above should be: ./lib/hook.sh:5 ./zshdb2.sh:34
# note: 34+5=39

(./zshdb2.sh:34):               # Comes from debugger via above save
. ./testing.sh
./zshdb2.sh:39 ./zshdb2.sh:34   # lib/frame.sh output again
zshdb<1> p ${funcfiletrace[@]}
./command/eval.sh:38 ./command/eval.sh:56 ./lib/processor.sh:100
./lib/processor.sh:49 ./zshdb2.sh:39 ./zshdb2.sh:34

# Above should be:  ./command/eval.sh:11 ./command/eval.sh:27
./lib/processor.sh:96 ./lib/processor.sh:44 ./lib/hook:13
./lib/hook.sh:6 ./zshdb2.sh:39 ./zshdb2.sh:34

Note that the difference in the two ./lib/processor.sh call lines is
52 in one case and 51 in another.

It gets even screwier after this, Just install that reduced debugger
and keep stepping and printing funcfiletrace. But again, perhaps it is
best to take things one step at a time.

>
>> How do you feel about noting the subshell level in one of the
>> traceback stacks and allowing an optional parameter to set $LINENO in
>> those cases where it is reset to 1.
>
> I'm not entirely sure what you're referring to, please could you give an
> example of what behaviour you'd like.

Ok. But I'm responding to your assertion that in some cases the line
number is reset to 1 in places where you can figure that out via
funcfiletrace. I see that eval doesn't seem to be such a case.

Suppose eval line numbers were reset but it is shown as a call in the
stack traces as it is in Python and Ruby. This code then

# This is line 5
eval "x=1;
y=$LINENO"

would set y to 2 since that's the second line in the eval. Since eval
is a POSIX "special" builtin, let's say there is an eval2 which allows
optional file and line number parameters

eval "x=1;
y=$LINENO" 10 foo.c

Then y would be set to 10. And *stack* routines where we can see
filename, it would be "foo.c"

>
>> (Is there a corresponding variable for the filename?
>
> LINENO itself doesn't necessarily relate to a file, but for now you can
> use ${(%):-%x} and ${(%):-%I} for the filename and line number in the
> shell code which is probably what you need.  I'll add variables for
> these later if they turn out to be useful (probably ZSH_SOURCE_FILE and
> ZSH_SOURCE_LINE).

Ok - Thanks. Will see how this works out. I'm not a fan of only having
% notation which looks like line noise and as you yourself had said in
the past %x is a bit non-intuitive.

>
>> I note that in
>> x="
>> $LINENO"
>>
>> LINENO has the x's line number rather than the one it's on. No doubt
>> this is an artifact of xtrace wanting to show for tracing purposes x's
>> line. However probably more correct would be to keep that but have
>> $LINENO be the line that it itself is on.
>
> I think we'd have to track the line number in subst.c:stringsubst().
> That may or may not be simple, I'll have to try it.

I think it will help. Thanks.


^ permalink raw reply	[relevance 3%]

* Re: Help me track down a tough bug? (probably funcfiletrace, subshells and possibly I/O redirection)
  2008-09-29 14:11  3%           ` Rocky Bernstein
@ 2008-09-29 14:25  0%             ` Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2008-09-29 14:25 UTC (permalink / raw)
  To: Rocky Bernstein; +Cc: Zsh hackers list

"Rocky Bernstein" wrote:
> ./zshdb2.sh
> ./zshdb2.sh:39 ./zshdb2.sh:34   # Debug output in lib/frame.sh
> 
> # Above should be: ./lib/hook.sh:5 ./zshdb2.sh:34
> # note: 34+5=39

Ah, I see, so this should be fairly obvious once I track back and see
what the code referred to is... I'll try and get round to this this
evening.

> Suppose eval line numbers were reset but it is shown as a call in the
> stack traces as it is in Python and Ruby. This code then
> 
> # This is line 5
> eval "x=1;
> y=$LINENO"
> 
> would set y to 2 since that's the second line in the eval. Since eval
> is a POSIX "special" builtin, let's say there is an eval2 which allows
> optional file and line number parameters
> 
> eval "x=1;
> y=$LINENO" 10 foo.c
> 
> Then y would be set to 10. And *stack* routines where we can see
> filename, it would be "foo.c"

There is already an EVALLINENO option to control the line number
behaviour in eval.  I wouldn't plan on making this even more complicated
without some clear evidence of need.  Use of (the
not-yet-properly-named) ZSH_FILE_LINE looks likely to be more useful.

-- 
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


^ permalink raw reply	[relevance 0%]

* "." not recognising "--" as the end-of-options
@ 2008-10-28 16:43  3% Stephane Chazelas
  2008-10-28 21:49  0% ` Peter Stephenson
  0 siblings, 1 reply; 200+ results
From: Stephane Chazelas @ 2008-10-28 16:43 UTC (permalink / raw)
  To: Zsh hackers list

Hiya,

$ zsh -c '. -- --help'
zsh:.:1: no such file or directory: --
$ ARGV0=sh zsh -c '. -- --help'
zsh:.:1: no such file or directory: --

The handling of "--" is mandated by POSIX I beleive.

With ksh, pdksh, bash you have to use:

. -- "$1"

if you can't guarantee that "$1" won't start with a "-".

Unfortunately, that code doesn't work with zsh at the moment.

-- 
Stéphane


^ permalink raw reply	[relevance 3%]

* Re: "." not recognising "--" as the end-of-options
  2008-10-28 16:43  3% "." not recognising "--" as the end-of-options Stephane Chazelas
@ 2008-10-28 21:49  0% ` Peter Stephenson
  2008-10-29 11:11  3%   ` Stephane Chazelas
  0 siblings, 1 reply; 200+ results
From: Peter Stephenson @ 2008-10-28 21:49 UTC (permalink / raw)
  To: Zsh hackers list

On Tue, 28 Oct 2008 16:43:19 +0000
Stephane Chazelas <Stephane_Chazelas@yahoo.fr> wrote:
> $ zsh -c '. -- --help'
> zsh:.:1: no such file or directory: --
> $ ARGV0=sh zsh -c '. -- --help'
> zsh:.:1: no such file or directory: --
> 
> The handling of "--" is mandated by POSIX I beleive.
> 
> With ksh, pdksh, bash you have to use:
> 
> . -- "$1"
> 
> if you can't guarantee that "$1" won't start with a "-".
> 
> Unfortunately, that code doesn't work with zsh at the moment.

This happens with builtins that are declared not to have any options.
I've noticed it before and thought it a bit flakey but been too craven
to fix it.  We don't document option processing rules anywhere that I
can find, so sticking with the standard is the only sensible bet.  It's
probably best to change for all such builtins.

We already changed this for the functionally similar case of "exec"
when that acquired options, so this should probably be considered
unfinished business.

This has probably missed 4.3.7, although that seems to be lost in the
post at the moment.

Index: README
===================================================================
RCS file: /cvsroot/zsh/zsh/README,v
retrieving revision 1.55
diff -u -r1.55 README
--- README	26 Oct 2008 17:59:48 -0000	1.55
+++ README	28 Oct 2008 20:45:41 -0000
@@ -35,6 +35,12 @@
 This section documents incompatibilities in the shell since the 4.2
 series of releases.
 
+In previous releases of the shell, builtin commands and precommand
+modifiers that did not accept options also did not recognize the
+argument "--" as marking the end of option processing without being
+considered an argument.  This was not documented and was incompatible
+with other shells.  All such commands now handle this syntax.
+
 The configuration option --enable-lfs to enable large file support has
 been replaced by autoconf's standard --enable-largefile mechanism.
 As this is usually used whenever necessary, this won't usually
Index: Src/builtin.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/builtin.c,v
retrieving revision 1.213
diff -u -r1.213 builtin.c
--- Src/builtin.c	18 Oct 2008 14:13:16 -0000	1.213
+++ Src/builtin.c	28 Oct 2008 20:45:43 -0000
@@ -391,6 +391,9 @@
 		if (ops.ind['-'])
 		    break;
 	    }
+	} else if (*argv && !strcmp(*argv, "--")) {
+	    ops.ind['-'] = 1;
+	    argv++;
 	}
 
 	/* handle built-in options, for overloaded handler functions */



-- 
Peter Stephenson <p.w.stephenson@ntlworld.com>
Web page now at http://homepage.ntlworld.com/p.w.stephenson/


^ permalink raw reply	[relevance 0%]

* Re: "." not recognising "--" as the end-of-options
  2008-10-28 21:49  0% ` Peter Stephenson
@ 2008-10-29 11:11  3%   ` Stephane Chazelas
  0 siblings, 0 replies; 200+ results
From: Stephane Chazelas @ 2008-10-29 11:11 UTC (permalink / raw)
  To: Peter Stephenson; +Cc: Zsh hackers list

On Tue, Oct 28, 2008 at 09:49:52PM +0000, Peter Stephenson wrote:
[...]
> > . -- "$1"
> > 
> > if you can't guarantee that "$1" won't start with a "-".
> > 
> > Unfortunately, that code doesn't work with zsh at the moment.
> 
> This happens with builtins that are declared not to have any options.
> I've noticed it before and thought it a bit flakey but been too craven
> to fix it.  We don't document option processing rules anywhere that I
> can find, so sticking with the standard is the only sensible bet.  It's
> probably best to change for all such builtins.
[...]

Thanks Peter!

note that I've filed the same bug report to ash, so I suspect
Net/FreeBSD shs are affected as well, which means we can't use
. -- "$1" portably anyway even though it's POSIX.

Cheers,
Stéphane


^ permalink raw reply	[relevance 3%]

* Re: [PATCH] Re: f() { ...; } > file
  @ 2008-11-13 15:03  3%     ` Stephane Chazelas
  2008-11-13 15:13  0%       ` Stephane Chazelas
  0 siblings, 1 reply; 200+ results
From: Stephane Chazelas @ 2008-11-13 15:03 UTC (permalink / raw)
  To: Peter Stephenson; +Cc: Zsh hackers list

On Thu, Nov 13, 2008 at 02:52:59PM +0000, Peter Stephenson wrote:
> Stephane Chazelas wrote:
> > The patch below seems to fix it. It just removes the special
> > case of f() { }. I don't why it was there in the first place.
> > rev 1.1 of parse.c already had it.
> 
> That's because you've made all functions with braces parse as if they
> contain current shell structures; you'll see they're output with an
> unnecessary extra set of "{"s.  This works because it just makes the
> code behave like the non-confusing way to do it, with the redirection
> inside the function.
[...]

Well, it depends how you regard the function syntax.

In the Bourne shell and its derivatives, defining a function
is really sticking foo() in front of a command. The "{" and "}"
are not part of the syntax of a function definition.

Note that POSIX has specified it with a restriction in that you
can only stick "foo()" in front of complex command, and bash is
the only shell to enforce that restriction.

bash allows:

foo() for i do echo "$i"; done
but not
foo() echo "$*"

contrary to all the other Bourne like shells which allow both.

Now, I agree that

$ /tmp/Z/bin/zsh -c 'f() { :; }; typeset -f'
f () {
        {
                :
        }
}

is not ideal ;). Looks like the fix is not as easy as that.

-- 
Stéphane


^ permalink raw reply	[relevance 3%]

* Re: [PATCH] Re: f() { ...; } > file
  2008-11-13 15:03  3%     ` Stephane Chazelas
@ 2008-11-13 15:13  0%       ` Stephane Chazelas
  0 siblings, 0 replies; 200+ results
From: Stephane Chazelas @ 2008-11-13 15:13 UTC (permalink / raw)
  To: Peter Stephenson, Zsh hackers list

On Thu, Nov 13, 2008 at 03:03:35PM +0000, Stephane Chazelas wrote:
[...]
> Note that POSIX has specified it with a restriction in that you
> can only stick "foo()" in front of complex command, and bash is
> the only shell to enforce that restriction.
[...]

Sorry the proper term is "compound command". Here is the text
from SUSv3:

SUS>   The format of a function definition command is as
SUS>   follows:
SUS> 
SUS> fname() compound-command[io-redirect ...]
SUS> 
[...]
SUS>   The argument compound-command represents a compound
SUS>   command, as described in Compound Commands.
SUS> 
SUS>   When the function is declared, none of the expansions in
SUS>   Word Expansions shall be performed on the text in
SUS>   compound-command or io-redirect; all expansions shall be
SUS>   performed as normal each time the function is called.
SUS>   Similarly, the optional io-redirect redirections and any
SUS>   variable assignments within compound-command shall be
SUS>   performed during the execution of the function itself,
SUS>   not the function definition. See Consequences of Shell
SUS>   Errors for the consequences of failures of these
SUS>   operations on interactive and non-interactive shells.
[...]
SUS>   The compound-command shall be executed whenever the
SUS>   function name is specified as the name of a simple
SUS>   command (see Command Search and Execution). The operands
SUS>   to the command temporarily shall become the positional
SUS>   parameters during the execution of the compound-command;
SUS>   the special parameter '#' also shall be changed to
SUS>   reflect the number of operands. The special parameter 0
SUS>   shall be unchanged. When the function completes, the
SUS>   values of the positional parameters and the special
SUS>   parameter '#' shall be restored to the values they had
SUS>   before the function was executed. If the special built-in
SUS>   return is executed in the compound-command, the function
SUS>   completes and execution shall resume with the next
SUS>   command after the function call.

So, at the moment, zsh is not conformant. The patch I suggested
seems to fix it but introduces some display glitches.

-- 
Stéphane


^ permalink raw reply	[relevance 0%]

* Zsh Design Document | Porting to Symbian
@ 2008-11-19  6:36  4% pavan.mysore
  2008-11-19 10:03  0% ` Peter Stephenson
  0 siblings, 1 reply; 200+ results
From: pavan.mysore @ 2008-11-19  6:36 UTC (permalink / raw)
  To: zsh-workers

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

Hi All,

I am Pavan, I am working at a company called Symbian, we make a Smart 
Phone OS called symbian.
I am trying to port Zsh to Symbian, though Symbian does not supprt direct 
native posix api's we have a platform called P.I.P.S
which provides subset of Posix APIs. Could someone please tell me if and 
how i can get access to the Zsh design document as just going 
through the code i am not able to understand anything substantial.

Thanks in advance.

Regards,
Pavan

Software Engineer

Open Environment
Generic OS Services
Symbian India Pvt. Ltd.
mail: pavan.mysore@symbian.com
ph: +91-9741784899


**********************************************************************
Symbian Software Ltd is a company registered in England and Wales
with registered number 4190020 and registered office at 2-6
Boundary Row, Southwark, London,  SE1 8HP, UK. This message is
intended only for use by the named addressee and may contain
privileged and/or confidential information. If you are not the
named addressee you should not disseminate, copy or take any action
in reliance on it. If you have received this message in error
please notify postmaster@symbian.com and delete the message and any
attachments accompanying it immediately. Neither Symbian nor any of
its Affiliates accepts liability for any corruption, interception,
amendment, tampering or viruses occurring to this message in
transit or for any message sent by its employees which is not in
compliance with Symbian corporate policy.
**********************************************************************

[-- Attachment #2: Type: text/html, Size: 2190 bytes --]

^ permalink raw reply	[relevance 4%]

* Re: Zsh Design Document | Porting to Symbian
  2008-11-19  6:36  4% Zsh Design Document | Porting to Symbian pavan.mysore
@ 2008-11-19 10:03  0% ` Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2008-11-19 10:03 UTC (permalink / raw)
  To: pavan.mysore; +Cc: zsh-workers

On Wed, 19 Nov 2008 12:06:21 +0530
pavan.mysore@symbian.com wrote:
> Hi All,
> 
> I am Pavan, I am working at a company called Symbian, we make a Smart 
> Phone OS called symbian.
> I am trying to port Zsh to Symbian, though Symbian does not supprt direct 
> native posix api's we have a platform called P.I.P.S
> which provides subset of Posix APIs. Could someone please tell me if and 
> how i can get access to the Zsh design document as just going 
> through the code i am not able to understand anything substantial.

The best we've got is the file Etc/zsh-development-guide in the source
tarball.  That's mostly targeted at people trying to add things to the
shell, however, rather than for system-level modifications.  Otherwise
you'll need to post your questions here, but they'll probably get
answered if they're succinct enough.

-- 
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


^ permalink raw reply	[relevance 0%]

* Re: D03 test hang on cygwin with latest sources
  @ 2008-11-25 23:26  3%         ` Peter A. Castro
  0 siblings, 0 replies; 200+ results
From: Peter A. Castro @ 2008-11-25 23:26 UTC (permalink / raw)
  To: Peter Stephenson; +Cc: zsh-workers

On Tue, 25 Nov 2008, Peter Stephenson wrote:

> Phil Pennock wrote:
>> On 2008-11-24 at 17:32 +0000, Peter Stephenson wrote:
>>> Right, the behaviour isn't new.  It seems as if the subprocess is
>>> reading EOF from the input.
>>>
>>> % foo() { print $1; print hello >$1; [[ -e $1 ]] || print Ouch! }
>>> % foo >(sleep 1; read foo || print Failed)
>>> /proc/self/fd/12
>>> Failed
>>
>> ...% zsh -f
>> redoubt% echo $ZSH_VERSION
>> 4.3.6
>> redoubt% foo() { print $1; print hello >$1; [[ -e $1 ]] || print Ouch! }
>> redoubt% foo >(sleep 1; read foo || print Failed)
>> /tmp/zshQCDdM0
>> redoubt%
>>
>> Looks like a regression after all.
>
> Did you try it in 4.3.9?  I tried it on three different versions, before
> and after 4.3.6, and got the same result.  If your system is doing
> something different I'd like to find out what.
>
> I *can* get the test to pass if I undefine PATH_DEV_FD and define
> HAVE_FIFOS, so it looks like this is the way forward.  Some
> investigation of why HAVE_FIFOS doesn't get define automatically would
> be useful.

Well, configure.ac has an explicit check for cygwin and disables the feature:

dnl -----------
dnl named FIFOs
dnl -----------
AC_CACHE_CHECK(if named FIFOs work,
zsh_cv_sys_fifo,
[if test "$host_os" = cygwin; then
zsh_cv_sys_fifo=no
else


The other thing about this is that the fifo test code fails but the
reason appears to be a race condition between the parent and child
creating the fifo.  I've modified the example thus:

#include <fcntl.h>
#include <signal.h>
main()
{
     char c;
     int fd;
     int pid, ret;
     unlink("/tmp/fifo$$");
#ifdef HAVE_MKFIFO
     if(mkfifo("/tmp/fifo$$", 0600) < 0)
#else
     if(mknod("/tmp/fifo$$", 0010600, 0) < 0)
#endif
 	exit(1);
     pid = fork();
     if(pid < 0)
 	exit(1);
     if(pid) {
 	fd = open("/tmp/fifo$$", O_RDONLY);
 	exit(fd < 0 || read(fd, &c, 1) != 1 || c != 'x');
     }
     sleep(1);  /* prevent race */
     fd = open("/tmp/fifo$$", O_WRONLY);
     ret = (fd < 0 || write(fd, "x", 1) < 1);
     unlink("/tmp/fifo$$");
     exit(ret);
}


With this, the test runs, and HAVE_FIFOS gets defined.  I hacked
configure to not set PATH_DEV_FD too.  :-)

With the above changes the 'foo' test above works, though
Test/C02cond.ztst still generates an error.

Cygwin (really Windows) has some issues with fifos and the order in which
they are created, and for the longest time fifos were really just not
usable under Cygwin.  Recent versions of Cygwin have updated the
fifo/pipe code but it's still subject to Windows underlying functions.

I understand the up coming Cygwin-1.7 will have a completely new
implemention of pipes which should behave more like what the POSIX spec
says it should.

I could probably provide a sample configure.ac for all of this if you'd
like, but the changes are pretty trivial.


> (I tried adding a "sync" pipe to getpipe() in the same way as in the
> other pipe code, but it didn't seem to help.)
>
> I'm also finding that I can read files with mode 000, so the [[ -r
> ... ]] test fails (but it's clearly doing the right thing, since "cat"
> on the file works, too).  This may be because I have administrator
> rights.  Unless some Cygwin expert can do this better, I'll apply the
> following.
>
> This is with Cygwin updated from the stable versions yesterday.
>
> Index: Test/C02cond.ztst
> ===================================================================
> RCS file: /cvsroot/zsh/zsh/Test/C02cond.ztst,v
> retrieving revision 1.22
> diff -u -r1.22 C02cond.ztst
> --- Test/C02cond.ztst	26 Feb 2008 20:50:13 -0000	1.22
> +++ Test/C02cond.ztst	25 Nov 2008 09:54:00 -0000
> @@ -94,6 +94,10 @@
>   if (( EUID == 0 )); then
>     print -u$ZTST_fd 'Warning: Not testing [[ ! -r file ]] (root reads anything)'
>     [[ -r zerolength && -r unmodish ]]
> +  elif [[ $OSTYPE = cygwin ]]; then
> +    print -u$ZTST_fd 'Warning: Not testing [[ ! -r file ]]
> +   (all files created by user may be readable)'
> +   [[ -r zerolength ]]
>   else
>     [[ -r zerolength && ! -r unmodish ]]
>   fi

-- 
Peter A. Castro <doctor@fruitbat.org> or <Peter.Castro@oracle.com>
 	"Cats are just autistic Dogs" -- Dr. Tony Attwood


^ permalink raw reply	[relevance 3%]

* [PATCH] documentation update =~ regex MATCH
@ 2009-01-15  0:53  6% Phil Pennock
  0 siblings, 0 replies; 200+ results
From: Phil Pennock @ 2009-01-15  0:53 UTC (permalink / raw)
  To: zsh-workers

The patch below should update the docs to make it clearer that no
variables are touched if regex matches fail.

yodl is currently segfaulting for me, so I can't test a make from them.
It looks like simple text changes which Can't Possibly Go Wrong, though,
so unless someone shouts I'll commit this anyway in a day or so.

Index: Doc/Zsh/cond.yo
===================================================================
RCS file: /home/cvsroot/zsh/Doc/Zsh/cond.yo,v
retrieving revision 1.5
diff -a -u -p -r1.5 cond.yo
--- Doc/Zsh/cond.yo	13 May 2007 20:18:28 -0000	1.5
+++ Doc/Zsh/cond.yo	15 Jan 2009 00:48:30 -0000
@@ -115,6 +115,8 @@ var(regexp).  If the option tt(RE_MATCH_
 var(regexp) is tested as a PCRE regular expression using
 the tt(zsh/pcre) module, else it is tested as a POSIX
 extended regular expression using the tt(zsh/regex) module.
+Upon successful match, some variables will be updated; no variables
+are changed if the matching fails.
 If the option tt(BASH_REMATCH) is set the array
 tt(BASH_REMATCH) is set to the substring that matched the pattern
 followed by the substrings that matched parenthesised
Index: Doc/Zsh/mod_pcre.yo
===================================================================
RCS file: /home/cvsroot/zsh/Doc/Zsh/mod_pcre.yo,v
retrieving revision 1.6
diff -a -u -p -r1.6 mod_pcre.yo
--- Doc/Zsh/mod_pcre.yo	1 May 2007 22:05:05 -0000	1.6
+++ Doc/Zsh/mod_pcre.yo	15 Jan 2009 00:45:31 -0000
@@ -26,13 +26,15 @@ item(tt(pcre_match) [ tt(-v) var(var) ] 
 Returns successfully if tt(string) matches the previously-compiled
 PCRE.
 
-If the expression captures substrings within parentheses,
+Upon successful match,
+if the expression captures substrings within parentheses,
 tt(pcre_match) will set the array var($match) to those
 substrings, unless the tt(-a) option is given, in which
 case it will set the array var(arr).  Similarly, the variable
 var(MATCH) will be set to the entire matched portion of the
 string, unless the tt(-v) option is given, in which case the variable
 var(var) will be set.
+No variables are altered if there is no successful match.
 )
 enditem()
 
Index: Doc/Zsh/mod_regex.yo
===================================================================
RCS file: /home/cvsroot/zsh/Doc/Zsh/mod_regex.yo,v
retrieving revision 1.1
diff -a -u -p -r1.1 mod_regex.yo
--- Doc/Zsh/mod_regex.yo	2 May 2007 11:13:15 -0000	1.1
+++ Doc/Zsh/mod_regex.yo	15 Jan 2009 00:44:33 -0000
@@ -8,9 +8,11 @@ startitem()
 findex(regex-match)
 item(var(expr) tt(-regex-match) var(regex))(
 Matches a string against a POSIX extended regular expression.
-The matched portion of the string will normally be placed in the tt(MATCH)
+On successful match,
+matched portion of the string will normally be placed in the tt(MATCH)
 variable.  If there are any capturing parentheses within the regex, then
 the tt(match) array variable will contain those.
+If the match is not successful, then the variables will not be altered.
 
 For example,
 


^ permalink raw reply	[relevance 6%]

* Re: select problem
  @ 2009-01-17  9:25  3% ` Stephane Chazelas
  2009-01-17 11:21  4%   ` Richard Hartmann
  0 siblings, 1 reply; 200+ results
From: Stephane Chazelas @ 2009-01-17  9:25 UTC (permalink / raw)
  To: david sowerby; +Cc: zsh-workers

On Mon, Jan 12, 2009 at 11:48:25AM -0800, david sowerby wrote:
> I don't want to subscribe to the mailing lists so please cc
> I wrote a shell script in bash (sorry) before I switched to zsh.
> The script has no "bashisms" but when I changed #!/bin/bash to
> #!/bin/zsh it didn't work correctly -- zsh ver 4.3.6 on debian
> It's just a simple script using select to print a list of
> music, choose a file and play it. 
> select input in $(/bin/ls -A /home/david/music)
[...]

Sorry, I'm not answering you question, but just a note:

There's no such thing as a bashism as all (except for a few
little ones) bash features come either from ksh, zsh or (t)csh.

"select" is not standard (that is not in the POSIX sh, which
is the only standard you can expect both bash and zsh to conform
to (when called as "sh")) and is a kshism. It's also rather
useless as one can do the same thing easily without.

-- 
Stéphane


^ permalink raw reply	[relevance 3%]

* Re: select problem
  2009-01-17  9:25  3% ` Stephane Chazelas
@ 2009-01-17 11:21  4%   ` Richard Hartmann
  2009-01-18 14:39  5%     ` Stephane Chazelas
  0 siblings, 1 reply; 200+ results
From: Richard Hartmann @ 2009-01-17 11:21 UTC (permalink / raw)
  To: david sowerby, zsh-workers

On Sat, Jan 17, 2009 at 10:25, Stephane Chazelas
<Stephane_Chazelas@yahoo.fr> wrote:

> "select" is not standard (that is not in the POSIX sh, which
> is the only standard you can expect both bash and zsh to conform
> to (when called as "sh")) and is a kshism. It's also rather
> useless as one can do the same thing easily without.

zsh is not fully POSIX compliant and afaik, there are no plans to
ever make it that way, either. While zsh and POSIX agree most
of the time, using zsh as your sh _will_ get you strange effects.

I don't have time to dig up more, but look at [1] and [2] for some
examples.


Richard

[1] http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=329288
[2] http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=340058


^ permalink raw reply	[relevance 4%]

* Re: sourcing a sh file in zsh
  @ 2009-01-17 20:15  3%             ` Bart Schaefer
  0 siblings, 0 replies; 200+ results
From: Bart Schaefer @ 2009-01-17 20:15 UTC (permalink / raw)
  To: zsh-workers

On Jan 16,  9:55pm, Phil Pennock wrote:
} Subject: Re: sourcing a sh file in zsh
}
} On 2009-01-16 at 21:00 -0800, Bart Schaefer wrote:
} > On Jan 16,  7:59pm, Phil Pennock wrote:
} > } On 2009-01-16 at 10:29 -0800, Bart Schaefer wrote:
} > } > with the obvious meaning of "turn on sh emulation while sourcing" and
} > } > would otherwise behave like "source".  Might need a variant that has
} > } > the path-searching semantics of "." as well.
} > } 
} > } Isn't there a problem where a function is defined which assumes one
} > } set of semantics and the reset afterwards changes the semantics?
} > 
} > The reset after what?  This hypothetical feature?  Well, since it's
} > hypothetical, I'd have to say no, there isn't a problem, because if
} > the feature ever ceases to be hypothetical it should be implemented
} > so as to avoid that problem.
} 
} Okay, and that raises the issue of reset and options from outside a
} function needing to be retained as part of the function definition.

OK, I think I get it now, and sorry for being a bit dense before.  You
are talking about a situation where:

- There is a script file of some sort, meant to be read by "source".
- That script file doesn't just do something once (like assign to a
  bunch of environment variables) and go away; instead, it defines
  shell functions that are intended to be used interactively later.
- Those shell functions make the reasonable assumption that if the
  function defintion was parsed by, e.g., a POSIX-compatible shell,
  then the shell will still be POSIX-compatible when the function is
  actually run.

Leaving aside for the moment the fact that it's entirely possible to
parse a function definition with NO_SH_WORD_SPLIT that won't then work
without SH_WORD_SPLIT, so "the setopts in effect at parse time" might
not be a valid representation of "the setopts needed at run time", I
agree that it might be useful to be able to cause a specific set of
options to become set before entry to a given function.

This gets very tricky, however, when applied to functions that are
actually designed for zsh.  An implicit preset of options implies an
implicit restore later, but a zsh function which deliberately does
NOT "setopt localoptions" is expecting any setopt it executes to
persist after the function exits.  It'll be complicated to keep track
of which options should be restored because of implicit preset, and
which ones should not be restored because of explicit change.

Regardless I don't think we'd want to do this as yet another setopt.
It's potential can of worms along the lines of ALL_EXPORT, in that
one can end up accidentally applying a specific option context to a
function definition where one didn't (or shouldn't) mean to do so.
I'd lean toward something that works like the "emulation" global,
which is still localized to function scope but which is changable
only by the "emulate" command.

Combined with allowing "emulate" create a scope and run a command
in that scope, is there anything else you'd need?

PWS, any comment on how difficult it would be to extend "emulate" in
this way?  Would it require promoting emulate to a keyword?

} So I'm thinking an Eprog WC_OPTSPACE instruction which can be inserted
} at some point arounf execfuncdef() time, which is stored with a value
} which points to the opts value to be put into effect and which, when
} encountered, adjusts the current funcstack entry to hold the current
} opts before replacing opts with the one referenced in the Eprog.

This part sounds fine to me, but I've never been the expert on Eprogs.


^ permalink raw reply	[relevance 3%]

* Re: select problem
  2009-01-17 11:21  4%   ` Richard Hartmann
@ 2009-01-18 14:39  5%     ` Stephane Chazelas
  2009-01-18 15:45  0%       ` Richard Hartmann
  0 siblings, 1 reply; 200+ results
From: Stephane Chazelas @ 2009-01-18 14:39 UTC (permalink / raw)
  To: Richard Hartmann; +Cc: david sowerby, zsh-workers

On Sat, Jan 17, 2009 at 12:21:31PM +0100, Richard Hartmann wrote:
> On Sat, Jan 17, 2009 at 10:25, Stephane Chazelas
> <Stephane_Chazelas@yahoo.fr> wrote:
> 
> > "select" is not standard (that is not in the POSIX sh, which
> > is the only standard you can expect both bash and zsh to conform
> > to (when called as "sh")) and is a kshism. It's also rather
> > useless as one can do the same thing easily without.
> 
> zsh is not fully POSIX compliant and afaik, there are no plans to
> ever make it that way, either. While zsh and POSIX agree most
> of the time, using zsh as your sh _will_ get you strange effects.
> 
> I don't have time to dig up more, but look at [1] and [2] for some
> examples.
[...]

None of the so called POSIX shells are fully conformant. AFAIK,
only AT&T ksh claims to be fully conformant. bash follows the
GNU or LSB standards when they conflict with POSIX (see for
instance echo -e that doesn't output -e). ash derivatives still
have some way to go. But all try to be as conformant as
reasonable (so long as their design choices allow and as long as
implementing a POSIX feature wouln't break backward
compatibility).

For instance, I've never come accross a shell implementation
that implements that (rather stupid IMO) POSIX feature that says
that: "PATH=; echo test" should output "echo: command not
found" (that is a built-in should only be invoked if a command
by that name is found in $PATH).

Still, I can't think of how a script could be reasonably made to
rely on that behavior, which is why it's not a problem that all
shells break POSIX conformance there, in a same way that running
a POSIX script with zsh (in sh emulation) generally isn't a
problem because it's only in corner cases that zsh is not
conformant. When a POSIX conformance issue is found by someone,
it is generally raised on this mailing list and most of the time
fixed (at least in sh emulation).

Having said that, I agree there's no much point of having zsh as
your POSIX sh.

-- 
Stéphane


^ permalink raw reply	[relevance 5%]

* Re: select problem
  2009-01-18 14:39  5%     ` Stephane Chazelas
@ 2009-01-18 15:45  0%       ` Richard Hartmann
  2009-01-20 19:42  0%         ` Peter Stephenson
  0 siblings, 1 reply; 200+ results
From: Richard Hartmann @ 2009-01-18 15:45 UTC (permalink / raw)
  To: Richard Hartmann, david sowerby, zsh-workers

On Sun, Jan 18, 2009 at 15:39, Stephane Chazelas
<Stephane_Chazelas@yahoo.fr> wrote:

> Still, I can't think of how a script could be reasonably made to
> rely on that behavior, which is why it's not a problem that all
> shells break POSIX conformance there, in a same way that running
> a POSIX script with zsh (in sh emulation) generally isn't a
> problem because it's only in corner cases that zsh is not
> conformant.

Having symlinked zsh to /bin/sh for some time on my system,
I have to say it's a quick way to make your Debian system
stop working. Grml had a similar experience which is why
they went back to Bash.


> When a POSIX conformance issue is found by someone,
> it is generally raised on this mailing list and most of the time
> fixed (at least in sh emulation).

Afaik, there are several issues open. If there is any interest,
I can try to round them up so they can be shot.


> Having said that, I agree there's no much point of having zsh as
> your POSIX sh.

AFAIK, that is the official stance.


Richard


^ permalink raw reply	[relevance 0%]

* Re: select problem
  2009-01-18 15:45  0%       ` Richard Hartmann
@ 2009-01-20 19:42  0%         ` Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2009-01-20 19:42 UTC (permalink / raw)
  To: Zsh Hackers' List

On Sun, 18 Jan 2009 16:45:42 +0100
Richard Hartmann <richih.mailinglist@gmail.com> wrote:
> On Sun, Jan 18, 2009 at 15:39, Stephane Chazelas
> > When a POSIX conformance issue is found by someone,
> > it is generally raised on this mailing list and most of the time
> > fixed (at least in sh emulation).
> 
> Afaik, there are several issues open. If there is any interest,
> I can try to round them up so they can be shot.

It would probably be useful to have them collected in any case.

-- 
Peter Stephenson <p.w.stephenson@ntlworld.com>
Web page now at http://homepage.ntlworld.com/p.w.stephenson/


^ permalink raw reply	[relevance 0%]

* PATCH: update Cygwin completion functions
@ 2009-01-24 13:53  1% Doug Kearns
  0 siblings, 0 replies; 200+ results
From: Doug Kearns @ 2009-01-24 13:53 UTC (permalink / raw)
  To: zsh-workers

This updates the Cygwin related completion functions for the latest
versions of those commands, fixes a few bugs, and adds rudimentary
completion for setfacl and readshortcut.

Felix, I also removed the "Generated by" tags to prevent future
confusion as I didn't use the generator to update them.

Regards,
Doug (nee Rosie)


Index: Completion/Cygwin/Command/.distfiles
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/Cygwin/Command/.distfiles,v
retrieving revision 1.1
diff -u -r1.1 .distfiles
--- Completion/Cygwin/Command/.distfiles	22 Apr 2003 12:49:14 -0000	1.1
+++ Completion/Cygwin/Command/.distfiles	24 Jan 2009 13:39:31 -0000
@@ -1,6 +1,7 @@
 DISTFILES_SRC='
 .distfiles
-_cygcheck    _cygpath     _cygrunsrv   _cygserver   _cygstart
-_dumper      _getclip     _getfacl     _mkshortcut  _mkzsh
-_pscp        _putclip     
+_cygcheck       _cygpath        _cygrunsrv      _cygserver
+_cygstart       _dumper         _getclip        _getfacl
+_mkshortcut     _mkzsh          _pscp           _putclip
+_readshortcut   _setfacl
 '
Index: Completion/Cygwin/Command/_cygcheck
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/Cygwin/Command/_cygcheck,v
retrieving revision 1.1
diff -u -r1.1 _cygcheck
--- Completion/Cygwin/Command/_cygcheck	7 Apr 2003 11:23:18 -0000	1.1
+++ Completion/Cygwin/Command/_cygcheck	24 Jan 2009 13:39:31 -0000
@@ -1,14 +1,31 @@
 #compdef cygcheck cygcheck.exe
-#Generated by Felix Rosencrantz
 
-local context state line
+# cygwin 1.5.25
+
+local curcontext="$curcontext" state line expl
 typeset -A opt_args
-_arguments  \
-  '(--check-setup --help -c -h)'{-c,--check-setup}'[check packages installed via setup.exe]' \
-  '(--keycheck --sysinfo -k -s)'{-s,--sysinfo}'[system information (not with -k)]' \
-  '(--verbose -v)'{-v,--verbose}'[verbose output (indented) (for -s or programs)]' \
-  '(--registry -r)'{-r,--registry}'[registry search (requires -s)]' \
-  '(--keycheck --sysinfo -k -s)'{-k,--keycheck}'[perform a keyboard check session (not with -s)]' \
-  '(--check-setup --help -c -h)'{-h,--help}'[give help about the info (not with -c)]' \
-  '(--version -V)'{-V,--version}'[output version information and exit]' \
-  '*:program: _command_names -e:*::program arguments: _normal'
+
+local -a exclusive_opts
+exclusive_opts=(-k --keycheck -f --find-package -l --list-package -p --package-query -h --help -V --version)
+
+_arguments -C -s -S \
+  "(* $exclusive_opts -c --check-setup)"{-c,--check-setup}'[show installed version of the specified package and verify integrity (or for all installed packages if none specified)]:*:package:->package' \
+  "(* $exclusive_opts -d --dump-only)"{-d,--dump-only}'[just list packages, do not verify (with -c)]' \
+  "(* $exclusive_opts -s --sysinfo)"{-s,--sysinfo}'[produce diagnostic system information (implies -c -d)]' \
+  "(* $exclusive_opts -r --registry)"{-r,--registry}'[also scan registry for Cygwin settings (with -s)]' \
+  '(* -)'{-k,--keycheck}'[perform a keyboard check session (must be run from a plain console only, not from a pty/rxvt/xterm)]' \
+  '(* -)'{-f,--find-package}'[find the package that specified file belongs to]:*:file:_files' \
+  '(* -)'{-l,--list-package}'[list contents of the specified package (or all packages if none given)]:*:package:->package' \
+  '(* -)'{-p,--package-query}'[search for the specified regexp in the entire cygwin.com package repository (requires internet connectivity)]:regexp:' \
+  '(-V --version -k --keycheck -f --find-package -l --list-package -p --package-query -c --check-setup -d --dump-only -v --verbose)'{-v,--verbose}'[produce more verbose output]' \
+  '(-V --version -k --keycheck -f --find-package -l --list-package -p --package-query -c --check-setup -d --dump-only -h --help)'{-h,--help}'[annotate output with explanatory comments when given with another command, otherwise print this help]' \
+  '(* -)'{-V,--version}'[print the version of cygcheck and exit]' \
+  '(-)*:program: _command_names -e' && return
+
+if [[ "$state" = package ]]; then
+  local -a packages
+  packages=( ${${${(f)"$(_call_program packages $words[1] -c -d)"}[3,-1]}%% *} )
+  _wanted packages expl package compadd -a packages && return
+fi
+
+return 1
Index: Completion/Cygwin/Command/_cygpath
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/Cygwin/Command/_cygpath,v
retrieving revision 1.2
diff -u -r1.2 _cygpath
--- Completion/Cygwin/Command/_cygpath	31 Jul 2003 15:26:14 -0000	1.2
+++ Completion/Cygwin/Command/_cygpath	24 Jan 2009 13:39:31 -0000
@@ -1,26 +1,28 @@
 #compdef cygpath cygpath.exe
-#Generated by Felix Rosencrantz
 
-_arguments  \
-  '(--dos --mixed --type --unix --windows -d -m -t -u -w)'{-d,--dos}'[print DOS (short) form of NAME (C:\PROGRA~1\)]' \
-  '(--dos --mixed --type --unix --windows -d -m -t -u -w)'{-m,--mixed}'[like --windows, but with regular slashes (C:/WINNT)]' \
-  '(--dos --mixed --type --unix --windows -d -m -t -u -w)'{-u,--unix}'[(default) print Unix form of NAME (/cygdrive/c/winnt)]' \
-  '(--dos --mixed --type --unix --windows -d -m -t -u -w)'{-w,--windows}'[print Windows form of NAME (C:\WINNT)]' \
-  '(--dos --mixed --type --unix --windows -d -m -t -u -w)'{-t,--type}':print type:(dos mixed unix windows)' \
+# cygwin 1.5.25
+
+_arguments -s -S \
+  '(--dos --mixed --mode --type --unix --windows -d -m -M -t -u -w)'{-d,--dos}'[print DOS (short) form of specified path (C:\PROGRA~1\)]' \
+  '(--dos --mixed --mode --type --unix --windows -d -m -M -t -u -w)'{-m,--mixed}'[like --windows, but with regular slashes (C:/WINNT)]' \
+  '(--dos --mixed --mode --type --unix --windows -d -m -M -t -u -w)'{-M,--mode}'[report on mode of file (binmode or textmode)]' \
+  '(--dos --mixed --mode --type --unix --windows -d -m -M -t -u -w)'{-u,--unix}'[(default) print Unix form of specified path (/cygdrive/c/winnt)]' \
+  '(--dos --mixed --mode --type --unix --windows -d -m -M -t -u -w)'{-w,--windows}'[print Windows form of specified path (C:\WINNT)]' \
+  '(--dos --mixed --mode --type --unix --windows -d -m -M -t -u -w)'{-t,--type}'[print type]:type:(dos mixed unix windows)' \
   '(--absolute --long-name --path --short-name -a -l -p -s)'{-a,--absolute}'[output absolute path]' \
-  '(--absolute --long-name --path --short-name -a -l -p -s)'{-l,--long-name}'[print Windows long form of NAME (with -w, -m only)]' \
-  "(--absolute --long-name --path --short-name -a -l -p -s)"{-p,--path}"[NAME is a PATH list (i.e., '/bin:/usr/bin')]" \
-  '(--absolute --long-name --path --short-name -a -l -p -s)'{-s,--short-name}'[print DOS (short) form of NAME (with -w, -m only)]' \
+  '(--absolute --long-name --path --short-name -a -l -p -s)'{-l,--long-name}'[print Windows long form of specified path (with -w, -m only)]' \
+  "(--absolute --long-name --path --short-name -a -l -p -s)"{-p,--path}"[specified path is a PATH list (i.e., '/bin:/usr/bin')]" \
+  '(--absolute --long-name --path --short-name -a -l -p -s)'{-s,--short-name}'[print DOS (short) form of specified path (with -w, -m only)]' \
   "(--allusers -A)"{-A,--allusers}"[use 'All Users' instead of current user for -D, -P]" \
   "(--desktop --homeroot --smprograms --sysdir --windir -D -H -P -S -W)"{-D,--desktop}"[output 'Desktop' directory and exit]" \
   "(--desktop --homeroot --smprograms --sysdir --windir -D -H -P -S -W)"{-H,--homeroot}"[output 'Profiles' directory (home root) and exit]" \
   "(--desktop --homeroot --smprograms --sysdir --windir -D -H -P -S -W)"{-P,--smprograms}"[output Start Menu 'Programs' directory and exit]" \
   '(--desktop --homeroot --smprograms --sysdir --windir -D -H -P -S -W)'{-S,--sysdir}'[output system directory and exit]' \
   "(--desktop --homeroot --smprograms --sysdir --windir -D -H -P -S -W)"{-W,--windir}"[output 'Windows' directory and exit]" \
-  '(--file -f)'{-f,--file}':read FILE for input; use - to read from STDIN:_files' \
+  '(--file -f)'{-f,--file}'[read FILE for input; use - to read from STDIN]: :_files' \
   '(--option -o)'{-o,--option}'[read options from FILE as well (for use with --file)]' \
   '(--close -c)'{-c,--close}'[close specified handle (for use in captured process)]:handle' \
   '(--ignore -i)'{-i,--ignore}'[ignore missing argument]' \
-  '(- 1)'{-h,--help}'[display usage information]' \
-  '(- 1)'{-v,--version}'[display version information]' \
-  '1: :_files'  && return 0
+  '(- *)'{-h,--help}'[display usage information]' \
+  '(- *)'{-v,--version}'[display version information]' \
+  '*: :_files'
Index: Completion/Cygwin/Command/_cygrunsrv
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/Cygwin/Command/_cygrunsrv,v
retrieving revision 1.2
diff -u -r1.2 _cygrunsrv
--- Completion/Cygwin/Command/_cygrunsrv	31 Jul 2003 15:26:14 -0000	1.2
+++ Completion/Cygwin/Command/_cygrunsrv	24 Jan 2009 13:39:31 -0000
@@ -1,11 +1,16 @@
 #compdef cygrunsrv cygrunsrv.exe
 
-_arguments  \
+# cygrunsrv 1.34
+
+_arguments -s -S \
   '(-I --install)'{-I,--install}'[install a new service]:service' \
   '(-R --remove)'{-R,--remove}'[remove specified service]:service' \
   '(-S --start)'{-S,--start}'[start specified service]:service' \
   '(-E --stop)'{-E,--stop}'[stop specified service]:service' \
+  '(-Q --query)'{-Q,--query}'[query specified service]:service' \
+  '(-L --list)'{-L,--list}'[lists services that have been installed with cygrunsrv]:server:' \
   '(-p --path)'{-p,--path}'[specify application path which is run as a service]:application path' \
+  '(-P --crs-path)'{-P,--crs-path}'[path to cygrunsrv]:path:_files' \
   '(-a --args)'{-a,--args}'[specify options to give service on startup]:args' \
   '(-c --chdir)'{-c,--chdir}'[specify working directory for the application]:directory:_directories' \
   '(-e --env)'{-e,--env}'[specify environment strings exported to service]:var=value' \
@@ -15,11 +20,17 @@
   '(-u --user)'{-u,--user}'[specify user to start service under]:user:_users' \
   '(-w --passwd)'{-w,--passwd}'[specify password for user]:password' \
   '(-s --termsig)'{-s,--termsig}'[specify signal to use to stop service]:signal:_signals' \
+  '(-z --shutsig)'{-z,--shutsig}'[specify signal to send to service application when shutdown has been initiated]:signal:_signals' \
   '(-y --dep)'{-y,--dep}'[specify name of service that must be started]:service' \
-  '(-0 --stdin)'{-0,--stdin}'[specify file for stdin redirection]:file:_files' \
-  '(-1 --stdout)'{-1,--stdout}'[specify file for stdout redirection]:file:_files' \
-  '(-2 --stderr)'{-2,--stderr}'[specify file for stderr redirection]:file:_files' \
-  '(-o --shutdown)'{-o,--shutdown}'[stop service application during system shutdown]' \
+  '(-0 --stdin)'{-0,--stdin}'[specify file for stdin redirection]:stdin file:_files' \
+  '(-1 --stdout)'{-1,--stdout}'[specify file for stdout redirection]:stdout file:_files' \
+  '(-2 --stderr)'{-2,--stderr}'[specify file for stderr redirection]:stderr file:_files' \
+  '(-x --pidfile)'{-x,--pidfile}'[optional path for .pid file written by application after fork()]:pid file:_files -g "*.pid(-.)"' \
+  '(-n --neverexits)'{-n,--neverexits}'[service should never exit by itself]' \
+  '(-O --preshutdown -o --shutdown)'{-O,--preshutdown}'[stop service application during system preshutdown]' \
+  '(-O --preshutdown -o --shutdown)'{-o,--shutdown}'[stop service application during system shutdown]' \
+  '(-i --interactive)'{-i,--interactive}'[allow service to interact with the desktop (No effect since Windows Vista/Longhorn)]' \
+  '(-j --nohide )'{-j,--nohide}"[don't hide console window when service interacts with desktop]" \
+  '(-V --verbose)'{-V,--verbose}'[when used with --query or --list, causes extra information to be printed]' \
   '(- *)'{-h,--help}'[print help information]' \
-  '(- *)'{-v,--version}'[print version information]' \
-  '*: :_files'
+  '(- *)'{-v,--version}'[print version information]'
Index: Completion/Cygwin/Command/_cygserver
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/Cygwin/Command/_cygserver,v
retrieving revision 1.1
diff -u -r1.1 _cygserver
--- Completion/Cygwin/Command/_cygserver	7 Apr 2003 11:23:18 -0000	1.1
+++ Completion/Cygwin/Command/_cygserver	24 Jan 2009 13:39:31 -0000
@@ -1,13 +1,21 @@
 #compdef cygserver cygserver.exe
-#Generated by Felix Rosencrantz
 
-local context state line
-typeset -A opt_args
-_arguments  \
-  '(--cleanup-threads -c)'{-c,--cleanup-threads}'[number of cleanup threads to use]' \
+# cygwin 1.5.25
+
+_arguments -s -S \
+  '(--config-file -f)'{-f,--config-file}'[use specified file as config file (default /etc/cygserver.conf)]:config file:_files -g "*.conf(-.)"' \
+  '(--cleanup-threads -c)'{-c,--cleanup-threads}'[number of cleanup threads to use (default 2)]:number of threads:' \
+  '(--process-cache -p)'{-p,--process-cache}'[size of process cache]:cache size:' \
+  '(--request-threads -r)'{-r,--request-threads}'[number of request threads to use (default 10)]:number of threads:' \
+  '(--debug -d)'{-d,--debug}'[log debug messages to stderr]' \
+  '(--stderr -e --no-stderr -E)'{-e,--stderr}'[log to stderr (default if stderr is a tty)]' \
+  '(--stderr -e --no-stderr -E)'{-E,--no-stderr}"[don't log to stderr (see -y, -Y options)]" \
+  '(--log-level -l)'{-l,--log-level}'[verbosity of logging (1..7) (default 6)]:verbosity level:({1..7})' \
+  '(--syslog -y --no-syslog -Y)'{-y,--syslog}'[log to syslog (default if stderr is no tty)]' \
+  '(--syslog -y --no-syslog -Y)'{-Y,--no-syslog}"[don't log to syslog (see -e, -E options)]" \
+  '(--no-sharedmem -m)'{-m,--no-sharedmem}"[don't start XSI Shared Memory support]" \
+  '(--no-msgqueues -q)'{-q,--no-msgqueues}"[don't start XSI Message Queue support]" \
+  '(--no-semaphores -s)'{-s,--no-semaphores}"[don't start XSI Semaphore support]" \
+  '(--shutdown -S)'{-S,--shutdown}'[shutdown the daemon]' \
   '(--help -h)'{-h,--help}'[output usage information and exit]' \
-  '(--request-threads -r)'{-r,--request-threads}'[number of request threads to use]' \
-  '(--shutdown -s)'{-s,--shutdown}'[shutdown the daemon]' \
-  '(--version -v)'{-v,--version}'[output version information and exit]' \
-  '*: :_files'
-            
+  '(--version -v)'{-v,--version}'[output version information and exit]'
Index: Completion/Cygwin/Command/_cygstart
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/Cygwin/Command/_cygstart,v
retrieving revision 1.2
diff -u -r1.2 _cygstart
--- Completion/Cygwin/Command/_cygstart	1 Jun 2005 10:02:33 -0000	1.2
+++ Completion/Cygwin/Command/_cygstart	24 Jan 2009 13:39:31 -0000
@@ -1,16 +1,15 @@
 #compdef cygstart cygstart.exe
-#Generated by Felix Rosencrantz
 
-local context state line
-typeset -A opt_args
-_arguments  \
-  '(--action -a)'{-a,--action=-}':Use specified action instead of default:(open edit explore print find)' \
+# cygwin 1.5.25
+
+_arguments -s -S \
+  '(--action -a)'{-a,--action=-}'[use specified action instead of default]:action:(open edit explore print find)' \
   '(--open -o)'{-o,--open}'[short for: --action open]' \
   '(--explore -x)'{-x,--explore}'[short for: --action explore]' \
   '(--edit -e)'{-e,--edit}'[short for: --action edit]' \
   '(--find -f)'{-f,--find}'[short for: --action find]' \
   '(--print -p)'{-p,--print}'[short for: --action print]' \
-  '(--directory -d)'{-d,--directory=-}':Set working directory:_directories' \
+  '(--directory -d)'{-d,--directory=-}'[set working directory]:directory:_directories' \
   '--hide[hides the window and activates another window]' \
   '--maximize[maximizes the specified window]' \
   '--minimize[minimizes the specified window and activates the next top-level window in the z-order]' \
@@ -22,9 +21,10 @@
   '--showna[displays the window in its current state. The active window remains active]' \
   '--shownoactivate[displays a window in its most recent size and position. The active window remains active]' \
   '--shownormal[activates and displays a window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when displaying the window for the first time]' \
-  '(--help -?)'{'-?',--help}'[show this help message]' \
+  '(--help -?)'{-\?,--help}'[display help information]' \
   '--usage[display brief usage message]' \
   '--version[display version information]' \
   '--license[display licensing information]' \
   '--reference[open MSDN reference for ShellExecute]' \
-  '*:program: _command_names -e:*::program arguments: _normal'
+  '1:file: _alternative "programs:program: _command_names -e" "files:file:_files" "urls:URL:_urls"' \
+  '*::program arguments: _normal'
Index: Completion/Cygwin/Command/_dumper
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/Cygwin/Command/_dumper,v
retrieving revision 1.1
diff -u -r1.1 _dumper
--- Completion/Cygwin/Command/_dumper	7 Apr 2003 11:23:18 -0000	1.1
+++ Completion/Cygwin/Command/_dumper	24 Jan 2009 13:39:31 -0000
@@ -1,13 +1,11 @@
 #compdef dumper dumper.exe
-#Generated by Felix Rosencrantz
 
-local context state line
-typeset -A opt_args
-_arguments   \
-  '(--verbose -d)'{-d,--verbose}'[be verbose while dumping]' \
-  '(--help -h)'{-h,--help}'[output help information and exit]' \
-  '(--quiet -q)'{-q,--quiet}'[be quiet while dumping (default)]' \
-  '(--version -v)'{-v,--version}'[output version information and exit]' \
-  '1: :_file' \
+# cygwin 1.5.25
+
+_arguments -s -S \
+  '(--verbose -d --quiet -q)'{-d,--verbose}'[be verbose while dumping]' \
+  '(--verbose -d --quiet -q)'{-q,--quiet}'[be quiet while dumping (default)]' \
+  '(- 1 *)'{-h,--help}'[output help information and exit]' \
+  '(- 1 *)'{-v,--version}'[output version information and exit]' \
+  '1: :_files' \
   '*: :_pids'
-            
Index: Completion/Cygwin/Command/_getclip
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/Cygwin/Command/_getclip,v
retrieving revision 1.2
diff -u -r1.2 _getclip
--- Completion/Cygwin/Command/_getclip	31 Jul 2003 15:26:14 -0000	1.2
+++ Completion/Cygwin/Command/_getclip	24 Jan 2009 13:39:31 -0000
@@ -1,10 +1,12 @@
 #compdef getclip getclip.exe
-#Generated by Felix Rosencrantz
 
-_arguments \
-  '(--dos -d)'{-d,--dos}'[output text will have DOS line endings]' \
-  '(--unix -u)'{-u,--unix}'[output text will have UNIX line endings]' \
-  '(-)'{-\?,--help}'[show this help message]' \
+# cygutils 1.3.2
+
+_arguments -s -S \
+  '(--dos -d --unix -u --no-conv -n)'{-d,--dos}'[output text will have DOS line endings]' \
+  '(--dos -d --unix -u --no-conv -n)'{-u,--unix}'[output text will have UNIX line endings]' \
+  '(--dos -d --unix -u --no-conv -n)'{-n,--no-conv}'[do not translate line endings]' \
+  '(-)'{-\?,--help}'[display help information]' \
   '(-)--usage[display brief usage message]' \
   '(-)--version[display version information]' \
   '(-)--license[display licensing information]'
Index: Completion/Cygwin/Command/_getfacl
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/Cygwin/Command/_getfacl,v
retrieving revision 1.2
diff -u -r1.2 _getfacl
--- Completion/Cygwin/Command/_getfacl	31 Jul 2003 15:26:14 -0000	1.2
+++ Completion/Cygwin/Command/_getfacl	24 Jan 2009 13:39:31 -0000
@@ -1,7 +1,8 @@
 #compdef getfacl getfacl.exe
-#Generated by Felix Rosencrantz
 
-_arguments  \
+# cygwin 1.5.25
+
+_arguments -s -S \
   '(--all -a)'{-a,--all}'[display the filename, owner, group, and ACL of the file]' \
   '(--dir -d)'{-d,--dir}'[display the filename, owner, group, and default ACL of the directory]' \
   '(--noname -n)'{-n,--noname}'[display user and group IDs instead of names]' \
Index: Completion/Cygwin/Command/_mkshortcut
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/Cygwin/Command/_mkshortcut,v
retrieving revision 1.2
diff -u -r1.2 _mkshortcut
--- Completion/Cygwin/Command/_mkshortcut	31 Jul 2003 15:26:14 -0000	1.2
+++ Completion/Cygwin/Command/_mkshortcut	24 Jan 2009 13:39:31 -0000
@@ -1,15 +1,20 @@
 #compdef mkshortcut mkshortcut.exe
 
-_arguments  \
+# cygutils 1.3.2
+
+_arguments -s -S \
   '(--arguments -a)'{-a,--arguments=-}'[use specified arguments]:arguments' \
+  '(--desc -d)'{-d,--desc=-}'[text for description/tooltip (defaults to POSIX path of TARGET)]:description' \
   '(--icon -i)'{-i,--icon=-}'[specify icon file for link to use]:icon file:_files' \
   '(--iconoffset -j)'{-j,--iconoffset=-}'[specify offset of icon in icon file]:offset' \
   '(--name -n)'{-n,--name=-}'[specify name for link]:file:_files' \
+  '(--show -s)'{-s,--show=-}'[window to show: normal, minimized, maximized]:window state:(norm min max)' \
+  '(--workingdir -w)'{-w,--workingdir=-}'[set working directory (defaults to directory path of TARGET)]:working directory:_files -/' \
   '(--allusers -A)'{-A,--allusers}"[use 'All Users' instead of current user for -D,-P]" \
-  '(--desktop -D)'{-D,--desktop}"[create link relative to 'Desktop' directory]" \
-  '(--smprograms -P)'{-P,--smprograms}"[create link relative to Start Menu 'Programs' directory]" \
-  '(- 1)'{-h,--help}'[show help information]' \
+  '(--desktop -D --smprograms -P)'{-D,--desktop}"[create link relative to 'Desktop' directory]" \
+  '(--desktop -D --smprograms -P)'{-P,--smprograms}"[create link relative to Start Menu 'Programs' directory]" \
+  '(- 1)'{-h,--help}'[display help information]' \
   '(- 1)--usage[display brief usage message]' \
-  '(- 1)'{-v,--version}'[show version information]' \
+  '(- 1)'{-v,--version}'[display version information]' \
   '(- 1)--license[display licensing information]' \
   '1:target:_files'
Index: Completion/Cygwin/Command/_mkzsh
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/Cygwin/Command/_mkzsh,v
retrieving revision 1.1
diff -u -r1.1 _mkzsh
--- Completion/Cygwin/Command/_mkzsh	7 Apr 2003 11:23:18 -0000	1.1
+++ Completion/Cygwin/Command/_mkzsh	24 Jan 2009 13:39:31 -0000
@@ -1,10 +1,7 @@
 #compdef mkzsh mkzsh.exe
-#Generated by Felix Rosencrantz
 
-local context state line
-typeset -A opt_args
-_arguments \
+_arguments -s -S \
   '(--allusers -A)'{-A,--allusers}'[creates item for All Users instead of just current user]' \
   '(--desktop -D)'{-D,--desktop}'[creates a Desktop icon for running /zsh.bat]' \
   '(--smprograms -P)'{-P,--smprograms}'[creates a Program menu item for running /zsh.bat]' \
-  '(--help -h)'{-h,--help}'[prints usage]'
+  '(--help -h)'{-h,--help}'[display help information]'
Index: Completion/Cygwin/Command/_putclip
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/Cygwin/Command/_putclip,v
retrieving revision 1.2
diff -u -r1.2 _putclip
--- Completion/Cygwin/Command/_putclip	31 Jul 2003 15:26:14 -0000	1.2
+++ Completion/Cygwin/Command/_putclip	24 Jan 2009 13:39:31 -0000
@@ -1,10 +1,12 @@
 #compdef putclip putclip.exe
-#Generated by Felix Rosencrantz
 
-_arguments \
-  '(--dos -d)'{-d,--dos}'[clipboard text will have DOS line endings]' \
-  '(--unix -u)'{-u,--unix}'[clipboard text will have UNIX line endings]' \
-  '(-)'{'-?',--help}'[show this help message]' \
+# cygutils 1.3.2
+
+_arguments -s -S \
+  '(--dos -d --unix -u --no-conv -n)'{-d,--dos}'[clipboard text will have DOS line endings]' \
+  '(--dos -d --unix -u --no-conv -n)'{-u,--unix}'[clipboard text will have UNIX line endings]' \
+  '(--dos -d --unix -u --no-conv -n)'{-n,--no-conv}'[do not translate line endings]' \
+  '(-)'{-\?,--help}'[display help information]' \
   '(-)--usage[display brief usage message]' \
   '(-)--version[display version information]' \
   '(-)--license[display licensing information]'
Index: Completion/Cygwin/Command/_readshortcut
===================================================================
RCS file: Completion/Cygwin/Command/_readshortcut
diff -N Completion/Cygwin/Command/_readshortcut
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ Completion/Cygwin/Command/_readshortcut	24 Jan 2009 13:39:32 -0000
@@ -0,0 +1,21 @@
+#compdef readshortcut readshortcut.exe
+
+# cygutils 1.3.2
+
+_arguments -s -S \
+  '(--fields -f)'{-f,--fields}'[show field names]' \
+  '(--unix -u --windows -w)'{-u,--unix}'[use Unix path format for display (default)]' \
+  '(--unix -u --windows -w)'{-w,--windows}'[use Windows path format for display ]' \
+  '(--target -t)'{-t,--target}'[display shortcut target]' \
+  '(--working -g)'{-g,--working}'[display shortcut working directory]' \
+  '(--args -r)'{-r,--args}'[display shortcut arguments]' \
+  '(--showcmd -s)'{-s,--showcmd}'[display shortcut "show" command value]' \
+  '(--icon -i)'{-i,--icon}'[display icon library location]' \
+  '(--offset -j)'{-j,--offset}'[display icon library offset]' \
+  '(--desc -d)'{-d,--desc}'[display shortcut description]' \
+  '(--all -a)'{-a,--all}'[display all information]' \
+  '(- 1)'{-h,--help}'[display help information]' \
+  '(- 1)--usage[display brief usage message]' \
+  '(- 1)'{-v,--version}'[display version information]' \
+  '(- 1)--license[display licensing information]' \
+  '1:shortcut:_files -g "*.lnk(-.)"'
Index: Completion/Cygwin/Command/_setfacl
===================================================================
RCS file: Completion/Cygwin/Command/_setfacl
diff -N Completion/Cygwin/Command/_setfacl
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ Completion/Cygwin/Command/_setfacl	24 Jan 2009 13:39:32 -0000
@@ -0,0 +1,13 @@
+#compdef setfacl setfacl.exe
+
+# cygwin 1.5.25
+
+_arguments -s -S \
+  '(-d, --delete)'{-d,--delete}'[delete one or more specified ACL entries]:ACL entry:' \
+  '(-f, --file)'{-f,--file}'[set ACL entries for FILE to ACL entries read from a ACL_FILE]:ACL file:_files' \
+  '(-m, --modify)'{-m,--modify}'[modify one or more specified ACL entries]:ACL entry:' \
+  '(-r, --replace)'{-r,--replace}'[replace mask entry with maximum permissions needed for the file group class]' \
+  '(-s, --substitute)'{-s,--substitute}'[substitute specified ACL entries for the \[ACL of FILE\]]:ACL entry:' \
+  '(- *)'{-h,--help}'[output usage information and exit]' \
+  '(- *)'{-v,--version}'[output version information and exit]' \
+  '*: :_files'


^ permalink raw reply	[relevance 1%]

* POSIX and the "&>" operator
@ 2009-02-06 22:50  9% ` Bart Schaefer
  2009-02-07  0:02  9%   ` Peter Stephenson
  2009-02-10  2:11  5%   ` Vincent Lefevre
  0 siblings, 2 replies; 200+ results
From: Bart Schaefer @ 2009-02-06 22:50 UTC (permalink / raw)
  To: zsh-workers

The following is part of an exchange on the austin-group mailing list.
The assertion is that "foo&>bar" has a well-defined semantics in POSIX
sh and therefore the bash extension (which zsh adopted) to make "&>" a
synonym for "2>&1 >" is in violation of POSIX compliance.

(I tried to send a follow-up to the austin-group about it, but I can't
figure out with what email address they think I'm subscribed, and the
list won't accept mail from non-subscribers.)

This is interesting for two reasons:
(1) I suspect that when zsh is emulating a POSIX shell, it should avoid
treating "&>" as a token and instead parse it as "&" ">"
(2) I'm puzzled by Korn's assertion that some syntax like "&|" is an
"invalid extension", as opposed for example to ">;"


---------- Forwarded message ----------
Date: Thu, 5 Feb 2009 12:19:52 -0500
From: Glenn Fowler <gsf@research.att.com>
To: austin-group-l@opengroup.org
Subject: shell redirection question
Resent-Date: 5 Feb 2009 17:20:33 -0000
Resent-From: austin-group-l@opengroup.org
Resent-To: austin-group-l@opengroup.org


in the posix shell grammar ';' and '&' are syntactically equivalent

so these two commands, modulo one being in the background,
should produce the same output ("stdout" to stdout, "stderr" to stderr):

sh -c "( echo stdout; echo stderr >&2 ) ;>/dev/null; wait"
sh -c "( echo stdout; echo stderr >&2 ) &>/dev/null; wait"

ksh produces the same output for both cases
i.e., it treats ';' and '&' as command separators

bash, even with --posix, and zsh, treat the '&>/dev/null'
as '>/dev/null 2>&1'

is a shell implementation permitted to treat
'&>/dev/null' as '>/dev/null 2>&1' ?

-- Glenn Fowler -- AT&T Research, Florham Park NJ --


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

Date: Thu, 5 Feb 2009 16:52:21 -0500
From: David Korn <dgk@research.att.com>
To: austin-group-l@opengroup.org, chet.ramey@case.edu
Subject:  Re: Re: shell redirection question

cc: chet.ramey@case.edu
Subject: Re: Re: shell redirection question
--------

> Chet Ramey <chet.ramey@case.edu> writes:
> 
> >> is a shell implementation permitted to treat
> >> '&>/dev/null' as '>/dev/null 2>&1' ?
> >
> > This is a documented bash extension.  It's not posix.  As such, it's
> > probably not appropriate for the group to decide.
> 
> Certainly it's not appropriate for the group to decide what extensions
> Bash should make, but here it seems clear that Bash and zsh do not
> conform to the current POSIX spec here.  Either the POSIX spec should
> change, or bash (with --posix) should change.  I prefer the former,
> that is, I suggest modifying POSIX so that "&>" leads to
> implementation-defined behavior.
> 
> 

Of course the group cann't say what extensions any shell should make,
but they can indicate whether an extension is compatible with posix.

When you run ksh93 with the -n option, it produces a warning whenever
it finds &< without a space in between.  The only time I have ever
seen this warning is when a script intended for bash was run so
I would say that &< in any other context is exceedingly rare.

Excluding the ( and ) operators, I have a list below of all the other
two character operator characters and how they are used.

The wording in the standard under token recognition, says, "If the
previous character was uses as part of an operator and the current
character is not quoted and can be used with the current characters
to form an operator, it should be used as part of that (operator)
token."

The grammar section also list which operators are defined double character
operators.  However, the standard doesn't state how extensions
should be made.  ksh93 has used the rule that if the second character
would generate a syntax error, then it is a valid extension.

Maybe, ;<, ;>, &< and &> should produce unspecified behavior without
an interviening space so that these can be used as an extension.
Minimally &> is commonly used in bash so this might be considered
a legal extension.

<<	used by posix
<>	used by posix
<;	valid extension
<|	valid extension
<&	used by posix
><	valid extension
>>	used by posix
>;	valid extension used by ksh93
>|	used by posix
>&	used by posix
;<	invalid extension
;>	invalid extension
;;	used by posix
;|	valid extension
;&	valid extension used by ksh93
|<	invalid extension
|>	invalid extension
|;	valid extension
||	used by posix
|&	valid extension used by ksh93
&<	invalid extension
&>	invalid extension used by bash
&;	valid extension
&|	invalid extension
&&	used by posix

ksh93 also uses <# and ># which are valid extensions.
	

David Korn
dgk@research.att.com


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

-- 


^ permalink raw reply	[relevance 9%]

* Re: POSIX and the "&>" operator
  2009-02-06 22:50  9% ` POSIX and the "&>" operator Bart Schaefer
@ 2009-02-07  0:02  9%   ` Peter Stephenson
  2009-02-07  3:51  9%     ` Bart Schaefer
  2009-02-10  2:11  5%   ` Vincent Lefevre
  1 sibling, 1 reply; 200+ results
From: Peter Stephenson @ 2009-02-07  0:02 UTC (permalink / raw)
  To: zsh-workers

Bart Schaefer wrote:
> The following is part of an exchange on the austin-group mailing list.
> The assertion is that "foo&>bar" has a well-defined semantics in POSIX
> sh and therefore the bash extension (which zsh adopted) to make "&>" a
> synonym for "2>&1 >" is in violation of POSIX compliance.

I think both got it from csh, which is why nobody thought about POSIX
compatibility---apart from the fact that the combination of (i) putting
a new command on the same line as backgrounded expression (ii) not
putting a space after the "&" (iii) starting the following command with
a redirection, while perfectly valid traditional sh syntax, is a very
strange way to write.

-- 
Peter Stephenson <p.w.stephenson@ntlworld.com>
Web page now at http://homepage.ntlworld.com/p.w.stephenson/


^ permalink raw reply	[relevance 9%]

* Re: POSIX and the "&>" operator
  2009-02-07  0:02  9%   ` Peter Stephenson
@ 2009-02-07  3:51  9%     ` Bart Schaefer
  2009-02-07 22:48  9%       ` Peter Stephenson
  0 siblings, 1 reply; 200+ results
From: Bart Schaefer @ 2009-02-07  3:51 UTC (permalink / raw)
  To: zsh-workers

On Feb 7, 12:02am, Peter Stephenson wrote:
}
} I think both got it from csh, which is why nobody thought about POSIX

No, csh uses ">&" with no descriptor numbers around it, which zsh also
supports.  "&>" wasn't added to zsh until around version 2.5 (I forget
the exact timeline) and was added for bash compatibility.


^ permalink raw reply	[relevance 9%]

* Re: POSIX and the "&>" operator
  2009-02-07  3:51  9%     ` Bart Schaefer
@ 2009-02-07 22:48  9%       ` Peter Stephenson
  0 siblings, 0 replies; 200+ results
From: Peter Stephenson @ 2009-02-07 22:48 UTC (permalink / raw)
  To: zsh-workers

On Fri, 06 Feb 2009 19:51:09 -0800
Bart Schaefer <schaefer@brasslantern.com> wrote:
> On Feb 7, 12:02am, Peter Stephenson wrote:
> }
> } I think both got it from csh, which is why nobody thought about POSIX
>
> No, csh uses ">&" with no descriptor numbers around it, which zsh also
> supports.  "&>" wasn't added to zsh until around version 2.5 (I forget
> the exact timeline) and was added for bash compatibility.

You're right.

We really ought to have a POSIX emulation separate from sh.  I have a
feeling we've discussed this before.

-- 
Peter Stephenson <p.w.stephenson@ntlworld.com>
Web page now at http://homepage.ntlworld.com/p.w.stephenson/


^ permalink raw reply	[relevance 9%]

* Re: POSIX and the "&>" operator
  2009-02-06 22:50  9% ` POSIX and the "&>" operator Bart Schaefer
  2009-02-07  0:02  9%   ` Peter Stephenson
@ 2009-02-10  2:11  5%   ` Vincent Lefevre
  1 sibling, 0 replies; 200+ results
From: Vincent Lefevre @ 2009-02-10  2:11 UTC (permalink / raw)
  To: zsh-workers

On 2009-02-06 14:50:29 -0800, Bart Schaefer wrote:
> The following is part of an exchange on the austin-group mailing list.
> The assertion is that "foo&>bar" has a well-defined semantics in POSIX
> sh and therefore the bash extension (which zsh adopted) to make "&>" a
> synonym for "2>&1 >" is in violation of POSIX compliance.

IMHO, this is not clear. I agree with David Korn when he says:

----------------------------------------------------------------------
The way the standard is written, the grammar lists operators
that are required.  It doesn't say whether implementations
can support operators that aren't listed.

In section 2.3, token recognition, the standard says:

2.      If the previous character was used as part of an operator
        and the current character is not quoted and can be used
        with the current characters to form an operator, it shall
        be used as part of that (operator) token.


If implementations are allowed to provide additional operators,
then this requires that conforming script leave a space after
every operator character.   This would mean that
        command &> file
is not conforming.
----------------------------------------------------------------------

On 2009-02-07 22:48:39 +0000, Peter Stephenson wrote:
> We really ought to have a POSIX emulation separate from sh.  I have a
> feeling we've discussed this before.

Yes, at least here:
  http://www.zsh.org/mla/workers/2007/msg00852.html
  http://www.zsh.org/mla/workers/2008/msg00342.html

-- 
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 / Arenaire project (LIP, ENS-Lyon)


^ permalink raw reply	[relevance 5%]

Results 601-800 of ~2400   |  | reverse | sort options + mbox downloads above
-- links below jump to the message on this page --
2005-03-15 16:38  1% Problem with the configure script (2.4.2) Mike Dowling
2005-03-19 15:44  0% ` Philippe Troin
2005-03-19 15:52  0% ` Andrey Borzenkov
2005-03-17 14:31     problem redeclaring path variable (ksh incompatibility) Michael Wardle
2005-03-17 16:50     ` Bart Schaefer
2005-03-17 21:42       ` Michael Wardle
2005-03-18  2:42  4%     ` Bart Schaefer
     [not found]     <20050401080620.GA16347@vandal.simcon-mt.de>
     [not found]     ` <20050401080914.GB16347@vandal.simcon-mt.de>
     [not found]       ` <424D152C.2030006@free.fr>
     [not found]         ` <20050401123620.GA2607@ppe.happygiraffe.net>
     [not found]           ` <424D4A38.6010607@free.fr>
     [not found]             ` <20050405072940.GA9105@a5.repetae.net>
2005-04-05 13:03  1%           ` completion for darcs Peter Stephenson
     [not found]     <E1DIsyg-0002EX-S2@soup>
2005-04-05 19:06  0% ` Bug#303278: zsh: completions for gv are for pre 3.6 Clint Adams
2005-04-06  8:27  3%   ` Oliver Kiddle
2005-04-06 15:29  0%     ` Clint Adams
2005-04-28 11:41     PATCH: character sets for internal zsh tests Peter Stephenson
2005-04-28 14:54  3% ` Bart Schaefer
     [not found]     <200505261638.SAA09610@sdt.univ-brest.fr>
2005-05-26 19:15     ` Bug#310872: zsh can't be a ksh replacement (can't trap ERR) Clint Adams
2005-05-27 12:50       ` Christophe Martin
2005-05-30 14:06         ` Clint Adams
2005-05-30 18:41           ` Bart Schaefer
2005-06-01  8:25  3%         ` Oliver Kiddle
2005-06-10 20:07  3% ZLE Unicode support status Alexey Tourbin
2005-06-17  0:58     printf bug(s?) Harald van Dijk
2005-06-17  8:15     ` Oliver Kiddle
2005-06-17 13:22       ` Harald van Dijk
2005-06-17 13:48         ` J
2005-06-17 15:47  3%       ` Bart Schaefer
2005-06-21  9:19  3%         ` Oliver Kiddle
2005-06-22 13:11     PATCH: new shells completion type Doug Kearns
2005-06-22 14:07     ` Stephane Chazelas
2005-06-23 10:12  4%   ` Doug Kearns
2005-07-24  2:15  3% PATCH: Expansion of \c escape sequences Thorsten Dahlheimer
2005-07-24  5:52  0% ` Wayne Davison
2005-07-28 18:30  4% PATCH: missing ioctl() prototype on cygwin Thorsten Dahlheimer
     [not found]     <E1DbmAA-0008VQ-VC@localhost.localdomain>
2005-08-05 23:56  6% ` Bug#311020: zsh: buggy _man completion Clint Adams
2005-08-07  9:10  1% Russian FAQ UVV
2005-08-17 15:08     SunOS build failures for the last 2 days Vin Shelton
2005-08-17 17:15     ` Wayne Davison
2005-08-17 18:52  1%   ` Vin Shelton
2005-09-03 11:17  4% getopts does not follow SUS DervishD
2005-09-30 12:07  4% PATCH: source tree documentation Peter Stephenson
2005-10-24 19:33     [ramk@cse.iitm.ernet.in: Bug#335190: zsh: Enhancements to zsh-mime-handler] Clint Adams
2005-10-25 22:45  3% ` Peter Stephenson
2005-12-09 12:45  3% PATCH: minor documentation stuff Peter Stephenson
2006-01-31 12:25  9% zsh: jobs -p is not POSIX-compliant Vincent Lefevre
2006-02-09 23:32     Libtool/zsh quoting problem David Gómez
2006-02-10  8:46  3% ` DervishD
2006-02-11 10:21     ` [SOLVED] Libtool/zsh quoting problem: a zsh... bug? Andrey Borzenkov
2006-02-11 18:14       ` Wayne Davison
2006-02-12  7:46  4%     ` Andrey Borzenkov
2006-02-11 12:22  3% Word splitting with zsh fix DervishD
2006-02-12  8:56     ` Ralf Wildenhues
2006-02-12 10:33       ` DervishD
2006-02-13 16:52 14%     ` Ralf Wildenhues
2006-02-12 15:05  0% ` Roumen Petrov
2006-02-16 11:00  2% Changes for dev-4 Peter Stephenson
2006-02-17 14:28  3% [4.2/4.3] Bug with wait and trapped signals Vincent Lefevre
2006-02-18 17:31  0% ` Peter Stephenson
2006-02-24 22:20  3% problem with _expand (I think) Wayne Davison
2006-03-17 10:08     zsh 4.3.2 bug François-Xavier Coudert
2006-03-17 17:18     ` goetz fischer
2006-03-17 17:45       ` François-Xavier Coudert
2006-03-17 18:46         ` Wayne Davison
2006-03-17 23:09  3%       ` FX Coudert
     [not found]     <200603261840.k2QIeOMG004524@pwslaptop.csr.com>
2006-03-26 20:47  3% ` cd - and $OLDPWD, bug in the manual? Bart Schaefer
2006-03-31 14:19  2% [ramk@cse.iitm.ernet.in: Bug#359992: zsh: Enable use of IP addresses and multiple host files in _hosts] Clint Adams
2006-03-31 14:22  2% [ramk@cse.iitm.ernet.in: Bug#339635: zsh: zsh-mime-handler used even in the case of executable files] Clint Adams
2006-04-02 16:50  5% Bug#346162: zsh: jobs -p is not POSIX-compliant Clint Adams
2006-04-03  4:54  9% Bart Schaefer
2006-04-05 10:14  5% [ramk@cse.iitm.ernet.in: Bug#339635: zsh: zsh-mime-handler used even in the case of executable files] Peter Stephenson
2006-04-07 15:04     [RFE] %a support in printf builtin (when available) Vincent Lefevre
2008-01-24 11:58  3% ` Vincent Lefevre
2006-04-09 21:38  1% PATCH: multibyte characters in patterns Peter Stephenson
2006-04-26  4:34  3% [ramk@cse.iitm.ernet.in: Bug#364708: zsh: Recognizing --no-status option in mpc completion] Clint Adams
2006-05-28 18:39  4% PATCH: _mount (updates & fixes) Clint Adams
2006-07-05 12:14  3% Questions about character types Peter Stephenson
2006-07-05 16:31  3% ` Bart Schaefer
2006-07-10 12:51  2%   ` Peter Stephenson
2006-08-01 20:44  4% PATCH: multibyte odds and ends Peter Stephenson
2006-08-03 18:06     PATCH: autoconf test for multibyte support Peter Stephenson
2006-08-04 14:50  4% ` Peter Stephenson
     [not found]     <20060820071833.GA3850@localdomain>
2006-08-20 17:01     ` completion bug in UTF-8 locale Peter Stephenson
2006-08-20 20:08  6%   ` Roman Cheplyaka
2006-09-01 15:56     zsh hangs on AIX 4.3.3 Gene Carter
2006-09-07 18:43  3% ` Peter Stephenson
     [not found]     <20060909190321.4014.89342.reportbug@mulj>
2006-09-09 20:52  0% ` Bug#386730: zsh: printf doesn't handle single-digit and two-digit octal escapes Clint Adams
2006-09-14 21:02     Core dump with latest CVS Vin Shelton
2006-09-15  9:57     ` Peter Stephenson
2006-09-15 13:08  3%   ` Peter Stephenson
2006-09-19 16:23     set - $foo resets set -x Andrey Borzenkov
2006-09-19 16:54     ` Peter Stephenson
2006-09-20  4:52       ` Bart Schaefer
2006-09-20 15:40         ` Andrey Borzenkov
2006-09-20 16:04  3%       ` Bart Schaefer
2006-09-22 19:25  5% PATCH: fix tests under non-usual locale Andrey Borzenkov
     [not found]     <20060904202352.11101.qmail@web36812.mail.mud.yahoo.com>
     [not found]     ` <060904141156.ZM9449@torch.brasslantern.com>
     [not found]       ` <20060904231639.GB5162@scowler.net>
2006-10-07  8:03  5%     ` A POSIX and a UTF-8 question Clint Adams
2006-10-23  6:55  3% expert help sought [offtopic] Helmut Jarausch
2006-10-23 12:04  3% ` Roman Neuhauser
2006-12-15 10:04     Is wait not interruptable? Dave Yost
     [not found]     <pws@csr.com>
2006-12-15 12:05     ` Peter Stephenson
2006-12-15 21:00  3%   ` Peter Stephenson
2006-12-16 21:37  2%     ` Bart Schaefer
2006-12-17 16:00  0%       ` Peter Stephenson
2006-12-27 14:58     printf %b Stephane Chazelas
2007-01-04 15:36     ` Peter Stephenson
2007-01-04 16:32  3%   ` Stephane Chazelas
2007-01-04 17:07  0%     ` Peter Stephenson
2007-01-09 21:35  2% PATCH: printf width with multibyte characters Peter Stephenson
     [not found]     <184104.7951.qm@web36811.mail.mud.yahoo.com>
     [not found]     ` <200701282157.l0SLveDn003073@pwslaptop.csr.com>
2007-02-02 21:32  3%   ` zsh handling of non-standard if-evaluations Peter Stephenson
2007-03-08 19:27  4% "jobs" command within substitution Micah Cowan
     [not found]     ` <17393e3e0703081155o7a240628t49fae220ac9f49ae@mail.gmail.com>
     [not found]       ` <45F070A9.5060502@cowan.name>
2007-03-08 21:19  0%     ` Matt Wozniski
2007-03-08 22:00  3%       ` Micah Cowan
2007-04-17  9:00     Bug in ulimit ? David Peer
2007-04-17  9:30     ` Micah Cowan
2007-04-17  9:42       ` Stephane Chazelas
2007-04-17 10:04         ` Micah Cowan
2007-04-17 10:49  3%       ` Micah Cowan
2007-04-26  4:19     PATCH: =~ regex match Phil Pennock
2007-04-26  9:31     ` Peter Stephenson
2007-04-26 20:19  3%   ` Phil Pennock
2007-04-27  9:33  3%     ` Peter Stephenson
2007-04-27 21:35  3% PATCH: and query for malloc(0) Peter Stephenson
2007-04-30  3:29  3% ` Geoff Wing
2007-04-30  9:22  0%   ` Peter Stephenson
     [not found]     <zsh-workers+phil.pennock@spodhuis.org>
2007-04-28  7:56  1% ` PATCH: zsh/regex and =~ Phil Pennock
2007-04-28  8:20  6%   ` Phil Pennock
2007-04-29  0:51  0%   ` Phil Pennock
2007-04-29 15:16  3%   ` Peter Stephenson
2007-04-29 15:28  3%     ` Peter Stephenson
2007-05-01 21:59  2%   ` Peter Stephenson
2007-04-30  0:52  2% exec -l Dave Yost
2007-04-30  2:48  3% ` Phil Pennock
2007-05-01  0:26     [PATCH] exec compatibility Phil Pennock
2007-05-04 12:00     ` Peter Stephenson
2007-05-07  5:56  3%   ` Bart Schaefer
2007-05-10  8:25     problems with 4.3.4 and Tru64 Timo Aaltonen
2007-05-10  9:55     ` Peter Stephenson
2007-05-10 10:06       ` Timo Aaltonen
2007-05-10 10:15         ` Timo Aaltonen
2007-05-10 10:30           ` Peter Stephenson
2007-05-10 11:03  1%         ` Timo Aaltonen
2007-06-01  9:57     alias -s doesn't friendly deal with programs having an extension Maddi Kopfermann
2007-06-01 10:29     ` Peter Stephenson
2007-06-01 10:50       ` Maddi Kopfermann
2007-06-01 11:00         ` Peter Stephenson
2007-06-03 21:18           ` Michael Prokop
2007-06-04 11:59  3%         ` Peter Stephenson
2007-06-24 15:13  6% PATCH: _git grep Clint Adams
     [not found]     <f36b08ee0707110152m7f7b7215j364d469209793c27@mail.gmail.com>
     [not found]     ` <20070711112512.3abd2809@news01.csr.com>
2007-07-11 11:16       ` command-not-found handler Peter Stephenson
2007-07-11 17:44  3%     ` Phil Pennock
     [not found]     <Xns996C883213985zzappergmailcom@80.91.229.5>
     [not found]     ` <200707131248.l6DCmHAI018710@news01.csr.com>
2007-07-13 13:22       ` Substituting all but a trailing digit/number zzapper
2007-07-13 13:36  3%     ` Stephane Chazelas
2007-07-25 15:09     putenv()/environ bug Sean C. Farley
2007-07-25 20:53     ` Peter Stephenson
2007-07-26  0:14       ` Sean C. Farley
2007-07-28 18:46         ` Andrey Borzenkov
2007-07-29 19:08           ` Sean C. Farley
2007-07-30 20:39  2%         ` Peter Stephenson
2007-07-30 22:39  0%           ` Sean C. Farley
2007-07-27 17:49  1% Not finding iconv and pcre Renato Botelho
2007-08-03 12:56  4% [PATCH] Many missing options for git-diff zsh completion Matthieu Moy
2007-08-17 19:29     inconsistent behavior observed with export VAR=VAL versus VAR=VAL zsh 4.2.6 Nex Magik
2007-08-17 22:15     ` Peter Stephenson
2007-08-18  9:46  4%   ` Peter Stephenson
2007-08-21 22:57  4% Bug#439036: chgrp builtin from zsh/files does not dereference symlinks (non-POSIX) Clint Adams
2007-09-25 15:59  1% PATCH: _git (large) Clint Adams
2007-10-09 12:40  4% bug in patterns used for filename expansion (e.g. a[b/c]d) Vincent Lefevre
2007-10-09 12:59  0% ` Peter Stephenson
2007-10-09 14:12  3%   ` Vincent Lefevre
2007-10-09 14:46  4%     ` Peter Stephenson
2007-10-09 15:24  4%     ` Bart Schaefer
2007-10-09 15:00  4%   ` Stephane Chazelas
     [not found]     <20071126031203.11847.39822.reportbug@itchy>
2007-11-26  3:25  0% ` Bug#452915: zsh segfaults when doing: export TERM=dumb; export TERM=xterm; export TERM=dumb Clint Adams
2007-11-30 19:35     deadlock caused by gettext usage in a signal handler Guillaume Chazarain
2007-12-03 22:43     ` Peter Stephenson
2007-12-04 18:02  3%   ` Guillaume Chazarain
2007-11-30 22:29  5% PATCH: _find: new options arno
     [not found]     <20071205200825.148710@gmx.net>
2007-12-06 15:54     ` Bug#451382: i18n is NOT so easy! Clint Adams
2007-12-06 16:08       ` Ismail Dönmez
2007-12-06 16:10         ` Clint Adams
2007-12-07 10:44           ` Peter Stephenson
2007-12-07 14:11             ` Peter Stephenson
2007-12-07 17:15               ` Clint Adams
2007-12-07 17:26                 ` Peter Stephenson
2007-12-09 18:01                   ` Peter Stephenson
2007-12-09 22:49  2%                 ` Bart Schaefer
2007-12-11 12:54     "set -o foo" does not fail / does not abort the shell Vincent Lefevre
2007-12-11 13:56     ` Peter Stephenson
2007-12-11 16:35  3%   ` Bart Schaefer
2007-12-11 16:39  0%     ` Peter Stephenson
2008-02-26 13:18     Failed tests of zsh 4.3.5 in Solaris 10 w/Sun Studio 12 CC Dagobert Michelsen
2008-02-26 14:14     ` Peter Stephenson
2008-02-26 14:42       ` Dagobert Michelsen
2008-02-26 14:57         ` Peter Stephenson
2008-02-26 15:18           ` Dagobert Michelsen
2008-02-26 16:10  4%         ` * " Peter Stephenson
2008-03-04  1:29  8% printf %s in UTF-8 is not POSIX-compliant Vincent Lefevre
2008-03-04  1:37  9% ` Vincent Lefevre
2008-03-04  9:40  5% ` Peter Stephenson
2008-03-05  0:27  9%   ` Vincent Lefevre
2008-03-05  1:34  9%     ` Bart Schaefer
2008-03-06  1:27  5%       ` Vincent Lefevre
2008-03-05 10:41 10%     ` Peter Stephenson
2008-03-06  1:39 10%       ` Vincent Lefevre
2008-03-06  9:46  9%         ` Peter Stephenson
2008-03-06 17:09  9%       ` Bart Schaefer
2008-03-06 17:45  4%         ` Peter Stephenson
2008-03-07  2:29  8%           ` Bart Schaefer
2008-04-13 16:54     PATCH: (large) initial support for combining characters in ZLE Peter Stephenson
2008-04-14 12:00  4% ` Peter Stephenson
2008-04-16 17:45  6% PATCH: _git tweaks Clint Adams
2008-04-22 10:50  1% PATCH: alternative wcwidth() implementation Peter Stephenson
2008-04-22 16:15  0% ` Peter Stephenson
2008-04-23 10:33  0%   ` Peter Stephenson
     [not found]     <20080506144208.GA15225@lapse.madduck.net>
2008-05-06 15:03     ` Bug#479764: shell builtin mv fails to move files across devices Clint Adams
2008-05-06 15:45       ` Bart Schaefer
2008-05-06 16:55         ` martin f krafft
2008-05-06 20:55  3%       ` Phil Pennock
2008-05-06 18:52  3%   ` Stephane Chazelas
2008-05-13 15:55  4% New completions for awk cut join sort - attached Omari Norman
2008-05-13 16:07  0% ` Stephane Chazelas
2008-05-13 16:11  0% ` Peter Stephenson
2008-06-07 20:34  4% PATCH: rewrite of completion matching Peter Stephenson
2008-06-12  9:57     arithmetic operator precedence Stephane Chazelas
2008-06-12 13:40     ` Peter Stephenson
2008-06-12 14:47       ` Bart Schaefer
2008-06-12 15:01         ` Stephane Chazelas
2008-06-16  8:17  3%       ` Vincent Lefevre
2008-06-16  8:07     ` Vincent Lefevre
2008-06-16 13:42       ` Peter Stephenson
2008-06-16 13:59  3%     ` Stephane Chazelas
2008-06-16 14:33  0%       ` Vincent Lefevre
2008-06-17  9:19         ` Richard Hartmann
2008-06-17  9:45  3%       ` Stephane Chazelas
2008-06-17 10:24  0%         ` Richard Hartmann
2008-06-17 10:24  0%           ` Richard Hartmann
2008-06-17 10:38  3%           ` Stephane Chazelas
2008-06-17 10:43                 ` Peter Stephenson
2008-06-17 11:28  3%               ` Vincent Lefevre
2008-06-17 11:46                     ` Peter Stephenson
2008-06-17 12:05  4%                   ` Vincent Lefevre
2008-06-19  9:37                       ` Jun T.
2008-06-19  9:54  5%                     ` Stephane Chazelas
2008-06-19 16:00  5%                       ` Vincent Lefevre
2008-06-19 16:20  5%                         ` Stephane Chazelas
2008-06-19 17:14  3%                           ` Vincent Lefevre
2008-06-19  9:58                         ` Peter Stephenson
2008-06-19 12:29  3%                       ` Richard Hartmann
2008-06-19 16:04  3%                         ` Vincent Lefevre
2008-06-19 16:10  0%                           ` Mikael Magnusson
2008-06-19 16:27  0%                             ` Stephane Chazelas
2008-06-17 10:45  0%             ` Richard Hartmann
2008-06-17 11:38  0%             ` Vincent Lefevre
2008-06-17 11:19  0%         ` Vincent Lefevre
2008-06-17 11:57  4%           ` Stephane Chazelas
2008-06-17 12:35  4%             ` Vincent Lefevre
2008-06-17 12:46  5%               ` Stephane Chazelas
2008-06-17 13:02  4%                 ` Vincent Lefevre
2008-06-17 13:20  5%                   ` Stephane Chazelas
2008-06-17 14:33  5%                     ` Vincent Lefevre
2008-06-17 14:53  4%                       ` Stephane Chazelas
2008-06-17 15:49  4%                         ` Vincent Lefevre
2008-06-17 14:35  3%                     ` Stephane Chazelas
2008-06-17 15:05  4%                       ` Vincent Lefevre
2008-06-17 10:41     environment settings Vincent Lefevre
2008-06-17 12:58     ` Stephane Chazelas
2008-06-17 13:11       ` Vincent Lefevre
2008-06-17 13:26         ` Stephane Chazelas
2008-06-17 13:28           ` Mikael Magnusson
2008-06-17 14:25             ` Stephane Chazelas
2008-06-17 15:54               ` Vincent Lefevre
2008-06-17 16:00                 ` Stephane Chazelas
2008-06-17 19:50                   ` Vincent Lefevre
2008-06-17 20:32                     ` Stephane Chazelas
2008-06-18 10:38  3%                   ` Vincent Lefevre
     [not found]     <20080429111157.67641fc2@news01>
2008-07-16  5:23  3% ` Zsh migrated to Symbian OS - Contributing back details Karthikeyan.Balu
2008-07-16 12:27  0%   ` Karthik B
2008-07-17  5:17  0%     ` Karthik B
2008-07-31  2:38     Weird exit caused in a trap DEBUG which sources a file Rocky Bernstein
2008-07-31  9:01     ` Peter Stephenson
2008-07-31 10:05       ` Rocky Bernstein
2008-08-01 12:29         ` Rocky Bernstein
2008-08-01 13:37           ` Peter Stephenson
2008-08-01 15:21  3%         ` Rocky Bernstein
2008-08-01 15:31               ` Peter Stephenson
2008-08-02 11:21                 ` Rocky Bernstein
2008-08-03 10:42                   ` Peter Stephenson
2008-08-03 11:28                     ` Rocky Bernstein
2008-08-03 11:50                       ` Peter Stephenson
2008-08-05 11:18  4%                     ` Rocky Bernstein
2008-08-05 14:27     PATCH: skip command from debug trap Peter Stephenson
2008-08-05 23:47     ` Rocky Bernstein
2008-08-06  9:47       ` Peter Stephenson
2008-08-06 17:00         ` Rocky Bernstein
2008-08-06 17:54           ` Peter Stephenson
2008-08-06 19:09  3%         ` Rocky Bernstein
2008-08-06 21:19     DEBUG_CMD_LINE (Was Re: PATCH: skip command from debug trap) Rocky Bernstein
2008-08-07  8:54     ` Peter Stephenson
2008-08-07  9:31       ` Stephane Chazelas
2008-08-07 10:14         ` Peter Stephenson
2008-08-07 10:40  3%       ` Stephane Chazelas
2008-08-07 12:06  0%         ` Peter Stephenson
2008-08-07 13:37  0%           ` Rocky Bernstein
2008-08-24 16:05     Weird error message when using bash or ksh form of array initialization Rocky Bernstein
2008-08-24 20:32     ` Bart Schaefer
2008-08-25  0:12  4%   ` Rocky Bernstein
2008-08-31  9:23  3% [zsh] ant completion broken David LE BOURGEOIS
2008-08-31 13:30  0% ` Peter Stephenson
     [not found]     <20080909144101.GA30693@lapse.rw.madduck.net>
     [not found]     ` <200809101124.m8ABOlKI005063@news01.csr.com>
     [not found]       ` <080910074842.ZM19151@torch.brasslantern.com>
     [not found]         ` <200809101510.m8AFAajX007203@news01.csr.com>
     [not found]           ` <080910090554.ZM19272@torch.brasslantern.com>
     [not found]             ` <6cd6de210809101151q4d0a2a35p452fe656e0ee7dd5@mail.gmail.com>
2008-09-11 12:00  0%           ` preventing the leading space in process substitution Peter Stephenson
2008-09-11 12:44  0%             ` Rocky Bernstein
     [not found]     <6cd6de210809281219i4bf1ed18mefa45b967fa835a6@mail.gmail.com>
     [not found]     ` <20080928221651.6ee7f671@pws-pc>
2008-09-29  2:32       ` Help me track down a tough bug? (probably funcfiletrace, subshells and possibly I/O redirection) Rocky Bernstein
2008-09-29  8:52         ` Peter Stephenson
2008-09-29 11:11           ` Rocky Bernstein
2008-09-29 11:25             ` Peter Stephenson
2008-09-29 14:11  3%           ` Rocky Bernstein
2008-09-29 14:25  0%             ` Peter Stephenson
2008-10-28 16:43  3% "." not recognising "--" as the end-of-options Stephane Chazelas
2008-10-28 21:49  0% ` Peter Stephenson
2008-10-29 11:11  3%   ` Stephane Chazelas
2008-11-05 21:20     f() { ...; } > file Stephane Chazelas
2008-11-13 14:42     ` [PATCH] " Stephane Chazelas
2008-11-13 14:52       ` Peter Stephenson
2008-11-13 15:03  3%     ` Stephane Chazelas
2008-11-13 15:13  0%       ` Stephane Chazelas
2008-11-19  6:36  4% Zsh Design Document | Porting to Symbian pavan.mysore
2008-11-19 10:03  0% ` Peter Stephenson
2008-11-21  4:08     D03 test hang on cygwin with latest sources Vin Shelton
2008-11-21  5:12     ` Bart Schaefer
2008-11-24 17:32       ` Peter Stephenson
2008-11-24 22:31         ` Phil Pennock
2008-11-25  9:56           ` Peter Stephenson
2008-11-25 23:26  3%         ` Peter A. Castro
2009-01-12 19:48     select problem david sowerby
2009-01-17  9:25  3% ` Stephane Chazelas
2009-01-17 11:21  4%   ` Richard Hartmann
2009-01-18 14:39  5%     ` Stephane Chazelas
2009-01-18 15:45  0%       ` Richard Hartmann
2009-01-20 19:42  0%         ` Peter Stephenson
2009-01-15  0:53  6% [PATCH] documentation update =~ regex MATCH Phil Pennock
     [not found]     <BD9D2405-AD6A-4336-9C8A-85149165B6B8@gmail.com>
     [not found]     ` <090116075615.ZM21871@torch.brasslantern.com>
     [not found]       ` <200901161939.54651.arvidjaar@newmail.ru>
2009-01-16 18:29         ` sourcing a sh file in zsh Bart Schaefer
2009-01-17  3:59           ` Phil Pennock
2009-01-17  5:00             ` Bart Schaefer
2009-01-17  5:55               ` Phil Pennock
2009-01-17 20:15  3%             ` Bart Schaefer
2009-01-24 13:53  1% PATCH: update Cygwin completion functions Doug Kearns
     [not found]     <schaefer@brasslantern.com>
2009-02-06 22:50  9% ` POSIX and the "&>" operator Bart Schaefer
2009-02-07  0:02  9%   ` Peter Stephenson
2009-02-07  3:51  9%     ` Bart Schaefer
2009-02-07 22:48  9%       ` Peter Stephenson
2009-02-10  2:11  5%   ` Vincent Lefevre

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).