home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / misc / volume24 / zsh2.1 / part14 < prev    next >
Text File  |  1991-10-26  |  49KB  |  1,439 lines

  1. Newsgroups: comp.sources.misc
  2. From: pfalstad@phoenix.Princeton.EDU (Paul Falstad)
  3. Subject:  v24i014:  zsh2.1 - The Z shell, Part14/19
  4. Message-ID: <1991Oct26.015023.19646@sparky.imd.sterling.com>
  5. X-Md4-Signature: f6041c7100ec21c1dea2c6576988dc32
  6. Date: Sat, 26 Oct 1991 01:50:23 GMT
  7. Approved: kent@sparky.imd.sterling.com
  8.  
  9. Submitted-by: pfalstad@phoenix.Princeton.EDU (Paul Falstad)
  10. Posting-number: Volume 24, Issue 14
  11. Archive-name: zsh2.1/part14
  12. Environment: BSD
  13. Supersedes: zsh2.00: Volume 18, Issue 84-98
  14.  
  15. #!/bin/sh
  16. # this is zshar.14 (part 14 of zsh2.1.0)
  17. # do not concatenate these parts, unpack them in order with /bin/sh
  18. # file zsh2.1/src/zle_tricky.c continued
  19. #
  20. if test ! -r _shar_seq_.tmp; then
  21.     echo 'Please unpack part 1 first!'
  22.     exit 1
  23. fi
  24. (read Scheck
  25.  if test "$Scheck" != 14; then
  26.     echo Please unpack part "$Scheck" next!
  27.     exit 1
  28.  else
  29.     exit 0
  30.  fi
  31. ) < _shar_seq_.tmp || exit 1
  32. if test ! -f _shar_wnt_.tmp; then
  33.     echo 'x - still skipping zsh2.1/src/zle_tricky.c'
  34. else
  35. echo 'x - continuing file zsh2.1/src/zle_tricky.c'
  36. sed 's/^X//' << 'SHAR_EOF' >> 'zsh2.1/src/zle_tricky.c' &&
  37. X    strinbeg();
  38. X    pushheap();
  39. X    do {
  40. X        lincmd = incmdpos;
  41. X        ctxtlex();
  42. X        if (tok == ENDINPUT) break;
  43. X        if (tok == STRING && lincmd) {
  44. X            if (s) free(s);
  45. X            s = ztrdup(tokstr);
  46. X            cmdwb = ll-wordbeg; cmdwe = ll+1-inbufct;
  47. X        }
  48. X        lincmd = incmdpos;
  49. X    } while (tok != ENDINPUT && zleparse);
  50. X    hflush();
  51. X    popheap();
  52. X    strinend();
  53. X    errflag = zleparse = 0;
  54. X    lexrestore();
  55. X    return s;
  56. X}
  57. X
  58. Xvoid processcmd() /**/
  59. X{
  60. Xchar *s,*t;
  61. X
  62. X    s = getcurcmd();
  63. X    if (!s) { feep(); return; }
  64. X    t = zlecmds[bindk].name;
  65. X    mult = 1;
  66. X    pushline();
  67. X    sizeline(strlen(s)+strlen(t)+1);
  68. X    strcpy(line,t);
  69. X    strcat(line," ");
  70. X    cs = ll = strlen(line);
  71. X    inststr(s);
  72. X    free(s);
  73. X    done = 1;
  74. X}
  75. X
  76. Xvoid expandcmdpath() /**/
  77. X{
  78. Xint oldcs = cs;
  79. Xchar *s,*str;
  80. X
  81. X    s = getcurcmd();
  82. X    if (!s) { feep(); return; }
  83. X    str = findcmd(s);
  84. X    free(s);
  85. X    if (!str) { feep(); return; }
  86. X    cs = cmdwb;
  87. X    foredel(cmdwe-cmdwb);
  88. X    spaceinline(strlen(str));
  89. X    strncpy(line+cs,str,strlen(str));
  90. X    cs = oldcs;
  91. X    if (cs >= cmdwe) cs += cmdwe-cmdwb+strlen(str);
  92. X    if (cs > ll) cs = ll;
  93. X    free(str);
  94. X}
  95. X
  96. Xvoid freemenu() /**/
  97. X{
  98. X    if (menucmp && (unset(LASTMENU) || lastmenu == NULL)) {
  99. X        menucmp = 0;
  100. X        freetable(menulist,freestr);
  101. X    }
  102. X}
  103. X
  104. Xint inarray(s,a) /**/
  105. Xchar *s; char **a;
  106. X{
  107. X    for (; *a; a++) if (!strcmp(*a,s)) return 1;
  108. X    return 0;
  109. X}
  110. X
  111. SHAR_EOF
  112. echo 'File zsh2.1/src/zle_tricky.c is complete' &&
  113. chmod 0644 zsh2.1/src/zle_tricky.c ||
  114. echo 'restore of zsh2.1/src/zle_tricky.c failed'
  115. Wc_c="`wc -c < 'zsh2.1/src/zle_tricky.c'`"
  116. test 24239 -eq "$Wc_c" ||
  117.     echo 'zsh2.1/src/zle_tricky.c: original size 24239, current size' "$Wc_c"
  118. rm -f _shar_wnt_.tmp
  119. fi
  120. # ============= zsh2.1/src/builtin.pro ==============
  121. if test -f 'zsh2.1/src/builtin.pro' -a X"$1" != X"-c"; then
  122.     echo 'x - skipping zsh2.1/src/builtin.pro (File already exists)'
  123.     rm -f _shar_wnt_.tmp
  124. else
  125. > _shar_wnt_.tmp
  126. echo 'x - extracting zsh2.1/src/builtin.pro (Text)'
  127. sed 's/^X//' << 'SHAR_EOF' > 'zsh2.1/src/builtin.pro' &&
  128. Xvoid addbuiltins DCLPROTO((void));
  129. Xint bin_enable DCLPROTO((char *name,char **argv,char *ops,int whocares));
  130. Xint bin_colon DCLPROTO((char *name,char **argv,char *ops,int whocares));
  131. Xint bin_break DCLPROTO((char *name,char **argv,char *ops,int func));
  132. Xint bin_fg DCLPROTO((char *name,char **argv,char *ops,int func));
  133. Xint bin_let DCLPROTO((char *name,char **argv,char *ops,int func));
  134. Xint zexit DCLPROTO((int val));
  135. Xint optlookup DCLPROTO((char *s));
  136. Xint bin_setopt DCLPROTO((char *nam,char **args,char *ops,int isun));
  137. Xvoid listhtable DCLPROTO((Hashtab ht,HFunc func));
  138. Xvoid pshfunc DCLPROTO((char *s,Cmdnam cc));
  139. Xvoid niceprint DCLPROTO((char *s));
  140. Xvoid niceprintf DCLPROTO((char *s,FILE *f));
  141. Xint bin_umask DCLPROTO((char *nam,char **args,char *ops,int func));
  142. Xint bin_whence DCLPROTO((char *nam,char **argv,char *ops,int func));
  143. Xint bin_cd DCLPROTO((char *nam,char **argv,char *ops,int func));
  144. Xchar *cd_get_dest DCLPROTO((char *nam,char **argv,char *ops,int func));
  145. Xchar *cd_do_chdir DCLPROTO((char *nam, char *dest));
  146. Xvoid cd_new_pwd DCLPROTO((int func, char *s));
  147. Xvoid convertwd DCLPROTO((char *s, char *t));
  148. Xint bin_rehash DCLPROTO((char *name,char **argv,char *ops,int func));
  149. Xint bin_hash DCLPROTO((char *name,char **argv,char *ops,int func));
  150. Xint prefix DCLPROTO((char *s,char *t));
  151. Xint getjob DCLPROTO((char *s,char *prog));
  152. Xint findjobnam DCLPROTO((char *s));
  153. Xint bin_kill DCLPROTO((char *nam,char **argv,char *ops,int func));
  154. Xint bin_limit DCLPROTO((char *nam,char **argv,char *ops,int func));
  155. Xint bin_unlimit DCLPROTO((char *nam,char **argv,char *ops,int func));
  156. Xvoid showlimits DCLPROTO((int hard,int lim));
  157. Xint bin_sched DCLPROTO((char *nam,char **argv,char *ops,int func));
  158. Xint bin_eval DCLPROTO((char *nam,char **argv,char *ops,int func));
  159. Xint fcgetcomm DCLPROTO((char *s));
  160. Xint fcsubs DCLPROTO((char **sp,struct asgment *sub));
  161. Xint fclist DCLPROTO((FILE *f,int n,int r,int first,int last,struct asgment *subs));
  162. Xint fcedit DCLPROTO((char *ename,char *fn));
  163. Xint bin_fc DCLPROTO((char *nam,char **argv,char *ops,int func));
  164. Xint bin_suspend DCLPROTO((char *name,char **argv,char *ops,int func));
  165. Xint bin_alias DCLPROTO((char *name,char **argv,char *ops,int func));
  166. Xvoid printalias DCLPROTO((char *s,struct alias *a));
  167. Xvoid printparam DCLPROTO((char *s,Param p));
  168. Xint bin_typeset DCLPROTO((char *name,char **argv,char *ops,int func));
  169. Xint escputs DCLPROTO((char *s));
  170. Xint bin_print DCLPROTO((char *name,char **args,char *ops,int func));
  171. Xint bin_dirs DCLPROTO((char *name,char **argv,char *ops,int func));
  172. Xint bin_unalias DCLPROTO((char *name,char **argv,char *ops,int func));
  173. Xint bin_unhash DCLPROTO((char *name,char **argv,char *ops,int func));
  174. Xint bin_unset DCLPROTO((char *name,char **argv,char *ops,int func));
  175. Xint zread DCLPROTO((void));
  176. Xint bin_read DCLPROTO((char *name,char **args,char *ops,int func));
  177. Xint bin_vared DCLPROTO((char *name,char **args,char *ops,int func));
  178. Xint execbin DCLPROTO((Lklist args,Cmdnam cnode));
  179. Xstruct asgment *getasg DCLPROTO((char *s));
  180. Xint bin_dot DCLPROTO((char *name,char **argv,char *ops,int func));
  181. Xint bin_set DCLPROTO((char *name,char **argv,char *ops,int func));
  182. Xint bin_times DCLPROTO((char *name,char **argv,char *ops,int func));
  183. Xint bin_getopts DCLPROTO((char *name,char **argv,char *ops,int func));
  184. Xint getsignum DCLPROTO((char *s));
  185. Xint bin_trap DCLPROTO((char *name,char **argv,char *ops,int func));
  186. Xvoid printulimit DCLPROTO((int lim,int hard));
  187. Xint bin_ulimit DCLPROTO((char *name,char **argv,char *ops,int func));
  188. Xint putraw DCLPROTO((int c));
  189. Xint bin_echotc DCLPROTO((char *name,char **argv,char *ops,int func));
  190. Xint bin_pwd DCLPROTO((char *name,char **argv,char *ops,int func));
  191. Xint bin_test DCLPROTO((char *name,char **argv,char *ops,int func));
  192. XCond partest DCLPROTO((int level));
  193. SHAR_EOF
  194. chmod 0644 zsh2.1/src/builtin.pro ||
  195. echo 'restore of zsh2.1/src/builtin.pro failed'
  196. Wc_c="`wc -c < 'zsh2.1/src/builtin.pro'`"
  197. test 3753 -eq "$Wc_c" ||
  198.     echo 'zsh2.1/src/builtin.pro: original size 3753, current size' "$Wc_c"
  199. rm -f _shar_wnt_.tmp
  200. fi
  201. # ============= zsh2.1/src/cond.pro ==============
  202. if test -f 'zsh2.1/src/cond.pro' -a X"$1" != X"-c"; then
  203.     echo 'x - skipping zsh2.1/src/cond.pro (File already exists)'
  204.     rm -f _shar_wnt_.tmp
  205. else
  206. > _shar_wnt_.tmp
  207. echo 'x - extracting zsh2.1/src/cond.pro (Text)'
  208. sed 's/^X//' << 'SHAR_EOF' > 'zsh2.1/src/cond.pro' &&
  209. Xint evalcond DCLPROTO((Cond c));
  210. Xint doaccess DCLPROTO((char *s,int c));
  211. Xstruct stat *getstat DCLPROTO((char *s));
  212. Xunsigned short dostat DCLPROTO((char *s));
  213. Xunsigned short dolstat DCLPROTO((char *s));
  214. Xint optison DCLPROTO((char *s));
  215. SHAR_EOF
  216. chmod 0644 zsh2.1/src/cond.pro ||
  217. echo 'restore of zsh2.1/src/cond.pro failed'
  218. Wc_c="`wc -c < 'zsh2.1/src/cond.pro'`"
  219. test 235 -eq "$Wc_c" ||
  220.     echo 'zsh2.1/src/cond.pro: original size 235, current size' "$Wc_c"
  221. rm -f _shar_wnt_.tmp
  222. fi
  223. # ============= zsh2.1/src/exec.pro ==============
  224. if test -f 'zsh2.1/src/exec.pro' -a X"$1" != X"-c"; then
  225.     echo 'x - skipping zsh2.1/src/exec.pro (File already exists)'
  226.     rm -f _shar_wnt_.tmp
  227. else
  228. > _shar_wnt_.tmp
  229. echo 'x - extracting zsh2.1/src/exec.pro (Text)'
  230. sed 's/^X//' << 'SHAR_EOF' > 'zsh2.1/src/exec.pro' &&
  231. XList parselstring DCLPROTO((char *s));
  232. Xvoid execstring DCLPROTO((char *s));
  233. Xvoid newrunlist DCLPROTO((List l));
  234. Xint phork DCLPROTO((void));
  235. Xint execcursh DCLPROTO((Cmd cmd));
  236. Xvoid zexecve DCLPROTO((char *pth,char **argv,int *ee,char *b1,char *b2));
  237. Xvoid execute DCLPROTO((Lklist args,int dash));
  238. Xchar *findcmd DCLPROTO((char *arg0));
  239. Xvoid execlist DCLPROTO((List list));
  240. Xvoid execlist2 DCLPROTO((Sublist list,int type,int last1));
  241. Xint execpline DCLPROTO((Sublist l,int how,int last1));
  242. Xvoid execpline2 DCLPROTO((Pline pline,int how,int input,int output,int last1));
  243. Xchar **makecline DCLPROTO((struct lklist *list));
  244. Xvoid fixcline DCLPROTO((Lklist l));
  245. Xvoid untokenize DCLPROTO((char *s));
  246. Xint dontclob DCLPROTO((struct redir *f));
  247. Xvoid closemn DCLPROTO((struct multio **mfds,int fd));
  248. Xvoid closemnodes DCLPROTO((struct multio **mfds));
  249. Xvoid addfd DCLPROTO((int forked,int *save,struct multio **mfds,int fd1,int fd2,int rflag));
  250. Xvoid addvars DCLPROTO((Lklist l,int export));
  251. Xvoid execcmd DCLPROTO((Cmd cmd,int input,int output,int bkg,int last1));
  252. Xvoid fixfds DCLPROTO((int *save));
  253. Xvoid entersubsh DCLPROTO((int bkg));
  254. Xvoid closem DCLPROTO((void));
  255. Xchar *gethere DCLPROTO((char *str,int typ));
  256. Xint getherestr DCLPROTO((struct redir *fn));
  257. Xvoid catproc DCLPROTO((struct multio *mn));
  258. Xvoid teeproc DCLPROTO((struct multio *mn));
  259. Xvoid closeallelse DCLPROTO((struct multio *mn));
  260. Xlong int zstrtol DCLPROTO((char *s,char **t,int base));
  261. XLklist getoutput DCLPROTO((char *cmd,int qt));
  262. XLklist readoutput DCLPROTO((int in,int qt));
  263. Xchar *getoutputfile DCLPROTO((char *cmd));
  264. Xchar *namedpipe DCLPROTO((void));
  265. Xchar *getoutproc DCLPROTO((char *cmd));
  266. Xchar *getinproc DCLPROTO((char *cmd));
  267. Xint getinpipe DCLPROTO((char *cmd));
  268. Xint getoutpipe DCLPROTO((char *cmd));
  269. Xvoid runlist DCLPROTO((List l));
  270. Xchar *gettemp DCLPROTO((void));
  271. Xchar *zgetwd DCLPROTO((void));
  272. Xvoid mpipe DCLPROTO((int *pp));
  273. Xvoid spawnpipes DCLPROTO((Lklist l));
  274. Xint exectime DCLPROTO((Cmd cmd));
  275. Xint execfuncdef DCLPROTO((Cmd cmd));
  276. Xint execcond DCLPROTO((Cmd cmd));
  277. Xvoid execshfunc DCLPROTO((Cmd cmd,Cmdnam cn));
  278. XList getfpfunc DCLPROTO((char *s));
  279. SHAR_EOF
  280. chmod 0644 zsh2.1/src/exec.pro ||
  281. echo 'restore of zsh2.1/src/exec.pro failed'
  282. Wc_c="`wc -c < 'zsh2.1/src/exec.pro'`"
  283. test 2109 -eq "$Wc_c" ||
  284.     echo 'zsh2.1/src/exec.pro: original size 2109, current size' "$Wc_c"
  285. rm -f _shar_wnt_.tmp
  286. fi
  287. # ============= zsh2.1/src/glob.pro ==============
  288. if test -f 'zsh2.1/src/glob.pro' -a X"$1" != X"-c"; then
  289.     echo 'x - skipping zsh2.1/src/glob.pro (File already exists)'
  290.     rm -f _shar_wnt_.tmp
  291. else
  292. > _shar_wnt_.tmp
  293. echo 'x - extracting zsh2.1/src/glob.pro (Text)'
  294. sed 's/^X//' << 'SHAR_EOF' > 'zsh2.1/src/glob.pro' &&
  295. Xvoid glob DCLPROTO((Lklist list,Lknode *np));
  296. Xlong qgetnum DCLPROTO((char **s));
  297. Xint notstrcmp DCLPROTO((char **a,char **b));
  298. Xint forstrcmp DCLPROTO((char **a,char **b));
  299. Xvoid insert DCLPROTO((char *s));
  300. Xint haswilds DCLPROTO((char *str));
  301. Xint hasbraces DCLPROTO((char *str));
  302. Xint xpandredir DCLPROTO((struct redir *fn,Lklist tab));
  303. Xchar *dyncat DCLPROTO((char *s1,char *s2));
  304. Xchar *tricat DCLPROTO((char *s1,char *s2,char *s3));
  305. Xvoid xpandbraces DCLPROTO((Lklist list,Lknode *np));
  306. Xchar *getparen DCLPROTO((char *str));
  307. Xint matchpat DCLPROTO((char *a,char *b));
  308. Xvoid getmatch DCLPROTO((char **sp,char *pat,int dd));
  309. Xchar *getfullpath DCLPROTO((char *s));
  310. Xvoid scanner DCLPROTO((Complist q));
  311. Xint minimatch DCLPROTO((char **pat,char **str));
  312. Xint domatch DCLPROTO((char *str,Comp c,int fist));
  313. Xint doesmatch DCLPROTO((Comp c));
  314. XComplist parsepat DCLPROTO((char *str));
  315. XComp parsereg DCLPROTO((char *str));
  316. XComplist parsecomplist DCLPROTO((void));
  317. XComp parsecomp DCLPROTO((void));
  318. XComp parsecompsw DCLPROTO((void));
  319. Xint patmatch DCLPROTO((char *ss,char *tt));
  320. Xvoid remnulargs DCLPROTO((char *s));
  321. Xint qualdev DCLPROTO((struct stat *buf,long dv));
  322. Xint qualnlink DCLPROTO((struct stat *buf,long ct));
  323. Xint qualuid DCLPROTO((struct stat *buf,long uid));
  324. Xint qualgid DCLPROTO((struct stat *buf,long gid));
  325. Xint qualisdev DCLPROTO((struct stat *buf,long junk));
  326. Xint qualmode DCLPROTO((struct stat *buf,long mod));
  327. Xint qualflags DCLPROTO((struct stat *buf,long mod));
  328. Xint qualiscom DCLPROTO((struct stat *buf,long mod));
  329. SHAR_EOF
  330. chmod 0644 zsh2.1/src/glob.pro ||
  331. echo 'restore of zsh2.1/src/glob.pro failed'
  332. Wc_c="`wc -c < 'zsh2.1/src/glob.pro'`"
  333. test 1511 -eq "$Wc_c" ||
  334.     echo 'zsh2.1/src/glob.pro: original size 1511, current size' "$Wc_c"
  335. rm -f _shar_wnt_.tmp
  336. fi
  337. # ============= zsh2.1/src/hist.pro ==============
  338. if test -f 'zsh2.1/src/hist.pro' -a X"$1" != X"-c"; then
  339.     echo 'x - skipping zsh2.1/src/hist.pro (File already exists)'
  340.     rm -f _shar_wnt_.tmp
  341. else
  342. > _shar_wnt_.tmp
  343. echo 'x - extracting zsh2.1/src/hist.pro (Text)'
  344. sed 's/^X//' << 'SHAR_EOF' > 'zsh2.1/src/hist.pro' &&
  345. Xvoid hwaddc DCLPROTO((int c));
  346. Xint hgetc DCLPROTO((void));
  347. Xvoid clearalstack DCLPROTO((void));
  348. Xint hgetch DCLPROTO((void));
  349. Xvoid hungets DCLPROTO((char *str));
  350. Xvoid hungetc DCLPROTO((int c));
  351. Xvoid hungetch DCLPROTO((int c));
  352. Xvoid strinbeg DCLPROTO((void));
  353. Xvoid strinend DCLPROTO((void));
  354. Xint stuff DCLPROTO((char *fn));
  355. Xvoid hflush DCLPROTO((void));
  356. Xvoid hbegin DCLPROTO((void));
  357. Xvoid inittty DCLPROTO((void));
  358. Xint hend DCLPROTO((void));
  359. Xvoid remhist DCLPROTO((void));
  360. Xvoid hwbegin DCLPROTO((void));
  361. Xchar *hwadd DCLPROTO((void));
  362. Xint getargspec DCLPROTO((int argc,int marg));
  363. Xint hconsearch DCLPROTO((char *str,int *marg));
  364. Xint hcomsearch DCLPROTO((char *str));
  365. Xint remtpath DCLPROTO((char **junkptr));
  366. Xint remtext DCLPROTO((char **junkptr));
  367. Xint rembutext DCLPROTO((char **junkptr));
  368. Xint remlpaths DCLPROTO((char **junkptr));
  369. Xint makeuppercase DCLPROTO((char **junkptr));
  370. Xint makelowercase DCLPROTO((char **junkptr));
  371. Xvoid subst DCLPROTO((char **strptr,char *in,char *out,int gbal));
  372. Xchar *convamps DCLPROTO((char *out,char *in));
  373. Xchar *makehstr DCLPROTO((char *s));
  374. Xchar *quietgetevent DCLPROTO((int ev));
  375. Xchar *getevent DCLPROTO((int ev));
  376. Xint getargc DCLPROTO((char *list));
  377. Xchar *getargs DCLPROTO((char *elist,int arg1,int arg2));
  378. Xvoid upcase DCLPROTO((char **x));
  379. Xvoid downcase DCLPROTO((char **x));
  380. Xint quote DCLPROTO((char **tr));
  381. Xint quotebreak DCLPROTO((char **tr));
  382. Xvoid stradd DCLPROTO((char *d));
  383. Xint putstr DCLPROTO((int d));
  384. Xchar *putprompt DCLPROTO((char *fm,int *lenp));
  385. Xvoid herrflush DCLPROTO((void));
  386. Xchar *hdynread DCLPROTO((int stop));
  387. Xchar *hdynread2 DCLPROTO((int stop));
  388. Xvoid setcbreak DCLPROTO((void));
  389. Xint getlineleng DCLPROTO((void));
  390. Xvoid unsetcbreak DCLPROTO((void));
  391. Xvoid attachtty DCLPROTO((long pgrp));
  392. SHAR_EOF
  393. chmod 0644 zsh2.1/src/hist.pro ||
  394. echo 'restore of zsh2.1/src/hist.pro failed'
  395. Wc_c="`wc -c < 'zsh2.1/src/hist.pro'`"
  396. test 1737 -eq "$Wc_c" ||
  397.     echo 'zsh2.1/src/hist.pro: original size 1737, current size' "$Wc_c"
  398. rm -f _shar_wnt_.tmp
  399. fi
  400. # ============= zsh2.1/src/init.pro ==============
  401. if test -f 'zsh2.1/src/init.pro' -a X"$1" != X"-c"; then
  402.     echo 'x - skipping zsh2.1/src/init.pro (File already exists)'
  403.     rm -f _shar_wnt_.tmp
  404. else
  405. > _shar_wnt_.tmp
  406. echo 'x - extracting zsh2.1/src/init.pro (Text)'
  407. sed 's/^X//' << 'SHAR_EOF' > 'zsh2.1/src/init.pro' &&
  408. Xvoid main DCLPROTO((int argc, char **argv, char **envp));
  409. Xvoid loop DCLPROTO((void));
  410. Xvoid setflags DCLPROTO((void));
  411. Xvoid parseargs DCLPROTO((char **argv));
  412. Xvoid setmoreflags DCLPROTO((void));
  413. Xvoid setupvals DCLPROTO((void));
  414. Xvoid initialize DCLPROTO((void));
  415. Xvoid addreswords DCLPROTO((void));
  416. Xvoid runscripts DCLPROTO((void));
  417. Xvoid ainit DCLPROTO((void));
  418. Xvoid readhistfile DCLPROTO((char *s,int err));
  419. Xvoid savehistfile DCLPROTO((char *s,int err));
  420. SHAR_EOF
  421. chmod 0644 zsh2.1/src/init.pro ||
  422. echo 'restore of zsh2.1/src/init.pro failed'
  423. Wc_c="`wc -c < 'zsh2.1/src/init.pro'`"
  424. test 453 -eq "$Wc_c" ||
  425.     echo 'zsh2.1/src/init.pro: original size 453, current size' "$Wc_c"
  426. rm -f _shar_wnt_.tmp
  427. fi
  428. # ============= zsh2.1/src/jobs.pro ==============
  429. if test -f 'zsh2.1/src/jobs.pro' -a X"$1" != X"-c"; then
  430.     echo 'x - skipping zsh2.1/src/jobs.pro (File already exists)'
  431.     rm -f _shar_wnt_.tmp
  432. else
  433. > _shar_wnt_.tmp
  434. echo 'x - extracting zsh2.1/src/jobs.pro (Text)'
  435. sed 's/^X//' << 'SHAR_EOF' > 'zsh2.1/src/jobs.pro' &&
  436. XHANDTYPE handler DCLPROTO((int sig,int code));
  437. Xvoid makerunning DCLPROTO((Job jn));
  438. Xvoid updatestatus DCLPROTO((Job jn));
  439. Xvoid findproc DCLPROTO((int pid,Job *jptr,struct process **pptr));
  440. Xvoid printjob DCLPROTO((Job jn,int lng));
  441. Xvoid setprevjob DCLPROTO((void));
  442. Xvoid initjob DCLPROTO((void));
  443. Xstruct process *addproc DCLPROTO((long pid,char *text));
  444. Xint execok DCLPROTO((void));
  445. Xvoid waitjob DCLPROTO((int job));
  446. Xvoid waitjobs DCLPROTO((void));
  447. Xvoid clearjobtab DCLPROTO((void));
  448. Xint getfreejob DCLPROTO((void));
  449. Xvoid spawnjob DCLPROTO((void));
  450. Xvoid fixsigs DCLPROTO((void));
  451. Xvoid printtime DCLPROTO((time_t real,struct rusage *ru,char *desc));
  452. Xvoid dumptime DCLPROTO((Job jn));
  453. Xvoid killrunjobs DCLPROTO((void));
  454. Xvoid checkjobs DCLPROTO((void));
  455. Xint killjb DCLPROTO((Job jn,int sig));
  456. SHAR_EOF
  457. chmod 0644 zsh2.1/src/jobs.pro ||
  458. echo 'restore of zsh2.1/src/jobs.pro failed'
  459. Wc_c="`wc -c < 'zsh2.1/src/jobs.pro'`"
  460. test 789 -eq "$Wc_c" ||
  461.     echo 'zsh2.1/src/jobs.pro: original size 789, current size' "$Wc_c"
  462. rm -f _shar_wnt_.tmp
  463. fi
  464. # ============= zsh2.1/src/loop.pro ==============
  465. if test -f 'zsh2.1/src/loop.pro' -a X"$1" != X"-c"; then
  466.     echo 'x - skipping zsh2.1/src/loop.pro (File already exists)'
  467.     rm -f _shar_wnt_.tmp
  468. else
  469. > _shar_wnt_.tmp
  470. echo 'x - extracting zsh2.1/src/loop.pro (Text)'
  471. sed 's/^X//' << 'SHAR_EOF' > 'zsh2.1/src/loop.pro' &&
  472. Xint execfor DCLPROTO((Cmd cmd));
  473. Xint execselect DCLPROTO((Cmd cmd));
  474. Xint execwhile DCLPROTO((Cmd cmd));
  475. Xint execrepeat DCLPROTO((Cmd cmd));
  476. Xint execif DCLPROTO((Cmd cmd));
  477. Xint execcase DCLPROTO((Cmd cmd));
  478. SHAR_EOF
  479. chmod 0644 zsh2.1/src/loop.pro ||
  480. echo 'restore of zsh2.1/src/loop.pro failed'
  481. Wc_c="`wc -c < 'zsh2.1/src/loop.pro'`"
  482. test 206 -eq "$Wc_c" ||
  483.     echo 'zsh2.1/src/loop.pro: original size 206, current size' "$Wc_c"
  484. rm -f _shar_wnt_.tmp
  485. fi
  486. # ============= zsh2.1/src/math.pro ==============
  487. if test -f 'zsh2.1/src/math.pro' -a X"$1" != X"-c"; then
  488.     echo 'x - skipping zsh2.1/src/math.pro (File already exists)'
  489.     rm -f _shar_wnt_.tmp
  490. else
  491. > _shar_wnt_.tmp
  492. echo 'x - extracting zsh2.1/src/math.pro (Text)'
  493. sed 's/^X//' << 'SHAR_EOF' > 'zsh2.1/src/math.pro' &&
  494. Xint zzlex DCLPROTO((void));
  495. Xint notzero DCLPROTO((int a));
  496. Xvoid op DCLPROTO((int what));
  497. Xvoid bop DCLPROTO((int tk));
  498. Xlong mathevall DCLPROTO((char *s,int prek,char **ep));
  499. Xlong matheval DCLPROTO((char *s));
  500. Xlong mathevalarg DCLPROTO((char *s,char **ss));
  501. Xvoid mathparse DCLPROTO((int pc));
  502. SHAR_EOF
  503. chmod 0644 zsh2.1/src/math.pro ||
  504. echo 'restore of zsh2.1/src/math.pro failed'
  505. Wc_c="`wc -c < 'zsh2.1/src/math.pro'`"
  506. test 291 -eq "$Wc_c" ||
  507.     echo 'zsh2.1/src/math.pro: original size 291, current size' "$Wc_c"
  508. rm -f _shar_wnt_.tmp
  509. fi
  510. # ============= zsh2.1/src/mem.pro ==============
  511. if test -f 'zsh2.1/src/mem.pro' -a X"$1" != X"-c"; then
  512.     echo 'x - skipping zsh2.1/src/mem.pro (File already exists)'
  513.     rm -f _shar_wnt_.tmp
  514. else
  515. > _shar_wnt_.tmp
  516. echo 'x - extracting zsh2.1/src/mem.pro (Text)'
  517. sed 's/^X//' << 'SHAR_EOF' > 'zsh2.1/src/mem.pro' &&
  518. Xvoid meminit DCLPROTO((void));
  519. Xvoid heapalloc DCLPROTO((void));
  520. Xvoid permalloc DCLPROTO((void));
  521. Xvoid lastalloc DCLPROTO((void));
  522. Xvoid pushheap DCLPROTO((void));
  523. Xvoid freeheap DCLPROTO((void));
  524. Xvoid popheap DCLPROTO((void));
  525. Xvoid freeh DCLPROTO((Heap h));
  526. Xvptr halloc DCLPROTO((int size));
  527. Xvptr hcalloc DCLPROTO((int size));
  528. Xvptr hrealloc DCLPROTO((char *p,int old,int new));
  529. Xvptr zalloc DCLPROTO((int l));
  530. Xvptr zcalloc DCLPROTO((int size));
  531. Xchar *strdup DCLPROTO((char *s));
  532. Xchar *ztrdup DCLPROTO((char *s));
  533. SHAR_EOF
  534. chmod 0644 zsh2.1/src/mem.pro ||
  535. echo 'restore of zsh2.1/src/mem.pro failed'
  536. Wc_c="`wc -c < 'zsh2.1/src/mem.pro'`"
  537. test 510 -eq "$Wc_c" ||
  538.     echo 'zsh2.1/src/mem.pro: original size 510, current size' "$Wc_c"
  539. rm -f _shar_wnt_.tmp
  540. fi
  541. # ============= zsh2.1/src/params.pro ==============
  542. if test -f 'zsh2.1/src/params.pro' -a X"$1" != X"-c"; then
  543.     echo 'x - skipping zsh2.1/src/params.pro (File already exists)'
  544.     rm -f _shar_wnt_.tmp
  545. else
  546. > _shar_wnt_.tmp
  547. echo 'x - extracting zsh2.1/src/params.pro (Text)'
  548. sed 's/^X//' << 'SHAR_EOF' > 'zsh2.1/src/params.pro' &&
  549. Xvoid setupparams DCLPROTO((void));
  550. Xstruct param *createparam DCLPROTO((char *name,vptr value,int flags));
  551. Xint isident DCLPROTO((char *s));
  552. XValue getvalue DCLPROTO((char **pptr,int bracks));
  553. Xchar *getstrvalue DCLPROTO((Value v));
  554. Xchar **getarrvalue DCLPROTO((Value v));
  555. Xlong getintvalue DCLPROTO((Value v));
  556. Xvoid setstrvalue DCLPROTO((Value v,char *val));
  557. Xvoid setintvalue DCLPROTO((Value v,long val));
  558. Xvoid setarrvalue DCLPROTO((Value v,char **val));
  559. Xchar *getsparamval DCLPROTO((char *s,int l));
  560. Xlong getiparam DCLPROTO((char *s));
  561. Xchar *getsparam DCLPROTO((char *s));
  562. XParam setsparam DCLPROTO((char *s,char *val));
  563. XParam setaparam DCLPROTO((char *s,char **val));
  564. XParam setiparam DCLPROTO((char *s,long val));
  565. Xvoid unsetparam DCLPROTO((char *s));
  566. Xvoid intsetfn DCLPROTO((Param pm,long x));
  567. Xlong intgetfn DCLPROTO((Param pm));
  568. Xvoid strsetfn DCLPROTO((Param pm,char *x));
  569. Xchar *strgetfn DCLPROTO((Param pm));
  570. Xvoid arrsetfn DCLPROTO((Param pm,char **x));
  571. Xchar **arrgetfn DCLPROTO((Param pm));
  572. Xvoid intvarsetfn DCLPROTO((Param pm,long x));
  573. Xlong intvargetfn DCLPROTO((Param pm));
  574. Xvoid strvarsetfn DCLPROTO((Param pm,char *x));
  575. Xvoid strvarnonullsetfn DCLPROTO((Param pm,char *x));
  576. Xchar *strvargetfn DCLPROTO((Param pm));
  577. Xchar *strconstgetfn DCLPROTO((Param pm));
  578. Xvoid colonarrsetfn DCLPROTO((Param pm,char *x));
  579. Xchar *colonarrgetfn DCLPROTO((Param pm));
  580. Xchar **arrvargetfn DCLPROTO((Param pm));
  581. Xvoid arrvarsetfn DCLPROTO((Param pm,char **x));
  582. Xchar **pathgetfn DCLPROTO((Param pm));
  583. Xvoid pathsetfn DCLPROTO((Param pm,char **x));
  584. Xvoid unsettablesetfn DCLPROTO((Param pm,char *x));
  585. Xlong poundgetfn DCLPROTO((Param pm));
  586. Xlong randomgetfn DCLPROTO((Param pm));
  587. Xvoid randomsetfn DCLPROTO((Param pm,long v));
  588. Xlong secondsgetfn DCLPROTO((Param pm));
  589. Xvoid secondssetfn DCLPROTO((Param pm,long x));
  590. Xlong uidgetfn DCLPROTO((Param pm));
  591. Xlong gidgetfn DCLPROTO((Param pm));
  592. Xchar *usernamegetfn DCLPROTO((Param pm));
  593. Xchar *hostgetfn DCLPROTO((Param pm));
  594. Xchar *ifsgetfn DCLPROTO((Param pm));
  595. Xvoid ifssetfn DCLPROTO((Param pm,char *x));
  596. Xvoid histsizesetfn DCLPROTO((Param pm,long v));
  597. Xlong histsizegetfn DCLPROTO((Param pm));
  598. Xvoid lithistsizesetfn DCLPROTO((Param pm,long v));
  599. Xlong lithistsizegetfn DCLPROTO((Param pm));
  600. Xvoid mailchecksetfn DCLPROTO((Param pm,long x));
  601. Xvoid pathasetfn DCLPROTO((Param pm,char **x));
  602. Xchar **pathagetfn DCLPROTO((Param pm));
  603. Xlong errnogetfn DCLPROTO((Param pm));
  604. Xchar *dashgetfn DCLPROTO((Param pm));
  605. Xchar *ttygetfn DCLPROTO((Param pm));
  606. Xvoid histcharssetfn DCLPROTO((Param pm,char *x));
  607. Xchar *histcharsgetfn DCLPROTO((Param pm));
  608. Xchar *homegetfn DCLPROTO((Param pm));
  609. Xvoid homesetfn DCLPROTO((Param pm,char *x));
  610. Xchar *wordcharsgetfn DCLPROTO((Param pm));
  611. Xvoid wordcharssetfn DCLPROTO((Param pm,char *x));
  612. Xchar *underscoregetfn DCLPROTO((Param pm));
  613. Xchar *termgetfn DCLPROTO((Param pm));
  614. Xvoid termsetfn DCLPROTO((Param pm,char *x));
  615. Xvoid setparams DCLPROTO((void));
  616. Xchar *mkenvstr DCLPROTO((char *x,char *y));
  617. Xvoid arrfixenv DCLPROTO((char *s,char **t));
  618. Xchar *replenv DCLPROTO((char *e,char *value));
  619. Xchar *addenv DCLPROTO((char *name,char *value));
  620. Xvoid delenv DCLPROTO((char *x));
  621. Xvoid convbase DCLPROTO((char *s,long v,int base));
  622. SHAR_EOF
  623. chmod 0644 zsh2.1/src/params.pro ||
  624. echo 'restore of zsh2.1/src/params.pro failed'
  625. Wc_c="`wc -c < 'zsh2.1/src/params.pro'`"
  626. test 3148 -eq "$Wc_c" ||
  627.     echo 'zsh2.1/src/params.pro: original size 3148, current size' "$Wc_c"
  628. rm -f _shar_wnt_.tmp
  629. fi
  630. # ============= zsh2.1/src/subst.pro ==============
  631. if test -f 'zsh2.1/src/subst.pro' -a X"$1" != X"-c"; then
  632.     echo 'x - skipping zsh2.1/src/subst.pro (File already exists)'
  633.     rm -f _shar_wnt_.tmp
  634. else
  635. > _shar_wnt_.tmp
  636. echo 'x - extracting zsh2.1/src/subst.pro (Text)'
  637. sed 's/^X//' << 'SHAR_EOF' > 'zsh2.1/src/subst.pro' &&
  638. Xvoid prefork DCLPROTO((Lklist list));
  639. Xvoid postfork DCLPROTO((Lklist list,int doglob));
  640. Xvoid singsub DCLPROTO((char **s));
  641. Xvptr nstrdup DCLPROTO((vptr s));
  642. Xchar *dynread DCLPROTO((int stop));
  643. Xint filesub DCLPROTO((char **namptr));
  644. Xchar *gethome DCLPROTO((char *user,int len));
  645. Xvoid commsubst DCLPROTO((Lklist l,Lknode n,char *str3,char *str,int qt));
  646. Xvoid paramsubst DCLPROTO((Lklist l,Lknode n,char *aptr,char *bptr,int qt));
  647. Xvoid arithsubst DCLPROTO((vptr *aptr,char **bptr));
  648. Xvoid modify DCLPROTO((char **str,char **ptr));
  649. Xchar *dstackent DCLPROTO((int val));
  650. Xstruct alias *mkanode DCLPROTO((char *txt,int cmflag));
  651. SHAR_EOF
  652. chmod 0644 zsh2.1/src/subst.pro ||
  653. echo 'restore of zsh2.1/src/subst.pro failed'
  654. Wc_c="`wc -c < 'zsh2.1/src/subst.pro'`"
  655. test 619 -eq "$Wc_c" ||
  656.     echo 'zsh2.1/src/subst.pro: original size 619, current size' "$Wc_c"
  657. rm -f _shar_wnt_.tmp
  658. fi
  659. # ============= zsh2.1/src/table.pro ==============
  660. if test -f 'zsh2.1/src/table.pro' -a X"$1" != X"-c"; then
  661.     echo 'x - skipping zsh2.1/src/table.pro (File already exists)'
  662.     rm -f _shar_wnt_.tmp
  663. else
  664. > _shar_wnt_.tmp
  665. echo 'x - extracting zsh2.1/src/table.pro (Text)'
  666. sed 's/^X//' << 'SHAR_EOF' > 'zsh2.1/src/table.pro' &&
  667. XLklist newlist DCLPROTO((void));
  668. XHashtab newhtable DCLPROTO((int size));
  669. Xint hasher DCLPROTO((char *s));
  670. Xvoid Addhnode DCLPROTO((char *nam,vptr dat,Hashtab ht,FFunc freefunc,int canfree));
  671. Xvoid expandhtab DCLPROTO((Hashtab ht));
  672. Xvptr gethnode DCLPROTO((char *nam,Hashtab ht));
  673. Xvoid freehtab DCLPROTO((Hashtab ht,FFunc freefunc));
  674. Xvptr remhnode DCLPROTO((char *nam,Hashtab ht));
  675. Xvoid insnode DCLPROTO((Lklist list,Lknode llast,vptr dat));
  676. Xvoid addnodeinorder DCLPROTO((Lklist x, char *dat));
  677. Xvptr remnode DCLPROTO((Lklist list,Lknode nd));
  678. Xvptr uremnode DCLPROTO((Lklist list,Lknode nd));
  679. Xvoid chuck DCLPROTO((char *str));
  680. Xvptr getnode DCLPROTO((Lklist list));
  681. Xvptr ugetnode DCLPROTO((Lklist list));
  682. Xvoid freetable DCLPROTO((Lklist tab,FFunc freefunc));
  683. Xchar *ztrstr DCLPROTO((char *s,char *t));
  684. Xvoid inslist DCLPROTO((Lklist l,Lknode where,Lklist x));
  685. Xint countnodes DCLPROTO((Lklist x));
  686. SHAR_EOF
  687. chmod 0644 zsh2.1/src/table.pro ||
  688. echo 'restore of zsh2.1/src/table.pro failed'
  689. Wc_c="`wc -c < 'zsh2.1/src/table.pro'`"
  690. test 889 -eq "$Wc_c" ||
  691.     echo 'zsh2.1/src/table.pro: original size 889, current size' "$Wc_c"
  692. rm -f _shar_wnt_.tmp
  693. fi
  694. # ============= zsh2.1/src/text.pro ==============
  695. if test -f 'zsh2.1/src/text.pro' -a X"$1" != X"-c"; then
  696.     echo 'x - skipping zsh2.1/src/text.pro (File already exists)'
  697.     rm -f _shar_wnt_.tmp
  698. else
  699. > _shar_wnt_.tmp
  700. echo 'x - extracting zsh2.1/src/text.pro (Text)'
  701. sed 's/^X//' << 'SHAR_EOF' > 'zsh2.1/src/text.pro' &&
  702. Xvoid taddchr DCLPROTO((int c));
  703. Xvoid taddstr DCLPROTO((char *s));
  704. Xvoid taddint DCLPROTO((int x));
  705. Xvoid taddnl DCLPROTO((void));
  706. Xchar *gettext DCLPROTO((struct node *n,int nls));
  707. Xvoid gettext2 DCLPROTO((struct node *n));
  708. Xvoid getsimptext DCLPROTO((Cmd cmd));
  709. Xvoid getredirs DCLPROTO((Cmd cmd));
  710. Xvoid taddlist DCLPROTO((Lklist l));
  711. SHAR_EOF
  712. chmod 0644 zsh2.1/src/text.pro ||
  713. echo 'restore of zsh2.1/src/text.pro failed'
  714. Wc_c="`wc -c < 'zsh2.1/src/text.pro'`"
  715. test 330 -eq "$Wc_c" ||
  716.     echo 'zsh2.1/src/text.pro: original size 330, current size' "$Wc_c"
  717. rm -f _shar_wnt_.tmp
  718. fi
  719. # ============= zsh2.1/src/utils.pro ==============
  720. if test -f 'zsh2.1/src/utils.pro' -a X"$1" != X"-c"; then
  721.     echo 'x - skipping zsh2.1/src/utils.pro (File already exists)'
  722.     rm -f _shar_wnt_.tmp
  723. else
  724. > _shar_wnt_.tmp
  725. echo 'x - extracting zsh2.1/src/utils.pro (Text)'
  726. sed 's/^X//' << 'SHAR_EOF' > 'zsh2.1/src/utils.pro' &&
  727. Xint source DCLPROTO((char *s));
  728. Xvoid sourcehome DCLPROTO((char *s));
  729. Xvoid zerrnam DCLPROTO((char *cmd, char *fmt, char *str,int num));
  730. Xvoid zerr DCLPROTO((char *fmt, char *str,int num));
  731. Xvoid niceputc DCLPROTO((int c,FILE *f));
  732. Xvoid intr DCLPROTO((void));
  733. Xvoid noholdintr DCLPROTO((void));
  734. Xvoid holdintr DCLPROTO((void));
  735. Xchar *fgetline DCLPROTO((char *buf,int len,FILE *in));
  736. Xchar *findcwd DCLPROTO((char *s));
  737. Xchar *fixcwd DCLPROTO((char *s));
  738. Xint ispwd DCLPROTO((char *s));
  739. Xchar *xsymlink DCLPROTO((char *s));
  740. Xchar **slashsplit DCLPROTO((char *s));
  741. Xint islink DCLPROTO((char *s));
  742. Xint xsymlinks DCLPROTO((char *s,int flag));
  743. Xvoid printdir DCLPROTO((char *s));
  744. Xint finddir DCLPROTO((char *s));
  745. Xvoid adduserdir DCLPROTO((char *s,char *t));
  746. Xint dircmp DCLPROTO((char *s,char *t));
  747. Xint ddifftime DCLPROTO((time_t t1,time_t t2));
  748. Xvoid scanjobs DCLPROTO((void));
  749. Xvoid preprompt DCLPROTO((void));
  750. Xint arrlen DCLPROTO((char **s));
  751. Xvoid checkmailpath DCLPROTO((char **s));
  752. Xvoid saveoldfuncs DCLPROTO((char *x,Cmdnam y));
  753. Xvoid newcmdnamtab DCLPROTO((void));
  754. Xvoid freecmdnam DCLPROTO((vptr a));
  755. Xvoid freestr DCLPROTO((vptr a));
  756. Xvoid freeanode DCLPROTO((vptr a));
  757. Xvoid freepm DCLPROTO((vptr a));
  758. Xvoid restoretty DCLPROTO((void));
  759. Xvoid gettyinfo DCLPROTO((struct ttyinfo *ti));
  760. Xvoid settyinfo DCLPROTO((struct ttyinfo *ti));
  761. Xvoid sanetty DCLPROTO((struct ttyinfo *ti));
  762. Xvoid adjustwinsize DCLPROTO((void));
  763. Xint zyztem DCLPROTO((char *s,char *t));
  764. Xint waitfork DCLPROTO((void));
  765. Xint movefd DCLPROTO((int fd));
  766. Xvoid redup DCLPROTO((int x,int y));
  767. Xvoid settrap DCLPROTO((int t0,List l));
  768. Xvoid unsettrap DCLPROTO((int t0));
  769. Xvoid dotrap DCLPROTO((int sig));
  770. Xvoid ztrncpy DCLPROTO((char *s,char *t,int len));
  771. Xvoid strucpy DCLPROTO((char **s,char *t));
  772. Xvoid struncpy DCLPROTO((char **s,char *t,int n));
  773. Xvoid checkrmall DCLPROTO((void));
  774. Xint getquery DCLPROTO((void));
  775. Xvoid spscannodis DCLPROTO((char *s,char *cn));
  776. Xvoid spscan DCLPROTO((char *s,char *junk));
  777. Xvoid spckword DCLPROTO((char **s,char **s2,char **tptr,int cmd,int ask));
  778. Xint ztrftime DCLPROTO((char *buf,int bufsize,char *fmt,struct tm *tm));
  779. Xchar *join DCLPROTO((char **arr,int delim));
  780. Xchar *spacejoin DCLPROTO((char **s));
  781. Xchar *colonjoin DCLPROTO((char **s));
  782. Xchar **colonsplit DCLPROTO((char *s));
  783. Xchar **spacesplit DCLPROTO((char *s));
  784. XList getshfunc DCLPROTO((char *nam));
  785. Xvptr allocnode DCLPROTO((int type));
  786. Xvptr dupstruct DCLPROTO((vptr a));
  787. Xvoid freestruct DCLPROTO((vptr a));
  788. XLklist duplist DCLPROTO((Lklist l,VFunc func));
  789. Xchar **mkarray DCLPROTO((char *s));
  790. Xvoid feep DCLPROTO((void));
  791. Xvoid freearray DCLPROTO((char **s));
  792. Xint equalsplit DCLPROTO((char *s,char **t));
  793. Xvoid simplifyright DCLPROTO((List l));
  794. Xvoid inittyptab DCLPROTO((void));
  795. Xchar **arrdup DCLPROTO((char **s));
  796. Xchar *spname  DCLPROTO((char *oldname));
  797. Xint mindist DCLPROTO((char *dir,char *guess,char *best));
  798. Xint spdist DCLPROTO((char *s,char *t,int thresh));
  799. Xchar *zgetenv DCLPROTO((char *s));
  800. Xint tulower DCLPROTO((int c));
  801. Xint tuupper DCLPROTO((int c));
  802. SHAR_EOF
  803. chmod 0644 zsh2.1/src/utils.pro ||
  804. echo 'restore of zsh2.1/src/utils.pro failed'
  805. Wc_c="`wc -c < 'zsh2.1/src/utils.pro'`"
  806. test 2983 -eq "$Wc_c" ||
  807.     echo 'zsh2.1/src/utils.pro: original size 2983, current size' "$Wc_c"
  808. rm -f _shar_wnt_.tmp
  809. fi
  810. # ============= zsh2.1/src/watch.pro ==============
  811. if test -f 'zsh2.1/src/watch.pro' -a X"$1" != X"-c"; then
  812.     echo 'x - skipping zsh2.1/src/watch.pro (File already exists)'
  813.     rm -f _shar_wnt_.tmp
  814. else
  815. > _shar_wnt_.tmp
  816. echo 'x - extracting zsh2.1/src/watch.pro (Text)'
  817. sed 's/^X//' << 'SHAR_EOF' > 'zsh2.1/src/watch.pro' &&
  818. Xtime_t getlogtime DCLPROTO((struct utmp *u,int inout));
  819. Xvoid watchlog2 DCLPROTO((int inout,struct utmp *u,char *fmt));
  820. Xvoid watchlog DCLPROTO((int inout,struct utmp *u,char **w,char *fmt));
  821. Xint ucmp DCLPROTO((struct utmp *u,struct utmp *v));
  822. Xvoid readwtab DCLPROTO((void));
  823. Xvoid dowatch DCLPROTO((void));
  824. Xint bin_log DCLPROTO((char *nam,char **argv,char *ops,int func));
  825. SHAR_EOF
  826. chmod 0644 zsh2.1/src/watch.pro ||
  827. echo 'restore of zsh2.1/src/watch.pro failed'
  828. Wc_c="`wc -c < 'zsh2.1/src/watch.pro'`"
  829. test 371 -eq "$Wc_c" ||
  830.     echo 'zsh2.1/src/watch.pro: original size 371, current size' "$Wc_c"
  831. rm -f _shar_wnt_.tmp
  832. fi
  833. # ============= zsh2.1/src/zle_bindings.pro ==============
  834. if test -f 'zsh2.1/src/zle_bindings.pro' -a X"$1" != X"-c"; then
  835.     echo 'x - skipping zsh2.1/src/zle_bindings.pro (File already exists)'
  836.     rm -f _shar_wnt_.tmp
  837. else
  838. > _shar_wnt_.tmp
  839. echo 'x - extracting zsh2.1/src/zle_bindings.pro (Text)'
  840. sed 's/^X//' << 'SHAR_EOF' > 'zsh2.1/src/zle_bindings.pro' &&
  841. SHAR_EOF
  842. chmod 0644 zsh2.1/src/zle_bindings.pro ||
  843. echo 'restore of zsh2.1/src/zle_bindings.pro failed'
  844. Wc_c="`wc -c < 'zsh2.1/src/zle_bindings.pro'`"
  845. test 0 -eq "$Wc_c" ||
  846.     echo 'zsh2.1/src/zle_bindings.pro: original size 0, current size' "$Wc_c"
  847. rm -f _shar_wnt_.tmp
  848. fi
  849. # ============= zsh2.1/src/zle_main.pro ==============
  850. if test -f 'zsh2.1/src/zle_main.pro' -a X"$1" != X"-c"; then
  851.     echo 'x - skipping zsh2.1/src/zle_main.pro (File already exists)'
  852.     rm -f _shar_wnt_.tmp
  853. else
  854. > _shar_wnt_.tmp
  855. echo 'x - extracting zsh2.1/src/zle_main.pro (Text)'
  856. sed 's/^X//' << 'SHAR_EOF' > 'zsh2.1/src/zle_main.pro' &&
  857. Xvoid setterm DCLPROTO((void));
  858. Xvoid unsetterm DCLPROTO((void));
  859. Xvoid ungetkey DCLPROTO((int ch));
  860. Xvoid ungetkeys DCLPROTO((char *s,int len));
  861. Xunsigned int getkey DCLPROTO((int tmok));
  862. Xchar *zleread DCLPROTO((char *ppt,char *ppt2,int plen));
  863. Xint getkeycmd DCLPROTO((void));
  864. Xvoid sendstring DCLPROTO((void));
  865. XKey makefunckey DCLPROTO((int fun));
  866. Xvoid initxbindtab DCLPROTO((void));
  867. Xchar *getkeystring DCLPROTO((char *s,int *len));
  868. Xvoid printbind DCLPROTO((char *s,int len));
  869. Xvoid printbinding DCLPROTO((char *str,Key k));
  870. Xint bin_bindkey DCLPROTO((char *name,char **argv,char *ops,int junc));
  871. Xvoid freekey DCLPROTO((vptr x));
  872. Xvoid drainoutput DCLPROTO((void));
  873. SHAR_EOF
  874. chmod 0644 zsh2.1/src/zle_main.pro ||
  875. echo 'restore of zsh2.1/src/zle_main.pro failed'
  876. Wc_c="`wc -c < 'zsh2.1/src/zle_main.pro'`"
  877. test 659 -eq "$Wc_c" ||
  878.     echo 'zsh2.1/src/zle_main.pro: original size 659, current size' "$Wc_c"
  879. rm -f _shar_wnt_.tmp
  880. fi
  881. # ============= zsh2.1/src/zle_refresh.pro ==============
  882. if test -f 'zsh2.1/src/zle_refresh.pro' -a X"$1" != X"-c"; then
  883.     echo 'x - skipping zsh2.1/src/zle_refresh.pro (File already exists)'
  884.     rm -f _shar_wnt_.tmp
  885. else
  886. > _shar_wnt_.tmp
  887. echo 'x - extracting zsh2.1/src/zle_refresh.pro (Text)'
  888. sed 's/^X//' << 'SHAR_EOF' > 'zsh2.1/src/zle_refresh.pro' &&
  889. Xvoid resetvideo DCLPROTO((void));
  890. Xint scrollwindow DCLPROTO((void));
  891. Xvoid refresh DCLPROTO((void));
  892. Xvoid refreshline DCLPROTO((int ln));
  893. Xvoid moveto DCLPROTO((int ln,int cl));
  894. Xvoid tcmultout DCLPROTO((int cap,int multcap,int ct));
  895. Xvoid tc_rightcurs DCLPROTO((int ct));
  896. Xvoid tc_downcurs DCLPROTO((int ct));
  897. Xvoid tcout DCLPROTO((int cap));
  898. Xvoid tcoutarg DCLPROTO((int cap,int arg));
  899. Xvoid clearscreen DCLPROTO((void));
  900. Xvoid redisplay DCLPROTO((void));
  901. Xvoid trashzle DCLPROTO((void));
  902. Xvoid singlerefresh DCLPROTO((void));
  903. Xvoid singmoveto DCLPROTO((int pos));
  904. Xint streqct DCLPROTO((char *s,char *t));
  905. SHAR_EOF
  906. chmod 0644 zsh2.1/src/zle_refresh.pro ||
  907. echo 'restore of zsh2.1/src/zle_refresh.pro failed'
  908. Wc_c="`wc -c < 'zsh2.1/src/zle_refresh.pro'`"
  909. test 596 -eq "$Wc_c" ||
  910.     echo 'zsh2.1/src/zle_refresh.pro: original size 596, current size' "$Wc_c"
  911. rm -f _shar_wnt_.tmp
  912. fi
  913. # ============= zsh2.1/src/zle_vi.pro ==============
  914. if test -f 'zsh2.1/src/zle_vi.pro' -a X"$1" != X"-c"; then
  915.     echo 'x - skipping zsh2.1/src/zle_vi.pro (File already exists)'
  916.     rm -f _shar_wnt_.tmp
  917. else
  918. > _shar_wnt_.tmp
  919. echo 'x - extracting zsh2.1/src/zle_vi.pro (Text)'
  920. sed 's/^X//' << 'SHAR_EOF' > 'zsh2.1/src/zle_vi.pro' &&
  921. Xint vigetkey DCLPROTO((void));
  922. Xint getvirange DCLPROTO((void));
  923. Xvoid viaddnext DCLPROTO((void));
  924. Xvoid viaddeol DCLPROTO((void));
  925. Xvoid viinsert DCLPROTO((void));
  926. Xvoid viinsertbol DCLPROTO((void));
  927. Xvoid videlete DCLPROTO((void));
  928. Xvoid vichange DCLPROTO((void));
  929. Xvoid visubstitute DCLPROTO((void));
  930. Xvoid vichangeeol DCLPROTO((void));
  931. Xvoid vichangewholeline DCLPROTO((void));
  932. Xvoid viyank DCLPROTO((void));
  933. Xvoid viyankeol DCLPROTO((void));
  934. Xvoid vireplace DCLPROTO((void));
  935. Xvoid vireplacechars DCLPROTO((void));
  936. Xvoid vicmdmode DCLPROTO((void));
  937. Xvoid viopenlinebelow DCLPROTO((void));
  938. Xvoid viopenlineabove DCLPROTO((void));
  939. Xvoid vioperswapcase DCLPROTO((void));
  940. Xvoid virepeatchange DCLPROTO((void));
  941. Xvoid viindent DCLPROTO((void));
  942. Xvoid viunindent DCLPROTO((void));
  943. SHAR_EOF
  944. chmod 0644 zsh2.1/src/zle_vi.pro ||
  945. echo 'restore of zsh2.1/src/zle_vi.pro failed'
  946. Wc_c="`wc -c < 'zsh2.1/src/zle_vi.pro'`"
  947. test 759 -eq "$Wc_c" ||
  948.     echo 'zsh2.1/src/zle_vi.pro: original size 759, current size' "$Wc_c"
  949. rm -f _shar_wnt_.tmp
  950. fi
  951. # ============= zsh2.1/src/parse.pro ==============
  952. if test -f 'zsh2.1/src/parse.pro' -a X"$1" != X"-c"; then
  953.     echo 'x - skipping zsh2.1/src/parse.pro (File already exists)'
  954.     rm -f _shar_wnt_.tmp
  955. else
  956. > _shar_wnt_.tmp
  957. echo 'x - extracting zsh2.1/src/parse.pro (Text)'
  958. sed 's/^X//' << 'SHAR_EOF' > 'zsh2.1/src/parse.pro' &&
  959. XList parse_event DCLPROTO((void));
  960. XList par_event DCLPROTO((void));
  961. XList parse_list DCLPROTO((void));
  962. XList par_list DCLPROTO((void));
  963. XList par_list1 DCLPROTO((void));
  964. XSublist par_sublist DCLPROTO((void));
  965. XSublist par_sublist2 DCLPROTO((void));
  966. XPline par_pline DCLPROTO((void));
  967. XCmd par_cmd DCLPROTO((void));
  968. Xvoid par_for DCLPROTO((Cmd c));
  969. Xvoid par_case DCLPROTO((Cmd c));
  970. Xvoid par_if DCLPROTO((Cmd c));
  971. Xvoid par_while DCLPROTO((Cmd c));
  972. Xvoid par_repeat DCLPROTO((Cmd c));
  973. Xvoid par_subsh DCLPROTO((Cmd c));
  974. Xvoid par_funcdef DCLPROTO((Cmd c));
  975. Xvoid par_time DCLPROTO((Cmd c));
  976. Xvoid par_dinbrack DCLPROTO((Cmd c));
  977. XCmd par_simple DCLPROTO((Cmd c));
  978. XCond par_cond DCLPROTO((void));
  979. XCond par_cond_1 DCLPROTO((void));
  980. XCond par_cond_2 DCLPROTO((void));
  981. Xvoid par_redir DCLPROTO((Lklist l));
  982. XLklist par_wordlist DCLPROTO((void));
  983. XLklist par_nl_wordlist DCLPROTO((void));
  984. Xint getfdstr DCLPROTO((char *s));
  985. XCond par_cond_double DCLPROTO((char *a,char *b));
  986. XCond par_cond_triple DCLPROTO((char *a,char *b,char *c));
  987. Xvoid yyerror DCLPROTO((void));
  988. SHAR_EOF
  989. chmod 0644 zsh2.1/src/parse.pro ||
  990. echo 'restore of zsh2.1/src/parse.pro failed'
  991. Wc_c="`wc -c < 'zsh2.1/src/parse.pro'`"
  992. test 1036 -eq "$Wc_c" ||
  993.     echo 'zsh2.1/src/parse.pro: original size 1036, current size' "$Wc_c"
  994. rm -f _shar_wnt_.tmp
  995. fi
  996. # ============= zsh2.1/src/zle_tricky.pro ==============
  997. if test -f 'zsh2.1/src/zle_tricky.pro' -a X"$1" != X"-c"; then
  998.     echo 'x - skipping zsh2.1/src/zle_tricky.pro (File already exists)'
  999.     rm -f _shar_wnt_.tmp
  1000. else
  1001. > _shar_wnt_.tmp
  1002. echo 'x - extracting zsh2.1/src/zle_tricky.pro (Text)'
  1003. sed 's/^X//' << 'SHAR_EOF' > 'zsh2.1/src/zle_tricky.pro' &&
  1004. Xint usetab DCLPROTO((void));
  1005. Xvoid completeword DCLPROTO((void));
  1006. Xvoid menucompleteword DCLPROTO((void));
  1007. Xvoid listchoices DCLPROTO((void));
  1008. Xvoid spellword DCLPROTO((void));
  1009. Xvoid deletecharorlist DCLPROTO((void));
  1010. Xvoid expandword DCLPROTO((void));
  1011. Xvoid expandorcomplete DCLPROTO((void));
  1012. Xvoid menuexpandorcomplete DCLPROTO((void));
  1013. Xvoid listexpand DCLPROTO((void));
  1014. Xvoid reversemenucomplete DCLPROTO((void));
  1015. Xvoid acceptandmenucomplete DCLPROTO((void));
  1016. Xvoid docomplete DCLPROTO((int lst));
  1017. Xvoid do_menucmp DCLPROTO((int lst));
  1018. Xchar *get_comp_string DCLPROTO((void));
  1019. Xvoid doexpansion DCLPROTO((char *s,int lst,int lincmd));
  1020. Xvoid gotword DCLPROTO((char *s));
  1021. Xvoid inststrlen DCLPROTO((char *s,int l));
  1022. Xvoid addmatch DCLPROTO((char *s));
  1023. Xvoid addcmdmatch DCLPROTO((char *s,char *t));
  1024. Xvoid addcmdnodis DCLPROTO((char *s,char *t));
  1025. Xvoid maketildelist DCLPROTO((char    *s));
  1026. Xint Isdir DCLPROTO((char *s));
  1027. Xint isdir DCLPROTO((char *t,char *s));
  1028. Xvoid docompletion DCLPROTO((char *s,int lst,int incmd));
  1029. Xvoid gen_matches_glob DCLPROTO((char *s,int incmd));
  1030. Xvoid gen_matches_reg DCLPROTO((char *s,int incmd));
  1031. Xvoid do_fignore DCLPROTO((char *origstr));
  1032. Xvoid do_ambiguous DCLPROTO((char *s));
  1033. Xvoid do_single DCLPROTO((char *s));
  1034. Xvoid do_ambig_menu DCLPROTO((char *s));
  1035. Xint strpfx DCLPROTO((char *s,char *t));
  1036. Xint pfxlen DCLPROTO((char *s,char *t));
  1037. Xvoid listmatches DCLPROTO((Lklist l,char *apps));
  1038. Xvoid selectlist DCLPROTO((Lklist l));
  1039. Xint doexpandhist DCLPROTO((void));
  1040. Xvoid magicspace DCLPROTO((void));
  1041. Xvoid expandhistory DCLPROTO((void));
  1042. Xchar *getcurcmd DCLPROTO((void));
  1043. Xvoid processcmd DCLPROTO((void));
  1044. Xvoid expandcmdpath DCLPROTO((void));
  1045. Xvoid freemenu DCLPROTO((void));
  1046. Xint inarray DCLPROTO((char *s, char **a));
  1047. SHAR_EOF
  1048. chmod 0644 zsh2.1/src/zle_tricky.pro ||
  1049. echo 'restore of zsh2.1/src/zle_tricky.pro failed'
  1050. Wc_c="`wc -c < 'zsh2.1/src/zle_tricky.pro'`"
  1051. test 1712 -eq "$Wc_c" ||
  1052.     echo 'zsh2.1/src/zle_tricky.pro: original size 1712, current size' "$Wc_c"
  1053. rm -f _shar_wnt_.tmp
  1054. fi
  1055. # ============= zsh2.1/src/parse.c ==============
  1056. if test -f 'zsh2.1/src/parse.c' -a X"$1" != X"-c"; then
  1057.     echo 'x - skipping zsh2.1/src/parse.c (File already exists)'
  1058.     rm -f _shar_wnt_.tmp
  1059. else
  1060. > _shar_wnt_.tmp
  1061. echo 'x - extracting zsh2.1/src/parse.c (Text)'
  1062. sed 's/^X//' << 'SHAR_EOF' > 'zsh2.1/src/parse.c' &&
  1063. X/*
  1064. X
  1065. X    parse.c - parser
  1066. X
  1067. X    This file is part of zsh, the Z shell.
  1068. X
  1069. X    zsh is free software; no one can prevent you from reading the source
  1070. X   code, or giving it to someone else.
  1071. X
  1072. X   This file is copyrighted under the GNU General Public License, which
  1073. X   can be found in the file called COPYING.
  1074. X
  1075. X   Copyright (C) 1990, 1991 Paul Falstad
  1076. X
  1077. X   zsh is distributed in the hope that it will be useful, but
  1078. X   WITHOUT ANY WARRANTY.  No author or distributor accepts
  1079. X   responsibility to anyone for the consequences of using it or for
  1080. X   whether it serves any particular purpose or works at all, unless he
  1081. X   says so in writing.  Refer to the GNU General Public License
  1082. X   for full details.
  1083. X
  1084. X   Everyone is granted permission to copy, modify and redistribute
  1085. X   zsh, but only under the conditions described in the GNU General Public
  1086. X   License.   A copy of this license is supposed to have been given to you
  1087. X   along with zsh so you can know your rights and responsibilities.
  1088. X   It should be in a file named COPYING.
  1089. X
  1090. X   Among other things, the copyright notice and this notice must be
  1091. X   preserved on all copies.
  1092. X
  1093. X*/
  1094. X
  1095. X#include "zsh.h"
  1096. X#include "funcs.h"
  1097. X
  1098. X#define YYERROR { tok = LEXERR; return NULL; }
  1099. X#define YYERRORV { tok = LEXERR; return; }
  1100. X
  1101. X#define make_list() allocnode(N_LIST)
  1102. X#define make_sublist() allocnode(N_SUBLIST)
  1103. X#define make_pline() allocnode(N_PLINE)
  1104. X#define make_cmd() allocnode(N_CMD)
  1105. X#define make_forcmd() allocnode(N_FOR)
  1106. X#define make_casecmd() allocnode(N_CASE)
  1107. X#define make_ifcmd() allocnode(N_IF)
  1108. X#define make_whilecmd() allocnode(N_WHILE)
  1109. X#define make_varnode() allocnode(N_VARASG)
  1110. X#define make_cond() allocnode(N_COND)
  1111. X
  1112. X/*
  1113. X * event    : ENDINPUT
  1114. X *            | SEPER
  1115. X *            | sublist [ SEPER | AMPER ]
  1116. X */
  1117. XList parse_event() /**/
  1118. X{
  1119. X    tok = ENDINPUT;
  1120. X    incmdpos = 1;
  1121. X    yylex();
  1122. X    return par_event();
  1123. X}
  1124. X
  1125. XList par_event() /**/
  1126. X{
  1127. XSublist sl;
  1128. XList l = NULL;
  1129. X
  1130. X    while (tok == SEPER) {
  1131. X        if (isnewlin) return NULL;
  1132. X        yylex();
  1133. X    }
  1134. X    if (tok == ENDINPUT) return NULL;
  1135. X    if (sl = par_sublist())
  1136. X        if (tok == ENDINPUT) {
  1137. X            l = make_list();
  1138. X            l->type = SYNC; l->left = sl;
  1139. X        } else if (tok == SEPER) {
  1140. X            l = make_list();
  1141. X            l->type = SYNC; l->left = sl;
  1142. X            if (!isnewlin) yylex();
  1143. X        } else if (tok == AMPER) {
  1144. X            l = make_list();
  1145. X            l->type = ASYNC; l->left = sl;
  1146. X            yylex();
  1147. X        } else
  1148. X            l = NULL;
  1149. X    if (!l) {
  1150. X        if (errflag) { yyerror(); return NULL; }
  1151. X        yyerror();
  1152. X        errflag = 0;
  1153. X        if (!isnewlin) {
  1154. X            int c;
  1155. X
  1156. X            hwbegin();
  1157. X            while ((c = hgetc()) != '\n' && !lexstop);
  1158. X            if (c == '\n') hungetc('\n');
  1159. X            hwaddc(HISTSPACE);
  1160. X            hwadd();
  1161. X        }
  1162. X        errflag = 1;
  1163. X        return NULL;
  1164. X    } else {
  1165. X        l->right = par_event();
  1166. X    }
  1167. X    return l;
  1168. X}
  1169. X
  1170. XList parse_list() /**/
  1171. X{
  1172. X    tok = ENDINPUT;
  1173. X    incmdpos = 1;
  1174. X    yylex();
  1175. X    return par_list();
  1176. X}
  1177. X
  1178. X/*
  1179. X * list    : { SEPER } [ sublist [ { SEPER | AMPER } list ] ]
  1180. X */
  1181. XList par_list() /**/
  1182. X{
  1183. XSublist sl;
  1184. XList l = NULL;
  1185. X
  1186. X    while (tok == SEPER) yylex();
  1187. X    if (sl = par_sublist())
  1188. X        if (tok == SEPER || tok == AMPER) {
  1189. X            l = make_list();
  1190. X            l->left = sl;
  1191. X            l->type = (tok == SEPER) ? SYNC : ASYNC;
  1192. X            incmdpos = 1;
  1193. X            while (tok == SEPER || tok == AMPER) yylex();
  1194. X            l->right = par_list();
  1195. X        } else {
  1196. X            l = make_list();
  1197. X            l->left = sl;
  1198. X            l->type = SYNC;
  1199. X        }
  1200. X    return l;
  1201. X}
  1202. X
  1203. XList par_list1() /**/
  1204. X{
  1205. XSublist sl;
  1206. XList l = NULL;
  1207. X
  1208. X    if (sl = par_sublist()) {
  1209. X        l = make_list();
  1210. X        l->type = SYNC;
  1211. X        l->left = sl;
  1212. X    }
  1213. X    return l;
  1214. X}
  1215. X
  1216. X/*
  1217. X * sublist    : sublist2 [ ( DBAR | DAMPER ) { SEPER } sublist ]
  1218. X */
  1219. XSublist par_sublist() /**/
  1220. X{
  1221. XSublist sl;
  1222. X
  1223. X    if (sl = par_sublist2())
  1224. X        if (tok == DBAR || tok == DAMPER) {
  1225. X            int qtok = tok;
  1226. X            yylex();
  1227. X            while (tok == SEPER) yylex();
  1228. X            sl->right = par_sublist();
  1229. X            sl->type = (qtok == DBAR) ? ORNEXT : ANDNEXT;
  1230. X        }
  1231. X    return sl;
  1232. X}
  1233. X
  1234. X/*
  1235. X * sublist2    : [ COPROC | BANG ] pline
  1236. X */
  1237. XSublist par_sublist2() /**/
  1238. X{
  1239. XSublist sl;
  1240. XPline p;
  1241. X
  1242. X    sl = make_sublist();
  1243. X    if (tok == COPROC) { sl->flags |= PFLAG_COPROC; yylex(); }
  1244. X    else if (tok == BANG) { sl->flags |= PFLAG_NOT; yylex(); }
  1245. X    if (!(p = par_pline()))
  1246. X        return NULL;
  1247. X    sl->left = p;
  1248. X    return sl;
  1249. X}
  1250. X
  1251. X/*
  1252. X * pline    : cmd [ ( BAR | BARAMP ) { SEPER } pline ]
  1253. X */
  1254. XPline par_pline() /**/
  1255. X{
  1256. XCmd c;
  1257. XPline p,p2;
  1258. X
  1259. X    if (!(c = par_cmd()))
  1260. X        return NULL;
  1261. X    if (tok == BAR) {
  1262. X        yylex();
  1263. X        while (tok == SEPER) yylex();
  1264. X        p2 = par_pline();
  1265. X        p = make_pline();
  1266. X        p->left = c; p->right = p2; p->type = PIPE;
  1267. X        return p;
  1268. X    } else if (tok == BARAMP) {
  1269. X        struct redir *rdr = alloc(sizeof *rdr);
  1270. X        rdr->type = MERGE; rdr->fd1 = 2; rdr->fd2 = 1;
  1271. X        addnode(c->redir,rdr);
  1272. X
  1273. X        yylex();
  1274. X        p2 = par_pline();
  1275. X        p = make_pline();
  1276. X        p->left = c; p->right = p2; p->type = PIPE;
  1277. X        return p;
  1278. X    } else {
  1279. X        p = make_pline();
  1280. X        p->left = c; p->type = END;
  1281. X        return p;
  1282. X    }
  1283. X}
  1284. X
  1285. X/*
  1286. X * cmd    : { redir } ( for | case | if | while | repeat |
  1287. X *                subsh | funcdef | time | dinbrack | simple ) { redir }
  1288. X */
  1289. XCmd par_cmd() /**/
  1290. X{
  1291. XCmd c;
  1292. X
  1293. X    c = make_cmd();
  1294. X    c->args = newlist();
  1295. X    c->redir = newlist();
  1296. X    c->vars = newlist();
  1297. X    while (IS_REDIROP(tok))
  1298. X        par_redir(c->redir);
  1299. X    switch (tok) {
  1300. X    case FOR: case FOREACH: case SELECT: par_for(c); break;
  1301. X    case CASE: par_case(c); break;
  1302. X    case IF: par_if(c); break;
  1303. X    case WHILE: case UNTIL: par_while(c); break;
  1304. X    case REPEAT: par_repeat(c); break;
  1305. X    case INPAR: case INBRACE: par_subsh(c); break;
  1306. X    case FUNC: par_funcdef(c); break;
  1307. X    case TIME: par_time(c); break;
  1308. X    case DINBRACK: par_dinbrack(c); break;
  1309. X    default: if (!par_simple(c)) return NULL; break;
  1310. X    }
  1311. X    while (IS_REDIROP(tok))
  1312. X        par_redir(c->redir);
  1313. X    incmdpos = 1;
  1314. X    incasepat = 0;
  1315. X    incond = 0;
  1316. X    return c;
  1317. X}
  1318. X
  1319. X/*
  1320. X * for    : ( FOR[EACH] | SELECT ) name ( "in" wordlist | INPAR wordlist OUTPAR )
  1321. X                { SEPER } ( DO list DONE | INBRACE list OUTBRACE |
  1322. X                list ZEND | list1 )
  1323. X */
  1324. Xvoid par_for(c) /**/
  1325. XCmd c;
  1326. X{
  1327. Xstruct forcmd *f;
  1328. Xint csh = (tok == FOREACH || isset(CSHJUNKIELOOPS));
  1329. X
  1330. X    f = make_forcmd();
  1331. X    c->type = (tok == SELECT) ? CSELECT : CFOR;
  1332. X    incmdpos = 0;
  1333. X    yylex();
  1334. X    if (tok != STRING) YYERRORV;
  1335. X    f->name = tokstr;
  1336. X    incmdpos = 1;
  1337. X    yylex();
  1338. X    if (tok == STRING && !strcmp(tokstr,"in")) {
  1339. X        f->inflag = 1;
  1340. X        incmdpos = 0;
  1341. X        yylex();
  1342. X        c->args = par_wordlist();
  1343. X        if (tok != SEPER) YYERRORV;
  1344. X    } else if (tok == INPAR) {
  1345. X        f->inflag = 1;
  1346. X        incmdpos = 0;
  1347. X        yylex();
  1348. X        c->args = par_nl_wordlist();
  1349. X        if (tok != OUTPAR) YYERRORV;
  1350. X        incmdpos = 1;
  1351. X        yylex();
  1352. X    }
  1353. X    incmdpos = 1;
  1354. X    while (tok == SEPER) yylex();
  1355. X    if (tok == DO) {
  1356. X        yylex();
  1357. X        f->list = par_list();
  1358. X        if (tok != DONE) YYERRORV;
  1359. X        yylex();
  1360. X    } else if (tok == INBRACE) {
  1361. X        yylex();
  1362. X        f->list = par_list();
  1363. X        if (tok != OUTBRACE) YYERRORV;
  1364. X        yylex();
  1365. X    } else if (csh) {
  1366. X        f->list = par_list();
  1367. X        if (tok != ZEND) YYERRORV;
  1368. X        yylex();
  1369. X    } else if (isset(NOSHORTLOOPS)) {
  1370. X        YYERRORV;
  1371. X    } else
  1372. X        f->list = par_list1();
  1373. X    c->u.forcmd = f;
  1374. X}
  1375. X
  1376. X/*
  1377. X * case    : CASE STRING { SEPER } ( "in" | INBRACE )
  1378. X                { { SEPER } STRING { BAR STRING } OUTPAR list [ DSEMI ] }
  1379. X                { SEPER } ( "esac" | OUTBRACE )
  1380. X */
  1381. Xvoid par_case(c) /**/
  1382. XCmd c;
  1383. X{
  1384. Xstruct casecmd **ccp;
  1385. Xint brflag;
  1386. X
  1387. X    c->type = CCASE;
  1388. X    incmdpos = 0;
  1389. X    yylex();
  1390. X    if (tok != STRING) YYERRORV;
  1391. X    addnode(c->args,tokstr);
  1392. X    incmdpos = 1;
  1393. X    yylex();
  1394. X    while (tok == SEPER) yylex();
  1395. X    if (!(tok == STRING && !strcmp(tokstr,"in")) && tok != INBRACE) YYERRORV;
  1396. X    brflag = (tok == INBRACE);
  1397. X    incasepat = 1;
  1398. X    incmdpos = 0;
  1399. X    yylex();
  1400. X    ccp = &c->u.casecmd;
  1401. X    for (;;) {
  1402. X        char *str;
  1403. X        struct casecmd *cc;
  1404. X
  1405. X        *ccp = cc = make_casecmd();
  1406. X        while (tok == SEPER) yylex();
  1407. X        if (tok == OUTBRACE) {
  1408. X            yylex();
  1409. X            break;
  1410. X        }
  1411. X        if (tok != STRING) YYERRORV;
  1412. X        if (!strcmp(tokstr,"esac")) {
  1413. X            yylex();
  1414. X            break;
  1415. X        }
  1416. X        str = tokstr;
  1417. X        yylex();
  1418. X        while (tok == BAR) {
  1419. X            char *str2;
  1420. X            int sl = strlen(str);
  1421. X
  1422. X            yylex();
  1423. X            if (tok != STRING) YYERRORV;
  1424. X            str2 = alloc(sl+strlen(tokstr)+1);
  1425. SHAR_EOF
  1426. true || echo 'restore of zsh2.1/src/parse.c failed'
  1427. fi
  1428. echo 'End of zsh2.1.0 part 14'
  1429. echo 'File zsh2.1/src/parse.c is continued in part 15'
  1430. echo 15 > _shar_seq_.tmp
  1431. exit 0
  1432.  
  1433. exit 0 # Just in case...
  1434. -- 
  1435. Kent Landfield                   INTERNET: kent@sparky.IMD.Sterling.COM
  1436. Sterling Software, IMD           UUCP:     uunet!sparky!kent
  1437. Phone:    (402) 291-8300         FAX:      (402) 291-4362
  1438. Please send comp.sources.misc-related mail to kent@uunet.uu.net.
  1439.