X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Ftar.c;h=f5926ed6b050bf3c21044783a6ebc6cbd08d2664;hb=17badf101f91e2c82add60655c2f749e07c2b84d;hp=e508ce278e80f2e1d4f62ecf939e2d30b1b80d06;hpb=ea86c736650015fb420746369eb73ded8eb9266f;p=chaz%2Ftar diff --git a/src/tar.c b/src/tar.c index e508ce2..f5926ed 100644 --- a/src/tar.c +++ b/src/tar.c @@ -1,5 +1,5 @@ /* 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. @@ -137,7 +137,6 @@ struct option long_options[] = {"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}, @@ -153,6 +152,7 @@ struct option long_options[] = {"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}, @@ -162,8 +162,15 @@ struct option long_options[] = {"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'}, + {"compress-block", 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}, @@ -288,7 +295,7 @@ options (argc, argv) /* 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; @@ -345,6 +352,15 @@ options (argc, argv) 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 @@ -601,9 +617,22 @@ options (argc, argv) 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 '?': @@ -627,6 +656,12 @@ options (argc, argv) 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 --f_compress_block.\n"); + exit (EX_ARGSBAD); + } } @@ -669,7 +704,8 @@ Other options:\n\ 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\ @@ -678,7 +714,7 @@ Other options:\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\ @@ -713,8 +749,12 @@ Other options:\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\ -[0-7][lmh] specify drive and density\n\ ", stdout); } @@ -866,8 +906,10 @@ tryagain: } /* 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)) @@ -891,8 +933,10 @@ tryagain: 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;