Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 29 Jul 2015 17:03:06 +0000
From:      "emaste (Ed Maste)" <phabric-noreply@FreeBSD.org>
To:        freebsd-toolchain@freebsd.org
Subject:   [Differential] [Request, 25 lines] D3237: Fix ar default deterministic mode for -x
Message-ID:  <differential-rev-PHID-DREV-p6eaneh7blvpd5hxa2t2-req@FreeBSD.org>

next in thread | raw e-mail | index | archive | help

--b1_bd48a8bb23acfa48e2533338ce90c80a
Content-Type: text/plain; charset = "utf-8"
Content-Transfer-Encoding: 8bit

emaste created this revision.
emaste added reviewers: jhibbits, bapt, brooks.
emaste added subscribers: freebsd-toolchain-list, jhibbits.

REVISION SUMMARY
  Reported by: @jhibbits

REVISION DETAIL
  https://reviews.freebsd.org/D3237

AFFECTED FILES
  usr.bin/ar/ar.c

CHANGE DETAILS
  diff --git a/usr.bin/ar/ar.c b/usr.bin/ar/ar.c
  --- a/usr.bin/ar/ar.c
  +++ b/usr.bin/ar/ar.c
  @@ -101,11 +101,12 @@
   	char		*p;
   	size_t		 len;
   	int		 i, opt;
  +	int		 Dflag, Uflag;
   
   	bsdar = &bsdar_storage;
   	memset(bsdar, 0, sizeof(*bsdar));
  -	/* Enable deterministic mode by default. */
  -	bsdar->options |= AR_D;
  +	Dflag = 0;
  +	Uflag = 0;
   
   	if ((bsdar->progname = getprogname()) == NULL)
   		bsdar->progname = "ar";
  @@ -122,10 +123,12 @@
   				/* Ignored. */
   				break;
   			case 'D':
  -				bsdar->options |= AR_D;
  +				Dflag = 1;
  +				Uflag = 0;
   				break;
   			case 'U':
  -				bsdar->options &= ~AR_D;
  +				Uflag = 1;
  +				Dflag = 0;
   				break;
   			case 'V':
   				ranlib_version();
  @@ -182,7 +185,8 @@
   			set_mode(bsdar, opt);
   			break;
   		case 'D':
  -			bsdar->options |= AR_D;
  +			Dflag = 1;
  +			Uflag = 0;
   			break;
   		case 'f':
   		case 'T':
  @@ -222,7 +226,8 @@
   			set_mode(bsdar, opt);
   			break;
   		case 'U':
  -			bsdar->options &= ~AR_D;
  +			Uflag = 1;
  +			Dflag = 0;
   			break;
   		case 'u':
   			bsdar->options |= AR_U;
  @@ -275,16 +280,22 @@
   		argv++;
   	}
   
  +	/* Set determinstic mode for -D, and by default without -U. */
  +	if (Dflag || (Uflag == 0 && (bsdar->mode == 'q' || bsdar->mode == 'r')))
  +		bsdar->options |= AR_D;
  +
   	if (bsdar->options & AR_A)
   		only_mode(bsdar, "-a", "mqr");
   	if (bsdar->options & AR_B)
   		only_mode(bsdar, "-b", "mqr");
   	if (bsdar->options & AR_C)
   		only_mode(bsdar, "-c", "qr");
   	if (bsdar->options & AR_CC)
   		only_mode(bsdar, "-C", "x");
  -	if (bsdar->options & AR_D)
  +	if (Dflag)
   		only_mode(bsdar, "-D", "qr");
  +	if (Uflag)
  +		only_mode(bsdar, "-U", "qr");
   	if (bsdar->options & AR_O)
   		only_mode(bsdar, "-o", "x");
   	if (bsdar->options & AR_SS)

EMAIL PREFERENCES
  https://reviews.freebsd.org/settings/panel/emailpreferences/

To: emaste, jhibbits, bapt, brooks
Cc: jhibbits, freebsd-toolchain-list

--b1_bd48a8bb23acfa48e2533338ce90c80a
Content-Type: text/x-patch; charset=utf-8; name="D3237.7472.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="D3237.7472.patch"

