/* Tar -- a tape archiver.
- Copyright (C) 1988, 1992 Free Software Foundation
+ Copyright (C) 1988, 1992, 1993 Free Software Foundation
This file is part of GNU Tar.
{"to-stdout", 0, &f_exstdout, 1},
{"ignore-zeros", 0, &f_ignorez, 1},
{"keep-old-files", 0, 0, 'k'},
- {"uncompress", 0, &f_compress, 1},
{"same-permissions", 0, &f_use_protection, 1},
{"preserve-permissions", 0, &f_use_protection, 1},
{"modification-time", 0, &f_modified, 1},
{"listed-incremental", 1, 0, 'g'},
{"multi-volume", 0, &f_multivol, 1},
{"info-script", 1, 0, 'F'},
+ {"new-volume-script", 1, 0, 'F'},
{"absolute-paths", 0, &f_absolute_paths, 1},
{"interactive", 0, &f_confirm, 1},
{"confirmation", 0, &f_confirm, 1},
{"one-file-system", 0, &f_local_filesys, 1},
{"old-archive", 0, 0, 'o'},
{"portability", 0, 0, 'o'},
- {"compress", 0, &f_compress, 1},
- {"compress-block", 0, &f_compress, 2},
+ {"compress", 0, 0, 'Z'},
+ {"uncompress", 0, 0, 'Z'},
+ {"block-compress", 0, &f_compress_block, 1},
+ {"gzip", 0, 0, 'z'},
+ {"ungzip", 0, 0, 'z'},
+ {"use-compress-program", 1, 0, 18},
+
+
+ {"same-permissions", 0, &f_use_protection, 1},
{"sparse", 0, &f_sparse_files, 1},
{"tape-length", 1, 0, 'L'},
{"remove-files", 0, &f_remove_files, 1},
/* Set default option values */
blocking = DEFBLOCKING; /* From Makefile */
- ar_files = (char **) malloc (sizeof (char *) * 10);
+ ar_files = (char **) ck_malloc (sizeof (char *) * 10);
ar_files_len = 10;
n_ar_files = 0;
cur_ar_file = 0;
f_volno_file = optarg;
break;
+ case 18:
+ if (f_compressprog)
+ {
+ msg ("Only one compression option permitted\n");
+ exit (EX_ARGSBAD);
+ }
+ f_compressprog = optarg;
+ break;
+
case 'g': /* We are making a GNU dump; save
directories at the beginning of
the archive, and include in each
add_exclude_file (optarg);
break;
- case 'z': /* Easy to type */
- case 'Z': /* Like the filename extension .Z */
- f_compress++;
+ case 'z':
+ if (f_compressprog)
+ {
+ msg ("Only one compression option permitted\n");
+ exit (EX_ARGSBAD);
+ }
+ f_compressprog = "gzip";
+ break;
+
+ case 'Z':
+ if (f_compressprog)
+ {
+ msg ("Only one compression option permitted\n");
+ exit (EX_ARGSBAD);
+ }
+ f_compressprog = "compress";
break;
case '?':
msg ("Multiple archive files requires --multi-volume\n");
exit (EX_ARGSBAD);
}
+ if (f_compress_block && !f_compressprog)
+ {
+ msg ("You must use a compression option (--gzip, --compress\n\
+or --use-compress-program) with --block-compress.\n");
+ exit (EX_ARGSBAD);
+ }
}
DEF_AR_FILE);
fputs ("\
--force-local archive file is local even if has a colon\n\
--F, --info-script F run script at end of each tape (implies -M)\n\
+-F, --info-script F\n\
+ --new-volume-script F run script at end of each tape (implies -M)\n\
-G, --incremental create/list/extract old GNU-format incremental backup\n\
-g, --listed-incremental F create/list/extract new GNU-format incremental backup\n\
-h, --dereference don't dump symlinks; dump the files they point to\n\
-k, --keep-old-files keep existing files; don't overwrite them from archive\n\
-K, --starting-file F begin at file F in the archive\n\
-l, --one-file-system stay in local file system when creating an archive\n\
--L, --tape-length LENGTH change tapes after writing LENGTH\n\
+-L, --tape-length N change tapes after writing N*1024 bytes\n\
", stdout); /* KLUDGE */
fputs ("\
-m, --modification-time don't extract file modified time\n\
-W, --verify attempt to verify the archive after writing it\n\
--exclude FILE exclude file FILE\n\
-X, --exclude-from FILE exclude files listed in FILE\n\
--z, -Z, --compress,\n\
+-Z, --compress,\n\
--uncompress filter the archive through compress\n\
+-z, --gzip,\n\
+ --ungzip filter the archive through gzip\n\
+--use-compress-program PROG\n\
+ filter the archive through PROG (which must accept -d)\n\
+--block-compress block the output of compression program for tapes\n\
-[0-7][lmh] specify drive and density\n\
", stdout);
}
}
/* End of JF quick -C hack */
+#if 0
if (f_exclude && check_exclude (p))
goto tryagain;
+#endif
return un_quote_string (p);
}
while (p = read_name_from_file (buffer, &buffer_siz, namef))
next_name_is_dir = 0;
goto tryagain;
}
+#if 0
if (f_exclude && check_exclude (p))
goto tryagain;
+#endif
return un_quote_string (p);
}
return NULL;