Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 24 Jul 2015 17:46:43 +0000 (UTC)
From:      Ed Maste <emaste@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r285844 - head/usr.bin/ar
Message-ID:  <201507241746.t6OHkhFp026723@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: emaste
Date: Fri Jul 24 17:46:43 2015
New Revision: 285844
URL: https://svnweb.freebsd.org/changeset/base/285844

Log:
  ar: add -U (unique) option to disable -D (deterministic) mode
  
  This is required in order for us to support deterministic mode by
  default.  If multiple -D or -U options are specified on the command
  line, the final one takes precedence.  GNU ar also uses -U for this.
  
  An equivalent change will be applied to ELF Tool Chain's version of ar.
  
  PR:		196929
  MFC after:	1 month
  Sponsored by:	The FreeBSD Foundation
  Differential Revision:	https://reviews.freebsd.org/D3175

Modified:
  head/usr.bin/ar/ar.1
  head/usr.bin/ar/ar.c

Modified: head/usr.bin/ar/ar.1
==============================================================================
--- head/usr.bin/ar/ar.1	Fri Jul 24 17:01:16 2015	(r285843)
+++ head/usr.bin/ar/ar.1	Fri Jul 24 17:46:43 2015	(r285844)
@@ -23,7 +23,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd December 22, 2011
+.Dd July 24, 2015
 .Dt AR 1
 .Os
 .Sh NAME
@@ -66,6 +66,7 @@
 .Op Fl D
 .Op Fl f
 .Op Fl s | Fl S
+.Op Fl U
 .Op Fl v
 .Op Fl z
 .Ar archive
@@ -82,6 +83,7 @@
 .Op Fl j
 .Op Fl s | Fl S
 .Op Fl u
+.Op Fl U
 .Op Fl v
 .Op Fl z
 .Ar archive
@@ -112,6 +114,7 @@
 .Fl M
 .Nm ranlib
 .Op Fl D
+.Op Fl U
 .Ar archive ...
 .Sh DESCRIPTION
 The
@@ -207,6 +210,11 @@ and 0644 instead of file mode from the m
 .Ar .
 This ensures that checksums on the resulting archives are reproducible
 when member contents are identical.
+If multiple
+.Fl D
+and
+.Fl U
+options are specified on the command line, the final one takes precedence.
 .It Fl f
 Synonymous with option
 .Fl T .
@@ -316,6 +324,19 @@ option, the members specified by argumen
 .Ar
 will be extracted only if they are newer than the corresponding
 files in the file system.
+.It Fl U
+When used in combination with the
+.Fl r
+or
+.Fl q
+option, insert the real mtime, uid and gid, and file mode values
+from the members named by arguments
+.Ar .
+If multiple
+.Fl D
+and
+.Fl U
+options are specified on the command line, the final one takes precedence.
 .It Fl v
 Provide verbose output.
 When used with the

Modified: head/usr.bin/ar/ar.c
==============================================================================
--- head/usr.bin/ar/ar.c	Fri Jul 24 17:01:16 2015	(r285843)
+++ head/usr.bin/ar/ar.c	Fri Jul 24 17:46:43 2015	(r285844)
@@ -113,7 +113,7 @@ main(int argc, char **argv)
 	len = strlen(bsdar->progname);
 	if (len >= strlen("ranlib") &&
 	    strcmp(bsdar->progname + len - strlen("ranlib"), "ranlib") == 0) {
-		while ((opt = getopt_long(argc, argv, "tDV", longopts,
+		while ((opt = getopt_long(argc, argv, "tDUV", longopts,
 		    NULL)) != -1) {
 			switch(opt) {
 			case 't':
@@ -122,6 +122,9 @@ main(int argc, char **argv)
 			case 'D':
 				bsdar->options |= AR_D;
 				break;
+			case 'U':
+				bsdar->options &= ~AR_D;
+				break;
 			case 'V':
 				ranlib_version();
 				break;
@@ -157,7 +160,7 @@ main(int argc, char **argv)
 		}
 	}
 
-	while ((opt = getopt_long(argc, argv, "abCcdDfijlMmopqrSsTtuVvxz",
+	while ((opt = getopt_long(argc, argv, "abCcdDfijlMmopqrSsTtUuVvxz",
 	    longopts, NULL)) != -1) {
 		switch(opt) {
 		case 'a':
@@ -216,6 +219,9 @@ main(int argc, char **argv)
 		case 't':
 			set_mode(bsdar, opt);
 			break;
+		case 'U':
+			bsdar->options &= ~AR_D;
+			break;
 		case 'u':
 			bsdar->options |= AR_U;
 			break;
@@ -364,9 +370,9 @@ bsdar_usage(void)
 	(void)fprintf(stderr, "\tar -m [-Tjsvz] archive file ...\n");
 	(void)fprintf(stderr, "\tar -m [-Tabijsvz] position archive file ...\n");
 	(void)fprintf(stderr, "\tar -p [-Tv] archive [file ...]\n");
-	(void)fprintf(stderr, "\tar -q [-TcDjsvz] archive file ...\n");
-	(void)fprintf(stderr, "\tar -r [-TcDjsuvz] archive file ...\n");
-	(void)fprintf(stderr, "\tar -r [-TabcDijsuvz] position archive file ...\n");
+	(void)fprintf(stderr, "\tar -q [-TcDjsUvz] archive file ...\n");
+	(void)fprintf(stderr, "\tar -r [-TcDjsUuvz] archive file ...\n");
+	(void)fprintf(stderr, "\tar -r [-TabcDijsUuvz] position archive file ...\n");
 	(void)fprintf(stderr, "\tar -s [-jz] archive\n");
 	(void)fprintf(stderr, "\tar -t [-Tv] archive [file ...]\n");
 	(void)fprintf(stderr, "\tar -x [-CTouv] archive [file ...]\n");
@@ -378,7 +384,7 @@ static void
 ranlib_usage(void)
 {
 
-	(void)fprintf(stderr, "usage:	ranlib [-t] archive ...\n");
+	(void)fprintf(stderr, "usage:	ranlib [-DtU] archive ...\n");
 	(void)fprintf(stderr, "\tranlib -V\n");
 	exit(EX_USAGE);
 }



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