🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

1 total messages Started by Richard Neitzel Mon, 28 Dec 1992 17:44
Suggested patch to support gzip.
#1167
Author: Richard Neitzel
Date: Mon, 28 Dec 1992 17:44
279 lines
9742 bytes
The following is a quick & dirty patch to make tar-1.11.1 support the
new gzip program. It breaks the -z & -Z flags apart, -z becoming the
gzip switch and -Z the compress switch.

--
Richard Neitzel thor@thor.atd.ucar.edu          Torren med sitt skjegg
National Center For Atmospheric Research        lokkar borni under sole-vegg
Box 3000 Boulder, CO 80307-3000	                Gjo'i med sitt shinn
303-497-2057                                    jagar borni inn.
--------------------------------------------------------------------
*** tar.c.orig	Mon Sep 14 15:31:38 1992
--- tar.c	Mon Dec 28 10:33:46 1992
***************
*** 609,618 ****
  			add_exclude_file(optarg);
  			break;
  
! 		case 'z':		/* Easy to type */
! 		case 'Z':		/* Like the filename extension .Z */
  			f_compress++;
  			break;
  
  		case '?':
  		badopt:
--- 609,626 ----
  			add_exclude_file(optarg);
  			break;
  
! 		case 'z':		/* Zip mode */
! #ifdef USE_ZIP
  			f_compress++;
+ 			f_compress_mode = USE_ZIP;
  			break;
+ #endif
+ 		case 'Z':		/* Compress mode */
+ 			f_compress++;
+ #ifdef USE_ZIP
+ 			f_compress_mode = USE_COMPRESS;
+ #endif
+ 			break;
  
  		case '?':
  		badopt:
***************
*** 650,655 ****
--- 658,736 ----
  describe()
  {
  	puts("choose one of the following:");
+ #ifdef USE_ZIP
+ 	fputs("\
+ -A, --catenate,\n\
+     --concatenate	append tar files to an archive\n\
+ -c, --create		create a new archive\n\
+ -d, --diff,\n\
+     --compare		find differences between archive and file system\n\
+ --delete			delete from the archive (not for use on mag tapes!)\n\
+ -r, --append		append files to the end of an archive\n\
+ -t, --list		list the contents of an archive\n\
+ -u, --update		only append files that are newer than copy in archive\n\
+ -x, --extract,\n\
+     --get		extract files from an archive\n",stdout);
+ 
+ 	fprintf(stdout, "\
+ Other options:\n\
+ --atime-preserve	don't change access times on dumped files\n\
+ -b, --block-size N	block size of Nx512 bytes (default N=%d)\n", DEFBLOCKING);
+ 	fputs ("\
+ -B, --read-full-blocks	reblock as we read (for reading 4.2BSD pipes)\n\
+ -C, --directory DIR	change to directory DIR\n\
+ --checkpoint		print directory names while reading the archive\n\
+ ", stdout); /* KLUDGE */ fprintf(stdout, "\
+ -f, --file [HOSTNAME:]F	use archive file or device F (default %s)\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\
+ -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\
+ -i, --ignore-zeros	ignore blocks of zeros in archive (normally mean EOF)\n\
+ --ignore-failed-read	don't exit with non-zero status on unreadable files\n\
+ -k, --keep-old-files	keep existing files; don't overwrite them from archive\n\
+ -K, --starting-file FILE	begin at FILE 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\
+ ", stdout); /* KLUDGE */ fputs("\
+ -m, --modification-time	don't extract file modified time\n\
+ -M, --multi-volume	create/list/extract multi-volume archive\n\
+ -N, --after-date DATE,\n\
+     --newer DATE		only store files newer than DATE\n\
+ -o, --old-archive,\n\
+     --portability	write a V7 format archive, rather than ANSI format\n\
+ -O, --to-stdout		extract files to standard output\n\
+ -p, --same-permissions,\n\
+     --preserve-permissions extract all protection information\n\
+ -P, --absolute-paths	don't strip leading `/'s from file names\n\
+ --preserve		like -p -s\n\
+ ", stdout); /* KLUDGE */ fputs("\
+ -R, --record-number	show record number within archive with each message\n\
+ --remove-files		remove files after adding them to the archive\n\
+ -s, --same-order,\n\
+     --preserve-order	list of names to extract is sorted to match archive\n\
+ --same-owner		create extracted files with the same ownership \n\
+ -S, --sparse		handle sparse files efficiently\n\
+ -T, --files-from F	get names to extract or create from file F\n\
+ --null			-T reads null-terminated names, disable -C\n\
+ --totals			print total bytes written with --create\n\
+ -v, --verbose		verbosely list files processed\n\
+ -V, --label NAME		create archive with volume name NAME\n\
+ --version		print tar program version number\n\
+ -w, --interactive,\n\
+     --confirmation	ask for confirmation for every action\n\
+ ", stdout); /* KLUDGE */ fputs("\
+ -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 filter the archive through gzip\n\
+ -Z filter the archive through compress\n\
+ -[0-7][lmh]		specify drive and density\n\
+ ", stdout);
+ }
+ #else
  	fputs("\
  -A, --catenate,\n\
      --concatenate	append tar files to an archive\n\
***************
*** 721,727 ****
  -[0-7][lmh]		specify drive and density\n\
  ", stdout);
  }
