This is a *NON official* patch to GNU tar 1.11.1 to support gzip. With this patch, tar -cz invokes gzip, tar -cZ invokes compress. You can use tar -xz to extract both compressed and gzip'ed tar files. For example you can transfer files from one machine to another in a compressed form using: tar cfz - files | rsh machine 'tar xvpfz -' tar and gzip are available on all GNU archive sites, such as prep.ai.mit.edu:/pub/gnu and its mirrors. Jean-loup Gailly jloup@chorus.fr diff -c bak/buffer.c ./buffer.c *** bak/buffer.c Mon Sep 14 22:56:39 1992 --- ./buffer.c Mon Dec 28 19:07:52 1992 *************** *** 452,459 **** } } /* So we should exec compress (-d) */ ! if(ar_reading) execlp("compress", "compress", "-d", (char *)0); else execlp("compress", "compress", (char *)0); msg_perror("can't exec compress"); --- 452,463 ---- } } /* So we should exec compress (-d) */ ! if(ar_reading) { ! execlp("gzip", "gzip", "-d", (char *)0); ! /* Try uncompress if gunzip fails */ execlp("compress", "compress", "-d", (char *)0); + } else if (f_zip) + execlp("gzip", "gzip", "-8", (char *)0); else execlp("compress", "compress", (char *)0); msg_perror("can't exec compress"); diff -c bak/tar.c ./tar.c *** bak/tar.c Mon Sep 14 23:31:38 1992 --- ./tar.c Mon Dec 28 19:14:29 1992 *************** *** 158,163 **** --- 158,164 ---- {"ignore-zeros", 0, &f_ignorez, 1}, {"keep-old-files", 0, 0, 'k'}, {"uncompress", 0, &f_compress, 1}, + {"unzip", 0, 0, 'z'}, {"same-permissions", 0, &f_use_protection, 1}, {"preserve-permissions",0, &f_use_protection, 1}, {"modification-time", 0, &f_modified, 1}, *************** *** 183,188 **** --- 184,190 ---- {"old-archive", 0, 0, 'o'}, {"portability", 0, 0, 'o'}, {"compress", 0, &f_compress, 1}, + {"zip", 0, 0, 'z'}, {"compress-block", 0, &f_compress, 2}, {"sparse", 0, &f_sparse_files, 1}, {"tape-length", 1, 0, 'L'}, *************** *** 609,615 **** add_exclude_file(optarg); break; ! case 'z': /* Easy to type */ case 'Z': /* Like the filename extension .Z */ f_compress++; break; --- 611,621 ---- add_exclude_file(optarg); break; ! case 'z': /* Like the filename extension .z */ ! f_zip++; ! f_compress++; ! break; ! case 'Z': /* Like the filename extension .Z */ f_compress++; break; *************** *** 716,722 **** -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\ --uncompress filter the archive through compress\n\ -[0-7][lmh] specify drive and density\n\ ", stdout); --- 722,729 ---- -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, --zip, --unzip filter the archive through gzip\n\ ! -Z, --compress,\n\ --uncompress filter the archive through compress\n\ -[0-7][lmh] specify drive and density\n\ ", stdout); diff -c bak/tar.h ./tar.h *** bak/tar.h Tue Sep 8 21:45:34 1992 --- ./tar.h Mon Dec 28 19:06:40 1992 *************** *** 224,231 **** TAR_EXTERN int f_verify; /* -W */ /* CMD_EXTRACT -x */ TAR_EXTERN int f_exclude; /* -X */ ! TAR_EXTERN int f_compress; /* -z */ ! /* -Z */ TAR_EXTERN int f_do_chown; /* --do-chown */ TAR_EXTERN int f_totals; /* --totals */ TAR_EXTERN int f_remove_files; /* --remove-files */ --- 224,231 ---- TAR_EXTERN int f_verify; /* -W */ /* CMD_EXTRACT -x */ TAR_EXTERN int f_exclude; /* -X */ ! TAR_EXTERN int f_zip; /* -z */ ! TAR_EXTERN int f_compress; /* -Z */ TAR_EXTERN int f_do_chown; /* --do-chown */ TAR_EXTERN int f_totals; /* --totals */ TAR_EXTERN int f_remove_files; /* --remove-files */