Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 17 Apr 2015 18:33:59 +0000 (UTC)
From:      Eitan Adler <eadler@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org
Subject:   svn commit: r281661 - stable/10/bin/pax
Message-ID:  <201504171833.t3HIXxbG016949@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: eadler
Date: Fri Apr 17 18:33:59 2015
New Revision: 281661
URL: https://svnweb.freebsd.org/changeset/base/281661

Log:
  MFC r280206:
  
  Implement pax -O option to permit limiting a PAX archive to a single volume.
  
  -O Force the archive to be one volume.  If a volume ends prematurely, pax will
  not prompt for a new volume.
  
  PR:		198481

Modified:
  stable/10/bin/pax/ar_io.c
  stable/10/bin/pax/extern.h
  stable/10/bin/pax/options.c
  stable/10/bin/pax/pax.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/bin/pax/ar_io.c
==============================================================================
--- stable/10/bin/pax/ar_io.c	Fri Apr 17 16:38:59 2015	(r281660)
+++ stable/10/bin/pax/ar_io.c	Fri Apr 17 18:33:59 2015	(r281661)
@@ -82,7 +82,7 @@ static int wr_trail = 1;		/* trailer was
 static int can_unlnk = 0;		/* do we unlink null archives?  */
 const char *arcname;		  	/* printable name of archive */
 const char *gzip_program;		/* name of gzip program */
-static pid_t zpid = -1;			/* pid of child process */
+static pid_t zpid = -1; 		/* pid of child process */
 
 static int get_phys(void);
 static void ar_start_gzip(int, const char *, int);
@@ -1123,7 +1123,7 @@ ar_next(void)
 	if (sigprocmask(SIG_SETMASK, &o_mask, NULL) < 0)
 		syswarn(0, errno, "Unable to restore signal mask");
 
-	if (done || !wr_trail || strcmp(NM_TAR, argv0) == 0)
+	if (done || !wr_trail || Oflag || strcmp(NM_TAR, argv0) == 0)
 		return(-1);
 
 	tty_prnt("\nATTENTION! %s archive volume change required.\n", argv0);

Modified: stable/10/bin/pax/extern.h
==============================================================================
--- stable/10/bin/pax/extern.h	Fri Apr 17 16:38:59 2015	(r281660)
+++ stable/10/bin/pax/extern.h	Fri Apr 17 18:33:59 2015	(r281661)
@@ -217,6 +217,7 @@ extern int vflag;
 extern int Dflag;
 extern int Hflag;
 extern int Lflag;
+extern int Oflag;
 extern int Xflag;
 extern int Yflag;
 extern int Zflag;

Modified: stable/10/bin/pax/options.c
==============================================================================
--- stable/10/bin/pax/options.c	Fri Apr 17 16:38:59 2015	(r281660)
+++ stable/10/bin/pax/options.c	Fri Apr 17 18:33:59 2015	(r281661)
@@ -194,7 +194,7 @@ pax_options(int argc, char **argv)
 	/*
 	 * process option flags
 	 */
