home *** CD-ROM | disk | FTP | other *** search
Text File | 1989-02-14 | 54.8 KB | 2,108 lines |
- This is the second of three official patches to Pax, a freely distributable
- portable archive interchange. These patches brings the software upto
- release 1.2. These patches fix a number of bugs and portability problems
- with the initial release of the software. These three patches (split to
- avoid article size limitations) constitute a single logical patch to pax.
-
- I would like to thank all those people who reported bug, suggested fixes,
- provided patches and suggested other extensions to pax. I appologize to
- that I was not able to respond to all the mail that I got about pax, but
- all of the problems that were reported have either been fixed, or are
- still under consideration.
-
- Please, if you have any problems with pax, let me know so that they can be
- fixed. Remember, if you find a problem, chances are that others will run
- into the same problem as well. Reporting the problems will allow them to
- be fixed to avoid future difficulties and effort.
-
- These items were not fixed in the patch, but are scheduled for a future
- patch release:
-
- * Put the software configuration under control of a "Configure" script ala
- less and rn.
- * Bring source into line with new POSIX 1003.2 description of pax.
- * Add support for undocumented -C flag to cpio.
- * MS-DOS support
- * MINIX support
- * Add missing tar.5 cpio.5 man pages
-
- These items were fixed in these patches:
-
- * Changed misspelling of MERCHANTABILITY.
- * Changed name of syserr to strerror, warn.c.
- * Removed the references to "public domain" in the software. The
- software is copyrighted, not public domain.
- * Files are chmod'ed before being moved into the installation
- directories. Files are also copied, then linked in the target
- directory.
- * The variable "min" in regexp.c was changed to "minimum". It would
- seem that some copilers define min to be a macro...
- * In buffer.c there was an integer which was getting assigned NULL,
- rather than 0.
- * If pax was given the -l option, it only successfully linked the
- from-file and the to-file together if the from-file is already linked
- to something else.
- * Changed the verbose output file for tar to use stderr, rather than
- stdout. The verbose output was being interspersed with the archive,
- causing the archive to be unreadable.
- * The LDFLAGS macro is now used in the makefile. There are also macros
- for additional libraries which may be needed and one for SHELL which
- fixes some problems when using the "make lint" facility.
- * Fixed the stupid typo which caused pax/tar/cpio to run out of file
- descriptors on very deep directory trees.
- * Removed all line continuations "\" in preprocessor directives and
- strings. These were causing problems on certain compilers.
- * Rename two variable which were colloding on compilers that did not
- understand varaiables that were not unique in the first six
- characters.
- * Change the name of openi(). This causes a lot of problems on some
- machines, especially those with shared libraries...
- * Added some changes required for XENIX 286.
- * All references to NULL are now properly cast.
- * Man pages directories are now more compatible with BSD and USG
- installation
- * Other miscellaneous cleanups.
-
- Mark H. Colburn "Look into a child's eye;
- Minnetech Consulting, Inc. there's no hate and there's no lie;
- mark@jhereg.mn.org there's no black and there's no white."
- --------------------------------- CUT HERE ---------------------------------
-
- Index: list.c
- *** /tmp/,RCSt1a17078 Sun Feb 12 14:07:03 1989
- --- list.c Sun Feb 12 14:02:13 1989
- ***************
- *** 1,6
- /* $Source: /u/mark/src/pax/RCS/list.c,v $
- *
- ! * $Revision: 1.1 $
- *
- * list.c - List all files on an archive
- *
-
- --- 1,6 -----
- /* $Source: /u/mark/src/pax/RCS/list.c,v $
- *
- ! * $Revision: 1.2 $
- *
- * list.c - List all files on an archive
- *
- ***************
- *** 27,33
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- ! * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * $Log: list.c,v $
- * Revision 1.1 88/12/23 18:02:14 mark
-
- --- 27,33 -----
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- ! * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * $Log: list.c,v $
- * Revision 1.2 89/02/12 10:04:43 mark
- ***************
- *** 30,35
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * $Log: list.c,v $
- * Revision 1.1 88/12/23 18:02:14 mark
- * Initial revision
- *
-
- --- 30,38 -----
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * $Log: list.c,v $
- + * Revision 1.2 89/02/12 10:04:43 mark
- + * 1.2 release fixes
- + *
- * Revision 1.1 88/12/23 18:02:14 mark
- * Initial revision
- *
- ***************
- *** 36,42
- */
-
- #ifndef lint
- ! static char *ident = "$Id: list.c,v 1.1 88/12/23 18:02:14 mark Rel $";
- static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n";
- #endif /* ! lint */
-
-
- --- 39,45 -----
- */
-
- #ifndef lint
- ! static char *ident = "$Id: list.c,v 1.2 89/02/12 10:04:43 mark Exp $";
- static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n";
- #endif /* ! lint */
-
- ***************
- *** 384,390
- case S_IFLNK: /* This file is a symbolic link */
- i = readlink(name, symnam, PATH_MAX - 1);
- if (i < 0) { /* Could not find symbolic link */
- ! warn("can't read symbolic link", syserr());
- } else { /* Found symbolic link filename */
- symnam[i] = '\0';
- fprintf(msgfile, "x %s symbolic link to %s\n", name, symnam);
-
- --- 387,393 -----
- case S_IFLNK: /* This file is a symbolic link */
- i = readlink(name, symnam, PATH_MAX - 1);
- if (i < 0) { /* Could not find symbolic link */
- ! warn("can't read symbolic link", strerror());
- } else { /* Found symbolic link filename */
- symnam[i] = '\0';
- fprintf(msgfile, "x %s symbolic link to %s\n", name, symnam);
- ***************
- *** 395,401
- if ((asb->sb_nlink > 1) && (link = islink(name, asb))) {
- fprintf(msgfile, "%s linked to %s\n", name, link->l_name);
- } else {
- ! fprintf(msgfile, "x %s, %d bytes, %d tape blocks\n",
- name, asb->sb_size, ROUNDUP(asb->sb_size,
- BLOCKSIZE) / BLOCKSIZE);
- }
-
- --- 398,404 -----
- if ((asb->sb_nlink > 1) && (link = islink(name, asb))) {
- fprintf(msgfile, "%s linked to %s\n", name, link->l_name);
- } else {
- ! fprintf(msgfile, "x %s, %ld bytes, %d tape blocks\n",
- name, asb->sb_size, ROUNDUP(asb->sb_size,
- BLOCKSIZE) / BLOCKSIZE);
- }
- ***************
- *** 406,412
- case S_IFLNK: /* This file is a symbolic link */
- i = readlink(name, symnam, PATH_MAX - 1);
- if (i < 0) { /* Could not find symbolic link */
- ! warn("can't read symbolic link", syserr());
- } else { /* Found symbolic link filename */
- symnam[i] = '\0';
- fprintf(msgfile, "a %s symbolic link to %s\n", name, symnam);
-
- --- 409,415 -----
- case S_IFLNK: /* This file is a symbolic link */
- i = readlink(name, symnam, PATH_MAX - 1);
- if (i < 0) { /* Could not find symbolic link */
- ! warn("can't read symbolic link", strerror());
- } else { /* Found symbolic link filename */
- symnam[i] = '\0';
- fprintf(msgfile, "a %s symbolic link to %s\n", name, symnam);
- ***************
- *** 418,424
- if ((asb->sb_nlink > 1) && (link = islink(name, asb))) {
- fprintf(msgfile, "link to %s\n", link->l_name);
- } else {
- ! fprintf(msgfile, "%d Blocks\n",
- ROUNDUP(asb->sb_size, BLOCKSIZE) / BLOCKSIZE);
- }
- break;
-
- --- 421,427 -----
- if ((asb->sb_nlink > 1) && (link = islink(name, asb))) {
- fprintf(msgfile, "link to %s\n", link->l_name);
- } else {
- ! fprintf(msgfile, "%ld Blocks\n",
- ROUNDUP(asb->sb_size, BLOCKSIZE) / BLOCKSIZE);
- }
- break;
- ***************
- *** 439,445
- case S_IFLNK: /* This file is a symbolic link */
- i = readlink(name, symnam, PATH_MAX - 1);
- if (i < 0) { /* Could not find symbolic link */
- ! warn("can't read symbolic link", syserr());
- } else { /* Found symbolic link filename */
- symnam[i] = '\0';
- fprintf(msgfile, " symbolic link to %s", name, symnam);
-
- --- 442,448 -----
- case S_IFLNK: /* This file is a symbolic link */
- i = readlink(name, symnam, PATH_MAX - 1);
- if (i < 0) { /* Could not find symbolic link */
- ! warn("can't read symbolic link", strerror());
- } else { /* Found symbolic link filename */
- symnam[i] = '\0';
- fprintf(msgfile, " symbolic link to %s", symnam);
- ***************
- *** 442,448
- warn("can't read symbolic link", syserr());
- } else { /* Found symbolic link filename */
- symnam[i] = '\0';
- ! fprintf(msgfile, " symbolic link to %s", name, symnam);
- }
- break;
- #endif
-
- --- 445,451 -----
- warn("can't read symbolic link", strerror());
- } else { /* Found symbolic link filename */
- symnam[i] = '\0';
- ! fprintf(msgfile, " symbolic link to %s", symnam);
- }
- break;
- #endif
- ***************
- *** 454,460
- }
- fputc('\n', msgfile);
- } else {
- ! fprintf(msgfile, "? %s %d blocks\n", name,
- ROUNDUP(asb->sb_size, BLOCKSIZE) / BLOCKSIZE);
- }
- }
-
- --- 457,463 -----
- }
- fputc('\n', msgfile);
- } else {
- ! fprintf(msgfile, "? %s %ld blocks\n", name,
- ROUNDUP(asb->sb_size, BLOCKSIZE) / BLOCKSIZE);
- }
- }
- ***************
- *** 518,525
- fprintf(msgfile, "\t ");
- }
- fprintf(msgfile," %3s %2d %02d:%02d ",
- ! monnames[atm->tm_mon], atm->tm_mday,
- ! atm->tm_hour, atm->tm_min);
- }
- fprintf(msgfile, "%s", name);
- if ((asb->sb_nlink > 1) && (from = islink(name, asb))) {
-
- --- 521,528 -----
- fprintf(msgfile, "\t ");
- }
- fprintf(msgfile," %3s %2d %02d:%02d ",
- ! monnames[atm->tm_mon], atm->tm_mday,
- ! atm->tm_hour, atm->tm_min);
- }
- fprintf(msgfile, "%s", name);
- if ((asb->sb_nlink > 1) && (from = islink(name, asb))) {
- ***************
- *** 532,539
- #endif /* S_IFLNK */
- putc('\n', msgfile);
- }
- -
- -
-
-
- /* print_mode - fancy file mode display
-
- --- 535,540 -----
- #endif /* S_IFLNK */
- putc('\n', msgfile);
- }
-
-
- /* print_mode - fancy file mode display
- Index: mem.c
- *** /tmp/,RCSt1a17083 Sun Feb 12 14:07:14 1989
- --- mem.c Sun Feb 12 14:02:14 1989
- ***************
- *** 1,6
- /* $Source: /u/mark/src/pax/RCS/mem.c,v $
- *
- ! * $Revision: 1.1 $
- *
- * mem.c - memory allocation and manipulation functions
- *
-
- --- 1,6 -----
- /* $Source: /u/mark/src/pax/RCS/mem.c,v $
- *
- ! * $Revision: 1.2 $
- *
- * mem.c - memory allocation and manipulation functions
- *
- ***************
- *** 28,34
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- ! * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * $Log: mem.c,v $
- * Revision 1.1 88/12/23 18:02:17 mark
-
- --- 28,34 -----
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- ! * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * $Log: mem.c,v $
- * Revision 1.2 89/02/12 10:04:53 mark
- ***************
- *** 31,36
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * $Log: mem.c,v $
- * Revision 1.1 88/12/23 18:02:17 mark
- * Initial revision
- *
-
- --- 31,39 -----
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * $Log: mem.c,v $
- + * Revision 1.2 89/02/12 10:04:53 mark
- + * 1.2 release fixes
- + *
- * Revision 1.1 88/12/23 18:02:17 mark
- * Initial revision
- *
- ***************
- *** 37,43
- */
-
- #ifndef lint
- ! static char *ident = "$Id: mem.c,v 1.1 88/12/23 18:02:17 mark Rel $";
- static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n";
- #endif /* ! lint */
-
-
- --- 40,46 -----
- */
-
- #ifndef lint
- ! static char *ident = "$Id: mem.c,v 1.2 89/02/12 10:04:53 mark Exp $";
- static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n";
- #endif /* ! lint */
-
- ***************
- *** 65,71
- * RETURNS
- *
- * Normally returns the pointer to the newly allocated memory. If
- ! * an error occurss, NULL is returned, and an error message is
- * printed.
- *
- * ERRORS
-
- --- 68,74 -----
- * RETURNS
- *
- * Normally returns the pointer to the newly allocated memory. If
- ! * an error occurs, NULL is returned, and an error message is
- * printed.
- *
- * ERRORS
- ***************
- *** 87,93
- char *mem;
- static short outofmem = 0;
-
- ! if ((mem = (char *)malloc(len)) == NULL && !outofmem) {
- outofmem++;
- warn("mem_get()", "Out of memory");
- }
-
- --- 90,96 -----
- char *mem;
- static short outofmem = 0;
-
- ! if ((mem = (char *)malloc(len)) == (char *)NULL && !outofmem) {
- outofmem++;
- warn("mem_get()", "Out of memory");
- }
- Index: namelist.c
- *** /tmp/,RCSt1a19493 Mon Feb 13 09:15:28 1989
- --- namelist.c Mon Feb 13 09:14:57 1989
- ***************
- *** 1,6
- /* $Source: /u/mark/src/pax/RCS/namelist.c,v $
- *
- ! * $Revision: 1.1 $
- *
- * namelist.c - track filenames given as arguments to tar/cpio/pax
- *
-
- --- 1,6 -----
- /* $Source: /u/mark/src/pax/RCS/namelist.c,v $
- *
- ! * $Revision: 1.6 $
- *
- * namelist.c - track filenames given as arguments to tar/cpio/pax
- *
- ***************
- *** 23,29
- * provided that the above copyright notice is duplicated in all such
- * forms and that any documentation, advertising materials, and other
- * materials related to such distribution and use acknowledge that the
- ! * software was developed * by Mark H. Colburn and sponsored by The
- * USENIX Association.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
-
- --- 23,29 -----
- * provided that the above copyright notice is duplicated in all such
- * forms and that any documentation, advertising materials, and other
- * materials related to such distribution and use acknowledge that the
- ! * software was developed by Mark H. Colburn and sponsored by The
- * USENIX Association.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- ***************
- *** 28,34
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- ! * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * $Log: namelist.c,v $
- * Revision 1.1 88/12/23 18:02:17 mark
-
- --- 28,34 -----
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- ! * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * $Log: namelist.c,v $
- * Revision 1.6 89/02/13 09:14:48 mark
- ***************
- *** 31,36
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * $Log: namelist.c,v $
- * Revision 1.1 88/12/23 18:02:17 mark
- * Initial revision
- *
-
- --- 31,51 -----
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * $Log: namelist.c,v $
- + * Revision 1.6 89/02/13 09:14:48 mark
- + * Fixed problem with directory errors
- + *
- + * Revision 1.5 89/02/12 12:14:00 mark
- + * Fixed misspellings
- + *
- + * Revision 1.4 89/02/12 11:25:19 mark
- + * Modifications to compile and link cleanly under USG
- + *
- + * Revision 1.3 89/02/12 10:40:23 mark
- + * Fixed casting problems
- + *
- + * Revision 1.2 89/02/12 10:04:57 mark
- + * 1.2 release fixes
- + *
- * Revision 1.1 88/12/23 18:02:17 mark
- * Initial revision
- *
- ***************
- *** 37,43
- */
-
- #ifndef lint
- ! static char *ident = "$Id: namelist.c,v 1.1 88/12/23 18:02:17 mark Rel $";
- static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n";
- #endif /* ! lint */
-
-
- --- 52,58 -----
- */
-
- #ifndef lint
- ! static char *ident = "$Id: namelist.c,v 1.6 89/02/13 09:14:48 mark Exp $";
- static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n";
- #endif /* ! lint */
-
- ***************
- *** 68,73
- };
-
-
- /* Function Prototypes */
-
- #ifndef __STDC__
-
- --- 83,93 -----
- };
-
-
- + /* Static Variables */
- +
- + static struct dirinfo *stack_head = (struct dirinfo *)NULL;
- +
- +
- /* Function Prototypes */
-
- #ifndef __STDC__
- ***************
- *** 123,129
- if (!p) {
- fatal("cannot allocate memory for namelist entry\n");
- }
- ! p->next = (struct nm_list *) NULL;
- p->length = i;
- strncpy(p->name, name, i);
- p->name[i] = '\0'; /* Null term */
-
- --- 143,149 -----
- if (!p) {
- fatal("cannot allocate memory for namelist entry\n");
- }
- ! p->next = (struct nm_list *)NULL;
- p->length = i;
- strncpy(p->name, name, i);
- p->name[i] = '\0'; /* Null term */
- ***************
- *** 231,237
- for (nlp = namelist; nlp != 0; nlp = nlp->next) {
- if (!nlp->found) {
- fprintf(stderr, "%s: %s not found in archive\n",
- ! myname, nlp->name);
- }
- free(nlp);
- }
-
- --- 251,257 -----
- for (nlp = namelist; nlp != 0; nlp = nlp->next) {
- if (!nlp->found) {
- fprintf(stderr, "%s: %s not found in archive\n",
- ! myname, nlp->name);
- }
- free(nlp);
- }
- ***************
- *** 235,242
- }
- free(nlp);
- }
- ! namelist = (struct nm_list *) NULL;
- ! namelast = (struct nm_list *) NULL;
- }
-
-
-
- --- 255,262 -----
- }
- free(nlp);
- }
- ! namelist = (struct nm_list *)NULL;
- ! namelast = (struct nm_list *)NULL;
- }
-
-
- ***************
- *** 326,332
- }
- } else {
- if (in_subdir) {
- ! if ((d = readdir(dirp)) != NULL) {
- /* Skip . and .. */
- if (strcmp(d->d_name, ".") == 0 ||
- strcmp(d->d_name, "..") == 0) {
-
- --- 346,352 -----
- }
- } else {
- if (in_subdir) {
- ! if ((d = readdir(dirp)) != (struct dirent *)NULL) {
- /* Skip . and .. */
- if (strcmp(d->d_name, ".") == 0 ||
- strcmp(d->d_name, "..") == 0) {
- ***************
- *** 345,351
- curr_dir = popdir();
- if (in_subdir) {
- errno = 0;
- ! if ((dirp = opendir(curr_dir->dirname)) == NULL) {
- warn(curr_dir->dirname, "error opening directory (1)");
- in_subdir--;
- }
-
- --- 365,371 -----
- curr_dir = popdir();
- if (in_subdir) {
- errno = 0;
- ! if ((dirp=opendir(curr_dir->dirname)) == (DIR *)NULL) {
- warn(curr_dir->dirname, "error opening directory (1)");
- in_subdir--;
- }
- ***************
- *** 360,366
- }
- }
- if ((err = LSTAT(name, statbuf)) < 0) {
- ! warn(name, syserr());
- continue;
- }
- if (!names_from_stdin && (statbuf->sb_mode & S_IFMT) == S_IFDIR) {
-
- --- 380,386 -----
- }
- }
- if ((err = LSTAT(name, statbuf)) < 0) {
- ! warn(name, strerror());
- continue;
- }
- if (!names_from_stdin && (statbuf->sb_mode & S_IFMT) == S_IFDIR) {
- ***************
- *** 367,373
- if (in_subdir) {
- curr_dir->where = telldir(dirp);
- pushdir(curr_dir);
- ! close(dirp);
- }
- in_subdir++;
-
-
- --- 387,393 -----
- if (in_subdir) {
- curr_dir->where = telldir(dirp);
- pushdir(curr_dir);
- ! closedir(dirp);
- }
- in_subdir++;
-
- ***************
- *** 372,379
- in_subdir++;
-
- /* Build new prototype name */
- ! if ((curr_dir = (struct dirinfo *)
- ! mem_get(sizeof(struct dirinfo))) == NULL) {
- exit(2);
- }
- strcpy(curr_dir->dirname, name);
-
- --- 392,399 -----
- in_subdir++;
-
- /* Build new prototype name */
- ! if ((curr_dir = (struct dirinfo *) mem_get(sizeof(struct dirinfo)))
- ! == (struct dirinfo *)NULL) {
- exit(2);
- }
- strcpy(curr_dir->dirname, name);
- ***************
- *** 383,393
- }
- curr_dir->dirname[len++] = '/'; /* Now add exactly one back */
- curr_dir->dirname[len] = '\0';/* Make sure null-terminated */
- !
- ! errno = 0;
- ! if ((dirp = opendir(curr_dir->dirname)) == NULL) {
- ! warn(curr_dir->dirname, "error opening directory (2)");
- ! }
- }
- } while (err < 0);
- return (0);
-
- --- 403,424 -----
- }
- curr_dir->dirname[len++] = '/'; /* Now add exactly one back */
- curr_dir->dirname[len] = '\0';/* Make sure null-terminated */
- ! curr_dir->where = 0;
- !
- ! errno = 0;
- ! do {
- ! if ((dirp = opendir(curr_dir->dirname)) == (DIR *)NULL) {
- ! warn(curr_dir->dirname, "error opening directory (2)");
- ! if (in_subdir > 1) {
- ! curr_dir = popdir();
- ! }
- ! in_subdir--;
- ! err = -1;
- ! continue;
- ! } else {
- ! seekdir(dirp, curr_dir->where);
- ! }
- ! } while (in_subdir && (! dirp));
- }
- } while (err < 0);
- return (0);
- ***************
- *** 422,430
- }
-
-
- - static struct dirinfo *stack_head = NULL;
- -
- -
- /* pushdir - pushes a directory name on the directory stack
- *
- * DESCRIPTION
-
- --- 453,458 -----
- }
-
-
- /* pushdir - pushes a directory name on the directory stack
- *
- * DESCRIPTION
- ***************
- *** 449,455
-
- #endif
- {
- ! if (stack_head == NULL) {
- stack_head = info;
- stack_head->next = NULL;
- } else {
-
- --- 477,483 -----
-
- #endif
- {
- ! if (stack_head == (struct dirinfo *)NULL) {
- stack_head = info;
- stack_head->next = (struct dirinfo *)NULL;
- } else {
- ***************
- *** 451,457
- {
- if (stack_head == NULL) {
- stack_head = info;
- ! stack_head->next = NULL;
- } else {
- info->next = stack_head;
- stack_head = info;
-
- --- 479,485 -----
- {
- if (stack_head == (struct dirinfo *)NULL) {
- stack_head = info;
- ! stack_head->next = (struct dirinfo *)NULL;
- } else {
- info->next = stack_head;
- stack_head = info;
- ***************
- *** 485,492
- {
- struct dirinfo *tmp;
-
- ! if (stack_head == NULL) {
- ! return(NULL);
- } else {
- tmp = stack_head;
- stack_head = stack_head->next;
-
- --- 513,520 -----
- {
- struct dirinfo *tmp;
-
- ! if (stack_head == (struct dirinfo *)NULL) {
- ! return((struct dirinfo *)NULL);
- } else {
- tmp = stack_head;
- stack_head = stack_head->next;
- Index: names.c
- *** /tmp/,RCSt1a17093 Sun Feb 12 14:07:34 1989
- --- names.c Sun Feb 12 14:02:17 1989
- ***************
- *** 1,6
- /* $Source: /u/mark/src/pax/RCS/names.c,v $
- *
- ! * $Revision: 1.1 $
- *
- * names.c - Look up user and/or group names.
- *
-
- --- 1,6 -----
- /* $Source: /u/mark/src/pax/RCS/names.c,v $
- *
- ! * $Revision: 1.2 $
- *
- * names.c - Look up user and/or group names.
- *
- ***************
- *** 27,33
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- ! * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * $Log: names.c,v $
- * Revision 1.1 88/12/23 18:02:19 mark
-
- --- 27,33 -----
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- ! * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * $Log: names.c,v $
- * Revision 1.2 89/02/12 10:05:05 mark
- ***************
- *** 30,35
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * $Log: names.c,v $
- * Revision 1.1 88/12/23 18:02:19 mark
- * Initial revision
- *
-
- --- 30,38 -----
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * $Log: names.c,v $
- + * Revision 1.2 89/02/12 10:05:05 mark
- + * 1.2 release fixes
- + *
- * Revision 1.1 88/12/23 18:02:19 mark
- * Initial revision
- *
- ***************
- *** 36,42
- */
-
- #ifndef lint
- ! static char *ident = "$Id: names.c,v 1.1 88/12/23 18:02:19 mark Rel $";
- static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n";
- #endif /* ! lint */
-
-
- --- 39,45 -----
- */
-
- #ifndef lint
- ! static char *ident = "$Id: names.c,v 1.2 89/02/12 10:05:05 mark Exp $";
- static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n";
- #endif /* ! lint */
-
- Index: pass.c
- *** /tmp/,RCSt1a17098 Sun Feb 12 14:07:40 1989
- --- pass.c Sun Feb 12 14:02:19 1989
- ***************
- *** 1,6
- /* $Source: /u/mark/src/pax/RCS/pass.c,v $
- *
- ! * $Revision: 1.1 $
- *
- * pass.c - handle the pass option of cpio
- *
-
- --- 1,6 -----
- /* $Source: /u/mark/src/pax/RCS/pass.c,v $
- *
- ! * $Revision: 1.3 $
- *
- * pass.c - handle the pass option of cpio
- *
- ***************
- *** 27,33
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- ! * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * $Log: pass.c,v $
- * Revision 1.1 88/12/23 18:02:20 mark
-
- --- 27,33 -----
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- ! * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * $Log: pass.c,v $
- * Revision 1.3 89/02/12 10:29:51 mark
- ***************
- *** 30,35
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * $Log: pass.c,v $
- * Revision 1.1 88/12/23 18:02:20 mark
- * Initial revision
- *
-
- --- 30,41 -----
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * $Log: pass.c,v $
- + * Revision 1.3 89/02/12 10:29:51 mark
- + * Fixed misspelling of Replstr
- + *
- + * Revision 1.2 89/02/12 10:05:09 mark
- + * 1.2 release fixes
- + *
- * Revision 1.1 88/12/23 18:02:20 mark
- * Initial revision
- *
- ***************
- *** 36,42
- */
-
- #ifndef lint
- ! static char *ident = "$Id: pass.c,v 1.1 88/12/23 18:02:20 mark Rel $";
- static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n";
- #endif /* ! lint */
-
-
- --- 42,48 -----
- */
-
- #ifndef lint
- ! static char *ident = "$Id: pass.c,v 1.3 89/02/12 10:29:51 mark Exp $";
- static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n";
- #endif /* ! lint */
-
- ***************
- *** 74,80
- int fd;
- Stat sb;
-
- ! while (name_next(name, &sb) >= 0 && (fd = openi(name, &sb)) >= 0) {
-
- if (rplhead != NULL) {
- rpl_name(name);
-
- --- 80,86 -----
- int fd;
- Stat sb;
-
- ! while (name_next(name, &sb) >= 0 && (fd = openin(name, &sb)) >= 0) {
-
- if (rplhead != (Replstr *)NULL) {
- rpl_name(name);
- ***************
- *** 76,82
-
- while (name_next(name, &sb) >= 0 && (fd = openi(name, &sb)) >= 0) {
-
- ! if (rplhead != NULL) {
- rpl_name(name);
- }
- if (get_disposition("pass", name) || get_newname(name, sizeof(name))) {
-
- --- 82,88 -----
-
- while (name_next(name, &sb) >= 0 && (fd = openin(name, &sb)) >= 0) {
-
- ! if (rplhead != (Replstr *)NULL) {
- rpl_name(name);
- }
- if (get_disposition("pass", name) || get_newname(name, sizeof(name))) {
- ***************
- *** 139,147
- return (-1);
- }
- if (asb->sb_nlink > 1) {
- - if (f_link && islink(from, asb) == (Link *) NULL) {
- - linkto(from, asb);
- - }
- linkto(to, asb);
- }
- if ((ofd = openo(to, asb, islink(to, asb), 1)) < 0) {
-
- --- 145,150 -----
- return (-1);
- }
- if (asb->sb_nlink > 1) {
- linkto(to, asb);
- }
- if (f_link && islink(from, asb) == (Link *)NULL) {
- ***************
- *** 144,150
- }
- linkto(to, asb);
- }
- ! if ((ofd = openo(to, asb, islink(to, asb), 1)) < 0) {
- return (-1);
- }
- if (ofd > 0) {
-
- --- 147,156 -----
- if (asb->sb_nlink > 1) {
- linkto(to, asb);
- }
- ! if (f_link && islink(from, asb) == (Link *)NULL) {
- ! linkto(from, asb);
- ! }
- ! if ((ofd = openout(to, asb, islink(to, asb), 1)) < 0) {
- return (-1);
- }
- if (ofd > 0) {
- ***************
- *** 151,157
- passdata(from, ifd, to, ofd);
- }
- tstamp[0] = asb->sb_atime;
- ! tstamp[1] = f_modification_time ? asb->sb_mtime : time((time_t *) 0);
- utime(to, tstamp);
- return (ifd);
- }
-
- --- 157,163 -----
- passdata(from, ifd, to, ofd);
- }
- tstamp[0] = asb->sb_atime;
- ! tstamp[1] = f_mtime ? asb->sb_mtime : time((time_t *) 0);
- utime(to, tstamp);
- return (ifd);
- }
- Index: pathname.c
- *** /tmp/,RCSt1a17103 Sun Feb 12 14:07:46 1989
- --- pathname.c Sun Feb 12 14:02:21 1989
- ***************
- *** 1,6
- /* $Source: /u/mark/src/pax/RCS/pathname.c,v $
- *
- ! * $Revision: 1.1 $
- *
- * pathname.c - directory/pathname support functions
- *
-
- --- 1,6 -----
- /* $Source: /u/mark/src/pax/RCS/pathname.c,v $
- *
- ! * $Revision: 1.2 $
- *
- * pathname.c - directory/pathname support functions
- *
- ***************
- *** 26,32
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- ! * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * $Log: pathname.c,v $
- * Revision 1.1 88/12/23 18:02:21 mark
-
- --- 26,32 -----
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- ! * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * $Log: pathname.c,v $
- * Revision 1.2 89/02/12 10:05:13 mark
- ***************
- *** 29,34
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * $Log: pathname.c,v $
- * Revision 1.1 88/12/23 18:02:21 mark
- * Initial revision
- *
-
- --- 29,37 -----
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * $Log: pathname.c,v $
- + * Revision 1.2 89/02/12 10:05:13 mark
- + * 1.2 release fixes
- + *
- * Revision 1.1 88/12/23 18:02:21 mark
- * Initial revision
- *
- ***************
- *** 35,41
- */
-
- #ifndef lint
- ! static char *ident = "$Id: pathname.c,v 1.1 88/12/23 18:02:21 mark Rel $";
- static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n";
- #endif /* ! lint */
-
-
- --- 38,44 -----
- */
-
- #ifndef lint
- ! static char *ident = "$Id: pathname.c,v 1.2 89/02/12 10:05:13 mark Exp $";
- static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n";
- #endif /* ! lint */
-
- ***************
- *** 51,57
- *
- * Dirneed checks to see if a directory of the name pointed to by name
- * exists. If the directory does exist, then dirneed returns 0. If
- ! * the directory does not exist and the f_create_dirs flag is set,
- * then dirneed will create the needed directory, recursively creating
- * any needed intermediate directory.
- *
-
- --- 54,60 -----
- *
- * Dirneed checks to see if a directory of the name pointed to by name
- * exists. If the directory does exist, then dirneed returns 0. If
- ! * the directory does not exist and the f_dir_create flag is set,
- * then dirneed will create the needed directory, recursively creating
- * any needed intermediate directory.
- *
- ***************
- *** 55,61
- * then dirneed will create the needed directory, recursively creating
- * any needed intermediate directory.
- *
- ! * If f_create_dirs is not set, then no directories will be created
- * and a value of -1 will be returned if the directory does not
- * exist.
- *
-
- --- 58,64 -----
- * then dirneed will create the needed directory, recursively creating
- * any needed intermediate directory.
- *
- ! * If f_dir_create is not set, then no directories will be created
- * and a value of -1 will be returned if the directory does not
- * exist.
- *
- ***************
- *** 66,72
- * RETURNS
- *
- * Returns a 0 if the creation of the directory succeeded or if the
- ! * directory already existed. If the f_create_dirs flag was not set
- * and the named directory does not exist, or the directory creation
- * failed, a -1 will be returned to the calling routine.
- */
-
- --- 69,75 -----
- * RETURNS
- *
- * Returns a 0 if the creation of the directory succeeded or if the
- ! * directory already existed. If the f_dir_create flag was not set
- * and the named directory does not exist, or the directory creation
- * failed, a -1 will be returned to the calling routine.
- */
- ***************
- *** 87,93
- int ok;
- static Stat sb;
-
- ! last = NULL;
- for (cp = name; *cp;) {
- if (*cp++ == '/') {
- last = cp;
-
- --- 90,96 -----
- int ok;
- static Stat sb;
-
- ! last = (char *)NULL;
- for (cp = name; *cp;) {
- if (*cp++ == '/') {
- last = cp;
- ***************
- *** 93,99
- last = cp;
- }
- }
- ! if (last == NULL) {
- return (STAT(".", &sb));
- }
- *--last = '\0';
-
- --- 96,102 -----
- last = cp;
- }
- }
- ! if (last == (char *)NULL) {
- return (STAT(".", &sb));
- }
- *--last = '\0';
- ***************
- *** 99,105
- *--last = '\0';
- ok = STAT(*name ? name : ".", &sb) == 0
- ? ((sb.sb_mode & S_IFMT) == S_IFDIR)
- ! : (f_create_dirs && dirneed(name) == 0 && dirmake(name, &sb) == 0);
- *last = '/';
- return (ok ? 0 : -1);
- }
-
- --- 102,108 -----
- *--last = '\0';
- ok = STAT(*name ? name : ".", &sb) == 0
- ? ((sb.sb_mode & S_IFMT) == S_IFDIR)
- ! : (f_dir_create && dirneed(name) == 0 && dirmake(name, &sb) == 0);
- *last = '/';
- return (ok ? 0 : -1);
- }
- ***************
- *** 176,182
- if (idx == 0) {
- element[idx++] = absolute ? "" : ".";
- }
- ! element[idx] = NULL;
- name = begin;
- if (absolute) {
- *name++ = '/';
-
- --- 179,185 -----
- if (idx == 0) {
- element[idx++] = absolute ? "" : ".";
- }
- ! element[idx] = (char *)NULL;
- name = begin;
- if (absolute) {
- *name++ = '/';
- Index: pax.1
- *** /tmp/,RCSt1a17108 Sun Feb 12 14:07:54 1989
- --- pax.1 Sun Feb 12 14:02:22 1989
- ***************
- *** 1,4
- ! .\" $Id: pax.1,v 1.1 88/12/23 18:02:22 mark Rel $
- .TH PAX 1 "USENIX Association" ""
- .SH NAME
- pax \- portable archive exchange
-
- --- 1,4 -----
- ! .\" $Id: pax.1,v 1.2 89/02/12 10:08:47 mark Exp $
- .TH PAX 1 "USENIX Association" ""
- .SH NAME
- pax \- portable archive exchange
- ***************
- *** 213,218
- suffix multiplies
- .I blocking
- by 1048576 (1 megabyte).
- If not specified,
- .I blocking
- is automatically determined on input and is ignored for
-
- --- 213,220 -----
- suffix multiplies
- .I blocking
- by 1048576 (1 megabyte).
- + For machines with 16-bit int's (VAXen, XENIX-286, etc.),
- + the maximum buffer size is 32k-1.
- If not specified,
- .I blocking
- is automatically determined on input and is ignored for
- ***************
- *** 219,225
- .B \-rw.
- .TP 1i
- .B \-c
- ! Complement the match sense of the the
- .I pattern
- operands.
- .TP 1i
-
- --- 221,227 -----
- .B \-rw.
- .TP 1i
- .B \-c
- ! Complement the match sense of the
- .I pattern
- operands.
- .TP 1i
- ***************
- *** 352,358
- .B \-r
- option is used.
- The supported formats are:
- ! .TP 1i
- .I cpio
- The extended
- .I CPIO
-
- --- 354,361 -----
- .B \-r
- option is used.
- The supported formats are:
- ! .RS 1i
- ! .TP 0.75i
- .I cpio
- The extended
- .I CPIO
- ***************
- *** 359,365
- interchange format specified in
- .B "Extended CPIO Format" in
- .I "IEEE Std. 1003.1-1988."
- ! .TP 1i
- .I ustar
- The extended
- .I TAR
-
- --- 362,368 -----
- interchange format specified in
- .B "Extended CPIO Format" in
- .I "IEEE Std. 1003.1-1988."
- ! .TP 0.75i
- .I ustar
- The extended
- .I TAR
- ***************
- *** 540,545
- format archives, link counts are listed as zero since the
- .I ustar
- archive format does not keep link count information.
- .SH COPYRIGHT
- Copyright (c) 1989 Mark H. Colburn.
- .br
-
- --- 543,553 -----
- format archives, link counts are listed as zero since the
- .I ustar
- archive format does not keep link count information.
- + .PP
- + On 16 bit architectures, the largest buffer size is 32k-1.
- + This is due, in part, to using integers in the buffer allocation schemes,
- + however, on many of these machines, it is not possible to allocate blocks
- + of memory larger than 32k.
- .SH COPYRIGHT
- Copyright (c) 1989 Mark H. Colburn.
- .br
- ***************
- *** 554,560
- .PP
- THE SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- ! WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- .SH AUTHOR
- Mark H. Colburn
- .br
-
- --- 562,568 -----
- .PP
- THE SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- .SH AUTHOR
- Mark H. Colburn
- .br
- ***************
- *** 558,564
- .SH AUTHOR
- Mark H. Colburn
- .br
- ! NAPS International
- .br
- 117 Mackubin Street, Suite 1
- .br
-
- --- 566,572 -----
- .SH AUTHOR
- Mark H. Colburn
- .br
- ! Minnetech Consulting, Inc.
- .br
- 117 Mackubin Street, Suite 1
- .br
- Index: pax.c
- *** /tmp/,RCSt1a17113 Sun Feb 12 14:08:07 1989
- --- pax.c Sun Feb 12 14:02:25 1989
- ***************
- *** 1,6
- /* $Source: /u/mark/src/pax/RCS/pax.c,v $
- *
- ! * $Revision: 1.1 $
- *
- * DESCRIPTION
- *
-
- --- 1,6 -----
- /* $Source: /u/mark/src/pax/RCS/pax.c,v $
- *
- ! * $Revision: 1.2 $
- *
- * DESCRIPTION
- *
- ***************
- *** 46,52
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- ! * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * $Log: pax.c,v $
- * Revision 1.1 88/12/23 18:02:23 mark
-
- --- 46,52 -----
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- ! * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * $Log: pax.c,v $
- * Revision 1.2 89/02/12 10:05:17 mark
- ***************
- *** 49,54
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * $Log: pax.c,v $
- * Revision 1.1 88/12/23 18:02:23 mark
- * Initial revision
- *
-
- --- 49,57 -----
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * $Log: pax.c,v $
- + * Revision 1.2 89/02/12 10:05:17 mark
- + * 1.2 release fixes
- + *
- * Revision 1.1 88/12/23 18:02:23 mark
- * Initial revision
- *
- ***************
- *** 55,61
- */
-
- #ifndef lint
- ! static char *ident = "$Id: pax.c,v 1.1 88/12/23 18:02:23 mark Rel $";
- static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n";
- #endif /* ! lint */
-
-
- --- 58,64 -----
- */
-
- #ifndef lint
- ! static char *ident = "$Id: pax.c,v 1.2 89/02/12 10:05:17 mark Exp $";
- static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n";
- #endif /* ! lint */
-
- ***************
- *** 88,94
- OFFSET total; /* Total number of bytes transferred */
- short f_access_time; /* Reset access times of input files */
- short areof; /* End of input volume reached */
- ! short f_create_dirs; /* Create missing directories */
- short f_append; /* Add named files to end of archive */
- short f_create; /* create a new archive */
- short f_extract; /* Extract named files from archive */
-
- --- 91,97 -----
- OFFSET total; /* Total number of bytes transferred */
- short f_access_time; /* Reset access times of input files */
- short areof; /* End of input volume reached */
- ! short f_dir_create; /* Create missing directories */
- short f_append; /* Add named files to end of archive */
- short f_create; /* create a new archive */
- short f_extract; /* Extract named files from archive */
- ***************
- *** 104,110
- short f_newer; /* append files to archive if newer */
- short f_disposition; /* ask for file disposition */
- short f_reverse_match; /* Reverse sense of pattern match */
- ! short f_modification_time; /* Retain file modification time */
- short f_unconditional; /* Copy unconditionally */
- time_t now = 0; /* Current time */
- uint arvolume; /* Volume number */
-
- --- 107,113 -----
- short f_newer; /* append files to archive if newer */
- short f_disposition; /* ask for file disposition */
- short f_reverse_match; /* Reverse sense of pattern match */
- ! short f_mtime; /* Retain file modification time */
- short f_unconditional; /* Copy unconditionally */
- time_t now = 0; /* Current time */
- uint arvolume; /* Volume number */
- ***************
- *** 110,116
- uint arvolume; /* Volume number */
- uint blocksize = BLOCKSIZE; /* Archive block size */
- FILE *msgfile; /* message outpu file stdout/stderr */
- ! Replstr *rplhead = NULL; /* pointer to head of replstr list */
- Replstr *rpltail; /* pointer to tail of replstr list */
-
-
-
- --- 113,119 -----
- uint arvolume; /* Volume number */
- uint blocksize = BLOCKSIZE; /* Archive block size */
- FILE *msgfile; /* message outpu file stdout/stderr */
- ! Replstr *rplhead = (Replstr *)NULL; /* head of replstr list */
- Replstr *rpltail; /* pointer to tail of replstr list */
-
-
- ***************
- *** 234,241
- * of the tar and/or cpio interfaces...
- */
- f_unconditional = 1;
- ! f_modification_time = 1;
- ! f_create_dirs = 1;
- f_list = 1;
- blocksize = 0;
- blocking = 0;
-
- --- 237,244 -----
- * of the tar and/or cpio interfaces...
- */
- f_unconditional = 1;
- ! f_mtime = 1;
- ! f_dir_create = 1;
- f_list = 1;
- blocksize = 0;
- blocking = 0;
- ***************
- *** 258,264
- f_reverse_match = 1;
- break;
- case 'd':
- ! f_create_dirs = 0;
- break;
- case 'f':
- if (blocksize == 0) {
-
- --- 261,267 -----
- f_reverse_match = 1;
- break;
- case 'd':
- ! f_dir_create = 0;
- break;
- case 'f':
- if (blocksize == 0) {
- ***************
- *** 274,280
- f_link = 1;
- break;
- case 'm':
- ! f_modification_time = 0;
- break;
- case 'o':
- f_owner = 1;
-
- --- 277,283 -----
- f_link = 1;
- break;
- case 'm':
- ! f_mtime = 0;
- break;
- case 'o':
- f_owner = 1;
- ***************
- *** 358,364
- } else if (f_pass && optind < n_argc) {
- dirname = n_argv[--n_argc];
- if (LSTAT(dirname, &st) < 0) {
- ! fatal(syserr());
- }
- if ((st.sb_mode & S_IFMT) != S_IFDIR) {
- fatal("Not a directory");
-
- --- 361,367 -----
- } else if (f_pass && optind < n_argc) {
- dirname = n_argv[--n_argc];
- if (LSTAT(dirname, &st) < 0) {
- ! fatal(strerror());
- }
- if ((st.sb_mode & S_IFMT) != S_IFDIR) {
- fatal("Not a directory");
- ***************
- *** 465,471
- number = number * 10 + *idx++ - '0';
- switch (*idx++) {
- case 'b':
- ! result += number * 512;
- continue;
- case 'k':
- result += number * 1024;
-
- --- 468,474 -----
- number = number * 10 + *idx++ - '0';
- switch (*idx++) {
- case 'b':
- ! result += number * 512L;
- continue;
- case 'k':
- result += number * 1024L;
- ***************
- *** 468,474
- result += number * 512;
- continue;
- case 'k':
- ! result += number * 1024;
- continue;
- case 'm':
- result += number * 1024 * 1024;
-
- --- 471,477 -----
- result += number * 512L;
- continue;
- case 'k':
- ! result += number * 1024L;
- continue;
- case 'm':
- result += number * 1024L * 1024L;
- ***************
- *** 471,477
- result += number * 1024;
- continue;
- case 'm':
- ! result += number * 1024 * 1024;
- continue;
- case '+':
- result += number;
-
- --- 474,480 -----
- result += number * 1024L;
- continue;
- case 'm':
- ! result += number * 1024L * 1024L;
- continue;
- case '+':
- result += number;
- ***************
- *** 515,522
-
- #endif
- {
- ! fprintf(stderr, "\
- ! Usage: %s -[cimopuvy] [-f archive] [-s replstr] [-t device] [pattern...]\n",
- myname);
- fprintf(stderr, "\
- %s -r [-cimopuvy] [-f archive] [-s replstr] [-t device] [pattern...]\n",
-
- --- 518,524 -----
-
- #endif
- {
- ! fprintf(stderr, "Usage: %s -[cimopuvy] [-f archive] [-s replstr] [-t device] [pattern...]\n",
- myname);
- fprintf(stderr, " %s -r [-cimopuvy] [-f archive] [-s replstr] [-t device] [pattern...]\n",
- myname);
- ***************
- *** 518,525
- fprintf(stderr, "\
- Usage: %s -[cimopuvy] [-f archive] [-s replstr] [-t device] [pattern...]\n",
- myname);
- ! fprintf(stderr, "\
- ! %s -r [-cimopuvy] [-f archive] [-s replstr] [-t device] [pattern...]\n",
- myname);
- fprintf(stderr, "\
- %s -w [-adimuvy] [-b blocking] [-f archive] [-s replstr]\n\
-
- --- 520,526 -----
- {
- fprintf(stderr, "Usage: %s -[cimopuvy] [-f archive] [-s replstr] [-t device] [pattern...]\n",
- myname);
- ! fprintf(stderr, " %s -r [-cimopuvy] [-f archive] [-s replstr] [-t device] [pattern...]\n",
- myname);
- fprintf(stderr, " %s -w [-adimuvy] [-b blocking] [-f archive] [-s replstr]\n [-t device] [-x format] [pathname...]\n",
- myname);
- ***************
- *** 521,529
- fprintf(stderr, "\
- %s -r [-cimopuvy] [-f archive] [-s replstr] [-t device] [pattern...]\n",
- myname);
- ! fprintf(stderr, "\
- ! %s -w [-adimuvy] [-b blocking] [-f archive] [-s replstr]\n\
- ! [-t device] [-x format] [pathname...]\n",
- myname);
- fprintf(stderr, "\
- %s -r -w [-ilmopuvy] [-s replstr] [pathname...] directory\n",
-
- --- 522,528 -----
- myname);
- fprintf(stderr, " %s -r [-cimopuvy] [-f archive] [-s replstr] [-t device] [pattern...]\n",
- myname);
- ! fprintf(stderr, " %s -w [-adimuvy] [-b blocking] [-f archive] [-s replstr]\n [-t device] [-x format] [pathname...]\n",
- myname);
- fprintf(stderr, " %s -r -w [-ilmopuvy] [-s replstr] [pathname...] directory\n",
- myname);
- ***************
- *** 525,532
- %s -w [-adimuvy] [-b blocking] [-f archive] [-s replstr]\n\
- [-t device] [-x format] [pathname...]\n",
- myname);
- ! fprintf(stderr, "\
- ! %s -r -w [-ilmopuvy] [-s replstr] [pathname...] directory\n",
- myname);
- exit(1);
- }
-
- --- 524,530 -----
- myname);
- fprintf(stderr, " %s -w [-adimuvy] [-b blocking] [-f archive] [-s replstr]\n [-t device] [-x format] [pathname...]\n",
- myname);
- ! fprintf(stderr, " %s -r -w [-ilmopuvy] [-s replstr] [pathname...] directory\n",
- myname);
- exit(1);
- }
- Index: pax.h
- *** /tmp/,RCSt1a17118 Sun Feb 12 14:08:18 1989
- --- pax.h Sun Feb 12 14:02:26 1989
- ***************
- *** 1,6
- /* $Source: /u/mark/src/pax/RCS/pax.h,v $
- *
- ! * $Revision: 1.1 $
- *
- * pax.h - defnitions for entire program
- *
-
- --- 1,6 -----
- /* $Source: /u/mark/src/pax/RCS/pax.h,v $
- *
- ! * $Revision: 1.2 $
- *
- * pax.h - defnitions for entire program
- *
- ***************
- *** 27,33
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- ! * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
- #ifndef _PAX_H
-
- --- 27,33 -----
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- ! * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
- #ifndef _PAX_H
- ***************
- *** 53,59
- # include <dirent.h>
- # endif
- #else
- ! # include <sys/dir.h>
- # define dirent direct
- #endif
-
-
- --- 53,67 -----
- # include <dirent.h>
- # endif
- #else
- ! # ifdef hpux
- ! # include <ndir.h>
- ! # else
- ! # ifdef XENIX_286
- ! # include <sys/ndir.h>
- ! # else XENIX_286
- ! # include <sys/dir.h>
- ! # endif XENIX_286
- ! # endif /* hpux */
- # define dirent direct
- #endif
-
- ***************
- *** 74,79
- #ifdef XENIX
- # include <sys/inode.h>
- #endif
-
- #include <pwd.h>
- #include <grp.h>
-
- --- 82,90 -----
- #ifdef XENIX
- # include <sys/inode.h>
- #endif
- + #ifdef XENIX_286
- + #include <sys/param.h>
- + #endif XENIX_286
-
- #include <pwd.h>
- #include <grp.h>
- ***************
- *** 77,82
-
- #include <pwd.h>
- #include <grp.h>
- #include <sys/file.h>
-
- /* Defines */
-
- --- 88,94 -----
-
- #include <pwd.h>
- #include <grp.h>
- + #ifndef XENIX_286
- #include <sys/file.h>
- #endif XENIX_286
-
- ***************
- *** 78,83
- #include <pwd.h>
- #include <grp.h>
- #include <sys/file.h>
-
- /* Defines */
-
-
- --- 90,96 -----
- #include <grp.h>
- #ifndef XENIX_286
- #include <sys/file.h>
- + #endif XENIX_286
-
- /* Defines */
-
- ***************
- *** 331,338
- extern short f_pass;
- extern short f_disposition;
- extern short f_reverse_match;
- ! extern short f_modification_time;
- ! extern short f_create_dirs;
- extern short f_unconditional;
- extern short f_newer;
- extern time_t now;
-
- --- 344,351 -----
- extern short f_pass;
- extern short f_disposition;
- extern short f_reverse_match;
- ! extern short f_mtime;
- ! extern short f_dir_create;
- extern short f_unconditional;
- extern short f_newer;
- extern time_t now;
- Index: paxdir.c
- *** /tmp/,RCSt1a17123 Sun Feb 12 14:08:27 1989
- --- paxdir.c Sun Feb 12 14:02:28 1989
- ***************
- *** 213,219
- struct stat sbuf; /* result of fstat() */
-
- if ((fd = open(dirname, O_RDONLY)) < 0)
- ! return NULL; /* errno set by open() */
-
- if (fstat(fd, &sbuf) != 0 || !S_ISDIR(sbuf.st_mode)) {
- close(fd);
-
- --- 213,219 -----
- struct stat sbuf; /* result of fstat() */
-
- if ((fd = open(dirname, O_RDONLY)) < 0)
- ! return ((DIR *)NULL); /* errno set by open() */
-
- if (fstat(fd, &sbuf) != 0 || !S_ISDIR(sbuf.st_mode)) {
- close(fd);
- ***************
- *** 218,224
- if (fstat(fd, &sbuf) != 0 || !S_ISDIR(sbuf.st_mode)) {
- close(fd);
- errno = ENOTDIR;
- ! return NULL; /* not a directory */
- }
- if ((dirp = (DIR *) malloc(sizeof(DIR))) == NULL
- || (dirp->dd_buf = (char *) malloc((unsigned) DIRBUF)) == NULL
-
- --- 218,224 -----
- if (fstat(fd, &sbuf) != 0 || !S_ISDIR(sbuf.st_mode)) {
- close(fd);
- errno = ENOTDIR;
- ! return ((DIR *)NULL); /* not a directory */
- }
- if ((dirp = (DIR *) malloc(sizeof(DIR))) == (DIR *)NULL
- || (dirp->dd_buf = (char *) malloc((unsigned) DIRBUF)) == (char *)NULL
- ***************
- *** 220,227
- errno = ENOTDIR;
- return NULL; /* not a directory */
- }
- ! if ((dirp = (DIR *) malloc(sizeof(DIR))) == NULL
- ! || (dirp->dd_buf = (char *) malloc((unsigned) DIRBUF)) == NULL
- ) {
- register int serrno = errno;
- /* errno set to ENOMEM by sbrk() */
-
- --- 220,227 -----
- errno = ENOTDIR;
- return ((DIR *)NULL); /* not a directory */
- }
- ! if ((dirp = (DIR *) malloc(sizeof(DIR))) == (DIR *)NULL
- ! || (dirp->dd_buf = (char *) malloc((unsigned) DIRBUF)) == (char *)NULL
- ) {
- register int serrno = errno;
- /* errno set to ENOMEM by sbrk() */
- ***************
- *** 226,232
- register int serrno = errno;
- /* errno set to ENOMEM by sbrk() */
-
- ! if (dirp != NULL)
- free((pointer) dirp);
-
- close(fd);
-
- --- 226,232 -----
- register int serrno = errno;
- /* errno set to ENOMEM by sbrk() */
-
- ! if (dirp != (DIR *)NULL)
- free((pointer) dirp);
-
- close(fd);
- ***************
- *** 231,237
-
- close(fd);
- errno = serrno;
- ! return NULL; /* not enough memory */
- }
- dirp->dd_fd = fd;
- dirp->dd_loc = dirp->dd_size = 0; /* refill needed */
-
- --- 231,237 -----
-
- close(fd);
- errno = serrno;
- ! return ((DIR *)NULL); /* not enough memory */
- }
- dirp->dd_fd = fd;
- dirp->dd_loc = dirp->dd_size = 0; /* refill needed */
- ***************
- *** 259,265
- {
- register int fd;
-
- ! if ( dirp == NULL || dirp->dd_buf == NULL ) {
- errno = EFAULT;
- return -1; /* invalid pointer */
- }
-
- --- 259,265 -----
- {
- register int fd;
-
- ! if ( dirp == (DIR *)NULL || dirp->dd_buf == (char *)NULL ) {
- errno = EFAULT;
- return -1; /* invalid pointer */
- }
- ***************
- *** 290,296
- {
- register struct dirent *dp; /* -> directory data */
-
- ! if (dirp == NULL || dirp->dd_buf == NULL) {
- errno = EFAULT;
- return NULL; /* invalid pointer */
- }
-
- --- 290,296 -----
- {
- register struct dirent *dp; /* -> directory data */
-
- ! if (dirp == (DIR *)NULL || dirp->dd_buf == (char *)NULL) {
- errno = EFAULT;
- return (struct dirent *)NULL; /* invalid pointer */
- }
- ***************
- *** 292,298
-
- if (dirp == NULL || dirp->dd_buf == NULL) {
- errno = EFAULT;
- ! return NULL; /* invalid pointer */
- }
- do {
- if (dirp->dd_loc >= dirp->dd_size) /* empty or obsolete */
-
- --- 292,298 -----
-
- if (dirp == (DIR *)NULL || dirp->dd_buf == (char *)NULL) {
- errno = EFAULT;
- ! return (struct dirent *)NULL; /* invalid pointer */
- }
- do {
- if (dirp->dd_loc >= dirp->dd_size) /* empty or obsolete */
- ***************
- *** 303,309
- getdents(dirp->dd_fd, dirp->dd_buf, (unsigned) DIRBUF)
- ) <= 0
- )
- ! return NULL; /* EOF or error */
-
- dp = (struct dirent *) & dirp->dd_buf[dirp->dd_loc];
- dirp->dd_loc += dp->d_reclen;
-
- --- 303,309 -----
- getdents(dirp->dd_fd, dirp->dd_buf, (unsigned) DIRBUF)
- ) <= 0
- )
- ! return ((struct dirent *)NULL); /* EOF or error */
-
- dp = (struct dirent *) & dirp->dd_buf[dirp->dd_loc];
- dirp->dd_loc += dp->d_reclen;
- ***************
- *** 340,346
- {
- register bool rewind; /* "start over when stymied" flag */
-
- ! if (dirp == NULL || dirp->dd_buf == NULL) {
- errno = EFAULT;
- return; /* invalid pointer */
- }
-
- --- 340,346 -----
- {
- register bool rewind; /* "start over when stymied" flag */
-
- ! if (dirp == (DIR *)NULL || dirp->dd_buf == (char *)NULL) {
- errno = EFAULT;
- return; /* invalid pointer */
- }
- ***************
- *** 372,378
- /* See whether the matching entry is in the current buffer. */
-
- if ((dirp->dd_loc < dirp->dd_size /* valid index */
- ! || readdir(dirp) != NULL /* next buffer read */
- && (dirp->dd_loc = 0, true) /* beginning of buffer set */
- )
- && (dp = (struct dirent *) & dirp->dd_buf[dirp->dd_loc])->d_off
-
- --- 372,378 -----
- /* See whether the matching entry is in the current buffer. */
-
- if ((dirp->dd_loc < dirp->dd_size /* valid index */
- ! || readdir(dirp) != (struct dirent *)NULL /* next buffer read */
- && (dirp->dd_loc = 0, true) /* beginning of buffer set */
- )
- && (dp = (struct dirent *) & dirp->dd_buf[dirp->dd_loc])->d_off
- ***************
- *** 442,448
-
- #endif
- {
- ! if (dirp == NULL || dirp->dd_buf == NULL) {
- errno = EFAULT;
- return -1; /* invalid pointer */
- }
-
- --- 442,448 -----
-
- #endif
- {
- ! if (dirp == (DIR *)NULL || dirp->dd_buf == (char *)NULL) {
- errno = EFAULT;
- return -1; /* invalid pointer */
- }
- ***************
- *** 593,599
- }
- #endif
-
- ! if (buf == NULL
- #ifdef ATT_SPEC
- || (unsigned long) buf % sizeof(long) != 0 /* ugh */
- #endif
-
- --- 593,599 -----
- }
- #endif
-
- ! if (buf == (char *)NULL
- #ifdef ATT_SPEC
- || (unsigned long) buf % sizeof(long) != 0 /* ugh */
- #endif
- --
- Mark H. Colburn "Look into a child's eye;
- Minnetech Consulting, Inc. there's no hate and there's no lie;
- mark@jhereg.mn.org there's no black and there's no white."
-
-
-