mark@jhereg.Jhereg.MN.ORG (Mark H. Colburn) (02/13/89)
This is the third of three official patches to Pax, a freely distributable portable archive interchange. These patches brings the software upto release 1.2. These patches fix a number of bugs and portability problems with the initial release of the software. These three patches (split to avoid article size limitations) constitute a single logical patch to pax. I would like to thank all those people who reported bug, suggested fixes, provided patches and suggested other extensions to pax. I appologize to that I was not able to respond to all the mail that I got about pax, but all of the problems that were reported have either been fixed, or are still under consideration. Please, if you have any problems with pax, let me know so that they can be fixed. Remember, if you find a problem, chances are that others will run into the same problem as well. Reporting the problems will allow them to be fixed to avoid future difficulties and effort. These items were not fixed in the patch, but are scheduled for a future patch release: * Put the software configuration under control of a "Configure" script ala less and rn. * Bring source into line with new POSIX 1003.2 description of pax. * Add support for undocumented -C flag to cpio. * MS-DOS support * MINIX support * Add missing tar.5 cpio.5 man pages These items were fixed in these patches: * Changed misspelling of MERCHANTABILITY. * Changed name of syserr to strerror, warn.c. * Removed the references to "public domain" in the software. The software is copyrighted, not public domain. * Files are chmod'ed before being moved into the installation directories. Files are also copied, then linked in the target directory. * The variable "min" in regexp.c was changed to "minimum". It would seem that some copilers define min to be a macro... * In buffer.c there was an integer which was getting assigned NULL, rather than 0. * If pax was given the -l option, it only successfully linked the from-file and the to-file together if the from-file is already linked to something else. * Changed the verbose output file for tar to use stderr, rather than stdout. The verbose output was being interspersed with the archive, causing the archive to be unreadable. * The LDFLAGS macro is now used in the makefile. There are also macros for additional libraries which may be needed and one for SHELL which fixes some problems when using the "make lint" facility. * Fixed the stupid typo which caused pax/tar/cpio to run out of file descriptors on very deep directory trees. * Removed all line continuations "\" in preprocessor directives and strings. These were causing problems on certain compilers. * Rename two variable which were colloding on compilers that did not understand varaiables that were not unique in the first six characters. * Change the name of openi(). This causes a lot of problems on some machines, especially those with shared libraries... * Added some changes required for XENIX 286. * All references to NULL are now properly cast. * Man pages directories are now more compatible with BSD and USG installation * Other miscellaneous cleanups. Mark H. Colburn "Look into a child's eye; Minnetech Consulting, Inc. there's no hate and there's no lie; mark@jhereg.mn.org there's no black and there's no white." --------------------------------- CUT HERE --------------------------------- Index: port.c *** /tmp/,RCSt1a17133 Sun Feb 12 14:08:42 1989 --- port.c Sun Feb 12 14:02:30 1989 *************** *** 1,6 /* $Source: /u/mark/src/pax/RCS/port.c,v $ * ! * $Revision: 1.1 $ * * port.c - These are routines not available in all environments. * --- 1,6 ----- /* $Source: /u/mark/src/pax/RCS/port.c,v $ * ! * $Revision: 1.2 $ * * port.c - These are routines not available in all environments. * *************** *** 30,36 * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ! * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * $Log: port.c,v $ * Revision 1.1 88/12/23 18:02:29 mark --- 30,36 ----- * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ! * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * $Log: port.c,v $ * Revision 1.2 89/02/12 10:05:35 mark *************** *** 33,38 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * $Log: port.c,v $ * Revision 1.1 88/12/23 18:02:29 mark * Initial revision * --- 33,41 ----- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * $Log: port.c,v $ + * Revision 1.2 89/02/12 10:05:35 mark + * 1.2 release fixes + * * Revision 1.1 88/12/23 18:02:29 mark * Initial revision * *************** *** 39,45 */ #ifndef lint ! static char *ident = "$Id: port.c,v 1.1 88/12/23 18:02:29 mark Rel $"; static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n"; #endif /* ! lint */ --- 42,48 ----- */ #ifndef lint ! static char *ident = "$Id: port.c,v 1.2 89/02/12 10:05:35 mark Exp $"; static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n"; #endif /* ! lint */ *************** *** 55,62 * the list in the #if !defined()'s below and it'll all be skipped. */ ! #if !defined(mc300) && !defined(mc500) && !defined(mc700) && \ ! !defined(BSD) /* mkdir - make a directory * --- 58,64 ----- * the list in the #if !defined()'s below and it'll all be skipped. */ ! #if !defined(mc300) && !defined(mc500) && !defined(mc700) && !defined(BSD) /* mkdir - make a directory * Index: port.h *** /tmp/,RCSt1a17138 Sun Feb 12 14:08:49 1989 --- port.h Sun Feb 12 14:02:31 1989 *************** *** 1,6 /* $Source: /u/mark/src/pax/RCS/port.h,v $ * ! * $Revision: 1.1 $ * * port.h - defnitions for portability library * --- 1,6 ----- /* $Source: /u/mark/src/pax/RCS/port.h,v $ * ! * $Revision: 1.2 $ * * port.h - defnitions for portability library * *************** *** 30,36 * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ! * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #ifndef _PAX_PORT_H --- 30,36 ----- * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ! * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #ifndef _PAX_PORT_H Index: regexp.c *** /tmp/,RCSt1a17143 Sun Feb 12 14:08:58 1989 --- regexp.c Sun Feb 12 14:02:34 1989 *************** *** 1,6 /* $Source: /u/mark/src/pax/RCS/regexp.c,v $ * ! * $Revision: 1.1 $ * * regexp.c - regular expression matching * --- 1,6 ----- /* $Source: /u/mark/src/pax/RCS/regexp.c,v $ * ! * $Revision: 1.2 $ * * regexp.c - regular expression matching * *************** *** 43,48 * Sponsored by The USENIX Association for public distribution. * * $Log: regexp.c,v $ * Revision 1.1 88/12/23 18:02:32 mark * Initial revision * --- 43,51 ----- * Sponsored by The USENIX Association for public distribution. * * $Log: regexp.c,v $ + * Revision 1.2 89/02/12 10:05:39 mark + * 1.2 release fixes + * * Revision 1.1 88/12/23 18:02:32 mark * Initial revision * *************** *** 53,59 #include "pax.h" #ifndef lint ! static char *Ident = "$Id: regexp.c,v 1.1 88/12/23 18:02:32 mark Rel $"; #endif --- 56,62 ----- #include "pax.h" #ifndef lint ! static char *Ident = "$Id: regexp.c,v 1.2 89/02/12 10:05:39 mark Exp $"; #endif *************** *** 224,230 int flags; extern char *malloc(); ! if (exp == NULL) FAIL("NULL argument"); /* First pass: determine size, legality. */ --- 227,233 ----- int flags; extern char *malloc(); ! if (exp == (char *)NULL) FAIL("NULL argument"); /* First pass: determine size, legality. */ *************** *** 233,240 regsize = 0L; regcode = ®dummy; regc(MAGIC); ! if (reg(0, &flags) == NULL) ! return (NULL); /* Small enough for pointer-storage convention? */ if (regsize >= 32767L) /* Probably could be 65535L. */ --- 236,243 ----- regsize = 0L; regcode = ®dummy; regc(MAGIC); ! if (reg(0, &flags) == (char *)NULL) ! return ((regexp *)NULL); /* Small enough for pointer-storage convention? */ if (regsize >= 32767L) /* Probably could be 65535L. */ *************** *** 242,248 /* Allocate space. */ r = (regexp *) malloc(sizeof(regexp) + (unsigned) regsize); ! if (r == NULL) FAIL("out of space"); /* Second pass: emit code. */ --- 245,251 ----- /* Allocate space. */ r = (regexp *) malloc(sizeof(regexp) + (unsigned) regsize); ! if (r == (regexp *) NULL) FAIL("out of space"); /* Second pass: emit code. */ *************** *** 251,257 regcode = r->program; regc(MAGIC); if (reg(0, &flags) == NULL) ! return (NULL); /* Dig out information for optimizations. */ r->regstart = '\0'; /* Worst-case defaults. */ --- 254,260 ----- regcode = r->program; regc(MAGIC); if (reg(0, &flags) == NULL) ! return ((regexp *) NULL); /* Dig out information for optimizations. */ r->regstart = '\0'; /* Worst-case defaults. */ *************** *** 320,326 regnpar++; ret = regnode(OPEN + parno); } else ! ret = NULL; /* Pick up the branches, linking them together. */ br = regbranch(&flags); --- 323,329 ----- regnpar++; ret = regnode(OPEN + parno); } else ! ret = (char *)NULL; /* Pick up the branches, linking them together. */ br = regbranch(&flags); *************** *** 324,332 /* Pick up the branches, linking them together. */ br = regbranch(&flags); ! if (br == NULL) ! return (NULL); ! if (ret != NULL) regtail(ret, br); /* OPEN -> first. */ else ret = br; --- 327,335 ----- /* Pick up the branches, linking them together. */ br = regbranch(&flags); ! if (br == (char *)NULL) ! return ((char *)NULL); ! if (ret != (char *)NULL) regtail(ret, br); /* OPEN -> first. */ else ret = br; *************** *** 336,343 while (*regparse == '|') { regparse++; br = regbranch(&flags); ! if (br == NULL) ! return (NULL); regtail(ret, br); /* BRANCH -> BRANCH. */ if (!(flags & HASWIDTH)) *flagp &= ~HASWIDTH; --- 339,346 ----- while (*regparse == '|') { regparse++; br = regbranch(&flags); ! if (br == (char *)NULL) ! return ((char *)NULL); regtail(ret, br); /* BRANCH -> BRANCH. */ if (!(flags & HASWIDTH)) *flagp &= ~HASWIDTH; *************** *** 349,355 regtail(ret, ender); /* Hook the tails of the branches to the closing node. */ ! for (br = ret; br != NULL; br = regnext(br)) regoptail(br, ender); /* Check for proper termination. */ --- 352,358 ----- regtail(ret, ender); /* Hook the tails of the branches to the closing node. */ ! for (br = ret; br != (char *)NULL; br = regnext(br)) regoptail(br, ender); /* Check for proper termination. */ *************** *** 381,387 *flagp = WORST; /* Tentatively. */ ret = regnode(BRANCH); ! chain = NULL; while (*regparse != '\0' && *regparse != '|' && *regparse != ')') { latest = regpiece(&flags); if (latest == NULL) --- 384,390 ----- *flagp = WORST; /* Tentatively. */ ret = regnode(BRANCH); ! chain = (char *)NULL; while (*regparse != '\0' && *regparse != '|' && *regparse != ')') { latest = regpiece(&flags); if (latest == (char *)NULL) *************** *** 384,391 chain = NULL; while (*regparse != '\0' && *regparse != '|' && *regparse != ')') { latest = regpiece(&flags); ! if (latest == NULL) ! return (NULL); *flagp |= flags & HASWIDTH; if (chain == NULL) /* First piece. */ *flagp |= flags & SPSTART; --- 387,394 ----- chain = (char *)NULL; while (*regparse != '\0' && *regparse != '|' && *regparse != ')') { latest = regpiece(&flags); ! if (latest == (char *)NULL) ! return ((char *)NULL); *flagp |= flags & HASWIDTH; if (chain == (char *)NULL) /* First piece. */ *flagp |= flags & SPSTART; *************** *** 387,393 if (latest == NULL) return (NULL); *flagp |= flags & HASWIDTH; ! if (chain == NULL) /* First piece. */ *flagp |= flags & SPSTART; else regtail(chain, latest); --- 390,396 ----- if (latest == (char *)NULL) return ((char *)NULL); *flagp |= flags & HASWIDTH; ! if (chain == (char *)NULL) /* First piece. */ *flagp |= flags & SPSTART; else regtail(chain, latest); *************** *** 393,399 regtail(chain, latest); chain = latest; } ! if (chain == NULL) /* Loop ran zero times. */ regnode(NOTHING); return (ret); --- 396,402 ----- regtail(chain, latest); chain = latest; } ! if (chain == (char *)NULL) /* Loop ran zero times. */ regnode(NOTHING); return (ret); *************** *** 416,423 int flags; ret = regatom(&flags); ! if (ret == NULL) ! return (NULL); op = *regparse; if (!ISMULT(op)) { --- 419,426 ----- int flags; ret = regatom(&flags); ! if (ret == (char *)NULL) ! return ((char *)NULL); op = *regparse; if (!ISMULT(op)) { *************** *** 509,516 break; case '(': ret = reg(1, &flags); ! if (ret == NULL) ! return (NULL); *flagp |= flags & (HASWIDTH | SPSTART); break; case '\0': --- 512,519 ----- break; case '(': ret = reg(1, &flags); ! if (ret == (char *)NULL) ! return ((char *)NULL); *flagp |= flags & (HASWIDTH | SPSTART); break; case '\0': *************** *** 638,644 scan = p; for (;;) { temp = regnext(scan); ! if (temp == NULL) break; scan = temp; } --- 641,647 ----- scan = p; for (;;) { temp = regnext(scan); ! if (temp == (char *)NULL) break; scan = temp; } *************** *** 659,665 char *val; { /* "Operandless" and "op != BRANCH" are synonymous in practice. */ ! if (p == NULL || p == ®dummy || OP(p) != BRANCH) return; regtail(OPERAND(p), val); } --- 662,668 ----- char *val; { /* "Operandless" and "op != BRANCH" are synonymous in practice. */ ! if (p == (char *)NULL || p == ®dummy || OP(p) != BRANCH) return; regtail(OPERAND(p), val); } *************** *** 699,705 register char *s; /* Be paranoid... */ ! if (prog == NULL || string == NULL) { regerror("NULL parameter"); return (0); } --- 702,708 ----- register char *s; /* Be paranoid... */ ! if (prog == (regexp *)NULL || string == (char *)NULL) { regerror("NULL parameter"); return (0); } *************** *** 709,715 return (0); } /* If there is a "must appear" string, look for it. */ ! if (prog->regmust != NULL) { s = string; while ((s = strchr(s, prog->regmust[0])) != NULL) { if (strncmp(s, prog->regmust, prog->regmlen) == 0) --- 712,718 ----- return (0); } /* If there is a "must appear" string, look for it. */ ! if (prog->regmust != (char *)NULL) { s = string; while ((s = strchr(s, prog->regmust[0])) != (char *)NULL) { if (strncmp(s, prog->regmust, prog->regmlen) == 0) *************** *** 711,717 /* If there is a "must appear" string, look for it. */ if (prog->regmust != NULL) { s = string; ! while ((s = strchr(s, prog->regmust[0])) != NULL) { if (strncmp(s, prog->regmust, prog->regmlen) == 0) break; /* Found it. */ s++; --- 714,720 ----- /* If there is a "must appear" string, look for it. */ if (prog->regmust != (char *)NULL) { s = string; ! while ((s = strchr(s, prog->regmust[0])) != (char *)NULL) { if (strncmp(s, prog->regmust, prog->regmlen) == 0) break; /* Found it. */ s++; *************** *** 716,722 break; /* Found it. */ s++; } ! if (s == NULL) /* Not present. */ return (0); } /* Mark beginning of line for ^ . */ --- 719,725 ----- break; /* Found it. */ s++; } ! if (s == (char *)NULL) /* Not present. */ return (0); } /* Mark beginning of line for ^ . */ *************** *** 730,736 s = string; if (prog->regstart != '\0') /* We know what char it must start with. */ ! while ((s = strchr(s, prog->regstart)) != NULL) { if (regtry(prog, s)) return (1); s++; --- 733,739 ----- s = string; if (prog->regstart != '\0') /* We know what char it must start with. */ ! while ((s = strchr(s, prog->regstart)) != (char *)NULL) { if (regtry(prog, s)) return (1); s++; *************** *** 772,779 sp = prog->startp; ep = prog->endp; for (i = NSUBEXP; i > 0; i--) { ! *sp++ = NULL; ! *ep++ = NULL; } if (regmatch(prog->program + 1)) { prog->startp[0] = string; --- 775,782 ----- sp = prog->startp; ep = prog->endp; for (i = NSUBEXP; i > 0; i--) { ! *sp++ = (char *)NULL; ! *ep++ = (char *)NULL; } if (regmatch(prog->program + 1)) { prog->startp[0] = string; *************** *** 809,815 scan = prog; #ifdef DEBUG ! if (scan != NULL && regnarrate) fprintf(stderr, "%s(\n", regprop(scan)); #endif while (scan != NULL) { --- 812,818 ----- scan = prog; #ifdef DEBUG ! if (scan != (char *)NULL && regnarrate) fprintf(stderr, "%s(\n", regprop(scan)); #endif while (scan != (char *)NULL) { *************** *** 812,818 if (scan != NULL && regnarrate) fprintf(stderr, "%s(\n", regprop(scan)); #endif ! while (scan != NULL) { #ifdef DEBUG if (regnarrate) fprintf(stderr, "%s...\n", regprop(scan)); --- 815,821 ----- if (scan != (char *)NULL && regnarrate) fprintf(stderr, "%s(\n", regprop(scan)); #endif ! while (scan != (char *)NULL) { #ifdef DEBUG if (regnarrate) fprintf(stderr, "%s...\n", regprop(scan)); *************** *** 848,854 } break; case ANYOF: ! if (*reginput == '\0' || strchr(OPERAND(scan), *reginput) == NULL) return (0); reginput++; break; --- 851,858 ----- } break; case ANYOF: ! if (*reginput == '\0' || ! strchr(OPERAND(scan), *reginput) == (char *)NULL) return (0); reginput++; break; *************** *** 853,859 reginput++; break; case ANYBUT: ! if (*reginput == '\0' || strchr(OPERAND(scan), *reginput) != NULL) return (0); reginput++; break; --- 857,864 ----- reginput++; break; case ANYBUT: ! if (*reginput == '\0' || ! strchr(OPERAND(scan), *reginput) != (char *)NULL) return (0); reginput++; break; *************** *** 881,887 * Don't set startp if some later invocation of the same * parentheses already has. */ ! if (regstartp[no] == NULL) regstartp[no] = save; return (1); } else --- 886,892 ----- * Don't set startp if some later invocation of the same * parentheses already has. */ ! if (regstartp[no] == (char *)NULL) regstartp[no] = save; return (1); } else *************** *** 908,914 * Don't set endp if some later invocation of the same * parentheses already has. */ ! if (regendp[no] == NULL) regendp[no] = save; return (1); } else --- 913,919 ----- * Don't set endp if some later invocation of the same * parentheses already has. */ ! if (regendp[no] == (char *)NULL) regendp[no] = save; return (1); } else *************** *** 927,933 return (1); reginput = save; scan = regnext(scan); ! } while (scan != NULL && OP(scan) == BRANCH); return (0); /* NOTREACHED */ } --- 932,938 ----- return (1); reginput = save; scan = regnext(scan); ! } while (scan != (char *)NULL && OP(scan) == BRANCH); return (0); /* NOTREACHED */ } *************** *** 937,943 register char nextch; register int no; register char *save; ! register int min; /* * Lookahead to avoid useless match attempts when we know --- 942,948 ----- register char nextch; register int no; register char *save; ! register int minimum; /* * Lookahead to avoid useless match attempts when we know *************** *** 946,952 nextch = '\0'; if (OP(nxt) == EXACTLY) nextch = *OPERAND(nxt); ! min = (OP(scan) == STAR) ? 0 : 1; save = reginput; no = regrepeat(OPERAND(scan)); while (no >= min) { --- 951,957 ----- nextch = '\0'; if (OP(nxt) == EXACTLY) nextch = *OPERAND(nxt); ! minimum = (OP(scan) == STAR) ? 0 : 1; save = reginput; no = regrepeat(OPERAND(scan)); while (no >= minimum) { *************** *** 949,955 min = (OP(scan) == STAR) ? 0 : 1; save = reginput; no = regrepeat(OPERAND(scan)); ! while (no >= min) { /* If it could work, try it. */ if (nextch == '\0' || *reginput == nextch) if (regmatch(nxt)) --- 954,960 ----- minimum = (OP(scan) == STAR) ? 0 : 1; save = reginput; no = regrepeat(OPERAND(scan)); ! while (no >= minimum) { /* If it could work, try it. */ if (nextch == '\0' || *reginput == nextch) if (regmatch(nxt)) *************** *** 1013,1019 } break; case ANYOF: ! while (*scan != '\0' && strchr(opnd, *scan) != NULL) { count++; scan++; } --- 1018,1024 ----- } break; case ANYOF: ! while (*scan != '\0' && strchr(opnd, *scan) != (char *)NULL) { count++; scan++; } *************** *** 1019,1025 } break; case ANYBUT: ! while (*scan != '\0' && strchr(opnd, *scan) == NULL) { count++; scan++; } --- 1024,1030 ----- } break; case ANYBUT: ! while (*scan != '\0' && strchr(opnd, *scan) == (char *)NULL) { count++; scan++; } *************** *** 1052,1058 register int offset; if (p == ®dummy) ! return (NULL); offset = NEXT(p); if (offset == 0) --- 1057,1063 ----- register int offset; if (p == ®dummy) ! return ((char *)NULL); offset = NEXT(p); if (offset == 0) *************** *** 1056,1062 offset = NEXT(p); if (offset == 0) ! return (NULL); if (OP(p) == BACK) return (p - offset); --- 1061,1067 ----- offset = NEXT(p); if (offset == 0) ! return ((char *)NULL); if (OP(p) == BACK) return (p - offset); *************** *** 1093,1099 op = OP(s); printf("%2d%s", s - r->program, regprop(s)); /* Where, what. */ nxt = regnext(s); ! if (nxt == NULL) /* nxt ptr. */ printf("(0)"); else printf("(%d)", (s - r->program) + (nxt - s)); --- 1098,1104 ----- op = OP(s); printf("%2d%s", s - r->program, regprop(s)); /* Where, what. */ nxt = regnext(s); ! if (nxt == (char *)NULL) /* nxt ptr. */ printf("(0)"); else printf("(%d)", (s - r->program) + (nxt - s)); *************** *** 1114,1120 printf("start `%c' ", r->regstart); if (r->reganch) printf("anchored "); ! if (r->regmust != NULL) printf("must have \"%s\"", r->regmust); printf("\n"); } --- 1119,1125 ----- printf("start `%c' ", r->regstart); if (r->reganch) printf("anchored "); ! if (r->regmust != (char *)NULL) printf("must have \"%s\"", r->regmust); printf("\n"); } *************** *** 1179,1185 case OPEN + 8: case OPEN + 9: sprintf(buf + strlen(buf), "OPEN%d", OP(op) - OPEN); ! p = NULL; break; case CLOSE + 1: case CLOSE + 2: --- 1184,1190 ----- case OPEN + 8: case OPEN + 9: sprintf(buf + strlen(buf), "OPEN%d", OP(op) - OPEN); ! p = (char *)NULL; break; case CLOSE + 1: case CLOSE + 2: *************** *** 1191,1197 case CLOSE + 8: case CLOSE + 9: sprintf(buf + strlen(buf), "CLOSE%d", OP(op) - CLOSE); ! p = NULL; break; case STAR: p = "STAR"; --- 1196,1202 ----- case CLOSE + 8: case CLOSE + 9: sprintf(buf + strlen(buf), "CLOSE%d", OP(op) - CLOSE); ! p = (char *)NULL; break; case STAR: p = "STAR"; *************** *** 1200,1206 regerror("corrupted opcode"); break; } ! if (p != NULL) strcat(buf, p); return (buf); } --- 1205,1211 ----- regerror("corrupted opcode"); break; } ! if (p != (char *)NULL) strcat(buf, p); return (buf); } *************** *** 1269,1275 register int len; extern char *strncpy(); ! if (prog == NULL || source == NULL || dest == NULL) { regerror("NULL parm to regsub"); return; } --- 1274,1281 ----- register int len; extern char *strncpy(); ! if (prog == (regexp *)NULL || ! source == (char *)NULL || dest == (char *)NULL) { regerror("NULL parm to regsub"); return; } *************** *** 1291,1297 if (c == '\\' && (*src == '\\' || *src == '&')) c = *src++; *dst++ = c; ! } else if (prog->startp[no] != NULL && prog->endp[no] != NULL) { len = prog->endp[no] - prog->startp[no]; strncpy(dst, prog->startp[no], len); dst += len; --- 1297,1304 ----- if (c == '\\' && (*src == '\\' || *src == '&')) c = *src++; *dst++ = c; ! } else if (prog->startp[no] != (char *)NULL && ! prog->endp[no] != (char *)NULL) { len = prog->endp[no] - prog->startp[no]; strncpy(dst, prog->startp[no], len); dst += len; Index: replace.c *** /tmp/,RCSt1a17153 Sun Feb 12 14:09:24 1989 --- replace.c Sun Feb 12 14:02:36 1989 *************** *** 1,6 /* $Source: /u/mark/src/pax/RCS/replace.c,v $ * ! * $Revision: 1.1 $ * * replace.c - regular expression pattern replacement functions * --- 1,6 ----- /* $Source: /u/mark/src/pax/RCS/replace.c,v $ * ! * $Revision: 1.2 $ * * replace.c - regular expression pattern replacement functions * *************** *** 27,33 * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ! * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * $Log: replace.c,v $ * Revision 1.1 88/12/23 18:02:36 mark --- 27,33 ----- * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ! * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * $Log: replace.c,v $ * Revision 1.2 89/02/12 10:05:59 mark *************** *** 30,35 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * $Log: replace.c,v $ * Revision 1.1 88/12/23 18:02:36 mark * Initial revision * --- 30,38 ----- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * $Log: replace.c,v $ + * Revision 1.2 89/02/12 10:05:59 mark + * 1.2 release fixes + * * Revision 1.1 88/12/23 18:02:36 mark * Initial revision * *************** *** 36,42 */ #ifndef lint ! static char *ident = "$Id: replace.c,v 1.1 88/12/23 18:02:36 mark Rel $"; static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n"; #endif /* not lint */ --- 39,45 ----- */ #ifndef lint ! static char *ident = "$Id: replace.c,v 1.2 89/02/12 10:05:59 mark Exp $"; static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n"; #endif /* not lint */ *************** *** 78,84 "Malformed substitution syntax"); return; } ! if ((rptr = (Replstr *) malloc(sizeof(Replstr))) == NULL) { warn("Replacement string not added", "No space"); return; } --- 81,87 ----- "Malformed substitution syntax"); return; } ! if ((rptr = (Replstr *) malloc(sizeof(Replstr))) == (Replstr *)NULL) { warn("Replacement string not added", "No space"); return; } *************** *** 130,136 * Now pattern points to 'old' and p points to 'new' and both are '\0' * terminated */ ! if ((rptr->comp = regcomp(pattern)) == NULL) { warn("Replacement string not added", "Invalid RE"); free(rptr); return; --- 133,139 ----- * Now pattern points to 'old' and p points to 'new' and both are '\0' * terminated */ ! if ((rptr->comp = regcomp(pattern)) == (regexp *)NULL) { warn("Replacement string not added", "Invalid RE"); free(rptr); return; *************** *** 136,143 return; } rptr->replace = p; ! rptr->next = NULL; ! if (rplhead == NULL) { rplhead = rptr; rpltail = rptr; } else { --- 139,146 ----- return; } rptr->replace = p; ! rptr->next = (Replstr *)NULL; ! if (rplhead == (Replstr *)NULL) { rplhead = rptr; rpltail = rptr; } else { *************** *** 182,188 char *b; strcpy(buff, name); ! for (rptr = rplhead; !found && rptr != NULL; rptr = rptr->next) { do { if ((ret = regexec(rptr->comp, buff)) != 0) { p = buff; --- 185,191 ----- char *b; strcpy(buff, name); ! for (rptr = rplhead; !found && rptr != (Replstr *)NULL; rptr = rptr->next) { do { if ((ret = regexec(rptr->comp, buff)) != 0) { p = buff; Index: tar.1 *** /tmp/,RCSt1a17158 Sun Feb 12 14:09:31 1989 --- tar.1 Sun Feb 12 14:02:37 1989 *************** *** 1,4 ! .\" $Id: tar.1,v 1.1 88/12/23 18:02:37 mark Rel $ .TH TAR 1 "USENIX Association" "" .SH NAME tar \- process tape archives --- 1,4 ----- ! .\" $Id: tar.1,v 1.2 89/02/12 10:08:55 mark Exp $ .TH TAR 1 "USENIX Association" "" .SH NAME tar \- process tape archives *************** *** 178,184 .PP THE SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ! WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. .SH AUTHOR Mark H. Colburn .br --- 178,184 ----- .PP THE SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. .SH AUTHOR Mark H. Colburn .br Index: tar.c *** /tmp/,RCSt1a17163 Sun Feb 12 14:09:37 1989 --- tar.c Sun Feb 12 14:02:38 1989 *************** *** 1,6 /* $Source: /u/mark/src/pax/RCS/tar.c,v $ * ! * $Revision: 1.1 $ * * tar.c - tar specific functions for archive handling * --- 1,6 ----- /* $Source: /u/mark/src/pax/RCS/tar.c,v $ * ! * $Revision: 1.2 $ * * tar.c - tar specific functions for archive handling * *************** *** 27,33 * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ! * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * $Log: tar.c,v $ * Revision 1.1 88/12/23 18:02:38 mark --- 27,33 ----- * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ! * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * $Log: tar.c,v $ * Revision 1.2 89/02/12 10:06:05 mark *************** *** 30,35 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * $Log: tar.c,v $ * Revision 1.1 88/12/23 18:02:38 mark * Initial revision * --- 30,38 ----- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * $Log: tar.c,v $ + * Revision 1.2 89/02/12 10:06:05 mark + * 1.2 release fixes + * * Revision 1.1 88/12/23 18:02:38 mark * Initial revision * *************** *** 36,42 */ #ifndef lint ! static char *ident = "$Id: tar.c,v 1.1 88/12/23 18:02:38 mark Rel $"; static char *copyright ="Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved."; #endif /* not lint */ --- 39,45 ----- */ #ifndef lint ! static char *ident = "$Id: tar.c,v 1.2 89/02/12 10:06:05 mark Exp $"; static char *copyright ="Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved."; #endif /* not lint */ *************** *** 109,116 * of the tar and/or cpio interfaces... */ f_unconditional = 1; ! f_modification_time = 1; ! f_create_dirs = 1; blocking = 0; ar_interface = TAR; ar_format = TAR; --- 112,119 ----- * of the tar and/or cpio interfaces... */ f_unconditional = 1; ! f_mtime = 1; ! f_dir_create = 1; blocking = 0; ar_interface = TAR; ar_format = TAR; *************** *** 114,120 blocking = 0; ar_interface = TAR; ar_format = TAR; ! msgfile=stdout; /* Parse options */ while ((c = taropt(argc, argv, "b:cf:hlmortuvwx")) != EOF) { --- 117,123 ----- blocking = 0; ar_interface = TAR; ar_format = TAR; ! msgfile=stderr; /* Parse options */ while ((c = taropt(argc, argv, "b:cf:hlmortuvwx")) != EOF) { *************** *** 258,264 char c; char *place; ! optarg = NULL; if (key == NULL) { /* First time */ if (argc < 2) --- 261,267 ----- char c; char *place; ! optarg = (char *)NULL; if (key == (char *)NULL) { /* First time */ if (argc < 2) *************** *** 260,266 optarg = NULL; ! if (key == NULL) { /* First time */ if (argc < 2) return EOF; key = argv[1]; --- 263,269 ----- optarg = (char *)NULL; ! if (key == (char *)NULL) { /* First time */ if (argc < 2) return EOF; key = argv[1]; *************** *** 280,286 } place = strchr(optstring, c); ! if (place == NULL || c == ':') { fprintf(stderr, "%s: unknown option %c\n", argv[0], c); return ('?'); } --- 283,289 ----- } place = strchr(optstring, c); ! if (place == (char *)NULL || c == ':') { fprintf(stderr, "%s: unknown option %c\n", argv[0], c); return ('?'); } *************** *** 323,337 #endif { ! fprintf(stderr, "\ ! Usage: %s -c[bfvw] device block filename..\n", myname); ! fprintf(stderr, "\ ! %s -r[bvw] device block [filename...]\n", myname); ! fprintf(stderr, "\ ! %s -t[vf] device\n", myname); ! fprintf(stderr, "\ ! %s -u[bvw] device block [filename...]\n", myname); ! fprintf(stderr, "\ ! %s -x[flmovw] device [filename...]\n", myname); exit(1); } --- 326,335 ----- #endif { ! fprintf(stderr, "Usage: %s -c[bfvw] device block filename..\n", myname); ! fprintf(stderr, " %s -r[bvw] device block [filename...]\n", myname); ! fprintf(stderr, " %s -t[vf] device\n", myname); ! fprintf(stderr, " %s -u[bvw] device block [filename...]\n", myname); ! fprintf(stderr, " %s -x[flmovw] device [filename...]\n", myname); exit(1); } Index: ttyio.c *** /tmp/,RCSt1a17168 Sun Feb 12 14:09:46 1989 --- ttyio.c Sun Feb 12 14:02:39 1989 *************** *** 1,6 /* $Source: /u/mark/src/pax/RCS/ttyio.c,v $ * ! * $Revision: 1.1 $ * * ttyio.c - Terminal/Console I/O functions for all archive interfaces * --- 1,6 ----- /* $Source: /u/mark/src/pax/RCS/ttyio.c,v $ * ! * $Revision: 1.2 $ * * ttyio.c - Terminal/Console I/O functions for all archive interfaces * *************** *** 28,34 * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ! * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * $Log: ttyio.c,v $ * Revision 1.1 88/12/23 18:02:39 mark --- 28,34 ----- * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ! * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * $Log: ttyio.c,v $ * Revision 1.2 89/02/12 10:06:11 mark *************** *** 31,36 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * $Log: ttyio.c,v $ * Revision 1.1 88/12/23 18:02:39 mark * Initial revision * --- 31,39 ----- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * $Log: ttyio.c,v $ + * Revision 1.2 89/02/12 10:06:11 mark + * 1.2 release fixes + * * Revision 1.1 88/12/23 18:02:39 mark * Initial revision * *************** *** 37,43 */ #ifndef lint ! static char *ident = "$Id: ttyio.c,v 1.1 88/12/23 18:02:39 mark Rel $"; static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n"; #endif /* ! lint */ --- 40,46 ----- */ #ifndef lint ! static char *ident = "$Id: ttyio.c,v 1.2 89/02/12 10:06:11 mark Exp $"; static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n"; #endif /* ! lint */ *************** *** 158,164 return(-1); } if (got < 0) { ! fatal(syserr()); } answer[idx] = '\0'; return(0); --- 161,167 ----- return(-1); } if (got < 0) { ! fatal(strerror()); } answer[idx] = '\0'; return(0); *************** *** 244,252 close_archive(); ! sprintf(msg, "\ ! %s: Ready for volume %u\n\ ! %s: Type \"go\" when ready to proceed (or \"quit\" to abort): \07", myname, arvolume + 1, myname); for (;;) { ret = nextask(msg, answer, sizeof(answer)); --- 247,253 ----- close_archive(); ! sprintf(msg, "%s: Ready for volume %u\n%s: Type \"go\" when ready to proceed (or \"quit\" to abort): \07", myname, arvolume + 1, myname); for (;;) { ret = nextask(msg, answer, sizeof(answer)); Index: warn.c *** /tmp/,RCSt1a17173 Sun Feb 12 14:09:53 1989 --- warn.c Sun Feb 12 14:02:41 1989 *************** *** 1,6 /* $Source: /u/mark/src/pax/RCS/warn.c,v $ * ! * $Revision: 1.1 $ * * warn.c - miscellaneous user warning routines * --- 1,6 ----- /* $Source: /u/mark/src/pax/RCS/warn.c,v $ * ! * $Revision: 1.2 $ * * warn.c - miscellaneous user warning routines * *************** *** 27,33 * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ! * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * $Log: warn.c,v $ * Revision 1.1 88/12/23 18:02:40 mark --- 27,33 ----- * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ! * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * $Log: warn.c,v $ * Revision 1.2 89/02/12 10:06:15 mark *************** *** 30,35 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * $Log: warn.c,v $ * Revision 1.1 88/12/23 18:02:40 mark * Initial revision * --- 30,38 ----- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * $Log: warn.c,v $ + * Revision 1.2 89/02/12 10:06:15 mark + * 1.2 release fixes + * * Revision 1.1 88/12/23 18:02:40 mark * Initial revision * *************** *** 36,42 */ #ifndef lint ! static char *ident = "$Id: warn.c,v 1.1 88/12/23 18:02:40 mark Rel $"; static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n"; #endif /* ! lint */ --- 39,45 ----- */ #ifndef lint ! static char *ident = "$Id: warn.c,v 1.2 89/02/12 10:06:15 mark Exp $"; static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n"; #endif /* ! lint */ *************** *** 93,99 } ! /* syserr - return pointer to appropriate system error message * * DESCRIPTION * --- 96,102 ----- } ! /* strerror - return pointer to appropriate system error message * * DESCRIPTION * *************** *** 112,118 #ifdef __STDC__ ! char *syserr(void) #else --- 115,121 ----- #ifdef __STDC__ ! char *strerror(void) #else *************** *** 116,122 #else ! char *syserr() #endif { --- 119,125 ----- #else ! char *strerror() #endif { *************** *** 162,168 { OFFSET n; ! if (n = (size / (1024 * 1024))) { fprintf(stream, "%ldm+", n); size -= n * 1024 * 1024; } --- 165,171 ----- { OFFSET n; ! if (n = (size / (1024L * 1024L))) { fprintf(stream, "%ldm+", n); size -= n * 1024L * 1024L; } *************** *** 164,170 if (n = (size / (1024 * 1024))) { fprintf(stream, "%ldm+", n); ! size -= n * 1024 * 1024; } if (n = (size / 1024)) { fprintf(stream, "%ldk+", n); --- 167,173 ----- if (n = (size / (1024L * 1024L))) { fprintf(stream, "%ldm+", n); ! size -= n * 1024L * 1024L; } if (n = (size / 1024L)) { fprintf(stream, "%ldk+", n); *************** *** 166,172 fprintf(stream, "%ldm+", n); size -= n * 1024 * 1024; } ! if (n = (size / 1024)) { fprintf(stream, "%ldk+", n); size -= n * 1024; } --- 169,175 ----- fprintf(stream, "%ldm+", n); size -= n * 1024L * 1024L; } ! if (n = (size / 1024L)) { fprintf(stream, "%ldk+", n); size -= n * 1024L; } *************** *** 168,174 } if (n = (size / 1024)) { fprintf(stream, "%ldk+", n); ! size -= n * 1024; } fprintf(stream, "%ld", size); } --- 171,177 ----- } if (n = (size / 1024L)) { fprintf(stream, "%ldk+", n); ! size -= n * 1024L; } fprintf(stream, "%ld", size); } Index: wildmat.c *** /tmp/,RCSt1a17178 Sun Feb 12 14:09:59 1989 --- wildmat.c Sun Feb 12 14:02:42 1989 *************** *** 1,6 /* $Source: /u/mark/src/pax/RCS/wildmat.c,v $ * ! * $Revision: 1.1 $ * * wildmat.c - simple regular expression pattern matching routines * --- 1,6 ----- /* $Source: /u/mark/src/pax/RCS/wildmat.c,v $ * ! * $Revision: 1.2 $ * * wildmat.c - simple regular expression pattern matching routines * *************** *** 33,39 * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ! * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * $Log: wildmat.c,v $ * Revision 1.1 88/12/23 18:02:41 mark --- 33,39 ----- * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ! * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * $Log: wildmat.c,v $ * Revision 1.2 89/02/12 10:06:20 mark *************** *** 36,41 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * $Log: wildmat.c,v $ * Revision 1.1 88/12/23 18:02:41 mark * Initial revision * --- 36,44 ----- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * $Log: wildmat.c,v $ + * Revision 1.2 89/02/12 10:06:20 mark + * 1.2 release fixes + * * Revision 1.1 88/12/23 18:02:41 mark * Initial revision * *************** *** 42,48 */ #ifndef lint ! static char *ident = "$Id: wildmat.c,v 1.1 88/12/23 18:02:41 mark Rel $"; static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n"; #endif /* ! lint */ --- 45,51 ----- */ #ifndef lint ! static char *ident = "$Id: wildmat.c,v 1.2 89/02/12 10:06:20 mark Exp $"; static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n"; #endif /* ! lint */ *************** *** 97,103 #endif { ! while (!wildmat(source, pattern)) { if (*++source == '\0') { return (0); } --- 100,106 ----- #endif { ! while (!wildmat(pattern, source)) { if (*++source == '\0') { return (0); } *************** *** 118,125 * * PARAMETERS * - * char *source - The source string which is to be compared to the - * regular expression pattern. * char *pattern - The regular expression which we are supposed to * match to. * --- 121,126 ----- * * PARAMETERS * * char *pattern - The regular expression which we are supposed to * match to. * char *source - The source string which is to be compared to the *************** *** 122,127 * regular expression pattern. * char *pattern - The regular expression which we are supposed to * match to. * * RETURNS * --- 123,130 ----- * * char *pattern - The regular expression which we are supposed to * match to. + * char *source - The source string which is to be compared to the + * regular expression pattern. * * RETURNS * Index: Makefile *** /tmp/,RCSt1a17183 Sun Feb 12 14:10:07 1989 --- Makefile Sun Feb 12 14:01:55 1989 *************** *** 3,9 # # Written by Mark H. Colburn (mark@jhereg.mn.org) # ! # $Id: Makefile,v 1.1 88/12/23 18:02:42 mark Rel $ # # --- 3,9 ----- # # Written by Mark H. Colburn (mark@jhereg.mn.org) # ! # $Id: Makefile,v 1.2 89/02/12 10:08:59 mark Exp $ # # *************** *** 30,35 CC = cc # # Set LFLAGS to whatever makes your linker happy # #LDFLAGS = -s --- 30,40 ----- CC = cc # + # Set LIBS to any additional libraries that you need linked in with pax. + # + LIBS= + + # # Set LFLAGS to whatever makes your linker happy # #LDFLAGS = -s *************** *** 36,41 LDFLAGS = # # Set LINTFLAGS to whatever makes your implementation of lint happy. If # you don't undef __STDC__ and you have an ANSI C compiler, lint will choke # on the function prototypes present in func.h --- 41,52 ----- LDFLAGS = # + # Set COPY to the name of the command to use to copy pax to cpio and + # tar. Usually it is 'ln'. + # + COPY=ln + + # # Set LINTFLAGS to whatever makes your implementation of lint happy. If # you don't undef __STDC__ and you have an ANSI C compiler, lint will choke # on the function prototypes present in func.h. *************** *** 38,44 # # Set LINTFLAGS to whatever makes your implementation of lint happy. If # you don't undef __STDC__ and you have an ANSI C compiler, lint will choke ! # on the function prototypes present in func.h # LINTFLAGS = -U__STDC__ $(POSIX) --- 49,55 ----- # # Set LINTFLAGS to whatever makes your implementation of lint happy. If # you don't undef __STDC__ and you have an ANSI C compiler, lint will choke ! # on the function prototypes present in func.h. # LINTFLAGS = -U__STDC__ $(POSIX) *************** *** 53,58 # MAN5 = /usr/man/man5 MAN1 = /usr/man/man1 # # There are three different ways to get POSIX or BSD conformant directory --- 64,71 ----- # MAN5 = /usr/man/man5 MAN1 = /usr/man/man1 + MAN5EXT = 5 + MAN1EXT = 1 # # There are three different ways to get POSIX or BSD conformant directory *************** *** 80,86 # Nothing beyond this point should need to be changed. # ! MISC = Makefile pax.1 tar.5 cpio.5 README PATCHLEVEL HEADERS= config.h func.h limits.h port.h pax.h SOURCE= pax.c append.c buffer.c cpio.c create.c extract.c fileio.c\ link.c list.c mem.c namelist.c names.c pass.c pathname.c\ --- 93,100 ----- # Nothing beyond this point should need to be changed. # ! SHELL = /bin/sh ! MISC = Makefile pax.1 tar.5 cpio.5 README PATCHLEVEL HEADERS= config.h func.h limits.h port.h pax.h SOURCE= pax.c append.c buffer.c cpio.c create.c extract.c fileio.c\ link.c list.c mem.c namelist.c names.c pass.c pathname.c\ *************** *** 95,101 all: $(PROGS) install: $(PROGS) ! mv $(PROGS) $(BINDIR) cp $(PMAN1) $(MAN1) # cp $(PMAN5) $(MAN5) --- 109,119 ----- all: $(PROGS) install: $(PROGS) ! strip pax ! cp pax $(BINDIR) ! chmod 755 $(BINDIR)/pax ! ln $(BINDIR)/pax $(BINDIR)/tar ! ln $(BINDIR)/pax $(BINDIR)/cpio cp $(PMAN1) $(MAN1) # cp $(PMAN5) $(MAN5) *************** *** 107,113 lint $(LINTFLAGS) $(SOURCE) pax : $(OBJECT) ! $(CC) $(CFLAGS) -o pax $(OBJECT) $(DIRENT) tar: pax rm -f tar --- 125,131 ----- lint $(LINTFLAGS) $(SOURCE) pax : $(OBJECT) ! $(CC) $(CFLAGS) $(LDFLAGS) -o pax $(OBJECT) $(DIRENT) $(LIBS) tar: pax rm -f tar *************** *** 111,117 tar: pax rm -f tar ! ln pax tar cpio: pax rm -f cpio --- 129,135 ----- tar: pax rm -f tar ! $(COPY) pax tar cpio: pax rm -f cpio *************** *** 115,120 cpio: pax rm -f cpio ! ln pax cpio $(OBJECT): $(HEADERS) --- 133,138 ----- cpio: pax rm -f cpio ! $(COPY) pax cpio $(OBJECT): $(HEADERS) Index: README *** /tmp/,RCSt1a17188 Sun Feb 12 14:10:13 1989 --- README Sun Feb 12 14:01:56 1989 *************** *** 6,12 Introduction ! This is version 1.1 of Pax, a public domain archiving utility. Pax is an archiving utility that reads and writes tar and cpio formats, both the traditional ones and the extended formats specified in IEEE --- 6,12 ----- Introduction ! This is version 1.2 of Pax, an archiving utility. Pax is an archiving utility that reads and writes tar and cpio formats, both the traditional ones and the extended formats specified in IEEE *************** *** 16,25 1003.2 as a compromise in the chronic controversy over which of tar or cpio is best. ! The USENIX Association provided some support for this implementation ! project. As a result, the Pax utility is being distributed free of ! charge and may be redistributed by others in either source or binary ! form. (See the liscensing section for restrictions) The source for Pax is being posted to comp.sources.unix on USENET and will also be available by anonymous FTP on the Internet from uunet.uu.net, --- 16,25 ----- 1003.2 as a compromise in the chronic controversy over which of tar or cpio is best. ! The USENIX Association provided some support for the initial ! implementation of this product. As a result, the Pax utility is being ! distributed free of charge and may be redistributed by others in either ! source or binary form. (See the liscensing section for restrictions) The source for Pax has been posted to comp.sources.unix on USENET and will also be available by anonymous FTP on the Internet from uunet.uu.net, *************** *** 21,27 charge and may be redistributed by others in either source or binary form. (See the liscensing section for restrictions) ! The source for Pax is being posted to comp.sources.unix on USENET and will also be available by anonymous FTP on the Internet from uunet.uu.net, moon.honeywell.com and from one of the Berkeley machines. The source to Pax will be available via anonymous UUCP from jhereg.mn.org, the --- 21,27 ----- distributed free of charge and may be redistributed by others in either source or binary form. (See the liscensing section for restrictions) ! The source for Pax has been posted to comp.sources.unix on USENET and will also be available by anonymous FTP on the Internet from uunet.uu.net, moon.src.honeywell.com and from ucb-arpa.berkeley.edu. The source to Pax is also available via anonymous UUCP from jhereg.mn.org, the *************** *** 23,30 The source for Pax is being posted to comp.sources.unix on USENET and will also be available by anonymous FTP on the Internet from uunet.uu.net, ! moon.honeywell.com and from one of the Berkeley machines. The source ! to Pax will be available via anonymous UUCP from jhereg.mn.org, the author's home machine and possibly other sites. The source for Pax will continue to change as long as the definition of --- 23,30 ----- The source for Pax has been posted to comp.sources.unix on USENET and will also be available by anonymous FTP on the Internet from uunet.uu.net, ! moon.src.honeywell.com and from ucb-arpa.berkeley.edu. The source ! to Pax is also available via anonymous UUCP from jhereg.mn.org, the author's home machine and possibly other sites. The source for Pax will continue to change as long as the definition of *************** *** 56,62 machines: Machine Operating System/Release ! ------------------------------------------------------- Altos 586 System III (2.3) AT&T UNIX PC System V.2 (Release 3.51) Cray 2 UNICOS --- 56,62 ----- machines: Machine Operating System/Release ! --------------------------------------------------- Altos 586 System III (2.3) AT&T UNIX PC System V.2 (Release 3.51) Convergent S/320 CTIX/68k 6.1, UNIX SysV 3.1 *************** *** 59,64 ------------------------------------------------------- Altos 586 System III (2.3) AT&T UNIX PC System V.2 (Release 3.51) Cray 2 UNICOS HP 9000 HP/UX 6.0.1 Mac II A/UX 1.0 --- 59,65 ----- --------------------------------------------------- Altos 586 System III (2.3) AT&T UNIX PC System V.2 (Release 3.51) + Convergent S/320 CTIX/68k 6.1, UNIX SysV 3.1 Cray 2 UNICOS Encore CC 02.00.r088 HP 9000 HP/UX 6.0.1 *************** *** 60,65 Altos 586 System III (2.3) AT&T UNIX PC System V.2 (Release 3.51) Cray 2 UNICOS HP 9000 HP/UX 6.0.1 Mac II A/UX 1.0 NCR Tower System V.2 --- 61,67 ----- AT&T UNIX PC System V.2 (Release 3.51) Convergent S/320 CTIX/68k 6.1, UNIX SysV 3.1 Cray 2 UNICOS + Encore CC 02.00.r088 HP 9000 HP/UX 6.0.1 IBM PC/AT Microport SV/AT V2.4 Mac II A/UX 1.0 *************** *** 61,66 AT&T UNIX PC System V.2 (Release 3.51) Cray 2 UNICOS HP 9000 HP/UX 6.0.1 Mac II A/UX 1.0 NCR Tower System V.2 Pyramid AT&T and Berkeley universe --- 63,69 ----- Cray 2 UNICOS Encore CC 02.00.r088 HP 9000 HP/UX 6.0.1 + IBM PC/AT Microport SV/AT V2.4 Mac II A/UX 1.0 NCR Tower System V.2 Pyramid AT&T and Berkeley universe *************** *** 67,72 Sequent Symetry Dynix 3.0 SGI Iris 4D/60G UNIX 3.0 SGI Iris 4D/70G UNIX 3.0 Sun 2 SunOS 3.4 Sun 2 SunOS 3.5 Sun 3 SunOS 3.4 --- 70,77 ----- Sequent Symetry Dynix 3.0 SGI Iris 4D/60G UNIX 3.0 SGI Iris 4D/70G UNIX 3.0 + SCO Xenix 386 2.3.2 + SCO Unix 386 3.2 Sun 2 SunOS 3.4 Sun 2 SunOS 3.5 Sun 3 SunOS 3.4 *************** *** 76,82 VAX 8750 BSD 4.3 (Mt. Xinu) VAX 8650 BSD 4.3 (Mt. Xinu) VAX 780 BSD 4.3 (Berkeley) ! ------------------------------------------------------- In future releases, the source will be moving toward ANSI C and POSIX compatibility. This should allow for portability over any system --- 81,87 ----- VAX 8750 BSD 4.3 (Mt. Xinu) VAX 8650 BSD 4.3 (Mt. Xinu) VAX 780 BSD 4.3 (Berkeley) ! --------------------------------------------------- In future releases, the source will be moving toward ANSI C and POSIX compatibility. This should allow for portability over any system *************** *** 110,116 THE SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ! WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. Please report any bug or problems to: --- 115,121 ----- THE SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. Please report any bug or problems to: *************** *** 115,121 Please report any bug or problems to: Mark Colburn ! NAPS International 117 Mackubin St., Suite 1 St. Paul MN 55102 (612) 224-9108 --- 120,126 ----- Please report any bug or problems to: Mark Colburn ! Minnetech Consulting, Inc. 117 Mackubin St., Suite 1 St. Paul MN 55102 mark@jhereg.MN.ORG *************** *** 118,122 NAPS International 117 Mackubin St., Suite 1 St. Paul MN 55102 - (612) 224-9108 mark@jhereg.MN.ORG --- 123,126 ----- Minnetech Consulting, Inc. 117 Mackubin St., Suite 1 St. Paul MN 55102 mark@jhereg.MN.ORG Index: PATCHLEVEL *** /tmp/,RCSt1a17193 Sun Feb 12 14:10:19 1989 --- PATCHLEVEL Sun Feb 12 14:01:55 1989 *************** *** 1,2 ! Patchlevel 0 ! $Id: PATCHLEVEL,v 1.1 88/12/23 18:02:43 mark Rel $ --- 1,2 ----- ! Patchlevel 1 ! $Id: PATCHLEVEL,v 1.2 89/02/12 10:09:03 mark Exp $ -- Mark H. Colburn "Look into a child's eye; Minnetech Consulting, Inc. there's no hate and there's no lie; mark@jhereg.mn.org there's no black and there's no white."