home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / misc / volume24 / zsh2.1 / part01 next >
Text File  |  1991-10-24  |  52KB  |  1,426 lines

  1. Newsgroups: comp.sources.misc
  2. From: pfalstad@phoenix.Princeton.EDU (Paul Falstad)
  3. Subject:  v24i001:  zsh2.1 - The Z shell, Part01/19
  4. Message-ID: <csm-v24i001=zsh2.1.140401@sparky.IMD.Sterling.COM>
  5. X-Md4-Signature: 11016e2cde4c66e9be85b1f2e0b1b1c1
  6. Date: Thu, 24 Oct 1991 19:06:13 GMT
  7. Approved: kent@sparky.imd.sterling.com
  8.  
  9. Submitted-by: pfalstad@phoenix.Princeton.EDU (Paul Falstad)
  10. Posting-number: Volume 24, Issue 1
  11. Archive-name: zsh2.1/part01
  12. Environment: BSD
  13. Supersedes: zsh2.00: Volume 18, Issue 84-98
  14.  
  15. This is zsh 2.1.0, written by Paul Falstad (pfalstad@phoenix.princeton.edu).
  16. I've tested it on the following machines, where it compiled just by running
  17. a shell script:
  18.  
  19. Sun SPARCServer 4/490 running SunOS 4.1.1
  20. NeXTstation running Mach 2.0
  21. DECSystem-5000 running ULTRIX 4.2
  22. Sun 3/50M running SunOS 4.0
  23. Iris 4D/20 running IRIX 3.3.1
  24. Tahoe running BSD 4.3 tahoe
  25. HP 9000/855 running HP-UX 8.0
  26. HP 9000/370 running HP-UX 7.05
  27.  
  28. It should be easier to port the shell to different architectures now.
  29. The reason it won't run on SysV-like machines is that I don't have
  30. access to any SysV-like machines.  I'd love to have someone help port the
  31. shell to other architectures.
  32.  
  33. Basically, zsh is a shell with most of the features of tcsh, ksh,
  34. and bash, plus a few more.  The input syntax is mostly ksh-like, though
  35. csh syntax is also accepted in most cases; plus, almost all of the
  36. bells and whistles of other shells have been included.
  37.  
  38. A PostScript version of "An Introduction to the Z Shell" has also been
  39. included with this distribution.
  40.  
  41. You can ftp the distribution (or just the introduction) from cs.ucsd.edu
  42. (132.239.51.3) as "/pub/zsh/{zsh2.1.0.tar.Z,intro.ps.Z}".
  43.  
  44. This version supersedes zsh2.0.?.  Major changes in this version:
  45.  
  46. 1. Parser was rewritten and improved.  All the old syntax is still
  47. accepted, with the addition of some other command forms.
  48.  
  49. 2. Almost all known bugs (from previous releases) have been fixed.  It
  50. won't sit around after the connection closes anymore.  It won't die
  51. if you press TAB inside a `...` expression.  It won't mangle your
  52. tty settings, since it doesn't fiddle with the tty as much.  Plus,
  53. lots of little bugs have been fixed.
  54.  
  55. 3. The completion has been improved; hostname completion is supported
  56. now.  If you give the shell a list of hosts, you can type
  57. "telnet hostn[tab]" and it will complete the hostname.  Plus you can
  58. say "bindkey control-whatever forward-w[tab]", and "vared PRO[tab]",
  59. and "echo $PRIN[tab]", and "setopt cshnul[tab]", and
  60. "mail foobar@foohos[tab]", etc.
  61.  
  62. 4. vi-mode emulation has been improved.  All the fancy stuff is there,
  63. like multiple buffers and repeat-last-change, and a real insert mode.
  64.  
  65. Paul
  66. -----
  67. #!/bin/sh
  68. # This is zsh2.1.0, a shell archive (produced by shar 3.49)
  69. # To extract the files from this archive, save it to a file, remove
  70. # everything above the "!/bin/sh" line above, and type "sh file_name".
  71. #
  72. # made 10/19/1991 01:07 UTC by pfalstad@phoenix
  73. # Source directory /n/homeserver/c/pfalstad/zshdist
  74. #
  75. # existing files will NOT be overwritten unless -c is specified
  76. #
  77. # This is part 1 of a multipart archive                                    
  78. # do not concatenate these parts, unpack them in order with /bin/sh        
  79. #
  80. # This shar contains:
  81. # length  mode       name
  82. # ------ ---------- ------------------------------------------
  83. #  12488 -rw-r--r-- zsh2.1/COPYING
  84. #  10214 -rw-r--r-- zsh2.1/README
  85. #   1295 -rw-r--r-- zsh2.1/dots/zlogin
  86. #   3170 -rw-r--r-- zsh2.1/dots/zshrc
  87. #    104 -rwxr-xr-x zsh2.1/func/acx
  88. #    109 -rwxr-xr-x zsh2.1/func/cx
  89. #     97 -rwxr-xr-x zsh2.1/func/harden
  90. #     84 -rwxr-xr-x zsh2.1/func/mere
  91. #    412 -rwxr-xr-x zsh2.1/func/namedir
  92. #    194 -rwxr-xr-x zsh2.1/func/proto
  93. #     80 -rwxr-xr-x zsh2.1/func/randline
  94. #     29 -rwxr-xr-x zsh2.1/func/yp
  95. #     35 -rwxr-xr-x zsh2.1/func/yu
  96. # 107626 -rw-r--r-- zsh2.1/man/man1/zsh.1
  97. #    755 -rwxr-xr-x zsh2.1/scripts/aproto
  98. #    173 -rwxr-xr-x zsh2.1/scripts/fproto
  99. #   3299 -rwxr-xr-x zsh2.1/scripts/c2z
  100. #   8053 -rwxr-xr-x zsh2.1/src/buildzsh
  101. #  56254 -rw-r--r-- zsh2.1/src/builtin.c
  102. #   4485 -rw-r--r-- zsh2.1/src/cond.c
  103. #  33003 -rw-r--r-- zsh2.1/src/exec.c
  104. #   1198 -rw-r--r-- zsh2.1/src/funcs.h
  105. #  23323 -rw-r--r-- zsh2.1/src/glob.c
  106. #  24813 -rw-r--r-- zsh2.1/src/hist.c
  107. #  12375 -rw-r--r-- zsh2.1/src/init.c
  108. #  14918 -rw-r--r-- zsh2.1/src/jobs.c
  109. #  15750 -rw-r--r-- zsh2.1/src/lex.c
  110. #   4854 -rw-r--r-- zsh2.1/src/loop.c
  111. #  10626 -rw-r--r-- zsh2.1/src/math.c
  112. #   5007 -rw-r--r-- zsh2.1/src/mem.c
  113. #  24528 -rw-r--r-- zsh2.1/src/params.c
  114. #  15253 -rw-r--r-- zsh2.1/src/subst.c
  115. #   6824 -rw-r--r-- zsh2.1/src/table.c
  116. #   8703 -rw-r--r-- zsh2.1/src/text.c
  117. #  30675 -rw-r--r-- zsh2.1/src/utils.c
  118. #   7508 -rw-r--r-- zsh2.1/src/watch.c
  119. #   8481 -rw-r--r-- zsh2.1/src/zle.h
  120. #  17489 -rw-r--r-- zsh2.1/src/zle_bindings.c
  121. #  14557 -rw-r--r-- zsh2.1/src/zle_main.c
  122. #  12102 -rw-r--r-- zsh2.1/src/zle_refresh.c
  123. #   4954 -rw-r--r-- zsh2.1/src/zle_utils.c
  124. #  30146 -rw-r--r-- zsh2.1/src/zsh.h
  125. #   5031 -rw-r--r-- zsh2.1/src/zle_vi.c
  126. #   1927 -rw-r--r-- zsh2.1/src/ztype.h
  127. #    309 -rw-r--r-- zsh2.1/src/lex.pro
  128. #  24239 -rw-r--r-- zsh2.1/src/zle_tricky.c
  129. #   3753 -rw-r--r-- zsh2.1/src/builtin.pro
  130. #    235 -rw-r--r-- zsh2.1/src/cond.pro
  131. #   2109 -rw-r--r-- zsh2.1/src/exec.pro
  132. #   1511 -rw-r--r-- zsh2.1/src/glob.pro
  133. #   1737 -rw-r--r-- zsh2.1/src/hist.pro
  134. #    453 -rw-r--r-- zsh2.1/src/init.pro
  135. #    789 -rw-r--r-- zsh2.1/src/jobs.pro
  136. #    206 -rw-r--r-- zsh2.1/src/loop.pro
  137. #    291 -rw-r--r-- zsh2.1/src/math.pro
  138. #    510 -rw-r--r-- zsh2.1/src/mem.pro
  139. #   3148 -rw-r--r-- zsh2.1/src/params.pro
  140. #    619 -rw-r--r-- zsh2.1/src/subst.pro
  141. #    889 -rw-r--r-- zsh2.1/src/table.pro
  142. #    330 -rw-r--r-- zsh2.1/src/text.pro
  143. #   2983 -rw-r--r-- zsh2.1/src/utils.pro
  144. #    371 -rw-r--r-- zsh2.1/src/watch.pro
  145. #      0 -rw-r--r-- zsh2.1/src/zle_bindings.pro
  146. #    659 -rw-r--r-- zsh2.1/src/zle_main.pro
  147. #    596 -rw-r--r-- zsh2.1/src/zle_refresh.pro
  148. #    759 -rw-r--r-- zsh2.1/src/zle_vi.pro
  149. #   1036 -rw-r--r-- zsh2.1/src/parse.pro
  150. #   1712 -rw-r--r-- zsh2.1/src/zle_tricky.pro
  151. #  18604 -rw-r--r-- zsh2.1/src/parse.c
  152. #    675 -rw-r--r-- zsh2.1/src/zle_utils.pro
  153. #   1429 -rw-r--r-- zsh2.1/src/signals.h.sample
  154. #   5546 -rw-r--r-- zsh2.1/src/zle_move.c
  155. #   9823 -rw-r--r-- zsh2.1/src/zle_misc.c
  156. #   5509 -rw-r--r-- zsh2.1/src/zle_word.c
  157. #  10175 -rw-r--r-- zsh2.1/src/zle_hist.c
  158. #   1119 -rw-r--r-- zsh2.1/src/zle_hist.pro
  159. #   1332 -rw-r--r-- zsh2.1/src/zle_misc.pro
  160. #    909 -rw-r--r-- zsh2.1/src/zle_move.pro
  161. #    658 -rw-r--r-- zsh2.1/src/zle_word.pro
  162. # 137468 -rw-r--r-- zsh2.1/doc/intro.ps
  163. #
  164. if test -r _shar_seq_.tmp; then
  165.     echo 'Must unpack archives in sequence!'
  166.     echo Please unpack part `cat _shar_seq_.tmp` next
  167.     exit 1
  168. fi
  169. # ============= zsh2.1/COPYING ==============
  170. if test ! -d 'zsh2.1'; then
  171.     echo 'x - creating directory zsh2.1'
  172.     mkdir 'zsh2.1'
  173. fi
  174. if test -f 'zsh2.1/COPYING' -a X"$1" != X"-c"; then
  175.     echo 'x - skipping zsh2.1/COPYING (File already exists)'
  176.     rm -f _shar_wnt_.tmp
  177. else
  178. > _shar_wnt_.tmp
  179. echo 'x - extracting zsh2.1/COPYING (Text)'
  180. sed 's/^X//' << 'SHAR_EOF' > 'zsh2.1/COPYING' &&
  181. X
  182. X            GNU GENERAL PUBLIC LICENSE
  183. X             Version 1, February 1989
  184. X
  185. X Copyright (C) 1989 Free Software Foundation, Inc.
  186. X                    675 Mass Ave, Cambridge, MA 02139, USA
  187. X Everyone is permitted to copy and distribute verbatim copies
  188. X of this license document, but changing it is not allowed.
  189. X
  190. X                Preamble
  191. X
  192. X  The license agreements of most software companies try to keep users
  193. Xat the mercy of those companies.  By contrast, our General Public
  194. XLicense is intended to guarantee your freedom to share and change free
  195. Xsoftware--to make sure the software is free for all its users.  The
  196. XGeneral Public License applies to the Free Software Foundation's
  197. Xsoftware and to any other program whose authors commit to using it.
  198. XYou can use it for your programs, too.
  199. X
  200. X  When we speak of free software, we are referring to freedom, not
  201. Xprice.  Specifically, the General Public License is designed to make
  202. Xsure that you have the freedom to give away or sell copies of free
  203. Xsoftware, that you receive source code or can get it if you want it,
  204. Xthat you can change the software or use pieces of it in new free
  205. Xprograms; and that you know you can do these things.
  206. X
  207. X  To protect your rights, we need to make restrictions that forbid
  208. Xanyone to deny you these rights or to ask you to surrender the rights.
  209. XThese restrictions translate to certain responsibilities for you if you
  210. Xdistribute copies of the software, or if you modify it.
  211. X
  212. X  For example, if you distribute copies of a such a program, whether
  213. Xgratis or for a fee, you must give the recipients all the rights that
  214. Xyou have.  You must make sure that they, too, receive or can get the
  215. Xsource code.  And you must tell them their rights.
  216. X
  217. X  We protect your rights with two steps: (1) copyright the software, and
  218. X(2) offer you this license which gives you legal permission to copy,
  219. Xdistribute and/or modify the software.
  220. X
  221. X  Also, for each author's protection and ours, we want to make certain
  222. Xthat everyone understands that there is no warranty for this free
  223. Xsoftware.  If the software is modified by someone else and passed on, we
  224. Xwant its recipients to know that what they have is not the original, so
  225. Xthat any problems introduced by others will not reflect on the original
  226. Xauthors' reputations.
  227. X
  228. X  The precise terms and conditions for copying, distribution and
  229. Xmodification follow.
  230. X
  231. X            GNU GENERAL PUBLIC LICENSE
  232. X   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
  233. X
  234. X  0. This License Agreement applies to any program or other work which
  235. Xcontains a notice placed by the copyright holder saying it may be
  236. Xdistributed under the terms of this General Public License.  The
  237. X"Program", below, refers to any such program or work, and a "work based
  238. Xon the Program" means either the Program or any work containing the
  239. XProgram or a portion of it, either verbatim or with modifications.  Each
  240. Xlicensee is addressed as "you".
  241. X
  242. X  1. You may copy and distribute verbatim copies of the Program's source
  243. Xcode as you receive it, in any medium, provided that you conspicuously and
  244. Xappropriately publish on each copy an appropriate copyright notice and
  245. Xdisclaimer of warranty; keep intact all the notices that refer to this
  246. XGeneral Public License and to the absence of any warranty; and give any
  247. Xother recipients of the Program a copy of this General Public License
  248. Xalong with the Program.  You may charge a fee for the physical act of
  249. Xtransferring a copy.
  250. X
  251. X  2. You may modify your copy or copies of the Program or any portion of
  252. Xit, and copy and distribute such modifications under the terms of Paragraph
  253. X1 above, provided that you also do the following:
  254. X
  255. X    a) cause the modified files to carry prominent notices stating that
  256. X    you changed the files and the date of any change; and
  257. X
  258. X    b) cause the whole of any work that you distribute or publish, that
  259. X    in whole or in part contains the Program or any part thereof, either
  260. X    with or without modifications, to be licensed at no charge to all
  261. X    third parties under the terms of this General Public License (except
  262. X    that you may choose to grant warranty protection to some or all
  263. X    third parties, at your option).
  264. X
  265. X    c) If the modified program normally reads commands interactively when
  266. X    run, you must cause it, when started running for such interactive use
  267. X    in the simplest and most usual way, to print or display an
  268. X    announcement including an appropriate copyright notice and a notice
  269. X    that there is no warranty (or else, saying that you provide a
  270. X    warranty) and that users may redistribute the program under these
  271. X    conditions, and telling the user how to view a copy of this General
  272. X    Public License.
  273. X
  274. X    d) You may charge a fee for the physical act of transferring a
  275. X    copy, and you may at your option offer warranty protection in
  276. X    exchange for a fee.
  277. X
  278. XMere aggregation of another independent work with the Program (or its
  279. Xderivative) on a volume of a storage or distribution medium does not bring
  280. Xthe other work under the scope of these terms.
  281. X
  282. X  3. You may copy and distribute the Program (or a portion or derivative of
  283. Xit, under Paragraph 2) in object code or executable form under the terms of
  284. XParagraphs 1 and 2 above provided that you also do one of the following:
  285. X
  286. X    a) accompany it with the complete corresponding machine-readable
  287. X    source code, which must be distributed under the terms of
  288. X    Paragraphs 1 and 2 above; or,
  289. X
  290. X    b) accompany it with a written offer, valid for at least three
  291. X    years, to give any third party free (except for a nominal charge
  292. X    for the cost of distribution) a complete machine-readable copy of the
  293. X    corresponding source code, to be distributed under the terms of
  294. X    Paragraphs 1 and 2 above; or,
  295. X
  296. X    c) accompany it with the information you received as to where the
  297. X    corresponding source code may be obtained.  (This alternative is
  298. X    allowed only for noncommercial distribution and only if you
  299. X    received the program in object code or executable form alone.)
  300. X
  301. XSource code for a work means the preferred form of the work for making
  302. Xmodifications to it.  For an executable file, complete source code means
  303. Xall the source code for all modules it contains; but, as a special
  304. Xexception, it need not include source code for modules which are standard
  305. Xlibraries that accompany the operating system on which the executable
  306. Xfile runs, or for standard header files or definitions files that
  307. Xaccompany that operating system.
  308. X
  309. X  4. You may not copy, modify, sublicense, distribute or transfer the
  310. XProgram except as expressly provided under this General Public License.
  311. XAny attempt otherwise to copy, modify, sublicense, distribute or transfer
  312. Xthe Program is void, and will automatically terminate your rights to use
  313. Xthe Program under this License.  However, parties who have received
  314. Xcopies, or rights to use copies, from you under this General Public
  315. XLicense will not have their licenses terminated so long as such parties
  316. Xremain in full compliance.
  317. X
  318. X  5. By copying, distributing or modifying the Program (or any work based
  319. Xon the Program) you indicate your acceptance of this license to do so,
  320. Xand all its terms and conditions.
  321. X
  322. X  6. Each time you redistribute the Program (or any work based on the
  323. XProgram), the recipient automatically receives a license from the original
  324. Xlicensor to copy, distribute or modify the Program subject to these
  325. Xterms and conditions.  You may not impose any further restrictions on the
  326. Xrecipients' exercise of the rights granted herein.
  327. X
  328. X  7. The Free Software Foundation may publish revised and/or new versions
  329. Xof the General Public License from time to time.  Such new versions will
  330. Xbe similar in spirit to the present version, but may differ in detail to
  331. Xaddress new problems or concerns.
  332. X
  333. XEach version is given a distinguishing version number.  If the Program
  334. Xspecifies a version number of the license which applies to it and "any
  335. Xlater version", you have the option of following the terms and conditions
  336. Xeither of that version or of any later version published by the Free
  337. XSoftware Foundation.  If the Program does not specify a version number of
  338. Xthe license, you may choose any version ever published by the Free Software
  339. XFoundation.
  340. X
  341. X  8. If you wish to incorporate parts of the Program into other free
  342. Xprograms whose distribution conditions are different, write to the author
  343. Xto ask for permission.  For software which is copyrighted by the Free
  344. XSoftware Foundation, write to the Free Software Foundation; we sometimes
  345. Xmake exceptions for this.  Our decision will be guided by the two goals
  346. Xof preserving the free status of all derivatives of our free software and
  347. Xof promoting the sharing and reuse of software generally.
  348. X
  349. X                NO WARRANTY
  350. X
  351. X  9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
  352. XFOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
  353. XOTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
  354. XPROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
  355. XOR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  356. XMERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
  357. XTO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
  358. XPROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
  359. XREPAIR OR CORRECTION.
  360. X
  361. X  10. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
  362. XWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
  363. XREDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
  364. XINCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
  365. XOUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
  366. XTO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
  367. XYOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
  368. XPROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
  369. XPOSSIBILITY OF SUCH DAMAGES.
  370. X
  371. X             END OF TERMS AND CONDITIONS
  372. X
  373. X    Appendix: How to Apply These Terms to Your New Programs
  374. X
  375. X  If you develop a new program, and you want it to be of the greatest
  376. Xpossible use to humanity, the best way to achieve this is to make it
  377. Xfree software which everyone can redistribute and change under these
  378. Xterms.
  379. X
  380. X  To do so, attach the following notices to the program.  It is safest to
  381. Xattach them to the start of each source file to most effectively convey
  382. Xthe exclusion of warranty; and each file should have at least the
  383. X"copyright" line and a pointer to where the full notice is found.
  384. X
  385. X    <one line to give the program's name and a brief idea of what it does.>
  386. X    Copyright (C) 19yy  <name of author>
  387. X
  388. X    This program is free software; you can redistribute it and/or modify
  389. X    it under the terms of the GNU General Public License as published by
  390. X    the Free Software Foundation; either version 1, or (at your option)
  391. X    any later version.
  392. X
  393. X    This program is distributed in the hope that it will be useful,
  394. X    but WITHOUT ANY WARRANTY; without even the implied warranty of
  395. X    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  396. X    GNU General Public License for more details.
  397. X
  398. X    You should have received a copy of the GNU General Public License
  399. X    along with this program; if not, write to the Free Software
  400. X    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  401. X
  402. XAlso add information on how to contact you by electronic and paper mail.
  403. X
  404. XIf the program is interactive, make it output a short notice like this
  405. Xwhen it starts in an interactive mode:
  406. X
  407. X    Gnomovision version 69, Copyright (C) 19xx name of author
  408. X    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
  409. X    This is free software, and you are welcome to redistribute it
  410. X    under certain conditions; type `show c' for details.
  411. X
  412. XThe hypothetical commands `show w' and `show c' should show the
  413. Xappropriate parts of the General Public License.  Of course, the
  414. Xcommands you use may be called something other than `show w' and `show
  415. Xc'; they could even be mouse-clicks or menu items--whatever suits your
  416. Xprogram.
  417. X
  418. XYou should also get your employer (if you work as a programmer) or your
  419. Xschool, if any, to sign a "copyright disclaimer" for the program, if
  420. Xnecessary.  Here a sample; alter the names:
  421. X
  422. X  Yoyodyne, Inc., hereby disclaims all copyright interest in the
  423. X  program `Gnomovision' (a program to direct compilers to make passes
  424. X  at assemblers) written by James Hacker.
  425. X
  426. X  <signature of Ty Coon>, 1 April 1989
  427. X  Ty Coon, President of Vice
  428. X
  429. XThat's all there is to it!
  430. SHAR_EOF
  431. chmod 0644 zsh2.1/COPYING ||
  432. echo 'restore of zsh2.1/COPYING failed'
  433. Wc_c="`wc -c < 'zsh2.1/COPYING'`"
  434. test 12488 -eq "$Wc_c" ||
  435.     echo 'zsh2.1/COPYING: original size 12488, current size' "$Wc_c"
  436. rm -f _shar_wnt_.tmp
  437. fi
  438. # ============= zsh2.1/README ==============
  439. if test -f 'zsh2.1/README' -a X"$1" != X"-c"; then
  440.     echo 'x - skipping zsh2.1/README (File already exists)'
  441.     rm -f _shar_wnt_.tmp
  442. else
  443. > _shar_wnt_.tmp
  444. echo 'x - extracting zsh2.1/README (Text)'
  445. sed 's/^X//' << 'SHAR_EOF' > 'zsh2.1/README' &&
  446. Xzsh is free software.  See the file COPYING for copying permission.
  447. X
  448. XThis is zsh 2.1.0, written by Paul Falstad (pfalstad@phoenix.princeton.edu).
  449. X
  450. XTo get this shell running, cd into the src directory and type
  451. X"buildzsh".  I tested it on the following machines, where it compiled
  452. Xjust by running this script:
  453. X
  454. XSun SPARCServer 4/490 running SunOS 4.1.1
  455. XNeXTstation running Mach 2.0
  456. XDECSystem-5000 running ULTRIX 4.2
  457. XSun 3/50M running SunOS 4.0
  458. XIris 4D/20 running IRIX 3.3.1
  459. XTahoe running BSD 4.3 tahoe
  460. XHP 9000/855 running HP-UX 8.0
  461. XHP 9000/370 running HP-UX 7.05
  462. X
  463. XIt should be easier to port the shell to different architectures now.
  464. XThe reason it hasn't been tested on SysV-like machines is that I don't
  465. Xhave access to any SysV-like machines.  I'd love to have someone port
  466. Xthe shell to other architectures.
  467. X
  468. XTabstops are 3 spaces.  If you're going to look at my code, run it
  469. Xthough "expand -3" first, or set your tab stops to the same as mine.
  470. X
  471. XIf anyone has any questions, suggestions, comments, bugs, flames, or
  472. Xany other mail of any kind, send it to pfalstad@phoenix.princeton.edu.
  473. X
  474. XThanks to the following people for help, ideas, comments, patches, etc.:
  475. XDavid Dobkin
  476. XJim Mattson
  477. XGoran Larsson
  478. XBart Schaefer
  479. XPaul E. Maisano
  480. XNorbert Kiesel
  481. XJosh Diamond
  482. XPeter Moore
  483. XGeoff Wing
  484. XKent Dickey
  485. XJean-Jacques Moreau
  486. XMichael Brown
  487. XBruce Anderson
  488. XCarson Wilson (too bad my email to him bounces)
  489. XStephen Dum
  490. XLars E. Thon
  491. XMichael Brennan
  492. XXev Gittler
  493. XJarkko Hietaniemi
  494. XZbigniew J Tyrlik
  495. XPierre Racz
  496. XRick Ohnemus
  497. XRichard Dean
  498. XGary D. Kline
  499. XRobert A. Fabian
  500. XByron Rakitzis
  501. XGottfried Necker
  502. XDan Bernstein
  503. XVincent Granet
  504. XJonathan I. Kamens & Bruce Varney
  505. XDavid Wilson
  506. XPeter Gray
  507. XGreg Noel
  508. XPaul Lew
  509. XKartik Subbarao
  510. XMichael Marucheck
  511. XChristopher Pirazzi
  512. XSteve Giovanetti
  513. XKennedy Lemke
  514. XEmin Gun Sirer
  515. XKazuo Itoh
  516. Xlots of other people, I'm sure
  517. X
  518. XModification history:
  519. X
  520. X0.03-1.0:
  521. X    - "..../" is now "****/".  I know this isn't backward compatible,
  522. X      but I had no choice; the string "..../" was unquotable.
  523. X    - parser was rewritten and improved
  524. X    - completion was improved, several bugs fixed (including
  525. X      the "$([tab]" bug)
  526. X    - vi mode editing is improved
  527. X    - the value of PWD and OLDPWD in the environment now change
  528. X    - the PROMPT formatting strings %W and %D now print the month
  529. X      correctly
  530. X    - >&2 echo "error message" no longer prints "bad file number"
  531. X    - ${foo%pat} no longer alters the value of foo
  532. X    - $_ works
  533. X    - ALL_EXPORT no longer causes let statements to crash the shell
  534. X    - continue works
  535. X    - echo $MAIL no longer dumps core if MAIL is null
  536. X    - the new tty driver is selected by default
  537. X    - the s modifier no longer complains if it can't find the string
  538. X      to substitute
  539. X    - list-choices no longer fignores files
  540. X    - cd is now smarter about symlinks
  541. X    - negative subscripts other than -1 now work
  542. X    - $(<filename) works better if filename contains $, ~, or =
  543. X    - rehash no longer wastes memory
  544. X    - with name=value assignments, name is checked to see if it is
  545. X      a valid identifier
  546. X    - !1; !2 no longer eats the semicolon
  547. X    - $foo:h never returns the empty string if foo starts with /
  548. X    - select crashed with some compilers
  549. X    - problems with aliases in <(...) constructs have been fixed
  550. X    - links pointing to nowhere are denoted with an '&' in listtypes
  551. X    - negative arguments are supported
  552. X    - the shell does not screw around with the tty so much
  553. X    - lots of other stuff
  554. X
  555. X0.02-0.03:
  556. X    - two stupid bugs that were introduced in the last patch were fixed:
  557. X      - multiple command substitution on a line failed
  558. X      - a file descriptor leak caused the shell to crash after a while
  559. X    - added 'An Introduction to the Z Shell'
  560. X    - behaves properly when the tty session dies suddenly
  561. X    - had a serious memory leak on some systems
  562. X    - the test and [ builtins have been added, although [[...]]
  563. X      is more efficient
  564. X    - in your prompt, %m2 now prints foo.bar, %m3 prints foo.bar.com, etc.
  565. X    - the -D and -P options to print have been added
  566. X    - the NULLCMD and ZDOTDIR parameters have been added
  567. X    - ${*:-foo} works
  568. X    - "$@" and "$arr[@]" work like ksh
  569. X    - .zprofile is sourced before .zshrc in login shells
  570. X    - the CSHJUNKIEQUOTES and PUSHDMINUS options have been added
  571. X    - REAL_TTY compilation switch added
  572. X    - aliases beginning with a space cause the history line to be junked
  573. X      if HISTIGNORESPACE is set
  574. X    - echo prints bad options instead of complaining about them
  575. X    - "set -o" no longer dumps core
  576. X    - "alias a=alias; date >a" no longer creates a file called "alias"
  577. X    - "function foo() \n { date }" is now legal (the () and the newline
  578. X      are allowed)
  579. X    - nested brace expressions work properly
  580. X    - disabled commands stay disabled after a rehash (or after the shell
  581. X      finishes sourcing your .zshrc)
  582. X    - corrected aliases work
  583. X    - executables in the currect directory are now completed
  584. X    - in "case foo", "foo" is not interpreted as a directory name with autocd
  585. X    - aliases were not always interpreted properly after a completion
  586. X    - bindkey '^?' didn't work
  587. X    - echo ${HOST:-{bar}} didn't work
  588. X    - editor update is more efficient in some cases
  589. X    - menucomplete works even better
  590. X    - assign to an array element "foo[1]=bar" didn't always work
  591. X    - doesn't print directories like "~tmp" if HOME=/
  592. X    - quotes in case statement patterns caused problems
  593. X    - pressing ^C right after typing "fc" caused the editor to share
  594. X      the tty with the shell
  595. X    - echo $(echo 2) produced no output, but echo $(echo x) worked fine (weird)
  596. X
  597. X0.01-0.02:
  598. X    - added script to convert most csh aliases to zsh aliases or functions
  599. X    - fc -l (history) now appears in the history itself; HISTNOSTORE
  600. X      option added to get old behavior
  601. X    - the POSIX process group race has been fixed; so 'w | more' should
  602. X      no longer hang
  603. X    - FCEDIT added, to match the documentation
  604. X    - %{...%} in the prompt added
  605. X    - execute-named-cmd and execute-last-named-cmd bindings added
  606. X    - sources ~/.zshenv in all shells, even if not interactive, unless
  607. X      -f is given
  608. X    - ^ and # are no longer `magic' by default; use EXTENDEDGLOB option
  609. X      to use them
  610. X    - now checks for tty sanity before each command
  611. X    - if the right side of a variable assignment expands to more than
  612. X      one word, array assignment is assumed; so foo=*.c now works
  613. X    - ~foo is no longer expanded in completion
  614. X    - select now works even if the argument list is not sorted
  615. X    - menucompletebeep option added
  616. X    - emacs mode is now 8-bit clean by default; use bindkey -em
  617. X      to get your meta key back
  618. X    - fc -R, fc -W added
  619. X    - nocorrect added
  620. X    - lines from history file are now split into words at spaces
  621. X    - glob-complete, accept-and-menu-complete,
  622. X      beginning-of-line-hist, end-of-line-hist bindings added
  623. X    - insert-last-word bound to M-. in emacs mode by default; now moves
  624. X      back through the history if run repeatedly
  625. X    - J and K now bound to history search in vi mode
  626. X    - delete-char no longer core dumps on an empty line
  627. X    - menu-complete works better
  628. X    - the editor checks the settings of VISUAL and EDITOR to set
  629. X      default bindings
  630. X    - using [[ ... ]] expressions on a symbolic link works as expected
  631. X    - various problems with globbing were fixed
  632. X    - xx is now the same as !! if HISTCHARS=x
  633. X    - added config.h entry for compilers that don't know about void *
  634. X    - lexical analysis made more efficient
  635. X    - "if echo $? ; then : ; fi" no longer always prints 0
  636. X    - removed all enums, '\x7f's from code
  637. X    - in "case foo in bar) xxx ;; esac", foo and bar are no longer subject
  638. X      to command alias expansion
  639. X    - works on platforms where toupper('A') != 'A'
  640. X    - \e sequence added to echo
  641. X    - + options now work with set
  642. X    - AUTORESUME and AUTOCD work better
  643. X    - getopts works better (?)
  644. X    - spell checking works better
  645. X    - "let 2+3=" no longer crashes the shell
  646. X    - "foo=bar; echo ${=foo}" no longer crashes the shell
  647. X    - "zsh -c" or "zsh -o" no longer causes a core dump
  648. X    - "unset MAIL; echo $MAIL" no longer causes a core dump
  649. X    - "(xterm&xterm&)&" no longer causes a core dump
  650. X    - "echo $HOM[tab]" beeps instead of deleting "$HOM"
  651. X    - incremental history search works better
  652. X    - the pwd of a fg'd job is now printed _before_ resuming it
  653. X    - rv=`echo -n foo` no longer puts garbage in $rv
  654. X    - "=1/*" now works as expected
  655. X    - ^Z can now be bound to something
  656. X    - the STTY parameter and the builtin builtin are now documented
  657. X    - IFS=x; foo=`echo foo` no longer puts a newline in $foo
  658. X    - $status added for csh compatibility
  659. X    - arrays are automatically expanded if you say 'foo[1234]=x'
  660. X    - shell now ignores SIGQUIT (it was commented out before :-)
  661. X    - the times builtin works on systems where times() returns > 0
  662. X    - no longer hangs the terminal if you ^S before flow control
  663. X      is turned off
  664. X    - "date ; read foo" now works in interactive shells
  665. X    - <<-foo is now parsed as <<- foo, not << -foo
  666. X    - fixed various errors in the documentation
  667. X
  668. X0.00-0.01:
  669. X    - %M and %m now work as documented.
  670. X    - bad things no longer happen if COLUMNS is set to 0
  671. X    - SH_WORD_SPLIT and ${=foo} now work
  672. X    - the default value of WORDCHARS includes more characters
  673. X    - if the cursor is at the end of the line, vi-cmd-mode
  674. X      moves it back one position.
  675. X    - delete-char now acts more like x in vi.
  676. X    - a "prompt" parameter has been added, which is equivalent to
  677. X      PROMPT and PS1.
  678. X    - zsh no longer expands symbolic links.  The CHASELINKS option
  679. X      has been provided to get the old behavior.
  680. X    - history searches ignore lines that are the same as the line
  681. X      in the buffer.
  682. X    - you can get a literal ! in your prompt now with \!.
  683. X    - -z, -n, and != in [[ ... ]] expressions work.
  684. X    - the shell no longer hangs when inputting "[[ ]\n"
  685. X    - the "menu-complete" and "menu-expand-or-complete" bindings have
  686. X      been added.
  687. X    - menu-complete no longer beeps.
  688. X    - reverse-menu-complete no longer dumps core if it gets called before
  689. X      a normal completion.
  690. X    - typeahead lines are no longer thrown away on machines with sgttyb.
  691. X    - !foo no longer matches lines with 'foo' in them (not at the beginning)
  692. X    - kill -9 % no longer kills the shell
  693. X    - no longer sources .zshrc from shell scripts or with -c
  694. X    - no longer needs limits.h, strtol
  695. X    - exporting HOSTTYPE, etc. works
  696. X    - fixed serious bugs related to . in path
  697. X    - numbers in weird bases now work
  698. X
  699. XKnown Bugs
  700. X    - terminal acts weird under OpenWindows cmdtool
  701. X    - xterm run in background inherits bad terminal modes
  702. X    - here documents don't appear in the history, and cannot be
  703. X      used inside eval statements
  704. X
  705. SHAR_EOF
  706. chmod 0644 zsh2.1/README ||
  707. echo 'restore of zsh2.1/README failed'
  708. Wc_c="`wc -c < 'zsh2.1/README'`"
  709. test 10214 -eq "$Wc_c" ||
  710.     echo 'zsh2.1/README: original size 10214, current size' "$Wc_c"
  711. rm -f _shar_wnt_.tmp
  712. fi
  713. # ============= zsh2.1/dots/zlogin ==============
  714. if test ! -d 'zsh2.1/dots'; then
  715.     echo 'x - creating directory zsh2.1/dots'
  716.     mkdir 'zsh2.1/dots'
  717. fi
  718. if test -f 'zsh2.1/dots/zlogin' -a X"$1" != X"-c"; then
  719.     echo 'x - skipping zsh2.1/dots/zlogin (File already exists)'
  720.     rm -f _shar_wnt_.tmp
  721. else
  722. > _shar_wnt_.tmp
  723. echo 'x - extracting zsh2.1/dots/zlogin (Text)'
  724. sed 's/^X//' << 'SHAR_EOF' > 'zsh2.1/dots/zlogin' &&
  725. X#
  726. X# my login file for zsh
  727. X#
  728. Xclear
  729. Xcd
  730. Xstty dec new cr0
  731. X
  732. X# nice little thing that figures out my termtype based on where I logged
  733. X# in from
  734. X
  735. X
  736. X# get the hostname of where I logged in from
  737. Xsetopt nobanghist
  738. XFROM=$(who said that | sed 's/^.*(\([^.:!]*\).*).*$/\1/')
  739. Xunsetopt nobanghist
  740. X
  741. Xcase "$FROM" {
  742. Xlearning*)
  743. X    FROMTYPE=SUNOS-4.1
  744. X    stty rows 54 ;;
  745. Xunix*)
  746. X    FROM=$(hostname)
  747. X    FROMTYPE="$(host -t hinfo $FROM | sed 's/^.*HINFO//')" ;;
  748. X*)
  749. X    FROMTYPE="$(host -t hinfo $FROM | sed 's/^.*HINFO//')" ;;
  750. X}
  751. X
  752. X# got the type of host from DNS; set up things accordingly
  753. X
  754. Xcase "$FROMTYPE" {
  755. X*CISCO*)
  756. X    eval $(tset -s vt100-new)
  757. X    FROM=comserv
  758. X    export PRINTER=dod; 48; BAUD=1800; ;;
  759. X*MAC-OS*|*MS-DOS*|*IBM*) eval $(tset -s vt100)
  760. X        export PRINTER=edwards; FROM=madison;;
  761. X*SUNOS-4.1*) eval $(tset -s xterm); export DISPLAY=$FROM:0.0; FROM=sun
  762. X        stty erase ; export PRINTER=ps1 ;;
  763. X*SGI*) eval $(tset -s iris-ansi) ; export PRINTER=gutenberg
  764. X        export DISPLAY=$FROM:0.0; FROM=iris; stty erase \^H ;;
  765. X*NCD*) eval $(tset -s vt100) ; export DISPLAY=$FROM:0.0;;
  766. X*) eval $(tset -s -Q '?vt100') ;;
  767. X}
  768. Xcase "$FROM" in dndod*) export PRINTER=dod;; esac
  769. X
  770. Xstty -tabs
  771. Xumask 022
  772. Xexport MAIL=/usr/spool/mail/$USER
  773. XMAILCHECK=60
  774. Xstty columns 80
  775. Xmesg y
  776. Xuptime
  777. Xfortune
  778. Xlog
  779. Xfrom 2>/dev/null
  780. X< notes
  781. Xunlimit
  782. Xlimit core 0
  783. Xmsgs -fp
  784. Xpmsgs -q
  785. SHAR_EOF
  786. chmod 0644 zsh2.1/dots/zlogin ||
  787. echo 'restore of zsh2.1/dots/zlogin failed'
  788. Wc_c="`wc -c < 'zsh2.1/dots/zlogin'`"
  789. test 1295 -eq "$Wc_c" ||
  790.     echo 'zsh2.1/dots/zlogin: original size 1295, current size' "$Wc_c"
  791. rm -f _shar_wnt_.tmp
  792. fi
  793. # ============= zsh2.1/dots/zshrc ==============
  794. if test -f 'zsh2.1/dots/zshrc' -a X"$1" != X"-c"; then
  795.     echo 'x - skipping zsh2.1/dots/zshrc (File already exists)'
  796.     rm -f _shar_wnt_.tmp
  797. else
  798. > _shar_wnt_.tmp
  799. echo 'x - extracting zsh2.1/dots/zshrc (Text)'
  800. sed 's/^X//' << 'SHAR_EOF' > 'zsh2.1/dots/zshrc' &&
  801. X#
  802. X# my rc file for zsh 2.1
  803. X#
  804. X
  805. X# it's actually better to set up the path in .zshenv
  806. Xpath=(~/scr ~/bin/$HOSTTYPE
  807. X    ~maruchck/scr ~subbarao/bin ~subbarao/bin/$HOSTTYPE
  808. X    ~maruchck/bin ~subbarao/scripts
  809. X    /usr/princeton/bin /usr/ucb /usr/bin /bin
  810. X    /usr/hosts /usr/princeton/bin/X11 /./usr/lang /./usr/etc /./etc
  811. X    ~/src/zsh/bin .)
  812. X
  813. X# search path for the cd command
  814. Xcdpath=(~ ~/src/cs320 ~/src)
  815. X
  816. X# where to look for function definitions
  817. X# fpath=(~/func)
  818. X
  819. X# useful directory
  820. Xcsrc=/usr/princeton/common/src
  821. X
  822. X# use hard limits, except for a smaller stack and no core dumps
  823. Xunlimit
  824. Xlimit stack 8192
  825. Xlimit core 0
  826. Xlimit -s
  827. X
  828. Xumask 077
  829. X
  830. X# define some aliases
  831. Xalias a=alias
  832. Xa a.out=./a.out sendmail=/usr/lib/sendmail c=cp 0=vi 09='vi -t' 00=r
  833. Xa d=dirs en='enscript -2rGh' fm='finger -m' grep=egrep h=history
  834. Xa hinfo='host -t hinfo' j=jobs l='ls -AF' lock='lock -p -60000'
  835. Xa lsd='ls -d */' m=make mm=less
  836. Xa nrable='ls -AFltrd *(^R)' sz='ls -l | sort -n +3 | tail -20'
  837. Xa sn='sed -n' nw='l -ltr | tail' pd=pushd pop=popd mroe=more
  838. Xa rable='ls -AFltrd *(R)' strings='strings -' t=cat
  839. Xa v=mv where='hostname; echo >/dev/null' k9='kill -9' whoami='echo root'
  840. Xa find='noglob find' bindkey='noglob bindkey' dh='dirs -v'
  841. Xa mv='nocorrect mv' z=suspend
  842. X
  843. X# now you can say "<< foo" to more something
  844. Xa '<<'=more
  845. X
  846. X# global aliases
  847. Xa -g 'GF'='| fgrep -f ~/.friends' G='| grep' M='| less' cex='/u/pup/centrex'
  848. Xa -g cpz=cpirazzi gun=egsirer me=pfalstad mjm=maruchck paswd='<(ypcat passwd)'
  849. Xa -g sub=subbarao 'suk*=sukthnkr' tike=teichbrg
  850. Xa -g phx=phoenix sms=dendrite.siemens.com CS=dynamic
  851. X
  852. X# setenv for csh junkies (including tset)
  853. Xsetenv() { export $1=$2 }
  854. X
  855. X# useful directories
  856. Xcpz=~cpirazzi gun=~egsirer mjm=~maruchck sub=~subbarao 
  857. X
  858. Xexport MANPATH=/usr/man:/usr/princeton/man:/u/cad/man:/usr/lang/man
  859. X
  860. X# the rest is for interactive shells only
  861. Xif [[ ! -o interactive ]]
  862. Xthen
  863. X    return
  864. Xfi
  865. X
  866. X# filename completion suffixes to ignore
  867. Xfignore=(.o .pro .old)
  868. X
  869. X# hosts to use for completion
  870. Xhosts=(uunet.uu.net `hostname` wuarchive.wustl.edu quiche.cs.mcgill.ca)
  871. X
  872. X# useful directories
  873. Xzsh=~/zsh2.00/src
  874. X: ~zsh ~csrc ~cpz ~gun ~mjm ~sub
  875. X
  876. XPROMPT='%l %T %m[%h] '
  877. X
  878. X# prompt on the right side of the screen
  879. XRPROMPT=' %~'
  880. X
  881. X# some environment variables
  882. X!" export MAILCALL='NEW MAIL! '
  883. Xexport NAME='Paul Falstad'
  884. Xexport ORGANIZATION='League For Fighting Chartered Accountancy'
  885. Xexport YOUSAID='In %C you wrote:'
  886. Xexport ATTRIBUTION='%f wrote:'
  887. Xexport SHELL=/u/pfalstad/bin/sun4/zsh
  888. Xexport RNINIT=/u/pfalstad/.rninit
  889. X
  890. X# functions to autoload
  891. X# autoload cx acx mere yu yp randline proto namedir ilogin
  892. X
  893. XMAILCHECK=30
  894. XHISTSIZE=600
  895. XDIRSTACKSIZE=50
  896. X
  897. X# lots of options
  898. Xsetopt notify globdots correct pushdtohome cdablevars autolist \
  899. X    sunkeyboardhack correctall autocd recexact longlistjobs mailwarning \
  900. X    autoresume histignoredups pushdsilent noclobber \
  901. X    autopushd pushdminus extendedglob rcquotes
  902. Xunsetopt bgnice
  903. X
  904. X# watch for my friends
  905. Xwatch=($(cat ~/.friends))
  906. XWATCHFMT='%n %a %l from %m at %t.'
  907. XLOGCHECK=0
  908. X
  909. Xexport LESS=-ainx3
  910. Xunhash p
  911. X
  912. X# some nice bindings
  913. Xbindkey '^X^Z' universal-argument ' ' magic-space
  914. Xbindkey '^X^A' vi-find-prev-char-skip
  915. Xbindkey '^Z' accept-and-hold
  916. Xbindkey -s '\M-/' \\\\
  917. Xbindkey -s '\M-=' \|
  918. SHAR_EOF
  919. chmod 0644 zsh2.1/dots/zshrc ||
  920. echo 'restore of zsh2.1/dots/zshrc failed'
  921. Wc_c="`wc -c < 'zsh2.1/dots/zshrc'`"
  922. test 3170 -eq "$Wc_c" ||
  923.     echo 'zsh2.1/dots/zshrc: original size 3170, current size' "$Wc_c"
  924. rm -f _shar_wnt_.tmp
  925. fi
  926. # ============= zsh2.1/func/acx ==============
  927. if test ! -d 'zsh2.1/func'; then
  928.     echo 'x - creating directory zsh2.1/func'
  929.     mkdir 'zsh2.1/func'
  930. fi
  931. if test -f 'zsh2.1/func/acx' -a X"$1" != X"-c"; then
  932.     echo 'x - skipping zsh2.1/func/acx (File already exists)'
  933.     rm -f _shar_wnt_.tmp
  934. else
  935. > _shar_wnt_.tmp
  936. echo 'x - extracting zsh2.1/func/acx (Text)'
  937. sed 's/^X//' << 'SHAR_EOF' > 'zsh2.1/func/acx' &&
  938. X#! /bin/sh
  939. X#
  940. X# zsh shell function to make its arguments 755
  941. X# also works as an sh script
  942. X#
  943. Xchmod 755 $*
  944. SHAR_EOF
  945. chmod 0755 zsh2.1/func/acx ||
  946. echo 'restore of zsh2.1/func/acx failed'
  947. Wc_c="`wc -c < 'zsh2.1/func/acx'`"
  948. test 104 -eq "$Wc_c" ||
  949.     echo 'zsh2.1/func/acx: original size 104, current size' "$Wc_c"
  950. rm -f _shar_wnt_.tmp
  951. fi
  952. # ============= zsh2.1/func/cx ==============
  953. if test -f 'zsh2.1/func/cx' -a X"$1" != X"-c"; then
  954.     echo 'x - skipping zsh2.1/func/cx (File already exists)'
  955.     rm -f _shar_wnt_.tmp
  956. else
  957. > _shar_wnt_.tmp
  958. echo 'x - extracting zsh2.1/func/cx (Text)'
  959. sed 's/^X//' << 'SHAR_EOF' > 'zsh2.1/func/cx' &&
  960. X#! /bin/sh
  961. X#
  962. X# zsh shell function to make its arguments executable
  963. X# also works as a sh script
  964. X#
  965. Xchmod +x $*
  966. SHAR_EOF
  967. chmod 0755 zsh2.1/func/cx ||
  968. echo 'restore of zsh2.1/func/cx failed'
  969. Wc_c="`wc -c < 'zsh2.1/func/cx'`"
  970. test 109 -eq "$Wc_c" ||
  971.     echo 'zsh2.1/func/cx: original size 109, current size' "$Wc_c"
  972. rm -f _shar_wnt_.tmp
  973. fi
  974. # ============= zsh2.1/func/harden ==============
  975. if test -f 'zsh2.1/func/harden' -a X"$1" != X"-c"; then
  976.     echo 'x - skipping zsh2.1/func/harden (File already exists)'
  977.     rm -f _shar_wnt_.tmp
  978. else
  979. > _shar_wnt_.tmp
  980. echo 'x - extracting zsh2.1/func/harden (Text)'
  981. sed 's/^X//' << 'SHAR_EOF' > 'zsh2.1/func/harden' &&
  982. X#! /bin/sh
  983. X# harden a link (convert it to a singly linked file)
  984. Xcp $1 $1.foo
  985. Xrm $1
  986. Xmv $1.foo $1
  987. X
  988. SHAR_EOF
  989. chmod 0755 zsh2.1/func/harden ||
  990. echo 'restore of zsh2.1/func/harden failed'
  991. Wc_c="`wc -c < 'zsh2.1/func/harden'`"
  992. test 97 -eq "$Wc_c" ||
  993.     echo 'zsh2.1/func/harden: original size 97, current size' "$Wc_c"
  994. rm -f _shar_wnt_.tmp
  995. fi
  996. # ============= zsh2.1/func/mere ==============
  997. if test -f 'zsh2.1/func/mere' -a X"$1" != X"-c"; then
  998.     echo 'x - skipping zsh2.1/func/mere (File already exists)'
  999.     rm -f _shar_wnt_.tmp
  1000. else
  1001. > _shar_wnt_.tmp
  1002. echo 'x - extracting zsh2.1/func/mere (Text)'
  1003. sed 's/^X//' << 'SHAR_EOF' > 'zsh2.1/func/mere' &&
  1004. X#! /bin/sh
  1005. X# read a man page in the current directory
  1006. Xnroff -man -Tman $1 | less -s
  1007. SHAR_EOF
  1008. chmod 0755 zsh2.1/func/mere ||
  1009. echo 'restore of zsh2.1/func/mere failed'
  1010. Wc_c="`wc -c < 'zsh2.1/func/mere'`"
  1011. test 84 -eq "$Wc_c" ||
  1012.     echo 'zsh2.1/func/mere: original size 84, current size' "$Wc_c"
  1013. rm -f _shar_wnt_.tmp
  1014. fi
  1015. # ============= zsh2.1/func/namedir ==============
  1016. if test -f 'zsh2.1/func/namedir' -a X"$1" != X"-c"; then
  1017.     echo 'x - skipping zsh2.1/func/namedir (File already exists)'
  1018.     rm -f _shar_wnt_.tmp
  1019. else
  1020. > _shar_wnt_.tmp
  1021. echo 'x - extracting zsh2.1/func/namedir (Text)'
  1022. sed 's/^X//' << 'SHAR_EOF' > 'zsh2.1/func/namedir' &&
  1023. X# give a name to a directory
  1024. X
  1025. X$1=~+
  1026. X: ~$1
  1027. X
  1028. X# for example, if we say: namedir foo
  1029. X# where the current directory is /usr/princeton/common/src/news/nntp/inews
  1030. X# this will do:
  1031. X#
  1032. X# foo=/usr/princeton/common/src/news/nntp/inews
  1033. X# : ~foo
  1034. X#
  1035. X# The : ~foo just evaluates ~foo, which declares foo as a named directory.
  1036. X# The first time a parameter is used with tilde expansion, it is declared
  1037. X# as the name of a named dir.
  1038. SHAR_EOF
  1039. chmod 0755 zsh2.1/func/namedir ||
  1040. echo 'restore of zsh2.1/func/namedir failed'
  1041. Wc_c="`wc -c < 'zsh2.1/func/namedir'`"
  1042. test 412 -eq "$Wc_c" ||
  1043.     echo 'zsh2.1/func/namedir: original size 412, current size' "$Wc_c"
  1044. rm -f _shar_wnt_.tmp
  1045. fi
  1046. # ============= zsh2.1/func/proto ==============
  1047. if test -f 'zsh2.1/func/proto' -a X"$1" != X"-c"; then
  1048.     echo 'x - skipping zsh2.1/func/proto (File already exists)'
  1049.     rm -f _shar_wnt_.tmp
  1050. else
  1051. > _shar_wnt_.tmp
  1052. echo 'x - extracting zsh2.1/func/proto (Text)'
  1053. sed 's/^X//' << 'SHAR_EOF' > 'zsh2.1/func/proto' &&
  1054. X#! /bin/sh
  1055. X# generate prototypes, if your style is the same as mine
  1056. Xfor i
  1057. Xdo
  1058. X    rm $i:r.pro 2>/dev/null
  1059. X    grep -v '[{};:#]' $i | grep '^[A-Za-z]' |
  1060. X        grep -v static | sed 's/$/;/' >! $i:r.pro
  1061. Xdone
  1062. SHAR_EOF
  1063. chmod 0755 zsh2.1/func/proto ||
  1064. echo 'restore of zsh2.1/func/proto failed'
  1065. Wc_c="`wc -c < 'zsh2.1/func/proto'`"
  1066. test 194 -eq "$Wc_c" ||
  1067.     echo 'zsh2.1/func/proto: original size 194, current size' "$Wc_c"
  1068. rm -f _shar_wnt_.tmp
  1069. fi
  1070. # ============= zsh2.1/func/randline ==============
  1071. if test -f 'zsh2.1/func/randline' -a X"$1" != X"-c"; then
  1072.     echo 'x - skipping zsh2.1/func/randline (File already exists)'
  1073.     rm -f _shar_wnt_.tmp
  1074. else
  1075. > _shar_wnt_.tmp
  1076. echo 'x - extracting zsh2.1/func/randline (Text)'
  1077. sed 's/^X//' << 'SHAR_EOF' > 'zsh2.1/func/randline' &&
  1078. X# get a random line from a file
  1079. Xinteger z=$(wc -l <$1)
  1080. Xsed -n $[RANDOM%z+1]p $1
  1081. SHAR_EOF
  1082. chmod 0755 zsh2.1/func/randline ||
  1083. echo 'restore of zsh2.1/func/randline failed'
  1084. Wc_c="`wc -c < 'zsh2.1/func/randline'`"
  1085. test 80 -eq "$Wc_c" ||
  1086.     echo 'zsh2.1/func/randline: original size 80, current size' "$Wc_c"
  1087. rm -f _shar_wnt_.tmp
  1088. fi
  1089. # ============= zsh2.1/func/yp ==============
  1090. if test -f 'zsh2.1/func/yp' -a X"$1" != X"-c"; then
  1091.     echo 'x - skipping zsh2.1/func/yp (File already exists)'
  1092.     rm -f _shar_wnt_.tmp
  1093. else
  1094. > _shar_wnt_.tmp
  1095. echo 'x - extracting zsh2.1/func/yp (Text)'
  1096. sed 's/^X//' << 'SHAR_EOF' > 'zsh2.1/func/yp' &&
  1097. X#! /bin/sh
  1098. Xypmatch $1 passwd
  1099. SHAR_EOF
  1100. chmod 0755 zsh2.1/func/yp ||
  1101. echo 'restore of zsh2.1/func/yp failed'
  1102. Wc_c="`wc -c < 'zsh2.1/func/yp'`"
  1103. test 29 -eq "$Wc_c" ||
  1104.     echo 'zsh2.1/func/yp: original size 29, current size' "$Wc_c"
  1105. rm -f _shar_wnt_.tmp
  1106. fi
  1107. # ============= zsh2.1/func/yu ==============
  1108. if test -f 'zsh2.1/func/yu' -a X"$1" != X"-c"; then
  1109.     echo 'x - skipping zsh2.1/func/yu (File already exists)'
  1110.     rm -f _shar_wnt_.tmp
  1111. else
  1112. > _shar_wnt_.tmp
  1113. echo 'x - extracting zsh2.1/func/yu (Text)'
  1114. sed 's/^X//' << 'SHAR_EOF' > 'zsh2.1/func/yu' &&
  1115. X#! /bin/sh
  1116. Xypmatch $1 passwd.byuid
  1117. SHAR_EOF
  1118. chmod 0755 zsh2.1/func/yu ||
  1119. echo 'restore of zsh2.1/func/yu failed'
  1120. Wc_c="`wc -c < 'zsh2.1/func/yu'`"
  1121. test 35 -eq "$Wc_c" ||
  1122.     echo 'zsh2.1/func/yu: original size 35, current size' "$Wc_c"
  1123. rm -f _shar_wnt_.tmp
  1124. fi
  1125. # ============= zsh2.1/man/man1/zsh.1 ==============
  1126. if test ! -d 'zsh2.1/man'; then
  1127.     echo 'x - creating directory zsh2.1/man'
  1128.     mkdir 'zsh2.1/man'
  1129. fi
  1130. if test ! -d 'zsh2.1/man/man1'; then
  1131.     echo 'x - creating directory zsh2.1/man/man1'
  1132.     mkdir 'zsh2.1/man/man1'
  1133. fi
  1134. if test -f 'zsh2.1/man/man1/zsh.1' -a X"$1" != X"-c"; then
  1135.     echo 'x - skipping zsh2.1/man/man1/zsh.1 (File already exists)'
  1136.     rm -f _shar_wnt_.tmp
  1137. else
  1138. > _shar_wnt_.tmp
  1139. echo 'x - extracting zsh2.1/man/man1/zsh.1 (Text)'
  1140. sed 's/^X//' << 'SHAR_EOF' > 'zsh2.1/man/man1/zsh.1' &&
  1141. X.\"
  1142. X.TH ZSH 1 "1991 Oct 17"
  1143. X.SH NAME
  1144. Xzsh \- the Z shell
  1145. X.SH SYNOPSIS
  1146. X\fBzsh\fP [ \(+-\fIoptions\fP ] [ \(+-\fBo\fP \fIoption\fP ] ...  [ \-\fBc\fP \fIstring\fP ] [ \fIarg\fP ... ]
  1147. X.SH "SHELL GRAMMAR"
  1148. XA \fIsimple command\fP is a sequence of optional parameter
  1149. Xassignments followed by blank-separated words,
  1150. Xwith optional redirections interspersed.
  1151. XThe first word is the command to be executed, and the remaining
  1152. Xwords, if any, are arguments to the command.
  1153. XIf a command name is given, the parameter assignments modify
  1154. Xthe environment of the command when it is executed.
  1155. XThe value of a simple command is its exit status,
  1156. Xor 128 plus the signal number if terminated by a signal.
  1157. X.PP
  1158. XIf a simple command is preceded by the word \fBexec\fP,
  1159. Xit is executed in the parent shell without forking.
  1160. XIf preceded by \fBcommand\fP, the command word is taken
  1161. Xto be the name of an external command, rather than a
  1162. Xshell function or builtin.
  1163. XIf preceded by \fBnoglob\fP, filename generation is not performed
  1164. Xon any of the words.  If preceded by a \-, the command
  1165. Xis executed with a \- prepended to its \fBargv[0]\fP string.
  1166. XIf preceded by \fBnocorrect\fP, spelling correction is not
  1167. Xdone on any of the words.
  1168. X.PP
  1169. XA \fIpipeline\fP is a sequence of one or more commands
  1170. Xseparated by \fB|\fP or \fB|&\fP.  \fB|&\fP is shorthand
  1171. Xfor \fB2>&1 |\fP.  The standard output of each command is
  1172. Xconnected to the standard input of the next command in the
  1173. Xpipeline.
  1174. X.PP
  1175. XThe value of a pipeline is the value of the last command.
  1176. XIf a pipeline is preceded by a \fB!\fP, the value
  1177. Xof that pipeline is the logical NOT of the value of the last
  1178. Xcommand.
  1179. X.PP
  1180. XIf a pipeline is preceded by \fBcoproc\fP, it is
  1181. Xexecuted as a coprocess; a two-way pipe is established
  1182. Xbetween it and the parent shell.  The shell can read from or write to
  1183. Xthe coprocess by means of the \fB>&p\fP and \fB<&p\fP
  1184. Xredirection operators.
  1185. X.PP
  1186. XA \fIsublist\fP is a sequence of one or more pipelines
  1187. Xseparated by \fB&&\fP or \fB|\||\fP.  If two pipelines
  1188. Xare separated by \fB&&\fP, the second pipeline is executed
  1189. Xonly if the first is successful (returns a zero value).
  1190. XIf two pipelines are separated by \fB|\||\fP, the second is executed
  1191. Xonly if the first is unsuccessful (returns a nonzero value).
  1192. X.PP
  1193. XA \fIlist\fP is a sequence of one or more sublists
  1194. Xseparated by, and optionally terminated by, \fB;\fP, \fB&\fP,
  1195. Xor a newline.
  1196. XNormally the shell waits for each list to finish before executing
  1197. Xthe next one.
  1198. XIf a list is terminated by a \fB&\fP, the shell executes
  1199. Xit in the background, and does not wait for it to finish.
  1200. X.PP
  1201. XA \fIcomplex command\fP is one of the following:
  1202. X.PP
  1203. X.RS
  1204. X.PD 0
  1205. X.TP
  1206. X\fBfor\fP \fIname\fP [ \fBin\fP \fIword\fP ... ]
  1207. X.TP
  1208. X\fBdo\fP \fIlist\fP
  1209. X.TP
  1210. X\fBdone\fP
  1211. X.PD
  1212. XExpand the list of \fIword\fPs, and set the parameter
  1213. X\fIname\fP to each of them in turn, executing
  1214. X\fIlist\fP each time.  If the \fBin\fP \fIword\fP is omitted,
  1215. Xuse the positional parameters instead of the \fIword\fPs.
  1216. X.TP
  1217. X\fBfor\fP \fIname\fP [ \fBin\fP \fIword\fP ... ] ; \fIsublist\fP
  1218. XThis is a shorthand for \fBfor\fP.
  1219. XThough it may cause confusion, it is included for convenience;
  1220. Xits use in scripts is discouraged,
  1221. Xunless \fIsublist\fP is a command of the form { \fIlist\fP }.
  1222. X.PP
  1223. X.PD 0
  1224. X.TP
  1225. X\fBforeach\fP \fIname\fP \fB(\fP \fIword\fP ... \fB)\fP
  1226. X.TP
  1227. X\fIlist\fP
  1228. X.TP
  1229. X\fBend\fP
  1230. X.PD
  1231. XAnother form of \fBfor\fP.
  1232. X.PP
  1233. X.PD 0
  1234. X.TP
  1235. X\fBfor\fP \fIname\fP \fBin\fP \fIword\fP ...
  1236. X.TP
  1237. X\fB{\fP
  1238. X.TP
  1239. X\fIlist\fP
  1240. X.TP
  1241. X\fB}\fP
  1242. X.PD
  1243. XAnother form of \fBfor\fP.
  1244. X.PP
  1245. X.PD 0
  1246. X.TP
  1247. X\fBfor\fP \fIname\fP \fB(\fP \fIword\fP ... \fB) {\fP
  1248. X.TP
  1249. X\fIlist\fP
  1250. X.TP
  1251. X\fB}\fP
  1252. X.PD
  1253. XAnother form of \fBfor\fP.
  1254. X.PP
  1255. X.PD 0
  1256. X.TP
  1257. X\fBfor\fP \fIname\fP \fB(\fP \fIword\fP ... \fB) \fIsublist\fP
  1258. X.PD
  1259. XAnother form of \fBfor\fP.
  1260. X.PP
  1261. X.PD 0
  1262. X.TP
  1263. X\fBselect\fP \fIname\fP [ \fBin\fP \fIword\fP ... ]
  1264. X.TP
  1265. X\fBdo\fP \fIlist\fP
  1266. X.TP
  1267. X\fBdone\fP
  1268. X.PD
  1269. XPrint the set of \fIword\fPs, each preceded by a number.
  1270. XIf the \fBin\fP \fIword\fP is omitted, use the positional parameters.
  1271. XThe \fBPROMPT3\fP prompt is printed and a line is read from standard
  1272. Xinput.  If this line consists of the number of one of the listed
  1273. X\fIword\fPs, then the parameter \fIname\fP
  1274. Xis set to the \fIword\fP corresponding to this number.
  1275. XIf this line is empty, the selection list is printed again.
  1276. XOtherwise, the value of the parameter \fIname\fP is set to null.
  1277. XThe contents of the line read from standard input is saved
  1278. Xin the parameter \fBREPLY\fP.  \fIlist\fP is executed
  1279. Xfor each selection until a break or end-of-file is encountered.
  1280. X.TP
  1281. X\fBselect\fP \fIname\fP [ \fBin\fP \fIword\fP ] ; \fIsublist\fP
  1282. XA short form of \fBselect\fP.
  1283. X.TP
  1284. X\fBcase\fP \fIword\fP \fBin\fP [ \fIpattern\fP ) \fIlist\fP ;; ] ...  \fBesac\fP
  1285. XExecute the \fIlist\fP associated with the first \fIpattern\fP
  1286. Xthat matches \fIword\fP, if any.  The form of the patterns
  1287. Xis the same as that used for filename generation.  See
  1288. X\fIFilename Generation\fP below.
  1289. X.TP
  1290. X\fBcase\fP \fIword\fP \fB{\fP [ \fIpattern\fP ) \fIlist\fP ;; ] ...  \fB}\fP
  1291. XAnother form of \fBcase\fP.
  1292. X.TP
  1293. X.PD 0
  1294. X\fBif\fP \fIlist\fP
  1295. X.TP
  1296. X\fBthen\fP \fIlist\fP
  1297. X.TP
  1298. X[ \fBelif\fP \fIlist\fP ; \fBthen\fP \fIlist\fP ] ...
  1299. X.TP
  1300. X[ \fBelse\fP \fIlist\fP ]
  1301. X.TP
  1302. X\fBfi\fP
  1303. X.PD
  1304. XThe \fBif\fP \fIlist\fP is executed, and,
  1305. Xif it returns a zero exit status,
  1306. Xthe \fBthen\fP \fIlist\fP is executed.
  1307. XOtherwise, the \fBelif\fP \fIlist\fP is
  1308. Xexecuted and, if its value is zero,
  1309. Xthe \fBthen\fP \fIlist\fP is executed.
  1310. XIf each \fBelif\fP \fIlist\fP returns
  1311. Xnonzero, the \fBelse\fP \fIlist\fP is executed.
  1312. X.TP
  1313. X\fBif (\fP \fIlist\fP \fB)\fP \fIsublist\fP
  1314. XA short form of \fBif\fP.
  1315. X.PP
  1316. X.PD 0
  1317. X.TP
  1318. X\fBif\fP \fB(\fP \fIlist\fP \fB) {\fP
  1319. X.TP
  1320. X\fIlist\fP
  1321. X.TP
  1322. X\fB} elif (\fP \fIlist\fP \fB) {\fP
  1323. X.TP
  1324. X\fIlist\fP
  1325. X.TP
  1326. X\fB} ... else (\fP \fIlist\fP \fB) {\fP
  1327. X.TP
  1328. X\fIlist\fP
  1329. X.TP
  1330. X\fB}\fP
  1331. X.PD
  1332. XAn alternate form of \fBif\fP.
  1333. X.TP
  1334. X.PD 0
  1335. X\fBwhile\fP \fIlist\fP
  1336. X.TP
  1337. X\fBdo\fP \fIlist\fP
  1338. X.TP
  1339. X\fBdone\fP
  1340. X.PD
  1341. XExecute the \fBdo\fP \fIlist\fP as long as the \fBwhile\fP \fIlist\fP
  1342. Xreturns a zero exit status.
  1343. X.PP
  1344. X.PD 0
  1345. X.TP
  1346. X\fBwhile (\fP \fIlist\fP \fB) {\fP
  1347. X.TP
  1348. X\fIlist\fP
  1349. X.TP
  1350. X\fB}\fP
  1351. X.PD
  1352. XAn alternate form of \fBwhile\fP.
  1353. X.TP
  1354. X.PD 0
  1355. X\fBuntil\fP \fIlist\fP
  1356. X.TP
  1357. X\fBdo\fP \fIlist\fP
  1358. X.TP
  1359. X\fBdone\fP
  1360. X.PD
  1361. XExecute the \fBdo\fP \fIlist\fP as long as \fBuntil\fP \fIlist\fP
  1362. Xreturns a nonzero exit status.
  1363. X.TP
  1364. X.PD 0
  1365. X\fBrepeat\fP \fIword\fP
  1366. X.TP
  1367. X\fBdo\fP \fIlist\fP
  1368. X.TP
  1369. X\fBdone\fP
  1370. X.PD
  1371. X\fIword\fP is expanded and treated as an arithmetic expression,
  1372. Xwhich must evaluate to a number \fIn\fP.
  1373. X\fIlist\fP is then executed \fBn\fP times.
  1374. X.TP
  1375. X\fBrepeat\fP \fIword\fP \fIsublist\fP
  1376. XThis is a short form of \fBrepeat\fP.
  1377. X.TP
  1378. X( \fIlist\fP )
  1379. XExecute \fIlist\fP in a subshell.
  1380. X.TP
  1381. X{ \fIlist\fP }
  1382. XExecute \fIlist\fP.
  1383. X.TP
  1384. X.PD 0
  1385. X\fBfunction\fP \fIword\fP [ (\|) ] ... { \fIlist\fP }
  1386. X.TP
  1387. X\fIword\fP ... (\|) { \fIlist\fP }
  1388. X.TP
  1389. X\fIword\fP ... (\|) \fIsublist\fP
  1390. X.PD
  1391. XDefine a function which is referenced by any one of \fIword\fP.
  1392. XNormally, only one \fIword\fP is provided; multiple \fIword\fPs
  1393. Xare usually only useful for setting traps.
  1394. XThe body of the function is the \fIlist\fP between
  1395. Xthe { and }.
  1396. XSee \fBFUNCTIONS\fP below.
  1397. X.TP
  1398. X\fBtime\fP \fIpipeline\fP
  1399. XThe \fIpipeline\fP is executed, and timing statistics are
  1400. Xreported on the standard error in the form specified
  1401. Xby the \fBTIMEFMT\fP parameter.
  1402. X.TP
  1403. X[[ \fIexp\fP ]]
  1404. XEvaluates the conditional expression \fIexp\fP
  1405. Xand return a zero exit status if it is true.
  1406. XSee \fBConditional Expressions\fP below for a description
  1407. Xof \fIexp\fP.
  1408. X.SH "RESERVED WORDS"
  1409. XThe following words are recognized as reserved words when used 
  1410. Xas the first word of a command
  1411. SHAR_EOF
  1412. true || echo 'restore of zsh2.1/man/man1/zsh.1 failed'
  1413. fi
  1414. echo 'End of zsh2.1.0 part 1'
  1415. echo 'File zsh2.1/man/man1/zsh.1 is continued in part 2'
  1416. echo 2 > _shar_seq_.tmp
  1417. exit 0
  1418.  
  1419. exit 0 # Just in case...
  1420. -- 
  1421. Kent Landfield                   INTERNET: kent@sparky.IMD.Sterling.COM
  1422. Sterling Software, IMD           UUCP:     uunet!sparky!kent
  1423. Phone:    (402) 291-8300         FAX:      (402) 291-4362
  1424. Please send comp.sources.misc-related mail to kent@uunet.uu.net.
  1425.