! 
  void
  name_add(name)
  char *name;
--- 802,808 ----
  -[0-7][lmh]		specify drive and density\n\
  ", stdout);
  }
! #endif /* USE_ZIP */
  void
  name_add(name)
  char *name;
*** tar.h.orig	Tue Sep  8 13:45:34 1992
--- tar.h	Mon Dec 28 09:35:24 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_compress;		/* -z/-Z in use */
! TAR_EXTERN int  f_compress_mode;	/* -z(use gzip) -Z(use compress) */
  TAR_EXTERN int	f_do_chown;		/* --do-chown */
  TAR_EXTERN int  f_totals;		/* --totals */
  TAR_EXTERN int	f_remove_files;		/* --remove-files */
***************
*** 276,281 ****
--- 276,286 ----
   */
  TAR_EXTERN char		read_error_flag;
  
+ /*
+  * Defines for determining which compression program to use.
+  */
+ #define USE_ZIP 1
+ #define USE_COMPRESS 2
  
  /*
   * Declarations of functions available to the world.
*** buffer.c.orig	Mon Sep 14 14:56:39 1992
--- buffer.c	Mon Dec 28 10:15:56 1992
***************
*** 262,267 ****
--- 262,268 ----
  
  	int kidpipe[2];
  	int kidchildpid;
+ 	char *compress_prog;
  
  #define READ	0
  #define WRITE	1
***************
*** 451,461 ****
  			exit(0);
  		}
  	}
! 		/* 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");
  	_exit(EX_SYSTEM);
  }
--- 452,475 ----
  			exit(0);
  		}
  	}
! #ifndef ZIP_NAME
! #define ZIP_NAME "gzip"
! #endif
! #ifndef COMPRESS_NAME
! #define COMPRESS_NAME "compress"
! #endif
! 		/* So we should exec compress || zip (-d) */
! #ifdef USE_ZIP
! 	if (f_compress_mode == USE_ZIP)
! 	  compress_prog = ZIP_NAME;
! 	else
! #endif
! 	  compress_prog = COMPRESS_NAME;
! 
  	if(ar_reading)
! 		execlp(compress_prog, compress_prog, "-d", (char *)0);
  	else
! 		execlp(compress_prog, compress_prog, (char *)0);
  	msg_perror("can't exec compress");
  	_exit(EX_SYSTEM);
  }
*** Makefile.in.orig	Mon Dec 28 10:01:37 1992
--- Makefile.in	Mon Dec 28 10:01:20 1992
***************
*** 63,68 ****
--- 63,71 ----
  # -DNO_OPEN3		If you lack the 3-argument open and want to
  #			disable the tar -k option instead of emulating open.
  # -DXENIX		If you have sys/inode.h and need it to be included.
+ # -DUSE_ZIP             If you have GNU gzip and what to use it.
+ # -DZIPNAME=\"????\"    Your local name for gzip. Defaults to "gzip".
+ # -DCOMPRESS_NAME=\"???\" Your local name for compress. Defaults to "compress".
  
  DEF_AR_FILE = @DEF_AR_FILE@
  DEFBLOCKING = 20
*** configure.orig	Tue Sep 15 18:29:09 1992
--- configure	Mon Dec 28 09:56:56 1992
***************
*** 172,177 ****
--- 172,204 ----
    test -n "$need_trad" && CC="$CC -traditional"
  fi
  
+ # Check for gzip.
+ if test -z "$USE_ZIP"; then
+   echo checking for gzip
+   saveifs="$IFS"; IFS="${IFS}:"
+   for dir in $PATH; do
+     test -z "$dir" && dir=.
+     if test -f $dir/gzip; then
+       DEFS="$DEFS -DUSE_ZIP"
+       USE_ZIP=1
+       break
+     fi
+   done
+   IFS="$saveifs"
+ fi
+ if test -z "$USE_ZIP"; then
+   echo checking for zip
+   saveifs="$IFS"; IFS="${IFS}:"
+   for dir in $PATH; do
+     test -z "$dir" && dir=.
+     if test -f $dir/zip; then
+       DEFS="$DEFS -DUSE_ZIP"
+       break
+     fi
+   done
+   IFS="$saveifs"
+ fi
+ 
  # Make sure to not get the incompatible SysV /etc/install and
  # /usr/sbin/install, which might be in PATH before a BSD-like install,
  # or the SunOS /usr/etc/install directory.
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads