home *** CD-ROM | disk | FTP | other *** search
/ GEMini Atari / GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso / files / language / perl_419 / perl.dif < prev    next >
Encoding:
Text File  |  1993-10-23  |  18.8 KB  |  803 lines

  1. *** ../arg.h    Mon Nov 11 10:44:40 1991
  2. --- arg.h    Fri Nov 15 14:50:56 1991
  3. ***************
  4. *** 286,292 ****
  5. --- 286,296 ----
  6.   #define O_REWINDDIR 263
  7.   #define O_CLOSEDIR 264
  8.   #define O_SYSCALL 265
  9. + #ifdef atarist
  10. + #define PERL_O_PIPE 266
  11. + #else
  12.   #define O_PIPE 266
  13. + #endif
  14.   #define O_TRY 267
  15.   #define O_EVALONCE 268
  16.   #define MAXO 269
  17. *** ../doarg.c    Fri Nov 15 10:13:32 1991
  18. --- doarg.c    Fri Nov 15 14:50:57 1991
  19. ***************
  20. *** 1666,1672 ****
  21. --- 1666,1676 ----
  22.       register STR **st = stack->ary_array;
  23.       register int sp = arglast[1];
  24.       register int items = arglast[2] - sp;
  25. + #ifdef atarist
  26. +     unsigned long arg[14]; /* yes, we really need that many ! */
  27. + #else
  28.       unsigned long arg[8];
  29. + #endif
  30.       register int i = 0;
  31.       int retval = -1;
  32.   
  33. ***************
  34. *** 1723,1728 ****
  35. --- 1727,1758 ----
  36.       retval = syscall(arg[0],arg[1],arg[2],arg[3],arg[4],arg[5],arg[6],
  37.         arg[7]);
  38.       break;
  39. + #ifdef atarist
  40. +     case 9:
  41. +     retval = syscall(arg[0],arg[1],arg[2],arg[3],arg[4],arg[5],arg[6],
  42. +       arg[7], arg[8]);
  43. +     break;
  44. +     case 10:
  45. +     retval = syscall(arg[0],arg[1],arg[2],arg[3],arg[4],arg[5],arg[6],
  46. +       arg[7], arg[8], arg[9]);
  47. +     break;
  48. +     case 11:
  49. +     retval = syscall(arg[0],arg[1],arg[2],arg[3],arg[4],arg[5],arg[6],
  50. +       arg[7], arg[8], arg[9], arg[10]);
  51. +     break;
  52. +     case 12:
  53. +     retval = syscall(arg[0],arg[1],arg[2],arg[3],arg[4],arg[5],arg[6],
  54. +       arg[7], arg[8], arg[9], arg[10], arg[11]);
  55. +     break;
  56. +     case 13:
  57. +     retval = syscall(arg[0],arg[1],arg[2],arg[3],arg[4],arg[5],arg[6],
  58. +       arg[7], arg[8], arg[9], arg[10], arg[11], arg[12]);
  59. +     break;
  60. +     case 14:
  61. +     retval = syscall(arg[0],arg[1],arg[2],arg[3],arg[4],arg[5],arg[6],
  62. +       arg[7], arg[8], arg[9], arg[10], arg[11], arg[12], arg[13]);
  63. +     break;
  64. + #endif /* atarist */
  65.       }
  66.       return retval;
  67.   #else
  68. *** ../doio.c    Mon Nov 11 10:38:04 1991
  69. --- doio.c    Fri Nov 15 14:50:58 1991
  70. ***************
  71. *** 100,105 ****
  72. --- 100,106 ----
  73.       FILE *saveofp = Nullfp;
  74.       char savetype = ' ';
  75.   
  76. +     mode[0] = mode[1] = mode[2] = '\0';
  77.       name = myname;
  78.       forkprocess = 1;        /* assume true if no fork */
  79.       while (len && isSPACE(name[len-1]))
  80. ***************
  81. *** 384,390 ****
  82.               }
  83.   #endif
  84.   #ifdef HAS_RENAME
  85. ! #ifndef MSDOS
  86.               if (rename(oldname,str->str_ptr) < 0) {
  87.               warn("Can't rename %s to %s: %s, skipping file",
  88.                 oldname, str->str_ptr, strerror(errno) );
  89. --- 385,391 ----
  90.               }
  91.   #endif
  92.   #ifdef HAS_RENAME
  93. ! #ifndef MSDOS_OR_ATARI
  94.               if (rename(oldname,str->str_ptr) < 0) {
  95.               warn("Can't rename %s to %s: %s, skipping file",
  96.                 oldname, str->str_ptr, strerror(errno) );
  97. ***************
  98. *** 411,417 ****
  99.   #endif
  100.           }
  101.           else {
  102. ! #ifndef MSDOS
  103.               if (UNLINK(oldname) < 0) {
  104.               warn("Can't rename %s to %s: %s, skipping file",
  105.                 oldname, str->str_ptr, strerror(errno) );
  106. --- 412,418 ----
  107.   #endif
  108.           }
  109.           else {
  110. ! #ifndef MSDOS_OR_ATARI
  111.               if (UNLINK(oldname) < 0) {
  112.               warn("Can't rename %s to %s: %s, skipping file",
  113.                 oldname, str->str_ptr, strerror(errno) );
  114. ***************
  115. *** 700,706 ****
  116.       }
  117.       else {
  118.       retval = (int)str_gnum(argstr);
  119. ! #ifdef MSDOS
  120.       s = (char*)(long)retval;        /* ouch */
  121.   #else
  122.       s = (char*)retval;        /* ouch */
  123. --- 701,707 ----
  124.       }
  125.       else {
  126.       retval = (int)str_gnum(argstr);
  127. ! #ifdef MSDOS_OR_ATARI
  128.       s = (char*)(long)retval;        /* ouch */
  129.   #else
  130.       s = (char*)retval;        /* ouch */
  131. ***************
  132. *** 711,717 ****
  133.       if (optype == O_IOCTL)
  134.       retval = ioctl(fileno(stio->ifp), func, s);
  135.       else
  136. ! #ifdef MSDOS
  137.       fatal("fcntl is not implemented");
  138.   #else
  139.   #ifdef HAS_FCNTL
  140. --- 712,718 ----
  141.       if (optype == O_IOCTL)
  142.       retval = ioctl(fileno(stio->ifp), func, s);
  143.       else
  144. ! #ifdef MSDOS_OR_ATARI
  145.       fatal("fcntl is not implemented");
  146.   #else
  147.   #ifdef HAS_FCNTL
  148. ***************
  149. *** 2469,2475 ****
  150.   int effective;
  151.   register struct stat *statbufp;
  152.   {
  153. ! #ifdef MSDOS
  154.       /* [Comments and code from Len Reed]
  155.        * MS-DOS "user" is similar to UNIX's "superuser," but can't write
  156.        * to write-protected files.  The execute permission bit is set
  157. --- 2470,2476 ----
  158.   int effective;
  159.   register struct stat *statbufp;
  160.   {
  161. ! #ifdef MSDOS_OR_ATARI
  162.       /* [Comments and code from Len Reed]
  163.        * MS-DOS "user" is similar to UNIX's "superuser," but can't write
  164.        * to write-protected files.  The execute permission bit is set
  165. ***************
  166. *** 2488,2493 ****
  167. --- 2489,2497 ----
  168.        *        Sun's PC-NFS.]
  169.        */
  170.   
  171. +      /* Atari stat() does pretty much the same thing. we set x_bit_set_in_stat
  172. +       * too so it will actually look into the files for magic numbers
  173. +       */
  174.        return (bit & statbufp->st_mode) ? TRUE : FALSE;
  175.   
  176.   #else /* ! MSDOS */
  177. *** ../eval.c    Mon Nov 11 10:38:05 1991
  178. --- eval.c    Fri Nov 15 14:51:00 1991
  179. ***************
  180. *** 390,396 ****
  181.           old_rschar = rschar;
  182.           old_rslen = rslen;
  183.           rslen = 1;
  184. ! #ifdef MSDOS
  185.           rschar = 0;
  186.   #else
  187.   #ifdef CSH
  188. --- 390,396 ----
  189.           old_rschar = rschar;
  190.           old_rslen = rslen;
  191.           rslen = 1;
  192. ! #ifdef MSDOS_OR_ATARI
  193.           rschar = 0;
  194.   #else
  195.   #ifdef CSH
  196. ***************
  197. *** 433,439 ****
  198.               (void) interp(str,stab_val(last_in_stab),sp);
  199.               st = stack->ary_array;
  200.               tmpstr = Str_new(55,0);
  201. ! #ifdef MSDOS
  202.               str_set(tmpstr, "perlglob ");
  203.               str_scat(tmpstr,str);
  204.               str_cat(tmpstr," |");
  205. --- 433,439 ----
  206.               (void) interp(str,stab_val(last_in_stab),sp);
  207.               st = stack->ary_array;
  208.               tmpstr = Str_new(55,0);
  209. ! #ifdef MSDOS_OR_ATARI
  210.               str_set(tmpstr, "perlglob ");
  211.               str_scat(tmpstr,str);
  212.               str_cat(tmpstr," |");
  213. ***************
  214. *** 2862,2869 ****
  215.           stab = stabent(str_get(st[1]),TRUE);
  216.       if (!stab || !(stio = stab_io(stab)) || !(fp = stio->ifp))
  217.           goto say_undef;
  218. ! #ifdef MSDOS
  219.       str_set(str, (setmode(fileno(fp), O_BINARY) != -1) ? Yes : No);
  220.   #else
  221.       str_set(str, Yes);
  222.   #endif
  223. --- 2862,2879 ----
  224.           stab = stabent(str_get(st[1]),TRUE);
  225.       if (!stab || !(stio = stab_io(stab)) || !(fp = stio->ifp))
  226.           goto say_undef;
  227. ! #ifdef MSDOS_OR_ATARI
  228. ! #ifdef atarist
  229. !     if(fflush(fp))
  230. !        str_set(str, No);
  231. !     else
  232. !     {
  233. !         fp->_flag |= _IOBIN;
  234. !         str_set(str, Yes);
  235. !     }
  236. ! #else
  237.       str_set(str, (setmode(fileno(fp), O_BINARY) != -1) ? Yes : No);
  238. + #endif
  239.   #else
  240.       str_set(str, Yes);
  241.   #endif
  242. ***************
  243. *** 2938,2944 ****
  244. --- 2948,2958 ----
  245.       case O_SYSCALL:
  246.       value = (double)do_syscall(arglast);
  247.       goto donumset;
  248. + #ifdef atarist
  249. +     case PERL_O_PIPE:
  250. + #else
  251.       case O_PIPE:
  252. + #endif
  253.   #ifdef HAS_PIPE
  254.       if ((arg[1].arg_type & A_MASK) == A_WORD)
  255.           stab = arg[1].arg_ptr.arg_stab;
  256. *** ../handy.h    Mon Nov 11 10:45:27 1991
  257. --- handy.h    Fri Nov 15 14:51:00 1991
  258. ***************
  259. *** 74,80 ****
  260. --- 74,84 ----
  261.   #define isLOWER(c) (isascii(c) && islower(c))
  262.   #endif
  263.   
  264. + #ifdef STANDARD_C
  265. + #define MEM_SIZE size_t
  266. + #else
  267.   #define MEM_SIZE unsigned int
  268. + #endif
  269.   
  270.   /* Line numbers are unsigned, 16 bits. */
  271.   typedef unsigned short line_t;
  272. *** ../malloc.c    Mon Nov 11 10:39:14 1991
  273. --- malloc.c    Fri Nov 15 14:51:00 1991
  274. ***************
  275. *** 120,130 ****
  276.   
  277.   MALLOCPTRTYPE *
  278.   malloc(nbytes)
  279. !     register unsigned nbytes;
  280.   {
  281.         register union overhead *p;
  282.         register int bucket = 0;
  283. !       register unsigned shiftr;
  284.   
  285.   #ifdef safemalloc
  286.   #ifdef DEBUGGING
  287. --- 120,130 ----
  288.   
  289.   MALLOCPTRTYPE *
  290.   malloc(nbytes)
  291. !     register unsigned long nbytes;
  292.   {
  293.         register union overhead *p;
  294.         register int bucket = 0;
  295. !       register unsigned long shiftr;
  296.   
  297.   #ifdef safemalloc
  298.   #ifdef DEBUGGING
  299. ***************
  300. *** 220,254 ****
  301.         register union overhead *op;
  302.         register int rnu;       /* 2^rnu bytes will be requested */
  303.         register int nblks;     /* become nblks blocks of the desired size */
  304. !     register int siz;
  305.   
  306.         if (nextf[bucket])
  307.             return;
  308.       /*
  309.        * Insure memory is allocated
  310.        * on a page boundary.  Should
  311.        * make getpageize call?
  312.        */
  313. !       op = (union overhead *)sbrk(0);
  314.   #ifndef I286
  315. !       if ((int)op & 0x3ff)
  316. !           (void)sbrk(1024 - ((int)op & 0x3ff));
  317.   #else
  318.       /* The sbrk(0) call on the I286 always returns the next segment */
  319.   #endif
  320.   
  321. ! #ifndef I286
  322.       /* take 2k unless the block is bigger than that */
  323.         rnu = (bucket <= 8) ? 11 : bucket + 3;
  324.   #else
  325.       /* take 16k unless the block is bigger than that 
  326. !        (80286s like large segments!)        */
  327.         rnu = (bucket <= 11) ? 14 : bucket + 3;
  328.   #endif
  329.         nblks = 1 << (rnu - (bucket + 3));  /* how many blocks to get */
  330.         if (rnu < bucket)
  331.           rnu = bucket;
  332. !     op = (union overhead *)sbrk(1 << rnu);
  333.       /* no more room! */
  334.         if ((int)op == -1)
  335.             return;
  336. --- 220,256 ----
  337.         register union overhead *op;
  338.         register int rnu;       /* 2^rnu bytes will be requested */
  339.         register int nblks;     /* become nblks blocks of the desired size */
  340. !     register long siz;
  341.   
  342.         if (nextf[bucket])
  343.             return;
  344. + #ifndef atarist /* on the atari we dont have to worry about this */
  345.       /*
  346.        * Insure memory is allocated
  347.        * on a page boundary.  Should
  348.        * make getpageize call?
  349.        */
  350. !       op = (union overhead *)sbrk(0L);
  351.   #ifndef I286
  352. !       if ((unsigned int)op & 0x3ff)
  353. !           (void)sbrk((long)(1024L - ((int)op & 0x3ff)));
  354.   #else
  355.       /* The sbrk(0) call on the I286 always returns the next segment */
  356.   #endif
  357. + #endif /* atarist */
  358.   
  359. ! #if !(defined(I286) || defined(atarist))
  360.       /* take 2k unless the block is bigger than that */
  361.         rnu = (bucket <= 8) ? 11 : bucket + 3;
  362.   #else
  363.       /* take 16k unless the block is bigger than that 
  364. !        (80286s like large segments!), probably good on the atari too */
  365.         rnu = (bucket <= 11) ? 14 : bucket + 3;
  366.   #endif
  367.         nblks = 1 << (rnu - (bucket + 3));  /* how many blocks to get */
  368.         if (rnu < bucket)
  369.           rnu = bucket;
  370. !     op = (union overhead *)sbrk(1L << rnu);
  371.       /* no more room! */
  372.         if ((int)op == -1)
  373.             return;
  374. ***************
  375. *** 280,286 ****
  376.   free(mp)
  377.       MALLOCPTRTYPE *mp;
  378.   {   
  379. !       register int size;
  380.       register union overhead *op;
  381.       char *cp = (char*)mp;
  382.   
  383. --- 282,288 ----
  384.   free(mp)
  385.       MALLOCPTRTYPE *mp;
  386.   {   
  387. !       register long size;
  388.       register union overhead *op;
  389.       char *cp = (char*)mp;
  390.   
  391. ***************
  392. *** 339,345 ****
  393.   MALLOCPTRTYPE *
  394.   realloc(mp, nbytes)
  395.       MALLOCPTRTYPE *mp; 
  396. !     unsigned nbytes;
  397.   {   
  398.         register u_int onb;
  399.       union overhead *op;
  400. --- 341,347 ----
  401.   MALLOCPTRTYPE *
  402.   realloc(mp, nbytes)
  403.       MALLOCPTRTYPE *mp; 
  404. !     unsigned long nbytes;
  405.   {   
  406.         register u_int onb;
  407.       union overhead *op;
  408. *** ../perl.c    Fri Nov 15 10:14:00 1991
  409. --- perl.c    Fri Nov 15 14:51:01 1991
  410. ***************
  411. *** 239,245 ****
  412.       scriptname = e_tmpname;
  413.       }
  414.   
  415. ! #ifdef MSDOS
  416.   #define PERLLIB_SEP ';'
  417.   #else
  418.   #define PERLLIB_SEP ':'
  419. --- 239,245 ----
  420.       scriptname = e_tmpname;
  421.       }
  422.   
  423. ! #ifdef MSDOS_OR_ATARI
  424.   #define PERLLIB_SEP ';'
  425.   #else
  426.   #define PERLLIB_SEP ':'
  427. ***************
  428. *** 296,314 ****
  429.   
  430.       bufend = s + strlen(s);
  431.       while (*s) {
  432. ! #ifndef MSDOS
  433.           s = cpytill(tokenbuf,s,bufend,':',&len);
  434.   #else
  435.           for (len = 0; *s && *s != ';'; tokenbuf[len++] = *s++);
  436.           tokenbuf[len] = '\0';
  437.   #endif
  438.           if (*s)
  439.           s++;
  440. ! #ifndef MSDOS
  441.           if (len && tokenbuf[len-1] != '/')
  442.   #else
  443.           if (len && tokenbuf[len-1] != '\\')
  444.   #endif
  445.           (void)strcat(tokenbuf+len,"/");
  446.           (void)strcat(tokenbuf+len,scriptname);
  447.   #ifdef DEBUGGING
  448. --- 296,323 ----
  449.   
  450.       bufend = s + strlen(s);
  451.       while (*s) {
  452. ! #ifndef MSDOS_OR_ATARI
  453.           s = cpytill(tokenbuf,s,bufend,':',&len);
  454.   #else
  455. + #ifdef atarist
  456. +         for (len = 0; *s && *s != ',' && *s != ';'; tokenbuf[len++] = *s++);
  457. +         tokenbuf[len] = '\0';
  458. + #else
  459.           for (len = 0; *s && *s != ';'; tokenbuf[len++] = *s++);
  460.           tokenbuf[len] = '\0';
  461.   #endif
  462. + #endif
  463.           if (*s)
  464.           s++;
  465. ! #ifndef MSDOS_OR_ATARI
  466.           if (len && tokenbuf[len-1] != '/')
  467.   #else
  468. + #ifdef atarist
  469. +         if (len && ((tokenbuf[len-1] != '\\') || (tokenbuf[len-1] != '/')))
  470. + #else
  471.           if (len && tokenbuf[len-1] != '\\')
  472.   #endif
  473. + #endif
  474.           (void)strcat(tokenbuf+len,"/");
  475.           (void)strcat(tokenbuf+len,scriptname);
  476.   #ifdef DEBUGGING
  477. ***************
  478. *** 361,367 ****
  479.    -e '/^#[     ]*endif/b' \
  480.    -e 's/^[     ]*#.*//' \
  481.    %s | %s -C %s %s",
  482. ! #ifdef MSDOS
  483.         "",
  484.   #else
  485.         "/bin/",
  486. --- 370,376 ----
  487.    -e '/^#[     ]*endif/b' \
  488.    -e 's/^[     ]*#.*//' \
  489.    %s | %s -C %s %s",
  490. ! #ifdef MSDOS_OR_ATARI
  491.         "",
  492.   #else
  493.         "/bin/",
  494. ***************
  495. *** 1305,1310 ****
  496. --- 1314,1322 ----
  497.           stdout);
  498.   #endif
  499.   #endif
  500. + #ifdef atarist
  501. +         fputs("atariST series port, ++jrb  bammi@cadence.com\n", stdout);
  502. + #endif
  503.       fputs("\n\
  504.   Perl may be copied only under the terms of either the Artistic License or the\n\
  505.   GNU General Public License, which may be found in the Perl 4.0 source kit.\n",stdout);
  506. ***************
  507. *** 1346,1352 ****
  508.       fprintf(stderr, "unexec of %s into %s failed!\n", perlpath, dumpname);
  509.       exit(status);
  510.   #else
  511. ! #ifdef MSDOS
  512.       abort();    /* nothing else to do */
  513.   #else /* ! MSDOS */
  514.   #   ifndef SIGABRT
  515. --- 1358,1364 ----
  516.       fprintf(stderr, "unexec of %s into %s failed!\n", perlpath, dumpname);
  517.       exit(status);
  518.   #else
  519. ! #ifdef MSDOS_OR_ATARI
  520.       abort();    /* nothing else to do */
  521.   #else /* ! MSDOS */
  522.   #   ifndef SIGABRT
  523. *** ../perl.h    Fri Nov 15 11:41:42 1991
  524. --- perl.h    Fri Nov 15 14:51:02 1991
  525. ***************
  526. *** 53,59 ****
  527.   char Error[1];
  528.   #endif
  529.   
  530. ! #ifdef MSDOS
  531.   /* This stuff now in the MS-DOS config.h file. */
  532.   #else /* !MSDOS */
  533.   
  534. --- 53,64 ----
  535.   char Error[1];
  536.   #endif
  537.   
  538. ! /* define this once if either system, instead of cluttering up the src */
  539. ! #if defined(MSDOS) || defined(atarist)
  540. ! #define MSDOS_OR_ATARI 1
  541. ! #endif
  542. ! #ifdef MSDOS_OR_ATARI
  543.   /* This stuff now in the MS-DOS config.h file. */
  544.   #else /* !MSDOS */
  545.   
  546. ***************
  547. *** 457,463 ****
  548. --- 462,472 ----
  549.   #   endif
  550.   #endif
  551.   
  552. + #if STANDARD_C
  553. + typedef size_t STRLEN;
  554. + #else
  555.   typedef unsigned int STRLEN;
  556. + #endif
  557.   
  558.   typedef struct arg ARG;
  559.   typedef struct cmd CMD;
  560. ***************
  561. *** 553,559 ****
  562.   
  563.   #define GROWSTR(pp,lp,len) if (*(lp) < (len)) growstr(pp,lp,len)
  564.   
  565. ! #ifndef MSDOS
  566.   #define STR_GROW(str,len) if ((str)->str_len < (len)) str_grow(str,len)
  567.   #define Str_Grow str_grow
  568.   #else
  569. --- 562,568 ----
  570.   
  571.   #define GROWSTR(pp,lp,len) if (*(lp) < (len)) growstr(pp,lp,len)
  572.   
  573. ! #ifndef MSDOS_OR_ATARI
  574.   #define STR_GROW(str,len) if ((str)->str_len < (len)) str_grow(str,len)
  575.   #define Str_Grow str_grow
  576.   #else
  577. ***************
  578. *** 561,567 ****
  579.   #define STR_GROW(str,len) if ((str)->str_len < (unsigned long)len) \
  580.           str_grow(str,(unsigned long)len)
  581.   #define Str_Grow(str,len) str_grow(str,(unsigned long)(len))
  582. ! #endif /* MSDOS */
  583.   
  584.   #ifndef BYTEORDER
  585.   #define BYTEORDER 0x1234
  586. --- 570,576 ----
  587.   #define STR_GROW(str,len) if ((str)->str_len < (unsigned long)len) \
  588.           str_grow(str,(unsigned long)len)
  589.   #define Str_Grow(str,len) str_grow(str,(unsigned long)(len))
  590. ! #endif /* MSDOS_OR_ATARI */
  591.   
  592.   #ifndef BYTEORDER
  593.   #define BYTEORDER 0x1234
  594. ***************
  595. *** 828,834 ****
  596.   EXT bool tainted INIT(FALSE);        /* using variables controlled by $< */
  597.   #endif
  598.   
  599. ! #ifndef MSDOS
  600.   #define TMPPATH "/tmp/perl-eXXXXXX"
  601.   #else
  602.   #define TMPPATH "plXXXXXX"
  603. --- 837,843 ----
  604.   EXT bool tainted INIT(FALSE);        /* using variables controlled by $< */
  605.   #endif
  606.   
  607. ! #ifndef MSDOS_OR_ATARI
  608.   #define TMPPATH "/tmp/perl-eXXXXXX"
  609.   #else
  610.   #define TMPPATH "plXXXXXX"
  611. *** ../regcomp.c    Mon Nov 11 10:45:28 1991
  612. --- regcomp.c    Fri Nov 15 14:51:03 1991
  613. ***************
  614. *** 86,92 ****
  615. --- 86,96 ----
  616.   #define    ISMULT1(c)    ((c) == '*' || (c) == '+' || (c) == '?')
  617.   #define    ISMULT2(s)    ((*s) == '*' || (*s) == '+' || (*s) == '?' || \
  618.       ((*s) == '{' && regcurly(s)))
  619. + #ifdef atarist
  620. + #define    PERL_META    "^$.[()|?+*\\"
  621. + #else
  622.   #define    META    "^$.[()|?+*\\"
  623. + #endif
  624.   
  625.   #ifdef SPSTART
  626.   #undef SPSTART        /* dratted cpp namespace... */
  627. *** ../str.c    Mon Nov 11 10:40:46 1991
  628. --- str.c    Fri Nov 15 14:51:04 1991
  629. ***************
  630. *** 81,87 ****
  631.   char *
  632.   str_grow(str,newlen)
  633.   register STR *str;
  634. ! #ifndef MSDOS
  635.   register int newlen;
  636.   #else
  637.   unsigned long newlen;
  638. --- 81,87 ----
  639.   char *
  640.   str_grow(str,newlen)
  641.   register STR *str;
  642. ! #ifndef MSDOS_OR_ATARI
  643.   register int newlen;
  644.   #else
  645.   unsigned long newlen;
  646. *** ../toke.c    Fri Nov 15 10:14:26 1991
  647. --- toke.c    Fri Nov 15 14:51:05 1991
  648. ***************
  649. *** 63,69 ****
  650. --- 63,73 ----
  651.   #endif
  652.   #define CLINE (cmdline = (curcmd->c_line < cmdline ? curcmd->c_line : cmdline))
  653.   
  654. + #ifdef atarist
  655. + #define PERL_META(c) ((c) | 128)
  656. + #else
  657.   #define META(c) ((c) | 128)
  658. + #endif
  659.   
  660.   #define RETURN(retval) return (bufptr = s,(int)retval)
  661.   #define OPERATOR(retval) return (expectterm = TRUE,bufptr = s,(int)retval)
  662. ***************
  663. *** 102,110 ****
  664. --- 106,120 ----
  665.   /* This does similarly for list operators, merely by pretending that the
  666.    * paren came before the listop rather than after.
  667.    */
  668. + #ifdef atarist
  669. + #define LOP(f) return(CLINE, *s == '(' || (s = skipspace(s), *s == '(') ? \
  670. +     (*s = (char) PERL_META('('), bufptr = oldbufptr, '(') : \
  671. +     (yylval.ival=f,expectterm = TRUE,bufptr = s,(int)LISTOP))
  672. + #else
  673.   #define LOP(f) return(CLINE, *s == '(' || (s = skipspace(s), *s == '(') ? \
  674.       (*s = (char) META('('), bufptr = oldbufptr, '(') : \
  675.       (yylval.ival=f,expectterm = TRUE,bufptr = s,(int)LISTOP))
  676. + #endif
  677.   /* grandfather return to old style */
  678.   #define OLDLOP(f) return(yylval.ival=f,expectterm = TRUE,bufptr = s,(int)LISTOP)
  679.   
  680. ***************
  681. *** 150,156 ****
  682. --- 160,170 ----
  683.       if (*s != '(')
  684.       s = skipspace(s);
  685.       if (*s == '(') {
  686. + #ifdef atarist
  687. +     *s = PERL_META('(');
  688. + #else
  689.       *s = META('(');
  690. + #endif
  691.       bufptr = oldbufptr;
  692.       return '(';
  693.       }
  694. ***************
  695. *** 999,1005 ****
  696. --- 1013,1023 ----
  697.       if (strEQ(d,"package"))
  698.           OPERATOR(PACKAGE);
  699.       if (strEQ(d,"pipe"))
  700. + #ifdef atarist
  701. +         FOP22(PERL_O_PIPE);
  702. + #else
  703.           FOP22(O_PIPE);
  704. + #endif
  705.       break;
  706.       case 'q': case 'Q':
  707.       SNARFWORD;
  708. *** ../util.c    Fri Nov 15 10:14:27 1991
  709. --- util.c    Fri Nov 15 14:51:06 1991
  710. ***************
  711. *** 1372,1378 ****
  712.   VTOH(vtohl,long)
  713.   #endif
  714.   
  715. ! #ifndef MSDOS
  716.   FILE *
  717.   mypopen(cmd,mode)
  718.   char    *cmd;
  719. --- 1372,1378 ----
  720.   VTOH(vtohl,long)
  721.   #endif
  722.   
  723. ! #ifndef MSDOS_OR_ATARI
  724.   FILE *
  725.   mypopen(cmd,mode)
  726.   char    *cmd;
  727. ***************
  728. *** 1446,1453 ****
  729.       forkprocess = pid;
  730.       return fdopen(p[this], mode);
  731.   }
  732. ! #endif /* !MSDOS */
  733.   
  734.   #ifdef NOTDEF
  735.   dumpfds(s)
  736.   char *s;
  737. --- 1446,1465 ----
  738.       forkprocess = pid;
  739.       return fdopen(p[this], mode);
  740.   }
  741. ! #else
  742. ! #ifdef atarist
  743. ! FILE *popen();
  744. ! FILE *
  745. ! mypopen(cmd,mode)
  746. ! char    *cmd;
  747. ! char    *mode;
  748. ! {
  749. !     return popen(cmd, mode);
  750. ! }
  751. ! #endif
  752.   
  753. + #endif /* !MSDOS_OR_ATARI */
  754.   #ifdef NOTDEF
  755.   dumpfds(s)
  756.   char *s;
  757. ***************
  758. *** 1488,1494 ****
  759.   }
  760.   #endif
  761.   
  762. ! #ifndef MSDOS
  763.   int
  764.   mypclose(ptr)
  765.   FILE *ptr;
  766. --- 1500,1506 ----
  767.   }
  768.   #endif
  769.   
  770. ! #ifndef MSDOS_OR_ATARI
  771.   int
  772.   mypclose(ptr)
  773.   FILE *ptr;
  774. ***************
  775. *** 1587,1593 ****
  776.   #endif
  777.       return;
  778.   }
  779. ! #endif /* !MSDOS */
  780.   
  781.   #ifndef HAS_MEMCMP
  782.   memcmp(s1,s2,len)
  783. --- 1599,1615 ----
  784.   #endif
  785.       return;
  786.   }
  787. ! #else
  788. ! #ifdef atarist
  789. ! int pclose();
  790. ! int
  791. ! mypclose(ptr)
  792. ! FILE *ptr;
  793. ! {
  794. !     return pclose(ptr);
  795. ! }
  796. ! #endif
  797. ! #endif /* !MSDOS_OR_ATARI */
  798.   
  799.   #ifndef HAS_MEMCMP
  800.   memcmp(s1,s2,len)
  801.