home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume13 / patch-tc / part01 next >
Text File  |  1990-06-02  |  16KB  |  592 lines

  1. Newsgroups: comp.sources.misc
  2. organization: U of Wisconsin CS Dept
  3. subject: v13i023: patch (pl 12) patches for MSDOS Turbo C 2.0
  4. from: ward@sneezy.cs.wisc.edu (Michael Ward)
  5. Sender: allbery@uunet.UU.NET (Brandon S. Allbery - comp.sources.misc)
  6.  
  7. Posting-number: Volume 13, Issue 23
  8. Submitted-by: ward@sneezy.cs.wisc.edu (Michael Ward)
  9. Archive-name: patch-tc/part01
  10.  
  11. The following patches will allow Larry Wall's patch program (patchlevel 12)
  12. to compile with Turbo C 2.0 and run under MSDOS. I have only checked a couple
  13. of context and normal diffs and it seems to work fine. I did not even try
  14. to get ed scripts working. Hope this is useful.
  15.  
  16. Mike Ward
  17. ward@sneezy.cs.wisc.edu
  18.  
  19.     remove this header and then use patch to apply the diffs
  20.     if you don't have patch, there are not that many changes 
  21.     (some of those are comments that I'm not sure are appropriate
  22.     anyway ...)
  23.  
  24.  
  25. ---------- cut here --------------------------------------------------
  26. *** ../patch/common.h    Thu May 24 14:21:46 1990
  27. --- common.h    Thu May 31 10:28:21 1990
  28. ***************
  29. *** 1,6 ****
  30. ! /* $Header: common.h,v 2.0.1.2 88/06/22 20:44:53 lwall Locked $
  31.    *
  32.    * $Log:    common.h,v $
  33.    * Revision 2.0.1.2  88/06/22  20:44:53  lwall
  34.    * patch12: sprintf was declared wrong
  35.    * 
  36. --- 1,9 ----
  37. ! /* $Header: common.h,v 2.0.1.3 90/05/30 11:30:00 mward $
  38.    *
  39.    * $Log:    common.h,v $
  40. +  * Revision 2.0.1.3  90/05/30  11:30:00  mward
  41. +  * added TURBOC stuff
  42. +  * 
  43.    * Revision 2.0.1.2  88/06/22  20:44:53  lwall
  44.    * patch12: sprintf was declared wrong
  45.    * 
  46. ***************
  47. *** 40,51 ****
  48. --- 43,68 ----
  49.   #include <ctype.h>
  50.   #include <signal.h>
  51.   
  52. + #ifdef TURBOC20
  53. + #include <stdlib.h>
  54. + #include <string.h>
  55. + #include <io.h>
  56. + #include <fcntl.h>
  57. + #endif
  58.   /* constants */
  59.   
  60.   #define TRUE (1)
  61.   #define FALSE (0)
  62.   
  63. + #ifdef TURBOC20
  64. + #define MAXPATH 80                /* max path spec size */
  65. + #define MAXMEMBLK 65534L            /* biggest block of mem */
  66. + #define MAXHUNKSIZE (MAXMEMBLK/sizeof(char *))    /* is this enough lines? */
  67. + #else
  68.   #define MAXHUNKSIZE 100000        /* is this enough lines? */
  69. + #endif
  70.   #define INITHUNKMAX 125            /* initial dynamic allocation size */
  71.   #define MAXLINELEN 1024
  72.   #define BUFFERSIZE 1024
  73. ***************
  74. *** 145,150 ****
  75. --- 162,168 ----
  76.   
  77.   EXT char *revision INIT(Nullch);    /* prerequisite revision, if any */
  78.   
  79. + #ifndef TURBOC20
  80.   char *malloc();
  81.   char *realloc();
  82.   char *strcpy();
  83. ***************
  84. *** 156,159 ****
  85. --- 174,178 ----
  86.   char *sprintf();
  87.   #else
  88.   int sprintf();
  89. + #endif
  90.   #endif
  91. *** ../patch/config.h    Thu May 24 14:21:52 1990
  92. --- config.h    Thu May 31 10:36:24 1990
  93. ***************
  94. *** 1,25 ****
  95.   /* config.h
  96. !  * This file was produced by running the Configure script.
  97.    * Feel free to modify any of this as the need arises.
  98.    */
  99.   
  100.   
  101. ! #/*undef    EUNICE        /* no file linking? */
  102. ! #/*undef    VMS
  103.   
  104. ! #/*undef    index strchr    /* cultural */
  105. ! #/*undef    rindex strrchr    /*  differences? */
  106.   
  107. - #/*undef    void int    /* is void to be avoided? */
  108.   /* How many register declarations are paid attention to? */
  109.   
  110.   #define Reg1 register
  111.   #define Reg2 register
  112.   #define Reg3 register
  113. ! #define Reg4 register
  114. ! #define Reg5 register
  115. ! #define Reg6 register
  116.   #define Reg7 
  117.   #define Reg8 
  118.   #define Reg9 
  119. --- 1,36 ----
  120. + /* $Header: cofig.h,v 2.0.1 90/05/30 11:30:00 mward $
  121. +  *
  122. +  * $Log:    config.h,v $
  123. +  * Revision 2.0.1  90/05/30  11:30:00  mward
  124. +  * set up for MSDOS TURBOC v2.0
  125. +  */
  126. +  
  127.   /* config.h
  128. !  * This file was produced by hand for MSDOS TURBOC V2.0.
  129.    * Feel free to modify any of this as the need arises.
  130.    */
  131.   
  132.   
  133. ! #undef    EUNICE        /* no file linking? */
  134. ! #undef    VMS
  135. ! #undef    CHARSPRINTF     /* sprintf does NOT return pointer to char */
  136. ! #undef    FLEXFILENAMES    /* file names must be 14 chars or less */
  137.   
  138. ! #ifdef TURBOC20
  139. ! #define    index strchr    /* cultural */
  140. ! #define    rindex strrchr    /*  differences? */
  141. ! #define    VOIDSIG     /* signal returns ptr to function returning void*/
  142. ! #define    VOIDFLAGS 7    /* full void support */
  143. ! #endif
  144.   
  145.   /* How many register declarations are paid attention to? */
  146.   
  147.   #define Reg1 register
  148.   #define Reg2 register
  149.   #define Reg3 register
  150. ! #define Reg4
  151. ! #define Reg5
  152. ! #define Reg6
  153.   #define Reg7 
  154.   #define Reg8 
  155.   #define Reg9 
  156. *** ../patch/inp.c    Thu May 24 14:21:46 1990
  157. --- inp.c    Thu May 31 10:37:49 1990
  158. ***************
  159. *** 1,6 ****
  160. ! /* $Header: inp.c,v 2.0.1.1 88/06/03 15:06:13 lwall Locked $
  161.    *
  162.    * $Log:    inp.c,v $
  163.    * Revision 2.0.1.1  88/06/03  15:06:13  lwall
  164.    * patch10: made a little smarter about sccs files
  165.    * 
  166. --- 1,12 ----
  167. ! /* $Header: inp.c,v 2.0.1.2 90/05/30 11:30:00 mward $
  168.    *
  169.    * $Log:    inp.c,v $
  170. +  * Revision 2.0.1.2  90/05/30  11:30:00 mward
  171. +  * if TURBOC20 have plan_a check against MAXMEMBLK before mallocs
  172. +  * if TURBOC20 have plan_b use binary mode io for tmp file
  173. +  * modified plan_a to allow for translation shrinkage on text reads
  174. +  * modify calls to read, write to detect error on return value of -1
  175. +  * 
  176.    * Revision 2.0.1.1  88/06/03  15:06:13  lwall
  177.    * patch10: made a little smarter about sccs files
  178.    * 
  179. ***************
  180. *** 120,128 ****
  181.       out_of_mem = FALSE;
  182.       return FALSE;            /* force plan b because plan a bombed */
  183.       }
  184. - #ifdef lint
  185.       i_womp = Nullch;
  186. ! #else
  187.       i_womp = malloc((MEM)(i_size+2));    /* lint says this may alloc less than */
  188.                       /* i_size, but that's okay, I think. */
  189.   #endif
  190. --- 126,136 ----
  191.       out_of_mem = FALSE;
  192.       return FALSE;            /* force plan b because plan a bombed */
  193.       }
  194.       i_womp = Nullch;
  195. ! #ifndef lint
  196. ! #ifdef TURBOC20
  197. !     if (i_size < MAXMEMBLK)
  198. ! #endif
  199.       i_womp = malloc((MEM)(i_size+2));    /* lint says this may alloc less than */
  200.                       /* i_size, but that's okay, I think. */
  201.   #endif
  202. ***************
  203. *** 131,137 ****
  204.       if ((ifd = open(filename, 0)) < 0)
  205.       fatal2("Can't open file %s\n", filename);
  206.   #ifndef lint
  207. !     if (read(ifd, i_womp, (int)i_size) != i_size) {
  208.       Close(ifd);    /* probably means i_size > 15 or 16 bits worth */
  209.       free(i_womp);    /* at this point it doesn't matter if i_womp was */
  210.       return FALSE;    /*   undersized. */
  211. --- 139,145 ----
  212.       if ((ifd = open(filename, 0)) < 0)
  213.       fatal2("Can't open file %s\n", filename);
  214.   #ifndef lint
  215. !     if ((i_size=(unsigned)read(ifd, i_womp, (int)i_size)) == (unsigned)-1) {
  216.       Close(ifd);    /* probably means i_size > 15 or 16 bits worth */
  217.       free(i_womp);    /* at this point it doesn't matter if i_womp was */
  218.       return FALSE;    /*   undersized. */
  219. ***************
  220. *** 149,157 ****
  221.       if (*s == '\n')
  222.           iline++;
  223.       }
  224. - #ifdef lint
  225.       i_ptr = Null(char**);
  226. ! #else
  227.       i_ptr = (char **)malloc((MEM)((iline + 2) * sizeof(char *)));
  228.   #endif
  229.       if (i_ptr == Null(char **)) {    /* shucks, it was a near thing */
  230. --- 157,167 ----
  231.       if (*s == '\n')
  232.           iline++;
  233.       }
  234.       i_ptr = Null(char**);
  235. ! #ifndef lint
  236. ! #ifdef TURBOC20
  237. !     if (iline+2<MAXMEMBLK/sizeof(char *))
  238. ! #endif
  239.       i_ptr = (char **)malloc((MEM)((iline + 2) * sizeof(char *)));
  240.   #endif
  241.       if (i_ptr == Null(char **)) {    /* shucks, it was a near thing */
  242. ***************
  243. *** 210,215 ****
  244. --- 220,228 ----
  245.       fatal2("Can't open file %s\n", filename);
  246.       if ((tifd = creat(TMPINNAME, 0666)) < 0)
  247.       fatal2("Can't open file %s\n", TMPINNAME);
  248. + #ifdef TURBOC20
  249. +     setmode(tifd, O_BINARY);
  250. + #endif
  251.       while (fgets(buf, sizeof buf, ifp) != Nullch) {
  252.       if (revision != Nullch && !found_revision && rev_in_string(buf))
  253.           found_revision = TRUE;
  254. ***************
  255. *** 245,257 ****
  256.       fatal1("Can't seem to get enough memory.\n");
  257.       for (i=1; ; i++) {
  258.       if (! (i % lines_per_buf))    /* new block */
  259. !         if (write(tifd, tibuf[0], BUFFERSIZE) < BUFFERSIZE)
  260.           fatal1("patch: can't write temp file.\n");
  261.       if (fgets(tibuf[0] + maxlen * (i%lines_per_buf), maxlen + 1, ifp)
  262.         == Nullch) {
  263.           input_lines = i - 1;
  264.           if (i % lines_per_buf)
  265. !         if (write(tifd, tibuf[0], BUFFERSIZE) < BUFFERSIZE)
  266.               fatal1("patch: can't write temp file.\n");
  267.           break;
  268.       }
  269. --- 258,270 ----
  270.       fatal1("Can't seem to get enough memory.\n");
  271.       for (i=1; ; i++) {
  272.       if (! (i % lines_per_buf))    /* new block */
  273. !         if (write(tifd, tibuf[0], BUFFERSIZE) == -1)
  274.           fatal1("patch: can't write temp file.\n");
  275.       if (fgets(tibuf[0] + maxlen * (i%lines_per_buf), maxlen + 1, ifp)
  276.         == Nullch) {
  277.           input_lines = i - 1;
  278.           if (i % lines_per_buf)
  279. !         if (write(tifd, tibuf[0], BUFFERSIZE) == -1)
  280.               fatal1("patch: can't write temp file.\n");
  281.           break;
  282.       }
  283. ***************
  284. *** 258,264 ****
  285. --- 271,281 ----
  286.       }
  287.       Fclose(ifp);
  288.       Close(tifd);
  289. + #ifdef TURBOC20
  290. +     if ((tifd = open(TMPINNAME, O_BINARY)) < 0) {
  291. + #else
  292.       if ((tifd = open(TMPINNAME, 0)) < 0) {
  293. + #endif
  294.       fatal2("Can't reopen file %s\n", TMPINNAME);
  295.       }
  296.   }
  297. ***************
  298. *** 287,293 ****
  299.   #ifndef lint        /* complains of long accuracy */
  300.           Lseek(tifd, (long)baseline / lines_per_buf * BUFFERSIZE, 0);
  301.   #endif
  302. !         if (read(tifd, tibuf[whichbuf], BUFFERSIZE) < 0)
  303.           fatal2("Error reading tmp file %s.\n", TMPINNAME);
  304.       }
  305.       return tibuf[whichbuf] + (tireclen*offline);
  306. --- 304,310 ----
  307.   #ifndef lint        /* complains of long accuracy */
  308.           Lseek(tifd, (long)baseline / lines_per_buf * BUFFERSIZE, 0);
  309.   #endif
  310. !         if (read(tifd, tibuf[whichbuf], BUFFERSIZE) == -1)
  311.           fatal2("Error reading tmp file %s.\n", TMPINNAME);
  312.       }
  313.       return tibuf[whichbuf] + (tireclen*offline);
  314. *** ../patch/pch.c    Thu May 24 14:21:38 1990
  315. --- pch.c    Thu May 31 10:40:00 1990
  316. ***************
  317. *** 1,6 ****
  318. ! /* $Header: pch.c,v 2.0.1.7 88/06/03 15:13:28 lwall Locked $
  319.    *
  320.    * $Log:    pch.c,v $
  321.    * Revision 2.0.1.7  88/06/03  15:13:28  lwall
  322.    * patch10: Can now find patches in shar scripts.
  323.    * patch10: Hunks that swapped and then swapped back could core dump.
  324. --- 1,10 ----
  325. ! /* $Header: pch.c,v 2.0.1.7 90/05/30 11:30:00 mward $
  326.    *
  327.    * $Log:    pch.c,v $
  328. +  * Revision 2.0.1.8  90/05/30  11:30:00  mward
  329. +  * replace do_ed_script with stub
  330. +  * modify calls to read, write to detect error on return value of -1
  331. +  * 
  332.    * Revision 2.0.1.7  88/06/03  15:13:28  lwall
  333.    * patch10: Can now find patches in shar scripts.
  334.    * patch10: Hunks that swapped and then swapped back could core dump.
  335. ***************
  336. *** 1058,1063 ****
  337. --- 1062,1077 ----
  338.       return p_hunk_beg;
  339.   }
  340.  
  341. + #ifdef TURBOC20 
  342. + /* Ignore an ed script. */
  343. + void
  344. + do_ed_script()
  345. + {
  346. +     say1("Sorry, can't do ed scripts yet!\n");
  347. +     say1("Use ed to do this one yourself!\n");
  348. + }
  349. + #else
  350.   /* Apply an ed script by feeding ed itself. */
  351.   
  352.   void
  353. ***************
  354. *** 1121,1123 ****
  355. --- 1134,1137 ----
  356.       chmod(outname, filemode);
  357.       set_signals(1);
  358.   }
  359. + #endif
  360. *** ../patch/util.c    Thu May 24 14:21:46 1990
  361. --- util.c    Thu May 31 10:40:14 1990
  362. ***************
  363. *** 1,3 ****
  364. --- 1,15 ----
  365. + /* $Header: pch.c,v 2.0.1 90/05/30 11:30:00 mward $
  366. +  *
  367. +  * $Log:    pch.c,v $
  368. +  * Revision 2.0.1  90/05/30  11:30:00  mward
  369. +  * modify calls to read, write to detect error on return of value -1
  370. +  * added TURBOC20 ifdef stuff:
  371. +  *    no inodes: modify move_file same file detect accordingly
  372. +  *    no links:  modify move_file link calls to copy_file calls
  373. +  *    no SIGHUP: modify signal routines accordingly
  374. +  *
  375. +  */
  376.   #include "EXTERN.h"
  377.   #include "common.h"
  378.   #include "INTERN.h"
  379. ***************
  380. *** 24,31 ****
  381.       fromfd = open(from, 0);
  382.       if (fromfd < 0)
  383.           fatal2("patch: internal error, can't reopen %s\n", from);
  384. !     while ((i=read(fromfd, buf, sizeof buf)) > 0)
  385. !         if (write(1, buf, i) != 1)
  386.           fatal1("patch: write failed\n");
  387.       Close(fromfd);
  388.       return 0;
  389. --- 36,43 ----
  390.       fromfd = open(from, 0);
  391.       if (fromfd < 0)
  392.           fatal2("patch: internal error, can't reopen %s\n", from);
  393. !     while ((i=read(fromfd, buf, sizeof buf))!=-1 && i!=0)
  394. !         if (write(1, buf, i) == -1)
  395.           fatal1("patch: write failed\n");
  396.       Close(fromfd);
  397.       return 0;
  398. ***************
  399. *** 39,46 ****
  400.           Strcat(bakname, origext?origext:ORIGEXT);
  401.       }
  402.       if (stat(to, &filestat) >= 0) {    /* output file exists */
  403. !     dev_t to_device = filestat.st_dev;
  404. !     ino_t to_inode  = filestat.st_ino;
  405.       char *simplename = bakname;
  406.       
  407.       for (s=bakname; *s; s++) {
  408. --- 51,65 ----
  409.           Strcat(bakname, origext?origext:ORIGEXT);
  410.       }
  411.       if (stat(to, &filestat) >= 0) {    /* output file exists */
  412. ! #ifdef TURBOC20
  413. !     short to_device = filestat.st_dev;
  414. !     short to_mode = filestat.st_mode;
  415. !     long  to_size  = filestat.st_size;
  416. !     long  to_time  = filestat.st_mtime;
  417. ! #else
  418. !      dev_t to_device = filestat.st_dev;
  419. !      ino_t to_inode  = filestat.st_ino;
  420. ! #endif
  421.       char *simplename = bakname;
  422.       
  423.       for (s=bakname; *s; s++) {
  424. ***************
  425. *** 49,55 ****
  426.       }
  427.       /* find a backup name that is not the same file */
  428.       while (stat(bakname, &filestat) >= 0 &&
  429. !         to_device == filestat.st_dev && to_inode == filestat.st_ino) {
  430.           for (s=simplename; *s && !islower(*s); s++) ;
  431.           if (*s)
  432.           *s = toupper(*s);
  433. --- 68,82 ----
  434.       }
  435.       /* find a backup name that is not the same file */
  436.       while (stat(bakname, &filestat) >= 0 &&
  437. !         to_device == filestat.st_dev &&
  438. ! #ifdef TURBOC20
  439. !         to_mode == filestat.st_mode &&
  440. !                 to_size == filestat.st_size &&
  441. !                 to_time == filestat.st_mtime
  442. ! #else
  443. !                 to_inode == filestat.st_ino
  444. ! #endif                
  445. !               ) {
  446.           for (s=simplename; *s && !islower(*s); s++) ;
  447.           if (*s)
  448.           *s = toupper(*s);
  449. ***************
  450. *** 61,71 ****
  451. --- 88,102 ----
  452.       if (debug & 4)
  453.           say3("Moving %s to %s.\n", to, bakname);
  454.   #endif
  455. + #ifdef TURBOC20
  456. +     copy_file(to, bakname);
  457. + #else        
  458.       if (link(to, bakname) < 0) {
  459.           say3("patch: can't backup %s, output is in %s\n",
  460.           to, from);
  461.           return -1;
  462.       }
  463. + #endif
  464.       while (unlink(to) >= 0) ;
  465.       }
  466.   #ifdef DEBUGGING
  467. ***************
  468. *** 72,77 ****
  469. --- 103,111 ----
  470.       if (debug & 4)
  471.       say3("Moving %s to %s.\n", from, to);
  472.   #endif
  473. + #ifdef TURBOC20
  474. +     copy_file(from, to);
  475. + #else
  476.       if (link(from, to) < 0) {        /* different file system? */
  477.       Reg4 int tofd;
  478.       
  479. ***************
  480. *** 84,95 ****
  481.       fromfd = open(from, 0);
  482.       if (fromfd < 0)
  483.           fatal2("patch: internal error, can't reopen %s\n", from);
  484. !     while ((i=read(fromfd, buf, sizeof buf)) > 0)
  485. !         if (write(tofd, buf, i) != i)
  486.           fatal1("patch: write failed\n");
  487.       Close(fromfd);
  488.       Close(tofd);
  489.       }
  490.       Unlink(from);
  491.       return 0;
  492.   }
  493. --- 118,130 ----
  494.       fromfd = open(from, 0);
  495.       if (fromfd < 0)
  496.           fatal2("patch: internal error, can't reopen %s\n", from);
  497. !     while ((i=read(fromfd, buf, sizeof buf))!=-1 && i!=0)
  498. !         if (write(tofd, buf, i) == -1)
  499.           fatal1("patch: write failed\n");
  500.       Close(fromfd);
  501.       Close(tofd);
  502.       }
  503. + #endif
  504.       Unlink(from);
  505.       return 0;
  506.   }
  507. ***************
  508. *** 110,117 ****
  509.       fromfd = open(from, 0);
  510.       if (fromfd < 0)
  511.       fatal2("patch: internal error, can't reopen %s\n", from);
  512. !     while ((i=read(fromfd, buf, sizeof buf)) > 0)
  513. !     if (write(tofd, buf, i) != i)
  514.           fatal2("patch: write (%s) failed\n", to);
  515.       Close(fromfd);
  516.       Close(tofd);
  517. --- 145,152 ----
  518.       fromfd = open(from, 0);
  519.       if (fromfd < 0)
  520.       fatal2("patch: internal error, can't reopen %s\n", from);
  521. !     while ((i=read(fromfd, buf, sizeof buf))!=-1 && i!=0)
  522. !     if (write(tofd, buf, i) == -1)
  523.           fatal2("patch: write (%s) failed\n", to);
  524.       Close(fromfd);
  525.       Close(tofd);
  526. ***************
  527. *** 233,245 ****
  528. --- 268,289 ----
  529.   {
  530.       void my_exit();
  531.   #ifndef lint
  532. + #ifdef TURBOC20
  533.   #ifdef VOIDSIG
  534. +     static void (*intval)();
  535. + #else
  536. +     static int (*intval)();
  537. + #endif
  538. + #else
  539. + #ifdef VOIDSIG
  540.       static void (*hupval)(),(*intval)();
  541.   #else
  542.       static int (*hupval)(),(*intval)();
  543.   #endif
  544. + #endif
  545.   
  546.       if (!reset) {
  547. + #ifndef TURBOC20
  548.       hupval = signal(SIGHUP, SIG_IGN);
  549.       if (hupval != SIG_IGN)
  550.   #ifdef VOIDSIG
  551. ***************
  552. *** 247,252 ****
  553. --- 291,298 ----
  554.   #else
  555.           hupval = (int(*)())my_exit;
  556.   #endif
  557. + #endif
  558.       intval = signal(SIGINT, SIG_IGN);
  559.       if (intval != SIG_IGN)
  560.   #ifdef VOIDSIG
  561. ***************
  562. *** 255,261 ****
  563. --- 301,309 ----
  564.           intval = (int(*)())my_exit;
  565.   #endif
  566.       }
  567. + #ifndef TURBOC20
  568.       Signal(SIGHUP, hupval);
  569. + #endif
  570.       Signal(SIGINT, intval);
  571.   #endif
  572.   }
  573. ***************
  574. *** 266,272 ****
  575. --- 314,322 ----
  576.   ignore_signals()
  577.   {
  578.   #ifndef lint
  579. + #ifndef TURBOC20
  580.       Signal(SIGHUP, SIG_IGN);
  581. + #endif
  582.       Signal(SIGINT, SIG_IGN);
  583.   #endif
  584.   }
  585.  
  586.