svn commit: r281661 - stable/10/bin/pax
Eitan Adler
eadler at FreeBSD.org
Fri Apr 17 18:34:01 UTC 2015
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 */
More information about the svn-src-stable-10
mailing list