ZGlmZiAtLWdpdCBhL3Vzci5iaW4vYXIvYXIuYyBiL3Vzci5iaW4vYXIvYXIuYwotLS0gYS91c3Iu
YmluL2FyL2FyLmMKKysrIGIvdXNyLmJpbi9hci9hci5jCkBAIC0xMDEsMTEgKzEwMSwxMiBAQAog
CWNoYXIJCSpwOwogCXNpemVfdAkJIGxlbjsKIAlpbnQJCSBpLCBvcHQ7CisJaW50CQkgRGZsYWcs
IFVmbGFnOwogCiAJYnNkYXIgPSAmYnNkYXJfc3RvcmFnZTsKIAltZW1zZXQoYnNkYXIsIDAsIHNp
emVvZigqYnNkYXIpKTsKLQkvKiBFbmFibGUgZGV0ZXJtaW5pc3RpYyBtb2RlIGJ5IGRlZmF1bHQu
ICovCi0JYnNkYXItPm9wdGlvbnMgfD0gQVJfRDsKKwlEZmxhZyA9IDA7CisJVWZsYWcgPSAwOwog
CiAJaWYgKChic2Rhci0+cHJvZ25hbWUgPSBnZXRwcm9nbmFtZSgpKSA9PSBOVUxMKQogCQlic2Rh
ci0+cHJvZ25hbWUgPSAiYXIiOwpAQCAtMTIyLDEwICsxMjMsMTIgQEAKIAkJCQkvKiBJZ25vcmVk
LiAqLwogCQkJCWJyZWFrOwogCQkJY2FzZSAnRCc6Ci0JCQkJYnNkYXItPm9wdGlvbnMgfD0gQVJf
RDsKKwkJCQlEZmxhZyA9IDE7CisJCQkJVWZsYWcgPSAwOwogCQkJCWJyZWFrOwogCQkJY2FzZSAn
VSc6Ci0JCQkJYnNkYXItPm9wdGlvbnMgJj0gfkFSX0Q7CisJCQkJVWZsYWcgPSAxOworCQkJCURm
bGFnID0gMDsKIAkJCQlicmVhazsKIAkJCWNhc2UgJ1YnOgogCQkJCXJhbmxpYl92ZXJzaW9uKCk7
CkBAIC0xODIsNyArMTg1LDggQEAKIAkJCXNldF9tb2RlKGJzZGFyLCBvcHQpOwogCQkJYnJlYWs7
CiAJCWNhc2UgJ0QnOgotCQkJYnNkYXItPm9wdGlvbnMgfD0gQVJfRDsKKwkJCURmbGFnID0gMTsK
KwkJCVVmbGFnID0gMDsKIAkJCWJyZWFrOwogCQljYXNlICdmJzoKIAkJY2FzZSAnVCc6CkBAIC0y
MjIsNyArMjI2LDggQEAKIAkJCXNldF9tb2RlKGJzZGFyLCBvcHQpOwogCQkJYnJlYWs7CiAJCWNh
c2UgJ1UnOgotCQkJYnNkYXItPm9wdGlvbnMgJj0gfkFSX0Q7CisJCQlVZmxhZyA9IDE7CisJCQlE
ZmxhZyA9IDA7CiAJCQlicmVhazsKIAkJY2FzZSAndSc6CiAJCQlic2Rhci0+b3B0aW9ucyB8PSBB
Ul9VOwpAQCAtMjc1LDE2ICsyODAsMjIgQEAKIAkJYXJndisrOwogCX0KIAorCS8qIFNldCBkZXRl
cm1pbnN0aWMgbW9kZSBmb3IgLUQsIGFuZCBieSBkZWZhdWx0IHdpdGhvdXQgLVUuICovCisJaWYg
KERmbGFnIHx8IChVZmxhZyA9PSAwICYmIChic2Rhci0+bW9kZSA9PSAncScgfHwgYnNkYXItPm1v
ZGUgPT0gJ3InKSkpCisJCWJzZGFyLT5vcHRpb25zIHw9IEFSX0Q7CisKIAlpZiAoYnNkYXItPm9w
dGlvbnMgJiBBUl9BKQogCQlvbmx5X21vZGUoYnNkYXIsICItYSIsICJtcXIiKTsKIAlpZiAoYnNk
YXItPm9wdGlvbnMgJiBBUl9CKQogCQlvbmx5X21vZGUoYnNkYXIsICItYiIsICJtcXIiKTsKIAlp
ZiAoYnNkYXItPm9wdGlvbnMgJiBBUl9DKQogCQlvbmx5X21vZGUoYnNkYXIsICItYyIsICJxciIp
OwogCWlmIChic2Rhci0+b3B0aW9ucyAmIEFSX0NDKQogCQlvbmx5X21vZGUoYnNkYXIsICItQyIs
ICJ4Iik7Ci0JaWYgKGJzZGFyLT5vcHRpb25zICYgQVJfRCkKKwlpZiAoRGZsYWcpCiAJCW9ubHlf
bW9kZShic2RhciwgIi1EIiwgInFyIik7CisJaWYgKFVmbGFnKQorCQlvbmx5X21vZGUoYnNkYXIs
ICItVSIsICJxciIpOwogCWlmIChic2Rhci0+b3B0aW9ucyAmIEFSX08pCiAJCW9ubHlfbW9kZShi
c2RhciwgIi1vIiwgIngiKTsKIAlpZiAoYnNkYXItPm9wdGlvbnMgJiBBUl9TUykKCg==


--b1_bd48a8bb23acfa48e2533338ce90c80a--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?differential-rev-PHID-DREV-p6eaneh7blvpd5hxa2t2-req>