Message-Id: <199906031836.SAA75560@out1.ibm.net> From: "Mark E." To: djgpp-workers AT delorie DOT com Date: Thu, 3 Jun 1999 14:38:07 -0400 MIME-Version: 1.0 Content-type: Multipart/Mixed; boundary=Message-Boundary-11428 Subject: Re: enhancements to fcntl.c References: <199906020133 DOT BAA158200 AT out4 DOT ibm DOT net> In-reply-to: X-mailer: Pegasus Mail for Win32 (v3.11) Reply-To: djgpp-workers AT delorie DOT com --Message-Boundary-11428 Content-type: text/plain; charset=US-ASCII Content-transfer-encoding: 7BIT Content-description: Mail message body > > On Tue, 1 Jun 1999, Mark E. wrote: > > > But when the no-inherit bit is set in the SFT, the child > > does not inherit the handle. > > Sorry, I think I misunderstood the meaning of what you've said. Does > the above mean that you tried to poke the bits in the SFT, and managed > to get the handle's inherit properties changed accordingly? > Correct. I've attached an updated version of fcntl.c. I included the 18 handle inheritance limit comment in the CVS fcntl.c Also attached is inherit.c so the F_SETFD feature in the updated fcntl.c can be tested. Remember to link in the custom fcntl so you don't get bogus results. F_SETFL should also work, but I haven't tested it yet. Note that changes to the access mode (O_RDONLY, O_WRONLY, O_RDWR) are ignored to obey the online Unix spec. The limitation may have been derived from the Posix spec, but I don't have a Posix spec to check to be certain. --- Mark Elbrecht, snowball3 AT bigfoot DOT com http://snowball.frogspace.net/ --Message-Boundary-11428 Content-type: text/plain; charset=US-ASCII Content-disposition: inline Content-description: Attachment information. The following section of this message contains a file attachment prepared for transmission using the Internet MIME message format. If you are using Pegasus Mail, or any another MIME-compliant system, you should be able to save it or view it from within your mailer. If you cannot, please ask your system administrator for assistance. ---- File information ----------- File: fcntl.c Date: 3 Jun 1999, 14:23 Size: 7171 bytes. Type: Program-source --Message-Boundary-11428 Content-type: Application/Octet-stream; name="fcntl.c"; type=Program-source Content-disposition: attachment; filename="fcntl.c" Content-transfer-encoding: BASE64 LyogQ29weXJpZ2h0IChDKSAxOTk5IERKIERlbG9yaWUsIHNlZSBDT1BZSU5HLkRKIGZvciBk ZXRhaWxzICovDQovKiBDb3B5cmlnaHQgKEMpIDE5OTYgREogRGVsb3JpZSwgc2VlIENPUFlJ TkcuREogZm9yIGRldGFpbHMgKi8NCi8qIENvcHlyaWdodCAoQykgMTk5NSBESiBEZWxvcmll LCBzZWUgQ09QWUlORy5ESiBmb3IgZGV0YWlscyAqLw0KI2luY2x1ZGUgPGxpYmMvc3R1YnMu aD4NCiNpbmNsdWRlIDxkcG1pLmg+DQojaW5jbHVkZSA8ZXJybm8uaD4NCiNpbmNsdWRlIDxz dGRhcmcuaD4NCiNpbmNsdWRlIDx1bmlzdGQuaD4NCiNpbmNsdWRlIDxmY250bC5oPg0KI2lu Y2x1ZGUgPHN5cy9mc2V4dC5oPg0KI2luY2x1ZGUgPHN5cy9tb3ZlZGF0YS5oPg0KI2luY2x1 ZGUgPHN5cy9mYXJwdHIuaD4NCiNpbmNsdWRlIDxsaWJjL2Rvc2lvLmg+DQojaW5jbHVkZSA8 Z28zMi5oPg0KDQpzdGF0aWMgbG9uZw0KZ2V0X2Rldl9pbmZvKGludCBmZCkNCnsNCiAgX19k cG1pX3JlZ3MgcmVnczsNCg0KICByZWdzLnguYXggPSAweDQ0MDA7DQogIHJlZ3MueC5ieCA9 IGZkOw0KICBfX2RwbWlfaW50KDB4MjEsICZyZWdzKTsNCiAgaWYgKHJlZ3MueC5mbGFncyAm IDEpDQogIHsNCiAgICBfX2Rvc2Vycl90b19lcnJubyhyZWdzLnguYXgpOw0KICAgIHJldHVy biAtMTsNCiAgfQ0KICByZXR1cm4gcmVncy54LmR4Ow0KfQ0KDQpzdGF0aWMgdW5zaWduZWQg bG9uZyBnZXRfc2Z0X2VudHJ5X3B0cihpbnQgZmQpDQp7DQogIF9fZHBtaV9yZWdzIHJlZ3M7 DQogIHVuc2lnbmVkIGNoYXIgaW5kZXg7DQogIHVuc2lnbmVkIGxvbmcgZXMsIGRpOw0KDQog IC8qIEdldCB0aGUgSkZUIGVudHJ5IGFkZHJlc3MgZm9yIHRoaXMgaGFuZGxlLiAgKi8NCiAg cmVncy54LmF4ID0gMHgxMjIwOw0KICByZWdzLnguYnggPSBmZDsNCiAgX19kcG1pX2ludCgw eDJmLCAmcmVncyk7DQoNCiAgaWYgKHJlZ3MueC5mbGFncyAmIDEpDQogIHsNCiAgICBlcnJu byA9IEVOT1NZUzsNCiAgICByZXR1cm4gMDsNCiAgfQ0KDQogIC8qIEdldCB0aGUgU0ZUIGVu dHJ5IG51bWJlciBmb3IgdGhpcyBoYW5kbGUuICAqLw0KICBlcyA9IHJlZ3MueC5lczsNCiAg ZGkgPSByZWdzLnguZGk7DQogIGluZGV4ID0gX2ZhcnBlZWtiKF9kb3NfZHMsIGVzICogMTYg KyBkaSk7DQoNCiAgLyogTm93IGdldCB0aGUgYWRkcmVzcyBvZiB0aGUgZW50cnkuICAqLw0K ICByZWdzLnguYXggPSAweDEyMTY7DQogIHJlZ3MueC5ieCA9IGluZGV4Ow0KICBfX2RwbWlf aW50ICgweDJmLCAmcmVncyk7DQogIGlmIChyZWdzLnguZmxhZ3MgJiAxKQ0KICB7DQogICAg ZXJybm8gPSBFTk9TWVM7DQogICAgcmV0dXJuIDA7DQogIH0NCg0KICBlcyA9IHJlZ3MueC5l czsNCiAgZGkgPSByZWdzLnguZGk7DQoNCiAgcmV0dXJuIGVzICogMTYgKyBkaTsNCn0NCg0K aW50DQpmY250bChpbnQgZmQsIGludCBjbWQsIC4uLikNCnsNCiAgaW50IHRvZmQsIG9wZW5f bWF4Ow0KICB2YV9saXN0IGFwOw0KICBfX0ZTRVhUX0Z1bmN0aW9uICpmdW5jOw0KICBsb25n IGRldl9pbmZvID0gZ2V0X2Rldl9pbmZvKGZkKTsNCg0KICAvKiBWZXJpZnkgdGhlIGRlc2Ny aXB0b3IgaXMgdmFsaWQgYnkgcmV0cmlldmluZw0KICAgICB0aGUgaGFuZGxlJ3MgZGV2aWNl IGluZm8gd29yZC4gICovDQogIGlmIChkZXZfaW5mbyA8IDApDQogIHsNCiAgICBlcnJubyA9 IEVCQURGOw0KICAgIHJldHVybiAtMTsNCiAgfQ0KDQogIGZ1bmMgPSBfX0ZTRVhUX2dldF9m dW5jdGlvbihmZCk7DQogIGlmIChmdW5jKQ0KICB7DQogICAgaW50IHJ2Ow0KICAgIGlmIChm dW5jKF9fRlNFWFRfZmNudGwsICZydiwgJmZkKSkNCiAgICAgIHJldHVybiBydjsNCiAgfQ0K DQogIHN3aXRjaCAoY21kKQ0KICB7DQogICAgY2FzZSBGX0RVUEZEOg0KICAgIHsNCiAgICAg IHZhX3N0YXJ0KGFwLCBjbWQpOw0KICAgICAgdG9mZCA9IHZhX2FyZyhhcCwgaW50KTsNCiAg ICAgIHZhX2VuZChhcCk7DQoNCiAgICAgIG9wZW5fbWF4ID0gZ2V0ZHRhYmxlc2l6ZSgpOw0K ICAgICAgd2hpbGUgKHRvZmQgPCBvcGVuX21heCkNCiAgICAgIHsNCiAgICAgICAgLyogSWYg dW5hYmxlIHRvIGdldCB0aGUgZGV2aWNlIGluZm8gZm9yIHRoZSBoYW5kbGUsDQogICAgICAg ICAgIHRoZW4gdGhlIGhhbmRsZSBpcyBub3QgYWN0aXZlIGFuZCBpdCBjYW4gYmUgdXNlZC4g ICovDQogICAgICAgIGlmICghZ2V0X2Rldl9pbmZvKHRvZmQpKQ0KICAgICAgICAgIGJyZWFr Ow0KICAgICAgICB0b2ZkKys7DQogICAgICB9DQoNCiAgICAgIGlmICh0b2ZkID49IG9wZW5f bWF4KQ0KICAgICAgew0KICAgICAgICBlcnJubyA9IEVNRklMRTsNCiAgICAgICAgcmV0dXJu IC0xOw0KICAgICAgfQ0KDQogICAgICByZXR1cm4gZHVwMihmZCwgdG9mZCk7DQogICAgfQ0K DQogICAgY2FzZSBGX0dFVEZEOg0KICAgIHsNCiAgICAgICB1bnNpZ25lZCBsb25nIGVudHJ5 X3B0cjsNCg0KICAgICAgLyogRE9TIG9ubHkgcGFzc2VzIHRoZSBmaXJzdCAyMCBoYW5kbGVz IHRvIGNoaWxkIHByb2dyYW1zLiAgSW4NCiAgICAgICAgIGFkZGl0aW9uLCBoYW5kbGVzIDE5 IGFuZCAxOCB3aWxsIGJlIGNsb3NlZCBieSB0aGUgc3R1YiBvZiB0aGUNCiAgICAgICAgIGNo aWxkIHByb2dyYW0gKGlmIGl0IGlzIGEgREpHUFAgcHJvZ3JhbSkuICAqLw0KDQogICAgICBp ZiAoZmQgPj0gMTgpDQogICAgICAgIHJldHVybiBGRF9DTE9FWEVDOw0KDQogICAgICAvKiBE T1MgZG9lcyBub3QgcmV0dXJuIHRoZSB1cHBlciBieXRlIG9mIHRoZSBkZXZpY2UgaW5mbyB3 b3JkLg0KICAgICAgICAgSWYgdGhlIHVwcGVyIGJ5dGUgaXMgbWlzc2luZywgZ2V0IHRoZSB2 YWx1ZSBkaXJlY3RseQ0KICAgICAgICAgZnJvbSB0aGUgU0ZULiAgKi8NCiAgICAgIGlmIChk ZXZfaW5mbyA8IDB4MTAwKQ0KICAgICAgew0KICAgICAgICBlbnRyeV9wdHIgPSBnZXRfc2Z0 X2VudHJ5X3B0cihmZCk7DQogICAgICAgIGlmIChlbnRyeV9wdHIgPT0gMCkNCiAgICAgICAg ICByZXR1cm4gLTE7DQogICAgICAgIC8qIE9mZnNldCA1IGluIHRoZSBTRlQgY29udGFpbnMg dGhlIGRldmljZSBpbmZvIHdvcmQuICAqLw0KICAgICAgICBkZXZfaW5mbyA9IF9mYXJwZWVr dyhfZG9zX2RzLCBlbnRyeV9wdHIgKyA1KTsNCiAgICAgIH0NCiAgICAgIHJldHVybiAoZGV2 X2luZm8gJiAoMTw8MTIpKSA/IEZEX0NMT0VYRUMgOiAwOw0KICAgIH0NCg0KICAgIGNhc2Ug Rl9TRVRGRDoNCiAgICB7DQogICAgICB1bnNpZ25lZCBpbnQgZmxhZzsNCiAgICAgIHVuc2ln bmVkIGxvbmcgZW50cnlfcHRyOw0KICAgICAgdW5zaWduZWQgc2hvcnQgZGV2X2luZm87DQog ICAgICB1bnNpZ25lZCBjaGFyIG1vZGU7DQogICAgICB1bnNpZ25lZCBjaGFyIHVzZV9zZXRf ZGV2X2luZm8gPSAxOw0KICAgICAgX19kcG1pX3JlZ3MgcmVnczsNCg0KICAgICAgdmFfc3Rh cnQgKGFwLCBjbWQpOw0KICAgICAgZmxhZyA9IHZhX2FyZyhhcCwgaW50KTsNCiAgICAgIHZh X2VuZChhcCk7DQoNCiAgICAgIC8qIERPUyBvbmx5IHBhc3NlcyB0aGUgZmlyc3QgMjAgaGFu ZGxlcyB0byBjaGlsZCBwcm9ncmFtcy4gIEluDQogICAgICAgICBhZGRpdGlvbiwgaGFuZGxl cyAxOSBhbmQgMTggd2lsbCBiZSBjbG9zZWQgYnkgdGhlIHN0dWIgb2YgdGhlDQogICAgICAg ICBjaGlsZCBwcm9ncmFtIChpZiBpdCBpcyBhIERKR1BQIHByb2dyYW0pLiAgKi8NCiAgICAg IGlmIChmZCA+PSAxOCkNCiAgICAgIHsNCiAgICAgICAgaWYgKGZsYWcgJiBGRF9DTE9FWEVD KQ0KICAgICAgICAgIHJldHVybiAwOw0KICAgICAgICBlbHNlDQogICAgICAgIHsNCiAgICAg ICAgICBlcnJubyA9IEVOT1NZUzsNCiAgICAgICAgICByZXR1cm4gLTE7DQogICAgICAgIH0N CiAgICAgIH0NCg0KICAgICAgLyogVGhlIHVwcGVyIGJ5dGUgb2YgdGhlIGRldmljZSBpbmZv IHdvcmQgaXMgbm90IHJldHVybmVkIHVzaW5nDQogICAgICAgICB0aGUgZG9jdW1lbnRlZCBp bnRlcmZhY2UgdW5kZXIgRE9TLiBXb3JrIGFyb3VuZCB0aGlzIGJ5IGdldHRpbmcNCiAgICAg ICAgIHRoZSB2YWx1ZSBkaXJlY3RseSBmcm9tIHRoZSBTRlQuICAqLw0KICAgICAgaWYgKGRl dl9pbmZvIDwgMHgxMDApDQogICAgICB7DQogICAgICAgIGVudHJ5X3B0ciA9IGdldF9zZnRf ZW50cnlfcHRyKGZkKTsNCiAgICAgICAgaWYgKGVudHJ5X3B0ciA9PSAwKQ0KICAgICAgICAg IHJldHVybiAtMTsNCg0KICAgICAgICBkZXZfaW5mbyA9IF9mYXJwZWVrdyhfZG9zX2RzLCBl bnRyeV9wdHIgKyA1KTsNCiAgICAgICAgdXNlX3NldF9kZXZfaW5mbyA9IDA7DQogICAgICB9 DQoNCiAgICAgIGlmIChmbGFnICYgRkRfQ0xPRVhFQykNCiAgICAgICAgZGV2X2luZm8gfD0g KDEgPDwgMTIpOw0KICAgICAgZWxzZQ0KICAgICAgICBkZXZfaW5mbyAmPSB+KDEgPDwgMTIp Ow0KDQogICAgICAvKiBET1MgaWdub3JlcyB0aGUgdXBwZXIgYnl0ZSBvZiB0aGUgbmV3IGRl dmljZSBpbmZvIHdvcmQgd2hlbg0KICAgICAgICAgdXNpbmcgdGhlIGRvY3VtZW50ZWQgaW50 ZXJmYWNlLiBXb3JrIGFyb3VuZCB0aGUgcHJvYmxlbSBieQ0KICAgICAgICAgc3RvcmluZyB0 aGUgd29yZCBkaXJlY3RseSBpbiB0byBTRlQgZW50cnkuICAqLw0KICAgICAgaWYgKHVzZV9z ZXRfZGV2X2luZm8pDQogICAgICB7DQogICAgICAgIHJlZ3MueC5heCA9IDB4NDQwMTsNCiAg ICAgICAgcmVncy54LmJ4ID0gZmQ7DQogICAgICAgIHJlZ3MueC5keCA9IGRldl9pbmZvOw0K ICAgICAgICBfX2RwbWlfaW50KDB4MjEsICZyZWdzKTsNCiAgICAgIH0NCiAgICAgIGVsc2UN CiAgICAgICAgX2ZhcnBva2V3KF9kb3NfZHMsIGVudHJ5X3B0ciArIDUsIGRldl9pbmZvKTsN Cg0KICAgICAgcmV0dXJuIDA7DQogICAgfQ0KDQogICAgY2FzZSBGX0dFVEZMOg0KICAgIHsN CiAgICAgIHVuc2lnbmVkIGxvbmcgZW50cnlfcHRyID0gZ2V0X3NmdF9lbnRyeV9wdHIoZmQp Ow0KICAgICAgaWYgKGVudHJ5X3B0ciA9PSAwKQ0KICAgICAgICByZXR1cm4gLTE7DQoNCiAg ICAgIC8qIE9mZnNldCAyIGluIHRoZSBTRlQgZW50cnkgY29udGFpbnMgdGhlIG1vZGUgd29y ZC4gICovDQogICAgICByZXR1cm4gX2ZhcnBlZWt3KF9kb3NfZHMsIGVudHJ5X3B0ciArIDIp Ow0KICAgIH0NCg0KICAgIGNhc2UgRl9TRVRGTDoNCiAgICB7DQogICAgICB1bnNpZ25lZCBs b25nIGVudHJ5X3B0cjsNCiAgICAgIHVuc2lnbmVkIHNob3J0IG5ld19tb2RlOw0KICAgICAg dW5zaWduZWQgc2hvcnQgbW9kZTsNCg0KICAgICAgZW50cnlfcHRyID0gZ2V0X3NmdF9lbnRy eV9wdHIoZmQpOw0KICAgICAgaWYgKGVudHJ5X3B0ciA9PSAwKQ0KICAgICAgICByZXR1cm4g LTE7DQoNCiAgICAgIHZhX3N0YXJ0IChhcCwgY21kKTsNCiAgICAgIG5ld19tb2RlID0gdmFf YXJnKGFwLCBpbnQpOw0KICAgICAgdmFfZW5kKGFwKTsNCg0KICAgICAgLyogVGhlIFVuaXgg c3BlYyBzYXlzIHRvIGlnbm9yZSBjaGFuZ2VzIHRvIHRoZSBhY2Nlc3MgbW9kZS4gICovDQog ICAgICBtb2RlID0gX2ZhcnBlZWt3KF9kb3NfZHMsIGVudHJ5X3B0ciArIDIpOw0KICAgICAg bmV3X21vZGUgJj0gfk9fQUNDTU9ERTsNCiAgICAgIG5ld19tb2RlIHw9IChtb2RlICYgT19B Q0NNT0RFKTsNCg0KICAgICBfZmFycG9rZXcoX2Rvc19kcywgZW50cnlfcHRyICsgMiwgbmV3 X21vZGUpOw0KDQogICAgICByZXR1cm4gMDsNCiAgICB9DQoNCiAgICBjYXNlIEZfR0VUTEs6 DQogICAgY2FzZSBGX1NFVExLOg0KICAgIGNhc2UgRl9TRVRMS1c6DQogICAgew0KICAgICAg c3RydWN0IGZsb2NrICpsb2NrX3JlcSA9IHZhX2FyZyhsb2NrX3JlcSwgc3RydWN0IGZsb2Nr ICopOw0KICAgICAgaW50IHJldCA9IC0xOw0KICAgICAgb2ZmX3QgcG9zLCBmaWxlX2xlbjsN CiAgICAgIG9mZl90IGN1cl9wb3MgPSBsc2VlayAoZmQsIDAsIFNFRUtfQ1VSKTsNCiAgICAg IG9mZl90IGxvY2tfcG9zID0gbHNlZWsgKGZkLCBsb2NrX3JlcS0+bF9zdGFydCwgbG9ja19y ZXEtPmxfd2hlbmNlKTsNCiAgICAgIG9mZl90IGxlbiA9IGxvY2tfcmVxLT5sX2xlbjsNCg0K ICAgICAgLyogSWYgbF9sZW4gaXMgemVybywgdGhlbiB0aGUgbG9jayBpcyB0byBiZSBzZXQg ZnJvbSBsX3N0YXJ0DQogICAgICAgICB1bnRpbCB0aGUgZW5kLW9mLWZpbGUuICovDQogICAg ICBpZiAobGVuID09IDApDQogICAgICB7DQogICAgICAgIGxlbiA9IGZpbGVsZW5ndGgoZmQp IC0gY3VyX3BvczsNCiAgICAgICAgaWYgKGxlbiA8PSAwKQ0KICAgICAgICAgIGxlbiA9IDE7 DQogICAgICB9DQoNCiAgICAgIGxzZWVrIChmZCwgY3VyX3BvcywgU0VFS19TRVQpOw0KDQog ICAgICAvKiBJZiBsX2xlbiBpcyBwb3NpdGl2ZSwgdGhlIGFyZWEgdG8gbG9jayBpcyB0byBi ZSBzZXQgZnJvbSBsX3N0YXJ0DQogICAgICAgICB0byBsX3N0YXJ0ICsgbF9sZW4gLSAxLiBJ ZiBsX2xlbiBpcyBuZWdhdGl2ZSwgdGhlIGFyZWEgdG8gbG9jayBpcw0KICAgICAgICAgZnJv bSBsX3N0YXJ0ICsgbGVuIHRvIGxfc3RhcnQgLSAxLiAgKi8NCiAgICAgIGlmIChsZW4gPiAw KQ0KICAgICAgew0KICAgICAgICBwb3MgPSBsb2NrX3BvczsNCiAgICAgICAgbGVuID0gbG9j a19yZXEtPmxfbGVuOw0KICAgICAgfQ0KICAgICAgZWxzZQ0KICAgICAgew0KICAgICAgICBw b3MgPSBsb2NrX3BvcyArIGxvY2tfcmVxLT5sX2xlbjsNCiAgICAgICAgbGVuID0gLWxvY2tf cmVxLT5sX2xlbjsNCiAgICAgIH0NCg0KICAgICAgLyogSWdub3JlIHJlYWQgbG9ja3MgYmVj YXVzZSBET1MvV2luZG93cyBzdXBwb3J0IG9ubHkgd3JpdGUgbG9ja3MNCiAgICAgICAgIGZv ciByZWNvcmQgbG9ja2luZy4gICovDQogICAgICBpZiAobG9ja19yZXEtPmxfdHlwZSA9PSBG X1VOTENLKQ0KICAgICAgew0KICAgICAgICByZXQgPSBfZG9zX3VubG9jayhmZCwgcG9zLCBs ZW4pOw0KICAgICAgfQ0KICAgICAgZWxzZSBpZiAobG9ja19yZXEtPmxfdHlwZSA9PSBGX1dS TENLKQ0KICAgICAgew0KICAgICAgICByZXQgPSBfZG9zX2xvY2soZmQsIHBvcywgbGVuKTsN CiAgICAgICAgaWYgKHJldCA9PSAwICYmIGNtZCA9PSBGX0dFVExLKQ0KICAgICAgICAgIF9k b3NfdW5sb2NrKGZkLCBwb3MsIGxlbik7DQogICAgICB9DQogICAgICBpZiAocmV0IDwgMCkN CiAgICAgICAgZXJybm8gPSBFTk9TWVM7DQoNCiAgICAgIHJldHVybiByZXQ7DQogICAgfQ0K ICB9DQogIGVycm5vID0gRU5PU1lTOw0KICByZXR1cm4gLTE7DQp9DQoNCg== --Message-Boundary-11428 Content-type: text/plain; charset=US-ASCII Content-disposition: inline Content-description: Attachment information. The following section of this message contains a file attachment prepared for transmission using the Internet MIME message format. If you are using Pegasus Mail, or any another MIME-compliant system, you should be able to save it or view it from within your mailer. If you cannot, please ask your system administrator for assistance. ---- File information ----------- File: inherit.c Date: 3 Jun 1999, 14:13 Size: 1034 bytes. Type: Program-source --Message-Boundary-11428 Content-type: Application/Octet-stream; name="inherit.c"; type=Program-source Content-disposition: attachment; filename="inherit.c" Content-transfer-encoding: BASE64 I2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8ZmNudGwuaD4NCiNpbmNsdWRlIDxwcm9j ZXNzLmg+DQoNCmludCBtYWluKGludCBhcmd2LCBjaGFyICoqYXJnYykNCnsNCiAgaWYgKGFy Z3YgPCAyKQ0KICB7DQogICAgLyogSW52b2xrZWQgYXMgdGhlICdwYXJlbnQnLg0KICAgICAg IE9wZW4gZmlsZXMgYW5kIHBhc3MgdGhlaXIgZGVzY3JpcHRvcnMgdG8gdGhlIGNoaWxkLiAg Ki8NCiAgICBpbnQgZmQ7DQogICAgaW50IGZkXzI7DQogICAgY2hhciBidWZbMTZdOw0KICAg IGNoYXIgYnVmXzJbMTZdOw0KDQogICAgZmQgPSBvcGVuKGFyZ2NbMF0sIE9fUkRPTkxZKTsN CiAgICBmZF8yID0gb3BlbihhcmdjWzBdLCBPX1JET05MWSk7DQogICAgaXRvYShmZCwgYnVm LCAxMCk7DQogICAgaXRvYShmZF8yLCBidWZfMiwgMTApOw0KDQogICAgLyogU2V0IHRoZSBz ZWNvbmQgaGFuZGxlIHRvICdjbG9zZSBvbiBleGVjJy4gICovDQogICAgZmNudGwoZmRfMiwg Rl9TRVRGRCwgRkRfQ0xPRVhFQyk7DQoNCiAgICBzcGF3bmwoUF9XQUlULCBhcmdjWzBdLCBh cmdjWzBdLCBidWYsIGJ1Zl8yLCBOVUxMKTsNCiAgICByZXR1cm4gMDsNCiAgfQ0KICBlbHNl DQogIHsNCiAgICAvKiBJbnZvbGtlZCBhcyBhIGNoaWxkLg0KICAgICAgIENoZWNrIGlmIHRo ZSBkZXNjcmlwdG9ycyBwYXNzZWQgYnkgdGhlIHBhcmVudCBleGlzdHMuICAqLw0KICAgIGlu dCBmZCwgaW5kZXg7DQoNCiAgICBpbmRleCA9IDE7DQogICAgd2hpbGUgKGluZGV4IDwgYXJn dikNCiAgICB7DQogICAgICBmZCA9IHN0cnRvbChhcmdjW2luZGV4XSwgTlVMTCwgMTApOw0K DQogICAgICBpZiAoZmNudGwoZmQsIEZfR0VURkQpID09IC0xKQ0KICAgICAgICBwcmludGYo IkhhbmRsZSAlcyB3YXMgTk9UIGluaGVyaXRlZC5cbiIsIGZkX3N0cik7DQogICAgICBlbHNl DQogICAgICAgIHByaW50ZigiSGFuZGxlICVzIHdhcyBpbmhlcml0ZWQuXG4iKTsNCiAgICAg ICsraW5kZXg7DQogICAgfQ0KICAgIHByaW50ZigiXG4iKTsNCiAgfQ0KDQogIHJldHVybiAw Ow0KfQ0KDQo= --Message-Boundary-11428--