From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id CF1377F86 for ; Fri, 26 Jun 2015 12:17:10 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id ADB69304048 for ; Fri, 26 Jun 2015 10:17:10 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id zDQWtsOmkwLLUGyr (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Fri, 26 Jun 2015 10:17:09 -0700 (PDT) Received: from int-mx14.intmail.prod.int.phx2.redhat.com (int-mx14.intmail.prod.int.phx2.redhat.com [10.5.11.27]) by mx1.redhat.com (Postfix) with ESMTPS id C9ACF428933 for ; Fri, 26 Jun 2015 17:17:08 +0000 (UTC) Date: Fri, 26 Jun 2015 13:17:06 -0400 From: Brian Foster Subject: Re: [PATCH 09/17] mkfs: use getnum_checked for all ranged parameters Message-ID: <20150626171706.GE40750@bfoster.bfoster> References: <1434711726-13092-1-git-send-email-jtulak@redhat.com> <1434711726-13092-10-git-send-email-jtulak@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <1434711726-13092-10-git-send-email-jtulak@redhat.com> List-Id: XFS Filesystem from SGI List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xfs-bounces@oss.sgi.com Sender: xfs-bounces@oss.sgi.com To: Jan =?utf-8?B?xaR1bMOhaw==?= Cc: Dave Chinner , xfs@oss.sgi.com T24gRnJpLCBKdW4gMTksIDIwMTUgYXQgMDE6MDE6NThQTSArMDIwMCwgSmFuIMWkdWzDoWsgd3Jv dGU6Cj4gRnJvbTogRGF2ZSBDaGlubmVyIDxkY2hpbm5lckByZWRoYXQuY29tPgo+IAo+IE5vdyB0 aGF0IGdldG51bV9jaGVja2VkIGNhbiBoYW5kbGUgbWluL21heCBjaGVja2luZywgdXNlIHRoaXMg Zm9yCj4gYWxsIHBhcmFtZXRlcnMgdGhhdCB0YWtlIHN0cmFpZ2h0IG51bWJlcnMgYW5kIGRvbid0 IHJlcXVpcmUgdW5pdAo+IGNvbnZlcnNpb25zLgo+IAo+IFNpZ25lZC1vZmYtYnk6IERhdmUgQ2hp bm5lciA8ZGNoaW5uZXJAcmVkaGF0LmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBKYW4gxaR1bMOhayA8 anR1bGFrQHJlZGhhdC5jb20+Cj4gLS0tCgpSZXZpZXdlZC1ieTogQnJpYW4gRm9zdGVyIDxiZm9z dGVyQHJlZGhhdC5jb20+Cgo+ICBpbmNsdWRlL3hmc19ta2ZzLmggfCAgIDUgKy0KPiAgbWtmcy94 ZnNfbWtmcy5jICAgIHwgMTUyICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCj4gIDIgZmlsZXMgY2hhbmdlZCwgODEgaW5zZXJ0aW9ucygrKSwgNzYg ZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUveGZzX21rZnMuaCBiL2luY2x1 ZGUveGZzX21rZnMuaAo+IGluZGV4IDk5NmI2OTAuLmY1NjM5YjAgMTAwNjQ0Cj4gLS0tIGEvaW5j bHVkZS94ZnNfbWtmcy5oCj4gKysrIGIvaW5jbHVkZS94ZnNfbWtmcy5oCj4gQEAgLTQyLDggKzQy LDkgQEAKPiAgCj4gICNkZWZpbmUgWEZTX0FHX0JZVEVTKGJibG9nKQkoKGxvbmcgbG9uZylCQlNJ WkUgPDwgKGJibG9nKSkKPiAgI2RlZmluZQlYRlNfQUdfTUlOX0JZVEVTCSgoWEZTX0FHX0JZVEVT KDE1KSkpCS8qIDE2IE1CICovCj4gLSNkZWZpbmUgWEZTX0FHX01JTl9CTE9DS1MoYmxvZykJKChY RlNfQUdfQllURVMoMTUpKSA+PiAoYmxvZykpCj4gLSNkZWZpbmUgWEZTX0FHX01BWF9CTE9DS1Mo YmxvZykJKChYRlNfQUdfQllURVMoMzEpIC0gMSkgPj4gKGJsb2cpKQo+ICsjZGVmaW5lCVhGU19B R19NQVhfQllURVMJKChYRlNfQUdfQllURVMoMzEpKSkJLyogMSBUQiAqLwo+ICsjZGVmaW5lIFhG U19BR19NSU5fQkxPQ0tTKGJsb2cpCShYRlNfQUdfTUlOX0JZVEVTID4+IChibG9nKSkKPiArI2Rl ZmluZSBYRlNfQUdfTUFYX0JMT0NLUyhibG9nKQkoKFhGU19BR19NQVhfQllURVMgLSAxKSA+PiAo YmxvZykpCj4gIAo+ICAjZGVmaW5lIFhGU19NQVhfQUdOVU1CRVIJKCh4ZnNfYWdudW1iZXJfdCko TlVMTEFHTlVNQkVSIC0gMSkpCj4gIAo+IGRpZmYgLS1naXQgYS9ta2ZzL3hmc19ta2ZzLmMgYi9t a2ZzL3hmc19ta2ZzLmMKPiBpbmRleCAzODAzNzc5Li4zMzJjNDkxIDEwMDY0NAo+IC0tLSBhL21r ZnMveGZzX21rZnMuYwo+ICsrKyBiL21rZnMveGZzX21rZnMuYwo+IEBAIC0xMjUsNiArMTI1LDgg QEAgY29uc3Qgc3RydWN0IG9wdF9wYXJhbXMgZG9wdHMgPSB7Cj4gIAl9LAo+ICAJLnN1Ym9wdF9w YXJhbXMgPSB7Cj4gIAkJeyAuaW5kZXggPSBEX0FHQ09VTlQsCj4gKwkJICAubWludmFsID0gMSwK PiArCQkgIC5tYXh2YWwgPSBYRlNfTUFYX0FHTlVNQkVSLAo+ICAJCSAgLmRlZmF1bHR2YWwgPSBT VUJPUFRfTkVFRFNfVkFMLAo+ICAJCX0sCj4gIAkJeyAuaW5kZXggPSBEX0ZJTEUsCj4gQEAgLTEz OSwxOCArMTQxLDI2IEBAIGNvbnN0IHN0cnVjdCBvcHRfcGFyYW1zIGRvcHRzID0gewo+ICAJCSAg LmRlZmF1bHR2YWwgPSBTVUJPUFRfTkVFRFNfVkFMLAo+ICAJCX0sCj4gIAkJeyAuaW5kZXggPSBE X1NVTklULAo+ICsJCSAgLm1pbnZhbCA9IDAsCj4gKwkJICAubWF4dmFsID0gVUlOVF9NQVgsCj4g IAkJICAuZGVmYXVsdHZhbCA9IFNVQk9QVF9ORUVEU19WQUwsCj4gIAkJfSwKPiAgCQl7IC5pbmRl eCA9IERfU1dJRFRILAo+ICsJCSAgLm1pbnZhbCA9IDAsCj4gKwkJICAubWF4dmFsID0gVUlOVF9N QVgsCj4gIAkJICAuZGVmYXVsdHZhbCA9IFNVQk9QVF9ORUVEU19WQUwsCj4gIAkJfSwKPiAgCQl7 IC5pbmRleCA9IERfQUdTSVpFLAo+ICsJCSAgLm1pbnZhbCA9IFhGU19BR19NSU5fQllURVMsCj4g KwkJICAubWF4dmFsID0gWEZTX0FHX01BWF9CWVRFUywKPiAgCQkgIC5kZWZhdWx0dmFsID0gU1VC T1BUX05FRURTX1ZBTCwKPiAgCQl9LAo+ICAJCXsgLmluZGV4ID0gRF9TVSwKPiAgCQkgIC5kZWZh dWx0dmFsID0gU1VCT1BUX05FRURTX1ZBTCwKPiAgCQl9LAo+ICAJCXsgLmluZGV4ID0gRF9TVywK PiArCQkgIC5taW52YWwgPSAwLAo+ICsJCSAgLm1heHZhbCA9IFVJTlRfTUFYLAo+ICAJCSAgLmRl ZmF1bHR2YWwgPSBTVUJPUFRfTkVFRFNfVkFMLAo+ICAJCX0sCj4gIAkJeyAuaW5kZXggPSBEX1NF Q1RMT0csCj4gQEAgLTE2NCwxNSArMTc0LDIzIEBAIGNvbnN0IHN0cnVjdCBvcHRfcGFyYW1zIGRv cHRzID0gewo+ICAJCSAgLmRlZmF1bHR2YWwgPSBTVUJPUFRfTkVFRFNfVkFMLAo+ICAJCX0sCj4g IAkJeyAuaW5kZXggPSBEX05PQUxJR04sCj4gLQkJICAuZGVmYXVsdHZhbCA9IFNVQk9QVF9ORUVE U19WQUwsCj4gKwkJICAubWludmFsID0gMSwKPiArCQkgIC5tYXh2YWwgPSAxLAo+ICsJCSAgLmRl ZmF1bHR2YWwgPSAxLAo+ICAJCX0sCj4gIAkJeyAuaW5kZXggPSBEX1JUSU5IRVJJVCwKPiAtCQkg IC5kZWZhdWx0dmFsID0gU1VCT1BUX05FRURTX1ZBTCwKPiArCQkgIC5taW52YWwgPSAxLAo+ICsJ CSAgLm1heHZhbCA9IDEsCj4gKwkJICAuZGVmYXVsdHZhbCA9IDEsCj4gIAkJfSwKPiAgCQl7IC5p bmRleCA9IERfUFJPSklOSEVSSVQsCj4gKwkJICAubWludmFsID0gMCwKPiArCQkgIC5tYXh2YWwg PSBVSU5UX01BWCwKPiAgCQkgIC5kZWZhdWx0dmFsID0gU1VCT1BUX05FRURTX1ZBTCwKPiAgCQl9 LAo+ICAJCXsgLmluZGV4ID0gRF9FWFRTWklOSEVSSVQsCj4gKwkJICAubWludmFsID0gMCwKPiAr CQkgIC5tYXh2YWwgPSBVSU5UX01BWCwKPiAgCQkgIC5kZWZhdWx0dmFsID0gU1VCT1BUX05FRURT X1ZBTCwKPiAgCQl9LAo+ICAJfSwKPiBAQCAtMjEyLDE1ICsyMzAsMjMgQEAgY29uc3Qgc3RydWN0 IG9wdF9wYXJhbXMgaW9wdHMgPSB7Cj4gIAkJICAuZGVmYXVsdHZhbCA9IFNVQk9QVF9ORUVEU19W QUwsCj4gIAkJfSwKPiAgCQl7IC5pbmRleCA9IElfTUFYUENULAo+ICsJCSAgLm1pbnZhbCA9IDAs Cj4gKwkJICAubWF4dmFsID0gMTAwLAo+ICAJCSAgLmRlZmF1bHR2YWwgPSBTVUJPUFRfTkVFRFNf VkFMLAo+ICAJCX0sCj4gIAkJeyAuaW5kZXggPSBJX1BFUkJMT0NLLAo+ICsJCSAgLm1pbnZhbCA9 IFhGU19NSU5fSU5PREVfUEVSQkxPQ0ssCj4gKwkJICAubWF4dmFsID0gWEZTX01BWF9CTE9DS1NJ WkUgLyBYRlNfRElOT0RFX01JTl9TSVpFLAo+ICAJCSAgLmRlZmF1bHR2YWwgPSBTVUJPUFRfTkVF RFNfVkFMLAo+ICAJCX0sCj4gIAkJeyAuaW5kZXggPSBJX1NJWkUsCj4gKwkJICAubWludmFsID0g WEZTX0RJTk9ERV9NSU5fU0laRSwKPiArCQkgIC5tYXh2YWwgPSBYRlNfRElOT0RFX01BWF9TSVpF LAo+ICAJCSAgLmRlZmF1bHR2YWwgPSBTVUJPUFRfTkVFRFNfVkFMLAo+ICAJCX0sCj4gIAkJeyAu aW5kZXggPSBJX0FUVFIsCj4gKwkJICAubWludmFsID0gMCwKPiArCQkgIC5tYXh2YWwgPSAyLAo+ ICAJCSAgLmRlZmF1bHR2YWwgPSBTVUJPUFRfTkVFRFNfVkFMLAo+ICAJCX0sCj4gIAkJeyAuaW5k ZXggPSBJX1BST0pJRDMyQklULAo+IEBAIC0yNjIsNiArMjg4LDggQEAgY29uc3Qgc3RydWN0IG9w dF9wYXJhbXMgbG9wdHMgPSB7Cj4gIAl9LAo+ICAJLnN1Ym9wdF9wYXJhbXMgPSB7Cj4gIAkJeyAu aW5kZXggPSBMX0FHTlVNLAo+ICsJCSAgLm1pbnZhbCA9IDAsCj4gKwkJICAubWF4dmFsID0gVUlO VF9NQVgsCj4gIAkJICAuZGVmYXVsdHZhbCA9IFNVQk9QVF9ORUVEU19WQUwsCj4gIAkJfSwKPiAg CQl7IC5pbmRleCA9IExfSU5URVJOQUwsCj4gQEAgLTI3Myw5ICszMDEsMTMgQEAgY29uc3Qgc3Ry dWN0IG9wdF9wYXJhbXMgbG9wdHMgPSB7Cj4gIAkJICAuZGVmYXVsdHZhbCA9IFNVQk9QVF9ORUVE U19WQUwsCj4gIAkJfSwKPiAgCQl7IC5pbmRleCA9IExfVkVSU0lPTiwKPiArCQkgIC5taW52YWwg PSAxLAo+ICsJCSAgLm1heHZhbCA9IDIsCj4gIAkJICAuZGVmYXVsdHZhbCA9IFNVQk9QVF9ORUVE U19WQUwsCj4gIAkJfSwKPiAgCQl7IC5pbmRleCA9IExfU1VOSVQsCj4gKwkJICAubWludmFsID0g QlRPQkIoWExPR19NSU5fUkVDT1JEX0JTSVpFKSwKPiArCQkgIC5tYXh2YWwgPSBCVE9CQihYTE9H X01BWF9SRUNPUkRfQlNJWkUpLAo+ICAJCSAgLmRlZmF1bHR2YWwgPSBTVUJPUFRfTkVFRFNfVkFM LAo+ICAJCX0sCj4gIAkJeyAuaW5kZXggPSBMX1NVLAo+IEBAIC0zMzUsNiArMzY3LDggQEAgY29u c3Qgc3RydWN0IG9wdF9wYXJhbXMgbm9wdHMgPSB7Cj4gIAkJICAuZGVmYXVsdHZhbCA9IFNVQk9Q VF9ORUVEU19WQUwsCj4gIAkJfSwKPiAgCQl7IC5pbmRleCA9IE5fVkVSU0lPTiwKPiArCQkgIC5t aW52YWwgPSAyLAo+ICsJCSAgLm1heHZhbCA9IDIsCj4gIAkJICAuZGVmYXVsdHZhbCA9IFNVQk9Q VF9ORUVEU19WQUwsCj4gIAkJfSwKPiAgCQl7IC5pbmRleCA9IE5fRlRZUEUsCj4gQEAgLTE1MTIs MTMgKzE1NDYsMTEgQEAgbWFpbigKPiAgCQkJCXN3aXRjaCAoZ2V0c3Vib3B0KCZwLCAoY29uc3Rw cClzdWJvcHRzLAo+ICAJCQkJCQkgICZ2YWx1ZSkpIHsKPiAgCQkJCWNhc2UgRF9BR0NPVU5UOgo+ IC0JCQkJCWlmICghdmFsdWUgfHwgKnZhbHVlID09ICdcMCcpCj4gLQkJCQkJCXJlcXZhbCgnZCcs IHN1Ym9wdHMsIERfQUdDT1VOVCk7Cj4gIAkJCQkJaWYgKGRhZmxhZykKPiAgCQkJCQkJcmVzcGVj KCdkJywgc3Vib3B0cywgRF9BR0NPVU5UKTsKPiAtCQkJCQlhZ2NvdW50ID0gZ2V0bnVtKHZhbHVl LCAwLCAwLCBmYWxzZSk7Cj4gLQkJCQkJaWYgKChfX2ludDY0X3QpYWdjb3VudCA8PSAwKQo+IC0J CQkJCQlpbGxlZ2FsKHZhbHVlLCAiZCBhZ2NvdW50Iik7Cj4gKwo+ICsJCQkJCWFnY291bnQgPSBn ZXRudW1fY2hlY2tlZCh2YWx1ZSwgJmRvcHRzLAo+ICsJCQkJCQkJCSBEX0FHQ09VTlQpOwo+ICAJ CQkJCWRhZmxhZyA9IDE7Cj4gIAkJCQkJYnJlYWs7Cj4gIAkJCQljYXNlIERfQUdTSVpFOgo+IEBA IC0xNTUzLDI4ICsxNTg1LDIyIEBAIG1haW4oCj4gIAkJCQkJZHNpemUgPSB2YWx1ZTsKPiAgCQkJ CQlicmVhazsKPiAgCQkJCWNhc2UgRF9TVU5JVDoKPiAtCQkJCQlpZiAoIXZhbHVlIHx8ICp2YWx1 ZSA9PSAnXDAnKQo+IC0JCQkJCQlyZXF2YWwoJ2QnLCBzdWJvcHRzLCBEX1NVTklUKTsKPiAgCQkJ CQlpZiAoZHN1bml0KQo+ICAJCQkJCQlyZXNwZWMoJ2QnLCBzdWJvcHRzLCBEX1NVTklUKTsKPiAg CQkJCQlpZiAobm9kc2ZsYWcpCj4gIAkJCQkJCWNvbmZsaWN0KCdkJywgc3Vib3B0cywgRF9OT0FM SUdOLAo+ICAJCQkJCQkJIERfU1VOSVQpOwo+IC0JCQkJCWRzdW5pdCA9IGdldG51bSh2YWx1ZSwg MCwgMCwgZmFsc2UpOwo+IC0JCQkJCWlmIChkc3VuaXQgPCAwKQo+IC0JCQkJCQlpbGxlZ2FsKHZh bHVlLCAiZCBzdW5pdCIpOwo+ICsJCQkJCWRzdW5pdCA9IGdldG51bV9jaGVja2VkKHZhbHVlLCAm ZG9wdHMsCj4gKwkJCQkJCQkJIERfU1VOSVQpOwo+ICAJCQkJCWJyZWFrOwo+ICAJCQkJY2FzZSBE X1NXSURUSDoKPiAtCQkJCQlpZiAoIXZhbHVlIHx8ICp2YWx1ZSA9PSAnXDAnKQo+IC0JCQkJCQly ZXF2YWwoJ2QnLCBzdWJvcHRzLCBEX1NXSURUSCk7Cj4gIAkJCQkJaWYgKGRzd2lkdGgpCj4gIAkJ CQkJCXJlc3BlYygnZCcsIHN1Ym9wdHMsIERfU1dJRFRIKTsKPiAgCQkJCQlpZiAobm9kc2ZsYWcp Cj4gIAkJCQkJCWNvbmZsaWN0KCdkJywgc3Vib3B0cywgRF9OT0FMSUdOLAo+ICAJCQkJCQkJIERf U1dJRFRIKTsKPiAtCQkJCQlkc3dpZHRoID0gZ2V0bnVtKHZhbHVlLCAwLCAwLCBmYWxzZSk7Cj4g LQkJCQkJaWYgKGRzd2lkdGggPCAwKQo+IC0JCQkJCQlpbGxlZ2FsKHZhbHVlLCAiZCBzd2lkdGgi KTsKPiArCQkJCQlkc3dpZHRoID0gZ2V0bnVtX2NoZWNrZWQodmFsdWUsICZkb3B0cywKPiArCQkJ CQkJCQkgRF9TV0lEVEgpOwo+ICAJCQkJCWJyZWFrOwo+ICAJCQkJY2FzZSBEX1NVOgo+ICAJCQkJ CWlmICghdmFsdWUgfHwgKnZhbHVlID09ICdcMCcpCj4gQEAgLTE1OTAsMTYgKzE2MTYsMTMgQEAg bWFpbigKPiAgCQkJCQkJaWxsZWdhbCh2YWx1ZSwgImQgc3UiKTsKPiAgCQkJCQlicmVhazsKPiAg CQkJCWNhc2UgRF9TVzoKPiAtCQkJCQlpZiAoIXZhbHVlIHx8ICp2YWx1ZSA9PSAnXDAnKQo+IC0J CQkJCQlyZXF2YWwoJ2QnLCBzdWJvcHRzLCBEX1NXKTsKPiAgCQkJCQlpZiAoZHN3KQo+ICAJCQkJ CQlyZXNwZWMoJ2QnLCBzdWJvcHRzLCBEX1NXKTsKPiAgCQkJCQlpZiAobm9kc2ZsYWcpCj4gIAkJ CQkJCWNvbmZsaWN0KCdkJywgc3Vib3B0cywgRF9OT0FMSUdOLAo+ICAJCQkJCQkJIERfU1cpOwo+ IC0JCQkJCWRzdyA9IGdldG51bSh2YWx1ZSwgMCwgMCwgZmFsc2UpOwo+IC0JCQkJCWlmIChkc3cg PCAwKQo+IC0JCQkJCQlpbGxlZ2FsKHZhbHVlLCAiZCBzdyIpOwo+ICsJCQkJCWRzdyA9IGdldG51 bV9jaGVja2VkKHZhbHVlLCAmZG9wdHMsCj4gKwkJCQkJCQkJIERfU1cpOwo+ICAJCQkJCWJyZWFr Owo+ICAJCQkJY2FzZSBEX05PQUxJR046Cj4gIAkJCQkJaWYgKGRzdSkKPiBAQCAtMTY0NSwyMSAr MTY2OCwyMiBAQCBtYWluKAo+ICAJCQkJCXNzZmxhZyA9IDE7Cj4gIAkJCQkJYnJlYWs7Cj4gIAkJ CQljYXNlIERfUlRJTkhFUklUOgo+IC0JCQkJCWZzeC5mc3hfeGZsYWdzIHw9IFwKPiAtCQkJCQkJ WEZTX0RJRkxBR19SVElOSEVSSVQ7Cj4gKwkJCQkJYyA9IGdldG51bV9jaGVja2VkKHZhbHVlLCAm ZG9wdHMsCj4gKwkJCQkJCQkgICBEX1JUSU5IRVJJVCk7Cj4gKwkJCQkJaWYgKGMpCj4gKwkJCQkJ CWZzeC5mc3hfeGZsYWdzIHw9Cj4gKwkJCQkJCQlYRlNfRElGTEFHX1JUSU5IRVJJVDsKPiAgCQkJ CQlicmVhazsKPiAgCQkJCWNhc2UgRF9QUk9KSU5IRVJJVDoKPiAtCQkJCQlpZiAoIXZhbHVlIHx8 ICp2YWx1ZSA9PSAnXDAnKQo+IC0JCQkJCQlyZXF2YWwoJ2QnLCBzdWJvcHRzLCBEX1BST0pJTkhF UklUKTsKPiAtCQkJCQlmc3guZnN4X3Byb2ppZCA9IGF0b2kodmFsdWUpOwo+IC0JCQkJCWZzeC5m c3hfeGZsYWdzIHw9IFwKPiArCQkJCQlmc3guZnN4X3Byb2ppZCA9IGdldG51bV9jaGVja2VkKHZh bHVlLAo+ICsJCQkJCQkJJmRvcHRzLCBEX1BST0pJTkhFUklUKTsKPiArCQkJCQlmc3guZnN4X3hm bGFncyB8PQo+ICAJCQkJCQlYRlNfRElGTEFHX1BST0pJTkhFUklUOwo+ICAJCQkJCWJyZWFrOwo+ ICAJCQkJY2FzZSBEX0VYVFNaSU5IRVJJVDoKPiAtCQkJCQlpZiAoIXZhbHVlIHx8ICp2YWx1ZSA9 PSAnXDAnKQo+IC0JCQkJCQlyZXF2YWwoJ2QnLCBzdWJvcHRzLCBEX0VYVFNaSU5IRVJJVCk7Cj4g LQkJCQkJZnN4LmZzeF9leHRzaXplID0gYXRvaSh2YWx1ZSk7Cj4gLQkJCQkJZnN4LmZzeF94Zmxh Z3MgfD0gXAo+ICsJCQkJCWZzeC5mc3hfZXh0c2l6ZSA9IGdldG51bV9jaGVja2VkKHZhbHVlLAo+ ICsJCQkJCQkJJmRvcHRzLCBEX0VYVFNaSU5IRVJJVCk7Cj4gKwkJCQkJZnN4LmZzeF94ZmxhZ3Mg fD0KPiAgCQkJCQkJWEZTX0RJRkxBR19FWFRTWklOSEVSSVQ7Cj4gIAkJCQkJYnJlYWs7Cj4gIAkJ CQlkZWZhdWx0Ogo+IEBAIC0xNjk0LDE4ICsxNzE4LDEzIEBAIG1haW4oCj4gIAkJCQkJaWxmbGFn ID0gMTsKPiAgCQkJCQlicmVhazsKPiAgCQkJCWNhc2UgSV9NQVhQQ1Q6Cj4gLQkJCQkJaWYgKCF2 YWx1ZSB8fCAqdmFsdWUgPT0gJ1wwJykKPiAtCQkJCQkJcmVxdmFsKCdpJywgc3Vib3B0cywgSV9N QVhQQ1QpOwo+ICAJCQkJCWlmIChpbWZsYWcpCj4gIAkJCQkJCXJlc3BlYygnaScsIHN1Ym9wdHMs IElfTUFYUENUKTsKPiAtCQkJCQlpbWF4cGN0ID0gZ2V0bnVtKHZhbHVlLCAwLCAwLCBmYWxzZSk7 Cj4gLQkJCQkJaWYgKGltYXhwY3QgPCAwIHx8IGltYXhwY3QgPiAxMDApCj4gLQkJCQkJCWlsbGVn YWwodmFsdWUsICJpIG1heHBjdCIpOwo+ICsJCQkJCWltYXhwY3QgPSBnZXRudW1fY2hlY2tlZCh2 YWx1ZSwgJmlvcHRzLAo+ICsJCQkJCQkJCSBJX01BWFBDVCk7Cj4gIAkJCQkJaW1mbGFnID0gMTsK PiAgCQkJCQlicmVhazsKPiAgCQkJCWNhc2UgSV9QRVJCTE9DSzoKPiAtCQkJCQlpZiAoIXZhbHVl IHx8ICp2YWx1ZSA9PSAnXDAnKQo+IC0JCQkJCQlyZXF2YWwoJ2knLCBzdWJvcHRzLCBJX1BFUkJM T0NLKTsKPiAgCQkJCQlpZiAoaWxmbGFnKQo+ICAJCQkJCQljb25mbGljdCgnaScsIHN1Ym9wdHMs IElfTE9HLAo+ICAJCQkJCQkJIElfUEVSQkxPQ0spOwo+IEBAIC0xNzE0LDE2ICsxNzMzLDEzIEBA IG1haW4oCj4gIAkJCQkJaWYgKGlzZmxhZykKPiAgCQkJCQkJY29uZmxpY3QoJ2knLCBzdWJvcHRz LCBJX1NJWkUsCj4gIAkJCQkJCQkgSV9QRVJCTE9DSyk7Cj4gLQkJCQkJaW5vcGJsb2NrID0gZ2V0 bnVtKHZhbHVlLCAwLCAwLCBmYWxzZSk7Cj4gLQkJCQkJaWYgKGlub3BibG9jayA8Cj4gLQkJCQkJ CVhGU19NSU5fSU5PREVfUEVSQkxPQ0sgfHwKPiAtCQkJCQkgICAgIWlzcG93Mihpbm9wYmxvY2sp KQo+ICsJCQkJCWlub3BibG9jayA9IGdldG51bV9jaGVja2VkKHZhbHVlLCAmaW9wdHMsCj4gKwkJ CQkJCQkJICAgSV9QRVJCTE9DSyk7Cj4gKwkJCQkJaWYgKCFpc3BvdzIoaW5vcGJsb2NrKSkKPiAg CQkJCQkJaWxsZWdhbCh2YWx1ZSwgImkgcGVyYmxvY2siKTsKPiAgCQkJCQlpcGZsYWcgPSAxOwo+ ICAJCQkJCWJyZWFrOwo+ICAJCQkJY2FzZSBJX1NJWkU6Cj4gLQkJCQkJaWYgKCF2YWx1ZSB8fCAq dmFsdWUgPT0gJ1wwJykKPiAtCQkJCQkJcmVxdmFsKCdpJywgc3Vib3B0cywgSV9TSVpFKTsKPiAg CQkJCQlpZiAoaWxmbGFnKQo+ICAJCQkJCQljb25mbGljdCgnaScsIHN1Ym9wdHMsIElfTE9HLAo+ ICAJCQkJCQkJIElfU0laRSk7Cj4gQEAgLTE3MzIsMTkgKzE3NDgsMTcgQEAgbWFpbigKPiAgCQkJ CQkJCSBJX1NJWkUpOwo+ICAJCQkJCWlmIChpc2ZsYWcpCj4gIAkJCQkJCXJlc3BlYygnaScsIHN1 Ym9wdHMsIElfU0laRSk7Cj4gLQkJCQkJaXNpemUgPSBnZXRudW0odmFsdWUsIDAsIDAsIHRydWUp Owo+IC0JCQkJCWlmIChpc2l6ZSA8PSAwIHx8ICFpc3BvdzIoaXNpemUpKQo+ICsJCQkJCWlzaXpl ID0gZ2V0bnVtX2NoZWNrZWQodmFsdWUsICZpb3B0cywKPiArCQkJCQkJCSAgICAgICBJX1NJWkUp Owo+ICsJCQkJCWlmICghaXNwb3cyKGlzaXplKSkKPiAgCQkJCQkJaWxsZWdhbCh2YWx1ZSwgImkg c2l6ZSIpOwo+ICAJCQkJCWlub2RlbG9nID0gbGlieGZzX2hpZ2hiaXQzMihpc2l6ZSk7Cj4gIAkJ CQkJaXNmbGFnID0gMTsKPiAgCQkJCQlicmVhazsKPiAgCQkJCWNhc2UgSV9BVFRSOgo+IC0JCQkJ CWlmICghdmFsdWUgfHwgKnZhbHVlID09ICdcMCcpCj4gLQkJCQkJCXJlcXZhbCgnaScsIHN1Ym9w dHMsIElfQVRUUik7Cj4gLQkJCQkJYyA9IGdldG51bSh2YWx1ZSwgMCwgMCwgZmFsc2UpOwo+IC0J CQkJCWlmIChjIDwgMCB8fCBjID4gMikKPiAtCQkJCQkJaWxsZWdhbCh2YWx1ZSwgImkgYXR0ciIp Owo+IC0JCQkJCXNiX2ZlYXQuYXR0cl92ZXJzaW9uID0gYzsKPiArCQkJCQlzYl9mZWF0LmF0dHJf dmVyc2lvbiA9Cj4gKwkJCQkJCWdldG51bV9jaGVja2VkKHZhbHVlLCAmaW9wdHMsCj4gKwkJCQkJ CQkgICAgICAgSV9BVFRSKTsKPiAgCQkJCQlicmVhazsKPiAgCQkJCWNhc2UgSV9QUk9KSUQzMkJJ VDoKPiAgCQkJCQlzYl9mZWF0LnByb2ppZDE2Yml0ID0KPiBAQCAtMTc3MiwxNSArMTc4NiwxMiBA QCBtYWluKAo+ICAJCQkJc3dpdGNoIChnZXRzdWJvcHQoJnAsIChjb25zdHBwKXN1Ym9wdHMsCj4g IAkJCQkJCSAgJnZhbHVlKSkgewo+ICAJCQkJY2FzZSBMX0FHTlVNOgo+IC0JCQkJCWlmICghdmFs dWUgfHwgKnZhbHVlID09ICdcMCcpCj4gLQkJCQkJCXJlcXZhbCgnbCcsIHN1Ym9wdHMsIExfQUdO VU0pOwo+ICAJCQkJCWlmIChsYWZsYWcpCj4gIAkJCQkJCXJlc3BlYygnbCcsIHN1Ym9wdHMsIExf QUdOVU0pOwo+ICAJCQkJCWlmIChsZGZsYWcpCj4gIAkJCQkJCWNvbmZsaWN0KCdsJywgc3Vib3B0 cywgTF9BR05VTSwgTF9ERVYpOwo+IC0JCQkJCWxvZ2Fnbm8gPSBnZXRudW0odmFsdWUsIDAsIDAs IGZhbHNlKTsKPiAtCQkJCQlpZiAobG9nYWdubyA8IDApCj4gLQkJCQkJCWlsbGVnYWwodmFsdWUs ICJsIGFnbm8iKTsKPiArCQkJCQlsb2dhZ25vID0gZ2V0bnVtX2NoZWNrZWQodmFsdWUsICZsb3B0 cywKPiArCQkJCQkJCQkgTF9BR05VTSk7Cj4gIAkJCQkJbGFmbGFnID0gMTsKPiAgCQkJCQlicmVh azsKPiAgCQkJCWNhc2UgTF9GSUxFOgo+IEBAIC0xODE3LDEzICsxODI4LDEwIEBAIG1haW4oCj4g IAkJCQkJbHN1ZmxhZyA9IDE7Cj4gIAkJCQkJYnJlYWs7Cj4gIAkJCQljYXNlIExfU1VOSVQ6Cj4g LQkJCQkJaWYgKCF2YWx1ZSB8fCAqdmFsdWUgPT0gJ1wwJykKPiAtCQkJCQkJcmVxdmFsKCdsJywg c3Vib3B0cywgTF9TVU5JVCk7Cj4gIAkJCQkJaWYgKGxzdW5pdCkKPiAgCQkJCQkJcmVzcGVjKCds Jywgc3Vib3B0cywgTF9TVU5JVCk7Cj4gLQkJCQkJbHN1bml0ID0gZ2V0bnVtKHZhbHVlLCAwLCAw LCBmYWxzZSk7Cj4gLQkJCQkJaWYgKGxzdW5pdCA8IDApCj4gLQkJCQkJCWlsbGVnYWwodmFsdWUs ICJsIHN1bml0Iik7Cj4gKwkJCQkJbHN1bml0ID0gZ2V0bnVtX2NoZWNrZWQodmFsdWUsICZsb3B0 cywKPiArCQkJCQkJCQkgTF9TVU5JVCk7Cj4gIAkJCQkJbHN1bml0ZmxhZyA9IDE7Cj4gIAkJCQkJ YnJlYWs7Cj4gIAkJCQljYXNlIExfTkFNRToKPiBAQCAtMTg0MiwxNCArMTg1MCwxMSBAQCBtYWlu KAo+ICAJCQkJCXhpLmxvZ25hbWUgPSB2YWx1ZTsKPiAgCQkJCQlicmVhazsKPiAgCQkJCWNhc2Ug TF9WRVJTSU9OOgo+IC0JCQkJCWlmICghdmFsdWUgfHwgKnZhbHVlID09ICdcMCcpCj4gLQkJCQkJ CXJlcXZhbCgnbCcsIHN1Ym9wdHMsIExfVkVSU0lPTik7Cj4gIAkJCQkJaWYgKGx2ZmxhZykKPiAg CQkJCQkJcmVzcGVjKCdsJywgc3Vib3B0cywgTF9WRVJTSU9OKTsKPiAtCQkJCQljID0gZ2V0bnVt KHZhbHVlLCAwLCAwLCBmYWxzZSk7Cj4gLQkJCQkJaWYgKGMgPCAxIHx8IGMgPiAyKQo+IC0JCQkJ CQlpbGxlZ2FsKHZhbHVlLCAibCB2ZXJzaW9uIik7Cj4gLQkJCQkJc2JfZmVhdC5sb2dfdmVyc2lv biA9IGM7Cj4gKwkJCQkJc2JfZmVhdC5sb2dfdmVyc2lvbiA9Cj4gKwkJCQkJCWdldG51bV9jaGVj a2VkKHZhbHVlLCAmbG9wdHMsCj4gKwkJCQkJCQkgICAgICAgTF9WRVJTSU9OKTsKPiAgCQkJCQls dmZsYWcgPSAxOwo+ICAJCQkJCWJyZWFrOwo+ICAJCQkJY2FzZSBMX1NJWkU6Cj4gQEAgLTE5ODEs MTEgKzE5ODYsMTAgQEAgXygiY2Fubm90IHNwZWNpZnkgYm90aCAtbSBjcmM9MSBhbmQgLW4gZnR5 cGVcbiIpKTsKPiAgCQkJCQkJLyogQVNDSUkgQ0kgbW9kZSAqLwo+ICAJCQkJCQlzYl9mZWF0Lm5j aSA9IHRydWU7Cj4gIAkJCQkJfSBlbHNlIHsKPiAtCQkJCQkJYyA9IGdldG51bSh2YWx1ZSwgMCwg MCwgZmFsc2UpOwo+IC0JCQkJCQlpZiAoYyAhPSAyKQo+IC0JCQkJCQkJaWxsZWdhbCh2YWx1ZSwK PiAtCQkJCQkJCQkibiB2ZXJzaW9uIik7Cj4gLQkJCQkJCXNiX2ZlYXQuZGlyX3ZlcnNpb24gPSBj Owo+ICsJCQkJCQlzYl9mZWF0LmRpcl92ZXJzaW9uID0KPiArCQkJCQkJCWdldG51bV9jaGVja2Vk KHZhbHVlLAo+ICsJCQkJCQkJCSZub3B0cywKPiArCQkJCQkJCQlOX1ZFUlNJT04pOwo+ICAJCQkJ CX0KPiAgCQkJCQludmZsYWcgPSAxOwo+ICAJCQkJCWJyZWFrOwo+IC0tIAo+IDIuMS4wCj4gCj4g X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiB4ZnMgbWFp bGluZyBsaXN0Cj4geGZzQG9zcy5zZ2kuY29tCj4gaHR0cDovL29zcy5zZ2kuY29tL21haWxtYW4v bGlzdGluZm8veGZzCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwp4ZnMgbWFpbGluZyBsaXN0Cnhmc0Bvc3Muc2dpLmNvbQpodHRwOi8vb3NzLnNnaS5jb20v bWFpbG1hbi9saXN0aW5mby94ZnMK