Annotation of coherent/g/usr/bin/pax/misc/patch2, revision 1.1.1.1

1.1       root        1: 
                      2: Index: list.c
                      3: *** /tmp/,RCSt1a17078  Sun Feb 12 14:07:03 1989
                      4: --- list.c     Sun Feb 12 14:02:13 1989
                      5: ***************
                      6: *** 1,6
                      7:   /* $Source: /src386/usr/bin/pax/patch2,v $
                      8:    *
                      9: !  * $Revision: 1.1 $
                     10:    *
                     11:    * list.c - List all files on an archive
                     12:    *
                     13: 
                     14: --- 1,6 -----
                     15:   /* $Source: /src386/usr/bin/pax/patch2,v $
                     16:    *
                     17: !  * $Revision: 1.1 $
                     18:    *
                     19:    * list.c - List all files on an archive
                     20:    *
                     21: ***************
                     22: *** 27,33
                     23:    *
                     24:    * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
                     25:    * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
                     26: !  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                     27:    *
                     28:    * $Log:     patch2,v $
                     29: # Revision 1.1  92/08/28  08:02:34  bin
                     30: # Initial revision
                     31: # 
                     32:    * Revision 1.1  88/12/23  18:02:14  mark
                     33: 
                     34: --- 27,33 -----
                     35:    *
                     36:    * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
                     37:    * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
                     38: !  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                     39:    *
                     40:    * $Log:     patch2,v $
                     41: # Revision 1.1  92/08/28  08:02:34  bin
                     42: # Initial revision
                     43: # 
                     44:    * Revision 1.2  89/02/12  10:04:43  mark
                     45: ***************
                     46: *** 30,35
                     47:    * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                     48:    *
                     49:    * $Log:     patch2,v $
                     50: # Revision 1.1  92/08/28  08:02:34  bin
                     51: # Initial revision
                     52: # 
                     53:    * Revision 1.1  88/12/23  18:02:14  mark
                     54:    * Initial revision
                     55:    * 
                     56: 
                     57: --- 30,38 -----
                     58:    * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                     59:    *
                     60:    * $Log:     patch2,v $
                     61: # Revision 1.1  92/08/28  08:02:34  bin
                     62: # Initial revision
                     63: # 
                     64: +  * Revision 1.2  89/02/12  10:04:43  mark
                     65: +  * 1.2 release fixes
                     66: +  * 
                     67:    * Revision 1.1  88/12/23  18:02:14  mark
                     68:    * Initial revision
                     69:    * 
                     70: ***************
                     71: *** 36,42
                     72:    */
                     73:   
                     74:   #ifndef lint
                     75: ! static char *ident = "$Id: patch2,v 1.1 92/08/28 08:02:34 bin Exp Locker: bin $";
                     76:   static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n";
                     77:   #endif /* ! lint */
                     78:   
                     79: 
                     80: --- 39,45 -----
                     81:    */
                     82:   
                     83:   #ifndef lint
                     84: ! static char *ident = "$Id: patch2,v 1.1 92/08/28 08:02:34 bin Exp Locker: bin $";
                     85:   static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n";
                     86:   #endif /* ! lint */
                     87:   
                     88: ***************
                     89: *** 384,390
                     90:        case S_IFLNK:   /* This file is a symbolic link */
                     91:            i = readlink(name, symnam, PATH_MAX - 1);
                     92:            if (i < 0) {                /* Could not find symbolic link */
                     93: !              warn("can't read symbolic link", syserr());
                     94:            } else {            /* Found symbolic link filename */
                     95:                symnam[i] = '\0';
                     96:                fprintf(msgfile, "x %s symbolic link to %s\n", name, symnam);
                     97: 
                     98: --- 387,393 -----
                     99:        case S_IFLNK:   /* This file is a symbolic link */
                    100:            i = readlink(name, symnam, PATH_MAX - 1);
                    101:            if (i < 0) {                /* Could not find symbolic link */
                    102: !              warn("can't read symbolic link", strerror());
                    103:            } else {            /* Found symbolic link filename */
                    104:                symnam[i] = '\0';
                    105:                fprintf(msgfile, "x %s symbolic link to %s\n", name, symnam);
                    106: ***************
                    107: *** 395,401
                    108:            if ((asb->sb_nlink > 1) && (link = islink(name, asb))) {
                    109:                fprintf(msgfile, "%s linked to %s\n", name, link->l_name); 
                    110:            } else {
                    111: !              fprintf(msgfile, "x %s, %d bytes, %d tape blocks\n", 
                    112:                        name, asb->sb_size, ROUNDUP(asb->sb_size, 
                    113:                        BLOCKSIZE) / BLOCKSIZE);
                    114:            }
                    115: 
                    116: --- 398,404 -----
                    117:            if ((asb->sb_nlink > 1) && (link = islink(name, asb))) {
                    118:                fprintf(msgfile, "%s linked to %s\n", name, link->l_name); 
                    119:            } else {
                    120: !              fprintf(msgfile, "x %s, %ld bytes, %d tape blocks\n", 
                    121:                        name, asb->sb_size, ROUNDUP(asb->sb_size, 
                    122:                        BLOCKSIZE) / BLOCKSIZE);
                    123:            }
                    124: ***************
                    125: *** 406,412
                    126:        case S_IFLNK:   /* This file is a symbolic link */
                    127:            i = readlink(name, symnam, PATH_MAX - 1);
                    128:            if (i < 0) {                /* Could not find symbolic link */
                    129: !              warn("can't read symbolic link", syserr());
                    130:            } else {            /* Found symbolic link filename */
                    131:                symnam[i] = '\0';
                    132:                fprintf(msgfile, "a %s symbolic link to %s\n", name, symnam);
                    133: 
                    134: --- 409,415 -----
                    135:        case S_IFLNK:   /* This file is a symbolic link */
                    136:            i = readlink(name, symnam, PATH_MAX - 1);
                    137:            if (i < 0) {                /* Could not find symbolic link */
                    138: !              warn("can't read symbolic link", strerror());
                    139:            } else {            /* Found symbolic link filename */
                    140:                symnam[i] = '\0';
                    141:                fprintf(msgfile, "a %s symbolic link to %s\n", name, symnam);
                    142: ***************
                    143: *** 418,424
                    144:            if ((asb->sb_nlink > 1) && (link = islink(name, asb))) {
                    145:                fprintf(msgfile, "link to %s\n", link->l_name); 
                    146:            } else {
                    147: !              fprintf(msgfile, "%d Blocks\n", 
                    148:                        ROUNDUP(asb->sb_size, BLOCKSIZE) / BLOCKSIZE);
                    149:            }
                    150:            break;
                    151: 
                    152: --- 421,427 -----
                    153:            if ((asb->sb_nlink > 1) && (link = islink(name, asb))) {
                    154:                fprintf(msgfile, "link to %s\n", link->l_name); 
                    155:            } else {
                    156: !              fprintf(msgfile, "%ld Blocks\n", 
                    157:                        ROUNDUP(asb->sb_size, BLOCKSIZE) / BLOCKSIZE);
                    158:            }
                    159:            break;
                    160: ***************
                    161: *** 439,445
                    162:        case S_IFLNK:   /* This file is a symbolic link */
                    163:            i = readlink(name, symnam, PATH_MAX - 1);
                    164:            if (i < 0) {                /* Could not find symbolic link */
                    165: !              warn("can't read symbolic link", syserr());
                    166:            } else {            /* Found symbolic link filename */
                    167:                symnam[i] = '\0';
                    168:                fprintf(msgfile, " symbolic link to %s", name, symnam);
                    169: 
                    170: --- 442,448 -----
                    171:        case S_IFLNK:   /* This file is a symbolic link */
                    172:            i = readlink(name, symnam, PATH_MAX - 1);
                    173:            if (i < 0) {                /* Could not find symbolic link */
                    174: !              warn("can't read symbolic link", strerror());
                    175:            } else {            /* Found symbolic link filename */
                    176:                symnam[i] = '\0';
                    177:                fprintf(msgfile, " symbolic link to %s", symnam);
                    178: ***************
                    179: *** 442,448
                    180:                warn("can't read symbolic link", syserr());
                    181:            } else {            /* Found symbolic link filename */
                    182:                symnam[i] = '\0';
                    183: !              fprintf(msgfile, " symbolic link to %s", name, symnam);
                    184:            }
                    185:            break;
                    186:   #endif
                    187: 
                    188: --- 445,451 -----
                    189:                warn("can't read symbolic link", strerror());
                    190:            } else {            /* Found symbolic link filename */
                    191:                symnam[i] = '\0';
                    192: !              fprintf(msgfile, " symbolic link to %s", symnam);
                    193:            }
                    194:            break;
                    195:   #endif
                    196: ***************
                    197: *** 454,460
                    198:        }
                    199:        fputc('\n', msgfile);
                    200:       } else {
                    201: !      fprintf(msgfile, "? %s %d blocks\n", name,
                    202:                ROUNDUP(asb->sb_size, BLOCKSIZE) / BLOCKSIZE);
                    203:       }
                    204:   }
                    205: 
                    206: --- 457,463 -----
                    207:        }
                    208:        fputc('\n', msgfile);
                    209:       } else {
                    210: !      fprintf(msgfile, "? %s %ld blocks\n", name,
                    211:                ROUNDUP(asb->sb_size, BLOCKSIZE) / BLOCKSIZE);
                    212:       }
                    213:   }
                    214: ***************
                    215: *** 518,525
                    216:            fprintf(msgfile, "\t        ");
                    217:        }
                    218:        fprintf(msgfile," %3s %2d %02d:%02d ",
                    219: !                     monnames[atm->tm_mon], atm->tm_mday, 
                    220: !                     atm->tm_hour, atm->tm_min);
                    221:       }
                    222:       fprintf(msgfile, "%s", name);
                    223:       if ((asb->sb_nlink > 1) && (from = islink(name, asb))) {
                    224: 
                    225: --- 521,528 -----
                    226:            fprintf(msgfile, "\t        ");
                    227:        }
                    228:        fprintf(msgfile," %3s %2d %02d:%02d ",
                    229: !              monnames[atm->tm_mon], atm->tm_mday, 
                    230: !              atm->tm_hour, atm->tm_min);
                    231:       }
                    232:       fprintf(msgfile, "%s", name);
                    233:       if ((asb->sb_nlink > 1) && (from = islink(name, asb))) {
                    234: ***************
                    235: *** 532,539
                    236:   #endif       /* S_IFLNK */
                    237:       putc('\n', msgfile);
                    238:   }
                    239: - 
                    240: - 
                    241:   
                    242:   
                    243:   /* print_mode - fancy file mode display
                    244: 
                    245: --- 535,540 -----
                    246:   #endif       /* S_IFLNK */
                    247:       putc('\n', msgfile);
                    248:   }
                    249:   
                    250:   
                    251:   /* print_mode - fancy file mode display
                    252: Index: mem.c
                    253: *** /tmp/,RCSt1a17083  Sun Feb 12 14:07:14 1989
                    254: --- mem.c      Sun Feb 12 14:02:14 1989
                    255: ***************
                    256: *** 1,6
                    257:   /* $Source: /src386/usr/bin/pax/patch2,v $
                    258:    *
                    259: !  * $Revision: 1.1 $
                    260:    *
                    261:    * mem.c - memory allocation and manipulation functions
                    262:    *
                    263: 
                    264: --- 1,6 -----
                    265:   /* $Source: /src386/usr/bin/pax/patch2,v $
                    266:    *
                    267: !  * $Revision: 1.1 $
                    268:    *
                    269:    * mem.c - memory allocation and manipulation functions
                    270:    *
                    271: ***************
                    272: *** 28,34
                    273:    *
                    274:    * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
                    275:    * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
                    276: !  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                    277:    *
                    278:    * $Log:     patch2,v $
                    279: # Revision 1.1  92/08/28  08:02:34  bin
                    280: # Initial revision
                    281: # 
                    282:    * Revision 1.1  88/12/23  18:02:17  mark
                    283: 
                    284: --- 28,34 -----
                    285:    *
                    286:    * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
                    287:    * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
                    288: !  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                    289:    *
                    290:    * $Log:     patch2,v $
                    291: # Revision 1.1  92/08/28  08:02:34  bin
                    292: # Initial revision
                    293: # 
                    294:    * Revision 1.2  89/02/12  10:04:53  mark
                    295: ***************
                    296: *** 31,36
                    297:    * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                    298:    *
                    299:    * $Log:     patch2,v $
                    300: # Revision 1.1  92/08/28  08:02:34  bin
                    301: # Initial revision
                    302: # 
                    303:    * Revision 1.1  88/12/23  18:02:17  mark
                    304:    * Initial revision
                    305:    * 
                    306: 
                    307: --- 31,39 -----
                    308:    * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                    309:    *
                    310:    * $Log:     patch2,v $
                    311: # Revision 1.1  92/08/28  08:02:34  bin
                    312: # Initial revision
                    313: # 
                    314: +  * Revision 1.2  89/02/12  10:04:53  mark
                    315: +  * 1.2 release fixes
                    316: +  * 
                    317:    * Revision 1.1  88/12/23  18:02:17  mark
                    318:    * Initial revision
                    319:    * 
                    320: ***************
                    321: *** 37,43
                    322:    */
                    323:   
                    324:   #ifndef lint
                    325: ! static char *ident = "$Id: patch2,v 1.1 92/08/28 08:02:34 bin Exp Locker: bin $";
                    326:   static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n";
                    327:   #endif /* ! lint */
                    328:   
                    329: 
                    330: --- 40,46 -----
                    331:    */
                    332:   
                    333:   #ifndef lint
                    334: ! static char *ident = "$Id: patch2,v 1.1 92/08/28 08:02:34 bin Exp Locker: bin $";
                    335:   static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n";
                    336:   #endif /* ! lint */
                    337:   
                    338: ***************
                    339: *** 65,71
                    340:    * RETURNS
                    341:    *
                    342:    *   Normally returns the pointer to the newly allocated memory.  If
                    343: !  *   an error occurss, NULL is returned, and an error message is
                    344:    *   printed.
                    345:    *
                    346:    * ERRORS
                    347: 
                    348: --- 68,74 -----
                    349:    * RETURNS
                    350:    *
                    351:    *   Normally returns the pointer to the newly allocated memory.  If
                    352: !  *   an error occurs, NULL is returned, and an error message is
                    353:    *   printed.
                    354:    *
                    355:    * ERRORS
                    356: ***************
                    357: *** 87,93
                    358:       char           *mem;
                    359:       static short    outofmem = 0;
                    360:   
                    361: !     if ((mem = (char *)malloc(len)) == NULL && !outofmem) {
                    362:        outofmem++;
                    363:        warn("mem_get()", "Out of memory");
                    364:       }
                    365: 
                    366: --- 90,96 -----
                    367:       char           *mem;
                    368:       static short    outofmem = 0;
                    369:   
                    370: !     if ((mem = (char *)malloc(len)) == (char *)NULL && !outofmem) {
                    371:        outofmem++;
                    372:        warn("mem_get()", "Out of memory");
                    373:       }
                    374: Index: namelist.c
                    375: *** /tmp/,RCSt1a19493  Mon Feb 13 09:15:28 1989
                    376: --- namelist.c Mon Feb 13 09:14:57 1989
                    377: ***************
                    378: *** 1,6
                    379:   /* $Source: /src386/usr/bin/pax/patch2,v $
                    380:    *
                    381: !  * $Revision: 1.1 $
                    382:    *
                    383:    * namelist.c - track filenames given as arguments to tar/cpio/pax
                    384:    *
                    385: 
                    386: --- 1,6 -----
                    387:   /* $Source: /src386/usr/bin/pax/patch2,v $
                    388:    *
                    389: !  * $Revision: 1.1 $
                    390:    *
                    391:    * namelist.c - track filenames given as arguments to tar/cpio/pax
                    392:    *
                    393: ***************
                    394: *** 23,29
                    395:    * provided that the above copyright notice is duplicated in all such 
                    396:    * forms and that any documentation, advertising materials, and other 
                    397:    * materials related to such distribution and use acknowledge that the 
                    398: !  * software was developed * by Mark H. Colburn and sponsored by The 
                    399:    * USENIX Association. 
                    400:    *
                    401:    * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
                    402: 
                    403: --- 23,29 -----
                    404:    * provided that the above copyright notice is duplicated in all such 
                    405:    * forms and that any documentation, advertising materials, and other 
                    406:    * materials related to such distribution and use acknowledge that the 
                    407: !  * software was developed by Mark H. Colburn and sponsored by The 
                    408:    * USENIX Association. 
                    409:    *
                    410:    * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
                    411: ***************
                    412: *** 28,34
                    413:    *
                    414:    * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
                    415:    * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
                    416: !  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                    417:    *
                    418:    * $Log:     patch2,v $
                    419: # Revision 1.1  92/08/28  08:02:34  bin
                    420: # Initial revision
                    421: # 
                    422:    * Revision 1.1  88/12/23  18:02:17  mark
                    423: 
                    424: --- 28,34 -----
                    425:    *
                    426:    * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
                    427:    * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
                    428: !  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                    429:    *
                    430:    * $Log:     patch2,v $
                    431: # Revision 1.1  92/08/28  08:02:34  bin
                    432: # Initial revision
                    433: # 
                    434:    * Revision 1.6  89/02/13  09:14:48  mark
                    435: ***************
                    436: *** 31,36
                    437:    * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                    438:    *
                    439:    * $Log:     patch2,v $
                    440: # Revision 1.1  92/08/28  08:02:34  bin
                    441: # Initial revision
                    442: # 
                    443:    * Revision 1.1  88/12/23  18:02:17  mark
                    444:    * Initial revision
                    445:    * 
                    446: 
                    447: --- 31,51 -----
                    448:    * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                    449:    *
                    450:    * $Log:     patch2,v $
                    451: # Revision 1.1  92/08/28  08:02:34  bin
                    452: # Initial revision
                    453: # 
                    454: +  * Revision 1.6  89/02/13  09:14:48  mark
                    455: +  * Fixed problem with directory errors
                    456: +  * 
                    457: +  * Revision 1.5  89/02/12  12:14:00  mark
                    458: +  * Fixed misspellings
                    459: +  * 
                    460: +  * Revision 1.4  89/02/12  11:25:19  mark
                    461: +  * Modifications to compile and link cleanly under USG
                    462: +  * 
                    463: +  * Revision 1.3  89/02/12  10:40:23  mark
                    464: +  * Fixed casting problems
                    465: +  * 
                    466: +  * Revision 1.2  89/02/12  10:04:57  mark
                    467: +  * 1.2 release fixes
                    468: +  * 
                    469:    * Revision 1.1  88/12/23  18:02:17  mark
                    470:    * Initial revision
                    471:    * 
                    472: ***************
                    473: *** 37,43
                    474:    */
                    475:   
                    476:   #ifndef lint
                    477: ! static char *ident = "$Id: patch2,v 1.1 92/08/28 08:02:34 bin Exp Locker: bin $";
                    478:   static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n";
                    479:   #endif /* ! lint */
                    480:   
                    481: 
                    482: --- 52,58 -----
                    483:    */
                    484:   
                    485:   #ifndef lint
                    486: ! static char *ident = "$Id: patch2,v 1.1 92/08/28 08:02:34 bin Exp Locker: bin $";
                    487:   static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n";
                    488:   #endif /* ! lint */
                    489:   
                    490: ***************
                    491: *** 68,73
                    492:   };
                    493:   
                    494:   
                    495:   /* Function Prototypes */
                    496:   
                    497:   #ifndef __STDC__
                    498: 
                    499: --- 83,93 -----
                    500:   };
                    501:   
                    502:   
                    503: + /* Static Variables */
                    504: + 
                    505: + static struct dirinfo *stack_head = (struct dirinfo *)NULL;
                    506: + 
                    507: + 
                    508:   /* Function Prototypes */
                    509:   
                    510:   #ifndef __STDC__
                    511: ***************
                    512: *** 123,129
                    513:       if (!p) {
                    514:        fatal("cannot allocate memory for namelist entry\n");
                    515:       }
                    516: !     p->next = (struct nm_list *) NULL;
                    517:       p->length = i;
                    518:       strncpy(p->name, name, i);
                    519:       p->name[i] = '\0';               /* Null term */
                    520: 
                    521: --- 143,149 -----
                    522:       if (!p) {
                    523:        fatal("cannot allocate memory for namelist entry\n");
                    524:       }
                    525: !     p->next = (struct nm_list *)NULL;
                    526:       p->length = i;
                    527:       strncpy(p->name, name, i);
                    528:       p->name[i] = '\0';               /* Null term */
                    529: ***************
                    530: *** 231,237
                    531:       for (nlp = namelist; nlp != 0; nlp = nlp->next) {
                    532:        if (!nlp->found) {
                    533:            fprintf(stderr, "%s: %s not found in archive\n",
                    534: !                         myname, nlp->name);
                    535:        }
                    536:        free(nlp);
                    537:       }
                    538: 
                    539: --- 251,257 -----
                    540:       for (nlp = namelist; nlp != 0; nlp = nlp->next) {
                    541:        if (!nlp->found) {
                    542:            fprintf(stderr, "%s: %s not found in archive\n",
                    543: !                  myname, nlp->name);
                    544:        }
                    545:        free(nlp);
                    546:       }
                    547: ***************
                    548: *** 235,242
                    549:        }
                    550:        free(nlp);
                    551:       }
                    552: !     namelist = (struct nm_list *) NULL;
                    553: !     namelast = (struct nm_list *) NULL;
                    554:   }
                    555:   
                    556:   
                    557: 
                    558: --- 255,262 -----
                    559:        }
                    560:        free(nlp);
                    561:       }
                    562: !     namelist = (struct nm_list *)NULL;
                    563: !     namelast = (struct nm_list *)NULL;
                    564:   }
                    565:   
                    566:   
                    567: ***************
                    568: *** 326,332
                    569:            }
                    570:        } else {
                    571:            if (in_subdir) {
                    572: !              if ((d = readdir(dirp)) != NULL) {
                    573:                    /* Skip . and .. */
                    574:                    if (strcmp(d->d_name, ".") == 0 ||
                    575:                        strcmp(d->d_name, "..") == 0) {
                    576: 
                    577: --- 346,352 -----
                    578:            }
                    579:        } else {
                    580:            if (in_subdir) {
                    581: !              if ((d = readdir(dirp)) != (struct dirent *)NULL) {
                    582:                    /* Skip . and .. */
                    583:                    if (strcmp(d->d_name, ".") == 0 ||
                    584:                        strcmp(d->d_name, "..") == 0) {
                    585: ***************
                    586: *** 345,351
                    587:                    curr_dir = popdir();
                    588:                    if (in_subdir) {
                    589:                        errno = 0;
                    590: !                      if ((dirp = opendir(curr_dir->dirname)) == NULL) {
                    591:                            warn(curr_dir->dirname, "error opening directory (1)");
                    592:                            in_subdir--;
                    593:                        }
                    594: 
                    595: --- 365,371 -----
                    596:                    curr_dir = popdir();
                    597:                    if (in_subdir) {
                    598:                        errno = 0;
                    599: !                      if ((dirp=opendir(curr_dir->dirname)) == (DIR *)NULL) {
                    600:                            warn(curr_dir->dirname, "error opening directory (1)");
                    601:                            in_subdir--;
                    602:                        }
                    603: ***************
                    604: *** 360,366
                    605:            }
                    606:        }
                    607:        if ((err = LSTAT(name, statbuf)) < 0) {
                    608: !          warn(name, syserr());
                    609:            continue;
                    610:        }
                    611:        if (!names_from_stdin && (statbuf->sb_mode & S_IFMT) == S_IFDIR) {
                    612: 
                    613: --- 380,386 -----
                    614:            }
                    615:        }
                    616:        if ((err = LSTAT(name, statbuf)) < 0) {
                    617: !          warn(name, strerror());
                    618:            continue;
                    619:        }
                    620:        if (!names_from_stdin && (statbuf->sb_mode & S_IFMT) == S_IFDIR) {
                    621: ***************
                    622: *** 367,373
                    623:            if (in_subdir) {
                    624:                curr_dir->where = telldir(dirp);
                    625:                pushdir(curr_dir);
                    626: !              close(dirp);
                    627:            } 
                    628:            in_subdir++;
                    629:   
                    630: 
                    631: --- 387,393 -----
                    632:            if (in_subdir) {
                    633:                curr_dir->where = telldir(dirp);
                    634:                pushdir(curr_dir);
                    635: !              closedir(dirp);
                    636:            } 
                    637:            in_subdir++;
                    638:   
                    639: ***************
                    640: *** 372,379
                    641:            in_subdir++;
                    642:   
                    643:            /* Build new prototype name */
                    644: !          if ((curr_dir = (struct dirinfo *) 
                    645: !                  mem_get(sizeof(struct dirinfo))) == NULL) {
                    646:                exit(2);
                    647:            }
                    648:            strcpy(curr_dir->dirname, name);
                    649: 
                    650: --- 392,399 -----
                    651:            in_subdir++;
                    652:   
                    653:            /* Build new prototype name */
                    654: !          if ((curr_dir = (struct dirinfo *) mem_get(sizeof(struct dirinfo))) 
                    655: !                        == (struct dirinfo *)NULL) {
                    656:                exit(2);
                    657:            }
                    658:            strcpy(curr_dir->dirname, name);
                    659: ***************
                    660: *** 383,393
                    661:            }
                    662:            curr_dir->dirname[len++] = '/';     /* Now add exactly one back */
                    663:            curr_dir->dirname[len] = '\0';/* Make sure null-terminated */
                    664: ! 
                    665: !          errno = 0;
                    666: !          if ((dirp = opendir(curr_dir->dirname)) == NULL) {
                    667: !              warn(curr_dir->dirname, "error opening directory (2)");
                    668: !          }
                    669:        }
                    670:       } while (err < 0);
                    671:       return (0);
                    672: 
                    673: --- 403,424 -----
                    674:            }
                    675:            curr_dir->dirname[len++] = '/';     /* Now add exactly one back */
                    676:            curr_dir->dirname[len] = '\0';/* Make sure null-terminated */
                    677: !             curr_dir->where = 0;
                    678: !            
                    679: !             errno = 0;
                    680: !             do {
                    681: !                 if ((dirp = opendir(curr_dir->dirname)) == (DIR *)NULL) {
                    682: !                      warn(curr_dir->dirname, "error opening directory (2)");
                    683: !                      if (in_subdir > 1) {
                    684: !                           curr_dir = popdir();
                    685: !                      }
                    686: !                      in_subdir--;
                    687: !                      err = -1;
                    688: !                      continue;
                    689: !                 } else {
                    690: !                      seekdir(dirp, curr_dir->where);
                    691: !              }
                    692: !          } while (in_subdir && (! dirp));
                    693:        }
                    694:       } while (err < 0);
                    695:       return (0);
                    696: ***************
                    697: *** 422,430
                    698:   }
                    699:   
                    700:   
                    701: - static struct dirinfo *stack_head = NULL;
                    702: - 
                    703: - 
                    704:   /* pushdir - pushes a directory name on the directory stack
                    705:    *
                    706:    * DESCRIPTION
                    707: 
                    708: --- 453,458 -----
                    709:   }
                    710:   
                    711:   
                    712:   /* pushdir - pushes a directory name on the directory stack
                    713:    *
                    714:    * DESCRIPTION
                    715: ***************
                    716: *** 449,455
                    717:   
                    718:   #endif
                    719:   {
                    720: !     if  (stack_head == NULL) {
                    721:        stack_head = info;
                    722:        stack_head->next = NULL;
                    723:       } else {
                    724: 
                    725: --- 477,483 -----
                    726:   
                    727:   #endif
                    728:   {
                    729: !     if  (stack_head == (struct dirinfo *)NULL) {
                    730:        stack_head = info;
                    731:        stack_head->next = (struct dirinfo *)NULL;
                    732:       } else {
                    733: ***************
                    734: *** 451,457
                    735:   {
                    736:       if  (stack_head == NULL) {
                    737:        stack_head = info;
                    738: !      stack_head->next = NULL;
                    739:       } else {
                    740:        info->next = stack_head;
                    741:        stack_head = info;
                    742: 
                    743: --- 479,485 -----
                    744:   {
                    745:       if  (stack_head == (struct dirinfo *)NULL) {
                    746:        stack_head = info;
                    747: !      stack_head->next = (struct dirinfo *)NULL;
                    748:       } else {
                    749:        info->next = stack_head;
                    750:        stack_head = info;
                    751: ***************
                    752: *** 485,492
                    753:   {
                    754:       struct dirinfo   *tmp;
                    755:   
                    756: !     if (stack_head == NULL) {
                    757: !      return(NULL);
                    758:       } else {
                    759:        tmp = stack_head;
                    760:        stack_head = stack_head->next;
                    761: 
                    762: --- 513,520 -----
                    763:   {
                    764:       struct dirinfo   *tmp;
                    765:   
                    766: !     if (stack_head == (struct dirinfo *)NULL) {
                    767: !      return((struct dirinfo *)NULL);
                    768:       } else {
                    769:        tmp = stack_head;
                    770:        stack_head = stack_head->next;
                    771: Index: names.c
                    772: *** /tmp/,RCSt1a17093  Sun Feb 12 14:07:34 1989
                    773: --- names.c    Sun Feb 12 14:02:17 1989
                    774: ***************
                    775: *** 1,6
                    776:   /* $Source: /src386/usr/bin/pax/patch2,v $
                    777:    *
                    778: !  * $Revision: 1.1 $
                    779:    *
                    780:    * names.c - Look up user and/or group names. 
                    781:    *
                    782: 
                    783: --- 1,6 -----
                    784:   /* $Source: /src386/usr/bin/pax/patch2,v $
                    785:    *
                    786: !  * $Revision: 1.1 $
                    787:    *
                    788:    * names.c - Look up user and/or group names. 
                    789:    *
                    790: ***************
                    791: *** 27,33
                    792:    *
                    793:    * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
                    794:    * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
                    795: !  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                    796:    *
                    797:    * $Log:     patch2,v $
                    798: # Revision 1.1  92/08/28  08:02:34  bin
                    799: # Initial revision
                    800: # 
                    801:    * Revision 1.1  88/12/23  18:02:19  mark
                    802: 
                    803: --- 27,33 -----
                    804:    *
                    805:    * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
                    806:    * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
                    807: !  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                    808:    *
                    809:    * $Log:     patch2,v $
                    810: # Revision 1.1  92/08/28  08:02:34  bin
                    811: # Initial revision
                    812: # 
                    813:    * Revision 1.2  89/02/12  10:05:05  mark
                    814: ***************
                    815: *** 30,35
                    816:    * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                    817:    *
                    818:    * $Log:     patch2,v $
                    819: # Revision 1.1  92/08/28  08:02:34  bin
                    820: # Initial revision
                    821: # 
                    822:    * Revision 1.1  88/12/23  18:02:19  mark
                    823:    * Initial revision
                    824:    * 
                    825: 
                    826: --- 30,38 -----
                    827:    * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                    828:    *
                    829:    * $Log:     patch2,v $
                    830: # Revision 1.1  92/08/28  08:02:34  bin
                    831: # Initial revision
                    832: # 
                    833: +  * Revision 1.2  89/02/12  10:05:05  mark
                    834: +  * 1.2 release fixes
                    835: +  * 
                    836:    * Revision 1.1  88/12/23  18:02:19  mark
                    837:    * Initial revision
                    838:    * 
                    839: ***************
                    840: *** 36,42
                    841:    */
                    842:   
                    843:   #ifndef lint
                    844: ! static char *ident = "$Id: patch2,v 1.1 92/08/28 08:02:34 bin Exp Locker: bin $";
                    845:   static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n";
                    846:   #endif /* ! lint */
                    847:   
                    848: 
                    849: --- 39,45 -----
                    850:    */
                    851:   
                    852:   #ifndef lint
                    853: ! static char *ident = "$Id: patch2,v 1.1 92/08/28 08:02:34 bin Exp Locker: bin $";
                    854:   static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n";
                    855:   #endif /* ! lint */
                    856:   
                    857: Index: pass.c
                    858: *** /tmp/,RCSt1a17098  Sun Feb 12 14:07:40 1989
                    859: --- pass.c     Sun Feb 12 14:02:19 1989
                    860: ***************
                    861: *** 1,6
                    862:   /* $Source: /src386/usr/bin/pax/patch2,v $
                    863:    *
                    864: !  * $Revision: 1.1 $
                    865:    *
                    866:    * pass.c - handle the pass option of cpio
                    867:    *
                    868: 
                    869: --- 1,6 -----
                    870:   /* $Source: /src386/usr/bin/pax/patch2,v $
                    871:    *
                    872: !  * $Revision: 1.1 $
                    873:    *
                    874:    * pass.c - handle the pass option of cpio
                    875:    *
                    876: ***************
                    877: *** 27,33
                    878:    *
                    879:    * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
                    880:    * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
                    881: !  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                    882:    *
                    883:    * $Log:     patch2,v $
                    884: # Revision 1.1  92/08/28  08:02:34  bin
                    885: # Initial revision
                    886: # 
                    887:    * Revision 1.1  88/12/23  18:02:20  mark
                    888: 
                    889: --- 27,33 -----
                    890:    *
                    891:    * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
                    892:    * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
                    893: !  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                    894:    *
                    895:    * $Log:     patch2,v $
                    896: # Revision 1.1  92/08/28  08:02:34  bin
                    897: # Initial revision
                    898: # 
                    899:    * Revision 1.3  89/02/12  10:29:51  mark
                    900: ***************
                    901: *** 30,35
                    902:    * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                    903:    *
                    904:    * $Log:     patch2,v $
                    905: # Revision 1.1  92/08/28  08:02:34  bin
                    906: # Initial revision
                    907: # 
                    908:    * Revision 1.1  88/12/23  18:02:20  mark
                    909:    * Initial revision
                    910:    * 
                    911: 
                    912: --- 30,41 -----
                    913:    * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                    914:    *
                    915:    * $Log:     patch2,v $
                    916: # Revision 1.1  92/08/28  08:02:34  bin
                    917: # Initial revision
                    918: # 
                    919: +  * Revision 1.3  89/02/12  10:29:51  mark
                    920: +  * Fixed misspelling of Replstr
                    921: +  * 
                    922: +  * Revision 1.2  89/02/12  10:05:09  mark
                    923: +  * 1.2 release fixes
                    924: +  * 
                    925:    * Revision 1.1  88/12/23  18:02:20  mark
                    926:    * Initial revision
                    927:    * 
                    928: ***************
                    929: *** 36,42
                    930:    */
                    931:   
                    932:   #ifndef lint
                    933: ! static char *ident = "$Id: patch2,v 1.1 92/08/28 08:02:34 bin Exp Locker: bin $";
                    934:   static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n";
                    935:   #endif /* ! lint */
                    936:   
                    937: 
                    938: --- 42,48 -----
                    939:    */
                    940:   
                    941:   #ifndef lint
                    942: ! static char *ident = "$Id: patch2,v 1.1 92/08/28 08:02:34 bin Exp Locker: bin $";
                    943:   static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n";
                    944:   #endif /* ! lint */
                    945:   
                    946: ***************
                    947: *** 74,80
                    948:       int             fd;
                    949:       Stat            sb;
                    950:   
                    951: !     while (name_next(name, &sb) >= 0 && (fd = openi(name, &sb)) >= 0) {
                    952:   
                    953:        if (rplhead != NULL) {
                    954:            rpl_name(name);
                    955: 
                    956: --- 80,86 -----
                    957:       int             fd;
                    958:       Stat            sb;
                    959:   
                    960: !     while (name_next(name, &sb) >= 0 && (fd = openin(name, &sb)) >= 0) {
                    961:   
                    962:        if (rplhead != (Replstr *)NULL) {
                    963:            rpl_name(name);
                    964: ***************
                    965: *** 76,82
                    966:   
                    967:       while (name_next(name, &sb) >= 0 && (fd = openi(name, &sb)) >= 0) {
                    968:   
                    969: !      if (rplhead != NULL) {
                    970:            rpl_name(name);
                    971:        }
                    972:        if (get_disposition("pass", name) || get_newname(name, sizeof(name))) {
                    973: 
                    974: --- 82,88 -----
                    975:   
                    976:       while (name_next(name, &sb) >= 0 && (fd = openin(name, &sb)) >= 0) {
                    977:   
                    978: !      if (rplhead != (Replstr *)NULL) {
                    979:            rpl_name(name);
                    980:        }
                    981:        if (get_disposition("pass", name) || get_newname(name, sizeof(name))) {
                    982: ***************
                    983: *** 139,147
                    984:        return (-1);
                    985:       }
                    986:       if (asb->sb_nlink > 1) {
                    987: -      if (f_link && islink(from, asb) == (Link *) NULL) {
                    988: -          linkto(from, asb);
                    989: -      }
                    990:        linkto(to, asb);
                    991:       }
                    992:       if ((ofd = openo(to, asb, islink(to, asb), 1)) < 0) {
                    993: 
                    994: --- 145,150 -----
                    995:        return (-1);
                    996:       }
                    997:       if (asb->sb_nlink > 1) {
                    998:        linkto(to, asb);
                    999:       }
                   1000:       if (f_link && islink(from, asb) == (Link *)NULL) {
                   1001: ***************
                   1002: *** 144,150
                   1003:        }
                   1004:        linkto(to, asb);
                   1005:       }
                   1006: !     if ((ofd = openo(to, asb, islink(to, asb), 1)) < 0) {
                   1007:        return (-1);
                   1008:       }
                   1009:       if (ofd > 0) {
                   1010: 
                   1011: --- 147,156 -----
                   1012:       if (asb->sb_nlink > 1) {
                   1013:        linkto(to, asb);
                   1014:       }
                   1015: !     if (f_link && islink(from, asb) == (Link *)NULL) {
                   1016: !      linkto(from, asb);
                   1017: !     }
                   1018: !     if ((ofd = openout(to, asb, islink(to, asb), 1)) < 0) {
                   1019:        return (-1);
                   1020:       }
                   1021:       if (ofd > 0) {
                   1022: ***************
                   1023: *** 151,157
                   1024:        passdata(from, ifd, to, ofd);
                   1025:       }
                   1026:       tstamp[0] = asb->sb_atime;
                   1027: !     tstamp[1] = f_modification_time ? asb->sb_mtime : time((time_t *) 0);
                   1028:       utime(to, tstamp);
                   1029:       return (ifd);
                   1030:   }
                   1031: 
                   1032: --- 157,163 -----
                   1033:        passdata(from, ifd, to, ofd);
                   1034:       }
                   1035:       tstamp[0] = asb->sb_atime;
                   1036: !     tstamp[1] = f_mtime ? asb->sb_mtime : time((time_t *) 0);
                   1037:       utime(to, tstamp);
                   1038:       return (ifd);
                   1039:   }
                   1040: Index: pathname.c
                   1041: *** /tmp/,RCSt1a17103  Sun Feb 12 14:07:46 1989
                   1042: --- pathname.c Sun Feb 12 14:02:21 1989
                   1043: ***************
                   1044: *** 1,6
                   1045:   /* $Source: /src386/usr/bin/pax/patch2,v $
                   1046:    *
                   1047: !  * $Revision: 1.1 $
                   1048:    *
                   1049:    * pathname.c - directory/pathname support functions 
                   1050:    *
                   1051: 
                   1052: --- 1,6 -----
                   1053:   /* $Source: /src386/usr/bin/pax/patch2,v $
                   1054:    *
                   1055: !  * $Revision: 1.1 $
                   1056:    *
                   1057:    * pathname.c - directory/pathname support functions 
                   1058:    *
                   1059: ***************
                   1060: *** 26,32
                   1061:    *
                   1062:    * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
                   1063:    * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
                   1064: !  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                   1065:    *
                   1066:    * $Log:     patch2,v $
                   1067: # Revision 1.1  92/08/28  08:02:34  bin
                   1068: # Initial revision
                   1069: # 
                   1070:    * Revision 1.1  88/12/23  18:02:21  mark
                   1071: 
                   1072: --- 26,32 -----
                   1073:    *
                   1074:    * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
                   1075:    * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
                   1076: !  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                   1077:    *
                   1078:    * $Log:     patch2,v $
                   1079: # Revision 1.1  92/08/28  08:02:34  bin
                   1080: # Initial revision
                   1081: # 
                   1082:    * Revision 1.2  89/02/12  10:05:13  mark
                   1083: ***************
                   1084: *** 29,34
                   1085:    * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                   1086:    *
                   1087:    * $Log:     patch2,v $
                   1088: # Revision 1.1  92/08/28  08:02:34  bin
                   1089: # Initial revision
                   1090: # 
                   1091:    * Revision 1.1  88/12/23  18:02:21  mark
                   1092:    * Initial revision
                   1093:    * 
                   1094: 
                   1095: --- 29,37 -----
                   1096:    * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                   1097:    *
                   1098:    * $Log:     patch2,v $
                   1099: # Revision 1.1  92/08/28  08:02:34  bin
                   1100: # Initial revision
                   1101: # 
                   1102: +  * Revision 1.2  89/02/12  10:05:13  mark
                   1103: +  * 1.2 release fixes
                   1104: +  * 
                   1105:    * Revision 1.1  88/12/23  18:02:21  mark
                   1106:    * Initial revision
                   1107:    * 
                   1108: ***************
                   1109: *** 35,41
                   1110:    */
                   1111:   
                   1112:   #ifndef lint
                   1113: ! static char *ident = "$Id: patch2,v 1.1 92/08/28 08:02:34 bin Exp Locker: bin $";
                   1114:   static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n";
                   1115:   #endif /* ! lint */
                   1116:   
                   1117: 
                   1118: --- 38,44 -----
                   1119:    */
                   1120:   
                   1121:   #ifndef lint
                   1122: ! static char *ident = "$Id: patch2,v 1.1 92/08/28 08:02:34 bin Exp Locker: bin $";
                   1123:   static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n";
                   1124:   #endif /* ! lint */
                   1125:   
                   1126: ***************
                   1127: *** 51,57
                   1128:    *
                   1129:    *   Dirneed checks to see if a directory of the name pointed to by name
                   1130:    *   exists.  If the directory does exist, then dirneed returns 0.  If
                   1131: !  *   the directory does not exist and the f_create_dirs flag is set,
                   1132:    *   then dirneed will create the needed directory, recursively creating
                   1133:    *   any needed intermediate directory.
                   1134:    *
                   1135: 
                   1136: --- 54,60 -----
                   1137:    *
                   1138:    *   Dirneed checks to see if a directory of the name pointed to by name
                   1139:    *   exists.  If the directory does exist, then dirneed returns 0.  If
                   1140: !  *   the directory does not exist and the f_dir_create flag is set,
                   1141:    *   then dirneed will create the needed directory, recursively creating
                   1142:    *   any needed intermediate directory.
                   1143:    *
                   1144: ***************
                   1145: *** 55,61
                   1146:    *   then dirneed will create the needed directory, recursively creating
                   1147:    *   any needed intermediate directory.
                   1148:    *
                   1149: !  *   If f_create_dirs is not set, then no directories will be created
                   1150:    *   and a value of -1 will be returned if the directory does not
                   1151:    *   exist.
                   1152:    *
                   1153: 
                   1154: --- 58,64 -----
                   1155:    *   then dirneed will create the needed directory, recursively creating
                   1156:    *   any needed intermediate directory.
                   1157:    *
                   1158: !  *   If f_dir_create is not set, then no directories will be created
                   1159:    *   and a value of -1 will be returned if the directory does not
                   1160:    *   exist.
                   1161:    *
                   1162: ***************
                   1163: *** 66,72
                   1164:    * RETURNS
                   1165:    *
                   1166:    *   Returns a 0 if the creation of the directory succeeded or if the
                   1167: !  *   directory already existed.  If the f_create_dirs flag was not set
                   1168:    *   and the named directory does not exist, or the directory creation 
                   1169:    *   failed, a -1 will be returned to the calling routine.
                   1170:    */
                   1171: 
                   1172: --- 69,75 -----
                   1173:    * RETURNS
                   1174:    *
                   1175:    *   Returns a 0 if the creation of the directory succeeded or if the
                   1176: !  *   directory already existed.  If the f_dir_create flag was not set
                   1177:    *   and the named directory does not exist, or the directory creation 
                   1178:    *   failed, a -1 will be returned to the calling routine.
                   1179:    */
                   1180: ***************
                   1181: *** 87,93
                   1182:       int             ok;
                   1183:       static Stat     sb;
                   1184:   
                   1185: !     last = NULL;
                   1186:       for (cp = name; *cp;) {
                   1187:        if (*cp++ == '/') {
                   1188:            last = cp;
                   1189: 
                   1190: --- 90,96 -----
                   1191:       int             ok;
                   1192:       static Stat     sb;
                   1193:   
                   1194: !     last = (char *)NULL;
                   1195:       for (cp = name; *cp;) {
                   1196:        if (*cp++ == '/') {
                   1197:            last = cp;
                   1198: ***************
                   1199: *** 93,99
                   1200:            last = cp;
                   1201:        }
                   1202:       }
                   1203: !     if (last == NULL) {
                   1204:        return (STAT(".", &sb));
                   1205:       }
                   1206:       *--last = '\0';
                   1207: 
                   1208: --- 96,102 -----
                   1209:            last = cp;
                   1210:        }
                   1211:       }
                   1212: !     if (last == (char *)NULL) {
                   1213:        return (STAT(".", &sb));
                   1214:       }
                   1215:       *--last = '\0';
                   1216: ***************
                   1217: *** 99,105
                   1218:       *--last = '\0';
                   1219:       ok = STAT(*name ? name : ".", &sb) == 0
                   1220:        ? ((sb.sb_mode & S_IFMT) == S_IFDIR)
                   1221: !      : (f_create_dirs && dirneed(name) == 0 && dirmake(name, &sb) == 0);
                   1222:       *last = '/';
                   1223:       return (ok ? 0 : -1);
                   1224:   }
                   1225: 
                   1226: --- 102,108 -----
                   1227:       *--last = '\0';
                   1228:       ok = STAT(*name ? name : ".", &sb) == 0
                   1229:        ? ((sb.sb_mode & S_IFMT) == S_IFDIR)
                   1230: !      : (f_dir_create && dirneed(name) == 0 && dirmake(name, &sb) == 0);
                   1231:       *last = '/';
                   1232:       return (ok ? 0 : -1);
                   1233:   }
                   1234: ***************
                   1235: *** 176,182
                   1236:       if (idx == 0) {
                   1237:        element[idx++] = absolute ? "" : "."; 
                   1238:       }
                   1239: !     element[idx] = NULL;
                   1240:       name = begin;
                   1241:       if (absolute) {
                   1242:        *name++ = '/';
                   1243: 
                   1244: --- 179,185 -----
                   1245:       if (idx == 0) {
                   1246:        element[idx++] = absolute ? "" : "."; 
                   1247:       }
                   1248: !     element[idx] = (char *)NULL;
                   1249:       name = begin;
                   1250:       if (absolute) {
                   1251:        *name++ = '/';
                   1252: Index: pax.1
                   1253: *** /tmp/,RCSt1a17108  Sun Feb 12 14:07:54 1989
                   1254: --- pax.1      Sun Feb 12 14:02:22 1989
                   1255: ***************
                   1256: *** 1,4
                   1257: ! .\" $Id: patch2,v 1.1 92/08/28 08:02:34 bin Exp Locker: bin $
                   1258:   .TH PAX 1 "USENIX Association" ""
                   1259:   .SH NAME
                   1260:   pax \- portable archive exchange 
                   1261: 
                   1262: --- 1,4 -----
                   1263: ! .\" $Id: patch2,v 1.1 92/08/28 08:02:34 bin Exp Locker: bin $
                   1264:   .TH PAX 1 "USENIX Association" ""
                   1265:   .SH NAME
                   1266:   pax \- portable archive exchange 
                   1267: ***************
                   1268: *** 213,218
                   1269:   suffix multiplies 
                   1270:   .I blocking 
                   1271:   by 1048576 (1 megabyte).
                   1272:   If not specified,
                   1273:   .I blocking 
                   1274:   is automatically determined on input and is ignored for 
                   1275: 
                   1276: --- 213,220 -----
                   1277:   suffix multiplies 
                   1278:   .I blocking 
                   1279:   by 1048576 (1 megabyte).
                   1280: + For machines with 16-bit int's (VAXen, XENIX-286, etc.), 
                   1281: + the maximum buffer size is 32k-1.
                   1282:   If not specified,
                   1283:   .I blocking 
                   1284:   is automatically determined on input and is ignored for 
                   1285: ***************
                   1286: *** 219,225
                   1287:   .B \-rw.
                   1288:   .TP 1i
                   1289:   .B \-c
                   1290: ! Complement the match sense of the the 
                   1291:   .I pattern
                   1292:   operands.
                   1293:   .TP 1i
                   1294: 
                   1295: --- 221,227 -----
                   1296:   .B \-rw.
                   1297:   .TP 1i
                   1298:   .B \-c
                   1299: ! Complement the match sense of the 
                   1300:   .I pattern
                   1301:   operands.
                   1302:   .TP 1i
                   1303: ***************
                   1304: *** 352,358
                   1305:   .B \-r 
                   1306:   option is used.
                   1307:   The supported formats are:
                   1308: ! .TP 1i
                   1309:   .I cpio
                   1310:   The extended 
                   1311:   .I CPIO
                   1312: 
                   1313: --- 354,361 -----
                   1314:   .B \-r 
                   1315:   option is used.
                   1316:   The supported formats are:
                   1317: ! .RS 1i
                   1318: ! .TP 0.75i
                   1319:   .I cpio
                   1320:   The extended 
                   1321:   .I CPIO
                   1322: ***************
                   1323: *** 359,365
                   1324:   interchange format specified in
                   1325:   .B "Extended CPIO Format" in 
                   1326:   .I "IEEE Std. 1003.1-1988."
                   1327: ! .TP 1i
                   1328:   .I ustar
                   1329:   The extended 
                   1330:   .I TAR
                   1331: 
                   1332: --- 362,368 -----
                   1333:   interchange format specified in
                   1334:   .B "Extended CPIO Format" in 
                   1335:   .I "IEEE Std. 1003.1-1988."
                   1336: ! .TP 0.75i
                   1337:   .I ustar
                   1338:   The extended 
                   1339:   .I TAR
                   1340: ***************
                   1341: *** 540,545
                   1342:   format archives, link counts are listed as zero since the 
                   1343:   .I ustar
                   1344:   archive format does not keep link count information.
                   1345:   .SH COPYRIGHT
                   1346:   Copyright (c) 1989 Mark H. Colburn.  
                   1347:   .br
                   1348: 
                   1349: --- 543,553 -----
                   1350:   format archives, link counts are listed as zero since the 
                   1351:   .I ustar
                   1352:   archive format does not keep link count information.
                   1353: + .PP
                   1354: + On 16 bit architectures, the largest buffer size is 32k-1.
                   1355: + This is due, in part, to using integers in the buffer allocation schemes,
                   1356: + however, on many of these machines, it is not possible to allocate blocks
                   1357: + of memory larger than 32k.
                   1358:   .SH COPYRIGHT
                   1359:   Copyright (c) 1989 Mark H. Colburn.  
                   1360:   .br
                   1361: ***************
                   1362: *** 554,560
                   1363:   .PP
                   1364:   THE SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
                   1365:   IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
                   1366: ! WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                   1367:   .SH AUTHOR
                   1368:   Mark H. Colburn
                   1369:   .br
                   1370: 
                   1371: --- 562,568 -----
                   1372:   .PP
                   1373:   THE SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
                   1374:   IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
                   1375: ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                   1376:   .SH AUTHOR
                   1377:   Mark H. Colburn
                   1378:   .br
                   1379: ***************
                   1380: *** 558,564
                   1381:   .SH AUTHOR
                   1382:   Mark H. Colburn
                   1383:   .br
                   1384: ! NAPS International
                   1385:   .br
                   1386:   117 Mackubin Street, Suite 1
                   1387:   .br
                   1388: 
                   1389: --- 566,572 -----
                   1390:   .SH AUTHOR
                   1391:   Mark H. Colburn
                   1392:   .br
                   1393: ! Minnetech Consulting, Inc.
                   1394:   .br
                   1395:   117 Mackubin Street, Suite 1
                   1396:   .br
                   1397: Index: pax.c
                   1398: *** /tmp/,RCSt1a17113  Sun Feb 12 14:08:07 1989
                   1399: --- pax.c      Sun Feb 12 14:02:25 1989
                   1400: ***************
                   1401: *** 1,6
                   1402:   /* $Source: /src386/usr/bin/pax/patch2,v $
                   1403:    *
                   1404: !  * $Revision: 1.1 $
                   1405:    *
                   1406:    * DESCRIPTION
                   1407:    *
                   1408: 
                   1409: --- 1,6 -----
                   1410:   /* $Source: /src386/usr/bin/pax/patch2,v $
                   1411:    *
                   1412: !  * $Revision: 1.1 $
                   1413:    *
                   1414:    * DESCRIPTION
                   1415:    *
                   1416: ***************
                   1417: *** 46,52
                   1418:    *
                   1419:    * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
                   1420:    * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
                   1421: !  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                   1422:    *
                   1423:    * $Log:     patch2,v $
                   1424: # Revision 1.1  92/08/28  08:02:34  bin
                   1425: # Initial revision
                   1426: # 
                   1427:    * Revision 1.1  88/12/23  18:02:23  mark
                   1428: 
                   1429: --- 46,52 -----
                   1430:    *
                   1431:    * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
                   1432:    * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
                   1433: !  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                   1434:    *
                   1435:    * $Log:     patch2,v $
                   1436: # Revision 1.1  92/08/28  08:02:34  bin
                   1437: # Initial revision
                   1438: # 
                   1439:    * Revision 1.2  89/02/12  10:05:17  mark
                   1440: ***************
                   1441: *** 49,54
                   1442:    * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                   1443:    *
                   1444:    * $Log:     patch2,v $
                   1445: # Revision 1.1  92/08/28  08:02:34  bin
                   1446: # Initial revision
                   1447: # 
                   1448:    * Revision 1.1  88/12/23  18:02:23  mark
                   1449:    * Initial revision
                   1450:    * 
                   1451: 
                   1452: --- 49,57 -----
                   1453:    * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                   1454:    *
                   1455:    * $Log:     patch2,v $
                   1456: # Revision 1.1  92/08/28  08:02:34  bin
                   1457: # Initial revision
                   1458: # 
                   1459: +  * Revision 1.2  89/02/12  10:05:17  mark
                   1460: +  * 1.2 release fixes
                   1461: +  * 
                   1462:    * Revision 1.1  88/12/23  18:02:23  mark
                   1463:    * Initial revision
                   1464:    * 
                   1465: ***************
                   1466: *** 55,61
                   1467:    */
                   1468:   
                   1469:   #ifndef lint
                   1470: ! static char *ident = "$Id: patch2,v 1.1 92/08/28 08:02:34 bin Exp Locker: bin $";
                   1471:   static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n";
                   1472:   #endif /* ! lint */
                   1473:   
                   1474: 
                   1475: --- 58,64 -----
                   1476:    */
                   1477:   
                   1478:   #ifndef lint
                   1479: ! static char *ident = "$Id: patch2,v 1.1 92/08/28 08:02:34 bin Exp Locker: bin $";
                   1480:   static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n";
                   1481:   #endif /* ! lint */
                   1482:   
                   1483: ***************
                   1484: *** 88,94
                   1485:   OFFSET          total;                       /* Total number of bytes transferred */
                   1486:   short           f_access_time;               /* Reset access times of input files */
                   1487:   short           areof;                       /* End of input volume reached */
                   1488: ! short           f_create_dirs;               /* Create missing directories */
                   1489:   short           f_append;            /* Add named files to end of archive */
                   1490:   short           f_create;            /* create a new archive */
                   1491:   short           f_extract;           /* Extract named files from archive */
                   1492: 
                   1493: --- 91,97 -----
                   1494:   OFFSET          total;                       /* Total number of bytes transferred */
                   1495:   short           f_access_time;               /* Reset access times of input files */
                   1496:   short           areof;                       /* End of input volume reached */
                   1497: ! short           f_dir_create;                /* Create missing directories */
                   1498:   short           f_append;            /* Add named files to end of archive */
                   1499:   short           f_create;            /* create a new archive */
                   1500:   short           f_extract;           /* Extract named files from archive */
                   1501: ***************
                   1502: *** 104,110
                   1503:   short           f_newer;             /* append files to archive if newer */
                   1504:   short                f_disposition;          /* ask for file disposition */
                   1505:   short           f_reverse_match;     /* Reverse sense of pattern match */
                   1506: ! short           f_modification_time; /* Retain file modification time */
                   1507:   short           f_unconditional;     /* Copy unconditionally */
                   1508:   time_t          now = 0;             /* Current time */
                   1509:   uint            arvolume;            /* Volume number */
                   1510: 
                   1511: --- 107,113 -----
                   1512:   short           f_newer;             /* append files to archive if newer */
                   1513:   short                f_disposition;          /* ask for file disposition */
                   1514:   short           f_reverse_match;     /* Reverse sense of pattern match */
                   1515: ! short           f_mtime;             /* Retain file modification time */
                   1516:   short           f_unconditional;     /* Copy unconditionally */
                   1517:   time_t          now = 0;             /* Current time */
                   1518:   uint            arvolume;            /* Volume number */
                   1519: ***************
                   1520: *** 110,116
                   1521:   uint            arvolume;            /* Volume number */
                   1522:   uint            blocksize = BLOCKSIZE;       /* Archive block size */
                   1523:   FILE        *msgfile;                /* message outpu file stdout/stderr */
                   1524: ! Replstr        *rplhead = NULL;              /* pointer to head of replstr list */
                   1525:   Replstr        *rpltail;             /* pointer to tail of replstr list */
                   1526:   
                   1527:   
                   1528: 
                   1529: --- 113,119 -----
                   1530:   uint            arvolume;            /* Volume number */
                   1531:   uint            blocksize = BLOCKSIZE;       /* Archive block size */
                   1532:   FILE        *msgfile;                /* message outpu file stdout/stderr */
                   1533: ! Replstr        *rplhead = (Replstr *)NULL;   /*  head of replstr list */
                   1534:   Replstr        *rpltail;             /* pointer to tail of replstr list */
                   1535:   
                   1536:   
                   1537: ***************
                   1538: *** 234,241
                   1539:        * of the tar and/or cpio interfaces...
                   1540:        */
                   1541:       f_unconditional = 1;
                   1542: !     f_modification_time = 1;
                   1543: !     f_create_dirs = 1;
                   1544:       f_list = 1;
                   1545:       blocksize = 0;
                   1546:       blocking = 0;
                   1547: 
                   1548: --- 237,244 -----
                   1549:        * of the tar and/or cpio interfaces...
                   1550:        */
                   1551:       f_unconditional = 1;
                   1552: !     f_mtime = 1;
                   1553: !     f_dir_create = 1;
                   1554:       f_list = 1;
                   1555:       blocksize = 0;
                   1556:       blocking = 0;
                   1557: ***************
                   1558: *** 258,264
                   1559:            f_reverse_match = 1;
                   1560:            break;
                   1561:        case 'd':
                   1562: !          f_create_dirs = 0;
                   1563:            break;
                   1564:        case 'f':
                   1565:            if (blocksize == 0) {
                   1566: 
                   1567: --- 261,267 -----
                   1568:            f_reverse_match = 1;
                   1569:            break;
                   1570:        case 'd':
                   1571: !          f_dir_create = 0;
                   1572:            break;
                   1573:        case 'f':
                   1574:            if (blocksize == 0) {
                   1575: ***************
                   1576: *** 274,280
                   1577:            f_link = 1;
                   1578:            break;
                   1579:        case 'm':
                   1580: !          f_modification_time = 0;
                   1581:            break;
                   1582:        case 'o':
                   1583:            f_owner = 1;
                   1584: 
                   1585: --- 277,283 -----
                   1586:            f_link = 1;
                   1587:            break;
                   1588:        case 'm':
                   1589: !          f_mtime = 0;
                   1590:            break;
                   1591:        case 'o':
                   1592:            f_owner = 1;
                   1593: ***************
                   1594: *** 358,364
                   1595:       } else if (f_pass && optind < n_argc) {
                   1596:        dirname = n_argv[--n_argc];
                   1597:        if (LSTAT(dirname, &st) < 0) {
                   1598: !          fatal(syserr());
                   1599:        }
                   1600:        if ((st.sb_mode & S_IFMT) != S_IFDIR) {
                   1601:            fatal("Not a directory");
                   1602: 
                   1603: --- 361,367 -----
                   1604:       } else if (f_pass && optind < n_argc) {
                   1605:        dirname = n_argv[--n_argc];
                   1606:        if (LSTAT(dirname, &st) < 0) {
                   1607: !          fatal(strerror());
                   1608:        }
                   1609:        if ((st.sb_mode & S_IFMT) != S_IFDIR) {
                   1610:            fatal("Not a directory");
                   1611: ***************
                   1612: *** 465,471
                   1613:            number = number * 10 + *idx++ - '0';
                   1614:        switch (*idx++) {
                   1615:        case 'b':
                   1616: !          result += number * 512;
                   1617:            continue;
                   1618:        case 'k':
                   1619:            result += number * 1024;
                   1620: 
                   1621: --- 468,474 -----
                   1622:            number = number * 10 + *idx++ - '0';
                   1623:        switch (*idx++) {
                   1624:        case 'b':
                   1625: !          result += number * 512L;
                   1626:            continue;
                   1627:        case 'k':
                   1628:            result += number * 1024L;
                   1629: ***************
                   1630: *** 468,474
                   1631:            result += number * 512;
                   1632:            continue;
                   1633:        case 'k':
                   1634: !          result += number * 1024;
                   1635:            continue;
                   1636:        case 'm':
                   1637:            result += number * 1024 * 1024;
                   1638: 
                   1639: --- 471,477 -----
                   1640:            result += number * 512L;
                   1641:            continue;
                   1642:        case 'k':
                   1643: !          result += number * 1024L;
                   1644:            continue;
                   1645:        case 'm':
                   1646:            result += number * 1024L * 1024L;
                   1647: ***************
                   1648: *** 471,477
                   1649:            result += number * 1024;
                   1650:            continue;
                   1651:        case 'm':
                   1652: !          result += number * 1024 * 1024;
                   1653:            continue;
                   1654:        case '+':
                   1655:            result += number;
                   1656: 
                   1657: --- 474,480 -----
                   1658:            result += number * 1024L;
                   1659:            continue;
                   1660:        case 'm':
                   1661: !          result += number * 1024L * 1024L;
                   1662:            continue;
                   1663:        case '+':
                   1664:            result += number;
                   1665: ***************
                   1666: *** 515,522
                   1667:   
                   1668:   #endif
                   1669:   {
                   1670: !     fprintf(stderr, "\
                   1671: ! Usage: %s -[cimopuvy] [-f archive] [-s replstr] [-t device] [pattern...]\n",
                   1672:        myname);
                   1673:       fprintf(stderr, "\
                   1674:          %s -r [-cimopuvy] [-f archive] [-s replstr] [-t device] [pattern...]\n",
                   1675: 
                   1676: --- 518,524 -----
                   1677:   
                   1678:   #endif
                   1679:   {
                   1680: !     fprintf(stderr, "Usage: %s -[cimopuvy] [-f archive] [-s replstr] [-t device] [pattern...]\n",
                   1681:        myname);
                   1682:       fprintf(stderr, "       %s -r [-cimopuvy] [-f archive] [-s replstr] [-t device] [pattern...]\n",
                   1683:        myname);
                   1684: ***************
                   1685: *** 518,525
                   1686:       fprintf(stderr, "\
                   1687:   Usage: %s -[cimopuvy] [-f archive] [-s replstr] [-t device] [pattern...]\n",
                   1688:        myname);
                   1689: !     fprintf(stderr, "\
                   1690: !        %s -r [-cimopuvy] [-f archive] [-s replstr] [-t device] [pattern...]\n",
                   1691:        myname);
                   1692:       fprintf(stderr, "\
                   1693:          %s -w [-adimuvy] [-b blocking] [-f archive] [-s replstr]\n\
                   1694: 
                   1695: --- 520,526 -----
                   1696:   {
                   1697:       fprintf(stderr, "Usage: %s -[cimopuvy] [-f archive] [-s replstr] [-t device] [pattern...]\n",
                   1698:        myname);
                   1699: !     fprintf(stderr, "       %s -r [-cimopuvy] [-f archive] [-s replstr] [-t device] [pattern...]\n",
                   1700:        myname);
                   1701:       fprintf(stderr, "       %s -w [-adimuvy] [-b blocking] [-f archive] [-s replstr]\n              [-t device] [-x format] [pathname...]\n",
                   1702:        myname);
                   1703: ***************
                   1704: *** 521,529
                   1705:       fprintf(stderr, "\
                   1706:          %s -r [-cimopuvy] [-f archive] [-s replstr] [-t device] [pattern...]\n",
                   1707:        myname);
                   1708: !     fprintf(stderr, "\
                   1709: !        %s -w [-adimuvy] [-b blocking] [-f archive] [-s replstr]\n\
                   1710: !         [-t device] [-x format] [pathname...]\n",
                   1711:        myname);
                   1712:       fprintf(stderr, "\
                   1713:          %s -r -w [-ilmopuvy] [-s replstr] [pathname...] directory\n",
                   1714: 
                   1715: --- 522,528 -----
                   1716:        myname);
                   1717:       fprintf(stderr, "       %s -r [-cimopuvy] [-f archive] [-s replstr] [-t device] [pattern...]\n",
                   1718:        myname);
                   1719: !     fprintf(stderr, "       %s -w [-adimuvy] [-b blocking] [-f archive] [-s replstr]\n              [-t device] [-x format] [pathname...]\n",
                   1720:        myname);
                   1721:       fprintf(stderr, "       %s -r -w [-ilmopuvy] [-s replstr] [pathname...] directory\n",
                   1722:        myname);
                   1723: ***************
                   1724: *** 525,532
                   1725:          %s -w [-adimuvy] [-b blocking] [-f archive] [-s replstr]\n\
                   1726:           [-t device] [-x format] [pathname...]\n",
                   1727:        myname);
                   1728: !     fprintf(stderr, "\
                   1729: !        %s -r -w [-ilmopuvy] [-s replstr] [pathname...] directory\n",
                   1730:        myname);
                   1731:       exit(1);
                   1732:   }
                   1733: 
                   1734: --- 524,530 -----
                   1735:        myname);
                   1736:       fprintf(stderr, "       %s -w [-adimuvy] [-b blocking] [-f archive] [-s replstr]\n              [-t device] [-x format] [pathname...]\n",
                   1737:        myname);
                   1738: !     fprintf(stderr, "       %s -r -w [-ilmopuvy] [-s replstr] [pathname...] directory\n",
                   1739:        myname);
                   1740:       exit(1);
                   1741:   }
                   1742: Index: pax.h
                   1743: *** /tmp/,RCSt1a17118  Sun Feb 12 14:08:18 1989
                   1744: --- pax.h      Sun Feb 12 14:02:26 1989
                   1745: ***************
                   1746: *** 1,6
                   1747:   /* $Source: /src386/usr/bin/pax/patch2,v $
                   1748:    *
                   1749: !  * $Revision: 1.1 $
                   1750:    *
                   1751:    * pax.h - defnitions for entire program
                   1752:    *
                   1753: 
                   1754: --- 1,6 -----
                   1755:   /* $Source: /src386/usr/bin/pax/patch2,v $
                   1756:    *
                   1757: !  * $Revision: 1.1 $
                   1758:    *
                   1759:    * pax.h - defnitions for entire program
                   1760:    *
                   1761: ***************
                   1762: *** 27,33
                   1763:    *
                   1764:    * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
                   1765:    * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
                   1766: !  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                   1767:    */
                   1768:   
                   1769:   #ifndef _PAX_H
                   1770: 
                   1771: --- 27,33 -----
                   1772:    *
                   1773:    * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
                   1774:    * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
                   1775: !  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                   1776:    */
                   1777:   
                   1778:   #ifndef _PAX_H
                   1779: ***************
                   1780: *** 53,59
                   1781:   #  include <dirent.h>
                   1782:   # endif
                   1783:   #else
                   1784: ! # include <sys/dir.h>
                   1785:   # define dirent direct
                   1786:   #endif
                   1787:   
                   1788: 
                   1789: --- 53,67 -----
                   1790:   #  include <dirent.h>
                   1791:   # endif
                   1792:   #else
                   1793: ! # ifdef hpux
                   1794: ! #  include <ndir.h>
                   1795: ! # else
                   1796: ! #  ifdef XENIX_286
                   1797: ! #   include <sys/ndir.h>
                   1798: ! #  else XENIX_286
                   1799: ! #   include <sys/dir.h>
                   1800: ! #  endif XENIX_286
                   1801: ! # endif /* hpux */
                   1802:   # define dirent direct
                   1803:   #endif
                   1804:   
                   1805: ***************
                   1806: *** 74,79
                   1807:   #ifdef XENIX
                   1808:   #   include <sys/inode.h>
                   1809:   #endif
                   1810:   
                   1811:   #include <pwd.h>
                   1812:   #include <grp.h>
                   1813: 
                   1814: --- 82,90 -----
                   1815:   #ifdef XENIX
                   1816:   #   include <sys/inode.h>
                   1817:   #endif
                   1818: + #ifdef XENIX_286
                   1819: + #include <sys/param.h>
                   1820: + #endif XENIX_286
                   1821:   
                   1822:   #include <pwd.h>
                   1823:   #include <grp.h>
                   1824: ***************
                   1825: *** 77,82
                   1826:   
                   1827:   #include <pwd.h>
                   1828:   #include <grp.h>
                   1829:   #include <sys/file.h>
                   1830:   
                   1831:   /* Defines */
                   1832: 
                   1833: --- 88,94 -----
                   1834:   
                   1835:   #include <pwd.h>
                   1836:   #include <grp.h>
                   1837: + #ifndef XENIX_286
                   1838:   #include <sys/file.h>
                   1839:   #endif XENIX_286
                   1840:   
                   1841: ***************
                   1842: *** 78,83
                   1843:   #include <pwd.h>
                   1844:   #include <grp.h>
                   1845:   #include <sys/file.h>
                   1846:   
                   1847:   /* Defines */
                   1848:   
                   1849: 
                   1850: --- 90,96 -----
                   1851:   #include <grp.h>
                   1852:   #ifndef XENIX_286
                   1853:   #include <sys/file.h>
                   1854: + #endif XENIX_286
                   1855:   
                   1856:   /* Defines */
                   1857:   
                   1858: ***************
                   1859: *** 331,338
                   1860:   extern short f_pass;
                   1861:   extern short f_disposition;
                   1862:   extern short    f_reverse_match;
                   1863: ! extern short    f_modification_time;
                   1864: ! extern short    f_create_dirs;
                   1865:   extern short    f_unconditional;
                   1866:   extern short    f_newer;
                   1867:   extern time_t   now;
                   1868: 
                   1869: --- 344,351 -----
                   1870:   extern short f_pass;
                   1871:   extern short f_disposition;
                   1872:   extern short    f_reverse_match;
                   1873: ! extern short    f_mtime;
                   1874: ! extern short    f_dir_create;
                   1875:   extern short    f_unconditional;
                   1876:   extern short    f_newer;
                   1877:   extern time_t   now;
                   1878: Index: paxdir.c
                   1879: *** /tmp/,RCSt1a17123  Sun Feb 12 14:08:27 1989
                   1880: --- paxdir.c   Sun Feb 12 14:02:28 1989
                   1881: ***************
                   1882: *** 213,219
                   1883:       struct stat     sbuf;    /* result of fstat() */
                   1884:   
                   1885:       if ((fd = open(dirname, O_RDONLY)) < 0)
                   1886: !      return NULL;            /* errno set by open() */
                   1887:   
                   1888:       if (fstat(fd, &sbuf) != 0 || !S_ISDIR(sbuf.st_mode)) {
                   1889:        close(fd);
                   1890: 
                   1891: --- 213,219 -----
                   1892:       struct stat     sbuf;    /* result of fstat() */
                   1893:   
                   1894:       if ((fd = open(dirname, O_RDONLY)) < 0)
                   1895: !      return ((DIR *)NULL);           /* errno set by open() */
                   1896:   
                   1897:       if (fstat(fd, &sbuf) != 0 || !S_ISDIR(sbuf.st_mode)) {
                   1898:        close(fd);
                   1899: ***************
                   1900: *** 218,224
                   1901:       if (fstat(fd, &sbuf) != 0 || !S_ISDIR(sbuf.st_mode)) {
                   1902:        close(fd);
                   1903:        errno = ENOTDIR;
                   1904: !      return NULL;            /* not a directory */
                   1905:       }
                   1906:       if ((dirp = (DIR *) malloc(sizeof(DIR))) == NULL
                   1907:        || (dirp->dd_buf = (char *) malloc((unsigned) DIRBUF)) == NULL
                   1908: 
                   1909: --- 218,224 -----
                   1910:       if (fstat(fd, &sbuf) != 0 || !S_ISDIR(sbuf.st_mode)) {
                   1911:        close(fd);
                   1912:        errno = ENOTDIR;
                   1913: !      return ((DIR *)NULL);           /* not a directory */
                   1914:       }
                   1915:       if ((dirp = (DIR *) malloc(sizeof(DIR))) == (DIR *)NULL
                   1916:        || (dirp->dd_buf = (char *) malloc((unsigned) DIRBUF)) == (char *)NULL
                   1917: ***************
                   1918: *** 220,227
                   1919:        errno = ENOTDIR;
                   1920:        return NULL;            /* not a directory */
                   1921:       }
                   1922: !     if ((dirp = (DIR *) malloc(sizeof(DIR))) == NULL
                   1923: !      || (dirp->dd_buf = (char *) malloc((unsigned) DIRBUF)) == NULL
                   1924:        ) {
                   1925:        register int    serrno = errno;
                   1926:        /* errno set to ENOMEM by sbrk() */
                   1927: 
                   1928: --- 220,227 -----
                   1929:        errno = ENOTDIR;
                   1930:        return ((DIR *)NULL);           /* not a directory */
                   1931:       }
                   1932: !     if ((dirp = (DIR *) malloc(sizeof(DIR))) == (DIR *)NULL
                   1933: !      || (dirp->dd_buf = (char *) malloc((unsigned) DIRBUF)) == (char *)NULL
                   1934:        ) {
                   1935:        register int    serrno = errno;
                   1936:        /* errno set to ENOMEM by sbrk() */
                   1937: ***************
                   1938: *** 226,232
                   1939:        register int    serrno = errno;
                   1940:        /* errno set to ENOMEM by sbrk() */
                   1941:   
                   1942: !      if (dirp != NULL)
                   1943:            free((pointer) dirp);
                   1944:   
                   1945:        close(fd);
                   1946: 
                   1947: --- 226,232 -----
                   1948:        register int    serrno = errno;
                   1949:        /* errno set to ENOMEM by sbrk() */
                   1950:   
                   1951: !      if (dirp != (DIR *)NULL)
                   1952:            free((pointer) dirp);
                   1953:   
                   1954:        close(fd);
                   1955: ***************
                   1956: *** 231,237
                   1957:   
                   1958:        close(fd);
                   1959:        errno = serrno;
                   1960: !      return NULL;            /* not enough memory */
                   1961:       }
                   1962:       dirp->dd_fd = fd;
                   1963:       dirp->dd_loc = dirp->dd_size = 0;        /* refill needed */
                   1964: 
                   1965: --- 231,237 -----
                   1966:   
                   1967:        close(fd);
                   1968:        errno = serrno;
                   1969: !      return ((DIR *)NULL);           /* not enough memory */
                   1970:       }
                   1971:       dirp->dd_fd = fd;
                   1972:       dirp->dd_loc = dirp->dd_size = 0;        /* refill needed */
                   1973: ***************
                   1974: *** 259,265
                   1975:   {
                   1976:       register int     fd;
                   1977:   
                   1978: !     if ( dirp == NULL || dirp->dd_buf == NULL ) {
                   1979:        errno = EFAULT;
                   1980:        return -1;                      /* invalid pointer */
                   1981:       }
                   1982: 
                   1983: --- 259,265 -----
                   1984:   {
                   1985:       register int     fd;
                   1986:   
                   1987: !     if ( dirp == (DIR *)NULL || dirp->dd_buf == (char *)NULL ) {
                   1988:        errno = EFAULT;
                   1989:        return -1;                      /* invalid pointer */
                   1990:       }
                   1991: ***************
                   1992: *** 290,296
                   1993:   {
                   1994:       register struct dirent *dp;      /* -> directory data */
                   1995:   
                   1996: !     if (dirp == NULL || dirp->dd_buf == NULL) {
                   1997:        errno = EFAULT;
                   1998:        return NULL;            /* invalid pointer */
                   1999:       }
                   2000: 
                   2001: --- 290,296 -----
                   2002:   {
                   2003:       register struct dirent *dp;      /* -> directory data */
                   2004:   
                   2005: !     if (dirp == (DIR *)NULL || dirp->dd_buf == (char *)NULL) {
                   2006:        errno = EFAULT;
                   2007:        return (struct dirent *)NULL;           /* invalid pointer */
                   2008:       }
                   2009: ***************
                   2010: *** 292,298
                   2011:   
                   2012:       if (dirp == NULL || dirp->dd_buf == NULL) {
                   2013:        errno = EFAULT;
                   2014: !      return NULL;            /* invalid pointer */
                   2015:       }
                   2016:       do {
                   2017:        if (dirp->dd_loc >= dirp->dd_size)      /* empty or obsolete */
                   2018: 
                   2019: --- 292,298 -----
                   2020:   
                   2021:       if (dirp == (DIR *)NULL || dirp->dd_buf == (char *)NULL) {
                   2022:        errno = EFAULT;
                   2023: !      return (struct dirent *)NULL;           /* invalid pointer */
                   2024:       }
                   2025:       do {
                   2026:        if (dirp->dd_loc >= dirp->dd_size)      /* empty or obsolete */
                   2027: ***************
                   2028: *** 303,309
                   2029:                getdents(dirp->dd_fd, dirp->dd_buf, (unsigned) DIRBUF)
                   2030:                ) <= 0
                   2031:            )
                   2032: !          return NULL;        /* EOF or error */
                   2033:   
                   2034:        dp = (struct dirent *) & dirp->dd_buf[dirp->dd_loc];
                   2035:        dirp->dd_loc += dp->d_reclen;
                   2036: 
                   2037: --- 303,309 -----
                   2038:                getdents(dirp->dd_fd, dirp->dd_buf, (unsigned) DIRBUF)
                   2039:                ) <= 0
                   2040:            )
                   2041: !          return ((struct dirent *)NULL);     /* EOF or error */
                   2042:   
                   2043:        dp = (struct dirent *) & dirp->dd_buf[dirp->dd_loc];
                   2044:        dirp->dd_loc += dp->d_reclen;
                   2045: ***************
                   2046: *** 340,346
                   2047:   {
                   2048:       register bool   rewind;  /* "start over when stymied" flag */
                   2049:   
                   2050: !     if (dirp == NULL || dirp->dd_buf == NULL) {
                   2051:        errno = EFAULT;
                   2052:        return;                 /* invalid pointer */
                   2053:       }
                   2054: 
                   2055: --- 340,346 -----
                   2056:   {
                   2057:       register bool   rewind;  /* "start over when stymied" flag */
                   2058:   
                   2059: !     if (dirp == (DIR *)NULL || dirp->dd_buf == (char *)NULL) {
                   2060:        errno = EFAULT;
                   2061:        return;                 /* invalid pointer */
                   2062:       }
                   2063: ***************
                   2064: *** 372,378
                   2065:        /* See whether the matching entry is in the current buffer. */
                   2066:   
                   2067:        if ((dirp->dd_loc < dirp->dd_size       /* valid index */
                   2068: !           || readdir(dirp) != NULL   /* next buffer read */
                   2069:             && (dirp->dd_loc = 0, true)        /* beginning of buffer set */
                   2070:             )
                   2071:            && (dp = (struct dirent *) & dirp->dd_buf[dirp->dd_loc])->d_off
                   2072: 
                   2073: --- 372,378 -----
                   2074:        /* See whether the matching entry is in the current buffer. */
                   2075:   
                   2076:        if ((dirp->dd_loc < dirp->dd_size       /* valid index */
                   2077: !           || readdir(dirp) != (struct dirent *)NULL  /* next buffer read */
                   2078:             && (dirp->dd_loc = 0, true)        /* beginning of buffer set */
                   2079:             )
                   2080:            && (dp = (struct dirent *) & dirp->dd_buf[dirp->dd_loc])->d_off
                   2081: ***************
                   2082: *** 442,448
                   2083:   
                   2084:   #endif
                   2085:   {
                   2086: !     if (dirp == NULL || dirp->dd_buf == NULL) {
                   2087:        errno = EFAULT;
                   2088:        return -1;              /* invalid pointer */
                   2089:       }
                   2090: 
                   2091: --- 442,448 -----
                   2092:   
                   2093:   #endif
                   2094:   {
                   2095: !     if (dirp == (DIR *)NULL || dirp->dd_buf == (char *)NULL) {
                   2096:        errno = EFAULT;
                   2097:        return -1;              /* invalid pointer */
                   2098:       }
                   2099: ***************
                   2100: *** 593,599
                   2101:       }
                   2102:   #endif
                   2103:   
                   2104: !     if (buf == NULL
                   2105:   #ifdef ATT_SPEC
                   2106:        || (unsigned long) buf % sizeof(long) != 0      /* ugh */
                   2107:   #endif
                   2108: 
                   2109: --- 593,599 -----
                   2110:       }
                   2111:   #endif
                   2112:   
                   2113: !     if (buf == (char *)NULL
                   2114:   #ifdef ATT_SPEC
                   2115:        || (unsigned long) buf % sizeof(long) != 0      /* ugh */
                   2116:   #endif

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.