summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
Diffstat (limited to 'bin')
-rw-r--r--bin/pax/ftree.c6
-rw-r--r--bin/pax/options.c135
2 files changed, 60 insertions, 81 deletions
diff --git a/bin/pax/ftree.c b/bin/pax/ftree.c
index 1be7588a38a..6a52660c519 100644
--- a/bin/pax/ftree.c
+++ b/bin/pax/ftree.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ftree.c,v 1.10 2001/02/07 19:43:10 millert Exp $ */
+/* $OpenBSD: ftree.c,v 1.11 2001/02/09 14:04:33 espie Exp $ */
/* $NetBSD: ftree.c,v 1.4 1995/03/21 09:07:21 cgd Exp $ */
/*-
@@ -42,7 +42,7 @@
#if 0
static char sccsid[] = "@(#)ftree.c 8.2 (Berkeley) 4/18/94";
#else
-static char rcsid[] = "$OpenBSD: ftree.c,v 1.10 2001/02/07 19:43:10 millert Exp $";
+static char rcsid[] = "$OpenBSD: ftree.c,v 1.11 2001/02/09 14:04:33 espie Exp $";
#endif
#endif /* not lint */
@@ -171,7 +171,7 @@ ftree_add(str, chflg)
* simple check for bad args
*/
if ((str == NULL) || (*str == '\0')) {
- paxwarn(0, "Invalid file name argument");
+ paxwarn(0, "Invalid file name arguement");
return(-1);
}
diff --git a/bin/pax/options.c b/bin/pax/options.c
index 97a60014892..13556421610 100644
--- a/bin/pax/options.c
+++ b/bin/pax/options.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: options.c,v 1.45 2001/02/07 19:43:10 millert Exp $ */
+/* $OpenBSD: options.c,v 1.46 2001/02/09 14:04:33 espie Exp $ */
/* $NetBSD: options.c,v 1.6 1996/03/26 23:54:18 mrg Exp $ */
/*-
@@ -42,7 +42,7 @@
#if 0
static char sccsid[] = "@(#)options.c 8.2 (Berkeley) 4/18/94";
#else
-static char rcsid[] = "$OpenBSD: options.c,v 1.45 2001/02/07 19:43:10 millert Exp $";
+static char rcsid[] = "$OpenBSD: options.c,v 1.46 2001/02/09 14:04:33 espie Exp $";
#endif
#endif /* not lint */
@@ -607,7 +607,6 @@ tar_options(argc, argv)
register int c;
int fstdin = 0;
int Oflag = 0;
- char *listfile = NULL;
/*
* Set default values.
@@ -618,7 +617,7 @@ tar_options(argc, argv)
* process option flags
*/
while ((c = getoldopt(argc, argv,
- "b:cef:hmopqruts:vwxzBC:HLOPT:XZ014578"))
+ "b:cef:hmopqruts:vwxzBC:HLOPXZ014578"))
!= -1) {
switch(c) {
case 'b':
@@ -763,9 +762,6 @@ tar_options(argc, argv)
*/
rmleadslash = 0;
break;
- case 'T':
- listfile = optarg;
- break;
case 'X':
/*
* do not pass over mount points in the file system
@@ -810,8 +806,8 @@ tar_options(argc, argv)
else
listf = stdout;
- /* Traditional tar behaviour (pax wants to read file list from stdin) */
- if ((act == ARCHIVE || act == APPND) && argc == 0 && listfile == NULL)
+ /* Traditional tar behaviour (pax wants to read filelist from stdin) */
+ if ((act == ARCHIVE || act == APPND) && argc == 0)
exit(0);
/*
@@ -834,44 +830,7 @@ tar_options(argc, argv)
default:
{
int sawpat = 0;
- int cdmode = 0;
-
- if (listfile) {
- FILE *fp;
- char *str;
-
- if (strcmp(listfile, "-") == 0)
- fp = stdin;
- else if ((fp = fopen(listfile, "r")) == NULL) {
- paxwarn(1, "Unable to open file '%s' for read", listfile);
- tar_usage();
- }
- while ((str = getline(fp)) != NULL) {
- if (strcmp(str, "-C") == 0) {
- cdmode = 1;
- continue;
- }
- /*
- * If last line was "-C" then
- * this line has the dir, else
- * we have a pattern.
- */
- if (cdmode)
- chdname = str;
- else if (pat_add(str, chdname) < 0)
- tar_usage();
- else
- sawpat = 1;
- cdmode = 0;
- }
- if (strcmp(listfile, "-") != 0)
- fclose(fp);
- if (getline_error) {
- paxwarn(1, "Problem with file '%s'", listfile);
- tar_usage();
- }
- }
while (*argv != NULL) {
if (strcmp(*argv, "-C") == 0) {
if(*++argv == NULL)
@@ -880,9 +839,34 @@ tar_options(argc, argv)
continue;
}
+ if (strcmp(*argv, "-T") == 0) {
+ FILE *fp;
+ char *str;
+
+ if (*++argv == NULL)
+ break;
+
+ if ((fp = fopen(*argv, "r")) == NULL) {
+ paxwarn(1, "Unable to open file '%s' for read", *argv);
+ tar_usage();
+ }
+ while ((str = getline(fp)) != NULL) {
+ if (pat_add(str, chdname) < 0)
+ tar_usage();
+ sawpat++;
+ }
+ fclose(fp);
+ if (getline_error) {
+ paxwarn(1, "Problem with file '%s'", *argv);
+ tar_usage();
+ }
+ argv++;
+
+ continue;
+ }
if (pat_add(*argv++, chdname) < 0)
tar_usage();
- sawpat = 1;
+ sawpat++;
}
/*
* if patterns were added, we are doing chdir()
@@ -900,35 +884,6 @@ tar_options(argc, argv)
tar_usage();
}
- if (listfile) {
- FILE *fp;
- char *str;
- int cdmode = 0;
-
- if (strcmp(listfile, "-") == 0)
- fp = stdin;
- else if ((fp = fopen(listfile, "r")) == NULL) {
- paxwarn(1, "Unable to open file '%s' for read",
- listfile);
- tar_usage();
- }
- while ((str = getline(fp)) != NULL) {
- if (strcmp(str, "-C") == 0) {
- cdmode = 1;
- continue;
- }
-
- if (ftree_add(str, cdmode) < 0)
- tar_usage();
- cdmode = 0;
- }
- if (strcmp(listfile, "-") != 0)
- fclose(fp);
- if (getline_error) {
- paxwarn(1, "Problem with file '%s'", listfile);
- tar_usage();
- }
- }
while (*argv != NULL) {
if (strcmp(*argv, "-C") == 0) {
if (*++argv == NULL)
@@ -938,6 +893,30 @@ tar_options(argc, argv)
continue;
}
+ if (strcmp(*argv, "-T") == 0) {
+ FILE *fp;
+ char *str;
+
+ if (*++argv == NULL)
+ break;
+
+ if ((fp = fopen(*argv, "r")) == NULL) {
+ paxwarn(1, "Unable to open file '%s' for read", *argv);
+ tar_usage();
+ }
+ while ((str = getline(fp)) != NULL) {
+ if (ftree_add(str, 0) < 0)
+ tar_usage();
+ }
+ fclose(fp);
+ if (getline_error) {
+ paxwarn(1, "Problem with file '%s'", *argv);
+ tar_usage();
+ }
+ argv++;
+
+ continue;
+ }
if (ftree_add(*argv++, 0) < 0)
tar_usage();
}
@@ -1602,9 +1581,9 @@ void
tar_usage()
#endif
{
- (void)fputs("usage: tar [-]{crtux}[-befhmopqvwzHLOPXZ014578] [archive] ",
+ (void)fputs("usage: tar [-]{txru}[cevfbmopqswzBHLPXZ014578] [tapefile] ",
stderr);
- (void)fputs("[blocksize] [-C directory] [-T file] [-s replstr] [file ...]\n",
+ (void)fputs("[blocksize] [replstr] [-C directory] [-T file] file1 file2...\n",
stderr);
exit(1);
}