home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume30 / perl / patch27 < prev    next >
Text File  |  1992-06-11  |  50KB  |  2,152 lines

  1. Newsgroups: comp.sources.misc
  2. From: lwall@netlabs.com (Larry Wall)
  3. Subject:  v30i038:  perl - The perl programming language, Patch27
  4. Message-ID: <1992Jun11.180557.600@sparky.imd.sterling.com>
  5. X-Md4-Signature: fae7b51e5429e8b3f976ee9caff0eee3
  6. Date: Thu, 11 Jun 1992 18:05:57 GMT
  7. Approved: kent@sparky.imd.sterling.com
  8.  
  9. Submitted-by: lwall@netlabs.com (Larry Wall)
  10. Posting-number: Volume 30, Issue 38
  11. Archive-name: perl/patch27
  12. Environment: UNIX, MS-DOS, OS2
  13. Patch-To: perl: Volume 18, Issue 19-54
  14.  
  15. System: perl version 4.0
  16. Patch #: 27
  17. Priority: highish
  18. Subject: patch #20, continued
  19.  
  20. Description:
  21.     See patch #20.
  22.  
  23. Fix:    From rn, say "| patch -p -N -d DIR", where DIR is your perl source
  24.     directory.  Outside of rn, say "cd DIR; patch -p -N <thisarticle".
  25.     If you don't have the patch program, apply the following by hand,
  26.     or get patch (version 2.0, latest patchlevel).
  27.  
  28.     After patching:
  29.         *** DO NOTHING--INSTALL ALL PATCHES UP THROUGH #33 FIRST ***
  30.  
  31.     If patch indicates that patchlevel is the wrong version, you may need
  32.     to apply one or more previous patches, or the patch may already
  33.     have been applied.  See the patchlevel.h file to find out what has or
  34.     has not been applied.  In any event, don't continue with the patch.
  35.  
  36.     If you are missing previous patches they can be obtained from me:
  37.  
  38.     Larry Wall
  39.     lwall@netlabs.com
  40.  
  41.     If you send a mail message of the following form it will greatly speed
  42.     processing:
  43.  
  44.     Subject: Command
  45.     @SH mailpatch PATH perl 4.0 LIST
  46.            ^ note the c
  47.  
  48.     where PATH is a return path FROM ME TO YOU either in Internet notation,
  49.     or in bang notation from some well-known host, and LIST is the number
  50.     of one or more patches you need, separated by spaces, commas, and/or
  51.     hyphens.  Saying 35- says everything from 35 to the end.
  52.  
  53.  
  54. Index: patchlevel.h
  55. Prereq: 26
  56. 1c1
  57. < #define PATCHLEVEL 26
  58. ---
  59. > #define PATCHLEVEL 27
  60.  
  61. Index: dolist.c
  62. *** dolist.c.old    Mon Jun  8 17:46:54 1992
  63. --- dolist.c    Mon Jun  8 17:46:55 1992
  64. ***************
  65. *** 1,4 ****
  66. ! /* $RCSfile: dolist.c,v $$Revision: 4.0.1.4 $$Date: 91/11/11 16:33:19 $
  67.    *
  68.    *    Copyright (c) 1991, Larry Wall
  69.    *
  70. --- 1,4 ----
  71. ! /* $RCSfile: dolist.c,v $$Revision: 4.0.1.5 $$Date: 92/06/08 13:13:27 $
  72.    *
  73.    *    Copyright (c) 1991, Larry Wall
  74.    *
  75. ***************
  76. *** 6,11 ****
  77. --- 6,22 ----
  78.    *    License or the Artistic License, as specified in the README file.
  79.    *
  80.    * $Log:    dolist.c,v $
  81. +  * Revision 4.0.1.5  92/06/08  13:13:27  lwall
  82. +  * patch20: g pattern modifer sometimes returned extra values
  83. +  * patch20: m/$pattern/g didn't work
  84. +  * patch20: pattern modifiers i and o didn't interact right
  85. +  * patch20: @ in unpack failed too often
  86. +  * patch20: Perl now distinguishes overlapped copies from non-overlapped
  87. +  * patch20: slice on null list in scalar context returned random value
  88. +  * patch20: splice with negative offset didn't work with $[ = 1
  89. +  * patch20: fixed some memory leaks in splice
  90. +  * patch20: scalar keys %array now counts keys for you
  91. +  * 
  92.    * Revision 4.0.1.4  91/11/11  16:33:19  lwall
  93.    * patch19: added little-endian pack/unpack options
  94.    * patch19: sort $subname was busted by changes in 4.018
  95. ***************
  96. *** 40,45 ****
  97. --- 51,58 ----
  98.   #include "EXTERN.h"
  99.   #include "perl.h"
  100.   
  101. + static int sortcmp();
  102. + static int sortsub();
  103.   
  104.   #ifdef BUGGY_MSC
  105.    #pragma function(memcmp)
  106. ***************
  107. *** 63,68 ****
  108. --- 76,83 ----
  109.       char *myhint = hint;
  110.       int global;
  111.       int safebase;
  112. +     char *truebase = s;
  113. +     register REGEXP *rx = spat->spat_regexp;
  114.   
  115.       hint = Nullch;
  116.       if (!spat) {
  117. ***************
  118. *** 100,115 ****
  119.       if (debug & 8)
  120.           deb("2.SPAT /%s/\n",t);
  121.   #endif
  122. !     if (spat->spat_regexp) {
  123. !         regfree(spat->spat_regexp);
  124. !         spat->spat_regexp = Null(REGEXP*);    /* crucial if regcomp aborts */
  125. !     }
  126.       spat->spat_regexp = regcomp(t,t+tmpstr->str_cur,
  127.           spat->spat_flags & SPAT_FOLD);
  128.       if (!spat->spat_regexp->prelen && lastspat)
  129.           spat = lastspat;
  130.       if (spat->spat_flags & SPAT_KEEP) {
  131. !         scanconst(spat,spat->spat_regexp->precomp, spat->spat_regexp->prelen);
  132.           if (spat->spat_runtime)
  133.           arg_free(spat->spat_runtime);    /* it won't change, so */
  134.           spat->spat_runtime = Nullarg;    /* no point compiling again */
  135. --- 115,131 ----
  136.       if (debug & 8)
  137.           deb("2.SPAT /%s/\n",t);
  138.   #endif
  139. !     if (!global && rx)
  140. !         regfree(rx);
  141. !     spat->spat_regexp = Null(REGEXP*);    /* crucial if regcomp aborts */
  142.       spat->spat_regexp = regcomp(t,t+tmpstr->str_cur,
  143.           spat->spat_flags & SPAT_FOLD);
  144.       if (!spat->spat_regexp->prelen && lastspat)
  145.           spat = lastspat;
  146.       if (spat->spat_flags & SPAT_KEEP) {
  147. !         if (!(spat->spat_flags & SPAT_FOLD))
  148. !         scanconst(spat,spat->spat_regexp->precomp,
  149. !             spat->spat_regexp->prelen);
  150.           if (spat->spat_runtime)
  151.           arg_free(spat->spat_runtime);    /* it won't change, so */
  152.           spat->spat_runtime = Nullarg;    /* no point compiling again */
  153. ***************
  154. *** 120,135 ****
  155.           }
  156.       }
  157.       if (global) {
  158. !         if (spat->spat_regexp->startp[0]) {
  159. !         s = spat->spat_regexp->endp[0];
  160.           }
  161.       }
  162.       else if (!spat->spat_regexp->nparens)
  163.           gimme = G_SCALAR;            /* accidental array context? */
  164. !     if (regexec(spat->spat_regexp, s, strend, s, 0,
  165.         srchstr->str_pok & SP_STUDIED ? srchstr : Nullstr,
  166.         safebase)) {
  167. !         if (spat->spat_regexp->subbase || global)
  168.           curspat = spat;
  169.           lastspat = spat;
  170.           goto gotcha;
  171. --- 136,162 ----
  172.           }
  173.       }
  174.       if (global) {
  175. !         if (rx) {
  176. !             if (rx->startp[0]) {
  177. !             s = rx->endp[0];
  178. !             if (s == rx->startp[0])
  179. !             s++;
  180. !             if (s > strend) {
  181. !             regfree(rx);
  182. !             rx = spat->spat_regexp;
  183. !             goto nope;
  184. !             }
  185. !         }
  186. !         regfree(rx);
  187.           }
  188.       }
  189.       else if (!spat->spat_regexp->nparens)
  190.           gimme = G_SCALAR;            /* accidental array context? */
  191. !     rx = spat->spat_regexp;
  192. !     if (regexec(rx, s, strend, s, 0,
  193.         srchstr->str_pok & SP_STUDIED ? srchstr : Nullstr,
  194.         safebase)) {
  195. !         if (rx->subbase || global)
  196.           curspat = spat;
  197.           lastspat = spat;
  198.           goto gotcha;
  199. ***************
  200. *** 152,172 ****
  201.           ch = '?';
  202.           else
  203.           ch = '/';
  204. !         deb("2.SPAT %c%s%c\n",ch,spat->spat_regexp->precomp,ch);
  205.       }
  206.   #endif
  207. !     if (!spat->spat_regexp->prelen && lastspat)
  208.           spat = lastspat;
  209.       t = s;
  210.       play_it_again:
  211. !     if (global && spat->spat_regexp->startp[0])
  212. !         t = s = spat->spat_regexp->endp[0];
  213.       if (myhint) {
  214.           if (myhint < s || myhint > strend)
  215.           fatal("panic: hint in do_match");
  216.           s = myhint;
  217. !         if (spat->spat_regexp->regback >= 0) {
  218. !         s -= spat->spat_regexp->regback;
  219.           if (s < t)
  220.               s = t;
  221.           }
  222. --- 179,206 ----
  223.           ch = '?';
  224.           else
  225.           ch = '/';
  226. !         deb("2.SPAT %c%s%c\n",ch,rx->precomp,ch);
  227.       }
  228.   #endif
  229. !     if (!rx->prelen && lastspat) {
  230.           spat = lastspat;
  231. +         rx = spat->spat_regexp;
  232. +     }
  233.       t = s;
  234.       play_it_again:
  235. !     if (global && rx->startp[0]) {
  236. !         t = s = rx->endp[0];
  237. !         if (s == rx->startp[0])
  238. !         s++,t++;
  239. !         if (s > strend)
  240. !         goto nope;
  241. !     }
  242.       if (myhint) {
  243.           if (myhint < s || myhint > strend)
  244.           fatal("panic: hint in do_match");
  245.           s = myhint;
  246. !         if (rx->regback >= 0) {
  247. !         s -= rx->regback;
  248.           if (s < t)
  249.               s = t;
  250.           }
  251. ***************
  252. *** 190,198 ****
  253.   #endif
  254.           else if (spat->spat_flags & SPAT_ALL)
  255.               goto yup;
  256. !         if (s && spat->spat_regexp->regback >= 0) {
  257.               ++spat->spat_short->str_u.str_useful;
  258. !             s -= spat->spat_regexp->regback;
  259.               if (s < t)
  260.               s = t;
  261.           }
  262. --- 224,232 ----
  263.   #endif
  264.           else if (spat->spat_flags & SPAT_ALL)
  265.               goto yup;
  266. !         if (s && rx->regback >= 0) {
  267.               ++spat->spat_short->str_u.str_useful;
  268. !             s -= rx->regback;
  269.               if (s < t)
  270.               s = t;
  271.           }
  272. ***************
  273. *** 207,220 ****
  274.           spat->spat_short = Nullstr;    /* opt is being useless */
  275.           }
  276.       }
  277. !     if (!spat->spat_regexp->nparens && !global) {
  278.           gimme = G_SCALAR;            /* accidental array context? */
  279.           safebase = FALSE;
  280.       }
  281. !     if (regexec(spat->spat_regexp, s, strend, t, 0,
  282.         srchstr->str_pok & SP_STUDIED ? srchstr : Nullstr,
  283.         safebase)) {
  284. !         if (spat->spat_regexp->subbase || global)
  285.           curspat = spat;
  286.           lastspat = spat;
  287.           if (spat->spat_flags & SPAT_ONCE)
  288. --- 241,254 ----
  289.           spat->spat_short = Nullstr;    /* opt is being useless */
  290.           }
  291.       }
  292. !     if (!rx->nparens && !global) {
  293.           gimme = G_SCALAR;            /* accidental array context? */
  294.           safebase = FALSE;
  295.       }
  296. !     if (regexec(rx, s, strend, truebase, 0,
  297.         srchstr->str_pok & SP_STUDIED ? srchstr : Nullstr,
  298.         safebase)) {
  299. !         if (rx->subbase || global)
  300.           curspat = spat;
  301.           lastspat = spat;
  302.           if (spat->spat_flags & SPAT_ONCE)
  303. ***************
  304. *** 223,229 ****
  305.       }
  306.       else {
  307.           if (global)
  308. !         spat->spat_regexp->startp[0] = Nullch;
  309.           if (gimme == G_ARRAY)
  310.           return sp;
  311.           str_sset(str,&str_no);
  312. --- 257,263 ----
  313.       }
  314.       else {
  315.           if (global)
  316. !         rx->startp[0] = Nullch;
  317.           if (gimme == G_ARRAY)
  318.           return sp;
  319.           str_sset(str,&str_no);
  320. ***************
  321. *** 238,244 ****
  322.       if (gimme == G_ARRAY) {
  323.       int iters, i, len;
  324.   
  325. !     iters = spat->spat_regexp->nparens;
  326.       if (global && !iters)
  327.           i = 1;
  328.       else
  329. --- 272,278 ----
  330.       if (gimme == G_ARRAY) {
  331.       int iters, i, len;
  332.   
  333. !     iters = rx->nparens;
  334.       if (global && !iters)
  335.           i = 1;
  336.       else
  337. ***************
  338. *** 251,264 ****
  339.       for (i = !i; i <= iters; i++) {
  340.           st[++sp] = str_mortal(&str_no);
  341.           /*SUPPRESS 560*/
  342. !         if (s = spat->spat_regexp->startp[i]) {
  343. !         len = spat->spat_regexp->endp[i] - s;
  344.           if (len > 0)
  345.               str_nset(st[sp],s,len);
  346.           }
  347.       }
  348. !     if (global)
  349.           goto play_it_again;
  350.       return sp;
  351.       }
  352.       else {
  353. --- 285,300 ----
  354.       for (i = !i; i <= iters; i++) {
  355.           st[++sp] = str_mortal(&str_no);
  356.           /*SUPPRESS 560*/
  357. !         if (s = rx->startp[i]) {
  358. !         len = rx->endp[i] - s;
  359.           if (len > 0)
  360.               str_nset(st[sp],s,len);
  361.           }
  362.       }
  363. !     if (global) {
  364. !         truebase = rx->subbeg;
  365.           goto play_it_again;
  366. +     }
  367.       return sp;
  368.       }
  369.       else {
  370. ***************
  371. *** 274,283 ****
  372.       if (spat->spat_flags & SPAT_ONCE)
  373.       spat->spat_flags |= SPAT_USED;
  374.       if (global) {
  375. !     spat->spat_regexp->subbeg = t;
  376. !     spat->spat_regexp->subend = strend;
  377. !     spat->spat_regexp->startp[0] = s;
  378. !     spat->spat_regexp->endp[0] = s + spat->spat_short->str_cur;
  379.       curspat = spat;
  380.       goto gotcha;
  381.       }
  382. --- 310,319 ----
  383.       if (spat->spat_flags & SPAT_ONCE)
  384.       spat->spat_flags |= SPAT_USED;
  385.       if (global) {
  386. !     rx->subbeg = t;
  387. !     rx->subend = strend;
  388. !     rx->startp[0] = s;
  389. !     rx->endp[0] = s + spat->spat_short->str_cur;
  390.       curspat = spat;
  391.       goto gotcha;
  392.       }
  393. ***************
  394. *** 284,296 ****
  395.       if (sawampersand) {
  396.       char *tmps;
  397.   
  398. !     if (spat->spat_regexp->subbase)
  399. !         Safefree(spat->spat_regexp->subbase);
  400. !     tmps = spat->spat_regexp->subbase = nsavestr(t,strend-t);
  401. !     spat->spat_regexp->subbeg = tmps;
  402. !     spat->spat_regexp->subend = tmps + (strend-t);
  403. !     tmps = spat->spat_regexp->startp[0] = tmps + (s - t);
  404. !     spat->spat_regexp->endp[0] = tmps + spat->spat_short->str_cur;
  405.       curspat = spat;
  406.       }
  407.       str_sset(str,&str_yes);
  408. --- 320,332 ----
  409.       if (sawampersand) {
  410.       char *tmps;
  411.   
  412. !     if (rx->subbase)
  413. !         Safefree(rx->subbase);
  414. !     tmps = rx->subbase = nsavestr(t,strend-t);
  415. !     rx->subbeg = tmps;
  416. !     rx->subend = tmps + (strend-t);
  417. !     tmps = rx->startp[0] = tmps + (s - t);
  418. !     rx->endp[0] = tmps + spat->spat_short->str_cur;
  419.       curspat = spat;
  420.       }
  421.       str_sset(str,&str_yes);
  422. ***************
  423. *** 299,308 ****
  424.       return sp;
  425.   
  426.   nope:
  427. !     spat->spat_regexp->startp[0] = Nullch;
  428. !     ++spat->spat_short->str_u.str_useful;
  429. !     if (global)
  430. !     spat->spat_regexp->startp[0] = Nullch;
  431.       if (gimme == G_ARRAY)
  432.       return sp;
  433.       str_sset(str,&str_no);
  434. --- 335,343 ----
  435.       return sp;
  436.   
  437.   nope:
  438. !     rx->startp[0] = Nullch;
  439. !     if (spat->spat_short)
  440. !     ++spat->spat_short->str_u.str_useful;
  441.       if (gimme == G_ARRAY)
  442.       return sp;
  443.       str_sset(str,&str_no);
  444. ***************
  445. *** 628,634 ****
  446.           goto reparse;
  447.           break;
  448.       case '@':
  449. !         if (len > strend - s)
  450.           fatal("@ outside of string");
  451.           s = strbeg + len;
  452.           break;
  453. --- 663,669 ----
  454.           goto reparse;
  455.           break;
  456.       case '@':
  457. !         if (len > strend - strbeg)
  458.           fatal("@ outside of string");
  459.           s = strbeg + len;
  460.           break;
  461. ***************
  462. *** 775,781 ****
  463.           len = along;
  464.           if (checksum) {
  465.           while (len-- > 0) {
  466. !             bcopy(s,(char*)&ashort,sizeof(short));
  467.               s += sizeof(short);
  468.               culong += ashort;
  469.           }
  470. --- 810,816 ----
  471.           len = along;
  472.           if (checksum) {
  473.           while (len-- > 0) {
  474. !             Copy(s,&ashort,1,short);
  475.               s += sizeof(short);
  476.               culong += ashort;
  477.           }
  478. ***************
  479. *** 782,788 ****
  480.           }
  481.           else {
  482.           while (len-- > 0) {
  483. !             bcopy(s,(char*)&ashort,sizeof(short));
  484.               s += sizeof(short);
  485.               str = Str_new(38,0);
  486.               str_numset(str,(double)ashort);
  487. --- 817,823 ----
  488.           }
  489.           else {
  490.           while (len-- > 0) {
  491. !             Copy(s,&ashort,1,short);
  492.               s += sizeof(short);
  493.               str = Str_new(38,0);
  494.               str_numset(str,(double)ashort);
  495. ***************
  496. *** 798,804 ****
  497.           len = along;
  498.           if (checksum) {
  499.           while (len-- > 0) {
  500. !             bcopy(s,(char*)&aushort,sizeof(unsigned short));
  501.               s += sizeof(unsigned short);
  502.   #ifdef HAS_NTOHS
  503.               if (datumtype == 'n')
  504. --- 833,839 ----
  505.           len = along;
  506.           if (checksum) {
  507.           while (len-- > 0) {
  508. !             Copy(s,&aushort,1,unsigned short);
  509.               s += sizeof(unsigned short);
  510.   #ifdef HAS_NTOHS
  511.               if (datumtype == 'n')
  512. ***************
  513. *** 813,819 ****
  514.           }
  515.           else {
  516.           while (len-- > 0) {
  517. !             bcopy(s,(char*)&aushort,sizeof(unsigned short));
  518.               s += sizeof(unsigned short);
  519.               str = Str_new(39,0);
  520.   #ifdef HAS_NTOHS
  521. --- 848,854 ----
  522.           }
  523.           else {
  524.           while (len-- > 0) {
  525. !             Copy(s,&aushort,1,unsigned short);
  526.               s += sizeof(unsigned short);
  527.               str = Str_new(39,0);
  528.   #ifdef HAS_NTOHS
  529. ***************
  530. *** 835,841 ****
  531.           len = along;
  532.           if (checksum) {
  533.           while (len-- > 0) {
  534. !             bcopy(s,(char*)&aint,sizeof(int));
  535.               s += sizeof(int);
  536.               if (checksum > 32)
  537.               cdouble += (double)aint;
  538. --- 870,876 ----
  539.           len = along;
  540.           if (checksum) {
  541.           while (len-- > 0) {
  542. !             Copy(s,&aint,1,int);
  543.               s += sizeof(int);
  544.               if (checksum > 32)
  545.               cdouble += (double)aint;
  546. ***************
  547. *** 845,851 ****
  548.           }
  549.           else {
  550.           while (len-- > 0) {
  551. !             bcopy(s,(char*)&aint,sizeof(int));
  552.               s += sizeof(int);
  553.               str = Str_new(40,0);
  554.               str_numset(str,(double)aint);
  555. --- 880,886 ----
  556.           }
  557.           else {
  558.           while (len-- > 0) {
  559. !             Copy(s,&aint,1,int);
  560.               s += sizeof(int);
  561.               str = Str_new(40,0);
  562.               str_numset(str,(double)aint);
  563. ***************
  564. *** 859,865 ****
  565.           len = along;
  566.           if (checksum) {
  567.           while (len-- > 0) {
  568. !             bcopy(s,(char*)&auint,sizeof(unsigned int));
  569.               s += sizeof(unsigned int);
  570.               if (checksum > 32)
  571.               cdouble += (double)auint;
  572. --- 894,900 ----
  573.           len = along;
  574.           if (checksum) {
  575.           while (len-- > 0) {
  576. !             Copy(s,&auint,1,unsigned int);
  577.               s += sizeof(unsigned int);
  578.               if (checksum > 32)
  579.               cdouble += (double)auint;
  580. ***************
  581. *** 869,875 ****
  582.           }
  583.           else {
  584.           while (len-- > 0) {
  585. !             bcopy(s,(char*)&auint,sizeof(unsigned int));
  586.               s += sizeof(unsigned int);
  587.               str = Str_new(41,0);
  588.               str_numset(str,(double)auint);
  589. --- 904,910 ----
  590.           }
  591.           else {
  592.           while (len-- > 0) {
  593. !             Copy(s,&auint,1,unsigned int);
  594.               s += sizeof(unsigned int);
  595.               str = Str_new(41,0);
  596.               str_numset(str,(double)auint);
  597. ***************
  598. *** 883,889 ****
  599.           len = along;
  600.           if (checksum) {
  601.           while (len-- > 0) {
  602. !             bcopy(s,(char*)&along,sizeof(long));
  603.               s += sizeof(long);
  604.               if (checksum > 32)
  605.               cdouble += (double)along;
  606. --- 918,924 ----
  607.           len = along;
  608.           if (checksum) {
  609.           while (len-- > 0) {
  610. !             Copy(s,&along,1,long);
  611.               s += sizeof(long);
  612.               if (checksum > 32)
  613.               cdouble += (double)along;
  614. ***************
  615. *** 893,899 ****
  616.           }
  617.           else {
  618.           while (len-- > 0) {
  619. !             bcopy(s,(char*)&along,sizeof(long));
  620.               s += sizeof(long);
  621.               str = Str_new(42,0);
  622.               str_numset(str,(double)along);
  623. --- 928,934 ----
  624.           }
  625.           else {
  626.           while (len-- > 0) {
  627. !             Copy(s,&along,1,long);
  628.               s += sizeof(long);
  629.               str = Str_new(42,0);
  630.               str_numset(str,(double)along);
  631. ***************
  632. *** 909,915 ****
  633.           len = along;
  634.           if (checksum) {
  635.           while (len-- > 0) {
  636. !             bcopy(s,(char*)&aulong,sizeof(unsigned long));
  637.               s += sizeof(unsigned long);
  638.   #ifdef HAS_NTOHL
  639.               if (datumtype == 'N')
  640. --- 944,950 ----
  641.           len = along;
  642.           if (checksum) {
  643.           while (len-- > 0) {
  644. !             Copy(s,&aulong,1,unsigned long);
  645.               s += sizeof(unsigned long);
  646.   #ifdef HAS_NTOHL
  647.               if (datumtype == 'N')
  648. ***************
  649. *** 927,933 ****
  650.           }
  651.           else {
  652.           while (len-- > 0) {
  653. !             bcopy(s,(char*)&aulong,sizeof(unsigned long));
  654.               s += sizeof(unsigned long);
  655.               str = Str_new(43,0);
  656.   #ifdef HAS_NTOHL
  657. --- 962,968 ----
  658.           }
  659.           else {
  660.           while (len-- > 0) {
  661. !             Copy(s,&aulong,1,unsigned long);
  662.               s += sizeof(unsigned long);
  663.               str = Str_new(43,0);
  664.   #ifdef HAS_NTOHL
  665. ***************
  666. *** 951,957 ****
  667.           if (sizeof(char*) > strend - s)
  668.               break;
  669.           else {
  670. !             bcopy(s,(char*)&aptr,sizeof(char*));
  671.               s += sizeof(char*);
  672.           }
  673.           str = Str_new(44,0);
  674. --- 986,992 ----
  675.           if (sizeof(char*) > strend - s)
  676.               break;
  677.           else {
  678. !             Copy(s,&aptr,1,char*);
  679.               s += sizeof(char*);
  680.           }
  681.           str = Str_new(44,0);
  682. ***************
  683. *** 966,972 ****
  684.           if (s + sizeof(quad) > strend)
  685.               aquad = 0;
  686.           else {
  687. !             bcopy(s,(char*)&aquad,sizeof(quad));
  688.               s += sizeof(quad);
  689.           }
  690.           str = Str_new(42,0);
  691. --- 1001,1007 ----
  692.           if (s + sizeof(quad) > strend)
  693.               aquad = 0;
  694.           else {
  695. !             Copy(s,&aquad,1,quad);
  696.               s += sizeof(quad);
  697.           }
  698.           str = Str_new(42,0);
  699. ***************
  700. *** 979,985 ****
  701.           if (s + sizeof(unsigned quad) > strend)
  702.               auquad = 0;
  703.           else {
  704. !             bcopy(s,(char*)&auquad,sizeof(unsigned quad));
  705.               s += sizeof(unsigned quad);
  706.           }
  707.           str = Str_new(43,0);
  708. --- 1014,1020 ----
  709.           if (s + sizeof(unsigned quad) > strend)
  710.               auquad = 0;
  711.           else {
  712. !             Copy(s,&auquad,1,unsigned quad);
  713.               s += sizeof(unsigned quad);
  714.           }
  715.           str = Str_new(43,0);
  716. ***************
  717. *** 996,1002 ****
  718.           len = along;
  719.           if (checksum) {
  720.           while (len-- > 0) {
  721. !             bcopy(s, (char *)&afloat, sizeof(float));
  722.               s += sizeof(float);
  723.               cdouble += afloat;
  724.           }
  725. --- 1031,1037 ----
  726.           len = along;
  727.           if (checksum) {
  728.           while (len-- > 0) {
  729. !             Copy(s, &afloat,1, float);
  730.               s += sizeof(float);
  731.               cdouble += afloat;
  732.           }
  733. ***************
  734. *** 1003,1009 ****
  735.           }
  736.           else {
  737.           while (len-- > 0) {
  738. !             bcopy(s, (char *)&afloat, sizeof(float));
  739.               s += sizeof(float);
  740.               str = Str_new(47, 0);
  741.               str_numset(str, (double)afloat);
  742. --- 1038,1044 ----
  743.           }
  744.           else {
  745.           while (len-- > 0) {
  746. !             Copy(s, &afloat,1, float);
  747.               s += sizeof(float);
  748.               str = Str_new(47, 0);
  749.               str_numset(str, (double)afloat);
  750. ***************
  751. *** 1018,1024 ****
  752.           len = along;
  753.           if (checksum) {
  754.           while (len-- > 0) {
  755. !             bcopy(s, (char *)&adouble, sizeof(double));
  756.               s += sizeof(double);
  757.               cdouble += adouble;
  758.           }
  759. --- 1053,1059 ----
  760.           len = along;
  761.           if (checksum) {
  762.           while (len-- > 0) {
  763. !             Copy(s, &adouble,1, double);
  764.               s += sizeof(double);
  765.               cdouble += adouble;
  766.           }
  767. ***************
  768. *** 1025,1031 ****
  769.           }
  770.           else {
  771.           while (len-- > 0) {
  772. !             bcopy(s, (char *)&adouble, sizeof(double));
  773.               s += sizeof(double);
  774.               str = Str_new(48, 0);
  775.               str_numset(str, (double)adouble);
  776. --- 1060,1066 ----
  777.           }
  778.           else {
  779.           while (len-- > 0) {
  780. !             Copy(s, &adouble,1, double);
  781.               s += sizeof(double);
  782.               str = Str_new(48, 0);
  783.               str_numset(str, (double)adouble);
  784. ***************
  785. *** 1182,1188 ****
  786.       sp--;
  787.       }
  788.       else {
  789. !     if (numarray) {
  790.           if (st[max])
  791.           st[sp] = afetch(ary,
  792.             ((int)str_gnum(st[max])) - arybase, lval);
  793. --- 1217,1225 ----
  794.       sp--;
  795.       }
  796.       else {
  797. !     if (sp == max)
  798. !         st[sp] = &str_undef;
  799. !     else if (numarray) {
  800.           if (st[max])
  801.           st[sp] = afetch(ary,
  802.             ((int)str_gnum(st[max])) - arybase, lval);
  803. ***************
  804. *** 1225,1233 ****
  805.       STR **tmparyval;
  806.   
  807.       if (++sp < max) {
  808. !     offset = ((int)str_gnum(st[sp])) - arybase;
  809.       if (offset < 0)
  810.           offset += ary->ary_fill + 1;
  811.       if (++sp < max) {
  812.           length = (int)str_gnum(st[sp++]);
  813.           if (length < 0)
  814. --- 1262,1272 ----
  815.       STR **tmparyval;
  816.   
  817.       if (++sp < max) {
  818. !     offset = (int)str_gnum(st[sp]);
  819.       if (offset < 0)
  820.           offset += ary->ary_fill + 1;
  821. +     else
  822. +         offset -= arybase;
  823.       if (++sp < max) {
  824.           length = (int)str_gnum(st[sp++]);
  825.           if (length < 0)
  826. ***************
  827. *** 1284,1291 ****
  828.       }
  829.       else {
  830.           st[sp] = ary->ary_array[offset+length-1];
  831. !         if (ary->ary_flags & ARF_REAL)
  832.           str_2mortal(st[sp]);
  833.       }
  834.       ary->ary_fill += diff;
  835.   
  836. --- 1323,1333 ----
  837.       }
  838.       else {
  839.           st[sp] = ary->ary_array[offset+length-1];
  840. !         if (ary->ary_flags & ARF_REAL) {
  841.           str_2mortal(st[sp]);
  842. +         for (i = length - 1, dst = &ary->ary_array[offset]; i > 0; i--)
  843. +             str_free(*dst++);    /* free them now */
  844. +         }
  845.       }
  846.       ary->ary_fill += diff;
  847.   
  848. ***************
  849. *** 1306,1312 ****
  850.           if (after) {            /* anything to pull down? */
  851.           src = ary->ary_array + offset + length;
  852.           dst = src + diff;        /* diff is negative */
  853. !         Copy(src, dst, after, STR*);
  854.           }
  855.           Zero(&ary->ary_array[ary->ary_fill+1], -diff, STR*);
  856.                           /* avoid later double free */
  857. --- 1348,1354 ----
  858.           if (after) {            /* anything to pull down? */
  859.           src = ary->ary_array + offset + length;
  860.           dst = src + diff;        /* diff is negative */
  861. !         Move(src, dst, after, STR*);
  862.           }
  863.           Zero(&ary->ary_array[ary->ary_fill+1], -diff, STR*);
  864.                           /* avoid later double free */
  865. ***************
  866. *** 1334,1340 ****
  867.           if (offset) {
  868.               src = ary->ary_array;
  869.               dst = src - diff;
  870. !             Copy(src, dst, offset, STR*);
  871.           }
  872.           ary->ary_array -= diff;        /* diff is positive */
  873.           ary->ary_max += diff;
  874. --- 1376,1382 ----
  875.           if (offset) {
  876.               src = ary->ary_array;
  877.               dst = src - diff;
  878. !             Move(src, dst, offset, STR*);
  879.           }
  880.           ary->ary_array -= diff;        /* diff is positive */
  881.           ary->ary_max += diff;
  882. ***************
  883. *** 1345,1358 ****
  884.               astore(ary, ary->ary_fill + diff, Nullstr);
  885.           else
  886.               ary->ary_fill += diff;
  887.           if (after) {
  888.               dst = ary->ary_array + ary->ary_fill;
  889.               src = dst - diff;
  890.               for (i = after; i; i--) {
  891. !             if (*dst)        /* str was hanging around */
  892. !                 str_free(*dst);    /*  after $#foo */
  893. !             *dst-- = *src;
  894. !             *src-- = Nullstr;
  895.               }
  896.           }
  897.           }
  898. --- 1387,1403 ----
  899.               astore(ary, ary->ary_fill + diff, Nullstr);
  900.           else
  901.               ary->ary_fill += diff;
  902. +         dst = ary->ary_array + ary->ary_fill;
  903. +         for (i = diff; i > 0; i--) {
  904. +             if (*dst)            /* str was hanging around */
  905. +             str_free(*dst);        /*  after $#foo */
  906. +             dst--;
  907. +         }
  908.           if (after) {
  909.               dst = ary->ary_array + ary->ary_fill;
  910.               src = dst - diff;
  911.               for (i = after; i; i--) {
  912. !             *dst-- = *src--;
  913.               }
  914.           }
  915.           }
  916. ***************
  917. *** 1374,1383 ****
  918.           }
  919.           sp += length - 1;
  920.       }
  921. !     else if (length) {
  922. !         st[sp] = tmparyval[length-1];
  923. !         if (ary->ary_flags & ARF_REAL)
  924.           str_2mortal(st[sp]);
  925.           Safefree(tmparyval);
  926.       }
  927.       else
  928. --- 1419,1431 ----
  929.           }
  930.           sp += length - 1;
  931.       }
  932. !     else if (length--) {
  933. !         st[sp] = tmparyval[length];
  934. !         if (ary->ary_flags & ARF_REAL) {
  935.           str_2mortal(st[sp]);
  936. +         while (length-- > 0)
  937. +             str_free(tmparyval[length]);
  938. +         }
  939.           Safefree(tmparyval);
  940.       }
  941.       else
  942. ***************
  943. *** 1450,1456 ****
  944.           *down-- = *up;
  945.       }
  946.       i = arglast[2] - arglast[1];
  947. !     Copy(down+1,up,i/2,STR*);
  948.       return arglast[2] - 1;
  949.   }
  950.   
  951. --- 1498,1504 ----
  952.           *down-- = *up;
  953.       }
  954.       i = arglast[2] - arglast[1];
  955. !     Move(down+1,up,i/2,STR*);
  956.       return arglast[2] - 1;
  957.   }
  958.   
  959. ***************
  960. *** 1543,1550 ****
  961.           if (stab) {
  962.           if (!stab_sub(stab) || !(sortcmd = stab_sub(stab)->cmd))
  963.               fatal("Undefined subroutine \"%s\" in sort", 
  964. !             stab_name(stab));
  965. !         stash = stab_stash(stab);
  966.           }
  967.           else
  968.           sortcmd = Nullcmd;
  969. --- 1591,1598 ----
  970.           if (stab) {
  971.           if (!stab_sub(stab) || !(sortcmd = stab_sub(stab)->cmd))
  972.               fatal("Undefined subroutine \"%s\" in sort", 
  973. !             stab_ename(stab));
  974. !         stash = stab_estash(stab);
  975.           }
  976.           else
  977.           sortcmd = Nullcmd;
  978. ***************
  979. *** 1587,1593 ****
  980.       return sp+max;
  981.   }
  982.   
  983. ! int
  984.   sortsub(str1,str2)
  985.   STR **str1;
  986.   STR **str2;
  987. --- 1635,1641 ----
  988.       return sp+max;
  989.   }
  990.   
  991. ! static int
  992.   sortsub(str1,str2)
  993.   STR **str1;
  994.   STR **str2;
  995. ***************
  996. *** 1598,1603 ****
  997. --- 1646,1652 ----
  998.       return (int)str_gnum(*stack->ary_array);
  999.   }
  1000.   
  1001. + static int
  1002.   sortcmp(strp1,strp2)
  1003.   STR **strp1;
  1004.   STR **strp2;
  1005. ***************
  1006. *** 1736,1742 ****
  1007.       if (!maxarg)
  1008.       return sp;
  1009.       str = Str_new(49,0);
  1010. !     stab_fullname(str, csv->stab);
  1011.       (void)astore(stack,++sp, str_2mortal(str));
  1012.       (void)astore(stack,++sp,
  1013.         str_2mortal(str_nmake((double)csv->hasargs)) );
  1014. --- 1785,1791 ----
  1015.       if (!maxarg)
  1016.       return sp;
  1017.       str = Str_new(49,0);
  1018. !     stab_efullname(str, csv->stab);
  1019.       (void)astore(stack,++sp, str_2mortal(str));
  1020.       (void)astore(stack,++sp,
  1021.         str_2mortal(str_nmake((double)csv->hasargs)) );
  1022. ***************
  1023. *** 1848,1854 ****
  1024.       int dovalues = (kv == O_VALUES || kv == O_HASH);
  1025.   
  1026.       if (gimme != G_ARRAY) {
  1027. !     str_sset(str,&str_undef);
  1028.       STABSET(str);
  1029.       st[++sp] = str;
  1030.       return sp;
  1031. --- 1897,1909 ----
  1032.       int dovalues = (kv == O_VALUES || kv == O_HASH);
  1033.   
  1034.       if (gimme != G_ARRAY) {
  1035. !     i = 0;
  1036. !     (void)hiterinit(hash);
  1037. !     /*SUPPRESS 560*/
  1038. !     while (entry = hiternext(hash)) {
  1039. !         i++;
  1040. !     }
  1041. !     str_numset(str,(double)i);
  1042.       STABSET(str);
  1043.       st[++sp] = str;
  1044.       return sp;
  1045.  
  1046. Index: makedepend.SH
  1047. *** makedepend.SH.old    Mon Jun  8 17:49:22 1992
  1048. --- makedepend.SH    Mon Jun  8 17:49:22 1992
  1049. ***************
  1050. *** 13,23 ****
  1051.   */*) cd `expr X$0 : 'X\(.*\)/'` ;;
  1052.   esac
  1053.   echo "Extracting makedepend (with variable substitutions)"
  1054.   $spitshell >makedepend <<!GROK!THIS!
  1055.   $startsh
  1056. ! # $RCSfile: makedepend.SH,v $$Revision: 4.0.1.3 $$Date: 91/11/05 17:56:33 $
  1057.   #
  1058.   # $Log:    makedepend.SH,v $
  1059.   # Revision 4.0.1.3  91/11/05  17:56:33  lwall
  1060.   # patch11: various portability fixes
  1061.   # 
  1062. --- 13,27 ----
  1063.   */*) cd `expr X$0 : 'X\(.*\)/'` ;;
  1064.   esac
  1065.   echo "Extracting makedepend (with variable substitutions)"
  1066. + rm -f makedepend
  1067.   $spitshell >makedepend <<!GROK!THIS!
  1068.   $startsh
  1069. ! # $RCSfile: makedepend.SH,v $$Revision: 4.0.1.4 $$Date: 92/06/08 13:51:24 $
  1070.   #
  1071.   # $Log:    makedepend.SH,v $
  1072. + # Revision 4.0.1.4  92/06/08  13:51:24  lwall
  1073. + # patch20: various and sundry fixes
  1074. + # 
  1075.   # Revision 4.0.1.3  91/11/05  17:56:33  lwall
  1076.   # patch11: various portability fixes
  1077.   # 
  1078. ***************
  1079. *** 53,58 ****
  1080. --- 57,65 ----
  1081.   
  1082.   $spitshell >>makedepend <<'!NO!SUBS!'
  1083.   
  1084. + PATH="$PATH:."
  1085. + export PATH
  1086.   $cat /dev/null >.deptmp
  1087.   $rm -f *.c.c c/*.c.c
  1088.   if test -f Makefile; then
  1089. ***************
  1090. *** 83,103 ****
  1091.   # for file in `cat /dev/null`; do
  1092.       case "$file" in
  1093.       *.c) filebase=`basename $file .c` ;;
  1094. !     *.y) filebase=`basename $file .c` ;;
  1095.       esac
  1096.       $echo "Finding dependencies for $filebase.o."
  1097. !     $sed -n <$file >$file.c \
  1098.       -e "/^${filebase}_init(/q" \
  1099.       -e '/^#/{' \
  1100.       -e 's|/\*.*$||' \
  1101.       -e 's|\\$||' \
  1102.       -e p \
  1103. !     -e '}'
  1104. !     $cppstdin -I/usr/local/include -I. $cppflags $cppminus <$file.c | sed -e 's#\.[0-9][0-9]*\.c#'"$file.c#" | \
  1105.       $sed \
  1106.       -e 's/^[     ]*#[     ]*line/#/' \
  1107. !     -e '/^# *[0-9][0-9]* *"/!d' \
  1108.       -e 's/^.*"\(.*\)".*$/'$filebase'.o: \1/' \
  1109.       -e 's|: \./|: |' \
  1110.       -e 's|\.c\.c|.c|' | \
  1111.       $uniq | $sort | $uniq >> .deptmp
  1112. --- 90,117 ----
  1113.   # for file in `cat /dev/null`; do
  1114.       case "$file" in
  1115.       *.c) filebase=`basename $file .c` ;;
  1116. !     *.y) filebase=`basename $file .y` ;;
  1117.       esac
  1118. +     case "$file" in
  1119. +     */*) finc="-I`echo $file | sed 's#/[^/]*$##`" ;;
  1120. +     *)   finc= ;;
  1121. +     esac
  1122.       $echo "Finding dependencies for $filebase.o."
  1123. !     ( $echo "#line 1 \"$file\""; \
  1124. !       $sed -n <$file \
  1125.       -e "/^${filebase}_init(/q" \
  1126.       -e '/^#/{' \
  1127.       -e 's|/\*.*$||' \
  1128.       -e 's|\\$||' \
  1129.       -e p \
  1130. !     -e '}' ) >$file.c
  1131. !     $cppstdin $finc -I/usr/local/include -I. $cppflags $cppminus <$file.c |
  1132.       $sed \
  1133. +     -e 's#\.[0-9][0-9]*\.c#'"$file.c#" \
  1134.       -e 's/^[     ]*#[     ]*line/#/' \
  1135. !     -e '/^# *[0-9][0-9]* *[".\/]/!d' \
  1136.       -e 's/^.*"\(.*\)".*$/'$filebase'.o: \1/' \
  1137. +     -e 's/^# *[0-9][0-9]* \(.*\)$/'$filebase'.o: \1/' \
  1138.       -e 's|: \./|: |' \
  1139.       -e 's|\.c\.c|.c|' | \
  1140.       $uniq | $sort | $uniq >> .deptmp
  1141.  
  1142. Index: atarist/makefile.sm
  1143. *** atarist/makefile.sm.old    Mon Jun  8 17:35:16 1992
  1144. --- atarist/makefile.sm    Mon Jun  8 17:35:16 1992
  1145. ***************
  1146. *** 0 ****
  1147. --- 1,457 ----
  1148. + # : Makefile.SH,v 9820Revision: 4.0.1.2 9820Date: 91/06/07 10:14:43 $
  1149. + #
  1150. + # $Log:    makefile.sm,v $
  1151. + # Revision 4.0.1.1  92/06/08  11:50:00  lwall
  1152. + # Initial revision
  1153. + # 
  1154. + # Revision 4.0.1.2  91/06/07  10:14:43  lwall
  1155. + # patch4: cflags now emits entire cc command except for the filename
  1156. + # patch4: alternate make programs are now semi-supported
  1157. + # patch4: uperl.o no longer tries to link in libraries prematurely
  1158. + # patch4: installperl now installs x2p stuff too
  1159. + # 
  1160. + # Revision 4.0.1.1  91/04/11  17:30:39  lwall
  1161. + # patch1: C flags are now settable on a per-file basis
  1162. + # 
  1163. + # Revision 4.0  91/03/20  00:58:54  lwall
  1164. + # 4.0 baseline.
  1165. + # 
  1166. + # 
  1167. + CC = cgcc
  1168. + YACC = bison -y
  1169. + LDFLAGS = 
  1170. + CLDFLAGS = 
  1171. + SMALL = 
  1172. + LARGE =  
  1173. + mallocsrc = malloc.c
  1174. + mallocobj = malloc.o
  1175. + SLN = ln -s
  1176. + libs = -lgdbm -lpml 
  1177. + public = perl.ttp
  1178. + # To use an alternate make, set  in config.sh.
  1179. + MAKE = make
  1180. + CCCMD = $(CC) -O2 -fomit-frame-pointer -fstrength-reduce -c -DMYMALLOC
  1181. + private = 
  1182. + scripts = 
  1183. + manpages = perl.man h2ph.man
  1184. + util = echo.ttp perlglob.ttp
  1185. + sh = Makefile.SH makedepend.SH h2ph.SH
  1186. + h1 = EXTERN.h INTERN.h arg.h array.h cmd.h config.h form.h handy.h
  1187. + h2 = hash.h perl.h regcomp.h regexp.h spat.h stab.h str.h util.h
  1188. + h = $(h1) $(h2)
  1189. + c1 = array.c cmd.c cons.c consarg.c doarg.c doio.c dolist.c dump.c
  1190. + c2 = eval.c form.c hash.c $(mallocsrc) perl.c regcomp.c regexec.c
  1191. + c3 = stab.c str.c toke.c util.c atarist.c usersub.c
  1192. + c = $(c1) $(c2) $(c3)
  1193. + obj1 = array.o cmd.o cons.o consarg.o doarg.o doio.o dolist.o dump.o
  1194. + obj2 = eval.o form.o hash.o $(mallocobj) perl.o regcomp.o regexec.o
  1195. + obj3 = stab.o str.o toke.o util.o atarist.o
  1196. + obj = $(obj1) $(obj2) $(obj3)
  1197. + lintflags = -hbvxac
  1198. + # grrr
  1199. + SHELL = /bin/sh
  1200. + .c.o:
  1201. +     $(CCCMD) $*.c
  1202. + all: $(public)  $(util)
  1203. + # This is the standard version that contains no "taint" checks and is
  1204. + # used for all scripts that aren't set-id or running under something set-id.
  1205. + # The $& notation is tells Sequent machines that it can do a parallel make,
  1206. + # and is harmless otherwise.
  1207. + perl.ttp: perly.o $(obj) usersub.o
  1208. +     $(CC) $(LARGE) $(CLDFLAGS) $(obj) perly.o usersub.o $(libs) -o perl.ttp -v -s
  1209. + echo.ttp: wildmat.o echo.c
  1210. +     $(CC) -O -mshort -fomit-frame-pointer -o echo.ttp \
  1211. +     echo.c wildmat.o -liio16 -s
  1212. + perlglob.ttp: wildmat.o perlglob.c
  1213. +     $(CC) -O -mshort -fomit-frame-pointer -o perlglob.ttp \
  1214. +     perlglob.c wildmat.o -liio16 -s
  1215. + wildmat.o: wildmat.c
  1216. +     $(CC) -O -mshort -fomit-frame-pointer -c wildmat.c
  1217. + perly.h: perly.c
  1218. +     @ echo Dummy dependency for dumb parallel make
  1219. +     touch perly.h
  1220. + perly.c: perly.y perly.fixer
  1221. +     @ echo 'Expect either' 29 shift/reduce and 59 reduce/reduce conflicts...
  1222. +     @ echo '           or' 27 shift/reduce and 61 reduce/reduce conflicts...
  1223. +     $(YACC) -d perly.y
  1224. +     sh ./perly.fixer y.tab.c perly.c
  1225. +     mv y.tab.h perly.h
  1226. +     echo 'extern YYSTYPE yylval;' >>perly.h
  1227. + perly.o: perly.c perly.h $(h)
  1228. +     $(CCCMD) perly.c
  1229. + clean:
  1230. +     rm -f *.o 
  1231. + realclean: clean
  1232. +     rm -f *.ttp report core
  1233. +     rm -f perly.c perly.h 
  1234. + # The following lint has practically everything turned on.  Unfortunately,
  1235. + # you have to wade through a lot of mumbo jumbo that can't be suppressed.
  1236. + # If the source file has a /*NOSTRICT*/ somewhere, ignore the lint message
  1237. + # for that spot.
  1238. + lint: perly.c $(c)
  1239. +     lint $(lintflags) $(defs) perly.c $(c) > perl.fuzz
  1240. + depend: makedepend
  1241. +     - test -f perly.h || cp /dev/null perly.h
  1242. +     ./makedepend
  1243. +     - test -s perly.h || /bin/rm -f perly.h
  1244. + test: perl
  1245. +     - cd t && chmod +x TEST */*.t
  1246. +     - cd t && (rm -f perl; $(SLN) ../perl .) && ./perl TEST </dev/tty
  1247. + clist:
  1248. +     echo $(c) | tr ' ' '\012' >.clist
  1249. + hlist:
  1250. +     echo $(h) | tr ' ' '\012' >.hlist
  1251. + shlist:
  1252. +     echo $(sh) | tr ' ' '\012' >.shlist
  1253. + # AUTOMATICALLY GENERATED MAKE DEPENDENCIES--PUT NOTHING BELOW THIS LINE
  1254. + # If this runs make out of memory, delete /usr/include lines.
  1255. + array.o: EXTERN.h
  1256. + array.o: arg.h
  1257. + array.o: array.c
  1258. + array.o: array.h
  1259. + array.o: cmd.h
  1260. + array.o: config.h
  1261. + array.o: form.h
  1262. + array.o: handy.h
  1263. + array.o: hash.h
  1264. + array.o: perl.h
  1265. + array.o: regexp.h
  1266. + array.o: spat.h
  1267. + array.o: stab.h
  1268. + array.o: str.h
  1269. + array.o: util.h
  1270. + cmd.o: EXTERN.h
  1271. + cmd.o: arg.h
  1272. + cmd.o: array.h
  1273. + cmd.o: cmd.c
  1274. + cmd.o: cmd.h
  1275. + cmd.o: config.h
  1276. + cmd.o: form.h
  1277. + cmd.o: handy.h
  1278. + cmd.o: hash.h
  1279. + cmd.o: perl.h
  1280. + cmd.o: regexp.h
  1281. + cmd.o: spat.h
  1282. + cmd.o: stab.h
  1283. + cmd.o: str.h
  1284. + cmd.o: util.h
  1285. + cons.o: EXTERN.h
  1286. + cons.o: arg.h
  1287. + cons.o: array.h
  1288. + cons.o: cmd.h
  1289. + cons.o: config.h
  1290. + cons.o: cons.c
  1291. + cons.o: form.h
  1292. + cons.o: handy.h
  1293. + cons.o: hash.h
  1294. + cons.o: perl.h
  1295. + cons.o: perly.h
  1296. + cons.o: regexp.h
  1297. + cons.o: spat.h
  1298. + cons.o: stab.h
  1299. + cons.o: str.h
  1300. + cons.o: util.h
  1301. + consarg.o: EXTERN.h
  1302. + consarg.o: arg.h
  1303. + consarg.o: array.h
  1304. + consarg.o: cmd.h
  1305. + consarg.o: config.h
  1306. + consarg.o: consarg.c
  1307. + consarg.o: form.h
  1308. + consarg.o: handy.h
  1309. + consarg.o: hash.h
  1310. + consarg.o: perl.h
  1311. + consarg.o: regexp.h
  1312. + consarg.o: spat.h
  1313. + consarg.o: stab.h
  1314. + consarg.o: str.h
  1315. + consarg.o: util.h
  1316. + doarg.o: EXTERN.h
  1317. + doarg.o: arg.h
  1318. + doarg.o: array.h
  1319. + doarg.o: cmd.h
  1320. + doarg.o: config.h
  1321. + doarg.o: doarg.c
  1322. + doarg.o: form.h
  1323. + doarg.o: handy.h
  1324. + doarg.o: hash.h
  1325. + doarg.o: perl.h
  1326. + doarg.o: regexp.h
  1327. + doarg.o: spat.h
  1328. + doarg.o: stab.h
  1329. + doarg.o: str.h
  1330. + doarg.o: util.h
  1331. + doio.o: EXTERN.h
  1332. + doio.o: arg.h
  1333. + doio.o: array.h
  1334. + doio.o: cmd.h
  1335. + doio.o: config.h
  1336. + doio.o: doio.c
  1337. + doio.o: form.h
  1338. + doio.o: handy.h
  1339. + doio.o: hash.h
  1340. + doio.o: perl.h
  1341. + doio.o: regexp.h
  1342. + doio.o: spat.h
  1343. + doio.o: stab.h
  1344. + doio.o: str.h
  1345. + doio.o: util.h
  1346. + dolist.o: EXTERN.h
  1347. + dolist.o: arg.h
  1348. + dolist.o: array.h
  1349. + dolist.o: cmd.h
  1350. + dolist.o: config.h
  1351. + dolist.o: dolist.c
  1352. + dolist.o: form.h
  1353. + dolist.o: handy.h
  1354. + dolist.o: hash.h
  1355. + dolist.o: perl.h
  1356. + dolist.o: regexp.h
  1357. + dolist.o: spat.h
  1358. + dolist.o: stab.h
  1359. + dolist.o: str.h
  1360. + dolist.o: util.h
  1361. + dump.o: EXTERN.h
  1362. + dump.o: arg.h
  1363. + dump.o: array.h
  1364. + dump.o: cmd.h
  1365. + dump.o: config.h
  1366. + dump.o: dump.c
  1367. + dump.o: form.h
  1368. + dump.o: handy.h
  1369. + dump.o: hash.h
  1370. + dump.o: perl.h
  1371. + dump.o: regexp.h
  1372. + dump.o: spat.h
  1373. + dump.o: stab.h
  1374. + dump.o: str.h
  1375. + dump.o: util.h
  1376. + eval.o: EXTERN.h
  1377. + eval.o: arg.h
  1378. + eval.o: array.h
  1379. + eval.o: cmd.h
  1380. + eval.o: config.h
  1381. + eval.o: eval.c
  1382. + eval.o: form.h
  1383. + eval.o: handy.h
  1384. + eval.o: hash.h
  1385. + eval.o: perl.h
  1386. + eval.o: regexp.h
  1387. + eval.o: spat.h
  1388. + eval.o: stab.h
  1389. + eval.o: str.h
  1390. + eval.o: util.h
  1391. + form.o: EXTERN.h
  1392. + form.o: arg.h
  1393. + form.o: array.h
  1394. + form.o: cmd.h
  1395. + form.o: config.h
  1396. + form.o: form.c
  1397. + form.o: form.h
  1398. + form.o: handy.h
  1399. + form.o: hash.h
  1400. + form.o: perl.h
  1401. + form.o: regexp.h
  1402. + form.o: spat.h
  1403. + form.o: stab.h
  1404. + form.o: str.h
  1405. + form.o: util.h
  1406. + hash.o: EXTERN.h
  1407. + hash.o: arg.h
  1408. + hash.o: array.h
  1409. + hash.o: cmd.h
  1410. + hash.o: config.h
  1411. + hash.o: form.h
  1412. + hash.o: handy.h
  1413. + hash.o: hash.c
  1414. + hash.o: hash.h
  1415. + hash.o: perl.h
  1416. + hash.o: regexp.h
  1417. + hash.o: spat.h
  1418. + hash.o: stab.h
  1419. + hash.o: str.h
  1420. + hash.o: util.h
  1421. + perl.o: EXTERN.h
  1422. + perl.o: arg.h
  1423. + perl.o: array.h
  1424. + perl.o: cmd.h
  1425. + perl.o: config.h
  1426. + perl.o: form.h
  1427. + perl.o: handy.h
  1428. + perl.o: hash.h
  1429. + perl.o: patchlevel.h
  1430. + perl.o: perl.c
  1431. + perl.o: perl.h
  1432. + perl.o: perly.h
  1433. + perl.o: regexp.h
  1434. + perl.o: spat.h
  1435. + perl.o: stab.h
  1436. + perl.o: str.h
  1437. + perl.o: util.h
  1438. + regcomp.o: EXTERN.h
  1439. + regcomp.o: INTERN.h
  1440. + regcomp.o: arg.h
  1441. + regcomp.o: array.h
  1442. + regcomp.o: cmd.h
  1443. + regcomp.o: config.h
  1444. + regcomp.o: form.h
  1445. + regcomp.o: handy.h
  1446. + regcomp.o: hash.h
  1447. + regcomp.o: perl.h
  1448. + regcomp.o: regcomp.c
  1449. + regcomp.o: regcomp.h
  1450. + regcomp.o: regexp.h
  1451. + regcomp.o: spat.h
  1452. + regcomp.o: stab.h
  1453. + regcomp.o: str.h
  1454. + regcomp.o: util.h
  1455. + regexec.o: EXTERN.h
  1456. + regexec.o: arg.h
  1457. + regexec.o: array.h
  1458. + regexec.o: cmd.h
  1459. + regexec.o: config.h
  1460. + regexec.o: form.h
  1461. + regexec.o: handy.h
  1462. + regexec.o: hash.h
  1463. + regexec.o: perl.h
  1464. + regexec.o: regcomp.h
  1465. + regexec.o: regexec.c
  1466. + regexec.o: regexp.h
  1467. + regexec.o: spat.h
  1468. + regexec.o: stab.h
  1469. + regexec.o: str.h
  1470. + regexec.o: util.h
  1471. + stab.o: EXTERN.h
  1472. + stab.o: arg.h
  1473. + stab.o: array.h
  1474. + stab.o: cmd.h
  1475. + stab.o: config.h
  1476. + stab.o: form.h
  1477. + stab.o: handy.h
  1478. + stab.o: hash.h
  1479. + stab.o: perl.h
  1480. + stab.o: regexp.h
  1481. + stab.o: spat.h
  1482. + stab.o: stab.c
  1483. + stab.o: stab.h
  1484. + stab.o: str.h
  1485. + stab.o: util.h
  1486. + str.o: EXTERN.h
  1487. + str.o: arg.h
  1488. + str.o: array.h
  1489. + str.o: cmd.h
  1490. + str.o: config.h
  1491. + str.o: form.h
  1492. + str.o: handy.h
  1493. + str.o: hash.h
  1494. + str.o: perl.h
  1495. + str.o: perly.h
  1496. + str.o: regexp.h
  1497. + str.o: spat.h
  1498. + str.o: stab.h
  1499. + str.o: str.c
  1500. + str.o: str.h
  1501. + str.o: util.h
  1502. + toke.o: EXTERN.h
  1503. + toke.o: arg.h
  1504. + toke.o: array.h
  1505. + toke.o: cmd.h
  1506. + toke.o: config.h
  1507. + toke.o: form.h
  1508. + toke.o: handy.h
  1509. + toke.o: hash.h
  1510. + toke.o: perl.h
  1511. + toke.o: perly.h
  1512. + toke.o: regexp.h
  1513. + toke.o: spat.h
  1514. + toke.o: stab.h
  1515. + toke.o: str.h
  1516. + toke.o: toke.c
  1517. + toke.o: util.h
  1518. + util.o: EXTERN.h
  1519. + util.o: arg.h
  1520. + util.o: array.h
  1521. + util.o: cmd.h
  1522. + util.o: config.h
  1523. + util.o: form.h
  1524. + util.o: handy.h
  1525. + util.o: hash.h
  1526. + util.o: perl.h
  1527. + util.o: regexp.h
  1528. + util.o: spat.h
  1529. + util.o: stab.h
  1530. + util.o: str.h
  1531. + util.o: util.c
  1532. + util.o: util.h
  1533. + atarist.o: EXTERN.h
  1534. + atarist.o: arg.h
  1535. + atarist.o: array.h
  1536. + atarist.o: cmd.h
  1537. + atarist.o: config.h
  1538. + atarist.o: form.h
  1539. + atarist.o: handy.h
  1540. + atarist.o: hash.h
  1541. + atarist.o: perl.h
  1542. + atarist.o: regexp.h
  1543. + atarist.o: spat.h
  1544. + atarist.o: stab.h
  1545. + atarist.o: str.h
  1546. + atarist.o: atarist.c
  1547. + atarist.o: util.h
  1548. + malloc.o: EXTERN.h
  1549. + malloc.o: arg.h
  1550. + malloc.o: array.h
  1551. + malloc.o: cmd.h
  1552. + malloc.o: config.h
  1553. + malloc.o: form.h
  1554. + malloc.o: handy.h
  1555. + malloc.o: hash.h
  1556. + malloc.o: perl.h
  1557. + malloc.o: regexp.h
  1558. + malloc.o: spat.h
  1559. + malloc.o: stab.h
  1560. + malloc.o: str.h
  1561. + malloc.o: malloc.c
  1562. + malloc.o: util.h
  1563.  
  1564. Index: atarist/makefile.st
  1565. *** atarist/makefile.st.old    Mon Jun  8 17:35:18 1992
  1566. --- atarist/makefile.st    Mon Jun  8 17:35:19 1992
  1567. ***************
  1568. *** 0 ****
  1569. --- 1,462 ----
  1570. + # : Makefile.SH,v 9820Revision: 4.0.1.2 9820Date: 91/06/07 10:14:43 $
  1571. + #
  1572. + # $Log:    makefile.st,v $
  1573. + # Revision 4.0.1.1  92/06/08  11:50:13  lwall
  1574. + # Initial revision
  1575. + # 
  1576. + # Revision 4.0.1.2  91/06/07  10:14:43  lwall
  1577. + # patch4: cflags now emits entire cc command except for the filename
  1578. + # patch4: alternate make programs are now semi-supported
  1579. + # patch4: uperl.o no longer tries to link in libraries prematurely
  1580. + # patch4: installperl now installs x2p stuff too
  1581. + # 
  1582. + # Revision 4.0.1.1  91/04/11  17:30:39  lwall
  1583. + # patch1: C flags are now settable on a per-file basis
  1584. + # 
  1585. + # Revision 4.0  91/03/20  00:58:54  lwall
  1586. + # 4.0 baseline.
  1587. + # 
  1588. + # 
  1589. + CC = cgcc
  1590. + YACC = bison -y
  1591. + LDFLAGS = 
  1592. + CLDFLAGS = 
  1593. + SMALL = 
  1594. + LARGE =  
  1595. + mallocsrc = 
  1596. + mallocobj = 
  1597. + SLN = ln -s
  1598. + libs = -lgdbm -lpml 
  1599. + public = perl.ttp
  1600. + # To use an alternate make, set  in config.sh.
  1601. + MAKE = make
  1602. + CCCMD = $(CC) -O2 -fomit-frame-pointer -fstrength-reduce -c
  1603. + private = 
  1604. + scripts = 
  1605. + manpages = perl.man h2ph.man
  1606. + util = echo.ttp perlglob.ttp
  1607. + sh = Makefile.SH makedepend.SH h2ph.SH
  1608. + h1 = EXTERN.h INTERN.h arg.h array.h cmd.h config.h form.h handy.h
  1609. + h2 = hash.h perl.h regcomp.h regexp.h spat.h stab.h str.h util.h
  1610. + h = $(h1) $(h2)
  1611. + c1 = array.c cmd.c cons.c consarg.c doarg.c doio.c dolist.c dump.c
  1612. + c2 = eval.c form.c hash.c $(mallocsrc) perl.c regcomp.c regexec.c
  1613. + c3 = stab.c str.c toke.c util.c atarist.c usersub.c
  1614. + c = $(c1) $(c2) $(c3)
  1615. + obj1 = array.o cmd.o cons.o consarg.o doarg.o doio.o dolist.o dump.o
  1616. + obj2 = eval.o form.o hash.o $(mallocobj) perl.o regcomp.o regexec.o
  1617. + obj3 = stab.o str.o toke.o util.o atarist.o
  1618. + obj = $(obj1) $(obj2) $(obj3)
  1619. + lintflags = -hbvxac
  1620. + # grrr
  1621. + SHELL = /bin/sh
  1622. + .c.o:
  1623. +     $(CCCMD) $*.c
  1624. + all: $(public)  $(util)
  1625. + # This is the standard version that contains no "taint" checks and is
  1626. + # used for all scripts that aren't set-id or running under something set-id.
  1627. + # The $& notation is tells Sequent machines that it can do a parallel make,
  1628. + # and is harmless otherwise.
  1629. + perl.ttp: perly.o $(obj) usersub.o
  1630. +     $(CC) $(LARGE) $(CLDFLAGS) $(obj) perly.o usersub.o $(libs) -o perl.ttp -v -s
  1631. + echo.ttp: wildmat.o echo.c
  1632. +     $(CC) -O -mshort -fomit-frame-pointer -o echo.ttp \
  1633. +     echo.c wildmat.o -liio16 -s
  1634. + perlglob.ttp: wildmat.o perlglob.c
  1635. +     $(CC) -O -mshort -fomit-frame-pointer -o perlglob.ttp \
  1636. +     perlglob.c wildmat.o -liio16 -s
  1637. + # we cant do a uperl.o, so we do our best.
  1638. + #
  1639. + uperl.a: perly.o $(obj)
  1640. +     car rs uperl.a perly.o $(obj)
  1641. + wildmat.o: wildmat.c
  1642. +     $(CC) -O -mshort -fomit-frame-pointer -c wildmat.c
  1643. + perly.h: perly.c
  1644. +     @ echo Dummy dependency for dumb parallel make
  1645. +     touch perly.h
  1646. + perly.c: perly.y perly.fixer
  1647. +     @ echo 'Expect either' 29 shift/reduce and 59 reduce/reduce conflicts...
  1648. +     @ echo '           or' 27 shift/reduce and 61 reduce/reduce conflicts...
  1649. +     $(YACC) -d perly.y
  1650. +     sh ./perly.fixer y.tab.c perly.c
  1651. +     mv y.tab.h perly.h
  1652. +     echo 'extern YYSTYPE yylval;' >>perly.h
  1653. + perly.o: perly.c perly.h $(h)
  1654. +     $(CCCMD) perly.c
  1655. + clean:
  1656. +     rm -f *.o 
  1657. + realclean: clean
  1658. +     rm -f *.ttp report core
  1659. +     rm -f perly.c perly.h 
  1660. + # The following lint has practically everything turned on.  Unfortunately,
  1661. + # you have to wade through a lot of mumbo jumbo that can't be suppressed.
  1662. + # If the source file has a /*NOSTRICT*/ somewhere, ignore the lint message
  1663. + # for that spot.
  1664. + lint: perly.c $(c)
  1665. +     lint $(lintflags) $(defs) perly.c $(c) > perl.fuzz
  1666. + depend: makedepend
  1667. +     - test -f perly.h || cp /dev/null perly.h
  1668. +     ./makedepend
  1669. +     - test -s perly.h || /bin/rm -f perly.h
  1670. + test: perl
  1671. +     - cd t && chmod +x TEST */*.t
  1672. +     - cd t && (rm -f perl; $(SLN) ../perl .) && ./perl TEST </dev/tty
  1673. + clist:
  1674. +     echo $(c) | tr ' ' '\012' >.clist
  1675. + hlist:
  1676. +     echo $(h) | tr ' ' '\012' >.hlist
  1677. + shlist:
  1678. +     echo $(sh) | tr ' ' '\012' >.shlist
  1679. + # AUTOMATICALLY GENERATED MAKE DEPENDENCIES--PUT NOTHING BELOW THIS LINE
  1680. + # If this runs make out of memory, delete /usr/include lines.
  1681. + array.o: EXTERN.h
  1682. + array.o: arg.h
  1683. + array.o: array.c
  1684. + array.o: array.h
  1685. + array.o: cmd.h
  1686. + array.o: config.h
  1687. + array.o: form.h
  1688. + array.o: handy.h
  1689. + array.o: hash.h
  1690. + array.o: perl.h
  1691. + array.o: regexp.h
  1692. + array.o: spat.h
  1693. + array.o: stab.h
  1694. + array.o: str.h
  1695. + array.o: util.h
  1696. + cmd.o: EXTERN.h
  1697. + cmd.o: arg.h
  1698. + cmd.o: array.h
  1699. + cmd.o: cmd.c
  1700. + cmd.o: cmd.h
  1701. + cmd.o: config.h
  1702. + cmd.o: form.h
  1703. + cmd.o: handy.h
  1704. + cmd.o: hash.h
  1705. + cmd.o: perl.h
  1706. + cmd.o: regexp.h
  1707. + cmd.o: spat.h
  1708. + cmd.o: stab.h
  1709. + cmd.o: str.h
  1710. + cmd.o: util.h
  1711. + cons.o: EXTERN.h
  1712. + cons.o: arg.h
  1713. + cons.o: array.h
  1714. + cons.o: cmd.h
  1715. + cons.o: config.h
  1716. + cons.o: cons.c
  1717. + cons.o: form.h
  1718. + cons.o: handy.h
  1719. + cons.o: hash.h
  1720. + cons.o: perl.h
  1721. + cons.o: perly.h
  1722. + cons.o: regexp.h
  1723. + cons.o: spat.h
  1724. + cons.o: stab.h
  1725. + cons.o: str.h
  1726. + cons.o: util.h
  1727. + consarg.o: EXTERN.h
  1728. + consarg.o: arg.h
  1729. + consarg.o: array.h
  1730. + consarg.o: cmd.h
  1731. + consarg.o: config.h
  1732. + consarg.o: consarg.c
  1733. + consarg.o: form.h
  1734. + consarg.o: handy.h
  1735. + consarg.o: hash.h
  1736. + consarg.o: perl.h
  1737. + consarg.o: regexp.h
  1738. + consarg.o: spat.h
  1739. + consarg.o: stab.h
  1740. + consarg.o: str.h
  1741. + consarg.o: util.h
  1742. + doarg.o: EXTERN.h
  1743. + doarg.o: arg.h
  1744. + doarg.o: array.h
  1745. + doarg.o: cmd.h
  1746. + doarg.o: config.h
  1747. + doarg.o: doarg.c
  1748. + doarg.o: form.h
  1749. + doarg.o: handy.h
  1750. + doarg.o: hash.h
  1751. + doarg.o: perl.h
  1752. + doarg.o: regexp.h
  1753. + doarg.o: spat.h
  1754. + doarg.o: stab.h
  1755. + doarg.o: str.h
  1756. + doarg.o: util.h
  1757. + doio.o: EXTERN.h
  1758. + doio.o: arg.h
  1759. + doio.o: array.h
  1760. + doio.o: cmd.h
  1761. + doio.o: config.h
  1762. + doio.o: doio.c
  1763. + doio.o: form.h
  1764. + doio.o: handy.h
  1765. + doio.o: hash.h
  1766. + doio.o: perl.h
  1767. + doio.o: regexp.h
  1768. + doio.o: spat.h
  1769. + doio.o: stab.h
  1770. + doio.o: str.h
  1771. + doio.o: util.h
  1772. + dolist.o: EXTERN.h
  1773. + dolist.o: arg.h
  1774. + dolist.o: array.h
  1775. + dolist.o: cmd.h
  1776. + dolist.o: config.h
  1777. + dolist.o: dolist.c
  1778. + dolist.o: form.h
  1779. + dolist.o: handy.h
  1780. + dolist.o: hash.h
  1781. + dolist.o: perl.h
  1782. + dolist.o: regexp.h
  1783. + dolist.o: spat.h
  1784. + dolist.o: stab.h
  1785. + dolist.o: str.h
  1786. + dolist.o: util.h
  1787. + dump.o: EXTERN.h
  1788. + dump.o: arg.h
  1789. + dump.o: array.h
  1790. + dump.o: cmd.h
  1791. + dump.o: config.h
  1792. + dump.o: dump.c
  1793. + dump.o: form.h
  1794. + dump.o: handy.h
  1795. + dump.o: hash.h
  1796. + dump.o: perl.h
  1797. + dump.o: regexp.h
  1798. + dump.o: spat.h
  1799. + dump.o: stab.h
  1800. + dump.o: str.h
  1801. + dump.o: util.h
  1802. + eval.o: EXTERN.h
  1803. + eval.o: arg.h
  1804. + eval.o: array.h
  1805. + eval.o: cmd.h
  1806. + eval.o: config.h
  1807. + eval.o: eval.c
  1808. + eval.o: form.h
  1809. + eval.o: handy.h
  1810. + eval.o: hash.h
  1811. + eval.o: perl.h
  1812. + eval.o: regexp.h
  1813. + eval.o: spat.h
  1814. + eval.o: stab.h
  1815. + eval.o: str.h
  1816. + eval.o: util.h
  1817. + form.o: EXTERN.h
  1818. + form.o: arg.h
  1819. + form.o: array.h
  1820. + form.o: cmd.h
  1821. + form.o: config.h
  1822. + form.o: form.c
  1823. + form.o: form.h
  1824. + form.o: handy.h
  1825. + form.o: hash.h
  1826. + form.o: perl.h
  1827. + form.o: regexp.h
  1828. + form.o: spat.h
  1829. + form.o: stab.h
  1830. + form.o: str.h
  1831. + form.o: util.h
  1832. + hash.o: EXTERN.h
  1833. + hash.o: arg.h
  1834. + hash.o: array.h
  1835. + hash.o: cmd.h
  1836. + hash.o: config.h
  1837. + hash.o: form.h
  1838. + hash.o: handy.h
  1839. + hash.o: hash.c
  1840. + hash.o: hash.h
  1841. + hash.o: perl.h
  1842. + hash.o: regexp.h
  1843. + hash.o: spat.h
  1844. + hash.o: stab.h
  1845. + hash.o: str.h
  1846. + hash.o: util.h
  1847. + perl.o: EXTERN.h
  1848. + perl.o: arg.h
  1849. + perl.o: array.h
  1850. + perl.o: cmd.h
  1851. + perl.o: config.h
  1852. + perl.o: form.h
  1853. + perl.o: handy.h
  1854. + perl.o: hash.h
  1855. + perl.o: patchlevel.h
  1856. + perl.o: perl.c
  1857. + perl.o: perl.h
  1858. + perl.o: perly.h
  1859. + perl.o: regexp.h
  1860. + perl.o: spat.h
  1861. + perl.o: stab.h
  1862. + perl.o: str.h
  1863. + perl.o: util.h
  1864. + regcomp.o: EXTERN.h
  1865. + regcomp.o: INTERN.h
  1866. + regcomp.o: arg.h
  1867. + regcomp.o: array.h
  1868. + regcomp.o: cmd.h
  1869. + regcomp.o: config.h
  1870. + regcomp.o: form.h
  1871. + regcomp.o: handy.h
  1872. + regcomp.o: hash.h
  1873. + regcomp.o: perl.h
  1874. + regcomp.o: regcomp.c
  1875. + regcomp.o: regcomp.h
  1876. + regcomp.o: regexp.h
  1877. + regcomp.o: spat.h
  1878. + regcomp.o: stab.h
  1879. + regcomp.o: str.h
  1880. + regcomp.o: util.h
  1881. + regexec.o: EXTERN.h
  1882. + regexec.o: arg.h
  1883. + regexec.o: array.h
  1884. + regexec.o: cmd.h
  1885. + regexec.o: config.h
  1886. + regexec.o: form.h
  1887. + regexec.o: handy.h
  1888. + regexec.o: hash.h
  1889. + regexec.o: perl.h
  1890. + regexec.o: regcomp.h
  1891. + regexec.o: regexec.c
  1892. + regexec.o: regexp.h
  1893. + regexec.o: spat.h
  1894. + regexec.o: stab.h
  1895. + regexec.o: str.h
  1896. + regexec.o: util.h
  1897. + stab.o: EXTERN.h
  1898. + stab.o: arg.h
  1899. + stab.o: array.h
  1900. + stab.o: cmd.h
  1901. + stab.o: config.h
  1902. + stab.o: form.h
  1903. + stab.o: handy.h
  1904. + stab.o: hash.h
  1905. + stab.o: perl.h
  1906. + stab.o: regexp.h
  1907. + stab.o: spat.h
  1908. + stab.o: stab.c
  1909. + stab.o: stab.h
  1910. + stab.o: str.h
  1911. + stab.o: util.h
  1912. + str.o: EXTERN.h
  1913. + str.o: arg.h
  1914. + str.o: array.h
  1915. + str.o: cmd.h
  1916. + str.o: config.h
  1917. + str.o: form.h
  1918. + str.o: handy.h
  1919. + str.o: hash.h
  1920. + str.o: perl.h
  1921. + str.o: perly.h
  1922. + str.o: regexp.h
  1923. + str.o: spat.h
  1924. + str.o: stab.h
  1925. + str.o: str.c
  1926. + str.o: str.h
  1927. + str.o: util.h
  1928. + toke.o: EXTERN.h
  1929. + toke.o: arg.h
  1930. + toke.o: array.h
  1931. + toke.o: cmd.h
  1932. + toke.o: config.h
  1933. + toke.o: form.h
  1934. + toke.o: handy.h
  1935. + toke.o: hash.h
  1936. + toke.o: perl.h
  1937. + toke.o: perly.h
  1938. + toke.o: regexp.h
  1939. + toke.o: spat.h
  1940. + toke.o: stab.h
  1941. + toke.o: str.h
  1942. + toke.o: toke.c
  1943. + toke.o: util.h
  1944. + util.o: EXTERN.h
  1945. + util.o: arg.h
  1946. + util.o: array.h
  1947. + util.o: cmd.h
  1948. + util.o: config.h
  1949. + util.o: form.h
  1950. + util.o: handy.h
  1951. + util.o: hash.h
  1952. + util.o: perl.h
  1953. + util.o: regexp.h
  1954. + util.o: spat.h
  1955. + util.o: stab.h
  1956. + util.o: str.h
  1957. + util.o: util.c
  1958. + util.o: util.h
  1959. + atarist.o: EXTERN.h
  1960. + atarist.o: arg.h
  1961. + atarist.o: array.h
  1962. + atarist.o: cmd.h
  1963. + atarist.o: config.h
  1964. + atarist.o: form.h
  1965. + atarist.o: handy.h
  1966. + atarist.o: hash.h
  1967. + atarist.o: perl.h
  1968. + atarist.o: regexp.h
  1969. + atarist.o: spat.h
  1970. + atarist.o: stab.h
  1971. + atarist.o: str.h
  1972. + atarist.o: atarist.c
  1973. + atarist.o: util.h
  1974. + malloc.o: EXTERN.h
  1975. + malloc.o: arg.h
  1976. + malloc.o: array.h
  1977. + malloc.o: cmd.h
  1978. + malloc.o: config.h
  1979. + malloc.o: form.h
  1980. + malloc.o: handy.h
  1981. + malloc.o: hash.h
  1982. + malloc.o: perl.h
  1983. + malloc.o: regexp.h
  1984. + malloc.o: spat.h
  1985. + malloc.o: stab.h
  1986. + malloc.o: str.h
  1987. + malloc.o: malloc.c
  1988. + malloc.o: util.h
  1989.  
  1990. Index: os2/mktemp.c
  1991. *** os2/mktemp.c.old    Mon Jun  8 17:49:56 1992
  1992. --- os2/mktemp.c    Mon Jun  8 17:49:57 1992
  1993. ***************
  1994. *** 1,28 ****
  1995. ! /* MKTEMP.C using TMP environment variable */
  1996. ! #include <stdio.h>
  1997. ! #include <stdlib.h>
  1998. ! #include <string.h>
  1999. ! #include <io.h>
  2000. ! void Mktemp(char *file)
  2001. ! {
  2002. !   char fname[32], *tmp;
  2003. !   tmp = getenv("TMP");
  2004. !   if ( tmp != NULL )
  2005. !   {
  2006. !     strcpy(fname, file);
  2007. !     strcpy(file, tmp);
  2008. !     if ( file[strlen(file) - 1] != '\\' )
  2009. !       strcat(file, "\\");
  2010. !     strcat(file, fname);
  2011. !   }
  2012. !   mktemp(file);
  2013. ! }
  2014. ! /* End of MKTEMP.C */
  2015. --- 1 ----
  2016. ! (deprecated)
  2017.  
  2018. Index: hints/ncr_tower.sh
  2019. *** hints/ncr_tower.sh.old    Mon Jun  8 17:48:06 1992
  2020. --- hints/ncr_tower.sh    Mon Jun  8 17:48:06 1992
  2021. ***************
  2022. *** 1,2 ****
  2023. --- 1,8 ----
  2024. + optimize='-O0'
  2025.   ccflags="$ccflags -W2,-Sl,2000"
  2026. + eval_cflags='large="-W0,-XL"'
  2027. + teval_cflags=$eval_cflags
  2028.   d_mkdir=$undef
  2029. + usemymalloc='y'
  2030. + mallocsrc='malloc.c'
  2031. + mallocobj='malloc.o'
  2032.  
  2033. Index: hints/next.sh
  2034. *** hints/next.sh.old    Mon Jun  8 17:48:08 1992
  2035. --- hints/next.sh    Mon Jun  8 17:48:09 1992
  2036. ***************
  2037. *** 2,4 ****
  2038. --- 2,5 ----
  2039.   nativegcc='define'
  2040.   groupstype="int"
  2041.   usemymalloc="n"
  2042. + libswanted='dbm sys_s'
  2043.  
  2044. Index: atarist/test/osexample.pl
  2045. *** atarist/test/osexample.pl.old    Mon Jun  8 17:45:10 1992
  2046. --- atarist/test/osexample.pl    Mon Jun  8 17:45:11 1992
  2047. ***************
  2048. *** 0 ****
  2049. --- 1,5 ----
  2050. + require 'osbind.pl';
  2051. +  &Cconws("Hello World\r\n");
  2052. +  $str = "This is a string being printed by Fwrite Gemdos trap\r\n";
  2053. +  &Fwrite(1, length($str), $str);
  2054.  
  2055. *** End of Patch 27 ***
  2056. exit 0 # Just in case...
  2057.