-	while ((c=getopt(argc,argv,"ab:cdf:iklno:p:rs:tuvwx:zB:DE:G:HLPT:U:XYZ"))
+	while ((c=getopt(argc,argv,"ab:cdf:iklno:p:rs:tuvwx:zB:DE:G:HLOPT:U:XYZ"))
 	    != -1) {
 		switch (c) {
 		case 'a':
@@ -447,6 +447,12 @@ pax_options(int argc, char **argv)
 			Lflag = 1;
 			flg |= CLF;
 			break;
+		case 'O':
+			/*
+			 * Force one volume. Non standard option.
+			 */
+			Oflag = 1;
+			break;
 		case 'P':
 			/*
 			 * do NOT follow symlinks (default)
@@ -584,7 +590,7 @@ tar_options(int argc, char **argv)
 {
 	int c;
 	int fstdin = 0;
-	int Oflag = 0;
+	int tar_Oflag = 0;
 	int nincfiles = 0;
 	int incfiles_max = 0;
 	struct incfile {
@@ -664,7 +670,7 @@ tar_options(int argc, char **argv)
 			if (opt_add("write_opt=nodir") < 0)
 				tar_usage();
 		case 'O':
-			Oflag = 1;
+			tar_Oflag = 1;
 			break;
 		case 'p':
 			/*
@@ -820,8 +826,8 @@ tar_options(int argc, char **argv)
 	 * (unless -o specified)
 	 */
 	if (act == ARCHIVE || act == APPND)
-		frmt = &(fsub[Oflag ? F_OTAR : F_TAR]);
-	else if (Oflag) {
+		frmt = &(fsub[tar_Oflag ? F_OTAR : F_TAR]);
+	else if (tar_Oflag) {
 		paxwarn(1, "The -O/-o options are only valid when writing an archive");
 		tar_usage();		/* only valid when writing */
 	}
@@ -1524,25 +1530,25 @@ no_op(void)
 void
 pax_usage(void)
 {
-	(void)fputs("usage: pax [-cdnvz] [-E limit] [-f archive] ", stderr);
+	(void)fputs("usage: pax [-cdnOvz] [-E limit] [-f archive] ", stderr);
 	(void)fputs("[-s replstr] ... [-U user] ...", stderr);
 	(void)fputs("\n	   [-G group] ... ", stderr);
 	(void)fputs("[-T [from_date][,to_date]] ... ", stderr);
 	(void)fputs("[pattern ...]\n", stderr);
-	(void)fputs("       pax -r [-cdiknuvzDYZ] [-E limit] ", stderr);
+	(void)fputs("       pax -r [-cdiknOuvzDYZ] [-E limit] ", stderr);
 	(void)fputs("[-f archive] [-o options] ... \n", stderr);
 	(void)fputs("	   [-p string] ... [-s replstr] ... ", stderr);
 	(void)fputs("[-U user] ... [-G group] ...\n	   ", stderr);
 	(void)fputs("[-T [from_date][,to_date]] ... ", stderr);
 	(void)fputs(" [pattern ...]\n", stderr);
-	(void)fputs("       pax -w [-dituvzHLPX] [-b blocksize] ", stderr);
+	(void)fputs("       pax -w [-dituvzHLOPX] [-b blocksize] ", stderr);
 	(void)fputs("[ [-a] [-f archive] ] [-x format] \n", stderr);
 	(void)fputs("	   [-B bytes] [-s replstr] ... ", stderr);
 	(void)fputs("[-o options] ... [-U user] ...", stderr);
 	(void)fputs("\n	   [-G group] ... ", stderr);
 	(void)fputs("[-T [from_date][,to_date][/[c][m]]] ... ", stderr);
 	(void)fputs("[file ...]\n", stderr);
-	(void)fputs("       pax -r -w [-diklntuvDHLPXYZ] ", stderr);
+	(void)fputs("       pax -r -w [-diklntuvDHLOPXYZ] ", stderr);
 	(void)fputs("[-p string] ... [-s replstr] ...", stderr);
 	(void)fputs("\n	   [-U user] ... [-G group] ... ", stderr);
 	(void)fputs("[-T [from_date][,to_date][/[c][m]]] ... ", stderr);

Modified: stable/10/bin/pax/pax.c
==============================================================================
--- stable/10/bin/pax/pax.c	Fri Apr 17 16:38:59 2015	(r281660)
+++ stable/10/bin/pax/pax.c	Fri Apr 17 18:33:59 2015	(r281661)
@@ -85,6 +85,7 @@ int	vflag;			/* produce verbose output *
 int	Dflag;			/* same as uflag except inode change time */
 int	Hflag;			/* follow command line symlinks (write only) */
 int	Lflag;			/* follow symlinks when writing */
+int	Oflag;			/* limit to single volume */
 int	Xflag;			/* archive files with same device id only */
 int	Yflag;			/* same as Dflg except after name mode */
 int	Zflag;			/* same as uflg except after name mode */



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201504171833.t3HIXxbG016949>