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);
 }
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to