home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume17 / pax / patch03 < prev    next >
Internet Message Format  |  1989-02-14  |  59KB

  1. From bbn.com!bbn!csd4.milw.wisc.edu!nic.MR.NET!shamash!com50!jhereg!mark Wed Feb 15 18:07:04 EST 1989
  2. Article 1593 of comp.sources.bugs:
  3. Path: bbn.com!bbn!csd4.milw.wisc.edu!nic.MR.NET!shamash!com50!jhereg!mark
  4. >From: mark@jhereg.Jhereg.MN.ORG (Mark H. Colburn)
  5. Newsgroups: comp.sources.bugs
  6. Subject: Official Patch #3 to Pax
  7. Message-ID: <549@jhereg.Jhereg.MN.ORG>
  8. Date: 13 Feb 89 06:38:39 GMT
  9. References: <547@jhereg.Jhereg.MN.ORG>
  10. Reply-To: mark@jhereg.MN.ORG (Mark H. Colburn)
  11. Organization: Minnetech Consulting, Inc., St. Paul, MN
  12. Lines: 2314
  13.  
  14. This is the third of three official patches to Pax, a freely distributable 
  15. portable archive interchange.  These patches brings the software upto 
  16. release 1.2.  These patches fix a number of bugs and portability problems 
  17. with the initial release of the software.  These three patches (split to
  18. avoid article size limitations) constitute a single logical patch to pax.
  19.  
  20. I would like to thank all those people who reported bug, suggested fixes, 
  21. provided patches and suggested other extensions to pax.  I appologize to 
  22. that I was not able to respond to all the mail that I got about pax, but 
  23. all of the problems that were reported have either been fixed, or are 
  24. still under consideration.
  25.  
  26. Please, if you have any problems with pax, let me know so that they can be
  27. fixed.  Remember, if you find a problem, chances are that others will run
  28. into the same problem as well.  Reporting the problems will allow them to
  29. be fixed to avoid future difficulties and effort.
  30.  
  31. These items were not fixed in the patch, but are scheduled for a future
  32. patch release:
  33.  
  34.     * Put the software configuration under control of a "Configure" script ala
  35.       less and rn.
  36.     * Bring source into line with new POSIX 1003.2 description of pax.
  37.     * Add support for undocumented -C flag to cpio.
  38.     * MS-DOS support
  39.     * MINIX support
  40.     * Add missing tar.5 cpio.5 man pages
  41.  
  42. These items were fixed in these patches:
  43.  
  44.     * Changed misspelling of MERCHANTABILITY.
  45.     * Changed name of syserr to strerror, warn.c.
  46.     * Removed the references to "public domain" in the software.  The 
  47.       software is copyrighted, not public domain.
  48.     * Files are chmod'ed before being moved into the installation 
  49.       directories.  Files are also copied, then linked in the target 
  50.       directory.
  51.     * The variable "min" in regexp.c was changed to "minimum".  It would 
  52.       seem that some copilers define min to be a macro...
  53.     * In buffer.c there was an integer which was getting assigned NULL, 
  54.       rather than 0.
  55.     * If pax was given the -l option, it only successfully linked the 
  56.       from-file and the to-file together if the from-file is already linked 
  57.       to something else.
  58.     * Changed the verbose output file for tar to use stderr, rather than
  59.       stdout.  The verbose output was being interspersed with the archive,
  60.       causing the archive to be unreadable.
  61.     * The LDFLAGS macro is now used in the makefile.  There are also macros 
  62.       for additional libraries which may be needed and one for SHELL which 
  63.       fixes some problems when using the "make lint" facility.
  64.     * Fixed the stupid typo which caused pax/tar/cpio to run out of file
  65.       descriptors on very deep directory trees.
  66.     * Removed all line continuations "\" in preprocessor directives and
  67.       strings.  These were causing problems on certain compilers.
  68.     * Rename two variable which were colloding on compilers that did not
  69.       understand varaiables that were not unique in the first six
  70.       characters.
  71.     * Change the name of openi().  This causes a lot of problems on some
  72.       machines, especially those with shared libraries...
  73.     * Added some changes required for XENIX 286.
  74.     * All references to NULL are now properly cast.
  75.     * Man pages directories are now more compatible with BSD and USG
  76.       installation
  77.     * Other miscellaneous cleanups.
  78.  
  79. Mark H. Colburn                  "Look into a child's eye;
  80. Minnetech Consulting, Inc.        there's no hate and there's no lie;
  81. mark@jhereg.mn.org                there's no black and there's no white."
  82. --------------------------------- CUT HERE ---------------------------------
  83.  
  84. Index: port.c
  85. *** /tmp/,RCSt1a17133    Sun Feb 12 14:08:42 1989
  86. --- port.c    Sun Feb 12 14:02:30 1989
  87. ***************
  88. *** 1,6
  89.   /* $Source: /u/mark/src/pax/RCS/port.c,v $
  90.    *
  91. !  * $Revision: 1.1 $
  92.    *
  93.    * port.c - These are routines not available in all environments. 
  94.    *
  95.  
  96. --- 1,6 -----
  97.   /* $Source: /u/mark/src/pax/RCS/port.c,v $
  98.    *
  99. !  * $Revision: 1.2 $
  100.    *
  101.    * port.c - These are routines not available in all environments. 
  102.    *
  103. ***************
  104. *** 30,36
  105.    *
  106.    * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
  107.    * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  108. !  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  109.    *
  110.    * $Log:    port.c,v $
  111.    * Revision 1.1  88/12/23  18:02:29  mark
  112.  
  113. --- 30,36 -----
  114.    *
  115.    * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
  116.    * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  117. !  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  118.    *
  119.    * $Log:    port.c,v $
  120.    * Revision 1.2  89/02/12  10:05:35  mark
  121. ***************
  122. *** 33,38
  123.    * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  124.    *
  125.    * $Log:    port.c,v $
  126.    * Revision 1.1  88/12/23  18:02:29  mark
  127.    * Initial revision
  128.    * 
  129.  
  130. --- 33,41 -----
  131.    * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  132.    *
  133.    * $Log:    port.c,v $
  134. +  * Revision 1.2  89/02/12  10:05:35  mark
  135. +  * 1.2 release fixes
  136. +  * 
  137.    * Revision 1.1  88/12/23  18:02:29  mark
  138.    * Initial revision
  139.    * 
  140. ***************
  141. *** 39,45
  142.    */
  143.   
  144.   #ifndef lint
  145. ! static char *ident = "$Id: port.c,v 1.1 88/12/23 18:02:29 mark Rel $";
  146.   static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n";
  147.   #endif /* ! lint */
  148.   
  149.  
  150. --- 42,48 -----
  151.    */
  152.   
  153.   #ifndef lint
  154. ! static char *ident = "$Id: port.c,v 1.2 89/02/12 10:05:35 mark Exp $";
  155.   static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n";
  156.   #endif /* ! lint */
  157.   
  158. ***************
  159. *** 55,62
  160.    * the list in the #if !defined()'s below and it'll all be skipped. 
  161.    */
  162.   
  163. ! #if !defined(mc300) && !defined(mc500) && !defined(mc700) && \
  164. !     !defined(BSD)
  165.   
  166.   /* mkdir - make a directory
  167.    *
  168.  
  169. --- 58,64 -----
  170.    * the list in the #if !defined()'s below and it'll all be skipped. 
  171.    */
  172.   
  173. ! #if !defined(mc300) && !defined(mc500) && !defined(mc700) && !defined(BSD)
  174.   
  175.   /* mkdir - make a directory
  176.    *
  177. Index: port.h
  178. *** /tmp/,RCSt1a17138    Sun Feb 12 14:08:49 1989
  179. --- port.h    Sun Feb 12 14:02:31 1989
  180. ***************
  181. *** 1,6
  182.   /* $Source: /u/mark/src/pax/RCS/port.h,v $
  183.    *
  184. !  * $Revision: 1.1 $
  185.    *
  186.    * port.h - defnitions for portability library
  187.    *
  188.  
  189. --- 1,6 -----
  190.   /* $Source: /u/mark/src/pax/RCS/port.h,v $
  191.    *
  192. !  * $Revision: 1.2 $
  193.    *
  194.    * port.h - defnitions for portability library
  195.    *
  196. ***************
  197. *** 30,36
  198.    *
  199.    * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
  200.    * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  201. !  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  202.    */
  203.   
  204.   #ifndef _PAX_PORT_H
  205.  
  206. --- 30,36 -----
  207.    *
  208.    * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
  209.    * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  210. !  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  211.    */
  212.   
  213.   #ifndef _PAX_PORT_H
  214. Index: regexp.c
  215. *** /tmp/,RCSt1a17143    Sun Feb 12 14:08:58 1989
  216. --- regexp.c    Sun Feb 12 14:02:34 1989
  217. ***************
  218. *** 1,6
  219.   /* $Source: /u/mark/src/pax/RCS/regexp.c,v $
  220.    *
  221. !  * $Revision: 1.1 $
  222.    *
  223.    * regexp.c - regular expression matching
  224.    *
  225.  
  226. --- 1,6 -----
  227.   /* $Source: /u/mark/src/pax/RCS/regexp.c,v $
  228.    *
  229. !  * $Revision: 1.2 $
  230.    *
  231.    * regexp.c - regular expression matching
  232.    *
  233. ***************
  234. *** 43,48
  235.    * Sponsored by The USENIX Association for public distribution. 
  236.    *
  237.    * $Log:    regexp.c,v $
  238.    * Revision 1.1  88/12/23  18:02:32  mark
  239.    * Initial revision
  240.    * 
  241.  
  242. --- 43,51 -----
  243.    * Sponsored by The USENIX Association for public distribution. 
  244.    *
  245.    * $Log:    regexp.c,v $
  246. +  * Revision 1.2  89/02/12  10:05:39  mark
  247. +  * 1.2 release fixes
  248. +  * 
  249.    * Revision 1.1  88/12/23  18:02:32  mark
  250.    * Initial revision
  251.    * 
  252. ***************
  253. *** 53,59
  254.   #include "pax.h"
  255.   
  256.   #ifndef lint
  257. ! static char    *Ident = "$Id: regexp.c,v 1.1 88/12/23 18:02:32 mark Rel $";
  258.   #endif
  259.   
  260.   
  261.  
  262. --- 56,62 -----
  263.   #include "pax.h"
  264.   
  265.   #ifndef lint
  266. ! static char    *Ident = "$Id: regexp.c,v 1.2 89/02/12 10:05:39 mark Exp $";
  267.   #endif
  268.   
  269.   
  270. ***************
  271. *** 224,230
  272.       int             flags;
  273.       extern char    *malloc();
  274.   
  275. !     if (exp == NULL)
  276.       FAIL("NULL argument");
  277.   
  278.       /* First pass: determine size, legality. */
  279.  
  280. --- 227,233 -----
  281.       int             flags;
  282.       extern char    *malloc();
  283.   
  284. !     if (exp == (char *)NULL)
  285.       FAIL("NULL argument");
  286.   
  287.       /* First pass: determine size, legality. */
  288. ***************
  289. *** 233,240
  290.       regsize = 0L;
  291.       regcode = ®dummy;
  292.       regc(MAGIC);
  293. !     if (reg(0, &flags) == NULL)
  294. !     return (NULL);
  295.   
  296.       /* Small enough for pointer-storage convention? */
  297.       if (regsize >= 32767L)    /* Probably could be 65535L. */
  298.  
  299. --- 236,243 -----
  300.       regsize = 0L;
  301.       regcode = ®dummy;
  302.       regc(MAGIC);
  303. !     if (reg(0, &flags) == (char *)NULL)
  304. !     return ((regexp *)NULL);
  305.   
  306.       /* Small enough for pointer-storage convention? */
  307.       if (regsize >= 32767L)    /* Probably could be 65535L. */
  308. ***************
  309. *** 242,248
  310.   
  311.       /* Allocate space. */
  312.       r = (regexp *) malloc(sizeof(regexp) + (unsigned) regsize);
  313. !     if (r == NULL)
  314.       FAIL("out of space");
  315.   
  316.       /* Second pass: emit code. */
  317.  
  318. --- 245,251 -----
  319.   
  320.       /* Allocate space. */
  321.       r = (regexp *) malloc(sizeof(regexp) + (unsigned) regsize);
  322. !     if (r == (regexp *) NULL)
  323.       FAIL("out of space");
  324.   
  325.       /* Second pass: emit code. */
  326. ***************
  327. *** 251,257
  328.       regcode = r->program;
  329.       regc(MAGIC);
  330.       if (reg(0, &flags) == NULL)
  331. !     return (NULL);
  332.   
  333.       /* Dig out information for optimizations. */
  334.       r->regstart = '\0';        /* Worst-case defaults. */
  335.  
  336. --- 254,260 -----
  337.       regcode = r->program;
  338.       regc(MAGIC);
  339.       if (reg(0, &flags) == NULL)
  340. !     return ((regexp *) NULL);
  341.   
  342.       /* Dig out information for optimizations. */
  343.       r->regstart = '\0';        /* Worst-case defaults. */
  344. ***************
  345. *** 320,326
  346.       regnpar++;
  347.       ret = regnode(OPEN + parno);
  348.       } else
  349. !     ret = NULL;
  350.   
  351.       /* Pick up the branches, linking them together. */
  352.       br = regbranch(&flags);
  353.  
  354. --- 323,329 -----
  355.       regnpar++;
  356.       ret = regnode(OPEN + parno);
  357.       } else
  358. !     ret = (char *)NULL;
  359.   
  360.       /* Pick up the branches, linking them together. */
  361.       br = regbranch(&flags);
  362. ***************
  363. *** 324,332
  364.   
  365.       /* Pick up the branches, linking them together. */
  366.       br = regbranch(&flags);
  367. !     if (br == NULL)
  368. !     return (NULL);
  369. !     if (ret != NULL)
  370.       regtail(ret, br);    /* OPEN -> first. */
  371.       else
  372.       ret = br;
  373.  
  374. --- 327,335 -----
  375.   
  376.       /* Pick up the branches, linking them together. */
  377.       br = regbranch(&flags);
  378. !     if (br == (char *)NULL)
  379. !     return ((char *)NULL);
  380. !     if (ret != (char *)NULL)
  381.       regtail(ret, br);    /* OPEN -> first. */
  382.       else
  383.       ret = br;
  384. ***************
  385. *** 336,343
  386.       while (*regparse == '|') {
  387.       regparse++;
  388.       br = regbranch(&flags);
  389. !     if (br == NULL)
  390. !         return (NULL);
  391.       regtail(ret, br);    /* BRANCH -> BRANCH. */
  392.       if (!(flags & HASWIDTH))
  393.           *flagp &= ~HASWIDTH;
  394.  
  395. --- 339,346 -----
  396.       while (*regparse == '|') {
  397.       regparse++;
  398.       br = regbranch(&flags);
  399. !     if (br == (char *)NULL)
  400. !         return ((char *)NULL);
  401.       regtail(ret, br);    /* BRANCH -> BRANCH. */
  402.       if (!(flags & HASWIDTH))
  403.           *flagp &= ~HASWIDTH;
  404. ***************
  405. *** 349,355
  406.       regtail(ret, ender);
  407.   
  408.       /* Hook the tails of the branches to the closing node. */
  409. !     for (br = ret; br != NULL; br = regnext(br))
  410.       regoptail(br, ender);
  411.   
  412.       /* Check for proper termination. */
  413.  
  414. --- 352,358 -----
  415.       regtail(ret, ender);
  416.   
  417.       /* Hook the tails of the branches to the closing node. */
  418. !     for (br = ret; br != (char *)NULL; br = regnext(br))
  419.       regoptail(br, ender);
  420.   
  421.       /* Check for proper termination. */
  422. ***************
  423. *** 381,387
  424.       *flagp = WORST;        /* Tentatively. */
  425.   
  426.       ret = regnode(BRANCH);
  427. !     chain = NULL;
  428.       while (*regparse != '\0' && *regparse != '|' && *regparse != ')') {
  429.       latest = regpiece(&flags);
  430.       if (latest == NULL)
  431.  
  432. --- 384,390 -----
  433.       *flagp = WORST;        /* Tentatively. */
  434.   
  435.       ret = regnode(BRANCH);
  436. !     chain = (char *)NULL;
  437.       while (*regparse != '\0' && *regparse != '|' && *regparse != ')') {
  438.       latest = regpiece(&flags);
  439.       if (latest == (char *)NULL)
  440. ***************
  441. *** 384,391
  442.       chain = NULL;
  443.       while (*regparse != '\0' && *regparse != '|' && *regparse != ')') {
  444.       latest = regpiece(&flags);
  445. !     if (latest == NULL)
  446. !         return (NULL);
  447.       *flagp |= flags & HASWIDTH;
  448.       if (chain == NULL)    /* First piece. */
  449.           *flagp |= flags & SPSTART;
  450.  
  451. --- 387,394 -----
  452.       chain = (char *)NULL;
  453.       while (*regparse != '\0' && *regparse != '|' && *regparse != ')') {
  454.       latest = regpiece(&flags);
  455. !     if (latest == (char *)NULL)
  456. !         return ((char *)NULL);
  457.       *flagp |= flags & HASWIDTH;
  458.       if (chain == (char *)NULL)    /* First piece. */
  459.           *flagp |= flags & SPSTART;
  460. ***************
  461. *** 387,393
  462.       if (latest == NULL)
  463.           return (NULL);
  464.       *flagp |= flags & HASWIDTH;
  465. !     if (chain == NULL)    /* First piece. */
  466.           *flagp |= flags & SPSTART;
  467.       else
  468.           regtail(chain, latest);
  469.  
  470. --- 390,396 -----
  471.       if (latest == (char *)NULL)
  472.           return ((char *)NULL);
  473.       *flagp |= flags & HASWIDTH;
  474. !     if (chain == (char *)NULL)    /* First piece. */
  475.           *flagp |= flags & SPSTART;
  476.       else
  477.           regtail(chain, latest);
  478. ***************
  479. *** 393,399
  480.           regtail(chain, latest);
  481.       chain = latest;
  482.       }
  483. !     if (chain == NULL)        /* Loop ran zero times. */
  484.       regnode(NOTHING);
  485.   
  486.       return (ret);
  487.  
  488. --- 396,402 -----
  489.           regtail(chain, latest);
  490.       chain = latest;
  491.       }
  492. !     if (chain == (char *)NULL)        /* Loop ran zero times. */
  493.       regnode(NOTHING);
  494.   
  495.       return (ret);
  496. ***************
  497. *** 416,423
  498.       int             flags;
  499.   
  500.       ret = regatom(&flags);
  501. !     if (ret == NULL)
  502. !     return (NULL);
  503.   
  504.       op = *regparse;
  505.       if (!ISMULT(op)) {
  506.  
  507. --- 419,426 -----
  508.       int             flags;
  509.   
  510.       ret = regatom(&flags);
  511. !     if (ret == (char *)NULL)
  512. !     return ((char *)NULL);
  513.   
  514.       op = *regparse;
  515.       if (!ISMULT(op)) {
  516. ***************
  517. *** 509,516
  518.       break;
  519.       case '(':
  520.       ret = reg(1, &flags);
  521. !     if (ret == NULL)
  522. !         return (NULL);
  523.       *flagp |= flags & (HASWIDTH | SPSTART);
  524.       break;
  525.       case '\0':
  526.  
  527. --- 512,519 -----
  528.       break;
  529.       case '(':
  530.       ret = reg(1, &flags);
  531. !     if (ret == (char *)NULL)
  532. !         return ((char *)NULL);
  533.       *flagp |= flags & (HASWIDTH | SPSTART);
  534.       break;
  535.       case '\0':
  536. ***************
  537. *** 638,644
  538.       scan = p;
  539.       for (;;) {
  540.       temp = regnext(scan);
  541. !     if (temp == NULL)
  542.           break;
  543.       scan = temp;
  544.       }
  545.  
  546. --- 641,647 -----
  547.       scan = p;
  548.       for (;;) {
  549.       temp = regnext(scan);
  550. !     if (temp == (char *)NULL)
  551.           break;
  552.       scan = temp;
  553.       }
  554. ***************
  555. *** 659,665
  556.   char           *val;
  557.   {
  558.       /* "Operandless" and "op != BRANCH" are synonymous in practice. */
  559. !     if (p == NULL || p == ®dummy || OP(p) != BRANCH)
  560.       return;
  561.       regtail(OPERAND(p), val);
  562.   }
  563.  
  564. --- 662,668 -----
  565.   char           *val;
  566.   {
  567.       /* "Operandless" and "op != BRANCH" are synonymous in practice. */
  568. !     if (p == (char *)NULL || p == ®dummy || OP(p) != BRANCH)
  569.       return;
  570.       regtail(OPERAND(p), val);
  571.   }
  572. ***************
  573. *** 699,705
  574.       register char  *s;
  575.   
  576.       /* Be paranoid... */
  577. !     if (prog == NULL || string == NULL) {
  578.       regerror("NULL parameter");
  579.       return (0);
  580.       }
  581.  
  582. --- 702,708 -----
  583.       register char  *s;
  584.   
  585.       /* Be paranoid... */
  586. !     if (prog == (regexp *)NULL || string == (char *)NULL) {
  587.       regerror("NULL parameter");
  588.       return (0);
  589.       }
  590. ***************
  591. *** 709,715
  592.       return (0);
  593.       }
  594.       /* If there is a "must appear" string, look for it. */
  595. !     if (prog->regmust != NULL) {
  596.       s = string;
  597.       while ((s = strchr(s, prog->regmust[0])) != NULL) {
  598.           if (strncmp(s, prog->regmust, prog->regmlen) == 0)
  599.  
  600. --- 712,718 -----
  601.       return (0);
  602.       }
  603.       /* If there is a "must appear" string, look for it. */
  604. !     if (prog->regmust != (char *)NULL) {
  605.       s = string;
  606.       while ((s = strchr(s, prog->regmust[0])) != (char *)NULL) {
  607.           if (strncmp(s, prog->regmust, prog->regmlen) == 0)
  608. ***************
  609. *** 711,717
  610.       /* If there is a "must appear" string, look for it. */
  611.       if (prog->regmust != NULL) {
  612.       s = string;
  613. !     while ((s = strchr(s, prog->regmust[0])) != NULL) {
  614.           if (strncmp(s, prog->regmust, prog->regmlen) == 0)
  615.           break;        /* Found it. */
  616.           s++;
  617.  
  618. --- 714,720 -----
  619.       /* If there is a "must appear" string, look for it. */
  620.       if (prog->regmust != (char *)NULL) {
  621.       s = string;
  622. !     while ((s = strchr(s, prog->regmust[0])) != (char *)NULL) {
  623.           if (strncmp(s, prog->regmust, prog->regmlen) == 0)
  624.           break;        /* Found it. */
  625.           s++;
  626. ***************
  627. *** 716,722
  628.           break;        /* Found it. */
  629.           s++;
  630.       }
  631. !     if (s == NULL)        /* Not present. */
  632.           return (0);
  633.       }
  634.       /* Mark beginning of line for ^ . */
  635.  
  636. --- 719,725 -----
  637.           break;        /* Found it. */
  638.           s++;
  639.       }
  640. !     if (s == (char *)NULL)        /* Not present. */
  641.           return (0);
  642.       }
  643.       /* Mark beginning of line for ^ . */
  644. ***************
  645. *** 730,736
  646.       s = string;
  647.       if (prog->regstart != '\0')
  648.       /* We know what char it must start with. */
  649. !     while ((s = strchr(s, prog->regstart)) != NULL) {
  650.           if (regtry(prog, s))
  651.           return (1);
  652.           s++;
  653.  
  654. --- 733,739 -----
  655.       s = string;
  656.       if (prog->regstart != '\0')
  657.       /* We know what char it must start with. */
  658. !     while ((s = strchr(s, prog->regstart)) != (char *)NULL) {
  659.           if (regtry(prog, s))
  660.           return (1);
  661.           s++;
  662. ***************
  663. *** 772,779
  664.       sp = prog->startp;
  665.       ep = prog->endp;
  666.       for (i = NSUBEXP; i > 0; i--) {
  667. !     *sp++ = NULL;
  668. !     *ep++ = NULL;
  669.       }
  670.       if (regmatch(prog->program + 1)) {
  671.       prog->startp[0] = string;
  672.  
  673. --- 775,782 -----
  674.       sp = prog->startp;
  675.       ep = prog->endp;
  676.       for (i = NSUBEXP; i > 0; i--) {
  677. !     *sp++ = (char *)NULL;
  678. !     *ep++ = (char *)NULL;
  679.       }
  680.       if (regmatch(prog->program + 1)) {
  681.       prog->startp[0] = string;
  682. ***************
  683. *** 809,815
  684.   
  685.       scan = prog;
  686.   #ifdef DEBUG
  687. !     if (scan != NULL && regnarrate)
  688.       fprintf(stderr, "%s(\n", regprop(scan));
  689.   #endif
  690.       while (scan != NULL) {
  691.  
  692. --- 812,818 -----
  693.   
  694.       scan = prog;
  695.   #ifdef DEBUG
  696. !     if (scan != (char *)NULL && regnarrate)
  697.       fprintf(stderr, "%s(\n", regprop(scan));
  698.   #endif
  699.       while (scan != (char *)NULL) {
  700. ***************
  701. *** 812,818
  702.       if (scan != NULL && regnarrate)
  703.       fprintf(stderr, "%s(\n", regprop(scan));
  704.   #endif
  705. !     while (scan != NULL) {
  706.   #ifdef DEBUG
  707.       if (regnarrate)
  708.           fprintf(stderr, "%s...\n", regprop(scan));
  709.  
  710. --- 815,821 -----
  711.       if (scan != (char *)NULL && regnarrate)
  712.       fprintf(stderr, "%s(\n", regprop(scan));
  713.   #endif
  714. !     while (scan != (char *)NULL) {
  715.   #ifdef DEBUG
  716.       if (regnarrate)
  717.           fprintf(stderr, "%s...\n", regprop(scan));
  718. ***************
  719. *** 848,854
  720.           }
  721.           break;
  722.       case ANYOF:
  723. !         if (*reginput == '\0' || strchr(OPERAND(scan), *reginput) == NULL)
  724.           return (0);
  725.           reginput++;
  726.           break;
  727.  
  728. --- 851,858 -----
  729.           }
  730.           break;
  731.       case ANYOF:
  732. !         if (*reginput == '\0' || 
  733. !          strchr(OPERAND(scan), *reginput) == (char *)NULL)
  734.           return (0);
  735.           reginput++;
  736.           break;
  737. ***************
  738. *** 853,859
  739.           reginput++;
  740.           break;
  741.       case ANYBUT:
  742. !         if (*reginput == '\0' || strchr(OPERAND(scan), *reginput) != NULL)
  743.           return (0);
  744.           reginput++;
  745.           break;
  746.  
  747. --- 857,864 -----
  748.           reginput++;
  749.           break;
  750.       case ANYBUT:
  751. !         if (*reginput == '\0' || 
  752. !          strchr(OPERAND(scan), *reginput) != (char *)NULL)
  753.           return (0);
  754.           reginput++;
  755.           break;
  756. ***************
  757. *** 881,887
  758.                * Don't set startp if some later invocation of the same
  759.                * parentheses already has. 
  760.                */
  761. !             if (regstartp[no] == NULL)
  762.               regstartp[no] = save;
  763.               return (1);
  764.           } else
  765.  
  766. --- 886,892 -----
  767.                * Don't set startp if some later invocation of the same
  768.                * parentheses already has. 
  769.                */
  770. !             if (regstartp[no] == (char *)NULL)
  771.               regstartp[no] = save;
  772.               return (1);
  773.           } else
  774. ***************
  775. *** 908,914
  776.                * Don't set endp if some later invocation of the same
  777.                * parentheses already has. 
  778.                */
  779. !             if (regendp[no] == NULL)
  780.               regendp[no] = save;
  781.               return (1);
  782.           } else
  783.  
  784. --- 913,919 -----
  785.                * Don't set endp if some later invocation of the same
  786.                * parentheses already has. 
  787.                */
  788. !             if (regendp[no] == (char *)NULL)
  789.               regendp[no] = save;
  790.               return (1);
  791.           } else
  792. ***************
  793. *** 927,933
  794.                   return (1);
  795.               reginput = save;
  796.               scan = regnext(scan);
  797. !             } while (scan != NULL && OP(scan) == BRANCH);
  798.               return (0);
  799.               /* NOTREACHED */
  800.           }
  801.  
  802. --- 932,938 -----
  803.                   return (1);
  804.               reginput = save;
  805.               scan = regnext(scan);
  806. !             } while (scan != (char *)NULL && OP(scan) == BRANCH);
  807.               return (0);
  808.               /* NOTREACHED */
  809.           }
  810. ***************
  811. *** 937,943
  812.           register char   nextch;
  813.           register int    no;
  814.           register char  *save;
  815. !         register int    min;
  816.   
  817.           /*
  818.            * Lookahead to avoid useless match attempts when we know
  819.  
  820. --- 942,948 -----
  821.           register char   nextch;
  822.           register int    no;
  823.           register char  *save;
  824. !         register int    minimum;
  825.   
  826.           /*
  827.            * Lookahead to avoid useless match attempts when we know
  828. ***************
  829. *** 946,952
  830.           nextch = '\0';
  831.           if (OP(nxt) == EXACTLY)
  832.               nextch = *OPERAND(nxt);
  833. !         min = (OP(scan) == STAR) ? 0 : 1;
  834.           save = reginput;
  835.           no = regrepeat(OPERAND(scan));
  836.           while (no >= min) {
  837.  
  838. --- 951,957 -----
  839.           nextch = '\0';
  840.           if (OP(nxt) == EXACTLY)
  841.               nextch = *OPERAND(nxt);
  842. !         minimum = (OP(scan) == STAR) ? 0 : 1;
  843.           save = reginput;
  844.           no = regrepeat(OPERAND(scan));
  845.           while (no >= minimum) {
  846. ***************
  847. *** 949,955
  848.           min = (OP(scan) == STAR) ? 0 : 1;
  849.           save = reginput;
  850.           no = regrepeat(OPERAND(scan));
  851. !         while (no >= min) {
  852.               /* If it could work, try it. */
  853.               if (nextch == '\0' || *reginput == nextch)
  854.               if (regmatch(nxt))
  855.  
  856. --- 954,960 -----
  857.           minimum = (OP(scan) == STAR) ? 0 : 1;
  858.           save = reginput;
  859.           no = regrepeat(OPERAND(scan));
  860. !         while (no >= minimum) {
  861.               /* If it could work, try it. */
  862.               if (nextch == '\0' || *reginput == nextch)
  863.               if (regmatch(nxt))
  864. ***************
  865. *** 1013,1019
  866.       }
  867.       break;
  868.       case ANYOF:
  869. !     while (*scan != '\0' && strchr(opnd, *scan) != NULL) {
  870.           count++;
  871.           scan++;
  872.       }
  873.  
  874. --- 1018,1024 -----
  875.       }
  876.       break;
  877.       case ANYOF:
  878. !     while (*scan != '\0' && strchr(opnd, *scan) != (char *)NULL) {
  879.           count++;
  880.           scan++;
  881.       }
  882. ***************
  883. *** 1019,1025
  884.       }
  885.       break;
  886.       case ANYBUT:
  887. !     while (*scan != '\0' && strchr(opnd, *scan) == NULL) {
  888.           count++;
  889.           scan++;
  890.       }
  891.  
  892. --- 1024,1030 -----
  893.       }
  894.       break;
  895.       case ANYBUT:
  896. !     while (*scan != '\0' && strchr(opnd, *scan) == (char *)NULL) {
  897.           count++;
  898.           scan++;
  899.       }
  900. ***************
  901. *** 1052,1058
  902.       register int    offset;
  903.   
  904.       if (p == ®dummy)
  905. !     return (NULL);
  906.   
  907.       offset = NEXT(p);
  908.       if (offset == 0)
  909.  
  910. --- 1057,1063 -----
  911.       register int    offset;
  912.   
  913.       if (p == ®dummy)
  914. !     return ((char *)NULL);
  915.   
  916.       offset = NEXT(p);
  917.       if (offset == 0)
  918. ***************
  919. *** 1056,1062
  920.   
  921.       offset = NEXT(p);
  922.       if (offset == 0)
  923. !     return (NULL);
  924.   
  925.       if (OP(p) == BACK)
  926.       return (p - offset);
  927.  
  928. --- 1061,1067 -----
  929.   
  930.       offset = NEXT(p);
  931.       if (offset == 0)
  932. !     return ((char *)NULL);
  933.   
  934.       if (OP(p) == BACK)
  935.       return (p - offset);
  936. ***************
  937. *** 1093,1099
  938.       op = OP(s);
  939.       printf("%2d%s", s - r->program, regprop(s));    /* Where, what. */
  940.       nxt = regnext(s);
  941. !     if (nxt == NULL)    /* nxt ptr. */
  942.           printf("(0)");
  943.       else
  944.           printf("(%d)", (s - r->program) + (nxt - s));
  945.  
  946. --- 1098,1104 -----
  947.       op = OP(s);
  948.       printf("%2d%s", s - r->program, regprop(s));    /* Where, what. */
  949.       nxt = regnext(s);
  950. !     if (nxt == (char *)NULL)    /* nxt ptr. */
  951.           printf("(0)");
  952.       else
  953.           printf("(%d)", (s - r->program) + (nxt - s));
  954. ***************
  955. *** 1114,1120
  956.       printf("start `%c' ", r->regstart);
  957.       if (r->reganch)
  958.       printf("anchored ");
  959. !     if (r->regmust != NULL)
  960.       printf("must have \"%s\"", r->regmust);
  961.       printf("\n");
  962.   }
  963.  
  964. --- 1119,1125 -----
  965.       printf("start `%c' ", r->regstart);
  966.       if (r->reganch)
  967.       printf("anchored ");
  968. !     if (r->regmust != (char *)NULL)
  969.       printf("must have \"%s\"", r->regmust);
  970.       printf("\n");
  971.   }
  972. ***************
  973. *** 1179,1185
  974.       case OPEN + 8:
  975.       case OPEN + 9:
  976.       sprintf(buf + strlen(buf), "OPEN%d", OP(op) - OPEN);
  977. !     p = NULL;
  978.       break;
  979.       case CLOSE + 1:
  980.       case CLOSE + 2:
  981.  
  982. --- 1184,1190 -----
  983.       case OPEN + 8:
  984.       case OPEN + 9:
  985.       sprintf(buf + strlen(buf), "OPEN%d", OP(op) - OPEN);
  986. !     p = (char *)NULL;
  987.       break;
  988.       case CLOSE + 1:
  989.       case CLOSE + 2:
  990. ***************
  991. *** 1191,1197
  992.       case CLOSE + 8:
  993.       case CLOSE + 9:
  994.       sprintf(buf + strlen(buf), "CLOSE%d", OP(op) - CLOSE);
  995. !     p = NULL;
  996.       break;
  997.       case STAR:
  998.       p = "STAR";
  999.  
  1000. --- 1196,1202 -----
  1001.       case CLOSE + 8:
  1002.       case CLOSE + 9:
  1003.       sprintf(buf + strlen(buf), "CLOSE%d", OP(op) - CLOSE);
  1004. !     p = (char *)NULL;
  1005.       break;
  1006.       case STAR:
  1007.       p = "STAR";
  1008. ***************
  1009. *** 1200,1206
  1010.       regerror("corrupted opcode");
  1011.       break;
  1012.       }
  1013. !     if (p != NULL)
  1014.       strcat(buf, p);
  1015.       return (buf);
  1016.   }
  1017.  
  1018. --- 1205,1211 -----
  1019.       regerror("corrupted opcode");
  1020.       break;
  1021.       }
  1022. !     if (p != (char *)NULL)
  1023.       strcat(buf, p);
  1024.       return (buf);
  1025.   }
  1026. ***************
  1027. *** 1269,1275
  1028.       register int    len;
  1029.       extern char    *strncpy();
  1030.   
  1031. !     if (prog == NULL || source == NULL || dest == NULL) {
  1032.       regerror("NULL parm to regsub");
  1033.       return;
  1034.       }
  1035.  
  1036. --- 1274,1281 -----
  1037.       register int    len;
  1038.       extern char    *strncpy();
  1039.   
  1040. !     if (prog == (regexp *)NULL || 
  1041. !     source == (char *)NULL || dest == (char *)NULL) {
  1042.       regerror("NULL parm to regsub");
  1043.       return;
  1044.       }
  1045. ***************
  1046. *** 1291,1297
  1047.           if (c == '\\' && (*src == '\\' || *src == '&'))
  1048.           c = *src++;
  1049.           *dst++ = c;
  1050. !     } else if (prog->startp[no] != NULL && prog->endp[no] != NULL) {
  1051.           len = prog->endp[no] - prog->startp[no];
  1052.           strncpy(dst, prog->startp[no], len);
  1053.           dst += len;
  1054.  
  1055. --- 1297,1304 -----
  1056.           if (c == '\\' && (*src == '\\' || *src == '&'))
  1057.           c = *src++;
  1058.           *dst++ = c;
  1059. !     } else if (prog->startp[no] != (char *)NULL && 
  1060. !            prog->endp[no] != (char *)NULL) {
  1061.           len = prog->endp[no] - prog->startp[no];
  1062.           strncpy(dst, prog->startp[no], len);
  1063.           dst += len;
  1064. Index: replace.c
  1065. *** /tmp/,RCSt1a17153    Sun Feb 12 14:09:24 1989
  1066. --- replace.c    Sun Feb 12 14:02:36 1989
  1067. ***************
  1068. *** 1,6
  1069.   /* $Source: /u/mark/src/pax/RCS/replace.c,v $
  1070.    *
  1071. !  * $Revision: 1.1 $
  1072.    *
  1073.    * replace.c - regular expression pattern replacement functions
  1074.    *
  1075.  
  1076. --- 1,6 -----
  1077.   /* $Source: /u/mark/src/pax/RCS/replace.c,v $
  1078.    *
  1079. !  * $Revision: 1.2 $
  1080.    *
  1081.    * replace.c - regular expression pattern replacement functions
  1082.    *
  1083. ***************
  1084. *** 27,33
  1085.    *
  1086.    * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
  1087.    * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  1088. !  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  1089.    *
  1090.    * $Log:    replace.c,v $
  1091.    * Revision 1.1  88/12/23  18:02:36  mark
  1092.  
  1093. --- 27,33 -----
  1094.    *
  1095.    * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
  1096.    * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  1097. !  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  1098.    *
  1099.    * $Log:    replace.c,v $
  1100.    * Revision 1.2  89/02/12  10:05:59  mark
  1101. ***************
  1102. *** 30,35
  1103.    * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  1104.    *
  1105.    * $Log:    replace.c,v $
  1106.    * Revision 1.1  88/12/23  18:02:36  mark
  1107.    * Initial revision
  1108.    * 
  1109.  
  1110. --- 30,38 -----
  1111.    * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  1112.    *
  1113.    * $Log:    replace.c,v $
  1114. +  * Revision 1.2  89/02/12  10:05:59  mark
  1115. +  * 1.2 release fixes
  1116. +  * 
  1117.    * Revision 1.1  88/12/23  18:02:36  mark
  1118.    * Initial revision
  1119.    * 
  1120. ***************
  1121. *** 36,42
  1122.    */
  1123.   
  1124.   #ifndef lint
  1125. ! static char *ident = "$Id: replace.c,v 1.1 88/12/23 18:02:36 mark Rel $";
  1126.   static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n";
  1127.   #endif /* not lint */
  1128.   
  1129.  
  1130. --- 39,45 -----
  1131.    */
  1132.   
  1133.   #ifndef lint
  1134. ! static char *ident = "$Id: replace.c,v 1.2 89/02/12 10:05:59 mark Exp $";
  1135.   static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n";
  1136.   #endif /* not lint */
  1137.   
  1138. ***************
  1139. *** 78,84
  1140.            "Malformed substitution syntax");
  1141.       return;
  1142.       }
  1143. !     if ((rptr = (Replstr *) malloc(sizeof(Replstr))) == NULL) {
  1144.       warn("Replacement string not added", "No space");
  1145.       return;
  1146.       }
  1147.  
  1148. --- 81,87 -----
  1149.            "Malformed substitution syntax");
  1150.       return;
  1151.       }
  1152. !     if ((rptr = (Replstr *) malloc(sizeof(Replstr))) == (Replstr *)NULL) {
  1153.       warn("Replacement string not added", "No space");
  1154.       return;
  1155.       }
  1156. ***************
  1157. *** 130,136
  1158.        * Now pattern points to 'old' and p points to 'new' and both are '\0'
  1159.        * terminated 
  1160.        */
  1161. !     if ((rptr->comp = regcomp(pattern)) == NULL) {
  1162.       warn("Replacement string not added", "Invalid RE");
  1163.       free(rptr);
  1164.       return;
  1165.  
  1166. --- 133,139 -----
  1167.        * Now pattern points to 'old' and p points to 'new' and both are '\0'
  1168.        * terminated 
  1169.        */
  1170. !     if ((rptr->comp = regcomp(pattern)) == (regexp *)NULL) {
  1171.       warn("Replacement string not added", "Invalid RE");
  1172.       free(rptr);
  1173.       return;
  1174. ***************
  1175. *** 136,143
  1176.       return;
  1177.       }
  1178.       rptr->replace = p;
  1179. !     rptr->next = NULL;
  1180. !     if (rplhead == NULL) {
  1181.       rplhead = rptr;
  1182.       rpltail = rptr;
  1183.       } else {
  1184.  
  1185. --- 139,146 -----
  1186.       return;
  1187.       }
  1188.       rptr->replace = p;
  1189. !     rptr->next = (Replstr *)NULL;
  1190. !     if (rplhead == (Replstr *)NULL) {
  1191.       rplhead = rptr;
  1192.       rpltail = rptr;
  1193.       } else {
  1194. ***************
  1195. *** 182,188
  1196.       char           *b;
  1197.   
  1198.       strcpy(buff, name);
  1199. !     for (rptr = rplhead; !found && rptr != NULL; rptr = rptr->next) {
  1200.       do {
  1201.           if ((ret = regexec(rptr->comp, buff)) != 0) {
  1202.           p = buff;
  1203.  
  1204. --- 185,191 -----
  1205.       char           *b;
  1206.   
  1207.       strcpy(buff, name);
  1208. !     for (rptr = rplhead; !found && rptr != (Replstr *)NULL; rptr = rptr->next) {
  1209.       do {
  1210.           if ((ret = regexec(rptr->comp, buff)) != 0) {
  1211.           p = buff;
  1212. Index: tar.1
  1213. *** /tmp/,RCSt1a17158    Sun Feb 12 14:09:31 1989
  1214. --- tar.1    Sun Feb 12 14:02:37 1989
  1215. ***************
  1216. *** 1,4
  1217. ! .\" $Id: tar.1,v 1.1 88/12/23 18:02:37 mark Rel $
  1218.   .TH TAR 1 "USENIX Association" ""
  1219.   .SH NAME
  1220.   tar \- process tape archives
  1221.  
  1222. --- 1,4 -----
  1223. ! .\" $Id: tar.1,v 1.2 89/02/12 10:08:55 mark Exp $
  1224.   .TH TAR 1 "USENIX Association" ""
  1225.   .SH NAME
  1226.   tar \- process tape archives
  1227. ***************
  1228. *** 178,184
  1229.   .PP
  1230.   THE SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
  1231.   IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  1232. ! WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  1233.   .SH AUTHOR
  1234.   Mark H. Colburn
  1235.   .br
  1236.  
  1237. --- 178,184 -----
  1238.   .PP
  1239.   THE SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
  1240.   IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  1241. ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  1242.   .SH AUTHOR
  1243.   Mark H. Colburn
  1244.   .br
  1245. Index: tar.c
  1246. *** /tmp/,RCSt1a17163    Sun Feb 12 14:09:37 1989
  1247. --- tar.c    Sun Feb 12 14:02:38 1989
  1248. ***************
  1249. *** 1,6
  1250.   /* $Source: /u/mark/src/pax/RCS/tar.c,v $
  1251.    *
  1252. !  * $Revision: 1.1 $
  1253.    *
  1254.    * tar.c - tar specific functions for archive handling
  1255.    *
  1256.  
  1257. --- 1,6 -----
  1258.   /* $Source: /u/mark/src/pax/RCS/tar.c,v $
  1259.    *
  1260. !  * $Revision: 1.2 $
  1261.    *
  1262.    * tar.c - tar specific functions for archive handling
  1263.    *
  1264. ***************
  1265. *** 27,33
  1266.    *
  1267.    * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
  1268.    * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  1269. !  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  1270.    *
  1271.    * $Log:    tar.c,v $
  1272.    * Revision 1.1  88/12/23  18:02:38  mark
  1273.  
  1274. --- 27,33 -----
  1275.    *
  1276.    * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
  1277.    * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  1278. !  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  1279.    *
  1280.    * $Log:    tar.c,v $
  1281.    * Revision 1.2  89/02/12  10:06:05  mark
  1282. ***************
  1283. *** 30,35
  1284.    * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  1285.    *
  1286.    * $Log:    tar.c,v $
  1287.    * Revision 1.1  88/12/23  18:02:38  mark
  1288.    * Initial revision
  1289.    * 
  1290.  
  1291. --- 30,38 -----
  1292.    * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  1293.    *
  1294.    * $Log:    tar.c,v $
  1295. +  * Revision 1.2  89/02/12  10:06:05  mark
  1296. +  * 1.2 release fixes
  1297. +  * 
  1298.    * Revision 1.1  88/12/23  18:02:38  mark
  1299.    * Initial revision
  1300.    * 
  1301. ***************
  1302. *** 36,42
  1303.    */
  1304.   
  1305.   #ifndef lint
  1306. ! static char *ident = "$Id: tar.c,v 1.1 88/12/23 18:02:38 mark Rel $";
  1307.   static char *copyright ="Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.";
  1308.   #endif /* not lint */
  1309.   
  1310.  
  1311. --- 39,45 -----
  1312.    */
  1313.   
  1314.   #ifndef lint
  1315. ! static char *ident = "$Id: tar.c,v 1.2 89/02/12 10:06:05 mark Exp $";
  1316.   static char *copyright ="Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.";
  1317.   #endif /* not lint */
  1318.   
  1319. ***************
  1320. *** 109,116
  1321.        * of the tar and/or cpio interfaces...
  1322.        */
  1323.       f_unconditional = 1;
  1324. !     f_modification_time = 1;
  1325. !     f_create_dirs = 1;
  1326.       blocking = 0;
  1327.       ar_interface = TAR;
  1328.       ar_format = TAR;
  1329.  
  1330. --- 112,119 -----
  1331.        * of the tar and/or cpio interfaces...
  1332.        */
  1333.       f_unconditional = 1;
  1334. !     f_mtime = 1;
  1335. !     f_dir_create = 1;
  1336.       blocking = 0;
  1337.       ar_interface = TAR;
  1338.       ar_format = TAR;
  1339. ***************
  1340. *** 114,120
  1341.       blocking = 0;
  1342.       ar_interface = TAR;
  1343.       ar_format = TAR;
  1344. !     msgfile=stdout;
  1345.   
  1346.       /* Parse options */
  1347.       while ((c = taropt(argc, argv, "b:cf:hlmortuvwx")) != EOF) {
  1348.  
  1349. --- 117,123 -----
  1350.       blocking = 0;
  1351.       ar_interface = TAR;
  1352.       ar_format = TAR;
  1353. !     msgfile=stderr;
  1354.   
  1355.       /* Parse options */
  1356.       while ((c = taropt(argc, argv, "b:cf:hlmortuvwx")) != EOF) {
  1357. ***************
  1358. *** 258,264
  1359.       char            c;
  1360.       char           *place;
  1361.   
  1362. !     optarg = NULL;
  1363.   
  1364.       if (key == NULL) {        /* First time */
  1365.       if (argc < 2)
  1366.  
  1367. --- 261,267 -----
  1368.       char            c;
  1369.       char           *place;
  1370.   
  1371. !     optarg = (char *)NULL;
  1372.   
  1373.       if (key == (char *)NULL) {        /* First time */
  1374.       if (argc < 2)
  1375. ***************
  1376. *** 260,266
  1377.   
  1378.       optarg = NULL;
  1379.   
  1380. !     if (key == NULL) {        /* First time */
  1381.       if (argc < 2)
  1382.           return EOF;
  1383.       key = argv[1];
  1384.  
  1385. --- 263,269 -----
  1386.   
  1387.       optarg = (char *)NULL;
  1388.   
  1389. !     if (key == (char *)NULL) {        /* First time */
  1390.       if (argc < 2)
  1391.           return EOF;
  1392.       key = argv[1];
  1393. ***************
  1394. *** 280,286
  1395.       }
  1396.       place = strchr(optstring, c);
  1397.   
  1398. !     if (place == NULL || c == ':') {
  1399.       fprintf(stderr, "%s: unknown option %c\n", argv[0], c);
  1400.       return ('?');
  1401.       }
  1402.  
  1403. --- 283,289 -----
  1404.       }
  1405.       place = strchr(optstring, c);
  1406.   
  1407. !     if (place == (char *)NULL || c == ':') {
  1408.       fprintf(stderr, "%s: unknown option %c\n", argv[0], c);
  1409.       return ('?');
  1410.       }
  1411. ***************
  1412. *** 323,337
  1413.   
  1414.   #endif
  1415.   {
  1416. !     fprintf(stderr, "\
  1417. ! Usage: %s -c[bfvw] device block filename..\n", myname);
  1418. !     fprintf(stderr, "\
  1419. !        %s -r[bvw] device block [filename...]\n", myname);
  1420. !     fprintf(stderr, "\
  1421. !        %s -t[vf] device\n", myname);
  1422. !     fprintf(stderr, "\
  1423. !        %s -u[bvw] device block [filename...]\n", myname);
  1424. !     fprintf(stderr, "\
  1425. !        %s -x[flmovw] device [filename...]\n", myname);
  1426.       exit(1);
  1427.   }
  1428.  
  1429. --- 326,335 -----
  1430.   
  1431.   #endif
  1432.   {
  1433. !     fprintf(stderr, "Usage: %s -c[bfvw] device block filename..\n", myname);
  1434. !     fprintf(stderr, "       %s -r[bvw] device block [filename...]\n", myname);
  1435. !     fprintf(stderr, "       %s -t[vf] device\n", myname);
  1436. !     fprintf(stderr, "       %s -u[bvw] device block [filename...]\n", myname);
  1437. !     fprintf(stderr, "       %s -x[flmovw] device [filename...]\n", myname);
  1438.       exit(1);
  1439.   }
  1440. Index: ttyio.c
  1441. *** /tmp/,RCSt1a17168    Sun Feb 12 14:09:46 1989
  1442. --- ttyio.c    Sun Feb 12 14:02:39 1989
  1443. ***************
  1444. *** 1,6
  1445.   /* $Source: /u/mark/src/pax/RCS/ttyio.c,v $
  1446.    *
  1447. !  * $Revision: 1.1 $
  1448.    *
  1449.    * ttyio.c - Terminal/Console I/O functions for all archive interfaces
  1450.    *
  1451.  
  1452. --- 1,6 -----
  1453.   /* $Source: /u/mark/src/pax/RCS/ttyio.c,v $
  1454.    *
  1455. !  * $Revision: 1.2 $
  1456.    *
  1457.    * ttyio.c - Terminal/Console I/O functions for all archive interfaces
  1458.    *
  1459. ***************
  1460. *** 28,34
  1461.    *
  1462.    * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
  1463.    * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  1464. !  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  1465.    *
  1466.    * $Log:    ttyio.c,v $
  1467.    * Revision 1.1  88/12/23  18:02:39  mark
  1468.  
  1469. --- 28,34 -----
  1470.    *
  1471.    * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
  1472.    * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  1473. !  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  1474.    *
  1475.    * $Log:    ttyio.c,v $
  1476.    * Revision 1.2  89/02/12  10:06:11  mark
  1477. ***************
  1478. *** 31,36
  1479.    * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  1480.    *
  1481.    * $Log:    ttyio.c,v $
  1482.    * Revision 1.1  88/12/23  18:02:39  mark
  1483.    * Initial revision
  1484.    * 
  1485.  
  1486. --- 31,39 -----
  1487.    * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  1488.    *
  1489.    * $Log:    ttyio.c,v $
  1490. +  * Revision 1.2  89/02/12  10:06:11  mark
  1491. +  * 1.2 release fixes
  1492. +  * 
  1493.    * Revision 1.1  88/12/23  18:02:39  mark
  1494.    * Initial revision
  1495.    * 
  1496. ***************
  1497. *** 37,43
  1498.    */
  1499.   
  1500.   #ifndef lint
  1501. ! static char *ident = "$Id: ttyio.c,v 1.1 88/12/23 18:02:39 mark Rel $";
  1502.   static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n";
  1503.   #endif /* ! lint */
  1504.   
  1505.  
  1506. --- 40,46 -----
  1507.    */
  1508.   
  1509.   #ifndef lint
  1510. ! static char *ident = "$Id: ttyio.c,v 1.2 89/02/12 10:06:11 mark Exp $";
  1511.   static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n";
  1512.   #endif /* ! lint */
  1513.   
  1514. ***************
  1515. *** 158,164
  1516.           return(-1);
  1517.       }
  1518.       if (got < 0) {
  1519. !     fatal(syserr());
  1520.       }
  1521.       answer[idx] = '\0';
  1522.       return(0);
  1523.  
  1524. --- 161,167 -----
  1525.           return(-1);
  1526.       }
  1527.       if (got < 0) {
  1528. !     fatal(strerror());
  1529.       }
  1530.       answer[idx] = '\0';
  1531.       return(0);
  1532. ***************
  1533. *** 244,252
  1534.   
  1535.       close_archive();
  1536.   
  1537. !     sprintf(msg, "\
  1538. ! %s: Ready for volume %u\n\
  1539. ! %s: Type \"go\" when ready to proceed (or \"quit\" to abort): \07",
  1540.              myname, arvolume + 1, myname);
  1541.       for (;;) {
  1542.       ret = nextask(msg, answer, sizeof(answer));
  1543.  
  1544. --- 247,253 -----
  1545.   
  1546.       close_archive();
  1547.   
  1548. !     sprintf(msg, "%s: Ready for volume %u\n%s: Type \"go\" when ready to proceed (or \"quit\" to abort): \07",
  1549.              myname, arvolume + 1, myname);
  1550.       for (;;) {
  1551.       ret = nextask(msg, answer, sizeof(answer));
  1552. Index: warn.c
  1553. *** /tmp/,RCSt1a17173    Sun Feb 12 14:09:53 1989
  1554. --- warn.c    Sun Feb 12 14:02:41 1989
  1555. ***************
  1556. *** 1,6
  1557.   /* $Source: /u/mark/src/pax/RCS/warn.c,v $
  1558.    *
  1559. !  * $Revision: 1.1 $
  1560.    *
  1561.    * warn.c - miscellaneous user warning routines 
  1562.    *
  1563.  
  1564. --- 1,6 -----
  1565.   /* $Source: /u/mark/src/pax/RCS/warn.c,v $
  1566.    *
  1567. !  * $Revision: 1.2 $
  1568.    *
  1569.    * warn.c - miscellaneous user warning routines 
  1570.    *
  1571. ***************
  1572. *** 27,33
  1573.    *
  1574.    * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
  1575.    * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  1576. !  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  1577.    *
  1578.    * $Log:    warn.c,v $
  1579.    * Revision 1.1  88/12/23  18:02:40  mark
  1580.  
  1581. --- 27,33 -----
  1582.    *
  1583.    * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
  1584.    * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  1585. !  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  1586.    *
  1587.    * $Log:    warn.c,v $
  1588.    * Revision 1.2  89/02/12  10:06:15  mark
  1589. ***************
  1590. *** 30,35
  1591.    * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  1592.    *
  1593.    * $Log:    warn.c,v $
  1594.    * Revision 1.1  88/12/23  18:02:40  mark
  1595.    * Initial revision
  1596.    * 
  1597.  
  1598. --- 30,38 -----
  1599.    * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  1600.    *
  1601.    * $Log:    warn.c,v $
  1602. +  * Revision 1.2  89/02/12  10:06:15  mark
  1603. +  * 1.2 release fixes
  1604. +  * 
  1605.    * Revision 1.1  88/12/23  18:02:40  mark
  1606.    * Initial revision
  1607.    * 
  1608. ***************
  1609. *** 36,42
  1610.    */
  1611.   
  1612.   #ifndef lint
  1613. ! static char *ident = "$Id: warn.c,v 1.1 88/12/23 18:02:40 mark Rel $";
  1614.   static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n";
  1615.   #endif /* ! lint */
  1616.   
  1617.  
  1618. --- 39,45 -----
  1619.    */
  1620.   
  1621.   #ifndef lint
  1622. ! static char *ident = "$Id: warn.c,v 1.2 89/02/12 10:06:15 mark Exp $";
  1623.   static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n";
  1624.   #endif /* ! lint */
  1625.   
  1626. ***************
  1627. *** 93,99
  1628.   }
  1629.   
  1630.   
  1631. ! /* syserr - return pointer to appropriate system error message
  1632.    *
  1633.    * DESCRIPTION
  1634.    *
  1635.  
  1636. --- 96,102 -----
  1637.   }
  1638.   
  1639.   
  1640. ! /* strerror - return pointer to appropriate system error message
  1641.    *
  1642.    * DESCRIPTION
  1643.    *
  1644. ***************
  1645. *** 112,118
  1646.   
  1647.   #ifdef __STDC__
  1648.   
  1649. ! char *syserr(void)
  1650.   
  1651.   #else
  1652.   
  1653.  
  1654. --- 115,121 -----
  1655.   
  1656.   #ifdef __STDC__
  1657.   
  1658. ! char *strerror(void)
  1659.   
  1660.   #else
  1661.   
  1662. ***************
  1663. *** 116,122
  1664.   
  1665.   #else
  1666.   
  1667. ! char *syserr()
  1668.   
  1669.   #endif
  1670.   {
  1671.  
  1672. --- 119,125 -----
  1673.   
  1674.   #else
  1675.   
  1676. ! char *strerror()
  1677.   
  1678.   #endif
  1679.   {
  1680. ***************
  1681. *** 162,168
  1682.   {
  1683.       OFFSET          n;
  1684.   
  1685. !     if (n = (size / (1024 * 1024))) {
  1686.       fprintf(stream, "%ldm+", n);
  1687.       size -= n * 1024 * 1024;
  1688.       }
  1689.  
  1690. --- 165,171 -----
  1691.   {
  1692.       OFFSET          n;
  1693.   
  1694. !     if (n = (size / (1024L * 1024L))) {
  1695.       fprintf(stream, "%ldm+", n);
  1696.       size -= n * 1024L * 1024L;
  1697.       }
  1698. ***************
  1699. *** 164,170
  1700.   
  1701.       if (n = (size / (1024 * 1024))) {
  1702.       fprintf(stream, "%ldm+", n);
  1703. !     size -= n * 1024 * 1024;
  1704.       }
  1705.       if (n = (size / 1024)) {
  1706.       fprintf(stream, "%ldk+", n);
  1707.  
  1708. --- 167,173 -----
  1709.   
  1710.       if (n = (size / (1024L * 1024L))) {
  1711.       fprintf(stream, "%ldm+", n);
  1712. !     size -= n * 1024L * 1024L;
  1713.       }
  1714.       if (n = (size / 1024L)) {
  1715.       fprintf(stream, "%ldk+", n);
  1716. ***************
  1717. *** 166,172
  1718.       fprintf(stream, "%ldm+", n);
  1719.       size -= n * 1024 * 1024;
  1720.       }
  1721. !     if (n = (size / 1024)) {
  1722.       fprintf(stream, "%ldk+", n);
  1723.       size -= n * 1024;
  1724.       }
  1725.  
  1726. --- 169,175 -----
  1727.       fprintf(stream, "%ldm+", n);
  1728.       size -= n * 1024L * 1024L;
  1729.       }
  1730. !     if (n = (size / 1024L)) {
  1731.       fprintf(stream, "%ldk+", n);
  1732.       size -= n * 1024L;
  1733.       }
  1734. ***************
  1735. *** 168,174
  1736.       }
  1737.       if (n = (size / 1024)) {
  1738.       fprintf(stream, "%ldk+", n);
  1739. !     size -= n * 1024;
  1740.       }
  1741.       fprintf(stream, "%ld", size);
  1742.   }
  1743.  
  1744. --- 171,177 -----
  1745.       }
  1746.       if (n = (size / 1024L)) {
  1747.       fprintf(stream, "%ldk+", n);
  1748. !     size -= n * 1024L;
  1749.       }
  1750.       fprintf(stream, "%ld", size);
  1751.   }
  1752. Index: wildmat.c
  1753. *** /tmp/,RCSt1a17178    Sun Feb 12 14:09:59 1989
  1754. --- wildmat.c    Sun Feb 12 14:02:42 1989
  1755. ***************
  1756. *** 1,6
  1757.   /* $Source: /u/mark/src/pax/RCS/wildmat.c,v $
  1758.    *
  1759. !  * $Revision: 1.1 $
  1760.    *
  1761.    * wildmat.c - simple regular expression pattern matching routines 
  1762.    *
  1763.  
  1764. --- 1,6 -----
  1765.   /* $Source: /u/mark/src/pax/RCS/wildmat.c,v $
  1766.    *
  1767. !  * $Revision: 1.2 $
  1768.    *
  1769.    * wildmat.c - simple regular expression pattern matching routines 
  1770.    *
  1771. ***************
  1772. *** 33,39
  1773.    *
  1774.    * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
  1775.    * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  1776. !  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  1777.    *
  1778.    * $Log:    wildmat.c,v $
  1779.    * Revision 1.1  88/12/23  18:02:41  mark
  1780.  
  1781. --- 33,39 -----
  1782.    *
  1783.    * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
  1784.    * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  1785. !  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  1786.    *
  1787.    * $Log:    wildmat.c,v $
  1788.    * Revision 1.2  89/02/12  10:06:20  mark
  1789. ***************
  1790. *** 36,41
  1791.    * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  1792.    *
  1793.    * $Log:    wildmat.c,v $
  1794.    * Revision 1.1  88/12/23  18:02:41  mark
  1795.    * Initial revision
  1796.    * 
  1797.  
  1798. --- 36,44 -----
  1799.    * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  1800.    *
  1801.    * $Log:    wildmat.c,v $
  1802. +  * Revision 1.2  89/02/12  10:06:20  mark
  1803. +  * 1.2 release fixes
  1804. +  * 
  1805.    * Revision 1.1  88/12/23  18:02:41  mark
  1806.    * Initial revision
  1807.    * 
  1808. ***************
  1809. *** 42,48
  1810.    */
  1811.   
  1812.   #ifndef lint
  1813. ! static char *ident = "$Id: wildmat.c,v 1.1 88/12/23 18:02:41 mark Rel $";
  1814.   static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n";
  1815.   #endif /* ! lint */
  1816.   
  1817.  
  1818. --- 45,51 -----
  1819.    */
  1820.   
  1821.   #ifndef lint
  1822. ! static char *ident = "$Id: wildmat.c,v 1.2 89/02/12 10:06:20 mark Exp $";
  1823.   static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n";
  1824.   #endif /* ! lint */
  1825.   
  1826. ***************
  1827. *** 97,103
  1828.   
  1829.   #endif
  1830.   {
  1831. !     while (!wildmat(source, pattern)) {
  1832.       if (*++source == '\0') {
  1833.           return (0);
  1834.       }
  1835.  
  1836. --- 100,106 -----
  1837.   
  1838.   #endif
  1839.   {
  1840. !     while (!wildmat(pattern, source)) {
  1841.       if (*++source == '\0') {
  1842.           return (0);
  1843.       }
  1844. ***************
  1845. *** 118,125
  1846.    *
  1847.    * PARAMETERS 
  1848.    *
  1849. -  *     char *source     - The source string which is to be compared to the 
  1850. -  *              regular expression pattern. 
  1851.    *     char *pattern     - The regular expression which we are supposed to 
  1852.    *              match to. 
  1853.    *
  1854.  
  1855. --- 121,126 -----
  1856.    *
  1857.    * PARAMETERS 
  1858.    *
  1859.    *     char *pattern     - The regular expression which we are supposed to 
  1860.    *              match to. 
  1861.    *     char *source     - The source string which is to be compared to the 
  1862. ***************
  1863. *** 122,127
  1864.    *              regular expression pattern. 
  1865.    *     char *pattern     - The regular expression which we are supposed to 
  1866.    *              match to. 
  1867.    *
  1868.    * RETURNS 
  1869.    *
  1870.  
  1871. --- 123,130 -----
  1872.    *
  1873.    *     char *pattern     - The regular expression which we are supposed to 
  1874.    *              match to. 
  1875. +  *     char *source     - The source string which is to be compared to the 
  1876. +  *              regular expression pattern. 
  1877.    *
  1878.    * RETURNS 
  1879.    *
  1880. Index: Makefile
  1881. *** /tmp/,RCSt1a17183    Sun Feb 12 14:10:07 1989
  1882. --- Makefile    Sun Feb 12 14:01:55 1989
  1883. ***************
  1884. *** 3,9
  1885.   #
  1886.   # Written by Mark H. Colburn (mark@jhereg.mn.org)
  1887.   #
  1888. ! # $Id: Makefile,v 1.1 88/12/23 18:02:42 mark Rel $
  1889.   #
  1890.   
  1891.   #
  1892.  
  1893. --- 3,9 -----
  1894.   #
  1895.   # Written by Mark H. Colburn (mark@jhereg.mn.org)
  1896.   #
  1897. ! # $Id: Makefile,v 1.2 89/02/12 10:08:59 mark Exp $
  1898.   #
  1899.   
  1900.   #
  1901. ***************
  1902. *** 30,35
  1903.   CC = cc
  1904.   
  1905.   #
  1906.   # Set LFLAGS to whatever makes your linker happy
  1907.   #
  1908.   #LDFLAGS = -s
  1909.  
  1910. --- 30,40 -----
  1911.   CC = cc
  1912.   
  1913.   #
  1914. + # Set LIBS to any additional libraries that you need linked in with pax.
  1915. + #
  1916. + LIBS=
  1917. + #
  1918.   # Set LFLAGS to whatever makes your linker happy
  1919.   #
  1920.   #LDFLAGS = -s
  1921. ***************
  1922. *** 36,41
  1923.   LDFLAGS = 
  1924.   
  1925.   #
  1926.   # Set LINTFLAGS to whatever makes your implementation of lint happy.  If
  1927.   # you don't undef __STDC__ and you have an ANSI C compiler, lint will choke 
  1928.   # on the function prototypes present in func.h
  1929.  
  1930. --- 41,52 -----
  1931.   LDFLAGS = 
  1932.   
  1933.   #
  1934. + # Set COPY to the name of the command to use to copy pax to cpio and
  1935. + # tar.  Usually it is 'ln'.
  1936. + #
  1937. + COPY=ln
  1938. + #
  1939.   # Set LINTFLAGS to whatever makes your implementation of lint happy.  If
  1940.   # you don't undef __STDC__ and you have an ANSI C compiler, lint will choke 
  1941.   # on the function prototypes present in func.h.
  1942. ***************
  1943. *** 38,44
  1944.   #
  1945.   # Set LINTFLAGS to whatever makes your implementation of lint happy.  If
  1946.   # you don't undef __STDC__ and you have an ANSI C compiler, lint will choke 
  1947. ! # on the function prototypes present in func.h
  1948.   #
  1949.   LINTFLAGS = -U__STDC__ $(POSIX)
  1950.   
  1951.  
  1952. --- 49,55 -----
  1953.   #
  1954.   # Set LINTFLAGS to whatever makes your implementation of lint happy.  If
  1955.   # you don't undef __STDC__ and you have an ANSI C compiler, lint will choke 
  1956. ! # on the function prototypes present in func.h.
  1957.   #
  1958.   LINTFLAGS = -U__STDC__ $(POSIX)
  1959.   
  1960. ***************
  1961. *** 53,58
  1962.   #
  1963.   MAN5 = /usr/man/man5
  1964.   MAN1 = /usr/man/man1
  1965.   
  1966.   #
  1967.   # There are three different ways to get POSIX or BSD conformant directory 
  1968.  
  1969. --- 64,71 -----
  1970.   #
  1971.   MAN5 = /usr/man/man5
  1972.   MAN1 = /usr/man/man1
  1973. + MAN5EXT = 5
  1974. + MAN1EXT = 1
  1975.   
  1976.   #
  1977.   # There are three different ways to get POSIX or BSD conformant directory 
  1978. ***************
  1979. *** 80,86
  1980.   # Nothing beyond this point should need to be changed.
  1981.   #
  1982.   
  1983. ! MISC   = Makefile pax.1 tar.5 cpio.5 README PATCHLEVEL
  1984.   HEADERS= config.h func.h limits.h port.h pax.h 
  1985.   SOURCE= pax.c append.c buffer.c cpio.c create.c extract.c fileio.c\
  1986.       link.c list.c mem.c namelist.c names.c pass.c pathname.c\
  1987.  
  1988. --- 93,100 -----
  1989.   # Nothing beyond this point should need to be changed.
  1990.   #
  1991.   
  1992. ! SHELL = /bin/sh
  1993. ! MISC  = Makefile pax.1 tar.5 cpio.5 README PATCHLEVEL
  1994.   HEADERS= config.h func.h limits.h port.h pax.h 
  1995.   SOURCE= pax.c append.c buffer.c cpio.c create.c extract.c fileio.c\
  1996.       link.c list.c mem.c namelist.c names.c pass.c pathname.c\
  1997. ***************
  1998. *** 95,101
  1999.   all: $(PROGS)
  2000.   
  2001.   install: $(PROGS)
  2002. !     mv $(PROGS) $(BINDIR)
  2003.       cp $(PMAN1) $(MAN1)
  2004.   #    cp $(PMAN5) $(MAN5)
  2005.   
  2006.  
  2007. --- 109,119 -----
  2008.   all: $(PROGS)
  2009.   
  2010.   install: $(PROGS)
  2011. !     strip pax
  2012. !     cp pax $(BINDIR)
  2013. !     chmod 755 $(BINDIR)/pax
  2014. !     ln $(BINDIR)/pax $(BINDIR)/tar
  2015. !     ln $(BINDIR)/pax $(BINDIR)/cpio
  2016.       cp $(PMAN1) $(MAN1)
  2017.   #    cp $(PMAN5) $(MAN5)
  2018.   
  2019. ***************
  2020. *** 107,113
  2021.       lint $(LINTFLAGS) $(SOURCE)
  2022.   
  2023.   pax : $(OBJECT)
  2024. !     $(CC) $(CFLAGS) -o pax $(OBJECT) $(DIRENT) 
  2025.   
  2026.   tar: pax
  2027.       rm -f tar
  2028.  
  2029. --- 125,131 -----
  2030.       lint $(LINTFLAGS) $(SOURCE)
  2031.   
  2032.   pax : $(OBJECT)
  2033. !     $(CC) $(CFLAGS) $(LDFLAGS) -o pax $(OBJECT) $(DIRENT) $(LIBS)
  2034.   
  2035.   tar: pax
  2036.       rm -f tar
  2037. ***************
  2038. *** 111,117
  2039.   
  2040.   tar: pax
  2041.       rm -f tar
  2042. !     ln pax tar
  2043.   
  2044.   cpio: pax
  2045.       rm -f cpio
  2046.  
  2047. --- 129,135 -----
  2048.   
  2049.   tar: pax
  2050.       rm -f tar
  2051. !     $(COPY) pax tar
  2052.   
  2053.   cpio: pax
  2054.       rm -f cpio
  2055. ***************
  2056. *** 115,120
  2057.   
  2058.   cpio: pax
  2059.       rm -f cpio
  2060. !     ln pax cpio
  2061.   
  2062.   $(OBJECT): $(HEADERS)
  2063.  
  2064. --- 133,138 -----
  2065.   
  2066.   cpio: pax
  2067.       rm -f cpio
  2068. !     $(COPY) pax cpio
  2069.   
  2070.   $(OBJECT): $(HEADERS)
  2071. Index: README
  2072. *** /tmp/,RCSt1a17188    Sun Feb 12 14:10:13 1989
  2073. --- README    Sun Feb 12 14:01:56 1989
  2074. ***************
  2075. *** 6,12
  2076.   
  2077.   Introduction
  2078.   
  2079. !     This is version 1.1 of Pax, a public domain archiving utility.  
  2080.       
  2081.       Pax is an archiving utility that reads and writes tar and cpio formats, 
  2082.       both the traditional ones and the extended formats specified in IEEE 
  2083.  
  2084. --- 6,12 -----
  2085.   
  2086.   Introduction
  2087.   
  2088. !     This is version 1.2 of Pax, an archiving utility.  
  2089.       
  2090.       Pax is an archiving utility that reads and writes tar and cpio formats, 
  2091.       both the traditional ones and the extended formats specified in IEEE 
  2092. ***************
  2093. *** 16,25
  2094.       1003.2 as a compromise in the chronic controversy over which of tar or 
  2095.       cpio is best.
  2096.   
  2097. !     The USENIX Association provided some support for this implementation 
  2098. !     project.  As a result, the Pax utility is being distributed free of 
  2099. !     charge and may be redistributed by others in either source or binary 
  2100. !     form.  (See the liscensing section for restrictions)
  2101.   
  2102.       The source for Pax is being posted to comp.sources.unix on USENET and 
  2103.       will also be available by anonymous FTP on the Internet from uunet.uu.net,
  2104.  
  2105. --- 16,25 -----
  2106.       1003.2 as a compromise in the chronic controversy over which of tar or 
  2107.       cpio is best.
  2108.   
  2109. !     The USENIX Association provided some support for the initial 
  2110. !     implementation of this product.  As a result, the Pax utility is being 
  2111. !     distributed free of charge and may be redistributed by others in either 
  2112. !     source or binary form.  (See the liscensing section for restrictions)
  2113.   
  2114.       The source for Pax has been posted to comp.sources.unix on USENET and 
  2115.       will also be available by anonymous FTP on the Internet from uunet.uu.net,
  2116. ***************
  2117. *** 21,27
  2118.       charge and may be redistributed by others in either source or binary 
  2119.       form.  (See the liscensing section for restrictions)
  2120.   
  2121. !     The source for Pax is being posted to comp.sources.unix on USENET and 
  2122.       will also be available by anonymous FTP on the Internet from uunet.uu.net,
  2123.       moon.honeywell.com and from one of the Berkeley machines.  The source
  2124.       to Pax will be available via anonymous UUCP from jhereg.mn.org, the 
  2125.  
  2126. --- 21,27 -----
  2127.       distributed free of charge and may be redistributed by others in either 
  2128.       source or binary form.  (See the liscensing section for restrictions)
  2129.   
  2130. !     The source for Pax has been posted to comp.sources.unix on USENET and 
  2131.       will also be available by anonymous FTP on the Internet from uunet.uu.net,
  2132.       moon.src.honeywell.com and from ucb-arpa.berkeley.edu.  The source
  2133.       to Pax is also available via anonymous UUCP from jhereg.mn.org, the 
  2134. ***************
  2135. *** 23,30
  2136.   
  2137.       The source for Pax is being posted to comp.sources.unix on USENET and 
  2138.       will also be available by anonymous FTP on the Internet from uunet.uu.net,
  2139. !     moon.honeywell.com and from one of the Berkeley machines.  The source
  2140. !     to Pax will be available via anonymous UUCP from jhereg.mn.org, the 
  2141.       author's home machine and possibly other sites.
  2142.   
  2143.       The source for Pax will continue to change as long as the definition of 
  2144.  
  2145. --- 23,30 -----
  2146.   
  2147.       The source for Pax has been posted to comp.sources.unix on USENET and 
  2148.       will also be available by anonymous FTP on the Internet from uunet.uu.net,
  2149. !     moon.src.honeywell.com and from ucb-arpa.berkeley.edu.  The source
  2150. !     to Pax is also available via anonymous UUCP from jhereg.mn.org, the 
  2151.       author's home machine and possibly other sites.
  2152.   
  2153.       The source for Pax will continue to change as long as the definition of 
  2154. ***************
  2155. *** 56,62
  2156.       machines:
  2157.   
  2158.           Machine                 Operating System/Release
  2159. !     -------------------------------------------------------
  2160.       Altos 586        System III (2.3)
  2161.       AT&T UNIX PC        System V.2 (Release 3.51)
  2162.       Cray 2            UNICOS
  2163.  
  2164. --- 56,62 -----
  2165.       machines:
  2166.   
  2167.           Machine                 Operating System/Release
  2168. !     ---------------------------------------------------
  2169.       Altos 586        System III (2.3)
  2170.       AT&T UNIX PC        System V.2 (Release 3.51)
  2171.           Convergent S/320    CTIX/68k 6.1, UNIX SysV 3.1
  2172. ***************
  2173. *** 59,64
  2174.       -------------------------------------------------------
  2175.       Altos 586        System III (2.3)
  2176.       AT&T UNIX PC        System V.2 (Release 3.51)
  2177.       Cray 2            UNICOS
  2178.       HP 9000            HP/UX 6.0.1
  2179.       Mac II             A/UX 1.0
  2180.  
  2181. --- 59,65 -----
  2182.       ---------------------------------------------------
  2183.       Altos 586        System III (2.3)
  2184.       AT&T UNIX PC        System V.2 (Release 3.51)
  2185. +         Convergent S/320    CTIX/68k 6.1, UNIX SysV 3.1
  2186.       Cray 2            UNICOS
  2187.       Encore CC        02.00.r088
  2188.       HP 9000            HP/UX 6.0.1
  2189. ***************
  2190. *** 60,65
  2191.       Altos 586        System III (2.3)
  2192.       AT&T UNIX PC        System V.2 (Release 3.51)
  2193.       Cray 2            UNICOS
  2194.       HP 9000            HP/UX 6.0.1
  2195.       Mac II             A/UX 1.0
  2196.       NCR Tower        System V.2
  2197.  
  2198. --- 61,67 -----
  2199.       AT&T UNIX PC        System V.2 (Release 3.51)
  2200.           Convergent S/320    CTIX/68k 6.1, UNIX SysV 3.1
  2201.       Cray 2            UNICOS
  2202. +     Encore CC        02.00.r088
  2203.       HP 9000            HP/UX 6.0.1
  2204.           IBM PC/AT        Microport SV/AT V2.4
  2205.       Mac II             A/UX 1.0
  2206. ***************
  2207. *** 61,66
  2208.       AT&T UNIX PC        System V.2 (Release 3.51)
  2209.       Cray 2            UNICOS
  2210.       HP 9000            HP/UX 6.0.1
  2211.       Mac II             A/UX 1.0
  2212.       NCR Tower        System V.2
  2213.       Pyramid            AT&T and Berkeley universe
  2214.  
  2215. --- 63,69 -----
  2216.       Cray 2            UNICOS
  2217.       Encore CC        02.00.r088
  2218.       HP 9000            HP/UX 6.0.1
  2219. +         IBM PC/AT        Microport SV/AT V2.4
  2220.       Mac II             A/UX 1.0
  2221.       NCR Tower        System V.2
  2222.       Pyramid            AT&T and Berkeley universe
  2223. ***************
  2224. *** 67,72
  2225.       Sequent Symetry        Dynix 3.0
  2226.       SGI Iris 4D/60G        UNIX 3.0
  2227.       SGI Iris 4D/70G        UNIX 3.0
  2228.       Sun 2            SunOS 3.4
  2229.       Sun 2            SunOS 3.5
  2230.       Sun 3            SunOS 3.4
  2231.  
  2232. --- 70,77 -----
  2233.       Sequent Symetry        Dynix 3.0
  2234.       SGI Iris 4D/60G        UNIX 3.0
  2235.       SGI Iris 4D/70G        UNIX 3.0
  2236. +     SCO Xenix 386         2.3.2
  2237. +     SCO Unix 386         3.2
  2238.       Sun 2            SunOS 3.4
  2239.       Sun 2            SunOS 3.5
  2240.       Sun 3            SunOS 3.4
  2241. ***************
  2242. *** 76,82
  2243.       VAX 8750        BSD 4.3 (Mt. Xinu)
  2244.       VAX 8650        BSD 4.3 (Mt. Xinu)
  2245.       VAX 780            BSD 4.3 (Berkeley)
  2246. !     -------------------------------------------------------
  2247.   
  2248.       In future releases, the source will be moving toward ANSI C and POSIX 
  2249.       compatibility.  This should allow for portability over any system 
  2250.  
  2251. --- 81,87 -----
  2252.       VAX 8750        BSD 4.3 (Mt. Xinu)
  2253.       VAX 8650        BSD 4.3 (Mt. Xinu)
  2254.       VAX 780            BSD 4.3 (Berkeley)
  2255. !     ---------------------------------------------------
  2256.   
  2257.       In future releases, the source will be moving toward ANSI C and POSIX 
  2258.       compatibility.  This should allow for portability over any system 
  2259. ***************
  2260. *** 110,116
  2261.   
  2262.       THE SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
  2263.       IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  2264. !     WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  2265.   
  2266.   Please report any bug or problems to:
  2267.   
  2268.  
  2269. --- 115,121 -----
  2270.   
  2271.       THE SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
  2272.       IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  2273. !     WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  2274.   
  2275.   Please report any bug or problems to:
  2276.   
  2277. ***************
  2278. *** 115,121
  2279.   Please report any bug or problems to:
  2280.   
  2281.   Mark Colburn
  2282. ! NAPS International
  2283.   117 Mackubin St., Suite 1
  2284.   St. Paul MN   55102
  2285.   (612) 224-9108
  2286.  
  2287. --- 120,126 -----
  2288.   Please report any bug or problems to:
  2289.   
  2290.   Mark Colburn
  2291. ! Minnetech Consulting, Inc.
  2292.   117 Mackubin St., Suite 1
  2293.   St. Paul MN   55102
  2294.   mark@jhereg.MN.ORG
  2295. ***************
  2296. *** 118,122
  2297.   NAPS International
  2298.   117 Mackubin St., Suite 1
  2299.   St. Paul MN   55102
  2300. - (612) 224-9108
  2301.   mark@jhereg.MN.ORG
  2302.  
  2303. --- 123,126 -----
  2304.   Minnetech Consulting, Inc.
  2305.   117 Mackubin St., Suite 1
  2306.   St. Paul MN   55102
  2307.   mark@jhereg.MN.ORG
  2308. Index: PATCHLEVEL
  2309. *** /tmp/,RCSt1a17193    Sun Feb 12 14:10:19 1989
  2310. --- PATCHLEVEL    Sun Feb 12 14:01:55 1989
  2311. ***************
  2312. *** 1,2
  2313. ! Patchlevel 0
  2314. ! $Id: PATCHLEVEL,v 1.1 88/12/23 18:02:43 mark Rel $
  2315.  
  2316. --- 1,2 -----
  2317. ! Patchlevel 1
  2318. ! $Id: PATCHLEVEL,v 1.2 89/02/12 10:09:03 mark Exp $
  2319.  
  2320.  
  2321.  
  2322. -- 
  2323. Mark H. Colburn                  "Look into a child's eye;
  2324. Minnetech Consulting, Inc.        there's no hate and there's no lie;
  2325. mark@jhereg.mn.org                there's no black and there's no white."
  2326.  
  2327.  
  2328.