From unknown Mon Jun 23 02:21:25 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#13807 <13807@debbugs.gnu.org> To: bug#13807 <13807@debbugs.gnu.org> Subject: Status: The lock for 'DIR/FILE' should always be 'DIR/.#FILE'. Reply-To: bug#13807 <13807@debbugs.gnu.org> Date: Mon, 23 Jun 2025 09:21:25 +0000 retitle 13807 The lock for 'DIR/FILE' should always be 'DIR/.#FILE'. reassign 13807 emacs submitter 13807 Paul Eggert severity 13807 wishlist tag 13807 patch thanks From debbugs-submit-bounces@debbugs.gnu.org Sun Feb 24 17:50:57 2013 Received: (at submit) by debbugs.gnu.org; 24 Feb 2013 22:50:57 +0000 Received: from localhost ([127.0.0.1]:48267 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1U9kPI-00013W-Fr for submit@debbugs.gnu.org; Sun, 24 Feb 2013 17:50:57 -0500 Received: from eggs.gnu.org ([208.118.235.92]:59162) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1U9kPE-00013I-Fj for submit@debbugs.gnu.org; Sun, 24 Feb 2013 17:50:54 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1U9kNe-0001bg-UD for submit@debbugs.gnu.org; Sun, 24 Feb 2013 17:49:16 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-104.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_MED, RP_MATCHES_RCVD,USER_IN_WHITELIST autolearn=unavailable version=3.3.2 Received: from lists.gnu.org ([208.118.235.17]:47570) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1U9kNe-0001bc-PR for submit@debbugs.gnu.org; Sun, 24 Feb 2013 17:49:14 -0500 Received: from eggs.gnu.org ([208.118.235.92]:42256) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1U9kNb-0003RO-95 for bug-gnu-emacs@gnu.org; Sun, 24 Feb 2013 17:49:14 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1U9kNY-0001YR-Nw for bug-gnu-emacs@gnu.org; Sun, 24 Feb 2013 17:49:10 -0500 Received: from smtp.cs.ucla.edu ([131.179.128.62]:47441) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1U9kNY-0001XM-DB for bug-gnu-emacs@gnu.org; Sun, 24 Feb 2013 17:49:08 -0500 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id ABBA439E810A for ; Sun, 24 Feb 2013 14:49:00 -0800 (PST) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 0KnsL1teKzwN for ; Sun, 24 Feb 2013 14:48:58 -0800 (PST) Received: from [192.168.1.9] (pool-71-189-154-249.lsanca.fios.verizon.net [71.189.154.249]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id 7089739E8008 for ; Sun, 24 Feb 2013 14:48:58 -0800 (PST) Message-ID: <512A98D5.7080000@cs.ucla.edu> Date: Sun, 24 Feb 2013 14:48:53 -0800 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130106 Thunderbird/17.0.2 MIME-Version: 1.0 To: bug-gnu-emacs@gnu.org Subject: The lock for 'DIR/FILE' should always be 'DIR/.#FILE'. Content-Type: multipart/mixed; boundary="------------010104000004070201020609" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 208.118.235.17 X-Spam-Score: -6.2 (------) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -6.2 (------) This is a multi-part message in MIME format. --------------010104000004070201020609 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Tags: patch Attached is a proposed cleanup patch, following up on the thread in . --------------010104000004070201020609 Content-Type: text/plain; charset=UTF-8; name="filelock.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="filelock.txt" PT09IG1vZGlmaWVkIGZpbGUgJ2V0Yy9DaGFuZ2VMb2cnCi0tLSBldGMvQ2hhbmdlTG9nCTIw MTMtMDItMTkgMTQ6NDQ6MDMgKzAwMDAKKysrIGV0Yy9DaGFuZ2VMb2cJMjAxMy0wMi0yNCAy Mjo0NDowNCArMDAwMApAQCAtMSwzICsxLDcgQEAKKzIwMTMtMDItMjQgIFBhdWwgRWdnZXJ0 ICA8ZWdnZXJ0QGNzLnVjbGEuZWR1PgorCisJKiBORVdTOiBUaGUgbG9jayBmb3IgJ0RJUi9G SUxFJyBpcyBub3cgYWx3YXlzICdESVIvLiNGSUxFJy4KKwogMjAxMy0wMi0xNCAgTWljaGFl bCBBbGJpbnVzICA8bWljaGFlbC5hbGJpbnVzQGdteC5kZT4KIAogCSogTkVXUzogVHJhbXAg bWV0aG9kcyAic2NwYyIgYW5kICJyc3luY2MiIGFyZSBkaXNjb250aW51ZWQuCgo9PT0gbW9k aWZpZWQgZmlsZSAnZXRjL05FV1MnCi0tLSBldGMvTkVXUwkyMDEzLTAyLTIxIDA2OjU1OjE5 ICswMDAwCisrKyBldGMvTkVXUwkyMDEzLTAyLTI0IDIyOjQ0OjA0ICswMDAwCkBAIC0zMTYs NiArMzE2LDE5IEBACiAqKiBUaGUgYGRlZmFsaWFzLWZzZXQtZnVuY3Rpb24nIHByb3BlcnR5 IGxldHMgeW91IGNhdGNoIGNhbGxzIHRvIGRlZmFsaWFzCiBhbmQgcmVkaXJlY3QgdGhlbSB0 byB5b3VyIG93biBmdW5jdGlvbiBpbnN0ZWFkIG9mIGBmc2V0Jy4KIAorKiogVGhlIGxvY2sg Zm9yICdESVIvRklMRScgaXMgbm93IGFsd2F5cyAnRElSLy4jRklMRScuCitXaGVuIHlvdSBl ZGl0IERJUi9GSUxFLCBFbWFjcyBub3JtYWxseSBjcmVhdGVzIGEgc3ltYm9saWMgbGluawor RElSLy4jRklMRSBhcyBhIGxvY2sgdGhhdCB3YXJucyBvdGhlciBpbnN0YW5jZXMgb2YgRW1h Y3MgdGhhdCBESVIvRklMRQoraXMgYmVpbmcgZWRpdGVkLiAgRm9ybWVybHksIGlmIHRoZXJl IHdhcyBhbHJlYWR5IGEgbm9uLXN5bWxpbmsgZmlsZQorbmFtZWQgRElSLy4jRklMRSwgRW1h Y3MgZmVsbCBiYWNrIG9uIHRoZSBsb2NrIG5hbWVzIERJUi8uI0ZJTEUuMAordGhyb3VnaCBE SVIvLiNGSUxFLjkuICBUaGlzIGFwcHJvYWNoIGhhZCByYWNlIGNvbmRpdGlvbnMgdGhhdCBj b3VsZAorbm90IGJlIGVhc2lseSBmaXhlZC4gIEZpbGUgbmFtZXMgYmVnaW5uaW5nIHdpdGgg Jy4jJyBhcmUgdW51c3VhbAorZW5vdWdoIHRoYXQgdGhlIGZhbGxiYWNrcyB3ZXJlIG1vcmUg dHJvdWJsZSB0aGFuIHRoZXkgd2VyZSB3b3J0aCwgc28KK2lmIERJUi8uI0ZJTEUgaXMgYSBu b24tc3ltbGluayBmaWxlLCBFbWFjcyBub3cgZG9lcyBub3QgY3JlYXRlIGEgbG9jaworZmls ZSBmb3IgRElSL0ZJTEU7IHRoYXQgaXMsIERJUi9GSUxFIGlzIG5vIGxvbmdlciBwYXJ0bHkg cHJvdGVjdGVkIGJ5CithIGxvY2sgaWYgRElSLy4jRklMRSBpcyBhIG5vbi1zeW1saW5rIGZp bGUgKCJwYXJ0bHkiIGJlY2F1c2UgdGhlCitsb2NraW5nIG1lY2hhbmlzbSB3YXMgbmV2ZXIg cmVsaWFibGUgaW4gdGhhdCBjYXNlKS4KKwogKiogVGhlIDl0aCBlbGVtZW50IHJldHVybmVk IGJ5IGBmaWxlLWF0dHJpYnV0ZXMnIGlzIG5vdyB1bnNwZWNpZmllZC4KIEZvcm1lcmx5LCBp dCB3YXMgdCBpZiB0aGUgZmlsZSdzIGdpZCB3b3VsZCBjaGFuZ2UgaWYgZmlsZSB3ZXJlIGRl bGV0ZWQKIGFuZCByZWNyZWF0ZWQuICBUaGlzIHZhbHVlIGhhcyBiZWVuIGluYWNjdXJhdGUg Zm9yIHllYXJzIG9uIG1hbnkKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvQ2hhbmdlTG9nJwot LS0gc3JjL0NoYW5nZUxvZwkyMDEzLTAyLTI0IDE5OjQ1OjE3ICswMDAwCisrKyBzcmMvQ2hh bmdlTG9nCTIwMTMtMDItMjQgMjI6NDQ6MDQgKzAwMDAKQEAgLTEsMyArMSwxNiBAQAorMjAx My0wMi0yNCAgUGF1bCBFZ2dlcnQgIDxlZ2dlcnRAY3MudWNsYS5lZHU+CisKKwlUaGUgbG9j ayBmb3IgJ0RJUi9GSUxFJyBpcyBub3cgYWx3YXlzICdESVIvLiNGSUxFJy4KKwkqIGZpbGVs b2NrLmMgKE1BS0VfTE9DS19OQU1FLCBmaWxsX2luX2xvY2tfZmlsZV9uYW1lKToKKwlEb24n dCBjcmVhdGUgRElSLy4jRklMRS4wIHRocm91Z2ggRElSLy4jRklMRS45LCBhcyB0aGlzIHdh cworCW1vcmUgdHJvdWJsZSB0aGFuIGl0IHdhcyB3b3J0aCBhbmQgbGVkIHRvIHJhY2UgY29u ZGl0aW9ucyBvZiBpdHMgb3duLgorCShNQUtFX0xPQ0tfTkFNRSwgdW5sb2NrX2ZpbGUsIEZm aWxlX2xvY2tlZF9wKToKKwlVc2UgU0FGRV9BTExPQ0EgdG8gYXZvaWQgcHJvYmxlbXMgd2l0 aCBsb25nIGZpbGUgbmFtZXMuCisJKGxvY2tfZmlsZV8xKTogRG9uJ3QgaW5zcGVjdCBlcnJu byBpZiBzeW1saW5rIGNhbGwgc3VjY2VlZHM7CisJdGhhdCdzIG5vdCBwb3J0YWJsZS4KKwko bG9ja19maWxlKTogRG9jdW1lbnQgdGhhdCB0aGlzIGZ1bmN0aW9ubiBjYW4gcmV0dXJuIGlm CisJbG9jayBjcmVhdGlvbiBmYWlscy4KKwogMjAxMy0wMi0yNCAgQW5kcmVhcyBTY2h3YWIg IDxzY2h3YWJAbGludXgtbTY4ay5vcmc+CiAKIAkqIHhkaXNwLmMgKHNldF9tZXNzYWdlKTog T25seSBjaGVjayBmb3IgZGVidWctb24tbWVzc2FnZSBpZiBTVFJJTkcKCj09PSBtb2RpZmll ZCBmaWxlICdzcmMvZmlsZWxvY2suYycKLS0tIHNyYy9maWxlbG9jay5jCTIwMTMtMDItMjQg MTk6NDU6MTcgKzAwMDAKKysrIHNyYy9maWxlbG9jay5jCTIwMTMtMDItMjQgMjI6NDQ6MDQg KzAwMDAKQEAgLTI4OSw0NCArMjg5LDIyIEBACiAKIAogLyogV3JpdGUgdGhlIG5hbWUgb2Yg dGhlIGxvY2sgZmlsZSBmb3IgRk4gaW50byBMRk5BTUUuICBMZW5ndGggd2lsbCBiZQotICAg dGhhdCBvZiBGTiBwbHVzIHR3byBtb3JlIGZvciB0aGUgbGVhZGluZyBgLiMnIHBsdXMgMSBm b3IgdGhlCi0gICB0cmFpbGluZyBwZXJpb2QgcGx1cyBvbmUgZm9yIHRoZSBkaWdpdCBhZnRl ciBpdCBwbHVzIG9uZSBmb3IgdGhlCi0gICBudWxsLiAgKi8KKyAgIHRoYXQgb2YgRk4gcGx1 cyB0d28gbW9yZSBmb3IgdGhlIGxlYWRpbmcgYC4jJyBwbHVzIG9uZSBmb3IgdGhlIG51bGwu ICAqLwogI2RlZmluZSBNQUtFX0xPQ0tfTkFNRShsb2NrLCBmaWxlKSBcCi0gIChsb2NrID0g YWxsb2NhIChTQllURVMgKGZpbGUpICsgMiArIDEgKyAxICsgMSksIFwKLSAgIGZpbGxfaW5f bG9ja19maWxlX25hbWUgKGxvY2ssIChmaWxlKSkpCisgIChsb2NrID0gU0FGRV9BTExPQ0Eg KFNCWVRFUyAoZmlsZSkgKyAyICsgMSksIFwKKyAgIGZpbGxfaW5fbG9ja19maWxlX25hbWUg KGxvY2ssIGZpbGUpKQogCiBzdGF0aWMgdm9pZAotZmlsbF9pbl9sb2NrX2ZpbGVfbmFtZSAo cmVnaXN0ZXIgY2hhciAqbG9ja2ZpbGUsIHJlZ2lzdGVyIExpc3BfT2JqZWN0IGZuKQorZmls bF9pbl9sb2NrX2ZpbGVfbmFtZSAoY2hhciAqbG9ja2ZpbGUsIExpc3BfT2JqZWN0IGZuKQog ewotICBwdHJkaWZmX3QgbGVuZ3RoID0gU0JZVEVTIChmbik7Ci0gIHJlZ2lzdGVyIGNoYXIg KnA7Ci0gIHN0cnVjdCBzdGF0IHN0OwotICBpbnQgY291bnQgPSAwOwotCi0gIHN0cmNweSAo bG9ja2ZpbGUsIFNTREFUQSAoZm4pKTsKLQotICAvKiBTaGlmdCB0aGUgbm9uZGlyZWN0b3J5 IHBhcnQgb2YgdGhlIGZpbGUgbmFtZSAoaW5jbHVkaW5nIHRoZSBudWxsKQotICAgICByaWdo dCB0d28gY2hhcmFjdGVycy4gIEhlcmUgaXMgb25lIG9mIHRoZSBwbGFjZXMgd2hlcmUgd2Un ZCBoYXZlIHRvCi0gICAgIGRvIHNvbWV0aGluZyB0byBzdXBwb3J0IDE0LWNoYXJhY3Rlci1t YXggZmlsZSBuYW1lcy4gICovCi0gIGZvciAocCA9IGxvY2tmaWxlICsgbGVuZ3RoOyBwICE9 IGxvY2tmaWxlICYmICpwICE9ICcvJzsgcC0tKQotICAgIHBbMl0gPSAqcDsKLQotICAvKiBJ bnNlcnQgdGhlIGAuIycuICAqLwotICBwWzFdID0gJy4nOwotICBwWzJdID0gJyMnOwotCi0g IHAgPSBsb2NrZmlsZSArIGxlbmd0aCArIDI7Ci0KLSAgd2hpbGUgKGxzdGF0IChsb2NrZmls ZSwgJnN0KSA9PSAwICYmICFTX0lTTE5LIChzdC5zdF9tb2RlKSkKLSAgICB7Ci0gICAgICBp ZiAoY291bnQgPiA5KQotCXsKLQkgICpwID0gJ1wwJzsKLQkgIHJldHVybjsKLQl9Ci0gICAg ICBzcHJpbnRmIChwLCAiLiVkIiwgY291bnQrKyk7Ci0gICAgfQorICBjaGFyICpsYXN0X3Ns YXNoID0gbWVtcmNociAoU1NEQVRBIChmbiksICcvJywgU0JZVEVTIChmbikpOworICBjaGFy ICpiYXNlID0gbGFzdF9zbGFzaCArIDE7CisgIHB0cmRpZmZfdCBkaXJsZW4gPSBiYXNlIC0g U1NEQVRBIChmbik7CisKKyAgbWVtY3B5IChsb2NrZmlsZSwgU1NEQVRBIChmbiksIGRpcmxl bik7CisgIGxvY2tmaWxlW2Rpcmxlbl0gPSAnLic7CisgIGxvY2tmaWxlW2RpcmxlbiArIDFd ID0gJyMnOworICBzdHJjcHkgKGxvY2tmaWxlICsgZGlybGVuICsgMiwgYmFzZSk7CiB9CiAK IC8qIExvY2sgdGhlIGxvY2sgZmlsZSBuYW1lZCBMRk5BTUUuCkBAIC0zNTcsNyArMzM1LDcg QEAKIAkgICAgdXNlcl9uYW1lLCBob3N0X25hbWUsIHBpZCwgYm9vdCk7CiAKICAgZXJyID0g c3ltbGluayAobG9ja19pbmZvX3N0ciwgbGZuYW1lKTsKLSAgaWYgKGVycm5vID09IEVFWElT VCAmJiBmb3JjZSkKKyAgaWYgKGVyciAhPSAwICYmIGVycm5vID09IEVFWElTVCAmJiBmb3Jj ZSkKICAgICB7CiAgICAgICB1bmxpbmsgKGxmbmFtZSk7CiAgICAgICBlcnIgPSBzeW1saW5r IChsb2NrX2luZm9fc3RyLCBsZm5hbWUpOwpAQCAtNTIwLDYgKzQ5OCw3IEBACiAgICBkZWNp ZGVkIHRvIGdvIGFoZWFkIHdpdGhvdXQgbG9ja2luZy4KIAogICAgV2hlbiB0aGlzIHJldHVy bnMsIGVpdGhlciB0aGUgbG9jayBpcyBsb2NrZWQgZm9yIHVzLAorICAgb3IgbG9jayBjcmVh dGlvbiBmYWlsZWQsCiAgICBvciB0aGUgdXNlciBoYXMgc2FpZCB0byBnbyBhaGVhZCB3aXRo b3V0IGxvY2tpbmcuCiAKICAgIElmIHRoZSBmaWxlIGlzIGxvY2tlZCBieSBzb21lb25lIGVs c2UsIHRoaXMgY2FsbHMKQEAgLTU5OSw5ICs1NzgsMTAgQEAKIH0KIAogdm9pZAotdW5sb2Nr X2ZpbGUgKHJlZ2lzdGVyIExpc3BfT2JqZWN0IGZuKQordW5sb2NrX2ZpbGUgKExpc3BfT2Jq ZWN0IGZuKQogewotICByZWdpc3RlciBjaGFyICpsZm5hbWU7CisgIGNoYXIgKmxmbmFtZTsK KyAgVVNFX1NBRkVfQUxMT0NBOwogCiAgIGZuID0gRmV4cGFuZF9maWxlX25hbWUgKGZuLCBR bmlsKTsKICAgZm4gPSBFTkNPREVfRklMRSAoZm4pOwpAQCAtNjEwLDYgKzU5MCw4IEBACiAK ICAgaWYgKGN1cnJlbnRfbG9ja19vd25lciAoMCwgbGZuYW1lKSA9PSAyKQogICAgIHVubGlu ayAobGZuYW1lKTsKKworICBTQUZFX0ZSRUUgKCk7CiB9CiAKIHZvaWQKQEAgLTY3NSw5ICs2 NTcsMTAgQEAKICAgKExpc3BfT2JqZWN0IGZpbGVuYW1lKQogewogICBMaXNwX09iamVjdCBy ZXQ7Ci0gIHJlZ2lzdGVyIGNoYXIgKmxmbmFtZTsKKyAgY2hhciAqbGZuYW1lOwogICBpbnQg b3duZXI7CiAgIGxvY2tfaW5mb190eXBlIGxvY2tlcjsKKyAgVVNFX1NBRkVfQUxMT0NBOwog CiAgIGZpbGVuYW1lID0gRmV4cGFuZF9maWxlX25hbWUgKGZpbGVuYW1lLCBRbmlsKTsKIApA QCAtNjk0LDYgKzY3Nyw3IEBACiAgIGlmIChvd25lciA+IDApCiAgICAgRlJFRV9MT0NLX0lO Rk8gKGxvY2tlcik7CiAKKyAgU0FGRV9GUkVFICgpOwogICByZXR1cm4gcmV0OwogfQogCgo= --------------010104000004070201020609-- From debbugs-submit-bounces@debbugs.gnu.org Mon Feb 25 14:59:28 2013 Received: (at 13807) by debbugs.gnu.org; 25 Feb 2013 19:59:28 +0000 Received: from localhost ([127.0.0.1]:49978 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UA4Ct-0001uP-Qd for submit@debbugs.gnu.org; Mon, 25 Feb 2013 14:59:28 -0500 Received: from fencepost.gnu.org ([208.118.235.10]:39207) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UA4Cs-0001uJ-Cs for 13807@debbugs.gnu.org; Mon, 25 Feb 2013 14:59:27 -0500 Received: from rgm by fencepost.gnu.org with local (Exim 4.71) (envelope-from ) id 1UA4BE-0002xU-8m; Mon, 25 Feb 2013 14:57:44 -0500 From: Glenn Morris To: Paul Eggert Subject: Re: bug#13807: The lock for 'DIR/FILE' should always be 'DIR/.#FILE'. References: <512A98D5.7080000@cs.ucla.edu> X-Spook: doctrine ammunition computer terrorism Putin DRM e-cash X-Ran: AY[\5dx\EWmsshAYM}vsp6V8~jaeW8JZ%!4(Nm2"u|J/3y8T-8JE^|9"jfa7 (Paul Eggert's message of "Sun, 24 Feb 2013 14:48:53 -0800") Message-ID: <2dip5g4154.fsf@fencepost.gnu.org> User-Agent: Gnus (www.gnus.org), GNU Emacs (www.gnu.org/software/emacs/) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Spam-Score: -4.9 (----) X-Debbugs-Envelope-To: 13807 Cc: 13807@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -7.6 (-------) Paul Eggert wrote: > Attached is a proposed cleanup patch, following up on the thread in > . AFAICS, all that thread says is "we should remove this because it never worked", when in fact it did work just fine until recently. So the motivation for this seems to be entirely as given in the NEWS (which is not really where it belongs IMO) for this change. Where it just says "this was more trouble than it was worth and led to race conditions of its own". No-one ever reported any (non-theoretical) problems with it in practice, AFAIK. From debbugs-submit-bounces@debbugs.gnu.org Mon Feb 25 18:42:04 2013 Received: (at 13807) by debbugs.gnu.org; 25 Feb 2013 23:42:04 +0000 Received: from localhost ([127.0.0.1]:50166 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UA7gG-0007EK-SC for submit@debbugs.gnu.org; Mon, 25 Feb 2013 18:42:03 -0500 Received: from smtp.cs.ucla.edu ([131.179.128.62]:38206) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UA7gB-0007EA-9y for 13807@debbugs.gnu.org; Mon, 25 Feb 2013 18:41:58 -0500 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id D74C839E8105; Mon, 25 Feb 2013 15:40:12 -0800 (PST) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id gWaS+L+L5rB3; Mon, 25 Feb 2013 15:40:11 -0800 (PST) Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id BAA1A39E8008; Mon, 25 Feb 2013 15:40:11 -0800 (PST) Message-ID: <512BF65B.5010500@cs.ucla.edu> Date: Mon, 25 Feb 2013 15:40:11 -0800 From: Paul Eggert User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130219 Thunderbird/17.0.3 MIME-Version: 1.0 To: Glenn Morris Subject: Re: bug#13807: The lock for 'DIR/FILE' should always be 'DIR/.#FILE'. References: <512A98D5.7080000@cs.ucla.edu> <2dip5g4154.fsf@fencepost.gnu.org> In-Reply-To: <2dip5g4154.fsf@fencepost.gnu.org> Content-Type: multipart/mixed; boundary="------------060308010303020006080800" X-Spam-Score: -4.9 (----) X-Debbugs-Envelope-To: 13807 Cc: 13807@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -4.9 (----) This is a multi-part message in MIME format. --------------060308010303020006080800 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 02/25/13 11:57, Glenn Morris wrote: >> . > > AFAICS, all that thread says is "we should remove this because it never > worked", when in fact it did work just fine until recently. Yes, the discussion should have been clearer. This patch was prompted by a code inspection after fixing the bug mentioned in that thread; the patch does not fix the bug (the bug's already fixed). I tried to clarify this in the revised patch (attached). > So the motivation for this seems to be entirely as given in the NEWS > (which is not really where it belongs IMO) OK, I moved the motivation out of NEWS and into the ChangeLog entry. > No-one ever reported any (non-theoretical) > problems with it in practice, AFAIK. The problem is more likely to happen with today's changes to the MS-Windows side. And even if the problem was less likely, it's still a race condition that should get fixed -- the point of that lock file is to avoid races, after all. --------------060308010303020006080800 Content-Type: text/plain; charset=us-ascii; name="filelock.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="filelock.txt" PT09IG1vZGlmaWVkIGZpbGUgJ2V0Yy9DaGFuZ2VMb2cnCi0tLSBldGMvQ2hhbmdlTG9nCTIw MTMtMDItMjUgMTc6MDE6NDEgKzAwMDAKKysrIGV0Yy9DaGFuZ2VMb2cJMjAxMy0wMi0yNSAx OTo0MjoyNiArMDAwMApAQCAtMSw1ICsxLDcgQEAKIDIwMTMtMDItMjUgIFBhdWwgRWdnZXJ0 ICA8ZWdnZXJ0QGNzLnVjbGEuZWR1PgogCisJKiBORVdTOiBUaGUgbG9jayBmb3IgJ0RJUi9G SUxFJyBpcyBub3cgYWx3YXlzICdESVIvLiNGSUxFJyAoQnVnIzEzODA3KS4KKwogCVNpbXBs aWZ5IGRhdGFfc3RhcnQgY29uZmlndXJhdGlvbiAoQnVnIzEzNzgzKS4KIAkqIE5FV1M6IERv Y3VtZW50IHJlbW92YWwgb2YgLS13aXRoLWNydC1kaXIuCiAJKiBQUk9CTEVNUyAoTElCU19T WVNURU0sIExJQlNfTUFDSElORSwgTElCU19TVEFOREFSRCk6IFJlbW92ZS4KCj09PSBtb2Rp ZmllZCBmaWxlICdldGMvTkVXUycKLS0tIGV0Yy9ORVdTCTIwMTMtMDItMjUgMTc6MzY6MDMg KzAwMDAKKysrIGV0Yy9ORVdTCTIwMTMtMDItMjUgMjM6MDA6MDYgKzAwMDAKQEAgLTMxOSw2 ICszMTksMTQgQEAKICoqIFRoZSBgZGVmYWxpYXMtZnNldC1mdW5jdGlvbicgcHJvcGVydHkg bGV0cyB5b3UgY2F0Y2ggY2FsbHMgdG8gZGVmYWxpYXMKIGFuZCByZWRpcmVjdCB0aGVtIHRv IHlvdXIgb3duIGZ1bmN0aW9uIGluc3RlYWQgb2YgYGZzZXQnLgogCisqKiBUaGUgbG9jayBm b3IgJ0RJUi9GSUxFJyBpcyBub3cgYWx3YXlzICdESVIvLiNGSUxFJy4KK1doZW4geW91IGVk aXQgRElSL0ZJTEUsIEVtYWNzIG5vcm1hbGx5IGNyZWF0ZXMgYSBzeW1ib2xpYyBsaW5rCitE SVIvLiNGSUxFIGFzIGEgbG9jayB0aGF0IHdhcm5zIG90aGVyIGluc3RhbmNlcyBvZiBFbWFj cyB0aGF0IERJUi9GSUxFCitpcyBiZWluZyBlZGl0ZWQuICBGb3JtZXJseSwgaWYgdGhlcmUg d2FzIGFscmVhZHkgYSBub24tc3ltbGluayBmaWxlCituYW1lZCBESVIvLiNGSUxFLCBFbWFj cyBmZWxsIGJhY2sgb24gdGhlIGxvY2sgbmFtZXMgRElSLy4jRklMRS4wCit0aHJvdWdoIERJ Ui8uI0ZJTEUuOS4gIFRoZXNlIGZhbGxiYWNrcyBoYXZlIGJlZW4gcmVtb3ZlZCwgc28gdGhh dAorRW1hY3Mgbm93IG5vIGxvbmdlciBsb2NrcyBESVIvRklMRSBpbiB0aGF0IGNhc2UuCisK ICoqIFRoZSA5dGggZWxlbWVudCByZXR1cm5lZCBieSBgZmlsZS1hdHRyaWJ1dGVzJyBpcyBu b3cgdW5zcGVjaWZpZWQuCiBGb3JtZXJseSwgaXQgd2FzIHQgaWYgdGhlIGZpbGUncyBnaWQg d291bGQgY2hhbmdlIGlmIGZpbGUgd2VyZSBkZWxldGVkCiBhbmQgcmVjcmVhdGVkLiAgVGhp cyB2YWx1ZSBoYXMgYmVlbiBpbmFjY3VyYXRlIGZvciB5ZWFycyBvbiBtYW55Cgo9PT0gbW9k aWZpZWQgZmlsZSAnc3JjL0NoYW5nZUxvZycKLS0tIHNyYy9DaGFuZ2VMb2cJMjAxMy0wMi0y NSAxNzozNjowMyArMDAwMAorKysgc3JjL0NoYW5nZUxvZwkyMDEzLTAyLTI1IDIzOjMzOjIx ICswMDAwCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTMtMDItMjUgIFBhdWwgRWdnZXJ0ICA8ZWdn ZXJ0QGNzLnVjbGEuZWR1PgorCisJVGhlIGxvY2sgZm9yICdESVIvRklMRScgaXMgbm93IGFs d2F5cyAnRElSLy4jRklMRScgKEJ1ZyMxMzgwNykuCisJVGhlIG9sZCBhcHByb2FjaCwgd2hp Y2ggZmVsbCBiYWNrIG9uIERJUi8uI0ZJTEUuMCB0aHJvdWdoCisJRElSLy4jRklMRS45LCBo YWQgcmFjZSBjb25kaXRpb25zIHRoYXQgY291bGQgbm90IGJlIGVhc2lseSBmaXhlZC4KKwlJ ZiBESVIvLiNGSUxFIGlzIGEgbm9uLXN5bWxpbmsgZmlsZSwgRW1hY3Mgbm93IGRvZXMgbm90 IGNyZWF0ZSBhCisJbG9jayBmaWxlIGZvciBESVIvRklMRTsgdGhhdCBpcywgRElSL0ZJTEUg aXMgbm8gbG9uZ2VyIHBhcnRseQorCXByb3RlY3RlZCBieSBhIGxvY2sgaWYgRElSLy4jRklM RSBpcyBhIG5vbi1zeW1saW5rIGZpbGUgKCJwYXJ0bHkiCisJYmVjYXVzZSB0aGUgbG9ja2lu ZyBtZWNoYW5pc20gd2FzIG5ldmVyIHJlbGlhYmxlIGluIHRoYXQgY2FzZSkuCisJVGhpcyBw YXRjaCBmaXhlcyB0aGlzIGFuZCBvdGhlciBidWdzIGRpc2NvdmVyZWQgYnkgYSBjb2RlCisJ aW5zcGVjdGlvbiB0aGF0IHdhcyBwcm9tcHRlZCBieQorCTxodHRwOi8vbGlzdHMuZ251Lm9y Zy9hcmNoaXZlL2h0bWwvZW1hY3MtZGV2ZWwvMjAxMy0wMi9tc2cwMDUzMS5odG1sPi4KKwkq IGZpbGVsb2NrLmMgKE1BS0VfTE9DS19OQU1FLCBmaWxsX2luX2xvY2tfZmlsZV9uYW1lKToK KwlEb24ndCBjcmVhdGUgRElSLy4jRklMRS4wIHRocm91Z2ggRElSLy4jRklMRS45LgorCShN QUtFX0xPQ0tfTkFNRSwgdW5sb2NrX2ZpbGUsIEZmaWxlX2xvY2tlZF9wKToKKwlVc2UgU0FG RV9BTExPQ0EgdG8gYXZvaWQgcHJvYmxlbXMgd2l0aCBsb25nIGZpbGUgbmFtZXMuCisJKE1B WF9MRklORk8pOiBOb3cgYSBsb2NhbCBjb25zdGFudCwgbm90IGEgZ2xvYmFsIG1hY3JvLgor CShJU19MT0NLX0ZJTEUpOiBSZW1vdmUuCisJKGxvY2tfZmlsZV8xKTogRG9uJ3QgaW5zcGVj dCBlcnJubyBpZiBzeW1saW5rIGNhbGwgc3VjY2VlZHM7CisJdGhhdCdzIG5vdCBwb3J0YWJs ZS4KKwkobG9ja19maWxlKTogRG9jdW1lbnQgdGhhdCB0aGlzIGZ1bmN0aW9uIGNhbiByZXR1 cm4gaWYgbG9jaworCWNyZWF0aW9uIGZhaWxzLgorCiAyMDEzLTAyLTI1ICBFbGkgWmFyZXRz a2lpICA8ZWxpekBnbnUub3JnPgogCiAJSW1wbGVtZW50IENMQVNIX0RFVEVDVElPTiBmb3Ig TVMtV2luZG93cy4KCj09PSBtb2RpZmllZCBmaWxlICdzcmMvZmlsZWxvY2suYycKLS0tIHNy Yy9maWxlbG9jay5jCTIwMTMtMDItMjUgMTc6MzY6MDMgKzAwMDAKKysrIHNyYy9maWxlbG9j ay5jCTIwMTMtMDItMjUgMjM6MzU6NTUgKzAwMDAKQEAgLTI5Miw1MyArMjkyLDIyIEBACiAK IAogLyogV3JpdGUgdGhlIG5hbWUgb2YgdGhlIGxvY2sgZmlsZSBmb3IgRk5BTUUgaW50byBM T0NLTkFNRS4gIExlbmd0aAotICAgd2lsbCBiZSB0aGF0IG9mIEZOIHBsdXMgdHdvIG1vcmUg Zm9yIHRoZSBsZWFkaW5nIGAuIycgcGx1cyAxIGZvcgotICAgdGhlIHRyYWlsaW5nIHBlcmlv ZCBwbHVzIG9uZSBmb3IgdGhlIGRpZ2l0IGFmdGVyIGl0IHBsdXMgb25lIGZvcgorICAgd2ls bCBiZSB0aGF0IG9mIEZOQU1FIHBsdXMgdHdvIG1vcmUgZm9yIHRoZSBsZWFkaW5nIGAuIycg cGx1cyBvbmUgZm9yCiAgICB0aGUgbnVsbC4gICovCi0jZGVmaW5lIE1BS0VfTE9DS19OQU1F KExPQ0tOQU1FLCBGTkFNRSkgXAotICAoTE9DS05BTUUgPSBhbGxvY2EgKFNCWVRFUyAoRk5B TUUpICsgMiArIDEgKyAxICsgMSksIFwKLSAgIGZpbGxfaW5fbG9ja19maWxlX25hbWUgKExP Q0tOQU1FLCAoRk5BTUUpKSkKLQotI2lmZGVmIFdJTkRPV1NOVAotLyogMjU2IGNoYXJzIGZv ciB1c2VyLCAxMDI0IGNoYXJzIGZvciBob3N0LCAxMCBkaWdpdHMgZm9yIGVhY2ggb2YgMiBp bnQncy4gICovCi0jZGVmaW5lIE1BWF9MRklORk8gKDI1NiArIDEwMjQgKyAxMCArIDEwICsg MikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAvKiBtaW4gc2l6ZTogLkBQSUQgKi8KLSNkZWZpbmUgSVNfTE9DS19GSUxFKFNUKSAoTUFY X0xGSU5GTyA+PSAoU1QpLnN0X3NpemUgJiYgKFNUKS5zdF9zaXplID49IDMpCi0jZWxzZQot I2RlZmluZSBJU19MT0NLX0ZJTEUoU1QpIFNfSVNMTksgKChTVCkuc3RfbW9kZSkKLSNlbmRp ZgorI2RlZmluZSBNQUtFX0xPQ0tfTkFNRShsb2NrbmFtZSwgZm5hbWUpIFwKKyAgKGxvY2tu YW1lID0gU0FGRV9BTExPQ0EgKFNCWVRFUyAoZm5hbWUpICsgMiArIDEpLCBcCisgICBmaWxs X2luX2xvY2tfZmlsZV9uYW1lIChsb2NrbmFtZSwgZm5hbWUpKQogCiBzdGF0aWMgdm9pZAot ZmlsbF9pbl9sb2NrX2ZpbGVfbmFtZSAocmVnaXN0ZXIgY2hhciAqbG9ja2ZpbGUsIHJlZ2lz dGVyIExpc3BfT2JqZWN0IGZuKQorZmlsbF9pbl9sb2NrX2ZpbGVfbmFtZSAoY2hhciAqbG9j a2ZpbGUsIExpc3BfT2JqZWN0IGZuKQogewotICBwdHJkaWZmX3QgbGVuZ3RoID0gU0JZVEVT IChmbik7Ci0gIHJlZ2lzdGVyIGNoYXIgKnA7Ci0gIHN0cnVjdCBzdGF0IHN0OwotICBpbnQg Y291bnQgPSAwOwotCi0gIHN0cmNweSAobG9ja2ZpbGUsIFNTREFUQSAoZm4pKTsKLQotICAv KiBTaGlmdCB0aGUgbm9uZGlyZWN0b3J5IHBhcnQgb2YgdGhlIGZpbGUgbmFtZSAoaW5jbHVk aW5nIHRoZSBudWxsKQotICAgICByaWdodCB0d28gY2hhcmFjdGVycy4gIEhlcmUgaXMgb25l IG9mIHRoZSBwbGFjZXMgd2hlcmUgd2UnZCBoYXZlIHRvCi0gICAgIGRvIHNvbWV0aGluZyB0 byBzdXBwb3J0IDE0LWNoYXJhY3Rlci1tYXggZmlsZSBuYW1lcy4gICovCi0gIGZvciAocCA9 IGxvY2tmaWxlICsgbGVuZ3RoOyBwICE9IGxvY2tmaWxlICYmICpwICE9ICcvJzsgcC0tKQot ICAgIHBbMl0gPSAqcDsKLQotICAvKiBJbnNlcnQgdGhlIGAuIycuICAqLwotICBwWzFdID0g Jy4nOwotICBwWzJdID0gJyMnOwotCi0gIHAgPSBsb2NrZmlsZSArIGxlbmd0aCArIDI7Ci0K LSAgd2hpbGUgKGxzdGF0IChsb2NrZmlsZSwgJnN0KSA9PSAwICYmICFJU19MT0NLX0ZJTEUg KHN0KSkKLSAgICB7Ci0gICAgICBpZiAoY291bnQgPiA5KQotCXsKLQkgICpwID0gJ1wwJzsK LQkgIHJldHVybjsKLQl9Ci0gICAgICBzcHJpbnRmIChwLCAiLiVkIiwgY291bnQrKyk7Ci0g ICAgfQorICBjaGFyICpsYXN0X3NsYXNoID0gbWVtcmNociAoU1NEQVRBIChmbiksICcvJywg U0JZVEVTIChmbikpOworICBjaGFyICpiYXNlID0gbGFzdF9zbGFzaCArIDE7CisgIHB0cmRp ZmZfdCBkaXJsZW4gPSBiYXNlIC0gU1NEQVRBIChmbik7CisgIG1lbWNweSAobG9ja2ZpbGUs IFNTREFUQSAoZm4pLCBkaXJsZW4pOworICBsb2NrZmlsZVtkaXJsZW5dID0gJy4nOworICBs b2NrZmlsZVtkaXJsZW4gKyAxXSA9ICcjJzsKKyAgc3RyY3B5IChsb2NrZmlsZSArIGRpcmxl biArIDIsIGJhc2UpOwogfQogCiBzdGF0aWMgaW50CkBAIC0zNzQsNyArMzQzLDcgQEAKICAg fQogI2Vsc2UKICAgZXJyID0gc3ltbGluayAobG9ja19pbmZvX3N0ciwgbGZuYW1lKTsKLSAg aWYgKGVycm5vID09IEVFWElTVCAmJiBmb3JjZSkKKyAgaWYgKGVyciAhPSAwICYmIGVycm5v ID09IEVFWElTVCAmJiBmb3JjZSkKICAgICB7CiAgICAgICB1bmxpbmsgKGxmbmFtZSk7CiAg ICAgICBlcnIgPSBzeW1saW5rIChsb2NrX2luZm9fc3RyLCBsZm5hbWUpOwpAQCAtNDM0LDYg KzQwMyw4IEBACiAjZWxzZQogICBpbnQgZmQgPSBlbWFjc19vcGVuIChsZm5hbWUsIE9fUkRP TkxZIHwgT19CSU5BUlksIFNfSVJFQUQpOwogICBzc2l6ZV90IG5ieXRlczsKKyAgLyogMjU2 IGNoYXJzIGZvciB1c2VyLCAxMDI0IGNoYXJzIGZvciBob3N0LCAxMCBkaWdpdHMgZm9yIGVh Y2ggb2YgMiBpbnQncy4gICovCisgIGVudW0geyBNQVhfTEZJTkZPID0gMjU2ICsgMTAyNCAr IDEwICsgMTAgKyAyIH07CiAgIGNoYXIgbGZpbmZvW01BWF9MRklORk8gKyAxXTsKIAogICBp ZiAoZmQgPCAwKQpAQCAtNTk1LDYgKzU2Niw3IEBACiAgICBkZWNpZGVkIHRvIGdvIGFoZWFk IHdpdGhvdXQgbG9ja2luZy4KIAogICAgV2hlbiB0aGlzIHJldHVybnMsIGVpdGhlciB0aGUg bG9jayBpcyBsb2NrZWQgZm9yIHVzLAorICAgb3IgbG9jayBjcmVhdGlvbiBmYWlsZWQsCiAg ICBvciB0aGUgdXNlciBoYXMgc2FpZCB0byBnbyBhaGVhZCB3aXRob3V0IGxvY2tpbmcuCiAK ICAgIElmIHRoZSBmaWxlIGlzIGxvY2tlZCBieSBzb21lb25lIGVsc2UsIHRoaXMgY2FsbHMK QEAgLTY4MCw5ICs2NTIsMTAgQEAKIH0KIAogdm9pZAotdW5sb2NrX2ZpbGUgKHJlZ2lzdGVy IExpc3BfT2JqZWN0IGZuKQordW5sb2NrX2ZpbGUgKExpc3BfT2JqZWN0IGZuKQogewotICBy ZWdpc3RlciBjaGFyICpsZm5hbWU7CisgIGNoYXIgKmxmbmFtZTsKKyAgVVNFX1NBRkVfQUxM T0NBOwogCiAgIGZuID0gRmV4cGFuZF9maWxlX25hbWUgKGZuLCBRbmlsKTsKICAgZm4gPSBF TkNPREVfRklMRSAoZm4pOwpAQCAtNjkxLDYgKzY2NCw4IEBACiAKICAgaWYgKGN1cnJlbnRf bG9ja19vd25lciAoMCwgbGZuYW1lKSA9PSAyKQogICAgIHVubGluayAobGZuYW1lKTsKKwor ICBTQUZFX0ZSRUUgKCk7CiB9CiAKIHZvaWQKQEAgLTc1Niw5ICs3MzEsMTAgQEAKICAgKExp c3BfT2JqZWN0IGZpbGVuYW1lKQogewogICBMaXNwX09iamVjdCByZXQ7Ci0gIHJlZ2lzdGVy IGNoYXIgKmxmbmFtZTsKKyAgY2hhciAqbGZuYW1lOwogICBpbnQgb3duZXI7CiAgIGxvY2tf aW5mb190eXBlIGxvY2tlcjsKKyAgVVNFX1NBRkVfQUxMT0NBOwogCiAgIGZpbGVuYW1lID0g RmV4cGFuZF9maWxlX25hbWUgKGZpbGVuYW1lLCBRbmlsKTsKIApAQCAtNzc1LDYgKzc1MSw3 IEBACiAgIGlmIChvd25lciA+IDApCiAgICAgRlJFRV9MT0NLX0lORk8gKGxvY2tlcik7CiAK KyAgU0FGRV9GUkVFICgpOwogICByZXR1cm4gcmV0OwogfQogCgo= --------------060308010303020006080800-- From debbugs-submit-bounces@debbugs.gnu.org Tue Feb 26 17:21:45 2013 Received: (at 13807) by debbugs.gnu.org; 26 Feb 2013 22:21:45 +0000 Received: from localhost ([127.0.0.1]:51754 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UASu8-0007tt-Pe for submit@debbugs.gnu.org; Tue, 26 Feb 2013 17:21:45 -0500 Received: from smtp.cs.ucla.edu ([131.179.128.62]:40743) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UASu5-0007tj-Ap for 13807@debbugs.gnu.org; Tue, 26 Feb 2013 17:21:43 -0500 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id D473139E8106 for <13807@debbugs.gnu.org>; Tue, 26 Feb 2013 14:19:53 -0800 (PST) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 3D4T3A2Q-AkD for <13807@debbugs.gnu.org>; Tue, 26 Feb 2013 14:19:52 -0800 (PST) Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id B54BC39E8008 for <13807@debbugs.gnu.org>; Tue, 26 Feb 2013 14:19:52 -0800 (PST) Message-ID: <512D3508.1000906@cs.ucla.edu> Date: Tue, 26 Feb 2013 14:19:52 -0800 From: Paul Eggert User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130219 Thunderbird/17.0.3 MIME-Version: 1.0 To: 13807@debbugs.gnu.org Subject: updated version to avoid MS-Windows vs non-MS-Windows clashes Content-Type: multipart/mixed; boundary="------------060106060008000500000000" X-Spam-Score: -4.9 (----) X-Debbugs-Envelope-To: 13807 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -4.9 (----) This is a multi-part message in MIME format. --------------060106060008000500000000 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Attached is an updated version of the patch, which avoids several of the problems mentioned, by using a different lock file name on MS-Windows. Non-MS-Windows uses .#FILE symlinks as before; MS-Windows uses .#-FILE regular files. This avoids clashes between the two approaches. It also means MS-Windows ignores non-MS-Windows locks and vice versa, but given all the inherent incompatibilities involved this may be the best that we can do reliably. --------------060106060008000500000000 Content-Type: text/plain; charset=us-ascii; name="filelock.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="filelock.txt" PT09IG1vZGlmaWVkIGZpbGUgJ2V0Yy9DaGFuZ2VMb2cnCi0tLSBldGMvQ2hhbmdlTG9nCTIw MTMtMDItMjUgMTc6MDE6NDEgKzAwMDAKKysrIGV0Yy9DaGFuZ2VMb2cJMjAxMy0wMi0yNiAy MTo1NToyMSArMDAwMApAQCAtMSwzICsxLDcgQEAKKzIwMTMtMDItMjYgIFBhdWwgRWdnZXJ0 ICA8ZWdnZXJ0QGNzLnVjbGEuZWR1PgorCisJKiBORVdTOiBUaGUgbG9jayBmb3IgRklMRSBp cyBub3cgLiNGSUxFIG9yIC4jLUZJTEUgKEJ1ZyMxMzgwNykuCisKIDIwMTMtMDItMjUgIFBh dWwgRWdnZXJ0ICA8ZWdnZXJ0QGNzLnVjbGEuZWR1PgogCiAJU2ltcGxpZnkgZGF0YV9zdGFy dCBjb25maWd1cmF0aW9uIChCdWcjMTM3ODMpLgoKPT09IG1vZGlmaWVkIGZpbGUgJ2V0Yy9O RVdTJwotLS0gZXRjL05FV1MJMjAxMy0wMi0yNSAxNzozNjowMyArMDAwMAorKysgZXRjL05F V1MJMjAxMy0wMi0yNiAyMTo1NToyMSArMDAwMApAQCAtMzE5LDYgKzMxOSwxOCBAQAogKiog VGhlIGBkZWZhbGlhcy1mc2V0LWZ1bmN0aW9uJyBwcm9wZXJ0eSBsZXRzIHlvdSBjYXRjaCBj YWxscyB0byBkZWZhbGlhcwogYW5kIHJlZGlyZWN0IHRoZW0gdG8geW91ciBvd24gZnVuY3Rp b24gaW5zdGVhZCBvZiBgZnNldCcuCiAKKyoqIFRoZSBsb2NrIGZvciAnRElSL0ZJTEUnIGlz IG5vdyAnRElSLy4jRklMRScgb3IgJ0RJUi8uIy1GSUxFJy4KK1doZW4geW91IGVkaXQgRElS L0ZJTEUsIEVtYWNzIG5vcm1hbGx5IGNyZWF0ZXMgYSBzeW1ib2xpYyBsaW5rCitESVIvLiNG SUxFIGFzIGEgbG9jayB0aGF0IHdhcm5zIG90aGVyIGluc3RhbmNlcyBvZiBFbWFjcyB0aGF0 IERJUi9GSUxFCitpcyBiZWluZyBlZGl0ZWQuICBGb3JtZXJseSwgaWYgdGhlcmUgd2FzIGFs cmVhZHkgYSBub24tc3ltbGluayBmaWxlCituYW1lZCBESVIvLiNGSUxFLCBFbWFjcyBmZWxs IGJhY2sgb24gdGhlIGxvY2sgbmFtZXMgRElSLy4jRklMRS4wCit0aHJvdWdoIERJUi8uI0ZJ TEUuOS4gIFRoZXNlIGZhbGxiYWNrcyBoYXZlIGJlZW4gcmVtb3ZlZCwgc28gdGhhdAorRW1h Y3Mgbm93IG5vIGxvbmdlciBsb2NrcyBESVIvRklMRSBpbiB0aGF0IGNhc2UuCisKK09uIE1T LVdpbmRvd3MgdGhlIGxvY2sgaXMgYSByZWd1bGFyIGZpbGUgRElSLy4jLUZJTEUsIG5vdCBh IHN5bWxpbmsuCitNUy1XaW5kb3dzIGFuZCBub24tTVMtV2luZG93cyBpbXBsZW1lbnRhdGlv bnMgb2YgRW1hY3MgaWdub3JlIGVhY2gKK290aGVyJ3MgbG9ja3MuCisKICoqIFRoZSA5dGgg ZWxlbWVudCByZXR1cm5lZCBieSBgZmlsZS1hdHRyaWJ1dGVzJyBpcyBub3cgdW5zcGVjaWZp ZWQuCiBGb3JtZXJseSwgaXQgd2FzIHQgaWYgdGhlIGZpbGUncyBnaWQgd291bGQgY2hhbmdl IGlmIGZpbGUgd2VyZSBkZWxldGVkCiBhbmQgcmVjcmVhdGVkLiAgVGhpcyB2YWx1ZSBoYXMg YmVlbiBpbmFjY3VyYXRlIGZvciB5ZWFycyBvbiBtYW55Cgo9PT0gbW9kaWZpZWQgZmlsZSAn c3JjL0NoYW5nZUxvZycKLS0tIHNyYy9DaGFuZ2VMb2cJMjAxMy0wMi0yNiAxNDoyODozNyAr MDAwMAorKysgc3JjL0NoYW5nZUxvZwkyMDEzLTAyLTI2IDIxOjU4OjA2ICswMDAwCkBAIC0x LDMgKzEsMzMgQEAKKzIwMTMtMDItMjYgIFBhdWwgRWdnZXJ0ICA8ZWdnZXJ0QGNzLnVjbGEu ZWR1PgorCisJVGhlIGxvY2sgZm9yIEZJTEUgaXMgbm93IC4jRklMRSBvciAuIy1GSUxFIChC dWcjMTM4MDcpLgorCVRoZSBvbGQgYXBwcm9hY2gsIHdoaWNoIGZlbGwgYmFjayBvbiBESVIv LiNGSUxFLjAgdGhyb3VnaAorCURJUi8uI0ZJTEUuOSwgaGFkIHJhY2UgY29uZGl0aW9ucyB0 aGF0IGNvdWxkIG5vdCBiZSBlYXNpbHkgZml4ZWQuCisJSWYgRElSLy4jRklMRSBpcyBhIG5v bi1zeW1saW5rIGZpbGUsIEVtYWNzIG5vdyBkb2VzIG5vdCBjcmVhdGUgYQorCWxvY2sgZmls ZSBmb3IgRElSL0ZJTEU7IHRoYXQgaXMsIERJUi9GSUxFIGlzIG5vIGxvbmdlciBwYXJ0bHkK Kwlwcm90ZWN0ZWQgYnkgYSBsb2NrIGlmIERJUi8uI0ZJTEUgaXMgYSBub24tc3ltbGluayBm aWxlICgicGFydGx5IgorCWJlY2F1c2UgdGhlIGxvY2tpbmcgbWVjaGFuaXNtIHdhcyBuZXZl ciByZWxpYWJsZSBpbiB0aGF0IGNhc2UpLgorCVRoaXMgcGF0Y2ggZml4ZXMgdGhpcyBhbmQg b3RoZXIgYnVncyBkaXNjb3ZlcmVkIGJ5IGEgY29kZQorCWluc3BlY3Rpb24gdGhhdCB3YXMg cHJvbXB0ZWQgYnkKKwk8aHR0cDovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2VtYWNz LWRldmVsLzIwMTMtMDIvbXNnMDA1MzEuaHRtbD4uCisJQWxzbywgdGhpcyBwYXRjaCBzd2l0 Y2hlcyB0byAuIy1GSUxFIChub3QgLiNGSUxFKSBvbiBNUy1XaW5kb3dzLAorCXRvIGF2b2lk IGludGVyb3BlcmFiaWxpdHkgcHJvYmxlbXMgYmV0d2VlbiB0aGUgTVMtV2luZG93cyBhbmQK Kwlub24tTVMtV2luZG93cyBpbXBsZW1lbnRhdGlvbnMuICBNUy1XaW5kb3dzIGFuZCBub24t TVMtV2luZG93cworCWluc3RhbmNlcyBvZiBFbWFjcyBub3cgaWdub3JlIGVhY2ggb3RoZXJz JyBsb2Nrcy4KKwkqIGZpbGVsb2NrLmMgKGRlZmluZWRfV0lORE9XU05UKTogTmV3IGNvbnN0 YW50LgorCShNQUtFX0xPQ0tfTkFNRSwgZmlsbF9pbl9sb2NrX2ZpbGVfbmFtZSk6CisJRG9u J3QgY3JlYXRlIERJUi8uI0ZJTEUuMCB0aHJvdWdoIERJUi8uI0ZJTEUuOS4gIEluc3RlYWQs IGNyZWF0ZQorCURJUi8uI0ZJTEUgc3ltbGlua3Mgb24gbm9uLU1TLVdpbmRvd3MgaG9zdHMs IGFuZCBESVIvLiMtRklMRQorCXJlZ3VsYXIgZmlsZXMgb24gTVMtV2luZG93cyBob3N0cy4K KwkoTUFLRV9MT0NLX05BTUUsIHVubG9ja19maWxlLCBGZmlsZV9sb2NrZWRfcCk6CisJVXNl IFNBRkVfQUxMT0NBIHRvIGF2b2lkIHByb2JsZW1zIHdpdGggbG9uZyBmaWxlIG5hbWVzLgor CShNQVhfTEZJTkZPKTogTm93IGEgbG9jYWwgY29uc3RhbnQsIG5vdCBhIGdsb2JhbCBtYWNy by4KKwkoSVNfTE9DS19GSUxFKTogUmVtb3ZlLgorCShsb2NrX2ZpbGVfMSk6IERvbid0IGlu c3BlY3QgZXJybm8gaWYgc3ltbGluayBjYWxsIHN1Y2NlZWRzOworCXRoYXQncyBub3QgcG9y dGFibGUuCisJKGxvY2tfZmlsZSk6IERvY3VtZW50IHRoYXQgdGhpcyBmdW5jdGlvbiBjYW4g cmV0dXJuIGlmIGxvY2sKKwljcmVhdGlvbiBmYWlscy4KKwogMjAxMy0wMi0yNiAgQmFzdGll biBHdWVycnkgIDxiemdAZ251Lm9yZz4KIAogCSogd2luZG93LmMgKEZyZWNlbnRlcik6IFRp bnkgZG9jc3RyaW5nIGVuaGFuY2VtZW50LgoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9maWxl bG9jay5jJwotLS0gc3JjL2ZpbGVsb2NrLmMJMjAxMy0wMi0yNSAxNzozNjowMyArMDAwMAor Kysgc3JjL2ZpbGVsb2NrLmMJMjAxMy0wMi0yNiAyMTo0OTo1NCArMDAwMApAQCAtNjMsNyAr NjMsOCBAQAogI2RlZmluZSBXVE1QX0ZJTEUgIi92YXIvbG9nL3d0bXAiCiAjZW5kaWYKIAot LyogVGhlIHN0cmF0ZWd5OiB0byBsb2NrIGEgZmlsZSBGTiwgY3JlYXRlIGEgc3ltbGluayAu I0ZOIGluIEZOJ3MKKy8qIE9uIG5vbi1NUy1XaW5kb3dzIHN5c3RlbXMsIHVzZSBhIHN5bWJv bGljIGxpbmsgdG8gcmVwcmVzZW50IGEgbG9jay4KKyAgIFRoZSBzdHJhdGVneTogdG8gbG9j ayBhIGZpbGUgRk4sIGNyZWF0ZSBhIHN5bWxpbmsgLiNGTiBpbiBGTidzCiAgICBkaXJlY3Rv cnksIHdpdGggbGluayBkYXRhIGB1c2VyQGhvc3QucGlkJy4gIFRoaXMgYXZvaWRzIGEgc2lu Z2xlCiAgICBtb3VudCAoPT0gZmFpbHVyZSkgcG9pbnQgZm9yIGxvY2sgZmlsZXMuCiAKQEAg LTk2LDcgKzk3LDEzIEBACiAgICBoYXMgY29udHJpYnV0ZWQgdGhpcyBpbXBsZW1lbnRhdGlv biBmb3IgRW1hY3MpLCBhbmQgd2FzIGRlc2lnbmVkIGJ5CiAgICBFdGhhbiBKYWNvYnNvbiwg S2ltYm8gTXVuZHksIGFuZCBvdGhlcnMuCiAKLSAgIC0ta2FybEBjcy51bWIuZWR1L2thcmxA aHEuaWxlYWYuY29tLiAgKi8KKyAgIC0ta2FybEBjcy51bWIuZWR1L2thcmxAaHEuaWxlYWYu Y29tLgorCisgICBPbiBNUy1XaW5kb3dzLCBzeW1ib2xpYyBsaW5rcyBkbyBub3Qgd29yayB3 ZWxsLCBzbyBpbnN0ZWFkIG9mIGEKKyAgIHN5bWxpbmsgLiNGTiAtPiAndXNlckBob3N0LnBp ZCcsIHRoZSBsb2NrIGlzIGEgcmVndWxhciBmaWxlIC4jLUZOCisgICB3aXRoIGNvbnRlbnRz ICd1c2VyQGhvc3QucGlkJy4gIE1TLVdpbmRvd3MgYW5kIG5vbi1NUy1XaW5kb3dzCisgICB2 ZXJzaW9ucyBvZiBFbWFjcyBpZ25vcmUgZWFjaCBvdGhlcidzIGxvY2tzLCBhbmQgdGhlIE1T LVdpbmRvd3MKKyAgIGltcGxlbWVudGF0aW9uIGhhcyByYWNlcyBkdWUgdG8gaXRzIHVzZSBv ZiBub24tYXRvbWljIG9wZXJhdGlvbnMuICAqLwogCiAMCiAvKiBSZXR1cm4gdGhlIHRpbWUg b2YgdGhlIGxhc3Qgc3lzdGVtIGJvb3QuICAqLwpAQCAtMjkwLDU1ICsyOTcsMzEgQEAKIC8q IEZyZWUgdGhlIHR3byBkeW5hbWljYWxseS1hbGxvY2F0ZWQgcGllY2VzIGluIFBUUi4gICov CiAjZGVmaW5lIEZSRUVfTE9DS19JTkZPKGkpIGRvIHsgeGZyZWUgKChpKS51c2VyKTsgeGZy ZWUgKChpKS5ob3N0KTsgfSB3aGlsZSAoMCkKIAorI2lmZGVmIFdJTkRPV1NOVAorZW51bSB7 IGRlZmluZWRfV0lORE9XU05UID0gMSB9OworI2Vsc2UKK2VudW0geyBkZWZpbmVkX1dJTkRP V1NOVCA9IDAgfTsKKyNlbmRpZgogCiAvKiBXcml0ZSB0aGUgbmFtZSBvZiB0aGUgbG9jayBm aWxlIGZvciBGTkFNRSBpbnRvIExPQ0tOQU1FLiAgTGVuZ3RoCi0gICB3aWxsIGJlIHRoYXQg b2YgRk4gcGx1cyB0d28gbW9yZSBmb3IgdGhlIGxlYWRpbmcgYC4jJyBwbHVzIDEgZm9yCi0g ICB0aGUgdHJhaWxpbmcgcGVyaW9kIHBsdXMgb25lIGZvciB0aGUgZGlnaXQgYWZ0ZXIgaXQg cGx1cyBvbmUgZm9yCi0gICB0aGUgbnVsbC4gICovCi0jZGVmaW5lIE1BS0VfTE9DS19OQU1F KExPQ0tOQU1FLCBGTkFNRSkgXAotICAoTE9DS05BTUUgPSBhbGxvY2EgKFNCWVRFUyAoRk5B TUUpICsgMiArIDEgKyAxICsgMSksIFwKLSAgIGZpbGxfaW5fbG9ja19maWxlX25hbWUgKExP Q0tOQU1FLCAoRk5BTUUpKSkKLQotI2lmZGVmIFdJTkRPV1NOVAotLyogMjU2IGNoYXJzIGZv ciB1c2VyLCAxMDI0IGNoYXJzIGZvciBob3N0LCAxMCBkaWdpdHMgZm9yIGVhY2ggb2YgMiBp bnQncy4gICovCi0jZGVmaW5lIE1BWF9MRklORk8gKDI1NiArIDEwMjQgKyAxMCArIDEwICsg MikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAvKiBtaW4gc2l6ZTogLkBQSUQgKi8KLSNkZWZpbmUgSVNfTE9DS19GSUxFKFNUKSAoTUFY X0xGSU5GTyA+PSAoU1QpLnN0X3NpemUgJiYgKFNUKS5zdF9zaXplID49IDMpCi0jZWxzZQot I2RlZmluZSBJU19MT0NLX0ZJTEUoU1QpIFNfSVNMTksgKChTVCkuc3RfbW9kZSkKLSNlbmRp ZgorICAgd2lsbCBiZSB0aGF0IG9mIEZOQU1FIHBsdXMgdHdvIG1vcmUgZm9yIHRoZSBsZWFk aW5nICIuIyIsCisgICBwbHVzIG9uZSBmb3IgIi0iIGlmIE1TLVdpbmRvd3MsIHBsdXMgb25l IGZvciB0aGUgbnVsbC4gICovCisjZGVmaW5lIE1BS0VfTE9DS19OQU1FKGxvY2tuYW1lLCBm bmFtZSkgXAorICAobG9ja25hbWUgPSBTQUZFX0FMTE9DQSAoU0JZVEVTIChmbmFtZSkgKyAy ICsgZGVmaW5lZF9XSU5ET1dTTlQgKyAxKSwgXAorICAgZmlsbF9pbl9sb2NrX2ZpbGVfbmFt ZSAobG9ja25hbWUsIGZuYW1lKSkKIAogc3RhdGljIHZvaWQKLWZpbGxfaW5fbG9ja19maWxl X25hbWUgKHJlZ2lzdGVyIGNoYXIgKmxvY2tmaWxlLCByZWdpc3RlciBMaXNwX09iamVjdCBm bikKK2ZpbGxfaW5fbG9ja19maWxlX25hbWUgKGNoYXIgKmxvY2tmaWxlLCBMaXNwX09iamVj dCBmbikKIHsKLSAgcHRyZGlmZl90IGxlbmd0aCA9IFNCWVRFUyAoZm4pOwotICByZWdpc3Rl ciBjaGFyICpwOwotICBzdHJ1Y3Qgc3RhdCBzdDsKLSAgaW50IGNvdW50ID0gMDsKLQotICBz dHJjcHkgKGxvY2tmaWxlLCBTU0RBVEEgKGZuKSk7Ci0KLSAgLyogU2hpZnQgdGhlIG5vbmRp cmVjdG9yeSBwYXJ0IG9mIHRoZSBmaWxlIG5hbWUgKGluY2x1ZGluZyB0aGUgbnVsbCkKLSAg ICAgcmlnaHQgdHdvIGNoYXJhY3RlcnMuICBIZXJlIGlzIG9uZSBvZiB0aGUgcGxhY2VzIHdo ZXJlIHdlJ2QgaGF2ZSB0bwotICAgICBkbyBzb21ldGhpbmcgdG8gc3VwcG9ydCAxNC1jaGFy YWN0ZXItbWF4IGZpbGUgbmFtZXMuICAqLwotICBmb3IgKHAgPSBsb2NrZmlsZSArIGxlbmd0 aDsgcCAhPSBsb2NrZmlsZSAmJiAqcCAhPSAnLyc7IHAtLSkKLSAgICBwWzJdID0gKnA7Ci0K LSAgLyogSW5zZXJ0IHRoZSBgLiMnLiAgKi8KLSAgcFsxXSA9ICcuJzsKLSAgcFsyXSA9ICcj JzsKLQotICBwID0gbG9ja2ZpbGUgKyBsZW5ndGggKyAyOwotCi0gIHdoaWxlIChsc3RhdCAo bG9ja2ZpbGUsICZzdCkgPT0gMCAmJiAhSVNfTE9DS19GSUxFIChzdCkpCi0gICAgewotICAg ICAgaWYgKGNvdW50ID4gOSkKLQl7Ci0JICAqcCA9ICdcMCc7Ci0JICByZXR1cm47Ci0JfQot ICAgICAgc3ByaW50ZiAocCwgIi4lZCIsIGNvdW50KyspOwotICAgIH0KKyAgY2hhciAqbGFz dF9zbGFzaCA9IG1lbXJjaHIgKFNTREFUQSAoZm4pLCAnLycsIFNCWVRFUyAoZm4pKTsKKyAg Y2hhciAqYmFzZSA9IGxhc3Rfc2xhc2ggKyAxOworICBwdHJkaWZmX3QgZGlybGVuID0gYmFz ZSAtIFNTREFUQSAoZm4pOworICBtZW1jcHkgKGxvY2tmaWxlLCBTU0RBVEEgKGZuKSwgZGly bGVuKTsKKyAgbG9ja2ZpbGVbZGlybGVuXSA9ICcuJzsKKyAgbG9ja2ZpbGVbZGlybGVuICsg MV0gPSAnIyc7CisgIGlmIChkZWZpbmVkX1dJTkRPV1NOVCkKKyAgICBsb2NrZmlsZVtkaXJs ZW4gKyAyXSA9ICctJzsKKyAgc3RyY3B5IChsb2NrZmlsZSArIGRpcmxlbiArIDIgKyBkZWZp bmVkX1dJTkRPV1NOVCwgYmFzZSk7CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTM3NCw3ICszNTcs NyBAQAogICB9CiAjZWxzZQogICBlcnIgPSBzeW1saW5rIChsb2NrX2luZm9fc3RyLCBsZm5h bWUpOwotICBpZiAoZXJybm8gPT0gRUVYSVNUICYmIGZvcmNlKQorICBpZiAoZXJyICE9IDAg JiYgZXJybm8gPT0gRUVYSVNUICYmIGZvcmNlKQogICAgIHsKICAgICAgIHVubGluayAobGZu YW1lKTsKICAgICAgIGVyciA9IHN5bWxpbmsgKGxvY2tfaW5mb19zdHIsIGxmbmFtZSk7CkBA IC00MzQsNiArNDE3LDggQEAKICNlbHNlCiAgIGludCBmZCA9IGVtYWNzX29wZW4gKGxmbmFt ZSwgT19SRE9OTFkgfCBPX0JJTkFSWSwgU19JUkVBRCk7CiAgIHNzaXplX3QgbmJ5dGVzOwor ICAvKiAyNTYgY2hhcnMgZm9yIHVzZXIsIDEwMjQgY2hhcnMgZm9yIGhvc3QsIDEwIGRpZ2l0 cyBmb3IgZWFjaCBvZiAyIGludCdzLiAgKi8KKyAgZW51bSB7IE1BWF9MRklORk8gPSAyNTYg KyAxMDI0ICsgMTAgKyAxMCArIDIgfTsKICAgY2hhciBsZmluZm9bTUFYX0xGSU5GTyArIDFd OwogCiAgIGlmIChmZCA8IDApCkBAIC01OTUsNiArNTgwLDcgQEAKICAgIGRlY2lkZWQgdG8g Z28gYWhlYWQgd2l0aG91dCBsb2NraW5nLgogCiAgICBXaGVuIHRoaXMgcmV0dXJucywgZWl0 aGVyIHRoZSBsb2NrIGlzIGxvY2tlZCBmb3IgdXMsCisgICBvciBsb2NrIGNyZWF0aW9uIGZh aWxlZCwKICAgIG9yIHRoZSB1c2VyIGhhcyBzYWlkIHRvIGdvIGFoZWFkIHdpdGhvdXQgbG9j a2luZy4KIAogICAgSWYgdGhlIGZpbGUgaXMgbG9ja2VkIGJ5IHNvbWVvbmUgZWxzZSwgdGhp cyBjYWxscwpAQCAtNjgwLDkgKzY2NiwxMCBAQAogfQogCiB2b2lkCi11bmxvY2tfZmlsZSAo cmVnaXN0ZXIgTGlzcF9PYmplY3QgZm4pCit1bmxvY2tfZmlsZSAoTGlzcF9PYmplY3QgZm4p CiB7Ci0gIHJlZ2lzdGVyIGNoYXIgKmxmbmFtZTsKKyAgY2hhciAqbGZuYW1lOworICBVU0Vf U0FGRV9BTExPQ0E7CiAKICAgZm4gPSBGZXhwYW5kX2ZpbGVfbmFtZSAoZm4sIFFuaWwpOwog ICBmbiA9IEVOQ09ERV9GSUxFIChmbik7CkBAIC02OTEsNiArNjc4LDggQEAKIAogICBpZiAo Y3VycmVudF9sb2NrX293bmVyICgwLCBsZm5hbWUpID09IDIpCiAgICAgdW5saW5rIChsZm5h bWUpOworCisgIFNBRkVfRlJFRSAoKTsKIH0KIAogdm9pZApAQCAtNzU2LDkgKzc0NSwxMCBA QAogICAoTGlzcF9PYmplY3QgZmlsZW5hbWUpCiB7CiAgIExpc3BfT2JqZWN0IHJldDsKLSAg cmVnaXN0ZXIgY2hhciAqbGZuYW1lOworICBjaGFyICpsZm5hbWU7CiAgIGludCBvd25lcjsK ICAgbG9ja19pbmZvX3R5cGUgbG9ja2VyOworICBVU0VfU0FGRV9BTExPQ0E7CiAKICAgZmls ZW5hbWUgPSBGZXhwYW5kX2ZpbGVfbmFtZSAoZmlsZW5hbWUsIFFuaWwpOwogCkBAIC03NzUs NiArNzY1LDcgQEAKICAgaWYgKG93bmVyID4gMCkKICAgICBGUkVFX0xPQ0tfSU5GTyAobG9j a2VyKTsKIAorICBTQUZFX0ZSRUUgKCk7CiAgIHJldHVybiByZXQ7CiB9CiAK --------------060106060008000500000000-- From debbugs-submit-bounces@debbugs.gnu.org Wed Feb 27 13:51:39 2013 Received: (at 13807) by debbugs.gnu.org; 27 Feb 2013 18:51:39 +0000 Received: from localhost ([127.0.0.1]:53930 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UAm6N-0003nn-BX for submit@debbugs.gnu.org; Wed, 27 Feb 2013 13:51:39 -0500 Received: from mtaout20.012.net.il ([80.179.55.166]:37397) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UAm6L-0003nf-CG for 13807@debbugs.gnu.org; Wed, 27 Feb 2013 13:51:38 -0500 Received: from conversion-daemon.a-mtaout20.012.net.il by a-mtaout20.012.net.il (HyperSendmail v2007.08) id <0MIW00M006HCWH00@a-mtaout20.012.net.il> for 13807@debbugs.gnu.org; Wed, 27 Feb 2013 20:49:43 +0200 (IST) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by a-mtaout20.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0MIW00M4L6YUTS60@a-mtaout20.012.net.il>; Wed, 27 Feb 2013 20:49:43 +0200 (IST) Date: Wed, 27 Feb 2013 20:49:42 +0200 From: Eli Zaretskii Subject: Re: bug#13807: updated version to avoid MS-Windows vs non-MS-Windows clashes In-reply-to: <512D3508.1000906@cs.ucla.edu> X-012-Sender: halo1@inter.net.il To: Paul Eggert Message-id: <83txoxwq0p.fsf@gnu.org> References: <512A98D5.7080000@cs.ucla.edu> <512D3508.1000906@cs.ucla.edu> X-Spam-Score: 1.5 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: > Date: Tue, 26 Feb 2013 14:19:52 -0800 > From: Paul Eggert > > Attached is an updated version of the patch, which avoids > several of the problems mentioned, by using a different lock file name > on MS-Windows. Non-MS-Windows uses .#FILE symlinks as before; > MS-Windows uses .#-FILE regular files. This avoids clashes > between the two approaches. It also means MS-Windows ignores > non-MS-Windows locks and vice versa, but given all the > inherent incompatibilities involved this may be the best that > we can do reliably. [...] Content analysis details: (1.5 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/, no trust [80.179.55.166 listed in list.dnswl.org] 0.7 SPF_SOFTFAIL SPF: sender does not match SPF record (softfail) 0.8 BAYES_50 BODY: Bayes spam probability is 40 to 60% [score: 0.5000] X-Debbugs-Envelope-To: 13807 Cc: 13807@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list Reply-To: Eli Zaretskii List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: 1.5 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: > Date: Tue, 26 Feb 2013 14:19:52 -0800 > From: Paul Eggert > > Attached is an updated version of the patch, which avoids > several of the problems mentioned, by using a different lock file name > on MS-Windows. Non-MS-Windows uses .#FILE symlinks as before; > MS-Windows uses .#-FILE regular files. This avoids clashes > between the two approaches. It also means MS-Windows ignores > non-MS-Windows locks and vice versa, but given all the > inherent incompatibilities involved this may be the best that > we can do reliably. [...] Content analysis details: (1.5 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/, no trust [80.179.55.166 listed in list.dnswl.org] 0.7 SPF_SOFTFAIL SPF: sender does not match SPF record (softfail) 0.8 BAYES_50 BODY: Bayes spam probability is 40 to 60% [score: 0.4869] > Date: Tue, 26 Feb 2013 14:19:52 -0800 > From: Paul Eggert > > Attached is an updated version of the patch, which avoids > several of the problems mentioned, by using a different lock file name > on MS-Windows. Non-MS-Windows uses .#FILE symlinks as before; > MS-Windows uses .#-FILE regular files. This avoids clashes > between the two approaches. It also means MS-Windows ignores > non-MS-Windows locks and vice versa, but given all the > inherent incompatibilities involved this may be the best that > we can do reliably. I think I found a better solution (committed as trunk revision 111888). Instead of using 'emacs_open', which just calls 'open', I now use '_sopen', which allows to specify sharing restrictions for accessing the same file via other file descriptors, both by the same Emacs which is creating the lock file, and by other processes. The sharing flag I used denies any kind of access to the same file until the file descriptor returned by _sopen is closed. This makes the whole open/write/close sequence in create_lock_file atomic, as far as other potential readers or writers of the file are concerned -- they will not be able to access the file until its contents is ready. I tested this with one NFS-mounted volume that can be accessed from both Windows and a GNU/Linux box. The results were that when Emacs running on GNU/Linux had the file locked, Emacs running on Windows would refrain from locking it, and vice versa when the file was locked by Emacs running on Windows and a GNU/Linux Emacs would try to lock it. This is IMO better than ignoring the locks from the other platform, because the latter means each Emacs thinks it has an exclusive lock on the file, while in fact there are several lockers. I can make a similar change in read_lock_data, but I don't think it's needed there, since 'symlink' on Posix hosts is atomic, and thus Emacs on Windows will always either see the symlink in its final state or not at all. So I think with this change, there's no longer a need to use different file names for the lock files on Windows and on Posix hosts. From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 02 15:43:24 2013 Received: (at 13807) by debbugs.gnu.org; 2 Mar 2013 20:43:24 +0000 Received: from localhost ([127.0.0.1]:55873 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UBtH8-0000D9-OX for submit@debbugs.gnu.org; Sat, 02 Mar 2013 15:43:23 -0500 Received: from smtp.cs.ucla.edu ([131.179.128.62]:59549) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UBtH4-0000Cu-1D for 13807@debbugs.gnu.org; Sat, 02 Mar 2013 15:43:21 -0500 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 004CCA6000F; Sat, 2 Mar 2013 12:43:06 -0800 (PST) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id WRjbIZH9TC29; Sat, 2 Mar 2013 12:43:06 -0800 (PST) Received: from [192.168.1.9] (pool-71-189-154-249.lsanca.fios.verizon.net [71.189.154.249]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id 9608EA6000E; Sat, 2 Mar 2013 12:43:06 -0800 (PST) Message-ID: <51326459.4030001@cs.ucla.edu> Date: Sat, 02 Mar 2013 12:43:05 -0800 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130221 Thunderbird/17.0.3 MIME-Version: 1.0 To: Eli Zaretskii Subject: Re: bug#13807: updated version to avoid MS-Windows vs non-MS-Windows clashes References: <512A98D5.7080000@cs.ucla.edu> <512D3508.1000906@cs.ucla.edu> <83txoxwq0p.fsf@gnu.org> In-Reply-To: <83txoxwq0p.fsf@gnu.org> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Score: -2.2 (--) X-Debbugs-Envelope-To: 13807 Cc: 13807@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -3.0 (---) On 02/27/2013 10:49 AM, Eli Zaretskii wrote: > The results were that when Emacs running on GNU/Linux had the file > locked, Emacs running on Windows would refrain from locking it, and > vice versa when the file was locked by Emacs running on Windows and > a GNU/Linux Emacs would try to lock it. Unfortunately when (for example) the GNU/Linux Emacs refrained from locking the file, what it was actually doing was using its own separate lock file, whose name it got in a buggy way. That is, when locking FILE it discovered a regular file .#FILE (the MS-Windows lock file) and then decided to use a symlink .#FILE.0, thus ignoring the MS-Windows lock. The process of guessing a lock file name by appending ".0" is obviously flaky, as it's prone to races. The recent MS-Windows changes have made the races more likely, but they were present even before the changes. Emacs should not guess the lock file name. For now, I've installed the patch as trunk bzr 111918, as it fixes these races. This patch causes Emacs to use a different lock file name .#-FILE for MS-Windows than the usual lock file .#FILE for GNU/Linux, which is not good, but Emacs was using different lock files anyway, and a virtue of the patch is that any problems in the MS/Windows implementation won't get in the way of GNU/Linux users on a networked file system. I will look into adjusting Emacs so that it uses the same lock file name .#FILE for both GNU/Linux and MS-Windows, which would be nicer than the patched Emacs. This will take some more thought, though. From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 02 16:17:46 2013 Received: (at 13807) by debbugs.gnu.org; 2 Mar 2013 21:17:46 +0000 Received: from localhost ([127.0.0.1]:55896 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UBtoP-0000y7-Qq for submit@debbugs.gnu.org; Sat, 02 Mar 2013 16:17:46 -0500 Received: from mtaout22.012.net.il ([80.179.55.172]:36049) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UBtoL-0000xs-LY for 13807@debbugs.gnu.org; Sat, 02 Mar 2013 16:17:43 -0500 Received: from conversion-daemon.a-mtaout22.012.net.il by a-mtaout22.012.net.il (HyperSendmail v2007.08) id <0MJ100E00X5VBK00@a-mtaout22.012.net.il> for 13807@debbugs.gnu.org; Sat, 02 Mar 2013 23:17:29 +0200 (IST) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by a-mtaout22.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0MJ100E7WXT5EW20@a-mtaout22.012.net.il>; Sat, 02 Mar 2013 23:17:29 +0200 (IST) Date: Sat, 02 Mar 2013 23:17:17 +0200 From: Eli Zaretskii Subject: Re: bug#13807: updated version to avoid MS-Windows vs non-MS-Windows clashes In-reply-to: <51326459.4030001@cs.ucla.edu> X-012-Sender: halo1@inter.net.il To: Paul Eggert Message-id: <83vc99tsbm.fsf@gnu.org> References: <512A98D5.7080000@cs.ucla.edu> <512D3508.1000906@cs.ucla.edu> <83txoxwq0p.fsf@gnu.org> <51326459.4030001@cs.ucla.edu> X-Spam-Score: 1.5 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: > Date: Sat, 02 Mar 2013 12:43:05 -0800 > From: Paul Eggert > CC: 13807@debbugs.gnu.org > > On 02/27/2013 10:49 AM, Eli Zaretskii wrote: > > > The results were that when Emacs running on GNU/Linux had the file > > locked, Emacs running on Windows would refrain from locking it, and > > vice versa when the file was locked by Emacs running on Windows and > > a GNU/Linux Emacs would try to lock it. > > Unfortunately when (for example) the GNU/Linux Emacs refrained from > locking the file, what it was actually doing was using its own > separate lock file, whose name it got in a buggy way. That is, when > locking FILE it discovered a regular file .#FILE (the MS-Windows lock > file) and then decided to use a symlink .#FILE.0, thus ignoring the > MS-Windows lock. [...] Content analysis details: (1.5 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/, no trust [80.179.55.172 listed in list.dnswl.org] 0.7 SPF_SOFTFAIL SPF: sender does not match SPF record (softfail) 0.8 BAYES_50 BODY: Bayes spam probability is 40 to 60% [score: 0.4437] X-Debbugs-Envelope-To: 13807 Cc: 13807@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list Reply-To: Eli Zaretskii List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.2 (-) > Date: Sat, 02 Mar 2013 12:43:05 -0800 > From: Paul Eggert > CC: 13807@debbugs.gnu.org > > On 02/27/2013 10:49 AM, Eli Zaretskii wrote: > > > The results were that when Emacs running on GNU/Linux had the file > > locked, Emacs running on Windows would refrain from locking it, and > > vice versa when the file was locked by Emacs running on Windows and > > a GNU/Linux Emacs would try to lock it. > > Unfortunately when (for example) the GNU/Linux Emacs refrained from > locking the file, what it was actually doing was using its own > separate lock file, whose name it got in a buggy way. That is, when > locking FILE it discovered a regular file .#FILE (the MS-Windows lock > file) and then decided to use a symlink .#FILE.0, thus ignoring the > MS-Windows lock. That's not what happened in my testing. There, there was no lock file named .#FILE.0 or anything like that. Can you describe your testing in more details, and what versions of NFS and Windows did you use? > The process of guessing a lock file name by appending ".0" is > obviously flaky, as it's prone to races. The recent MS-Windows > changes have made the races more likely, but they were present even > before the changes. Emacs should not guess the lock file name. That's a different issue, though. > For now, I've installed the patch as trunk bzr 111918, as it fixes these > races. This patch causes Emacs to use a different lock file name > .#-FILE for MS-Windows than the usual lock file .#FILE for GNU/Linux, > which is not good, but Emacs was using different lock files anyway, > and a virtue of the patch is that any problems in the MS/Windows > implementation won't get in the way of GNU/Linux users on a networked > file system. I wish you didn't install the .#-FILE part. It is no longer justified. From debbugs-submit-bounces@debbugs.gnu.org Sat Mar 02 17:37:50 2013 Received: (at 13807) by debbugs.gnu.org; 2 Mar 2013 22:37:50 +0000 Received: from localhost ([127.0.0.1]:55985 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UBv3s-0002lC-TJ for submit@debbugs.gnu.org; Sat, 02 Mar 2013 17:37:50 -0500 Received: from smtp.cs.ucla.edu ([131.179.128.62]:34285) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UBv3n-0002kw-E4 for 13807@debbugs.gnu.org; Sat, 02 Mar 2013 17:37:47 -0500 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 0B8C1A60015; Sat, 2 Mar 2013 14:37:32 -0800 (PST) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id eLmzjpl27YEa; Sat, 2 Mar 2013 14:37:29 -0800 (PST) Received: from [192.168.1.9] (pool-71-189-154-249.lsanca.fios.verizon.net [71.189.154.249]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id D0991A6000E; Sat, 2 Mar 2013 14:37:29 -0800 (PST) Message-ID: <51327F29.5000600@cs.ucla.edu> Date: Sat, 02 Mar 2013 14:37:29 -0800 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130221 Thunderbird/17.0.3 MIME-Version: 1.0 To: Eli Zaretskii Subject: Re: bug#13807: updated version to avoid MS-Windows vs non-MS-Windows clashes References: <512A98D5.7080000@cs.ucla.edu> <512D3508.1000906@cs.ucla.edu> <83txoxwq0p.fsf@gnu.org> <51326459.4030001@cs.ucla.edu> <83vc99tsbm.fsf@gnu.org> In-Reply-To: <83vc99tsbm.fsf@gnu.org> Content-Type: multipart/mixed; boundary="------------050900080305030900000207" X-Spam-Score: -4.9 (----) X-Debbugs-Envelope-To: 13807 Cc: 13807@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -4.9 (----) This is a multi-part message in MIME format. --------------050900080305030900000207 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 03/02/2013 01:17 PM, Eli Zaretskii wrote: > Can you describe your testing > in more details, and what versions of NFS and Windows did you use? Sure, I created a MS-Windows style lock file .#FILE by hand, then edited FILE with a GNU/Linux Emacs. I didn't build the MS-Windows Emacs, and didn't need to use NFS to reproduce the problem. There's another issue: a GNU/Linux Emacs might be using an MS-Windows file system that does not support symbolic links. Such an Emacs should use a regular-file lock, just as MS-Windows Emacs does, which means that the code to create regular-file locks should be implementable in POSIXish primitives. Also, locking should work even if the Emacs instance that created a lock uses a symlink whereas the Emacs instance trying to get the lock would use a regular file, or vice versa. It'll take some thinking to get all this to work well. I've written a first cut for this and have attached it. I have not tested this on MS-Windows at all, and haven't tested it as much as I'd like on GNU/Linux, but it should give a feel for the sort of changes that need to be made. Unfortunately the patch is a bit complicated, but to some extent this is inherent in such a complicated area. --------------050900080305030900000207 Content-Type: text/plain; charset=UTF-8; name="filelock2.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="filelock2.txt" PT09IG1vZGlmaWVkIGZpbGUgJ2V0Yy9DaGFuZ2VMb2cnCi0tLSBldGMvQ2hhbmdlTG9nCTIw MTMtMDMtMDIgMjA6NDE6NTMgKzAwMDAKKysrIGV0Yy9DaGFuZ2VMb2cJMjAxMy0wMy0wMiAy MjoyOToyMyArMDAwMApAQCAtMSw1ICsxLDggQEAKIDIwMTMtMDMtMDIgIFBhdWwgRWdnZXJ0 ICA8ZWdnZXJ0QGNzLnVjbGEuZWR1PgogCisJVGhlIGxvY2sgZm9yIEZJTEUgaXMgbm93IC4j RklMRSBhbmQgbWF5IGJlIGEgcmVndWxhciBmaWxlIChCdWcjMTM4MDcpLgorCSogTkVXUzog RG9jdW1lbnQgdGhpcy4KKwogCSogTkVXUzogVGhlIGxvY2sgZm9yIEZJTEUgaXMgbm93IC4j RklMRSBvciAuIy1GSUxFIChCdWcjMTM4MDcpLgogCiAyMDEzLTAzLTAxICBNaWNoYWVsIEFs YmludXMgIDxtaWNoYWVsLmFsYmludXNAZ214LmRlPgoKPT09IG1vZGlmaWVkIGZpbGUgJ2V0 Yy9ORVdTJwotLS0gZXRjL05FV1MJMjAxMy0wMy0wMiAyMDo0MTo1MyArMDAwMAorKysgZXRj L05FV1MJMjAxMy0wMy0wMiAyMjoyOToyMyArMDAwMApAQCAtMzIwLDcgKzMyMCw3IEBACiAq KiBUaGUgYGRlZmFsaWFzLWZzZXQtZnVuY3Rpb24nIHByb3BlcnR5IGxldHMgeW91IGNhdGNo IGNhbGxzIHRvIGRlZmFsaWFzCiBhbmQgcmVkaXJlY3QgdGhlbSB0byB5b3VyIG93biBmdW5j dGlvbiBpbnN0ZWFkIG9mIGBmc2V0Jy4KIAotKiogVGhlIGxvY2sgZm9yICdESVIvRklMRScg aXMgbm93ICdESVIvLiNGSUxFJyBvciAnRElSLy4jLUZJTEUnLgorKiogVGhlIGxvY2sgZm9y ICdESVIvRklMRScgaXMgbm93ICdESVIvLiNGSUxFJyBhbmQgbWF5IGJlIGEgcmVndWxhciBm aWxlLgogV2hlbiB5b3UgZWRpdCBESVIvRklMRSwgRW1hY3Mgbm9ybWFsbHkgY3JlYXRlcyBh IHN5bWJvbGljIGxpbmsKIERJUi8uI0ZJTEUgYXMgYSBsb2NrIHRoYXQgd2FybnMgb3RoZXIg aW5zdGFuY2VzIG9mIEVtYWNzIHRoYXQgRElSL0ZJTEUKIGlzIGJlaW5nIGVkaXRlZC4gIEZv cm1lcmx5LCBpZiB0aGVyZSB3YXMgYWxyZWFkeSBhIG5vbi1zeW1saW5rIGZpbGUKQEAgLTMy OCw5ICszMjgsOCBAQAogdGhyb3VnaCBESVIvLiNGSUxFLjkuICBUaGVzZSBmYWxsYmFja3Mg aGF2ZSBiZWVuIHJlbW92ZWQsIHNvIHRoYXQKIEVtYWNzIG5vdyBubyBsb25nZXIgbG9ja3Mg RElSL0ZJTEUgaW4gdGhhdCBjYXNlLgogCi1PbiBNUy1XaW5kb3dzIHRoZSBsb2NrIGlzIGEg cmVndWxhciBmaWxlIERJUi8uIy1GSUxFLCBub3QgYSBzeW1saW5rLgotTVMtV2luZG93cyBh bmQgbm9uLU1TLVdpbmRvd3MgaW1wbGVtZW50YXRpb25zIG9mIEVtYWNzIGlnbm9yZSBlYWNo Ci1vdGhlcidzIGxvY2tzLgorT24gZmlsZSBzeXN0ZW1zIHRoYXQgZG8gbm90IHN1cHBvcnQg c3ltYm9saWMgbGlua3MsIHRoZSBsb2NrIGlzIG5vdyBhCityZWd1bGFyIGZpbGUgd2l0aCBj b250ZW50cyBiZWluZyB3aGF0IHdvdWxkIGhhdmUgYmVlbiBpbiB0aGUgc3ltbGluay4KIAog KiogVGhlIDl0aCBlbGVtZW50IHJldHVybmVkIGJ5IGBmaWxlLWF0dHJpYnV0ZXMnIGlzIG5v dyB1bnNwZWNpZmllZC4KIEZvcm1lcmx5LCBpdCB3YXMgdCBpZiB0aGUgZmlsZSdzIGdpZCB3 b3VsZCBjaGFuZ2UgaWYgZmlsZSB3ZXJlIGRlbGV0ZWQKCj09PSBtb2RpZmllZCBmaWxlICdz cmMvQ2hhbmdlTG9nJwotLS0gc3JjL0NoYW5nZUxvZwkyMDEzLTAzLTAyIDIxOjA1OjUyICsw MDAwCisrKyBzcmMvQ2hhbmdlTG9nCTIwMTMtMDMtMDIgMjI6Mjk6MjMgKzAwMDAKQEAgLTEs NSArMSw0MyBAQAogMjAxMy0wMy0wMiAgUGF1bCBFZ2dlcnQgIDxlZ2dlcnRAY3MudWNsYS5l ZHU+CiAKKwlGSUxFJ3MgbG9jayBpcyBub3cgYWx3YXlzIC4jRklMRSBhbmQgbWF5IGJlIGEg cmVndWxhciBmaWxlIChCdWcjMTM4MDcpLgorCSogZmlsZWxvY2suYzogSW5jbHVkZSA8Yy1j dHlwZS5oPi4KKwkoTUFYX0xGSU5GTyk6IE5ldyB0b3AtbGV2ZWwgY29uc3RhbnQuCisJKGxv Y2tfaW5mb190eXBlKTogUmVtb3ZlIGhvc3QgbWVtYmVyLiAgQWRkIG1lbWJlcnMgYXQsIGRv dC4KKwlDaGFuZ2UgdXNlciBtZW1iZXIgdG8gYmUgdGhlIGVudGlyZSBidWZmZXIsIG5vdCBh IHBvaW50ZXIuCisJKEZSRUVfTE9DS19JTkZPKTogUmVtb3ZlLCBhcyB0aGUgcGllY2VzIG5v IGxvbmdlciBuZWVkIGZyZWVpbmcuCisJKGRlZmluZWRfV0lORE9XU05UKTogUmVtb3ZlLgor CShNQUtFX0xPQ0tfTkFNRSwgZmlsZV9pbl9sb2NrX2ZpbGVfbmFtZSk6CisJQWx3YXlzIHVz ZSAuI0ZJTEUgKG5vdCAuIy1GSUxFKSBmb3IgdGhlIGZpbGUgbG9jaywKKwlldmVuIGlmIGl0 IGlzIGEgcmVndWxhciBmaWxlLgorCShjcmVhdGVfbG9ja19maWxlLCByZWFkX2xvY2tfZGF0 YSk6CisJUHJlZmVyIGEgc3ltYm9saWMgbGluayBmb3IgdGhlIGxvY2sgZmlsZSwgZmFsbGlu ZyBiYWNrIG9uIGEKKwlyZWd1bGFyIGZpbGUgaWYgc3ltbGlua3MgZG9uJ3Qgd29yay4gIERv IG5vdCB0cnkgdG8gY3JlYXRlCisJc3ltbGlua3Mgb24gTVMtV2luZG93cywgZHVlIHRvIHNl Y3VyaXR5IGhhc3NsZXMuICBTdGljayB3aXRoCisJUE9TSVhpc2ggZnVuY3Rpb25zIChvcGVu LCByZWFkLCB3cml0ZSwgY2xvc2UsIHJlYWRsaW5rLCBzeW1saW5rLAorCWxpbmssIHJlbmFt ZSwgdW5saW5rLCBta3N0ZW1wKSB3aGVuIGNyZWF0aW5nIGxvY2tzLCBhcyBhIEdOVWlzaAor CWhvc3QgbWF5IGJlIHVzaW5nIGEgV2luZG93c2lzaCBmaWxlIHN5c3RlbSwgYW5kIGNhbm5v dCB1c2UKKwlNUy1XaW5kb3dzLW9ubHkgc3lzdGVtIGNhbGxzLiAgRmFsbCBiYWNrIG9uIG1r dGVtcCBpZiBta3N0ZW1wCisJZG9lc24ndCB3b3JrLiAgRG9uJ3QgZmFpbCBtZXJlbHkgYmVj YXVzZSBvZiBhIHN5bWxpbmstY29udGVudHMKKwlsZW5ndGggbGltaXQgaW4gdGhlIGN1cnJl bnQgZmlsZSBzeXN0ZW07IGZhbGwgYmFjayBvbiByZWd1bGFyCisJZmlsZXMuICBJbmNyZWFz ZSB0aGUgc3ltbGluayBjb250ZW50cyBsZW5ndGggbGltaXQgdG8gOCBLaUIsIHRoaXMKKwlz aG91bGQgYmUgYmlnIGVub3VnaCBmb3IgYW55IHJlYWwgdXNlIGFuZCBkb2Vzbid0IGNydW5j aCB0aGUKKwlzdGFjay4KKwkoY3JlYXRlX2xvY2tfZmlsZSwgbG9ja19maWxlXzEsIHJlYWRf bG9ja19kYXRhKToKKwlTaW1wbGlmeSBhbGxvY2F0aW9uIG9mIGxvY2sgZmlsZSBidWZmZXJz IG5vdyB0aGF0IHRoZXkgZml0IGluIDggS2lCLgorCShsb2NrX2ZpbGVfMSk6IFJldHVybiBl cnJvciBudW1iZXIsIG5vdCBib29sLiAgQWxsIGNhbGxlcnMgY2hhbmdlZC4KKwkocmVhZF9s b2NrX2RhdGEpOiBSZXR1cm4gc2l6ZSBvZiBsb2NrIGZpbGUgY29udGVudHMsIG5vdCBMaXNw IG9iamVjdC4KKwlBbGwgY2FsbGVycyBjaGFuZ2VkLiAgQ2hlY2sgdGhlIGNvbnRlbnRzIG9m IGEgcmVndWxhci1maWxlIGxvY2sKKwlmb3IgbnVsbCBieXRlcy4gIEhhbmRsZSBhIHJhY2Ug Y29uZGl0aW9uIGlmIHNvbWUgb3RoZXIgcHJvY2VzcworCXJlcGxhY2VzIGEgcmVndWxhci1m aWxlIGxvY2sgd2l0aCBhIHN5bWxpbmsgbG9jayBvciB2aWNlIHZlcnNhLAorCXdoaWxlIHdl J3JlIHRyeWluZyB0byByZWFkIHRoZSBsb2NrLgorCShjdXJyZW50X2xvY2tfb3duZXIpOiBQ YXJzZSBjb250ZW50cyBtb3JlIGNhcmVmdWxseSwgdG8gaGVscCBhdm9pZAorCWNvbmZ1c2lu ZyBhIHJlZ3VsYXItZmlsZSBsb2NrIHdpdGggc29tZSBvdGhlciBhcHBsaWNhdGlvbidzIHVz ZQorCW9mIHRoZSBmaWxlLiAgQ2hlY2sgZm9yIGxvY2sgZmlsZSBjb250ZW50cyBiZWluZyB0 b28gbG9uZywgb3IKKwlub3QgcGFyc2luZyBjb3JyZWN0bHkuCisJKGN1cnJlbnRfbG9ja19v d25lciwgbG9ja19pZl9mcmVlLCBsb2NrX2ZpbGUpOiBTaW1wbGlmeSBhbGxvY2F0aW9uCisJ b2YgbG9jayBmaWxlIGNvbnRlbnRzLgorCiAJVGhlIGxvY2sgZm9yIEZJTEUgaXMgbm93IC4j RklMRSBvciAuIy1GSUxFIChCdWcjMTM4MDcpLgogCVRoZSBvbGQgYXBwcm9hY2gsIHdoaWNo IGZlbGwgYmFjayBvbiBESVIvLiNGSUxFLjAgdGhyb3VnaAogCURJUi8uI0ZJTEUuOSwgaGFk IHJhY2UgY29uZGl0aW9ucyB0aGF0IGNvdWxkIG5vdCBiZSBlYXNpbHkgZml4ZWQuCgo9PT0g bW9kaWZpZWQgZmlsZSAnc3JjL2ZpbGVsb2NrLmMnCi0tLSBzcmMvZmlsZWxvY2suYwkyMDEz LTAzLTAyIDIxOjA1OjUyICswMDAwCisrKyBzcmMvZmlsZWxvY2suYwkyMDEzLTAzLTAyIDIy OjI5OjIzICswMDAwCkBAIC0zOCw2ICszOCw4IEBACiAKICNpbmNsdWRlIDxlcnJuby5oPgog CisjaW5jbHVkZSA8Yy1jdHlwZS5oPgorCiAjaW5jbHVkZSAibGlzcC5oIgogI2luY2x1ZGUg ImNoYXJhY3Rlci5oIgogI2luY2x1ZGUgImJ1ZmZlci5oIgpAQCAtNjQsNyArNjYsNyBAQAog I2RlZmluZSBXVE1QX0ZJTEUgIi92YXIvbG9nL3d0bXAiCiAjZW5kaWYKIAotLyogT24gbm9u LU1TLVdpbmRvd3Mgc3lzdGVtcywgdXNlIGEgc3ltYm9saWMgbGluayB0byByZXByZXNlbnQg YSBsb2NrLgorLyogTm9ybWFsbHkgdXNlIGEgc3ltYm9saWMgbGluayB0byByZXByZXNlbnQg YSBsb2NrLgogICAgVGhlIHN0cmF0ZWd5OiB0byBsb2NrIGEgZmlsZSBGTiwgY3JlYXRlIGEg c3ltbGluayAuI0ZOIGluIEZOJ3MKICAgIGRpcmVjdG9yeSwgd2l0aCBsaW5rIGRhdGEgYHVz ZXJAaG9zdC5waWQnLiAgVGhpcyBhdm9pZHMgYSBzaW5nbGUKICAgIG1vdW50ICg9PSBmYWls dXJlKSBwb2ludCBmb3IgbG9jayBmaWxlcy4KQEAgLTEwMCwxMCArMTAyLDExIEBACiAKICAg IC0ta2FybEBjcy51bWIuZWR1L2thcmxAaHEuaWxlYWYuY29tLgogCi0gICBPbiBNUy1XaW5k b3dzLCBzeW1ib2xpYyBsaW5rcyBkbyBub3Qgd29yayB3ZWxsLCBzbyBpbnN0ZWFkIG9mIGEK LSAgIHN5bWxpbmsgLiNGTiAtPiAndXNlckBob3N0LnBpZCcsIHRoZSBsb2NrIGlzIGEgcmVn dWxhciBmaWxlIC4jLUZOCi0gICB3aXRoIGNvbnRlbnRzICd1c2VyQGhvc3QucGlkJy4gIE1T LVdpbmRvd3MgYW5kIG5vbi1NUy1XaW5kb3dzCi0gICB2ZXJzaW9ucyBvZiBFbWFjcyBpZ25v cmUgZWFjaCBvdGhlcidzIGxvY2tzLiAgKi8KKyAgIE9uIHNvbWUgZmlsZSBzeXN0ZW1zLCBu b3RhYmx5IHRob3NlIG9mIE1TLVdpbmRvd3MsIHN5bWJvbGljIGxpbmtzCisgICBkbyBub3Qg d29yayB3ZWxsLCBzbyBpbnN0ZWFkIG9mIGEgc3ltbGluayAuI0ZOIC0+ICd1c2VyQGhvc3Qu cGlkJywKKyAgIHRoZSBsb2NrIGlzIGEgcmVndWxhciBmaWxlIC4jRk4gd2l0aCBjb250ZW50 cyAndXNlckBob3N0LnBpZCcuICBUaGUKKyAgIGxvY2sgaXMgY3JlYXRlZCBhdG9taWNhbGx5 IGJ5IGNyZWF0aW5nIGEgbm9uY2UgZmlsZSBhbmQgaGFyZC1saW5raW5nCisgICB0aGUgbm9u Y2UgdG8gLiNGTjsgdGhlIGxpbmsgb3BlcmF0aW9uIGVzdGFibGlzaGVzIHRoZSBsb2NrLiAg LiovCiAKIAwKIC8qIFJldHVybiB0aGUgdGltZSBvZiB0aGUgbGFzdCBzeXN0ZW0gYm9vdC4g ICovCkBAIC0yODQsMzAgKzI4NywzMyBAQAogfQogI2VuZGlmIC8qIEJPT1RfVElNRSAqLwog DAorLyogQW4gYXJiaXRyYXJ5IGxpbWl0IG9uIGxvY2sgY29udGVudHMgbGVuZ3RoLiAgOCBL IHNob3VsZCBiZSBwbGVudHkKKyAgIGJpZyBlbm91Z2ggaW4gcHJhY3RpY2UuICAqLworZW51 bSB7IE1BWF9MRklORk8gPSA4ICogMTAyNCB9OworCiAvKiBIZXJlIGlzIHRoZSBzdHJ1Y3R1 cmUgdGhhdCBzdG9yZXMgaW5mb3JtYXRpb24gYWJvdXQgYSBsb2NrLiAgKi8KIAogdHlwZWRl ZiBzdHJ1Y3QKIHsKLSAgY2hhciAqdXNlcjsKLSAgY2hhciAqaG9zdDsKKyAgLyogTG9jYXRp b24gb2YgJ0AnIGFuZCAnLicgaW4gVVNFUi4gICovCisgIGNoYXIgKmF0LCAqZG90OworCiAg IHBpZF90IHBpZDsKICAgdGltZV90IGJvb3RfdGltZTsKKworICAvKiBMb2NrIGZpbGUgY29u dGVudHMgVVNFUkBIT1NULlBJRCB3aXRoIGFuIG9wdGlvbmFsIDpCT09UX1RJTUUKKyAgICAg YXBwZW5kZWQuICBUaGlzIG1lbW9yeSBpcyB1c2VkIGFzIGEgbG9jayBmaWxlIGNvbnRlbnRz IGJ1ZmZlciwgc28KKyAgICAgaXQgbmVlZHMgcm9vbSBmb3IgTUFYX0xGSU5GTyArIDEgYnl0 ZXMuICBBIHN0cmluZyAiQCAocGlkIE5OTk4pIgorICAgICBtYXkgYmUgYXBwZW5kZWQgdG8g dGhlIFVTRVJASE9TVCB3aGlsZSBnZW5lcmF0aW5nIGEgZGlhZ25vc3RpYywKKyAgICAgc28g bWFrZSByb29tIGZvciB0aGF0IHRvby4gICovCisgIGNoYXIgdXNlcltNQVhfTEZJTkZPICsg SU5UX1NUUkxFTl9CT1VORCAocHJpbnRtYXhfdCkgKyBzaXplb2YgIkAgKHBpZCApIl07CiB9 IGxvY2tfaW5mb190eXBlOwogCi0vKiBGcmVlIHRoZSB0d28gZHluYW1pY2FsbHktYWxsb2Nh dGVkIHBpZWNlcyBpbiBQVFIuICAqLwotI2RlZmluZSBGUkVFX0xPQ0tfSU5GTyhpKSBkbyB7 IHhmcmVlICgoaSkudXNlcik7IHhmcmVlICgoaSkuaG9zdCk7IH0gd2hpbGUgKDApCi0KLSNp ZmRlZiBXSU5ET1dTTlQKLWVudW0geyBkZWZpbmVkX1dJTkRPV1NOVCA9IDEgfTsKLSNlbHNl Ci1lbnVtIHsgZGVmaW5lZF9XSU5ET1dTTlQgPSAwIH07Ci0jZW5kaWYKLQogLyogV3JpdGUg dGhlIG5hbWUgb2YgdGhlIGxvY2sgZmlsZSBmb3IgRk5BTUUgaW50byBMT0NLTkFNRS4gIExl bmd0aAotICAgd2lsbCBiZSB0aGF0IG9mIEZOQU1FIHBsdXMgdHdvIG1vcmUgZm9yIHRoZSBs ZWFkaW5nICIuIyIsCi0gICBwbHVzIG9uZSBmb3IgIi0iIGlmIE1TLVdpbmRvd3MsIHBsdXMg b25lIGZvciB0aGUgbnVsbC4gICovCisgICB3aWxsIGJlIHRoYXQgb2YgRk5BTUUgcGx1cyB0 d28gbW9yZSBmb3IgdGhlIGxlYWRpbmcgIi4jIiwgcGx1cyBvbmUKKyAgIGZvciB0aGUgbnVs bC4gICovCiAjZGVmaW5lIE1BS0VfTE9DS19OQU1FKGxvY2tuYW1lLCBmbmFtZSkgXAotICAo bG9ja25hbWUgPSBTQUZFX0FMTE9DQSAoU0JZVEVTIChmbmFtZSkgKyAyICsgZGVmaW5lZF9X SU5ET1dTTlQgKyAxKSwgXAorICAobG9ja25hbWUgPSBTQUZFX0FMTE9DQSAoU0JZVEVTIChm bmFtZSkgKyAyICsgMSksIFwKICAgIGZpbGxfaW5fbG9ja19maWxlX25hbWUgKGxvY2tuYW1l LCBmbmFtZSkpCiAKIHN0YXRpYyB2b2lkCkBAIC0zMTksNzAgKzMyNSw5OCBAQAogICBtZW1j cHkgKGxvY2tmaWxlLCBTU0RBVEEgKGZuKSwgZGlybGVuKTsKICAgbG9ja2ZpbGVbZGlybGVu XSA9ICcuJzsKICAgbG9ja2ZpbGVbZGlybGVuICsgMV0gPSAnIyc7Ci0gIGlmIChkZWZpbmVk X1dJTkRPV1NOVCkKLSAgICBsb2NrZmlsZVtkaXJsZW4gKyAyXSA9ICctJzsKLSAgc3RyY3B5 IChsb2NrZmlsZSArIGRpcmxlbiArIDIgKyBkZWZpbmVkX1dJTkRPV1NOVCwgYmFzZSk7Cisg IHN0cmNweSAobG9ja2ZpbGUgKyBkaXJsZW4gKyAyLCBiYXNlKTsKIH0KIAorLyogQ3JlYXRl IHRoZSBsb2NrIGZpbGUgRklMRSB3aXRoIGNvbnRlbnRzIENPTlRFTlRTLiAgUmV0dXJuIDAg aWYKKyAgIHN1Y2Nlc3NmdWwsIGFuIGVycm5vIHZhbHVlIG9uIGZhaWx1cmUuICBJZiBGT1JD RSwgcmVtb3ZlIGFueQorICAgZXhpc3RpbmcgRklMRSBpZiBuZWNlc3NhcnkuICAqLworCiBz dGF0aWMgaW50CiBjcmVhdGVfbG9ja19maWxlIChjaGFyICpsZm5hbWUsIGNoYXIgKmxvY2tf aW5mb19zdHIsIGJvb2wgZm9yY2UpCiB7Ci0gIGludCBlcnI7Ci0KICNpZmRlZiBXSU5ET1dT TlQKLSAgLyogU3ltbGlua3MgYXJlIHN1cHBvcnRlZCBvbmx5IGJ5IGxhdGVzdCB2ZXJzaW9u cyBvZiBXaW5kb3dzLCBhbmQKKyAgLyogU3ltbGlua3MgYXJlIHN1cHBvcnRlZCBvbmx5IGJ5 IGxhdGVyIHZlcnNpb25zIG9mIFdpbmRvd3MsIGFuZAogICAgICBjcmVhdGluZyB0aGVtIGlz IGEgcHJpdmlsZWdlZCBvcGVyYXRpb24gdGhhdCBvZnRlbiB0cmlnZ2VycyBVQUMKLSAgICAg ZWxldmF0aW9uIHByb21wdHMuICBUaGVyZWZvcmUsIGluc3RlYWQgb2YgdXNpbmcgc3ltbGlu a3MsIHdlCi0gICAgIGNyZWF0ZSBhIHJlZ3VsYXIgZmlsZSB3aXRoIHRoZSBsb2NrIGluZm8g d3JpdHRlbiBhcyBpdHMKLSAgICAgY29udGVudHMuICAqLwotICB7Ci0gICAgLyogRGVueSBl dmVyeWJvZHkgZWxzZSBhbnkga2luZCBvZiBhY2Nlc3MgdG8gdGhlIGZpbGUgdW50aWwgd2Ug YXJlCi0gICAgICAgZG9uZSB3cml0aW5nIGl0IGFuZCBjbG9zZSB0aGUgaGFuZGxlLiAgVGhp cyBtYWtlcyB0aGUgZW50aXJlCi0gICAgICAgb3Blbi93cml0ZS9jbG9zZSBvcGVyYXRpb24g YXRvbWljLCBhcyBmYXIgYXMgb3RoZXIgV0lORE9XU05UCi0gICAgICAgcHJvY2Vzc2VzIGFy ZSBjb25jZXJuZWQuICAqLwotICAgIGludCBmZCA9IF9zb3BlbiAobGZuYW1lLAotCQkgICAg IF9PX1dST05MWSB8IF9PX0JJTkFSWSB8IF9PX0NSRUFUIHwgX09fRVhDTCB8IF9PX05PSU5I RVJJVCwKLQkJICAgICBfU0hfREVOWVJXLCBTX0lSRUFEIHwgU19JV1JJVEUpOwotCi0gICAg aWYgKGZkIDwgMCAmJiBlcnJubyA9PSBFRVhJU1QgJiYgZm9yY2UpCi0gICAgICBmZCA9IF9z b3BlbiAobGZuYW1lLCBfT19XUk9OTFkgfCBfT19CSU5BUlkgfCBfT19UUlVOQyB8X09fTk9J TkhFUklULAotCQkgICBfU0hfREVOWVJXLCBTX0lSRUFEIHwgU19JV1JJVEUpOwotICAgIGlm IChmZCA+PSAwKQotICAgICAgewotCXNzaXplX3QgbG9ja19pbmZvX2xlbiA9IHN0cmxlbiAo bG9ja19pbmZvX3N0cik7Ci0KLQllcnIgPSAwOwotCWlmIChlbWFjc193cml0ZSAoZmQsIGxv Y2tfaW5mb19zdHIsIGxvY2tfaW5mb19sZW4pICE9IGxvY2tfaW5mb19sZW4pCi0JICBlcnIg PSAtMTsKLQlpZiAoZW1hY3NfY2xvc2UgKGZkKSkKLQkgIGVyciA9IC0xOwotICAgICAgfQot ICAgIGVsc2UKLSAgICAgIGVyciA9IC0xOwotICB9CisgICAgIGVsZXZhdGlvbiBwcm9tcHRz LiAgQXZvaWQgdGhlIHByb2JsZW0gYnkgcHJldGVuZGluZyB0aGF0CisgICAgICdzeW1saW5r JyBkb2VzIG5vdCB3b3JrLiAgKi8KKyAgaW50IGVyciA9IEVOT1NZUzsKICNlbHNlCi0gIGVy ciA9IHN5bWxpbmsgKGxvY2tfaW5mb19zdHIsIGxmbmFtZSk7Ci0gIGlmIChlcnIgIT0gMCAm JiBlcnJubyA9PSBFRVhJU1QgJiYgZm9yY2UpCisgIGludCBlcnIgPSBzeW1saW5rIChsb2Nr X2luZm9fc3RyLCBsZm5hbWUpID09IDAgPyAwIDogZXJybm87CisjZW5kaWYKKworICBpZiAo ZXJyID09IEVFWElTVCAmJiBmb3JjZSkKICAgICB7CiAgICAgICB1bmxpbmsgKGxmbmFtZSk7 Ci0gICAgICBlcnIgPSBzeW1saW5rIChsb2NrX2luZm9fc3RyLCBsZm5hbWUpOwotICAgIH0K KyAgICAgIGVyciA9IHN5bWxpbmsgKGxvY2tfaW5mb19zdHIsIGxmbmFtZSkgPT0gMCA/IDAg OiBlcnJubzsKKyAgICB9CisKKyAgLyogRm9yIHNvbWUgcmVhc29uIExpbnV4IGtlcm5lbHMg cmV0dXJuIEVQRVJNIG9uIGZpbGUgc3lzdGVtcworICAgICB0aGF0IGRvIG5vdCBzdXBwb3J0 IHN5bWJvbGljIGxpbmtzLiAgVHVybiB0aGlzIGludG8gRU5PU1lTLiAgKi8KKyAgaWYgKGVy ciA9PSBFUEVSTSkKKyAgICB7CisgICAgICBjaGFyICpsYXN0X3NsYXNoID0gc3RycmNociAo bGZuYW1lLCAnLycpOworICAgICAgY2hhciBjaCA9IGxhc3Rfc2xhc2hbMV07CisgICAgICBs YXN0X3NsYXNoWzFdID0gMDsKKyAgICAgIGlmIChmYWNjZXNzYXQgKEFUX0ZEQ1dELCBsZm5h bWUsIFdfT0sgfCBYX09LLCBBVF9FQUNDRVNTKSA9PSAwKQorCWVyciA9IEVOT1NZUzsKKyAg ICAgIGxhc3Rfc2xhc2hbMV0gPSBjaDsKKyAgICB9CisKKyAgaWYgKGVyciA9PSBFTk9TWVMg fHwgZXJyID09IEVOQU1FVE9PTE9ORykKKyAgICB7CisgICAgICBzdGF0aWMgY2hhciBjb25z dCBub25jZV9iYXNlW10gPSAiLiMtZW1hY3NYWFhYWFgiOworICAgICAgY2hhciAqbGFzdF9z bGFzaCA9IHN0cnJjaHIgKGxmbmFtZSwgJy8nKTsKKyAgICAgIHB0cmRpZmZfdCBsZmRpcmxl biA9IGxhc3Rfc2xhc2ggKyAxIC0gbGZuYW1lOworICAgICAgVVNFX1NBRkVfQUxMT0NBOwor ICAgICAgY2hhciAqbm9uY2UgPSBTQUZFX0FMTE9DQSAobGZkaXJsZW4gKyBzaXplb2Ygbm9u Y2VfYmFzZSk7CisgICAgICBpbnQgZmQ7CisgICAgICBtZW1jcHkgKG5vbmNlLCBsZm5hbWUs IGxmZGlybGVuKTsKKyAgICAgIHN0cmNweSAobm9uY2UgKyBsZmRpcmxlbiwgbm9uY2VfYmFz ZSk7CisKKyNpZiBIQVZFX01LU1RFTVAKKyAgICAgIGZkID0gbWtzdGVtcCAobm9uY2UpOwor I2Vsc2UKKyAgICAgIG1rdGVtcCAobm9uY2UpOworICAgICAgZmQgPSBlbWFjc19vcGVuIChu b25jZSwgT19XUk9OTFkgfCBPX0NSRUFUIHwgT19FWENMIHwgT19CSU5BUlksCisJCSAgICAg ICBTX0lSVVNSIHwgU19JV1VTUik7CiAjZW5kaWYKIAorICAgICAgaWYgKGZkIDwgMCkKKwll cnIgPSBlcnJubzsKKyAgICAgIGVsc2UKKwl7CisJICBwdHJkaWZmX3QgbG9ja19pbmZvX2xl biA9IHN0cmxlbiAobG9ja19pbmZvX3N0cik7CisJICBlcnIgPSAwOworCSAgaWYgKGVtYWNz X3dyaXRlIChmZCwgbG9ja19pbmZvX3N0ciwgbG9ja19pbmZvX2xlbikgIT0gbG9ja19pbmZv X2xlbgorCSAgICAgIHx8IGZjaG1vZCAoZmQsIFNfSVJVU1IgfCBTX0lSR1JQIHwgU19JUk9U SCkgIT0gMCkKKwkgICAgZXJyID0gZXJybm87CisJICBpZiAoZW1hY3NfY2xvc2UgKGZkKSAh PSAwKQorCSAgICBlcnIgPSBlcnJubzsKKworCSAgLyogUmVuYW1lIE5PTkNFIHRvIExGTkFN RSwgYnV0IGRvIG5vdCByZXBsYWNlIGFueSBleGlzdGluZworCSAgICAgTEZOQU1FIHVubGVz cyBGT1JDRS4gIEl0IGlzIE9LIGlmIHRoZXJlIGFyZSB0ZW1wb3JhcmlseQorCSAgICAgdHdv IGhhcmQgbGlua3MgdG8gTEZOQU1FLiAgKi8KKwkgIGlmICghZXJyICYmIChmb3JjZSA/IHJl bmFtZSA6IGxpbmspIChub25jZSwgbGZuYW1lKSAhPSAwKQorCSAgICBlcnIgPSBlcnJubzsK KwkgIGlmICgoIWZvcmNlIHx8IGVycikgJiYgdW5saW5rIChub25jZSkgIT0gMAorCSAgICAg ICYmICFlcnIgJiYgZXJybm8gIT0gRU5PRU5UKQorCSAgICBlcnIgPSBlcnJubzsKKwl9CisK KyAgICAgIFNBRkVfRlJFRSAoKTsKKyAgICB9CisKICAgcmV0dXJuIGVycjsKIH0KIAogLyog TG9jayB0aGUgbG9jayBmaWxlIG5hbWVkIExGTkFNRS4KICAgIElmIEZPUkNFLCBkbyBzbyBl dmVuIGlmIGl0IGlzIGFscmVhZHkgbG9ja2VkLgotICAgUmV0dXJuIHRydWUgaWYgc3VjY2Vz c2Z1bC4gICovCisgICBSZXR1cm4gMCBpZiBzdWNjZXNzZnVsLCBhbiBlcnJvciBudW1iZXIg b24gZmFpbHVyZS4gICovCiAKLXN0YXRpYyBib29sCitzdGF0aWMgaW50CiBsb2NrX2ZpbGVf MSAoY2hhciAqbGZuYW1lLCBib29sIGZvcmNlKQogewotICBpbnQgZXJyOwotICBpbnQgc3lt bGlua19lcnJubzsKLSAgVVNFX1NBRkVfQUxMT0NBOwotCiAgIC8qIENhbGwgdGhpcyBmaXJz dCBiZWNhdXNlIGl0IGNhbiBHQy4gICovCiAgIHByaW50bWF4X3QgYm9vdCA9IGdldF9ib290 X3RpbWUgKCk7CiAKQEAgLTM5MCwyMCArNDI0LDE2IEBACiAgIGNoYXIgY29uc3QgKnVzZXJf bmFtZSA9IFNUUklOR1AgKGx1c2VyX25hbWUpID8gU1NEQVRBIChsdXNlcl9uYW1lKSA6ICIi OwogICBMaXNwX09iamVjdCBsaG9zdF9uYW1lID0gRnN5c3RlbV9uYW1lICgpOwogICBjaGFy IGNvbnN0ICpob3N0X25hbWUgPSBTVFJJTkdQIChsaG9zdF9uYW1lKSA/IFNTREFUQSAobGhv c3RfbmFtZSkgOiAiIjsKLSAgcHRyZGlmZl90IGxvY2tfaW5mb19zaXplID0gKHN0cmxlbiAo dXNlcl9uYW1lKSArIHN0cmxlbiAoaG9zdF9uYW1lKQotCQkJICAgICAgKyAyICogSU5UX1NU UkxFTl9CT1VORCAocHJpbnRtYXhfdCkKLQkJCSAgICAgICsgc2l6ZW9mICJALjoiKTsKLSAg Y2hhciAqbG9ja19pbmZvX3N0ciA9IFNBRkVfQUxMT0NBIChsb2NrX2luZm9fc2l6ZSk7Cisg IGNoYXIgbG9ja19pbmZvX3N0cltNQVhfTEZJTkZPICsgMV07CiAgIHByaW50bWF4X3QgcGlk ID0gZ2V0cGlkICgpOwogCi0gIGVzcHJpbnRmIChsb2NrX2luZm9fc3RyLCBib290ID8gIiVz QCVzLiUicE1kIjolInBNZCA6ICIlc0Alcy4lInBNZCwKLQkgICAgdXNlcl9uYW1lLCBob3N0 X25hbWUsIHBpZCwgYm9vdCk7Ci0gIGVyciA9IGNyZWF0ZV9sb2NrX2ZpbGUgKGxmbmFtZSwg bG9ja19pbmZvX3N0ciwgZm9yY2UpOworICBpZiAoc2l6ZW9mIGxvY2tfaW5mb19zdHIKKyAg ICAgIDw9IHNucHJpbnRmIChsb2NrX2luZm9fc3RyLCBzaXplb2YgbG9ja19pbmZvX3N0ciwK KwkJICAgYm9vdCA/ICIlc0Alcy4lInBNZCI6JSJwTWQgOiAiJXNAJXMuJSJwTWQsCisJCSAg IHVzZXJfbmFtZSwgaG9zdF9uYW1lLCBwaWQsIGJvb3QpKQorICAgIHJldHVybiBFTkFNRVRP T0xPTkc7CiAKLSAgc3ltbGlua19lcnJubyA9IGVycm5vOwotICBTQUZFX0ZSRUUgKCk7Ci0g IGVycm5vID0gc3ltbGlua19lcnJubzsKLSAgcmV0dXJuIGVyciA9PSAwOworICByZXR1cm4g Y3JlYXRlX2xvY2tfZmlsZSAobGZuYW1lLCBsb2NrX2luZm9fc3RyLCBmb3JjZSk7CiB9CiAK IC8qIFJldHVybiB0cnVlIGlmIHRpbWVzIEEgYW5kIEIgYXJlIG5vIG1vcmUgdGhhbiBvbmUg c2Vjb25kIGFwYXJ0LiAgKi8KQEAgLTQxNCwzMiArNDQ0LDQ2IEBACiAgIHJldHVybiAoYSAt IGIgPj0gLTEgJiYgYSAtIGIgPD0gMSk7CiB9CiAMCi1zdGF0aWMgTGlzcF9PYmplY3QKLXJl YWRfbG9ja19kYXRhIChjaGFyICpsZm5hbWUpCisvKiBSZWFkIHRoZSBkYXRhIGZvciB0aGUg bG9jayBmaWxlIExGTkFNRSBpbnRvIExGSU5GTy4gIFJlYWQgYXQgbW9zdAorICAgTUFYX0xG SU5GTyArIDEgYnl0ZXMuICBSZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyByZWFkLCBvciAt MQorICAgKHNldHRpbmcgZXJybm8pIG9uIGVycm9yLiAgKi8KKworc3RhdGljIHB0cmRpZmZf dAorcmVhZF9sb2NrX2RhdGEgKGNoYXIgKmxmbmFtZSwgY2hhciBsZmluZm9bTUFYX0xGSU5G TyArIDFdKQogewotI2lmbmRlZiBXSU5ET1dTTlQKLSAgcmV0dXJuIGVtYWNzX3JlYWRsaW5r YXQgKEFUX0ZEQ1dELCBsZm5hbWUpOwotI2Vsc2UKLSAgaW50IGZkID0gZW1hY3Nfb3BlbiAo bGZuYW1lLCBPX1JET05MWSB8IE9fQklOQVJZLCBTX0lSRUFEKTsKLSAgc3NpemVfdCBuYnl0 ZXM7Ci0gIC8qIDI1NiBjaGFycyBmb3IgdXNlciwgMTAyNCBjaGFycyBmb3IgaG9zdCwgMTAg ZGlnaXRzIGZvciBlYWNoIG9mIDIgaW50J3MuICAqLwotICBlbnVtIHsgTUFYX0xGSU5GTyA9 IDI1NiArIDEwMjQgKyAxMCArIDEwICsgMiB9OwotICBjaGFyIGxmaW5mb1tNQVhfTEZJTkZP ICsgMV07Ci0KLSAgaWYgKGZkIDwgMCkKLSAgICByZXR1cm4gUW5pbDsKLQotICBuYnl0ZXMg PSBlbWFjc19yZWFkIChmZCwgbGZpbmZvLCBNQVhfTEZJTkZPKTsKLSAgZW1hY3NfY2xvc2Ug KGZkKTsKLQotICBpZiAobmJ5dGVzID4gMCkKKyAgcHRyZGlmZl90IG5ieXRlczsKKworICB3 aGlsZSAoKG5ieXRlcyA9IHJlYWRsaW5rYXQgKEFUX0ZEQ1dELCBsZm5hbWUsIGxmaW5mbywg TUFYX0xGSU5GTyArIDEpKSA8IDAKKwkgJiYgZXJybm8gPT0gRUlOVkFMKQogICAgIHsKLSAg ICAgIGxmaW5mb1tuYnl0ZXNdID0gJ1wwJzsKLSAgICAgIHJldHVybiBidWlsZF9zdHJpbmcg KGxmaW5mbyk7CisgICAgICBpbnQgZmQgPSBlbWFjc19vcGVuIChsZm5hbWUsIE9fUkRPTkxZ IHwgT19CSU5BUlkgfCBPX05PRk9MTE9XLCAwKTsKKyAgICAgIGlmICgwIDw9IGZkKQorCXsK KwkgIGludCByZWFkX2Vycm5vOworCSAgbmJ5dGVzID0gZW1hY3NfcmVhZCAoZmQsIGxmaW5m bywgTUFYX0xGSU5GTyArIDEpOworCSAgcmVhZF9lcnJubyA9IGVycm5vOworCisJICBpZiAo ZW1hY3NfY2xvc2UgKGZkKSAhPSAwKQorCSAgICByZXR1cm4gLTE7CisJICBpZiAoMCA8IG5i eXRlcyAmJiBtZW1jaHIgKGxmaW5mbywgMCwgbmJ5dGVzKSkKKwkgICAgeworCSAgICAgIGVy cm5vID0gRUlOVkFMOworCSAgICAgIHJldHVybiAtMTsKKwkgICAgfQorCSAgZXJybm8gPSBy ZWFkX2Vycm5vOworCSAgcmV0dXJuIG5ieXRlczsKKwl9CisKKyAgICAgIGlmIChlcnJubyAh PSBFTE9PUCkKKwlyZXR1cm4gLTE7CisKKyAgICAgIC8qIHJlYWRsaW5rYXQgc2F3IGEgbm9u LXN5bWxpbmssIGJ1dCBlbWFjc19vcGVuIHNhdyBhIHN5bWxpbmsuCisJIFRoZSBmb3JtZXIg bXVzdCBoYXZlIGJlZW4gcmVtb3ZlZCBhbmQgcmVwbGFjZWQgYnkgdGhlIGxhdHRlci4KKwkg VHJ5IGFnYWluLiAgKi8KKyAgICAgIFFVSVQ7CiAgICAgfQotICBlbHNlCi0gICAgcmV0dXJu IFFuaWw7Ci0jZW5kaWYKKworICByZXR1cm4gbmJ5dGVzOwogfQogCiAvKiBSZXR1cm4gMCBp ZiBub2JvZHkgb3ducyB0aGUgbG9jayBmaWxlIExGTkFNRSBvciB0aGUgbG9jayBpcyBvYnNv bGV0ZSwKQEAgLTQ1MSw4MyArNDk1LDg0IEBACiBjdXJyZW50X2xvY2tfb3duZXIgKGxvY2tf aW5mb190eXBlICpvd25lciwgY2hhciAqbGZuYW1lKQogewogICBpbnQgcmV0OwotICBwdHJk aWZmX3QgbGVuOwogICBsb2NrX2luZm9fdHlwZSBsb2NhbF9vd25lcjsKKyAgcHRyZGlmZl90 IGxmaW5mb2xlbjsKKyAgcGlkX3QgcGlkOworICB0aW1lX3QgYm9vdF90aW1lOwogICBpbnRt YXhfdCBuOwotICBjaGFyICphdCwgKmRvdCwgKmNvbG9uOwotICBMaXNwX09iamVjdCBsZmlu Zm9fb2JqZWN0ID0gcmVhZF9sb2NrX2RhdGEgKGxmbmFtZSk7Ci0gIGNoYXIgKmxmaW5mbzsK LSAgc3RydWN0IGdjcHJvIGdjcHJvMTsKLQotICAvKiBJZiBub25leGlzdGVudCBsb2NrIGZp bGUsIGFsbCBpcyB3ZWxsOyBvdGhlcndpc2UsIGdvdCBzdHJhbmdlIGVycm9yLiAqLwotICBp ZiAoTklMUCAobGZpbmZvX29iamVjdCkpCi0gICAgcmV0dXJuIGVycm5vID09IEVOT0VOVCA/ IDAgOiAtMTsKLSAgbGZpbmZvID0gU1NEQVRBIChsZmluZm9fb2JqZWN0KTsKKyAgY2hhciAq YXQsICpkb3QsICpjb2xvbiwgKmxmaW5mb19lbmQ7CiAKICAgLyogRXZlbiBpZiB0aGUgY2Fs bGVyIGRvZXNuJ3Qgd2FudCB0aGUgb3duZXIgaW5mbywgd2Ugc3RpbGwgaGF2ZSB0bwogICAg ICByZWFkIGl0IHRvIGRldGVybWluZSByZXR1cm4gdmFsdWUuICAqLwogICBpZiAoIW93bmVy KQogICAgIG93bmVyID0gJmxvY2FsX293bmVyOwogCisgIC8qIElmIG5vbmV4aXN0ZW50IGxv Y2sgZmlsZSwgYWxsIGlzIHdlbGw7IG90aGVyd2lzZSwgZ290IHN0cmFuZ2UgZXJyb3IuICov CisgIGxmaW5mb2xlbiA9IHJlYWRfbG9ja19kYXRhIChsZm5hbWUsIG93bmVyLT51c2VyKTsK KyAgaWYgKGxmaW5mb2xlbiA8IDApCisgICAgcmV0dXJuIGVycm5vID09IEVOT0VOVCA/IDAg OiAtMTsKKyAgaWYgKE1BWF9MRklORk8gPCBsZmluZm9sZW4pCisgICAgcmV0dXJuIC0xOwor ICBvd25lci0+dXNlcltsZmluZm9sZW5dID0gMDsKKwogICAvKiBQYXJzZSBVU0VSQEhPU1Qu UElEOkJPT1RfVElNRS4gIElmIGNhbid0IHBhcnNlLCByZXR1cm4gLTEuICAqLwogICAvKiBU aGUgVVNFUiBpcyBldmVyeXRoaW5nIGJlZm9yZSB0aGUgbGFzdCBALiAgKi8KLSAgYXQgPSBz dHJyY2hyIChsZmluZm8sICdAJyk7Ci0gIGRvdCA9IHN0cnJjaHIgKGxmaW5mbywgJy4nKTsK LSAgaWYgKCFhdCB8fCAhZG90KQotICAgIHJldHVybiAtMTsKLSAgbGVuID0gYXQgLSBsZmlu Zm87Ci0gIEdDUFJPMSAobGZpbmZvX29iamVjdCk7Ci0gIG93bmVyLT51c2VyID0geG1hbGxv YyAobGVuICsgMSk7Ci0gIG1lbWNweSAob3duZXItPnVzZXIsIGxmaW5mbywgbGVuKTsKLSAg b3duZXItPnVzZXJbbGVuXSA9IDA7CisgIGF0ID0gbWVtcmNociAob3duZXItPnVzZXIsICdA JywgbGZpbmZvbGVuKTsKKyAgaWYgKCFhdCkKKyAgICByZXR1cm4gLTE7CisgIGRvdCA9IHN0 cnJjaHIgKGF0LCAnLicpOworICBpZiAoIWRvdCkKKyAgICByZXR1cm4gLTE7CiAKICAgLyog VGhlIFBJRCBpcyBldmVyeXRoaW5nIGZyb20gdGhlIGxhc3QgYC4nIHRvIHRoZSBgOicuICAq LworICBpZiAoISBjX2lzZGlnaXQgKGRvdFsxXSkpCisgICAgcmV0dXJuIC0xOwogICBlcnJu byA9IDA7Ci0gIG4gPSBzdHJ0b2ltYXggKGRvdCArIDEsIE5VTEwsIDEwKTsKLSAgb3duZXIt PnBpZCA9Ci0gICAgKCgwIDw9IG4gJiYgbiA8PSBUWVBFX01BWElNVU0gKHBpZF90KQotICAg ICAgJiYgKFRZUEVfTUFYSU1VTSAocGlkX3QpIDwgSU5UTUFYX01BWCB8fCBlcnJubyAhPSBF UkFOR0UpKQotICAgICA/IG4gOiAwKTsKKyAgbiA9IHN0cnRvaW1heCAoZG90ICsgMSwgJmNv bG9uLCAxMCk7CisgIGlmICghIChuIDw9IFRZUEVfTUFYSU1VTSAocGlkX3QpCisJICYmIChU WVBFX01BWElNVU0gKHBpZF90KSA8IElOVE1BWF9NQVggfHwgZXJybm8gIT0gRVJBTkdFKSkp CisgICAgcmV0dXJuIC0xOworICBwaWQgPSBuOwogCi0gIGNvbG9uID0gc3RyY2hyIChkb3Qg KyAxLCAnOicpOwogICAvKiBBZnRlciB0aGUgYDonLCBpZiB0aGVyZSBpcyBvbmUsIGNvbWVz IHRoZSBib290IHRpbWUuICAqLwotICBuID0gMDsKLSAgaWYgKGNvbG9uKQorICBzd2l0Y2gg KCpjb2xvbikKICAgICB7CisgICAgY2FzZSAwOgorICAgICAgbiA9IDA7CisgICAgICBicmVh azsKKworICAgIGNhc2UgJzonOgorICAgICAgaWYgKCEgY19pc2RpZ2l0IChjb2xvblsxXSkp CisJcmV0dXJuIC0xOwogICAgICAgZXJybm8gPSAwOwotICAgICAgbiA9IHN0cnRvaW1heCAo Y29sb24gKyAxLCBOVUxMLCAxMCk7CisgICAgICBuID0gc3RydG9pbWF4IChjb2xvbiArIDEs ICZsZmluZm9fZW5kLCAxMCk7CisgICAgICBpZiAoISAobGZpbmZvX2VuZCA9PSBvd25lci0+ dXNlciArIGxmaW5mb2xlbgorCSAgICAgJiYgbiA8PSBUWVBFX01BWElNVU0gKHRpbWVfdCkK KwkgICAgICYmIChUWVBFX01BWElNVU0gKHRpbWVfdCkgPCBJTlRNQVhfTUFYIHx8IGVycm5v ICE9IEVSQU5HRSkpKQorCXJldHVybiAtMTsKKyAgICAgIGJyZWFrOworCisgICAgZGVmYXVs dDoKKyAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gIG93bmVyLT5ib290X3RpbWUgPQotICAg ICgoMCA8PSBuICYmIG4gPD0gVFlQRV9NQVhJTVVNICh0aW1lX3QpCi0gICAgICAmJiAoVFlQ RV9NQVhJTVVNICh0aW1lX3QpIDwgSU5UTUFYX01BWCB8fCBlcnJubyAhPSBFUkFOR0UpKQot ICAgICA/IG4gOiAwKTsKLQotICAvKiBUaGUgaG9zdCBpcyBldmVyeXRoaW5nIGluIGJldHdl ZW4uICAqLwotICBsZW4gPSBkb3QgLSBhdCAtIDE7Ci0gIG93bmVyLT5ob3N0ID0geG1hbGxv YyAobGVuICsgMSk7Ci0gIG1lbWNweSAob3duZXItPmhvc3QsIGF0ICsgMSwgbGVuKTsKLSAg b3duZXItPmhvc3RbbGVuXSA9IDA7Ci0KLSAgLyogV2UncmUgZG9uZSBsb29raW5nIGF0IHRo ZSBsaW5rIGluZm8uICAqLwotICBVTkdDUFJPOworICBib290X3RpbWUgPSBuOwogCiAgIC8q IE9uIGN1cnJlbnQgaG9zdD8gICovCi0gIGlmIChTVFJJTkdQIChGc3lzdGVtX25hbWUgKCkp Ci0gICAgICAmJiBzdHJjbXAgKG93bmVyLT5ob3N0LCBTU0RBVEEgKEZzeXN0ZW1fbmFtZSAo KSkpID09IDApCisgIGlmIChTVFJJTkdQIChWc3lzdGVtX25hbWUpCisgICAgICAmJiBkb3Qg LSAoYXQgKyAxKSA9PSBTQllURVMgKFZzeXN0ZW1fbmFtZSkKKyAgICAgICYmIG1lbWNtcCAo YXQgKyAxLCBTU0RBVEEgKFZzeXN0ZW1fbmFtZSksIFNCWVRFUyAoVnN5c3RlbV9uYW1lKSkg PT0gMCkKICAgICB7Ci0gICAgICBpZiAob3duZXItPnBpZCA9PSBnZXRwaWQgKCkpCisgICAg ICBpZiAocGlkID09IGdldHBpZCAoKSkKICAgICAgICAgcmV0ID0gMjsgLyogV2Ugb3duIGl0 LiAgKi8KLSAgICAgIGVsc2UgaWYgKG93bmVyLT5waWQgPiAwCi0gICAgICAgICAgICAgICAm JiAoa2lsbCAob3duZXItPnBpZCwgMCkgPj0gMCB8fCBlcnJubyA9PSBFUEVSTSkKLQkgICAg ICAgJiYgKG93bmVyLT5ib290X3RpbWUgPT0gMAotCQkgICB8fCB3aXRoaW5fb25lX3NlY29u ZCAob3duZXItPmJvb3RfdGltZSwgZ2V0X2Jvb3RfdGltZSAoKSkpKQorICAgICAgZWxzZSBp ZiAocGlkID4gMAorICAgICAgICAgICAgICAgJiYgKGtpbGwgKHBpZCwgMCkgPj0gMCB8fCBl cnJubyA9PSBFUEVSTSkKKwkgICAgICAgJiYgKGJvb3RfdGltZSA9PSAwCisJCSAgIHx8IHdp dGhpbl9vbmVfc2Vjb25kIChib290X3RpbWUsIGdldF9ib290X3RpbWUgKCkpKSkKICAgICAg ICAgcmV0ID0gMTsgLyogQW4gZXhpc3RpbmcgcHJvY2VzcyBvbiB0aGlzIG1hY2hpbmUgb3du cyBpdC4gICovCiAgICAgICAvKiBUaGUgb3duZXIgcHJvY2VzcyBpcyBkZWFkIG9yIGhhcyBh IHN0cmFuZ2UgcGlkICg8PTApLCBzbyB0cnkgdG8KICAgICAgICAgIHphcCB0aGUgbG9ja2Zp bGUuICAqLwotICAgICAgZWxzZSBpZiAodW5saW5rIChsZm5hbWUpIDwgMCkKLSAgICAgICAg cmV0ID0gLTE7CiAgICAgICBlbHNlCi0JcmV0ID0gMDsKKyAgICAgICAgcmV0dXJuIHVubGlu ayAobGZuYW1lKTsKICAgICB9CiAgIGVsc2UKICAgICB7IC8qIElmIHdlIHdhbnRlZCB0byBz dXBwb3J0IHRoZSBjaGVjayBmb3Igc3RhbGUgbG9ja3Mgb24gcmVtb3RlIG1hY2hpbmVzLApA QCAtNTM1LDExICs1ODAsMTAgQEAKICAgICAgIHJldCA9IDE7CiAgICAgfQogCi0gIC8qIEF2 b2lkIGdhcmJhZ2UuICAqLwotICBpZiAob3duZXIgPT0gJmxvY2FsX293bmVyIHx8IHJldCA8 PSAwKQotICAgIHsKLSAgICAgIEZSRUVfTE9DS19JTkZPICgqb3duZXIpOwotICAgIH0KKyAg b3duZXItPmF0ID0gYXQ7CisgIG93bmVyLT5kb3QgPSBkb3Q7CisgIG93bmVyLT5waWQgPSBw aWQ7CisgIG93bmVyLT5ib290X3RpbWUgPSBib290X3RpbWU7CiAgIHJldHVybiByZXQ7CiB9 CiAKQEAgLTU1MSwyOSArNTk1LDI1IEBACiAgICBSZXR1cm4gLTEgaWYgY2Fubm90IGxvY2sg Zm9yIGFueSBvdGhlciByZWFzb24uICAqLwogCiBzdGF0aWMgaW50Ci1sb2NrX2lmX2ZyZWUg KGxvY2tfaW5mb190eXBlICpjbGFzaGVyLCByZWdpc3RlciBjaGFyICpsZm5hbWUpCitsb2Nr X2lmX2ZyZWUgKGxvY2tfaW5mb190eXBlICpjbGFzaGVyLCBjaGFyICpsZm5hbWUpCiB7Ci0g IHdoaWxlICghIGxvY2tfZmlsZV8xIChsZm5hbWUsIDApKQorICBpbnQgZXJyOworICB3aGls ZSAoKGVyciA9IGxvY2tfZmlsZV8xIChsZm5hbWUsIDApKSA9PSBFRVhJU1QpCiAgICAgewot ICAgICAgaW50IGxvY2tlcjsKLQotICAgICAgaWYgKGVycm5vICE9IEVFWElTVCkKLQlyZXR1 cm4gLTE7Ci0KLSAgICAgIGxvY2tlciA9IGN1cnJlbnRfbG9ja19vd25lciAoY2xhc2hlciwg bGZuYW1lKTsKLSAgICAgIGlmIChsb2NrZXIgPT0gMikKLSAgICAgICAgewotICAgICAgICAg IEZSRUVfTE9DS19JTkZPICgqY2xhc2hlcik7Ci0gICAgICAgICAgcmV0dXJuIDA7ICAgLyog V2Ugb3Vyc2VsdmVzIGxvY2tlZCBpdC4gICovCi0gICAgICAgIH0KLSAgICAgIGVsc2UgaWYg KGxvY2tlciA9PSAxKQotICAgICAgICByZXR1cm4gMTsgIC8qIFNvbWVvbmUgZWxzZSBoYXMg aXQuICAqLwotICAgICAgZWxzZSBpZiAobG9ja2VyID09IC0xKQotCXJldHVybiAtMTsgICAv KiBjdXJyZW50X2xvY2tfb3duZXIgcmV0dXJuZWQgc3RyYW5nZSBlcnJvci4gICovCisgICAg ICBzd2l0Y2ggKGN1cnJlbnRfbG9ja19vd25lciAoY2xhc2hlciwgbGZuYW1lKSkKKwl7CisJ Y2FzZSAyOgorCSAgcmV0dXJuIDA7ICAgLyogV2Ugb3Vyc2VsdmVzIGxvY2tlZCBpdC4gICov CisJY2FzZSAxOgorCSAgcmV0dXJuIDE7ICAgLyogU29tZW9uZSBlbHNlIGhhcyBpdC4gICov CisJY2FzZSAtMToKKwkgIHJldHVybiAtMTsgIC8qIGN1cnJlbnRfbG9ja19vd25lciByZXR1 cm5lZCBzdHJhbmdlIGVycm9yLiAgKi8KKwl9CiAKICAgICAgIC8qIFdlIGRlbGV0ZWQgYSBz dGFsZSBsb2NrOyB0cnkgYWdhaW4gdG8gbG9jayB0aGUgZmlsZS4gICovCiAgICAgfQotICBy ZXR1cm4gMDsKKworICByZXR1cm4gZXJyID8gLTEgOiAwOwogfQogCiAvKiBsb2NrX2ZpbGUg bG9ja3MgZmlsZSBGTiwKQEAgLTY0NSwxNyArNjg1LDEyIEBACiAgIGlmICgwIDwgbG9ja19p Zl9mcmVlICgmbG9ja19pbmZvLCBsZm5hbWUpKQogICAgIHsKICAgICAgIC8qIFNvbWVvbmUg ZWxzZSBoYXMgdGhlIGxvY2suICBDb25zaWRlciBicmVha2luZyBpdC4gICovCi0gICAgICBw dHJkaWZmX3QgbG9ja2VyX3NpemUgPSAoc3RybGVuIChsb2NrX2luZm8udXNlcikgKyBzdHJs ZW4gKGxvY2tfaW5mby5ob3N0KQotCQkJICAgICAgICsgSU5UX1NUUkxFTl9CT1VORCAocHJp bnRtYXhfdCkKLQkJCSAgICAgICArIHNpemVvZiAiQCAocGlkICkiKTsKLSAgICAgIGNoYXIg KmxvY2tlciA9IFNBRkVfQUxMT0NBIChsb2NrZXJfc2l6ZSk7CiAgICAgICBwcmludG1heF90 IHBpZCA9IGxvY2tfaW5mby5waWQ7CiAgICAgICBMaXNwX09iamVjdCBhdHRhY2s7Ci0gICAg ICBlc3ByaW50ZiAobG9ja2VyLCAiJXNAJXMgKHBpZCAlInBNZCIpIiwKLQkJbG9ja19pbmZv LnVzZXIsIGxvY2tfaW5mby5ob3N0LCBwaWQpOwotICAgICAgRlJFRV9MT0NLX0lORk8gKGxv Y2tfaW5mbyk7CisgICAgICBlc3ByaW50ZiAobG9ja19pbmZvLmRvdCwgIiAocGlkICUicE1k IikiLCBwaWQpOwogCi0gICAgICBhdHRhY2sgPSBjYWxsMiAoaW50ZXJuICgiYXNrLXVzZXIt YWJvdXQtbG9jayIpLCBmbiwgYnVpbGRfc3RyaW5nIChsb2NrZXIpKTsKKyAgICAgIGF0dGFj ayA9IGNhbGwyIChpbnRlcm4gKCJhc2stdXNlci1hYm91dC1sb2NrIiksIGZuLAorCQkgICAg ICBidWlsZF9zdHJpbmcgKGxvY2tfaW5mby51c2VyKSk7CiAgICAgICAvKiBUYWtlIHRoZSBs b2NrIGlmIHRoZSB1c2VyIHNhaWQgc28uICAqLwogICAgICAgaWYgKCFOSUxQIChhdHRhY2sp KQogCWxvY2tfZmlsZV8xIChsZm5hbWUsIDEpOwpAQCAtNzYwLDEwICs3OTUsNyBAQAogICBl bHNlIGlmIChvd25lciA9PSAyKQogICAgIHJldCA9IFF0OwogICBlbHNlCi0gICAgcmV0ID0g YnVpbGRfc3RyaW5nIChsb2NrZXIudXNlcik7Ci0KLSAgaWYgKG93bmVyID4gMCkKLSAgICBG UkVFX0xPQ0tfSU5GTyAobG9ja2VyKTsKKyAgICByZXQgPSBtYWtlX3N0cmluZyAobG9ja2Vy LnVzZXIsIGxvY2tlci5hdCAtIGxvY2tlci51c2VyKTsKIAogICBTQUZFX0ZSRUUgKCk7CiAg IHJldHVybiByZXQ7Cgo= --------------050900080305030900000207-- From debbugs-submit-bounces@debbugs.gnu.org Sun Mar 03 11:40:25 2013 Received: (at 13807) by debbugs.gnu.org; 3 Mar 2013 16:40:25 +0000 Received: from localhost ([127.0.0.1]:57298 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UCBxY-00057U-Tk for submit@debbugs.gnu.org; Sun, 03 Mar 2013 11:40:25 -0500 Received: from mtaout21.012.net.il ([80.179.55.169]:60547) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UCBxW-00057G-AI for 13807@debbugs.gnu.org; Sun, 03 Mar 2013 11:40:23 -0500 Received: from conversion-daemon.a-mtaout21.012.net.il by a-mtaout21.012.net.il (HyperSendmail v2007.08) id <0MJ300M00FKLIO00@a-mtaout21.012.net.il> for 13807@debbugs.gnu.org; Sun, 03 Mar 2013 18:40:05 +0200 (IST) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by a-mtaout21.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0MJ300M6PFMSCR60@a-mtaout21.012.net.il>; Sun, 03 Mar 2013 18:40:05 +0200 (IST) Date: Sun, 03 Mar 2013 18:39:55 +0200 From: Eli Zaretskii Subject: Re: bug#13807: updated version to avoid MS-Windows vs non-MS-Windows clashes In-reply-to: <51327F29.5000600@cs.ucla.edu> X-012-Sender: halo1@inter.net.il To: Paul Eggert , Stefan Monnier Message-id: <83ppzgtp2c.fsf@gnu.org> References: <512A98D5.7080000@cs.ucla.edu> <512D3508.1000906@cs.ucla.edu> <83txoxwq0p.fsf@gnu.org> <51326459.4030001@cs.ucla.edu> <83vc99tsbm.fsf@gnu.org> <51327F29.5000600@cs.ucla.edu> X-Spam-Score: 0.7 (/) X-Debbugs-Envelope-To: 13807 Cc: 13807@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list Reply-To: Eli Zaretskii List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.2 (-) > Date: Sat, 02 Mar 2013 14:37:29 -0800 > From: Paul Eggert > CC: 13807@debbugs.gnu.org > > On 03/02/2013 01:17 PM, Eli Zaretskii wrote: > > Can you describe your testing > > in more details, and what versions of NFS and Windows did you use? > > Sure, I created a MS-Windows style lock file .#FILE by hand, then > edited FILE with a GNU/Linux Emacs. But this is not a faithful reproduction of what happens when .#FILE is created by Emacs running on Windows. Because of the way Emacs on Windows creates/opens this file, it is effectively inaccessible to any other process, even _after_ the file is written and its handle closed. My testing indicates that 'readdir' does return the file's name, but every other system call I tried, including even 'lstat', fails with EPERM. (I don't know whether all NFS servers behave that way.) And that caused Emacs on GNU/Linux to refrain from locking the file. In addition, with the changes you installed, I think even if .#FILE _can_ be accessed, Emacs on a Posix host will refrain from locking it, because 'readlink' will fail for it, right? There are no more .#FILE.0 alternative names. So I still don't see the reason for using different names on Windows and Posix hosts. > There's another issue: a GNU/Linux Emacs might be using an > MS-Windows file system that does not support symbolic links. Such > an Emacs should use a regular-file lock, just as MS-Windows Emacs does, > which means that the code to create regular-file locks should be implementable > in POSIXish primitives. Also, locking should work even if the Emacs > instance that created a lock uses a symlink whereas the Emacs instance > trying to get the lock would use a regular file, or vice versa. But these issues are unrelated to the MS-Windows build of Emacs. They existed since about forever, and we never cared. Why is it suddenly so important that this feature works with 110% reliability, something it never did? Am I the only one who thinks we are way past the point of diminishing returns here1? Stefan? Anyone? > It'll take some thinking to get all this to work well. I've written > a first cut for this and have attached it. I have not tested this > on MS-Windows at all, and haven't tested it as much as I'd like on > GNU/Linux, but it should give a feel for the sort of changes that > need to be made. Unfortunately the patch is a bit complicated, > but to some extent this is inherent in such a complicated area. I think we are wasting our time and energy here. Nothing terrible will happen if locking silently fails from time to time, as it always did. If we want, we could even optionally make these failures be announced, by looking at the value lock_file returns, which we currently ignore. But if we do go in the direction you suggest, I think we will need to provide two completely separate implementations for create_lock_file, one for Posix, the other for MS-Windows. This is because the primitives you used in your suggested patch have problems on Windows: 'rename' is not atomic when it needs to delete the target (this is not supported by the MS 'rename', so we emulate this in w32.c:sys_rename), and hard links are only supported on NTFS, so editing files on FAT32 volumes (flash drives are normally formatted this way) will be unable to lock files. By contrast, using '_sopen', like I did in the current code, really does make creation of the lock file atomic, and works with any filesystem supported by Windows, including NFS-mounted volumes. So, unless there's a way to do on Posix platforms what '_sopen' does on Windows (perhaps some file-locking feature? I don't know enough about that), I think having 2 completely separate implementations will be cleaner and more maintainable. (Assuming, that is, that we really do want to make file locking so bulletproof.) From debbugs-submit-bounces@debbugs.gnu.org Sun Mar 03 18:56:40 2013 Received: (at 13807) by debbugs.gnu.org; 3 Mar 2013 23:56:40 +0000 Received: from localhost ([127.0.0.1]:57729 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UCIlg-0008P9-7u for submit@debbugs.gnu.org; Sun, 03 Mar 2013 18:56:40 -0500 Received: from smtp.cs.ucla.edu ([131.179.128.62]:48152) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UCIlX-0008Oh-Sg for 13807@debbugs.gnu.org; Sun, 03 Mar 2013 18:56:34 -0500 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 62576A60045; Sun, 3 Mar 2013 15:56:10 -0800 (PST) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id cNWN2lSnBYnn; Sun, 3 Mar 2013 15:56:05 -0800 (PST) Received: from [192.168.1.9] (pool-71-189-154-249.lsanca.fios.verizon.net [71.189.154.249]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id 9A02FA6003D; Sun, 3 Mar 2013 15:56:03 -0800 (PST) Message-ID: <5133E313.5040701@cs.ucla.edu> Date: Sun, 03 Mar 2013 15:56:03 -0800 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130221 Thunderbird/17.0.3 MIME-Version: 1.0 To: Eli Zaretskii Subject: Re: bug#13807: updated version to avoid MS-Windows vs non-MS-Windows clashes References: <512A98D5.7080000@cs.ucla.edu> <512D3508.1000906@cs.ucla.edu> <83txoxwq0p.fsf@gnu.org> <51326459.4030001@cs.ucla.edu> <83vc99tsbm.fsf@gnu.org> <51327F29.5000600@cs.ucla.edu> <83ppzgtp2c.fsf@gnu.org> In-Reply-To: <83ppzgtp2c.fsf@gnu.org> Content-Type: multipart/mixed; boundary="------------060107000305030307010009" X-Spam-Score: -4.8 (----) X-Debbugs-Envelope-To: 13807 Cc: 13807@debbugs.gnu.org, Stefan Monnier X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -4.8 (----) This is a multi-part message in MIME format. --------------060107000305030307010009 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 03/03/2013 08:39 AM, Eli Zaretskii wrote: > the primitives you used in your suggested patch have problems on Windows: > 'rename' is not atomic when it needs to delete the target ... > and hard links are only supported on NTFS Thanks for mentioning these problems. The latter issue affects GNU/Linux, too, since it also can mount FAT32 file systems. Attached is a revised patch that tries to address these problems. > My testing indicates that 'readdir' does return the file's name, but > every other system call I tried, including even 'lstat', fails with > EPERM. (I don't know whether all NFS servers behave that way.) They don't. Traditional NFS servers are stateless, and do not have a state where a file exists and its parent directory is accessible but you cannot stat the file. I'd even call that behavior a bug: file servers with that behavior will cause problems with many GNU programs, including Emacs. It would not be wise for Emacs to rely on or encourage that behavior. > with the changes you installed, I think even if .#FILE > _can_ be accessed, Emacs on a Posix host will refrain from > locking it, because 'readlink' will fail for it, right? That's correct: the existence of a regular-file .#FILE prevents Emacs from locking FILE, and Emacs goes ahead and accesses FILE without bothering to lock it. The assumption is that .#FILE was created for some other reason and should not be messed with. > these issues are unrelated to the MS-Windows build of Emacs. I don't see why they're unrelated. If an MS-Windows Emacs uses regular files for locks, these files get in the way of GNU/Linux Emacs lock files, and that makes these issues pop up. > They existed since about forever, and we never cared. > Why is it suddenly so important that this feature works It's important because the MS-Windows code was recently changed to create lock files, the existence of which could break GNU/Linux Emacs's locking. > with 110% reliability, something it never did? Even with the attached patch, lock files are not 100% reliable. The main point of my patches have been to prevent lock files from being significantly less reliable than they already were. If we easily can make them more reliable, so much the better, but that's not the main goal. --------------060107000305030307010009 Content-Type: text/plain; charset=UTF-8; name="filelock2.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="filelock2.txt" PT09IG1vZGlmaWVkIGZpbGUgJ2V0Yy9DaGFuZ2VMb2cnCi0tLSBldGMvQ2hhbmdlTG9nCTIw MTMtMDMtMDMgMDA6MDI6MTkgKzAwMDAKKysrIGV0Yy9DaGFuZ2VMb2cJMjAxMy0wMy0wMyAw MDoxOTo0NyArMDAwMApAQCAtMSwzICsxLDggQEAKKzIwMTMtMDMtMDMgIFBhdWwgRWdnZXJ0 ICA8ZWdnZXJ0QGNzLnVjbGEuZWR1PgorCisJRklMRSdzIGxvY2sgaXMgbm93IGFsd2F5cyAu I0ZJTEUgYW5kIG1heSBiZSBhIHJlZ3VsYXIgZmlsZSAoQnVnIzEzODA3KS4KKwkqIE5FV1M6 IERvY3VtZW50IHRoaXMuCisKIDIwMTMtMDMtMDIgIEJpbGwgV29obGVyICA8d29obGVyQG5l d3QuY29tPgogCiAJUmVsZWFzZSBNSC1FIHZlcnNpb24gOC41LgoKPT09IG1vZGlmaWVkIGZp bGUgJ2V0Yy9ORVdTJwotLS0gZXRjL05FV1MJMjAxMy0wMy0wMyAwMDowMjoxOSArMDAwMAor KysgZXRjL05FV1MJMjAxMy0wMy0wMyAwMDoxODoxMyArMDAwMApAQCAtMzIwLDcgKzMyMCw3 IEBACiAqKiBUaGUgYGRlZmFsaWFzLWZzZXQtZnVuY3Rpb24nIHByb3BlcnR5IGxldHMgeW91 IGNhdGNoIGNhbGxzIHRvIGRlZmFsaWFzCiBhbmQgcmVkaXJlY3QgdGhlbSB0byB5b3VyIG93 biBmdW5jdGlvbiBpbnN0ZWFkIG9mIGBmc2V0Jy4KIAotKiogVGhlIGxvY2sgZm9yICdESVIv RklMRScgaXMgbm93ICdESVIvLiNGSUxFJyBvciAnRElSLy4jLUZJTEUnLgorKiogVGhlIGxv Y2sgZm9yICdESVIvRklMRScgaXMgbm93ICdESVIvLiNGSUxFJyBhbmQgbWF5IGJlIGEgcmVn dWxhciBmaWxlLgogV2hlbiB5b3UgZWRpdCBESVIvRklMRSwgRW1hY3Mgbm9ybWFsbHkgY3Jl YXRlcyBhIHN5bWJvbGljIGxpbmsKIERJUi8uI0ZJTEUgYXMgYSBsb2NrIHRoYXQgd2FybnMg b3RoZXIgaW5zdGFuY2VzIG9mIEVtYWNzIHRoYXQgRElSL0ZJTEUKIGlzIGJlaW5nIGVkaXRl ZC4gIEZvcm1lcmx5LCBpZiB0aGVyZSB3YXMgYWxyZWFkeSBhIG5vbi1zeW1saW5rIGZpbGUK QEAgLTMyOCw5ICszMjgsOCBAQAogdGhyb3VnaCBESVIvLiNGSUxFLjkuICBUaGVzZSBmYWxs YmFja3MgaGF2ZSBiZWVuIHJlbW92ZWQsIHNvIHRoYXQKIEVtYWNzIG5vdyBubyBsb25nZXIg bG9ja3MgRElSL0ZJTEUgaW4gdGhhdCBjYXNlLgogCi1PbiBNUy1XaW5kb3dzIHRoZSBsb2Nr IGlzIGEgcmVndWxhciBmaWxlIERJUi8uIy1GSUxFLCBub3QgYSBzeW1saW5rLgotTVMtV2lu ZG93cyBhbmQgbm9uLU1TLVdpbmRvd3MgaW1wbGVtZW50YXRpb25zIG9mIEVtYWNzIGlnbm9y ZSBlYWNoCi1vdGhlcidzIGxvY2tzLgorT24gZmlsZSBzeXN0ZW1zIHRoYXQgZG8gbm90IHN1 cHBvcnQgc3ltYm9saWMgbGlua3MsIHRoZSBsb2NrIGlzIG5vdyBhCityZWd1bGFyIGZpbGUg d2l0aCBjb250ZW50cyBiZWluZyB3aGF0IHdvdWxkIGhhdmUgYmVlbiBpbiB0aGUgc3ltbGlu ay4KIAogKiogVGhlIDl0aCBlbGVtZW50IHJldHVybmVkIGJ5IGBmaWxlLWF0dHJpYnV0ZXMn IGlzIG5vdyB1bnNwZWNpZmllZC4KIEZvcm1lcmx5LCBpdCB3YXMgdCBpZiB0aGUgZmlsZSdz IGdpZCB3b3VsZCBjaGFuZ2UgaWYgZmlsZSB3ZXJlIGRlbGV0ZWQKCj09PSBtb2RpZmllZCBm aWxlICdzcmMvQ2hhbmdlTG9nJwotLS0gc3JjL0NoYW5nZUxvZwkyMDEzLTAzLTAyIDIxOjA1 OjUyICswMDAwCisrKyBzcmMvQ2hhbmdlTG9nCTIwMTMtMDMtMDMgMjM6MTI6NTQgKzAwMDAK QEAgLTEsNSArMSw1NyBAQAorMjAxMy0wMy0wMyAgUGF1bCBFZ2dlcnQgIDxlZ2dlcnRAY3Mu dWNsYS5lZHU+CisKKwlGSUxFJ3MgbG9jayBpcyBub3cgYWx3YXlzIC4jRklMRSBhbmQgbWF5 IGJlIGEgcmVndWxhciBmaWxlIChCdWcjMTM4MDcpLgorCSogZmlsZWxvY2suYzogSW5jbHVk ZSA8Yy1jdHlwZS5oPi4KKwkoTUFYX0xGSU5GTyk6IE5ldyB0b3AtbGV2ZWwgY29uc3RhbnQu CisJKGxvY2tfaW5mb190eXBlKTogUmVtb3ZlIG1lbWJlcnMgcGlkLCBib290X3RpbWUuICBB ZGQgbWVtYmVycyBhdCwKKwlkb3QsIGNvbG9uLiAgQ2hhbmdlIHVzZXIgbWVtYmVyIHRvIGJl IHRoZSBlbnRpcmUgYnVmZmVyLCBub3QgYQorCXBvaW50ZXIuICBUaGlzIGFsbG93cyB1cyB0 byBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUgYSBmb3JlaWduCisJcGlkIG9yIGJvb3QgdGltZSBl eGNlZWRzIHRoZSBsb2NhbCByYW5nZS4gIEFsbCB1c2VzIGNoYW5nZWQuCisJKExJTktTX01J R0hUX05PVF9XT1JLKTogTmV3IGNvbnN0YW50LgorCShGUkVFX0xPQ0tfSU5GTyk6IFJlbW92 ZSwgYXMgdGhlIHBpZWNlcyBubyBsb25nZXIgbmVlZCBmcmVlaW5nLgorCShkZWZpbmVkX1dJ TkRPV1NOVCk6IFJlbW92ZS4KKwkoTUFLRV9MT0NLX05BTUUsIGZpbGVfaW5fbG9ja19maWxl X25hbWUpOgorCUFsd2F5cyB1c2UgLiNGSUxFIChub3QgLiMtRklMRSkgZm9yIHRoZSBmaWxl IGxvY2ssCisJZXZlbiBpZiBpdCBpcyBhIHJlZ3VsYXIgZmlsZS4KKwkocmVuYW1lX2xvY2tf ZmlsZSk6IE5ldyBmdW5jdGlvbi4KKwkoY3JlYXRlX2xvY2tfZmlsZSk6IFVzZSBpdC4KKwko Y3JlYXRlX2xvY2tfZmlsZSwgcmVhZF9sb2NrX2RhdGEpOgorCVByZWZlciBhIHN5bWJvbGlj IGxpbmsgZm9yIHRoZSBsb2NrIGZpbGUsIGZhbGxpbmcgYmFjayBvbiBhCisJcmVndWxhciBm aWxlIGlmIHN5bWxpbmtzIGRvbid0IHdvcmsuICBEbyBub3QgdHJ5IHRvIGNyZWF0ZQorCXN5 bWxpbmtzIG9uIE1TLVdpbmRvd3MsIGR1ZSB0byBzZWN1cml0eSBoYXNzbGVzLiAgU3RpY2sg d2l0aAorCVBPU0lYaXNoIGZ1bmN0aW9ucyAob3BlbiwgcmVhZCwgd3JpdGUsIGNsb3NlLCBy ZWFkbGluaywgc3ltbGluaywKKwlsaW5rLCByZW5hbWUsIHVubGluaywgbWtzdGVtcCkgd2hl biBjcmVhdGluZyBsb2NrcywgYXMgYSBHTlVpc2gKKwlob3N0IG1heSBiZSB1c2luZyBhIFdp bmRvd3Npc2ggZmlsZSBzeXN0ZW0sIGFuZCBjYW5ub3QgdXNlCisJTVMtV2luZG93cy1vbmx5 IHN5c3RlbSBjYWxscy4gIEZhbGwgYmFjayBvbiBta3RlbXAgaWYgbWtzdGVtcAorCWRvZXNu J3Qgd29yay4gIERvbid0IGZhaWwgbWVyZWx5IGJlY2F1c2Ugb2YgYSBzeW1saW5rLWNvbnRl bnRzCisJbGVuZ3RoIGxpbWl0IGluIHRoZSBjdXJyZW50IGZpbGUgc3lzdGVtOyBmYWxsIGJh Y2sgb24gcmVndWxhcgorCWZpbGVzLiAgSW5jcmVhc2UgdGhlIHN5bWxpbmsgY29udGVudHMg bGVuZ3RoIGxpbWl0IHRvIDggS2lCLCB0aGlzCisJc2hvdWxkIGJlIGJpZyBlbm91Z2ggZm9y IGFueSByZWFsIHVzZSBhbmQgZG9lc24ndCBjcnVuY2ggdGhlCisJc3RhY2suCisJKGNyZWF0 ZV9sb2NrX2ZpbGUsIGxvY2tfZmlsZV8xLCByZWFkX2xvY2tfZGF0YSk6CisJU2ltcGxpZnkg YWxsb2NhdGlvbiBvZiBsb2NrIGZpbGUgYnVmZmVycyBub3cgdGhhdCB0aGV5IGZpdCBpbiA4 IEtpQi4KKwkobG9ja19maWxlXzEpOiBSZXR1cm4gZXJyb3IgbnVtYmVyLCBub3QgYm9vbC4g IEFsbCBjYWxsZXJzIGNoYW5nZWQuCisJKHJlYWRfbG9ja19kYXRhKTogUmV0dXJuIHNpemUg b2YgbG9jayBmaWxlIGNvbnRlbnRzLCBub3QgTGlzcCBvYmplY3QuCisJQWxsIGNhbGxlcnMg Y2hhbmdlZC4gIENoZWNrIHRoZSBjb250ZW50cyBvZiBhIHJlZ3VsYXItZmlsZSBsb2NrCisJ Zm9yIG51bGwgYnl0ZXMuICBIYW5kbGUgYSByYWNlIGNvbmRpdGlvbiBpZiBzb21lIG90aGVy IHByb2Nlc3MKKwlyZXBsYWNlcyBhIHJlZ3VsYXItZmlsZSBsb2NrIHdpdGggYSBzeW1saW5r IGxvY2sgb3IgdmljZSB2ZXJzYSwKKwl3aGlsZSB3ZSdyZSB0cnlpbmcgdG8gcmVhZCB0aGUg bG9jay4KKwkoY3VycmVudF9sb2NrX293bmVyKTogUGFyc2UgY29udGVudHMgbW9yZSBjYXJl ZnVsbHksIHRvIGhlbHAgYXZvaWQKKwljb25mdXNpbmcgYSByZWd1bGFyLWZpbGUgbG9jayB3 aXRoIHNvbWUgb3RoZXIgYXBwbGljYXRpb24ncyB1c2UKKwlvZiB0aGUgZmlsZS4gIENoZWNr IGZvciBsb2NrIGZpbGUgY29udGVudHMgYmVpbmcgdG9vIGxvbmcsIG9yCisJbm90IHBhcnNp bmcgY29ycmVjdGx5LgorCShjdXJyZW50X2xvY2tfb3duZXIsIGxvY2tfZmlsZSk6CisJQWxs b3cgZm9yZWlnbiBwaWQgYW5kIGJvb3QgdGltZXMgdGhhdCBleGNlZWQgdGhlIGxvY2FsIHJh bmdlLgorCShjdXJyZW50X2xvY2tfb3duZXIsIGxvY2tfaWZfZnJlZSwgbG9ja19maWxlKToK KwlTaW1wbGlmeSBhbGxvY2F0aW9uIG9mIGxvY2sgZmlsZSBjb250ZW50cy4KKwkqIHczMi5j IChzeXNfcmVuYW1lX3JlcGxhY2UpOiBOZXcgZnVuY3Rpb24sIGNvbnRhaW5pbmcgbW9zdCBv ZgorCXRoZSBjb250ZW50cyBvZiB0aGUgb2xkIHN5c19yZW5hbWUuCisJKHN5c19yZW5hbWUp OiBVc2UgaXQuCisJKiB3MzIuaCAoc3lzX3JlbmFtZV9yZXBsYWNlKTogTmV3IGRlY2wuCisK IDIwMTMtMDMtMDIgIFBhdWwgRWdnZXJ0ICA8ZWdnZXJ0QGNzLnVjbGEuZWR1PgogCisKIAlU aGUgbG9jayBmb3IgRklMRSBpcyBub3cgLiNGSUxFIG9yIC4jLUZJTEUgKEJ1ZyMxMzgwNyku CiAJVGhlIG9sZCBhcHByb2FjaCwgd2hpY2ggZmVsbCBiYWNrIG9uIERJUi8uI0ZJTEUuMCB0 aHJvdWdoCiAJRElSLy4jRklMRS45LCBoYWQgcmFjZSBjb25kaXRpb25zIHRoYXQgY291bGQg bm90IGJlIGVhc2lseSBmaXhlZC4KCj09PSBtb2RpZmllZCBmaWxlICdzcmMvZmlsZWxvY2su YycKLS0tIHNyYy9maWxlbG9jay5jCTIwMTMtMDMtMDIgMjE6MDU6NTIgKzAwMDAKKysrIHNy Yy9maWxlbG9jay5jCTIwMTMtMDMtMDMgMjM6MzU6NDAgKzAwMDAKQEAgLTM4LDYgKzM4LDgg QEAKIAogI2luY2x1ZGUgPGVycm5vLmg+CiAKKyNpbmNsdWRlIDxjLWN0eXBlLmg+CisKICNp bmNsdWRlICJsaXNwLmgiCiAjaW5jbHVkZSAiY2hhcmFjdGVyLmgiCiAjaW5jbHVkZSAiYnVm ZmVyLmgiCkBAIC02NCw3ICs2Niw3IEBACiAjZGVmaW5lIFdUTVBfRklMRSAiL3Zhci9sb2cv d3RtcCIKICNlbmRpZgogCi0vKiBPbiBub24tTVMtV2luZG93cyBzeXN0ZW1zLCB1c2UgYSBz eW1ib2xpYyBsaW5rIHRvIHJlcHJlc2VudCBhIGxvY2suCisvKiBOb3JtYWxseSB1c2UgYSBz eW1ib2xpYyBsaW5rIHRvIHJlcHJlc2VudCBhIGxvY2suCiAgICBUaGUgc3RyYXRlZ3k6IHRv IGxvY2sgYSBmaWxlIEZOLCBjcmVhdGUgYSBzeW1saW5rIC4jRk4gaW4gRk4ncwogICAgZGly ZWN0b3J5LCB3aXRoIGxpbmsgZGF0YSBgdXNlckBob3N0LnBpZCcuICBUaGlzIGF2b2lkcyBh IHNpbmdsZQogICAgbW91bnQgKD09IGZhaWx1cmUpIHBvaW50IGZvciBsb2NrIGZpbGVzLgpA QCAtMTAwLDEwICsxMDIsMjEgQEAKIAogICAgLS1rYXJsQGNzLnVtYi5lZHUva2FybEBocS5p bGVhZi5jb20uCiAKLSAgIE9uIE1TLVdpbmRvd3MsIHN5bWJvbGljIGxpbmtzIGRvIG5vdCB3 b3JrIHdlbGwsIHNvIGluc3RlYWQgb2YgYQotICAgc3ltbGluayAuI0ZOIC0+ICd1c2VyQGhv c3QucGlkJywgdGhlIGxvY2sgaXMgYSByZWd1bGFyIGZpbGUgLiMtRk4KLSAgIHdpdGggY29u dGVudHMgJ3VzZXJAaG9zdC5waWQnLiAgTVMtV2luZG93cyBhbmQgbm9uLU1TLVdpbmRvd3MK LSAgIHZlcnNpb25zIG9mIEVtYWNzIGlnbm9yZSBlYWNoIG90aGVyJ3MgbG9ja3MuICAqLwor ICAgT24gc29tZSBmaWxlIHN5c3RlbXMsIG5vdGFibHkgdGhvc2Ugb2YgTVMtV2luZG93cywg c3ltYm9saWMgbGlua3MKKyAgIGRvIG5vdCB3b3JrIHdlbGwsIHNvIGluc3RlYWQgb2YgYSBz eW1saW5rIC4jRk4gLT4gJ3VzZXJAaG9zdC5waWQnLAorICAgdGhlIGxvY2sgaXMgYSByZWd1 bGFyIGZpbGUgLiNGTiB3aXRoIGNvbnRlbnRzICd1c2VyQGhvc3QucGlkJy4gIFRvCisgICBl c3RhYmxpc2ggYSBsb2NrLCBhIG5vbmNlIGZpbGUgaXMgY3JlYXRlZCBhbmQgdGhlbiByZW5h bWVkIHRvIC4jRk4uCisgICBPbiBNUy1XaW5kb3dzIHRoaXMgcmVuYW1pbmcgaXMgYXRvbWlj IHVubGVzcyB0aGUgbG9jayBpcyBmb3JjaWJseQorICAgYWNxdWlyZWQuICBPbiBvdGhlciBz eXN0ZW1zIHRoZSByZW5hbWluZyBpcyBhdG9taWMgaWYgdGhlIGxvY2sgaXMKKyAgIGZvcmNp Ymx5IGFjcXVpcmVkOyBpZiBub3QsIHRoZSByZW5hbWluZyBpcyBkb25lIHZpYSBoYXJkIGxp bmtzLAorICAgd2hpY2ggaXMgZ29vZCBlbm91Z2ggZm9yIGxvY2stZmlsZSBwdXJwb3Nlcy4K KworICAgVG8gc3VtbWFyaXplLCByYWNlIGNvbmRpdGlvbnMgY2FuIG9jY3VyIHdpdGggZWl0 aGVyOgorCisgICAqIEZvcmNlZCBsb2NrcyBvbiBNUy1XaW5kb3dzIHN5c3RlbXMuCisKKyAg ICogTm9uLWZvcmNlZCBsb2NrcyBvbiBub24tTVMtV2luZG93cyBzeXN0ZW1zIHRoYXQgc3Vw cG9ydCBuZWl0aGVyCisgICAgIGhhcmQgbm9yIHN5bWJvbGljIGxpbmtzLiAgKi8KIAogDAog LyogUmV0dXJuIHRoZSB0aW1lIG9mIHRoZSBsYXN0IHN5c3RlbSBib290LiAgKi8KQEAgLTI4 NCwzMCArMjk3LDMxIEBACiB9CiAjZW5kaWYgLyogQk9PVF9USU1FICovCiAMCisvKiBBbiBh cmJpdHJhcnkgbGltaXQgb24gbG9jayBjb250ZW50cyBsZW5ndGguICA4IEsgc2hvdWxkIGJl IHBsZW50eQorICAgYmlnIGVub3VnaCBpbiBwcmFjdGljZS4gICovCitlbnVtIHsgTUFYX0xG SU5GTyA9IDggKiAxMDI0IH07CisKIC8qIEhlcmUgaXMgdGhlIHN0cnVjdHVyZSB0aGF0IHN0 b3JlcyBpbmZvcm1hdGlvbiBhYm91dCBhIGxvY2suICAqLwogCiB0eXBlZGVmIHN0cnVjdAog ewotICBjaGFyICp1c2VyOwotICBjaGFyICpob3N0OwotICBwaWRfdCBwaWQ7Ci0gIHRpbWVf dCBib290X3RpbWU7CisgIC8qIExvY2F0aW9uIG9mICdAJywgJy4nLCAnOicgaW4gVVNFUi4g IElmIHRoZXJlJ3Mgbm8gY29sb24sIENPTE9OCisgICAgIHBvaW50cyB0byB0aGUgZW5kIG9m IFVTRVIuICAqLworICBjaGFyICphdCwgKmRvdCwgKmNvbG9uOworCisgIC8qIExvY2sgZmls ZSBjb250ZW50cyBVU0VSQEhPU1QuUElEIHdpdGggYW4gb3B0aW9uYWwgOkJPT1RfVElNRQor ICAgICBhcHBlbmRlZC4gIFRoaXMgbWVtb3J5IGlzIHVzZWQgYXMgYSBsb2NrIGZpbGUgY29u dGVudHMgYnVmZmVyLCBzbworICAgICBpdCBuZWVkcyByb29tIGZvciBNQVhfTEZJTkZPICsg MSBieXRlcy4gIEEgc3RyaW5nICIgKHBpZCBOTk5OKSIKKyAgICAgbWF5IGJlIGFwcGVuZGVk IHRvIHRoZSBVU0VSQEhPU1Qgd2hpbGUgZ2VuZXJhdGluZyBhIGRpYWdub3N0aWMsCisgICAg IHNvIG1ha2Ugcm9vbSBmb3IgaXRzIGV4dHJhIGJ5dGVzIChhcyBvcHBvc2VkIHRvICIuTk5O TiIpIHRvby4gICovCisgIGNoYXIgdXNlcltNQVhfTEZJTkZPICsgMSArIHNpemVvZiAiIChw aWQgKSIgLSBzaXplb2YgIi4iXTsKIH0gbG9ja19pbmZvX3R5cGU7CiAKLS8qIEZyZWUgdGhl IHR3byBkeW5hbWljYWxseS1hbGxvY2F0ZWQgcGllY2VzIGluIFBUUi4gICovCi0jZGVmaW5l IEZSRUVfTE9DS19JTkZPKGkpIGRvIHsgeGZyZWUgKChpKS51c2VyKTsgeGZyZWUgKChpKS5o b3N0KTsgfSB3aGlsZSAoMCkKLQotI2lmZGVmIFdJTkRPV1NOVAotZW51bSB7IGRlZmluZWRf V0lORE9XU05UID0gMSB9OwotI2Vsc2UKLWVudW0geyBkZWZpbmVkX1dJTkRPV1NOVCA9IDAg fTsKLSNlbmRpZgotCiAvKiBXcml0ZSB0aGUgbmFtZSBvZiB0aGUgbG9jayBmaWxlIGZvciBG TkFNRSBpbnRvIExPQ0tOQU1FLiAgTGVuZ3RoCi0gICB3aWxsIGJlIHRoYXQgb2YgRk5BTUUg cGx1cyB0d28gbW9yZSBmb3IgdGhlIGxlYWRpbmcgIi4jIiwKLSAgIHBsdXMgb25lIGZvciAi LSIgaWYgTVMtV2luZG93cywgcGx1cyBvbmUgZm9yIHRoZSBudWxsLiAgKi8KKyAgIHdpbGwg YmUgdGhhdCBvZiBGTkFNRSBwbHVzIHR3byBtb3JlIGZvciB0aGUgbGVhZGluZyAiLiMiLCBw bHVzIG9uZQorICAgZm9yIHRoZSBudWxsLiAgKi8KICNkZWZpbmUgTUFLRV9MT0NLX05BTUUo bG9ja25hbWUsIGZuYW1lKSBcCi0gIChsb2NrbmFtZSA9IFNBRkVfQUxMT0NBIChTQllURVMg KGZuYW1lKSArIDIgKyBkZWZpbmVkX1dJTkRPV1NOVCArIDEpLCBcCisgIChsb2NrbmFtZSA9 IFNBRkVfQUxMT0NBIChTQllURVMgKGZuYW1lKSArIDIgKyAxKSwgXAogICAgZmlsbF9pbl9s b2NrX2ZpbGVfbmFtZSAobG9ja25hbWUsIGZuYW1lKSkKIAogc3RhdGljIHZvaWQKQEAgLTMx OSw3MCArMzMzLDEyMSBAQAogICBtZW1jcHkgKGxvY2tmaWxlLCBTU0RBVEEgKGZuKSwgZGly bGVuKTsKICAgbG9ja2ZpbGVbZGlybGVuXSA9ICcuJzsKICAgbG9ja2ZpbGVbZGlybGVuICsg MV0gPSAnIyc7Ci0gIGlmIChkZWZpbmVkX1dJTkRPV1NOVCkKLSAgICBsb2NrZmlsZVtkaXJs ZW4gKyAyXSA9ICctJzsKLSAgc3RyY3B5IChsb2NrZmlsZSArIGRpcmxlbiArIDIgKyBkZWZp bmVkX1dJTkRPV1NOVCwgYmFzZSk7Ci19CisgIHN0cmNweSAobG9ja2ZpbGUgKyBkaXJsZW4g KyAyLCBiYXNlKTsKK30KKworLyogRm9yIHNvbWUgcmVhc29uIExpbnV4IGtlcm5lbHMgcmV0 dXJuIEVQRVJNIG9uIGZpbGUgc3lzdGVtcyB0aGF0IGRvCisgICBub3Qgc3VwcG9ydCBoYXJk IG9yIHN5bWJvbGljIGxpbmtzLiAgVGhpcyBzeW1ib2wgZG9jdW1lbnRzIHRoZSBxdWlyay4K KyAgIFRoZXJlIGlzIG5vIHdheSB0byB0ZWxsIHdoZXRoZXIgYSBzeW1saW5rIGNhbGwgZmFp bHMgZHVlIHRvCisgICBwZXJtaXNzaW9ucyBpc3N1ZXMgb3IgYmVjYXVzZSBsaW5rcyBhcmUg bm90IHN1cHBvcnRlZCwgYnV0IGx1Y2tpbHkKKyAgIHRoZSBsb2NrIGZpbGUgY29kZSBzaG91 bGQgd29yayBlaXRoZXIgd2F5LiAgKi8KK2VudW0geyBMSU5LU19NSUdIVF9OT1RfV09SSyA9 IEVQRVJNIH07CisKKy8qIFJlbmFtZSBPTEQgdG8gTkVXLiAgSWYgRk9SQ0UsIHJlcGxhY2Ug YW55IGV4aXN0aW5nIE5FVy4KKyAgIEl0IGlzIE9LIGlmIHRoZXJlIGFyZSB0ZW1wb3Jhcmls eSB0d28gaGFyZCBsaW5rcyB0byBPTEQuCisgICBSZXR1cm4gMCBpZiBzdWNjZXNzZnVsLCAt MSAoc2V0dGluZyBlcnJubykgb3RoZXJ3aXNlLiAgKi8KK3N0YXRpYyBpbnQKK3JlbmFtZV9s b2NrX2ZpbGUgKGNoYXIgY29uc3QgKm9sZCwgY2hhciBjb25zdCAqbmV3LCBib29sIGZvcmNl KQoreworI2lmZGVmIFdJTkRPV1NOVAorICByZXR1cm4gc3lzX3JlbmFtZV9yZXBsYWNlIChv bGQsIG5ldywgZm9yY2UpOworI2Vsc2UKKyAgaWYgKCEgZm9yY2UpCisgICAgeworICAgICAg aWYgKGxpbmsgKG9sZCwgbmV3KSA9PSAwKQorCXJldHVybiB1bmxpbmsgKG9sZCkgPT0gMCB8 fCBlcnJubyA9PSBFTk9FTlQgPyAwIDogLTE7CisgICAgICBpZiAoZXJybm8gIT0gRU5PU1lT ICYmIGVycm5vICE9IExJTktTX01JR0hUX05PVF9XT1JLKQorCXJldHVybiAtMTsKKworICAg ICAgLyogJ2xpbmsnIGRvZXMgbm90IHdvcmsgb24gdGhpcyBmaWxlIHN5c3RlbS4gIFRoaXMg Y2FuIG9jY3VyIG9uCisJIGEgR05VL0xpbnV4IGhvc3QgbW91bnRpbmcgYSBGQVQzMiBmaWxl IHN5c3RlbS4gIEZhbGwgYmFjayBvbgorCSAncmVuYW1lJyBhZnRlciBjaGVja2luZyB0aGF0 IE5FVyBkb2VzIG5vdCBleGlzdC4gIFRoZXJlIGlzIGEKKwkgcG90ZW50aWFsIHJhY2UgY29u ZGl0aW9uIHNpbmNlIHNvbWUgb3RoZXIgcHJvY2VzcyBtYXkgY3JlYXRlCisJIE5FVyBpbW1l ZGlhdGVseSBhZnRlciB0aGUgZXhpc3RlbmNlIGNoZWNrLCBidXQgaXQncyB0aGUgYmVzdAor CSB3ZSBjYW4gcG9ydGFibHkgZG8gaGVyZS4gICovCisgICAgICBpZiAoY2hlY2tfZXhpc3Rp bmcgKG5ldykpCisJeworCSAgZXJybm8gPSBFRVhJU1Q7CisJICByZXR1cm4gLTE7CisJfQor ICAgIH0KKworICByZXR1cm4gcmVuYW1lIChvbGQsIG5ldyk7CisjZW5kaWYKK30KKworLyog Q3JlYXRlIHRoZSBsb2NrIGZpbGUgRklMRSB3aXRoIGNvbnRlbnRzIENPTlRFTlRTLiAgUmV0 dXJuIDAgaWYKKyAgIHN1Y2Nlc3NmdWwsIGFuIGVycm5vIHZhbHVlIG9uIGZhaWx1cmUuICBJ ZiBGT1JDRSwgcmVtb3ZlIGFueQorICAgZXhpc3RpbmcgRklMRSBpZiBuZWNlc3NhcnkuICAq LwogCiBzdGF0aWMgaW50CiBjcmVhdGVfbG9ja19maWxlIChjaGFyICpsZm5hbWUsIGNoYXIg KmxvY2tfaW5mb19zdHIsIGJvb2wgZm9yY2UpCiB7Ci0gIGludCBlcnI7Ci0KICNpZmRlZiBX SU5ET1dTTlQKLSAgLyogU3ltbGlua3MgYXJlIHN1cHBvcnRlZCBvbmx5IGJ5IGxhdGVzdCB2 ZXJzaW9ucyBvZiBXaW5kb3dzLCBhbmQKLSAgICAgY3JlYXRpbmcgdGhlbSBpcyBhIHByaXZp bGVnZWQgb3BlcmF0aW9uIHRoYXQgb2Z0ZW4gdHJpZ2dlcnMgVUFDCi0gICAgIGVsZXZhdGlv biBwcm9tcHRzLiAgVGhlcmVmb3JlLCBpbnN0ZWFkIG9mIHVzaW5nIHN5bWxpbmtzLCB3ZQot ICAgICBjcmVhdGUgYSByZWd1bGFyIGZpbGUgd2l0aCB0aGUgbG9jayBpbmZvIHdyaXR0ZW4g YXMgaXRzCi0gICAgIGNvbnRlbnRzLiAgKi8KLSAgewotICAgIC8qIERlbnkgZXZlcnlib2R5 IGVsc2UgYW55IGtpbmQgb2YgYWNjZXNzIHRvIHRoZSBmaWxlIHVudGlsIHdlIGFyZQotICAg ICAgIGRvbmUgd3JpdGluZyBpdCBhbmQgY2xvc2UgdGhlIGhhbmRsZS4gIFRoaXMgbWFrZXMg dGhlIGVudGlyZQotICAgICAgIG9wZW4vd3JpdGUvY2xvc2Ugb3BlcmF0aW9uIGF0b21pYywg YXMgZmFyIGFzIG90aGVyIFdJTkRPV1NOVAotICAgICAgIHByb2Nlc3NlcyBhcmUgY29uY2Vy bmVkLiAgKi8KLSAgICBpbnQgZmQgPSBfc29wZW4gKGxmbmFtZSwKLQkJICAgICBfT19XUk9O TFkgfCBfT19CSU5BUlkgfCBfT19DUkVBVCB8IF9PX0VYQ0wgfCBfT19OT0lOSEVSSVQsCi0J CSAgICAgX1NIX0RFTllSVywgU19JUkVBRCB8IFNfSVdSSVRFKTsKLQotICAgIGlmIChmZCA8 IDAgJiYgZXJybm8gPT0gRUVYSVNUICYmIGZvcmNlKQotICAgICAgZmQgPSBfc29wZW4gKGxm bmFtZSwgX09fV1JPTkxZIHwgX09fQklOQVJZIHwgX09fVFJVTkMgfF9PX05PSU5IRVJJVCwK LQkJICAgX1NIX0RFTllSVywgU19JUkVBRCB8IFNfSVdSSVRFKTsKLSAgICBpZiAoZmQgPj0g MCkKLSAgICAgIHsKLQlzc2l6ZV90IGxvY2tfaW5mb19sZW4gPSBzdHJsZW4gKGxvY2tfaW5m b19zdHIpOwotCi0JZXJyID0gMDsKLQlpZiAoZW1hY3Nfd3JpdGUgKGZkLCBsb2NrX2luZm9f c3RyLCBsb2NrX2luZm9fbGVuKSAhPSBsb2NrX2luZm9fbGVuKQotCSAgZXJyID0gLTE7Ci0J aWYgKGVtYWNzX2Nsb3NlIChmZCkpCi0JICBlcnIgPSAtMTsKLSAgICAgIH0KLSAgICBlbHNl Ci0gICAgICBlcnIgPSAtMTsKLSAgfQorICAvKiBTeW1saW5rcyBhcmUgc3VwcG9ydGVkIG9u bHkgYnkgbGF0ZXIgdmVyc2lvbnMgb2YgV2luZG93cywgYW5kCisgICAgIGNyZWF0aW5nIHRo ZW0gaXMgYSBwcml2aWxlZ2VkIG9wZXJhdGlvbiB0aGF0IG9mdGVuIHRyaWdnZXJzCisgICAg IFVzZXIgQWNjb3VudCBDb250cm9sIGVsZXZhdGlvbiBwcm9tcHRzLiAgQXZvaWQgdGhlIHBy b2JsZW0gYnkKKyAgICAgcHJldGVuZGluZyB0aGF0ICdzeW1saW5rJyBkb2VzIG5vdCB3b3Jr LiAgKi8KKyAgaW50IGVyciA9IEVOT1NZUzsKICNlbHNlCi0gIGVyciA9IHN5bWxpbmsgKGxv Y2tfaW5mb19zdHIsIGxmbmFtZSk7Ci0gIGlmIChlcnIgIT0gMCAmJiBlcnJubyA9PSBFRVhJ U1QgJiYgZm9yY2UpCisgIGludCBlcnIgPSBzeW1saW5rIChsb2NrX2luZm9fc3RyLCBsZm5h bWUpID09IDAgPyAwIDogZXJybm87CisjZW5kaWYKKworICBpZiAoZXJyID09IEVFWElTVCAm JiBmb3JjZSkKICAgICB7CiAgICAgICB1bmxpbmsgKGxmbmFtZSk7Ci0gICAgICBlcnIgPSBz eW1saW5rIChsb2NrX2luZm9fc3RyLCBsZm5hbWUpOworICAgICAgZXJyID0gc3ltbGluayAo bG9ja19pbmZvX3N0ciwgbGZuYW1lKSA9PSAwID8gMCA6IGVycm5vOwogICAgIH0KKworICBp ZiAoZXJyID09IEVOT1NZUyB8fCBlcnIgPT0gTElOS1NfTUlHSFRfTk9UX1dPUksgfHwgZXJy ID09IEVOQU1FVE9PTE9ORykKKyAgICB7CisgICAgICBzdGF0aWMgY2hhciBjb25zdCBub25j ZV9iYXNlW10gPSAiLiMtZW1hY3NYWFhYWFgiOworICAgICAgY2hhciAqbGFzdF9zbGFzaCA9 IHN0cnJjaHIgKGxmbmFtZSwgJy8nKTsKKyAgICAgIHB0cmRpZmZfdCBsZmRpcmxlbiA9IGxh c3Rfc2xhc2ggKyAxIC0gbGZuYW1lOworICAgICAgVVNFX1NBRkVfQUxMT0NBOworICAgICAg Y2hhciAqbm9uY2UgPSBTQUZFX0FMTE9DQSAobGZkaXJsZW4gKyBzaXplb2Ygbm9uY2VfYmFz ZSk7CisgICAgICBpbnQgZmQ7CisgICAgICBtZW1jcHkgKG5vbmNlLCBsZm5hbWUsIGxmZGly bGVuKTsKKyAgICAgIHN0cmNweSAobm9uY2UgKyBsZmRpcmxlbiwgbm9uY2VfYmFzZSk7CisK KyNpZiBIQVZFX01LU1RFTVAKKyAgICAgIGZkID0gbWtzdGVtcCAobm9uY2UpOworI2Vsc2UK KyAgICAgIG1rdGVtcCAobm9uY2UpOworICAgICAgZmQgPSBlbWFjc19vcGVuIChub25jZSwg T19XUk9OTFkgfCBPX0NSRUFUIHwgT19FWENMIHwgT19CSU5BUlksCisJCSAgICAgICBTX0lS VVNSIHwgU19JV1VTUik7CiAjZW5kaWYKIAorICAgICAgaWYgKGZkIDwgMCkKKwllcnIgPSBl cnJubzsKKyAgICAgIGVsc2UKKwl7CisJICBwdHJkaWZmX3QgbG9ja19pbmZvX2xlbiA9IHN0 cmxlbiAobG9ja19pbmZvX3N0cik7CisJICBlcnIgPSAwOworCSAgaWYgKGVtYWNzX3dyaXRl IChmZCwgbG9ja19pbmZvX3N0ciwgbG9ja19pbmZvX2xlbikgIT0gbG9ja19pbmZvX2xlbgor CSAgICAgIHx8IGZjaG1vZCAoZmQsIFNfSVJVU1IgfCBTX0lSR1JQIHwgU19JUk9USCkgIT0g MCkKKwkgICAgZXJyID0gZXJybm87CisJICBpZiAoZW1hY3NfY2xvc2UgKGZkKSAhPSAwKQor CSAgICBlcnIgPSBlcnJubzsKKwkgIGlmICghZXJyICYmIHJlbmFtZV9sb2NrX2ZpbGUgKG5v bmNlLCBsZm5hbWUsIGZvcmNlKSAhPSAwKQorCSAgICBlcnIgPSBlcnJubzsKKwkgIGlmIChl cnIpCisJICAgIHVubGluayAobm9uY2UpOworCX0KKworICAgICAgU0FGRV9GUkVFICgpOwor ICAgIH0KKwogICByZXR1cm4gZXJyOwogfQogCiAvKiBMb2NrIHRoZSBsb2NrIGZpbGUgbmFt ZWQgTEZOQU1FLgogICAgSWYgRk9SQ0UsIGRvIHNvIGV2ZW4gaWYgaXQgaXMgYWxyZWFkeSBs b2NrZWQuCi0gICBSZXR1cm4gdHJ1ZSBpZiBzdWNjZXNzZnVsLiAgKi8KKyAgIFJldHVybiAw IGlmIHN1Y2Nlc3NmdWwsIGFuIGVycm9yIG51bWJlciBvbiBmYWlsdXJlLiAgKi8KIAotc3Rh dGljIGJvb2wKK3N0YXRpYyBpbnQKIGxvY2tfZmlsZV8xIChjaGFyICpsZm5hbWUsIGJvb2wg Zm9yY2UpCiB7Ci0gIGludCBlcnI7Ci0gIGludCBzeW1saW5rX2Vycm5vOwotICBVU0VfU0FG RV9BTExPQ0E7Ci0KICAgLyogQ2FsbCB0aGlzIGZpcnN0IGJlY2F1c2UgaXQgY2FuIEdDLiAg Ki8KICAgcHJpbnRtYXhfdCBib290ID0gZ2V0X2Jvb3RfdGltZSAoKTsKIApAQCAtMzkwLDIw ICs0NTUsMTYgQEAKICAgY2hhciBjb25zdCAqdXNlcl9uYW1lID0gU1RSSU5HUCAobHVzZXJf bmFtZSkgPyBTU0RBVEEgKGx1c2VyX25hbWUpIDogIiI7CiAgIExpc3BfT2JqZWN0IGxob3N0 X25hbWUgPSBGc3lzdGVtX25hbWUgKCk7CiAgIGNoYXIgY29uc3QgKmhvc3RfbmFtZSA9IFNU UklOR1AgKGxob3N0X25hbWUpID8gU1NEQVRBIChsaG9zdF9uYW1lKSA6ICIiOwotICBwdHJk aWZmX3QgbG9ja19pbmZvX3NpemUgPSAoc3RybGVuICh1c2VyX25hbWUpICsgc3RybGVuICho b3N0X25hbWUpCi0JCQkgICAgICArIDIgKiBJTlRfU1RSTEVOX0JPVU5EIChwcmludG1heF90 KQotCQkJICAgICAgKyBzaXplb2YgIkAuOiIpOwotICBjaGFyICpsb2NrX2luZm9fc3RyID0g U0FGRV9BTExPQ0EgKGxvY2tfaW5mb19zaXplKTsKKyAgY2hhciBsb2NrX2luZm9fc3RyW01B WF9MRklORk8gKyAxXTsKICAgcHJpbnRtYXhfdCBwaWQgPSBnZXRwaWQgKCk7CiAKLSAgZXNw cmludGYgKGxvY2tfaW5mb19zdHIsIGJvb3QgPyAiJXNAJXMuJSJwTWQiOiUicE1kIDogIiVz QCVzLiUicE1kLAotCSAgICB1c2VyX25hbWUsIGhvc3RfbmFtZSwgcGlkLCBib290KTsKLSAg ZXJyID0gY3JlYXRlX2xvY2tfZmlsZSAobGZuYW1lLCBsb2NrX2luZm9fc3RyLCBmb3JjZSk7 CisgIGlmIChzaXplb2YgbG9ja19pbmZvX3N0cgorICAgICAgPD0gc25wcmludGYgKGxvY2tf aW5mb19zdHIsIHNpemVvZiBsb2NrX2luZm9fc3RyLAorCQkgICBib290ID8gIiVzQCVzLiUi cE1kIjolInBNZCA6ICIlc0Alcy4lInBNZCwKKwkJICAgdXNlcl9uYW1lLCBob3N0X25hbWUs IHBpZCwgYm9vdCkpCisgICAgcmV0dXJuIEVOQU1FVE9PTE9ORzsKIAotICBzeW1saW5rX2Vy cm5vID0gZXJybm87Ci0gIFNBRkVfRlJFRSAoKTsKLSAgZXJybm8gPSBzeW1saW5rX2Vycm5v OwotICByZXR1cm4gZXJyID09IDA7CisgIHJldHVybiBjcmVhdGVfbG9ja19maWxlIChsZm5h bWUsIGxvY2tfaW5mb19zdHIsIGZvcmNlKTsKIH0KIAogLyogUmV0dXJuIHRydWUgaWYgdGlt ZXMgQSBhbmQgQiBhcmUgbm8gbW9yZSB0aGFuIG9uZSBzZWNvbmQgYXBhcnQuICAqLwpAQCAt NDE0LDMyICs0NzUsNDYgQEAKICAgcmV0dXJuIChhIC0gYiA+PSAtMSAmJiBhIC0gYiA8PSAx KTsKIH0KIAwKLXN0YXRpYyBMaXNwX09iamVjdAotcmVhZF9sb2NrX2RhdGEgKGNoYXIgKmxm bmFtZSkKKy8qIFJlYWQgdGhlIGRhdGEgZm9yIHRoZSBsb2NrIGZpbGUgTEZOQU1FIGludG8g TEZJTkZPLiAgUmVhZCBhdCBtb3N0CisgICBNQVhfTEZJTkZPICsgMSBieXRlcy4gIFJldHVy biB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlYWQsIG9yIC0xCisgICAoc2V0dGluZyBlcnJubykg b24gZXJyb3IuICAqLworCitzdGF0aWMgcHRyZGlmZl90CityZWFkX2xvY2tfZGF0YSAoY2hh ciAqbGZuYW1lLCBjaGFyIGxmaW5mb1tNQVhfTEZJTkZPICsgMV0pCiB7Ci0jaWZuZGVmIFdJ TkRPV1NOVAotICByZXR1cm4gZW1hY3NfcmVhZGxpbmthdCAoQVRfRkRDV0QsIGxmbmFtZSk7 Ci0jZWxzZQotICBpbnQgZmQgPSBlbWFjc19vcGVuIChsZm5hbWUsIE9fUkRPTkxZIHwgT19C SU5BUlksIFNfSVJFQUQpOwotICBzc2l6ZV90IG5ieXRlczsKLSAgLyogMjU2IGNoYXJzIGZv ciB1c2VyLCAxMDI0IGNoYXJzIGZvciBob3N0LCAxMCBkaWdpdHMgZm9yIGVhY2ggb2YgMiBp bnQncy4gICovCi0gIGVudW0geyBNQVhfTEZJTkZPID0gMjU2ICsgMTAyNCArIDEwICsgMTAg KyAyIH07Ci0gIGNoYXIgbGZpbmZvW01BWF9MRklORk8gKyAxXTsKLQotICBpZiAoZmQgPCAw KQotICAgIHJldHVybiBRbmlsOwotCi0gIG5ieXRlcyA9IGVtYWNzX3JlYWQgKGZkLCBsZmlu Zm8sIE1BWF9MRklORk8pOwotICBlbWFjc19jbG9zZSAoZmQpOwotCi0gIGlmIChuYnl0ZXMg PiAwKQorICBwdHJkaWZmX3QgbmJ5dGVzOworCisgIHdoaWxlICgobmJ5dGVzID0gcmVhZGxp bmthdCAoQVRfRkRDV0QsIGxmbmFtZSwgbGZpbmZvLCBNQVhfTEZJTkZPICsgMSkpIDwgMAor CSAmJiBlcnJubyA9PSBFSU5WQUwpCiAgICAgewotICAgICAgbGZpbmZvW25ieXRlc10gPSAn XDAnOwotICAgICAgcmV0dXJuIGJ1aWxkX3N0cmluZyAobGZpbmZvKTsKKyAgICAgIGludCBm ZCA9IGVtYWNzX29wZW4gKGxmbmFtZSwgT19SRE9OTFkgfCBPX0JJTkFSWSB8IE9fTk9GT0xM T1csIDApOworICAgICAgaWYgKDAgPD0gZmQpCisJeworCSAgaW50IHJlYWRfZXJybm87CisJ ICBuYnl0ZXMgPSBlbWFjc19yZWFkIChmZCwgbGZpbmZvLCBNQVhfTEZJTkZPICsgMSk7CisJ ICByZWFkX2Vycm5vID0gZXJybm87CisKKwkgIGlmIChlbWFjc19jbG9zZSAoZmQpICE9IDAp CisJICAgIHJldHVybiAtMTsKKwkgIGlmICgwIDwgbmJ5dGVzICYmIG1lbWNociAobGZpbmZv LCAwLCBuYnl0ZXMpKQorCSAgICB7CisJICAgICAgZXJybm8gPSBFSU5WQUw7CisJICAgICAg cmV0dXJuIC0xOworCSAgICB9CisJICBlcnJubyA9IHJlYWRfZXJybm87CisJICByZXR1cm4g bmJ5dGVzOworCX0KKworICAgICAgaWYgKGVycm5vICE9IEVMT09QKQorCXJldHVybiAtMTsK KworICAgICAgLyogcmVhZGxpbmthdCBzYXcgYSBub24tc3ltbGluaywgYnV0IGVtYWNzX29w ZW4gc2F3IGEgc3ltbGluay4KKwkgVGhlIGZvcm1lciBtdXN0IGhhdmUgYmVlbiByZW1vdmVk IGFuZCByZXBsYWNlZCBieSB0aGUgbGF0dGVyLgorCSBUcnkgYWdhaW4uICAqLworICAgICAg UVVJVDsKICAgICB9Ci0gIGVsc2UKLSAgICByZXR1cm4gUW5pbDsKLSNlbmRpZgorCisgIHJl dHVybiBuYnl0ZXM7CiB9CiAKIC8qIFJldHVybiAwIGlmIG5vYm9keSBvd25zIHRoZSBsb2Nr IGZpbGUgTEZOQU1FIG9yIHRoZSBsb2NrIGlzIG9ic29sZXRlLApAQCAtNDUxLDgzICs1MjYs NzggQEAKIGN1cnJlbnRfbG9ja19vd25lciAobG9ja19pbmZvX3R5cGUgKm93bmVyLCBjaGFy ICpsZm5hbWUpCiB7CiAgIGludCByZXQ7Ci0gIHB0cmRpZmZfdCBsZW47CiAgIGxvY2tfaW5m b190eXBlIGxvY2FsX293bmVyOwotICBpbnRtYXhfdCBuOwotICBjaGFyICphdCwgKmRvdCwg KmNvbG9uOwotICBMaXNwX09iamVjdCBsZmluZm9fb2JqZWN0ID0gcmVhZF9sb2NrX2RhdGEg KGxmbmFtZSk7Ci0gIGNoYXIgKmxmaW5mbzsKLSAgc3RydWN0IGdjcHJvIGdjcHJvMTsKLQot ICAvKiBJZiBub25leGlzdGVudCBsb2NrIGZpbGUsIGFsbCBpcyB3ZWxsOyBvdGhlcndpc2Us IGdvdCBzdHJhbmdlIGVycm9yLiAqLwotICBpZiAoTklMUCAobGZpbmZvX29iamVjdCkpCi0g ICAgcmV0dXJuIGVycm5vID09IEVOT0VOVCA/IDAgOiAtMTsKLSAgbGZpbmZvID0gU1NEQVRB IChsZmluZm9fb2JqZWN0KTsKKyAgcHRyZGlmZl90IGxmaW5mb2xlbjsKKyAgaW50bWF4X3Qg cGlkLCBib290X3RpbWU7CisgIGNoYXIgKmF0LCAqZG90LCAqY29sb24sICpsZmluZm9fZW5k OwogCiAgIC8qIEV2ZW4gaWYgdGhlIGNhbGxlciBkb2Vzbid0IHdhbnQgdGhlIG93bmVyIGlu Zm8sIHdlIHN0aWxsIGhhdmUgdG8KICAgICAgcmVhZCBpdCB0byBkZXRlcm1pbmUgcmV0dXJu IHZhbHVlLiAgKi8KICAgaWYgKCFvd25lcikKICAgICBvd25lciA9ICZsb2NhbF9vd25lcjsK IAorICAvKiBJZiBub25leGlzdGVudCBsb2NrIGZpbGUsIGFsbCBpcyB3ZWxsOyBvdGhlcndp c2UsIGdvdCBzdHJhbmdlIGVycm9yLiAqLworICBsZmluZm9sZW4gPSByZWFkX2xvY2tfZGF0 YSAobGZuYW1lLCBvd25lci0+dXNlcik7CisgIGlmIChsZmluZm9sZW4gPCAwKQorICAgIHJl dHVybiBlcnJubyA9PSBFTk9FTlQgPyAwIDogLTE7CisgIGlmIChNQVhfTEZJTkZPIDwgbGZp bmZvbGVuKQorICAgIHJldHVybiAtMTsKKyAgb3duZXItPnVzZXJbbGZpbmZvbGVuXSA9IDA7 CisKICAgLyogUGFyc2UgVVNFUkBIT1NULlBJRDpCT09UX1RJTUUuICBJZiBjYW4ndCBwYXJz ZSwgcmV0dXJuIC0xLiAgKi8KICAgLyogVGhlIFVTRVIgaXMgZXZlcnl0aGluZyBiZWZvcmUg dGhlIGxhc3QgQC4gICovCi0gIGF0ID0gc3RycmNociAobGZpbmZvLCAnQCcpOwotICBkb3Qg PSBzdHJyY2hyIChsZmluZm8sICcuJyk7Ci0gIGlmICghYXQgfHwgIWRvdCkKLSAgICByZXR1 cm4gLTE7Ci0gIGxlbiA9IGF0IC0gbGZpbmZvOwotICBHQ1BSTzEgKGxmaW5mb19vYmplY3Qp OwotICBvd25lci0+dXNlciA9IHhtYWxsb2MgKGxlbiArIDEpOwotICBtZW1jcHkgKG93bmVy LT51c2VyLCBsZmluZm8sIGxlbik7Ci0gIG93bmVyLT51c2VyW2xlbl0gPSAwOworICBvd25l ci0+YXQgPSBhdCA9IG1lbXJjaHIgKG93bmVyLT51c2VyLCAnQCcsIGxmaW5mb2xlbik7Cisg IGlmICghYXQpCisgICAgcmV0dXJuIC0xOworICBvd25lci0+ZG90ID0gZG90ID0gc3RycmNo ciAoYXQsICcuJyk7CisgIGlmICghZG90KQorICAgIHJldHVybiAtMTsKIAogICAvKiBUaGUg UElEIGlzIGV2ZXJ5dGhpbmcgZnJvbSB0aGUgbGFzdCBgLicgdG8gdGhlIGA6Jy4gICovCisg IGlmICghIGNfaXNkaWdpdCAoZG90WzFdKSkKKyAgICByZXR1cm4gLTE7CiAgIGVycm5vID0g MDsKLSAgbiA9IHN0cnRvaW1heCAoZG90ICsgMSwgTlVMTCwgMTApOwotICBvd25lci0+cGlk ID0KLSAgICAoKDAgPD0gbiAmJiBuIDw9IFRZUEVfTUFYSU1VTSAocGlkX3QpCi0gICAgICAm JiAoVFlQRV9NQVhJTVVNIChwaWRfdCkgPCBJTlRNQVhfTUFYIHx8IGVycm5vICE9IEVSQU5H RSkpCi0gICAgID8gbiA6IDApOworICBwaWQgPSBzdHJ0b2ltYXggKGRvdCArIDEsICZvd25l ci0+Y29sb24sIDEwKTsKKyAgaWYgKGVycm5vID09IEVSQU5HRSkKKyAgICBwaWQgPSAtMTsK IAotICBjb2xvbiA9IHN0cmNociAoZG90ICsgMSwgJzonKTsKICAgLyogQWZ0ZXIgdGhlIGA6 JywgaWYgdGhlcmUgaXMgb25lLCBjb21lcyB0aGUgYm9vdCB0aW1lLiAgKi8KLSAgbiA9IDA7 Ci0gIGlmIChjb2xvbikKKyAgc3dpdGNoIChvd25lci0+Y29sb25bMF0pCiAgICAgewotICAg ICAgZXJybm8gPSAwOwotICAgICAgbiA9IHN0cnRvaW1heCAoY29sb24gKyAxLCBOVUxMLCAx MCk7CisgICAgY2FzZSAwOgorICAgICAgYm9vdF90aW1lID0gMDsKKyAgICAgIGxmaW5mb19l bmQgPSBvd25lci0+Y29sb247CisgICAgICBicmVhazsKKworICAgIGNhc2UgJzonOgorICAg ICAgaWYgKCEgY19pc2RpZ2l0IChvd25lci0+Y29sb25bMV0pKQorCXJldHVybiAtMTsKKyAg ICAgIGJvb3RfdGltZSA9IHN0cnRvaW1heCAob3duZXItPmNvbG9uICsgMSwgJmxmaW5mb19l bmQsIDEwKTsKKyAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgIHJldHVybiAt MTsKICAgICB9Ci0gIG93bmVyLT5ib290X3RpbWUgPQotICAgICgoMCA8PSBuICYmIG4gPD0g VFlQRV9NQVhJTVVNICh0aW1lX3QpCi0gICAgICAmJiAoVFlQRV9NQVhJTVVNICh0aW1lX3Qp IDwgSU5UTUFYX01BWCB8fCBlcnJubyAhPSBFUkFOR0UpKQotICAgICA/IG4gOiAwKTsKLQot ICAvKiBUaGUgaG9zdCBpcyBldmVyeXRoaW5nIGluIGJldHdlZW4uICAqLwotICBsZW4gPSBk b3QgLSBhdCAtIDE7Ci0gIG93bmVyLT5ob3N0ID0geG1hbGxvYyAobGVuICsgMSk7Ci0gIG1l bWNweSAob3duZXItPmhvc3QsIGF0ICsgMSwgbGVuKTsKLSAgb3duZXItPmhvc3RbbGVuXSA9 IDA7Ci0KLSAgLyogV2UncmUgZG9uZSBsb29raW5nIGF0IHRoZSBsaW5rIGluZm8uICAqLwot ICBVTkdDUFJPOworICBpZiAobGZpbmZvX2VuZCAhPSBvd25lci0+dXNlciArIGxmaW5mb2xl bikKKyAgICByZXR1cm4gLTE7CiAKICAgLyogT24gY3VycmVudCBob3N0PyAgKi8KLSAgaWYg KFNUUklOR1AgKEZzeXN0ZW1fbmFtZSAoKSkKLSAgICAgICYmIHN0cmNtcCAob3duZXItPmhv c3QsIFNTREFUQSAoRnN5c3RlbV9uYW1lICgpKSkgPT0gMCkKKyAgaWYgKFNUUklOR1AgKFZz eXN0ZW1fbmFtZSkKKyAgICAgICYmIGRvdCAtIChhdCArIDEpID09IFNCWVRFUyAoVnN5c3Rl bV9uYW1lKQorICAgICAgJiYgbWVtY21wIChhdCArIDEsIFNTREFUQSAoVnN5c3RlbV9uYW1l KSwgU0JZVEVTIChWc3lzdGVtX25hbWUpKSA9PSAwKQogICAgIHsKLSAgICAgIGlmIChvd25l ci0+cGlkID09IGdldHBpZCAoKSkKKyAgICAgIGlmIChwaWQgPT0gZ2V0cGlkICgpKQogICAg ICAgICByZXQgPSAyOyAvKiBXZSBvd24gaXQuICAqLwotICAgICAgZWxzZSBpZiAob3duZXIt PnBpZCA+IDAKLSAgICAgICAgICAgICAgICYmIChraWxsIChvd25lci0+cGlkLCAwKSA+PSAw IHx8IGVycm5vID09IEVQRVJNKQotCSAgICAgICAmJiAob3duZXItPmJvb3RfdGltZSA9PSAw Ci0JCSAgIHx8IHdpdGhpbl9vbmVfc2Vjb25kIChvd25lci0+Ym9vdF90aW1lLCBnZXRfYm9v dF90aW1lICgpKSkpCisgICAgICBlbHNlIGlmICgwIDwgcGlkICYmIHBpZCA8PSBUWVBFX01B WElNVU0gKHBpZF90KQorICAgICAgICAgICAgICAgJiYgKGtpbGwgKHBpZCwgMCkgPj0gMCB8 fCBlcnJubyA9PSBFUEVSTSkKKwkgICAgICAgJiYgKGJvb3RfdGltZSA9PSAwCisJCSAgIHx8 IChib290X3RpbWUgPD0gVFlQRV9NQVhJTVVNICh0aW1lX3QpCisJCSAgICAgICAmJiB3aXRo aW5fb25lX3NlY29uZCAoYm9vdF90aW1lLCBnZXRfYm9vdF90aW1lICgpKSkpKQogICAgICAg ICByZXQgPSAxOyAvKiBBbiBleGlzdGluZyBwcm9jZXNzIG9uIHRoaXMgbWFjaGluZSBvd25z IGl0LiAgKi8KLSAgICAgIC8qIFRoZSBvd25lciBwcm9jZXNzIGlzIGRlYWQgb3IgaGFzIGEg c3RyYW5nZSBwaWQgKDw9MCksIHNvIHRyeSB0bworICAgICAgLyogVGhlIG93bmVyIHByb2Nl c3MgaXMgZGVhZCBvciBoYXMgYSBzdHJhbmdlIHBpZCwgc28gdHJ5IHRvCiAgICAgICAgICB6 YXAgdGhlIGxvY2tmaWxlLiAgKi8KLSAgICAgIGVsc2UgaWYgKHVubGluayAobGZuYW1lKSA8 IDApCi0gICAgICAgIHJldCA9IC0xOwogICAgICAgZWxzZQotCXJldCA9IDA7CisgICAgICAg IHJldHVybiB1bmxpbmsgKGxmbmFtZSk7CiAgICAgfQogICBlbHNlCiAgICAgeyAvKiBJZiB3 ZSB3YW50ZWQgdG8gc3VwcG9ydCB0aGUgY2hlY2sgZm9yIHN0YWxlIGxvY2tzIG9uIHJlbW90 ZSBtYWNoaW5lcywKQEAgLTUzNSwxMSArNjA1LDYgQEAKICAgICAgIHJldCA9IDE7CiAgICAg fQogCi0gIC8qIEF2b2lkIGdhcmJhZ2UuICAqLwotICBpZiAob3duZXIgPT0gJmxvY2FsX293 bmVyIHx8IHJldCA8PSAwKQotICAgIHsKLSAgICAgIEZSRUVfTE9DS19JTkZPICgqb3duZXIp OwotICAgIH0KICAgcmV0dXJuIHJldDsKIH0KIApAQCAtNTUxLDI5ICs2MTYsMjUgQEAKICAg IFJldHVybiAtMSBpZiBjYW5ub3QgbG9jayBmb3IgYW55IG90aGVyIHJlYXNvbi4gICovCiAK IHN0YXRpYyBpbnQKLWxvY2tfaWZfZnJlZSAobG9ja19pbmZvX3R5cGUgKmNsYXNoZXIsIHJl Z2lzdGVyIGNoYXIgKmxmbmFtZSkKK2xvY2tfaWZfZnJlZSAobG9ja19pbmZvX3R5cGUgKmNs YXNoZXIsIGNoYXIgKmxmbmFtZSkKIHsKLSAgd2hpbGUgKCEgbG9ja19maWxlXzEgKGxmbmFt ZSwgMCkpCisgIGludCBlcnI7CisgIHdoaWxlICgoZXJyID0gbG9ja19maWxlXzEgKGxmbmFt ZSwgMCkpID09IEVFWElTVCkKICAgICB7Ci0gICAgICBpbnQgbG9ja2VyOwotCi0gICAgICBp ZiAoZXJybm8gIT0gRUVYSVNUKQotCXJldHVybiAtMTsKLQotICAgICAgbG9ja2VyID0gY3Vy cmVudF9sb2NrX293bmVyIChjbGFzaGVyLCBsZm5hbWUpOwotICAgICAgaWYgKGxvY2tlciA9 PSAyKQotICAgICAgICB7Ci0gICAgICAgICAgRlJFRV9MT0NLX0lORk8gKCpjbGFzaGVyKTsK LSAgICAgICAgICByZXR1cm4gMDsgICAvKiBXZSBvdXJzZWx2ZXMgbG9ja2VkIGl0LiAgKi8K LSAgICAgICAgfQotICAgICAgZWxzZSBpZiAobG9ja2VyID09IDEpCi0gICAgICAgIHJldHVy biAxOyAgLyogU29tZW9uZSBlbHNlIGhhcyBpdC4gICovCi0gICAgICBlbHNlIGlmIChsb2Nr ZXIgPT0gLTEpCi0JcmV0dXJuIC0xOyAgIC8qIGN1cnJlbnRfbG9ja19vd25lciByZXR1cm5l ZCBzdHJhbmdlIGVycm9yLiAgKi8KKyAgICAgIHN3aXRjaCAoY3VycmVudF9sb2NrX293bmVy IChjbGFzaGVyLCBsZm5hbWUpKQorCXsKKwljYXNlIDI6CisJICByZXR1cm4gMDsgICAvKiBX ZSBvdXJzZWx2ZXMgbG9ja2VkIGl0LiAgKi8KKwljYXNlIDE6CisJICByZXR1cm4gMTsgICAv KiBTb21lb25lIGVsc2UgaGFzIGl0LiAgKi8KKwljYXNlIC0xOgorCSAgcmV0dXJuIC0xOyAg LyogY3VycmVudF9sb2NrX293bmVyIHJldHVybmVkIHN0cmFuZ2UgZXJyb3IuICAqLworCX0K IAogICAgICAgLyogV2UgZGVsZXRlZCBhIHN0YWxlIGxvY2s7IHRyeSBhZ2FpbiB0byBsb2Nr IHRoZSBmaWxlLiAgKi8KICAgICB9Ci0gIHJldHVybiAwOworCisgIHJldHVybiBlcnIgPyAt MSA6IDA7CiB9CiAKIC8qIGxvY2tfZmlsZSBsb2NrcyBmaWxlIEZOLApAQCAtNjQ1LDE3ICs3 MDYsMTYgQEAKICAgaWYgKDAgPCBsb2NrX2lmX2ZyZWUgKCZsb2NrX2luZm8sIGxmbmFtZSkp CiAgICAgewogICAgICAgLyogU29tZW9uZSBlbHNlIGhhcyB0aGUgbG9jay4gIENvbnNpZGVy IGJyZWFraW5nIGl0LiAgKi8KLSAgICAgIHB0cmRpZmZfdCBsb2NrZXJfc2l6ZSA9IChzdHJs ZW4gKGxvY2tfaW5mby51c2VyKSArIHN0cmxlbiAobG9ja19pbmZvLmhvc3QpCi0JCQkgICAg ICAgKyBJTlRfU1RSTEVOX0JPVU5EIChwcmludG1heF90KQotCQkJICAgICAgICsgc2l6ZW9m ICJAIChwaWQgKSIpOwotICAgICAgY2hhciAqbG9ja2VyID0gU0FGRV9BTExPQ0EgKGxvY2tl cl9zaXplKTsKLSAgICAgIHByaW50bWF4X3QgcGlkID0gbG9ja19pbmZvLnBpZDsKICAgICAg IExpc3BfT2JqZWN0IGF0dGFjazsKLSAgICAgIGVzcHJpbnRmIChsb2NrZXIsICIlc0AlcyAo cGlkICUicE1kIikiLAotCQlsb2NrX2luZm8udXNlciwgbG9ja19pbmZvLmhvc3QsIHBpZCk7 Ci0gICAgICBGUkVFX0xPQ0tfSU5GTyAobG9ja19pbmZvKTsKLQotICAgICAgYXR0YWNrID0g Y2FsbDIgKGludGVybiAoImFzay11c2VyLWFib3V0LWxvY2siKSwgZm4sIGJ1aWxkX3N0cmlu ZyAobG9ja2VyKSk7CisgICAgICBjaGFyICpkb3QgPSBsb2NrX2luZm8uZG90OworICAgICAg cHRyZGlmZl90IHBpZGxlbiA9IGxvY2tfaW5mby5jb2xvbiAtIChkb3QgKyAxKTsKKyAgICAg IHN0YXRpYyBjaGFyIGNvbnN0IHJlcGxhY2VtZW50W10gPSAiIChwaWQgIjsKKyAgICAgIGlu dCByZXBsYWNlbWVudGxlbiA9IHNpemVvZiByZXBsYWNlbWVudCAtIDE7CisgICAgICBtZW1t b3ZlIChkb3QgKyByZXBsYWNlbWVudGxlbiwgZG90ICsgMSwgcGlkbGVuKTsKKyAgICAgIHN0 cmNweSAoZG90ICsgcmVwbGFjZW1lbnRsZW4gKyBwaWRsZW4sICIpIik7CisgICAgICBtZW1j cHkgKGRvdCwgcmVwbGFjZW1lbnQsIHJlcGxhY2VtZW50bGVuKTsKKyAgICAgIGF0dGFjayA9 IGNhbGwyIChpbnRlcm4gKCJhc2stdXNlci1hYm91dC1sb2NrIiksIGZuLAorCQkgICAgICBi dWlsZF9zdHJpbmcgKGxvY2tfaW5mby51c2VyKSk7CiAgICAgICAvKiBUYWtlIHRoZSBsb2Nr IGlmIHRoZSB1c2VyIHNhaWQgc28uICAqLwogICAgICAgaWYgKCFOSUxQIChhdHRhY2spKQog CWxvY2tfZmlsZV8xIChsZm5hbWUsIDEpOwpAQCAtNzYwLDEwICs4MjAsNyBAQAogICBlbHNl IGlmIChvd25lciA9PSAyKQogICAgIHJldCA9IFF0OwogICBlbHNlCi0gICAgcmV0ID0gYnVp bGRfc3RyaW5nIChsb2NrZXIudXNlcik7Ci0KLSAgaWYgKG93bmVyID4gMCkKLSAgICBGUkVF X0xPQ0tfSU5GTyAobG9ja2VyKTsKKyAgICByZXQgPSBtYWtlX3N0cmluZyAobG9ja2VyLnVz ZXIsIGxvY2tlci5hdCAtIGxvY2tlci51c2VyKTsKIAogICBTQUZFX0ZSRUUgKCk7CiAgIHJl dHVybiByZXQ7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL3czMi5jJwotLS0gc3JjL3czMi5j CTIwMTMtMDItMjggMDY6MzA6NDggKzAwMDAKKysrIHNyYy93MzIuYwkyMDEzLTAzLTAzIDIz OjEyOjU0ICswMDAwCkBAIC0zNDE2LDcgKzM0MTYsNyBAQAogfQogCiBpbnQKLXN5c19yZW5h bWUgKGNvbnN0IGNoYXIgKiBvbGRuYW1lLCBjb25zdCBjaGFyICogbmV3bmFtZSkKK3N5c19y ZW5hbWVfcmVwbGFjZSAoY29uc3QgY2hhciAqb2xkbmFtZSwgY29uc3QgY2hhciAqbmV3bmFt ZSwgQk9PTCBmb3JjZSkKIHsKICAgQk9PTCByZXN1bHQ7CiAgIGNoYXIgdGVtcFtNQVhfUEFU SF07CkBAIC0zNDcyLDcgKzM0NzIsNyBAQAogCXJldHVybiAtMTsKICAgICB9CiAKLSAgLyog RW11bGF0ZSBVbml4IGJlaGF2aW9yIC0gbmV3bmFtZSBpcyBkZWxldGVkIGlmIGl0IGFscmVh ZHkgZXhpc3RzCisgIC8qIElmIEZPUkNFLCBlbXVsYXRlIFVuaXggYmVoYXZpb3IgLSBuZXdu YW1lIGlzIGRlbGV0ZWQgaWYgaXQgYWxyZWFkeSBleGlzdHMKICAgICAgKGF0IGxlYXN0IGlm IGl0IGlzIGEgZmlsZTsgZG9uJ3QgZG8gdGhpcyBmb3IgZGlyZWN0b3JpZXMpLgogCiAgICAg IFNpbmNlIHdlIG11c3RuJ3QgZG8gdGhpcyBpZiB3ZSBhcmUganVzdCBjaGFuZ2luZyB0aGUg Y2FzZSBvZiB0aGUKQEAgLTM0OTAsNyArMzQ5MCw3IEBACiAKICAgcmVzdWx0ID0gcmVuYW1l ICh0ZW1wLCBuZXduYW1lKTsKIAotICBpZiAocmVzdWx0IDwgMCkKKyAgaWYgKHJlc3VsdCA8 IDAgJiYgZm9yY2UpCiAgICAgewogICAgICAgRFdPUkQgdzMyZXJyID0gR2V0TGFzdEVycm9y ICgpOwogCkBAIC0zNTMwLDYgKzM1MzAsMTIgQEAKIH0KIAogaW50CitzeXNfcmVuYW1lIChj aGFyIGNvbnN0ICpvbGQsIGNoYXIgY29uc3QgKm5ldykKK3sKKyAgcmV0dXJuIHN5c19yZW5h bWVfcmVwbGFjZSAob2xkLCBuZXcsIFRSVUUpOworfQorCitpbnQKIHN5c19ybWRpciAoY29u c3QgY2hhciAqIHBhdGgpCiB7CiAgIHJldHVybiBfcm1kaXIgKG1hcF93MzJfZmlsZW5hbWUg KHBhdGgsIE5VTEwpKTsKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvdzMyLmgnCi0tLSBzcmMv dzMyLmgJMjAxMy0wMi0wMiAxNzoxNDoyNCArMDAwMAorKysgc3JjL3czMi5oCTIwMTMtMDMt MDMgMjM6MTI6NTQgKzAwMDAKQEAgLTE4Niw2ICsxODYsNyBAQAogZXh0ZXJuIHZvaWQgc3Jh bmRvbSAoaW50KTsKIGV4dGVybiBpbnQgcmFuZG9tICh2b2lkKTsKIAorZXh0ZXJuIGludCBz eXNfcmVuYW1lX3JlcGxhY2UgKGNoYXIgY29uc3QgKiwgY2hhciBjb25zdCAqLCBCT09MKTsK IGV4dGVybiBpbnQgc3lzX3BpcGUgKGludCAqKTsKIAogZXh0ZXJuIHZvaWQgc2V0X3Byb2Nl c3NfZGlyIChjaGFyICopOwoK --------------060107000305030307010009-- From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 04 11:52:16 2013 Received: (at 13807) by debbugs.gnu.org; 4 Mar 2013 16:52:16 +0000 Received: from localhost ([127.0.0.1]:58930 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UCYcW-0001N6-6Z for submit@debbugs.gnu.org; Mon, 04 Mar 2013 11:52:16 -0500 Received: from mtaout20.012.net.il ([80.179.55.166]:60060) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UCYcP-0001MI-RR for 13807@debbugs.gnu.org; Mon, 04 Mar 2013 11:52:10 -0500 Received: from conversion-daemon.a-mtaout20.012.net.il by a-mtaout20.012.net.il (HyperSendmail v2007.08) id <0MJ500400A8GGH00@a-mtaout20.012.net.il> for 13807@debbugs.gnu.org; Mon, 04 Mar 2013 18:50:40 +0200 (IST) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by a-mtaout20.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0MJ50031TASE3CU0@a-mtaout20.012.net.il>; Mon, 04 Mar 2013 18:50:39 +0200 (IST) Date: Mon, 04 Mar 2013 18:50:32 +0200 From: Eli Zaretskii Subject: Re: bug#13807: updated version to avoid MS-Windows vs non-MS-Windows clashes In-reply-to: <5133E313.5040701@cs.ucla.edu> X-012-Sender: halo1@inter.net.il To: Paul Eggert Message-id: <83ip57t8h3.fsf@gnu.org> References: <512A98D5.7080000@cs.ucla.edu> <512D3508.1000906@cs.ucla.edu> <83txoxwq0p.fsf@gnu.org> <51326459.4030001@cs.ucla.edu> <83vc99tsbm.fsf@gnu.org> <51327F29.5000600@cs.ucla.edu> <83ppzgtp2c.fsf@gnu.org> <5133E313.5040701@cs.ucla.edu> X-Spam-Score: -1.2 (-) X-Debbugs-Envelope-To: 13807 Cc: 13807@debbugs.gnu.org, monnier@iro.umontreal.ca X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list Reply-To: Eli Zaretskii List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.2 (-) > Date: Sun, 03 Mar 2013 15:56:03 -0800 > From: Paul Eggert > CC: Stefan Monnier , 13807@debbugs.gnu.org > > > My testing indicates that 'readdir' does return the file's name, but > > every other system call I tried, including even 'lstat', fails with > > EPERM. (I don't know whether all NFS servers behave that way.) > > They don't. Traditional NFS servers are stateless, and do > not have a state where a file exists and its parent > directory is accessible but you cannot stat the file. I'd > even call that behavior a bug: file servers with that > behavior will cause problems with many GNU programs, > including Emacs. It would not be wise for Emacs to rely on > or encourage that behavior. Like it or not, it's out there, and others might bump into it. > > these issues are unrelated to the MS-Windows build of Emacs. > > I don't see why they're unrelated. If an MS-Windows Emacs > uses regular files for locks, these files get in the way of > GNU/Linux Emacs lock files, and that makes these issues pop up. > > > They existed since about forever, and we never cared. > > Why is it suddenly so important that this feature works > > It's important because the MS-Windows code was recently > changed to create lock files, the existence of which could > break GNU/Linux Emacs's locking. I meant what you wrote here: > There's another issue: a GNU/Linux Emacs might be using an > MS-Windows file system that does not support symbolic links. Such > an Emacs should use a regular-file lock, just as MS-Windows Emacs does, > which means that the code to create regular-file locks should be implementable > in POSIXish primitives. Also, locking should work even if the Emacs > instance that created a lock uses a symlink whereas the Emacs instance > trying to get the lock would use a regular file, or vice versa. These issues are unrelated to whether Emacs on Windows does or doesn't lock files. They existed before, as did the issue with FAT32 volumes being used from Posix hosts. And I think you exaggerate the probability of having Emacs running on Windows to access via NFS files shared with Posix systems. In my experience, this is quite rare (as is having people use Emacs on Windows in general). > + if (fd < 0) > + err = errno; > + else > + { > + ptrdiff_t lock_info_len = strlen (lock_info_str); > + err = 0; > + if (emacs_write (fd, lock_info_str, lock_info_len) != lock_info_len > + || fchmod (fd, S_IRUSR | S_IRGRP | S_IROTH) != 0) > + err = errno; This will need a no-op emulation of fchmod for Windows (since a file created here will be world-writable anyway). Other than that, I don't see any problems with your changes (but I didn't try to build with them, I only read them). Thanks. From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 04 21:26:07 2013 Received: (at 13807) by debbugs.gnu.org; 5 Mar 2013 02:26:07 +0000 Received: from localhost ([127.0.0.1]:59464 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UChZt-0007v1-A3 for submit@debbugs.gnu.org; Mon, 04 Mar 2013 21:26:07 -0500 Received: from smtp.cs.ucla.edu ([131.179.128.62]:57993) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UChZn-0007uI-TP for 13807@debbugs.gnu.org; Mon, 04 Mar 2013 21:26:03 -0500 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 31C54A60071; Mon, 4 Mar 2013 18:25:36 -0800 (PST) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id s7hGDO0Te0X8; Mon, 4 Mar 2013 18:25:32 -0800 (PST) Received: from [192.168.1.9] (pool-71-189-154-249.lsanca.fios.verizon.net [71.189.154.249]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id B9254A60065; Mon, 4 Mar 2013 18:25:32 -0800 (PST) Message-ID: <5135579C.400@cs.ucla.edu> Date: Mon, 04 Mar 2013 18:25:32 -0800 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130221 Thunderbird/17.0.3 MIME-Version: 1.0 To: Eli Zaretskii Subject: Re: bug#13807: updated version to avoid MS-Windows vs non-MS-Windows clashes References: <512A98D5.7080000@cs.ucla.edu> <512D3508.1000906@cs.ucla.edu> <83txoxwq0p.fsf@gnu.org> <51326459.4030001@cs.ucla.edu> <83vc99tsbm.fsf@gnu.org> <51327F29.5000600@cs.ucla.edu> <83ppzgtp2c.fsf@gnu.org> <5133E313.5040701@cs.ucla.edu> <83ip57t8h3.fsf@gnu.org> In-Reply-To: <83ip57t8h3.fsf@gnu.org> Content-Type: multipart/mixed; boundary="------------040908020407060001050605" X-Spam-Score: -4.8 (----) X-Debbugs-Envelope-To: 13807 Cc: 13807@debbugs.gnu.org, monnier@iro.umontreal.ca X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -4.8 (----) This is a multi-part message in MIME format. --------------040908020407060001050605 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 03/04/13 08:50, Eli Zaretskii wrote: > it's out there, and others might bump into it. OK. Luckily, with the latest proposed patch, Emacs users will be less likely to bump into the NFS problem, since Emacs won't attempt to create lock files that exploit the issue. > These issues are unrelated to whether Emacs on Windows does or doesn't > lock files. They existed before, as did the issue with FAT32 volumes > being used from Posix hosts. Yes, quite right. Sorry I misunderstood you. > I think you exaggerate the probability of having Emacs running on > Windows to access via NFS files shared with Posix systems. Possibly. It depends on local practice. Many locations don't use NFS at all. Around here we use NFS heavily. > This will need a no-op emulation of fchmod for Windows (since a file > created here will be world-writable anyway). OK, thanks. Also, older POSIXish hosts that lack mkstemp won't need the fchmod either. I added the following to try to address these two points. Revised complete patch attached, relative to trunk bzr 111938. === modified file 'src/filelock.c' --- src/filelock.c 2013-03-04 19:27:39 +0000 +++ src/filelock.c 2013-03-04 19:36:45 +0000 @@ -407,15 +407,21 @@ USE_SAFE_ALLOCA; char *nonce = SAFE_ALLOCA (lfdirlen + sizeof nonce_base); int fd; + bool need_fchmod; + mode_t world_readable = S_IRUSR | S_IRGRP | S_IROTH; memcpy (nonce, lfname, lfdirlen); strcpy (nonce + lfdirlen, nonce_base); #if HAVE_MKSTEMP + /* Prefer mkstemp if available, as it avoids a race between + mktemp and emacs_open. */ fd = mkstemp (nonce); + need_fchmod = 1; #else mktemp (nonce); fd = emacs_open (nonce, O_WRONLY | O_CREAT | O_EXCL | O_BINARY, - S_IRUSR | S_IWUSR); + world_readable); + need_fchmod = 0; #endif if (fd < 0) @@ -425,7 +431,7 @@ ptrdiff_t lock_info_len = strlen (lock_info_str); err = 0; if (emacs_write (fd, lock_info_str, lock_info_len) != lock_info_len - || fchmod (fd, S_IRUSR | S_IRGRP | S_IROTH) != 0) + || (need_fchmod && fchmod (fd, world_readable) != 0)) err = errno; if (emacs_close (fd) != 0) err = errno; === modified file 'src/w32.c' --- src/w32.c 2013-03-03 23:12:54 +0000 +++ src/w32.c 2013-03-05 01:42:12 +0000 @@ -3416,6 +3416,12 @@ } int +fchmod (int fd, mode_t mode) +{ + return 0; +} + +int sys_rename_replace (const char *oldname, const char *newname, BOOL force) { BOOL result; === modified file 'src/w32.h' --- src/w32.h 2013-03-03 23:12:54 +0000 +++ src/w32.h 2013-03-05 01:42:12 +0000 @@ -186,6 +186,7 @@ extern void srandom (int); extern int random (void); +extern int fchmod (int, mode_t); extern int sys_rename_replace (char const *, char const *, BOOL); extern int sys_pipe (int *); --------------040908020407060001050605 Content-Type: text/plain; charset=UTF-8; name="filelock2.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="filelock2.txt" PT09IG1vZGlmaWVkIGZpbGUgJ2V0Yy9DaGFuZ2VMb2cnCi0tLSBldGMvQ2hhbmdlTG9nCTIw MTMtMDMtMDMgMDA6MDI6MTkgKzAwMDAKKysrIGV0Yy9DaGFuZ2VMb2cJMjAxMy0wMy0wNCAx Nzo0OToyMyArMDAwMApAQCAtMSwzICsxLDggQEAKKzIwMTMtMDMtMDQgIFBhdWwgRWdnZXJ0 ICA8ZWdnZXJ0QGNzLnVjbGEuZWR1PgorCisJRklMRSdzIGxvY2sgaXMgbm93IGFsd2F5cyAu I0ZJTEUgYW5kIG1heSBiZSBhIHJlZ3VsYXIgZmlsZSAoQnVnIzEzODA3KS4KKwkqIE5FV1M6 IERvY3VtZW50IHRoaXMuCisKIDIwMTMtMDMtMDIgIEJpbGwgV29obGVyICA8d29obGVyQG5l d3QuY29tPgogCiAJUmVsZWFzZSBNSC1FIHZlcnNpb24gOC41LgoKPT09IG1vZGlmaWVkIGZp bGUgJ2V0Yy9ORVdTJwotLS0gZXRjL05FV1MJMjAxMy0wMy0wMyAwMDowMjoxOSArMDAwMAor KysgZXRjL05FV1MJMjAxMy0wMy0wMyAwMDoxODoxMyArMDAwMApAQCAtMzIwLDcgKzMyMCw3 IEBACiAqKiBUaGUgYGRlZmFsaWFzLWZzZXQtZnVuY3Rpb24nIHByb3BlcnR5IGxldHMgeW91 IGNhdGNoIGNhbGxzIHRvIGRlZmFsaWFzCiBhbmQgcmVkaXJlY3QgdGhlbSB0byB5b3VyIG93 biBmdW5jdGlvbiBpbnN0ZWFkIG9mIGBmc2V0Jy4KIAotKiogVGhlIGxvY2sgZm9yICdESVIv RklMRScgaXMgbm93ICdESVIvLiNGSUxFJyBvciAnRElSLy4jLUZJTEUnLgorKiogVGhlIGxv Y2sgZm9yICdESVIvRklMRScgaXMgbm93ICdESVIvLiNGSUxFJyBhbmQgbWF5IGJlIGEgcmVn dWxhciBmaWxlLgogV2hlbiB5b3UgZWRpdCBESVIvRklMRSwgRW1hY3Mgbm9ybWFsbHkgY3Jl YXRlcyBhIHN5bWJvbGljIGxpbmsKIERJUi8uI0ZJTEUgYXMgYSBsb2NrIHRoYXQgd2FybnMg b3RoZXIgaW5zdGFuY2VzIG9mIEVtYWNzIHRoYXQgRElSL0ZJTEUKIGlzIGJlaW5nIGVkaXRl ZC4gIEZvcm1lcmx5LCBpZiB0aGVyZSB3YXMgYWxyZWFkeSBhIG5vbi1zeW1saW5rIGZpbGUK QEAgLTMyOCw5ICszMjgsOCBAQAogdGhyb3VnaCBESVIvLiNGSUxFLjkuICBUaGVzZSBmYWxs YmFja3MgaGF2ZSBiZWVuIHJlbW92ZWQsIHNvIHRoYXQKIEVtYWNzIG5vdyBubyBsb25nZXIg bG9ja3MgRElSL0ZJTEUgaW4gdGhhdCBjYXNlLgogCi1PbiBNUy1XaW5kb3dzIHRoZSBsb2Nr IGlzIGEgcmVndWxhciBmaWxlIERJUi8uIy1GSUxFLCBub3QgYSBzeW1saW5rLgotTVMtV2lu ZG93cyBhbmQgbm9uLU1TLVdpbmRvd3MgaW1wbGVtZW50YXRpb25zIG9mIEVtYWNzIGlnbm9y ZSBlYWNoCi1vdGhlcidzIGxvY2tzLgorT24gZmlsZSBzeXN0ZW1zIHRoYXQgZG8gbm90IHN1 cHBvcnQgc3ltYm9saWMgbGlua3MsIHRoZSBsb2NrIGlzIG5vdyBhCityZWd1bGFyIGZpbGUg d2l0aCBjb250ZW50cyBiZWluZyB3aGF0IHdvdWxkIGhhdmUgYmVlbiBpbiB0aGUgc3ltbGlu ay4KIAogKiogVGhlIDl0aCBlbGVtZW50IHJldHVybmVkIGJ5IGBmaWxlLWF0dHJpYnV0ZXMn IGlzIG5vdyB1bnNwZWNpZmllZC4KIEZvcm1lcmx5LCBpdCB3YXMgdCBpZiB0aGUgZmlsZSdz IGdpZCB3b3VsZCBjaGFuZ2UgaWYgZmlsZSB3ZXJlIGRlbGV0ZWQKCj09PSBtb2RpZmllZCBm aWxlICdzcmMvQ2hhbmdlTG9nJwotLS0gc3JjL0NoYW5nZUxvZwkyMDEzLTAzLTA0IDE3OjM1 OjI5ICswMDAwCisrKyBzcmMvQ2hhbmdlTG9nCTIwMTMtMDMtMDUgMDE6NDI6MTIgKzAwMDAK QEAgLTEsNSArMSw1NiBAQAogMjAxMy0wMy0wNCAgUGF1bCBFZ2dlcnQgIDxlZ2dlcnRAY3Mu dWNsYS5lZHU+CiAKKwlGSUxFJ3MgbG9jayBpcyBub3cgYWx3YXlzIC4jRklMRSBhbmQgbWF5 IGJlIGEgcmVndWxhciBmaWxlIChCdWcjMTM4MDcpLgorCSogZmlsZWxvY2suYzogSW5jbHVk ZSA8Yy1jdHlwZS5oPi4KKwkoTUFYX0xGSU5GTyk6IE5ldyB0b3AtbGV2ZWwgY29uc3RhbnQu CisJKGxvY2tfaW5mb190eXBlKTogUmVtb3ZlIG1lbWJlcnMgcGlkLCBib290X3RpbWUuICBB ZGQgbWVtYmVycyBhdCwKKwlkb3QsIGNvbG9uLiAgQ2hhbmdlIHVzZXIgbWVtYmVyIHRvIGJl IHRoZSBlbnRpcmUgYnVmZmVyLCBub3QgYQorCXBvaW50ZXIuICBUaGlzIGFsbG93cyB1cyB0 byBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUgYSBmb3JlaWduCisJcGlkIG9yIGJvb3QgdGltZSBl eGNlZWRzIHRoZSBsb2NhbCByYW5nZS4gIEFsbCB1c2VzIGNoYW5nZWQuCisJKExJTktTX01J R0hUX05PVF9XT1JLKTogTmV3IGNvbnN0YW50LgorCShGUkVFX0xPQ0tfSU5GTyk6IFJlbW92 ZSwgYXMgdGhlIHBpZWNlcyBubyBsb25nZXIgbmVlZCBmcmVlaW5nLgorCShkZWZpbmVkX1dJ TkRPV1NOVCk6IFJlbW92ZS4KKwkoTUFLRV9MT0NLX05BTUUsIGZpbGVfaW5fbG9ja19maWxl X25hbWUpOgorCUFsd2F5cyB1c2UgLiNGSUxFIChub3QgLiMtRklMRSkgZm9yIHRoZSBmaWxl IGxvY2ssCisJZXZlbiBpZiBpdCBpcyBhIHJlZ3VsYXIgZmlsZS4KKwkocmVuYW1lX2xvY2tf ZmlsZSk6IE5ldyBmdW5jdGlvbi4KKwkoY3JlYXRlX2xvY2tfZmlsZSk6IFVzZSBpdC4KKwko Y3JlYXRlX2xvY2tfZmlsZSwgcmVhZF9sb2NrX2RhdGEpOgorCVByZWZlciBhIHN5bWJvbGlj IGxpbmsgZm9yIHRoZSBsb2NrIGZpbGUsIGZhbGxpbmcgYmFjayBvbiBhCisJcmVndWxhciBm aWxlIGlmIHN5bWxpbmtzIGRvbid0IHdvcmsuICBEbyBub3QgdHJ5IHRvIGNyZWF0ZQorCXN5 bWxpbmtzIG9uIE1TLVdpbmRvd3MsIGR1ZSB0byBzZWN1cml0eSBoYXNzbGVzLiAgU3RpY2sg d2l0aAorCVBPU0lYaXNoIGZ1bmN0aW9ucyAob3BlbiwgcmVhZCwgd3JpdGUsIGNsb3NlLCBm Y2htb2QsIHJlYWRsaW5rLCBzeW1saW5rLAorCWxpbmssIHJlbmFtZSwgdW5saW5rLCBta3N0 ZW1wKSB3aGVuIGNyZWF0aW5nIGxvY2tzLCBhcyBhIEdOVWlzaAorCWhvc3QgbWF5IGJlIHVz aW5nIGEgV2luZG93c2lzaCBmaWxlIHN5c3RlbSwgYW5kIGNhbm5vdCB1c2UKKwlNUy1XaW5k b3dzLW9ubHkgc3lzdGVtIGNhbGxzLiAgRmFsbCBiYWNrIG9uIG1rdGVtcCBpZiBta3N0ZW1w CisJZG9lc24ndCB3b3JrLiAgRG9uJ3QgZmFpbCBtZXJlbHkgYmVjYXVzZSBvZiBhIHN5bWxp bmstY29udGVudHMKKwlsZW5ndGggbGltaXQgaW4gdGhlIGN1cnJlbnQgZmlsZSBzeXN0ZW07 IGZhbGwgYmFjayBvbiByZWd1bGFyCisJZmlsZXMuICBJbmNyZWFzZSB0aGUgc3ltbGluayBj b250ZW50cyBsZW5ndGggbGltaXQgdG8gOCBLaUIsIHRoaXMKKwlzaG91bGQgYmUgYmlnIGVu b3VnaCBmb3IgYW55IHJlYWwgdXNlIGFuZCBkb2Vzbid0IGNydW5jaCB0aGUKKwlzdGFjay4K KwkoY3JlYXRlX2xvY2tfZmlsZSwgbG9ja19maWxlXzEsIHJlYWRfbG9ja19kYXRhKToKKwlT aW1wbGlmeSBhbGxvY2F0aW9uIG9mIGxvY2sgZmlsZSBidWZmZXJzIG5vdyB0aGF0IHRoZXkg Zml0IGluIDggS2lCLgorCShsb2NrX2ZpbGVfMSk6IFJldHVybiBlcnJvciBudW1iZXIsIG5v dCBib29sLiAgQWxsIGNhbGxlcnMgY2hhbmdlZC4KKwkocmVhZF9sb2NrX2RhdGEpOiBSZXR1 cm4gc2l6ZSBvZiBsb2NrIGZpbGUgY29udGVudHMsIG5vdCBMaXNwIG9iamVjdC4KKwlBbGwg Y2FsbGVycyBjaGFuZ2VkLiAgSGFuZGxlIGEgcmFjZSBjb25kaXRpb24gaWYgc29tZSBvdGhl ciBwcm9jZXNzCisJcmVwbGFjZXMgYSByZWd1bGFyLWZpbGUgbG9jayB3aXRoIGEgc3ltbGlu ayBsb2NrIG9yIHZpY2UgdmVyc2EsCisJd2hpbGUgd2UncmUgdHJ5aW5nIHRvIHJlYWQgdGhl IGxvY2suCisJKGN1cnJlbnRfbG9ja19vd25lcik6IFBhcnNlIGNvbnRlbnRzIG1vcmUgY2Fy ZWZ1bGx5LCB0byBoZWxwIGF2b2lkCisJY29uZnVzaW5nIGEgcmVndWxhci1maWxlIGxvY2sg d2l0aCBzb21lIG90aGVyIGFwcGxpY2F0aW9uJ3MgdXNlCisJb2YgdGhlIGZpbGUuICBDaGVj ayBmb3IgbG9jayBmaWxlIGNvbnRlbnRzIGJlaW5nIHRvbyBsb25nLCBvcgorCW5vdCBwYXJz aW5nIGNvcnJlY3RseS4KKwkoY3VycmVudF9sb2NrX293bmVyLCBsb2NrX2ZpbGUpOgorCUFs bG93IGZvcmVpZ24gcGlkIGFuZCBib290IHRpbWVzIHRoYXQgZXhjZWVkIHRoZSBsb2NhbCBy YW5nZS4KKwkoY3VycmVudF9sb2NrX293bmVyLCBsb2NrX2lmX2ZyZWUsIGxvY2tfZmlsZSk6 CisJU2ltcGxpZnkgYWxsb2NhdGlvbiBvZiBsb2NrIGZpbGUgY29udGVudHMuCisJKiB3MzIu YyAoc3lzX3JlbmFtZV9yZXBsYWNlKTogTmV3IGZ1bmN0aW9uLCBjb250YWluaW5nIG1vc3Qg b2YKKwl0aGUgY29udGVudHMgb2YgdGhlIG9sZCBzeXNfcmVuYW1lLgorCShzeXNfcmVuYW1l KTogVXNlIGl0LgorCShmY2htb2QpOiBOZXcgZHVtbXkgZnVuY3Rpb24uCisJKiB3MzIuaCAo c3lzX3JlbmFtZV9yZXBsYWNlLCBmY2htb2QpOiBOZXcgZGVjbHMuCisKKzIwMTMtMDMtMDQg IFBhdWwgRWdnZXJ0ICA8ZWdnZXJ0QGNzLnVjbGEuZWR1PgorCiAJRml4IG1pc3VzZSBvZiBJ bWFnZU1hZ2ljayB0aGF0IGNhdXNlZCBjb3JlIGR1bXAgKEJ1ZyMxMzg0NikuCiAJKiBpbWFn ZS5jIChpbWFnZW1hZ2lja19sb2FkX2ltYWdlKTogQ2FsY3VsYXRlIGhlaWdodCBhbmQgd2lk dGgKIAlhZnRlciBmbGF0dGVuaW5nIHRoZSBpbWFnZSwgbm90IGJlZm9yZS4KCj09PSBtb2Rp ZmllZCBmaWxlICdzcmMvZmlsZWxvY2suYycKLS0tIHNyYy9maWxlbG9jay5jCTIwMTMtMDMt MDIgMjE6MDU6NTIgKzAwMDAKKysrIHNyYy9maWxlbG9jay5jCTIwMTMtMDMtMDQgMTk6MzY6 NDUgKzAwMDAKQEAgLTM4LDYgKzM4LDggQEAKIAogI2luY2x1ZGUgPGVycm5vLmg+CiAKKyNp bmNsdWRlIDxjLWN0eXBlLmg+CisKICNpbmNsdWRlICJsaXNwLmgiCiAjaW5jbHVkZSAiY2hh cmFjdGVyLmgiCiAjaW5jbHVkZSAiYnVmZmVyLmgiCkBAIC02NCw3ICs2Niw3IEBACiAjZGVm aW5lIFdUTVBfRklMRSAiL3Zhci9sb2cvd3RtcCIKICNlbmRpZgogCi0vKiBPbiBub24tTVMt V2luZG93cyBzeXN0ZW1zLCB1c2UgYSBzeW1ib2xpYyBsaW5rIHRvIHJlcHJlc2VudCBhIGxv Y2suCisvKiBOb3JtYWxseSB1c2UgYSBzeW1ib2xpYyBsaW5rIHRvIHJlcHJlc2VudCBhIGxv Y2suCiAgICBUaGUgc3RyYXRlZ3k6IHRvIGxvY2sgYSBmaWxlIEZOLCBjcmVhdGUgYSBzeW1s aW5rIC4jRk4gaW4gRk4ncwogICAgZGlyZWN0b3J5LCB3aXRoIGxpbmsgZGF0YSBgdXNlckBo b3N0LnBpZCcuICBUaGlzIGF2b2lkcyBhIHNpbmdsZQogICAgbW91bnQgKD09IGZhaWx1cmUp IHBvaW50IGZvciBsb2NrIGZpbGVzLgpAQCAtMTAwLDEwICsxMDIsMjEgQEAKIAogICAgLS1r YXJsQGNzLnVtYi5lZHUva2FybEBocS5pbGVhZi5jb20uCiAKLSAgIE9uIE1TLVdpbmRvd3Ms IHN5bWJvbGljIGxpbmtzIGRvIG5vdCB3b3JrIHdlbGwsIHNvIGluc3RlYWQgb2YgYQotICAg c3ltbGluayAuI0ZOIC0+ICd1c2VyQGhvc3QucGlkJywgdGhlIGxvY2sgaXMgYSByZWd1bGFy IGZpbGUgLiMtRk4KLSAgIHdpdGggY29udGVudHMgJ3VzZXJAaG9zdC5waWQnLiAgTVMtV2lu ZG93cyBhbmQgbm9uLU1TLVdpbmRvd3MKLSAgIHZlcnNpb25zIG9mIEVtYWNzIGlnbm9yZSBl YWNoIG90aGVyJ3MgbG9ja3MuICAqLworICAgT24gc29tZSBmaWxlIHN5c3RlbXMsIG5vdGFi bHkgdGhvc2Ugb2YgTVMtV2luZG93cywgc3ltYm9saWMgbGlua3MKKyAgIGRvIG5vdCB3b3Jr IHdlbGwsIHNvIGluc3RlYWQgb2YgYSBzeW1saW5rIC4jRk4gLT4gJ3VzZXJAaG9zdC5waWQn LAorICAgdGhlIGxvY2sgaXMgYSByZWd1bGFyIGZpbGUgLiNGTiB3aXRoIGNvbnRlbnRzICd1 c2VyQGhvc3QucGlkJy4gIFRvCisgICBlc3RhYmxpc2ggYSBsb2NrLCBhIG5vbmNlIGZpbGUg aXMgY3JlYXRlZCBhbmQgdGhlbiByZW5hbWVkIHRvIC4jRk4uCisgICBPbiBNUy1XaW5kb3dz IHRoaXMgcmVuYW1pbmcgaXMgYXRvbWljIHVubGVzcyB0aGUgbG9jayBpcyBmb3JjaWJseQor ICAgYWNxdWlyZWQuICBPbiBvdGhlciBzeXN0ZW1zIHRoZSByZW5hbWluZyBpcyBhdG9taWMg aWYgdGhlIGxvY2sgaXMKKyAgIGZvcmNpYmx5IGFjcXVpcmVkOyBpZiBub3QsIHRoZSByZW5h bWluZyBpcyBkb25lIHZpYSBoYXJkIGxpbmtzLAorICAgd2hpY2ggaXMgZ29vZCBlbm91Z2gg Zm9yIGxvY2stZmlsZSBwdXJwb3Nlcy4KKworICAgVG8gc3VtbWFyaXplLCByYWNlIGNvbmRp dGlvbnMgY2FuIG9jY3VyIHdpdGggZWl0aGVyOgorCisgICAqIEZvcmNlZCBsb2NrcyBvbiBN Uy1XaW5kb3dzIHN5c3RlbXMuCisKKyAgICogTm9uLWZvcmNlZCBsb2NrcyBvbiBub24tTVMt V2luZG93cyBzeXN0ZW1zIHRoYXQgc3VwcG9ydCBuZWl0aGVyCisgICAgIGhhcmQgbm9yIHN5 bWJvbGljIGxpbmtzLiAgKi8KIAogDAogLyogUmV0dXJuIHRoZSB0aW1lIG9mIHRoZSBsYXN0 IHN5c3RlbSBib290LiAgKi8KQEAgLTI4NCwzMCArMjk3LDMxIEBACiB9CiAjZW5kaWYgLyog Qk9PVF9USU1FICovCiAMCisvKiBBbiBhcmJpdHJhcnkgbGltaXQgb24gbG9jayBjb250ZW50 cyBsZW5ndGguICA4IEsgc2hvdWxkIGJlIHBsZW50eQorICAgYmlnIGVub3VnaCBpbiBwcmFj dGljZS4gICovCitlbnVtIHsgTUFYX0xGSU5GTyA9IDggKiAxMDI0IH07CisKIC8qIEhlcmUg aXMgdGhlIHN0cnVjdHVyZSB0aGF0IHN0b3JlcyBpbmZvcm1hdGlvbiBhYm91dCBhIGxvY2su ICAqLwogCiB0eXBlZGVmIHN0cnVjdAogewotICBjaGFyICp1c2VyOwotICBjaGFyICpob3N0 OwotICBwaWRfdCBwaWQ7Ci0gIHRpbWVfdCBib290X3RpbWU7CisgIC8qIExvY2F0aW9uIG9m ICdAJywgJy4nLCAnOicgaW4gVVNFUi4gIElmIHRoZXJlJ3Mgbm8gY29sb24sIENPTE9OCisg ICAgIHBvaW50cyB0byB0aGUgZW5kIG9mIFVTRVIuICAqLworICBjaGFyICphdCwgKmRvdCwg KmNvbG9uOworCisgIC8qIExvY2sgZmlsZSBjb250ZW50cyBVU0VSQEhPU1QuUElEIHdpdGgg YW4gb3B0aW9uYWwgOkJPT1RfVElNRQorICAgICBhcHBlbmRlZC4gIFRoaXMgbWVtb3J5IGlz IHVzZWQgYXMgYSBsb2NrIGZpbGUgY29udGVudHMgYnVmZmVyLCBzbworICAgICBpdCBuZWVk cyByb29tIGZvciBNQVhfTEZJTkZPICsgMSBieXRlcy4gIEEgc3RyaW5nICIgKHBpZCBOTk5O KSIKKyAgICAgbWF5IGJlIGFwcGVuZGVkIHRvIHRoZSBVU0VSQEhPU1Qgd2hpbGUgZ2VuZXJh dGluZyBhIGRpYWdub3N0aWMsCisgICAgIHNvIG1ha2Ugcm9vbSBmb3IgaXRzIGV4dHJhIGJ5 dGVzIChhcyBvcHBvc2VkIHRvICIuTk5OTiIpIHRvby4gICovCisgIGNoYXIgdXNlcltNQVhf TEZJTkZPICsgMSArIHNpemVvZiAiIChwaWQgKSIgLSBzaXplb2YgIi4iXTsKIH0gbG9ja19p bmZvX3R5cGU7CiAKLS8qIEZyZWUgdGhlIHR3byBkeW5hbWljYWxseS1hbGxvY2F0ZWQgcGll Y2VzIGluIFBUUi4gICovCi0jZGVmaW5lIEZSRUVfTE9DS19JTkZPKGkpIGRvIHsgeGZyZWUg KChpKS51c2VyKTsgeGZyZWUgKChpKS5ob3N0KTsgfSB3aGlsZSAoMCkKLQotI2lmZGVmIFdJ TkRPV1NOVAotZW51bSB7IGRlZmluZWRfV0lORE9XU05UID0gMSB9OwotI2Vsc2UKLWVudW0g eyBkZWZpbmVkX1dJTkRPV1NOVCA9IDAgfTsKLSNlbmRpZgotCiAvKiBXcml0ZSB0aGUgbmFt ZSBvZiB0aGUgbG9jayBmaWxlIGZvciBGTkFNRSBpbnRvIExPQ0tOQU1FLiAgTGVuZ3RoCi0g ICB3aWxsIGJlIHRoYXQgb2YgRk5BTUUgcGx1cyB0d28gbW9yZSBmb3IgdGhlIGxlYWRpbmcg Ii4jIiwKLSAgIHBsdXMgb25lIGZvciAiLSIgaWYgTVMtV2luZG93cywgcGx1cyBvbmUgZm9y IHRoZSBudWxsLiAgKi8KKyAgIHdpbGwgYmUgdGhhdCBvZiBGTkFNRSBwbHVzIHR3byBtb3Jl IGZvciB0aGUgbGVhZGluZyAiLiMiLCBwbHVzIG9uZQorICAgZm9yIHRoZSBudWxsLiAgKi8K ICNkZWZpbmUgTUFLRV9MT0NLX05BTUUobG9ja25hbWUsIGZuYW1lKSBcCi0gIChsb2NrbmFt ZSA9IFNBRkVfQUxMT0NBIChTQllURVMgKGZuYW1lKSArIDIgKyBkZWZpbmVkX1dJTkRPV1NO VCArIDEpLCBcCisgIChsb2NrbmFtZSA9IFNBRkVfQUxMT0NBIChTQllURVMgKGZuYW1lKSAr IDIgKyAxKSwgXAogICAgZmlsbF9pbl9sb2NrX2ZpbGVfbmFtZSAobG9ja25hbWUsIGZuYW1l KSkKIAogc3RhdGljIHZvaWQKQEAgLTMxOSw3MCArMzMzLDEyNyBAQAogICBtZW1jcHkgKGxv Y2tmaWxlLCBTU0RBVEEgKGZuKSwgZGlybGVuKTsKICAgbG9ja2ZpbGVbZGlybGVuXSA9ICcu JzsKICAgbG9ja2ZpbGVbZGlybGVuICsgMV0gPSAnIyc7Ci0gIGlmIChkZWZpbmVkX1dJTkRP V1NOVCkKLSAgICBsb2NrZmlsZVtkaXJsZW4gKyAyXSA9ICctJzsKLSAgc3RyY3B5IChsb2Nr ZmlsZSArIGRpcmxlbiArIDIgKyBkZWZpbmVkX1dJTkRPV1NOVCwgYmFzZSk7Ci19CisgIHN0 cmNweSAobG9ja2ZpbGUgKyBkaXJsZW4gKyAyLCBiYXNlKTsKK30KKworLyogRm9yIHNvbWUg cmVhc29uIExpbnV4IGtlcm5lbHMgcmV0dXJuIEVQRVJNIG9uIGZpbGUgc3lzdGVtcyB0aGF0 IGRvCisgICBub3Qgc3VwcG9ydCBoYXJkIG9yIHN5bWJvbGljIGxpbmtzLiAgVGhpcyBzeW1i b2wgZG9jdW1lbnRzIHRoZSBxdWlyay4KKyAgIFRoZXJlIGlzIG5vIHdheSB0byB0ZWxsIHdo ZXRoZXIgYSBzeW1saW5rIGNhbGwgZmFpbHMgZHVlIHRvCisgICBwZXJtaXNzaW9ucyBpc3N1 ZXMgb3IgYmVjYXVzZSBsaW5rcyBhcmUgbm90IHN1cHBvcnRlZCwgYnV0IGx1Y2tpbHkKKyAg IHRoZSBsb2NrIGZpbGUgY29kZSBzaG91bGQgd29yayBlaXRoZXIgd2F5LiAgKi8KK2VudW0g eyBMSU5LU19NSUdIVF9OT1RfV09SSyA9IEVQRVJNIH07CisKKy8qIFJlbmFtZSBPTEQgdG8g TkVXLiAgSWYgRk9SQ0UsIHJlcGxhY2UgYW55IGV4aXN0aW5nIE5FVy4KKyAgIEl0IGlzIE9L IGlmIHRoZXJlIGFyZSB0ZW1wb3JhcmlseSB0d28gaGFyZCBsaW5rcyB0byBPTEQuCisgICBS ZXR1cm4gMCBpZiBzdWNjZXNzZnVsLCAtMSAoc2V0dGluZyBlcnJubykgb3RoZXJ3aXNlLiAg Ki8KK3N0YXRpYyBpbnQKK3JlbmFtZV9sb2NrX2ZpbGUgKGNoYXIgY29uc3QgKm9sZCwgY2hh ciBjb25zdCAqbmV3LCBib29sIGZvcmNlKQoreworI2lmZGVmIFdJTkRPV1NOVAorICByZXR1 cm4gc3lzX3JlbmFtZV9yZXBsYWNlIChvbGQsIG5ldywgZm9yY2UpOworI2Vsc2UKKyAgaWYg KCEgZm9yY2UpCisgICAgeworICAgICAgaWYgKGxpbmsgKG9sZCwgbmV3KSA9PSAwKQorCXJl dHVybiB1bmxpbmsgKG9sZCkgPT0gMCB8fCBlcnJubyA9PSBFTk9FTlQgPyAwIDogLTE7Cisg ICAgICBpZiAoZXJybm8gIT0gRU5PU1lTICYmIGVycm5vICE9IExJTktTX01JR0hUX05PVF9X T1JLKQorCXJldHVybiAtMTsKKworICAgICAgLyogJ2xpbmsnIGRvZXMgbm90IHdvcmsgb24g dGhpcyBmaWxlIHN5c3RlbS4gIFRoaXMgY2FuIG9jY3VyIG9uCisJIGEgR05VL0xpbnV4IGhv c3QgbW91bnRpbmcgYSBGQVQzMiBmaWxlIHN5c3RlbS4gIEZhbGwgYmFjayBvbgorCSAncmVu YW1lJyBhZnRlciBjaGVja2luZyB0aGF0IE5FVyBkb2VzIG5vdCBleGlzdC4gIFRoZXJlIGlz IGEKKwkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIHNpbmNlIHNvbWUgb3RoZXIgcHJvY2Vz cyBtYXkgY3JlYXRlCisJIE5FVyBpbW1lZGlhdGVseSBhZnRlciB0aGUgZXhpc3RlbmNlIGNo ZWNrLCBidXQgaXQncyB0aGUgYmVzdAorCSB3ZSBjYW4gcG9ydGFibHkgZG8gaGVyZS4gICov CisgICAgICBpZiAoY2hlY2tfZXhpc3RpbmcgKG5ldykpCisJeworCSAgZXJybm8gPSBFRVhJ U1Q7CisJICByZXR1cm4gLTE7CisJfQorICAgIH0KKworICByZXR1cm4gcmVuYW1lIChvbGQs IG5ldyk7CisjZW5kaWYKK30KKworLyogQ3JlYXRlIHRoZSBsb2NrIGZpbGUgRklMRSB3aXRo IGNvbnRlbnRzIENPTlRFTlRTLiAgUmV0dXJuIDAgaWYKKyAgIHN1Y2Nlc3NmdWwsIGFuIGVy cm5vIHZhbHVlIG9uIGZhaWx1cmUuICBJZiBGT1JDRSwgcmVtb3ZlIGFueQorICAgZXhpc3Rp bmcgRklMRSBpZiBuZWNlc3NhcnkuICAqLwogCiBzdGF0aWMgaW50CiBjcmVhdGVfbG9ja19m aWxlIChjaGFyICpsZm5hbWUsIGNoYXIgKmxvY2tfaW5mb19zdHIsIGJvb2wgZm9yY2UpCiB7 Ci0gIGludCBlcnI7Ci0KICNpZmRlZiBXSU5ET1dTTlQKLSAgLyogU3ltbGlua3MgYXJlIHN1 cHBvcnRlZCBvbmx5IGJ5IGxhdGVzdCB2ZXJzaW9ucyBvZiBXaW5kb3dzLCBhbmQKLSAgICAg Y3JlYXRpbmcgdGhlbSBpcyBhIHByaXZpbGVnZWQgb3BlcmF0aW9uIHRoYXQgb2Z0ZW4gdHJp Z2dlcnMgVUFDCi0gICAgIGVsZXZhdGlvbiBwcm9tcHRzLiAgVGhlcmVmb3JlLCBpbnN0ZWFk IG9mIHVzaW5nIHN5bWxpbmtzLCB3ZQotICAgICBjcmVhdGUgYSByZWd1bGFyIGZpbGUgd2l0 aCB0aGUgbG9jayBpbmZvIHdyaXR0ZW4gYXMgaXRzCi0gICAgIGNvbnRlbnRzLiAgKi8KLSAg ewotICAgIC8qIERlbnkgZXZlcnlib2R5IGVsc2UgYW55IGtpbmQgb2YgYWNjZXNzIHRvIHRo ZSBmaWxlIHVudGlsIHdlIGFyZQotICAgICAgIGRvbmUgd3JpdGluZyBpdCBhbmQgY2xvc2Ug dGhlIGhhbmRsZS4gIFRoaXMgbWFrZXMgdGhlIGVudGlyZQotICAgICAgIG9wZW4vd3JpdGUv Y2xvc2Ugb3BlcmF0aW9uIGF0b21pYywgYXMgZmFyIGFzIG90aGVyIFdJTkRPV1NOVAotICAg ICAgIHByb2Nlc3NlcyBhcmUgY29uY2VybmVkLiAgKi8KLSAgICBpbnQgZmQgPSBfc29wZW4g KGxmbmFtZSwKLQkJICAgICBfT19XUk9OTFkgfCBfT19CSU5BUlkgfCBfT19DUkVBVCB8IF9P X0VYQ0wgfCBfT19OT0lOSEVSSVQsCi0JCSAgICAgX1NIX0RFTllSVywgU19JUkVBRCB8IFNf SVdSSVRFKTsKLQotICAgIGlmIChmZCA8IDAgJiYgZXJybm8gPT0gRUVYSVNUICYmIGZvcmNl KQotICAgICAgZmQgPSBfc29wZW4gKGxmbmFtZSwgX09fV1JPTkxZIHwgX09fQklOQVJZIHwg X09fVFJVTkMgfF9PX05PSU5IRVJJVCwKLQkJICAgX1NIX0RFTllSVywgU19JUkVBRCB8IFNf SVdSSVRFKTsKLSAgICBpZiAoZmQgPj0gMCkKLSAgICAgIHsKLQlzc2l6ZV90IGxvY2tfaW5m b19sZW4gPSBzdHJsZW4gKGxvY2tfaW5mb19zdHIpOwotCi0JZXJyID0gMDsKLQlpZiAoZW1h Y3Nfd3JpdGUgKGZkLCBsb2NrX2luZm9fc3RyLCBsb2NrX2luZm9fbGVuKSAhPSBsb2NrX2lu Zm9fbGVuKQotCSAgZXJyID0gLTE7Ci0JaWYgKGVtYWNzX2Nsb3NlIChmZCkpCi0JICBlcnIg PSAtMTsKLSAgICAgIH0KLSAgICBlbHNlCi0gICAgICBlcnIgPSAtMTsKLSAgfQorICAvKiBT eW1saW5rcyBhcmUgc3VwcG9ydGVkIG9ubHkgYnkgbGF0ZXIgdmVyc2lvbnMgb2YgV2luZG93 cywgYW5kCisgICAgIGNyZWF0aW5nIHRoZW0gaXMgYSBwcml2aWxlZ2VkIG9wZXJhdGlvbiB0 aGF0IG9mdGVuIHRyaWdnZXJzCisgICAgIFVzZXIgQWNjb3VudCBDb250cm9sIGVsZXZhdGlv biBwcm9tcHRzLiAgQXZvaWQgdGhlIHByb2JsZW0gYnkKKyAgICAgcHJldGVuZGluZyB0aGF0 ICdzeW1saW5rJyBkb2VzIG5vdCB3b3JrLiAgKi8KKyAgaW50IGVyciA9IEVOT1NZUzsKICNl bHNlCi0gIGVyciA9IHN5bWxpbmsgKGxvY2tfaW5mb19zdHIsIGxmbmFtZSk7Ci0gIGlmIChl cnIgIT0gMCAmJiBlcnJubyA9PSBFRVhJU1QgJiYgZm9yY2UpCisgIGludCBlcnIgPSBzeW1s aW5rIChsb2NrX2luZm9fc3RyLCBsZm5hbWUpID09IDAgPyAwIDogZXJybm87CisjZW5kaWYK KworICBpZiAoZXJyID09IEVFWElTVCAmJiBmb3JjZSkKICAgICB7CiAgICAgICB1bmxpbmsg KGxmbmFtZSk7Ci0gICAgICBlcnIgPSBzeW1saW5rIChsb2NrX2luZm9fc3RyLCBsZm5hbWUp OworICAgICAgZXJyID0gc3ltbGluayAobG9ja19pbmZvX3N0ciwgbGZuYW1lKSA9PSAwID8g MCA6IGVycm5vOwogICAgIH0KKworICBpZiAoZXJyID09IEVOT1NZUyB8fCBlcnIgPT0gTElO S1NfTUlHSFRfTk9UX1dPUksgfHwgZXJyID09IEVOQU1FVE9PTE9ORykKKyAgICB7CisgICAg ICBzdGF0aWMgY2hhciBjb25zdCBub25jZV9iYXNlW10gPSAiLiMtZW1hY3NYWFhYWFgiOwor ICAgICAgY2hhciAqbGFzdF9zbGFzaCA9IHN0cnJjaHIgKGxmbmFtZSwgJy8nKTsKKyAgICAg IHB0cmRpZmZfdCBsZmRpcmxlbiA9IGxhc3Rfc2xhc2ggKyAxIC0gbGZuYW1lOworICAgICAg VVNFX1NBRkVfQUxMT0NBOworICAgICAgY2hhciAqbm9uY2UgPSBTQUZFX0FMTE9DQSAobGZk aXJsZW4gKyBzaXplb2Ygbm9uY2VfYmFzZSk7CisgICAgICBpbnQgZmQ7CisgICAgICBib29s IG5lZWRfZmNobW9kOworICAgICAgbW9kZV90IHdvcmxkX3JlYWRhYmxlID0gU19JUlVTUiB8 IFNfSVJHUlAgfCBTX0lST1RIOworICAgICAgbWVtY3B5IChub25jZSwgbGZuYW1lLCBsZmRp cmxlbik7CisgICAgICBzdHJjcHkgKG5vbmNlICsgbGZkaXJsZW4sIG5vbmNlX2Jhc2UpOwor CisjaWYgSEFWRV9NS1NURU1QCisgICAgICAvKiBQcmVmZXIgbWtzdGVtcCBpZiBhdmFpbGFi bGUsIGFzIGl0IGF2b2lkcyBhIHJhY2UgYmV0d2VlbgorCSBta3RlbXAgYW5kIGVtYWNzX29w ZW4uICAqLworICAgICAgZmQgPSBta3N0ZW1wIChub25jZSk7CisgICAgICBuZWVkX2ZjaG1v ZCA9IDE7CisjZWxzZQorICAgICAgbWt0ZW1wIChub25jZSk7CisgICAgICBmZCA9IGVtYWNz X29wZW4gKG5vbmNlLCBPX1dST05MWSB8IE9fQ1JFQVQgfCBPX0VYQ0wgfCBPX0JJTkFSWSwK KwkJICAgICAgIHdvcmxkX3JlYWRhYmxlKTsKKyAgICAgIG5lZWRfZmNobW9kID0gMDsKICNl bmRpZgogCisgICAgICBpZiAoZmQgPCAwKQorCWVyciA9IGVycm5vOworICAgICAgZWxzZQor CXsKKwkgIHB0cmRpZmZfdCBsb2NrX2luZm9fbGVuID0gc3RybGVuIChsb2NrX2luZm9fc3Ry KTsKKwkgIGVyciA9IDA7CisJICBpZiAoZW1hY3Nfd3JpdGUgKGZkLCBsb2NrX2luZm9fc3Ry LCBsb2NrX2luZm9fbGVuKSAhPSBsb2NrX2luZm9fbGVuCisJICAgICAgfHwgKG5lZWRfZmNo bW9kICYmIGZjaG1vZCAoZmQsIHdvcmxkX3JlYWRhYmxlKSAhPSAwKSkKKwkgICAgZXJyID0g ZXJybm87CisJICBpZiAoZW1hY3NfY2xvc2UgKGZkKSAhPSAwKQorCSAgICBlcnIgPSBlcnJu bzsKKwkgIGlmICghZXJyICYmIHJlbmFtZV9sb2NrX2ZpbGUgKG5vbmNlLCBsZm5hbWUsIGZv cmNlKSAhPSAwKQorCSAgICBlcnIgPSBlcnJubzsKKwkgIGlmIChlcnIpCisJICAgIHVubGlu ayAobm9uY2UpOworCX0KKworICAgICAgU0FGRV9GUkVFICgpOworICAgIH0KKwogICByZXR1 cm4gZXJyOwogfQogCiAvKiBMb2NrIHRoZSBsb2NrIGZpbGUgbmFtZWQgTEZOQU1FLgogICAg SWYgRk9SQ0UsIGRvIHNvIGV2ZW4gaWYgaXQgaXMgYWxyZWFkeSBsb2NrZWQuCi0gICBSZXR1 cm4gdHJ1ZSBpZiBzdWNjZXNzZnVsLiAgKi8KKyAgIFJldHVybiAwIGlmIHN1Y2Nlc3NmdWws IGFuIGVycm9yIG51bWJlciBvbiBmYWlsdXJlLiAgKi8KIAotc3RhdGljIGJvb2wKK3N0YXRp YyBpbnQKIGxvY2tfZmlsZV8xIChjaGFyICpsZm5hbWUsIGJvb2wgZm9yY2UpCiB7Ci0gIGlu dCBlcnI7Ci0gIGludCBzeW1saW5rX2Vycm5vOwotICBVU0VfU0FGRV9BTExPQ0E7Ci0KICAg LyogQ2FsbCB0aGlzIGZpcnN0IGJlY2F1c2UgaXQgY2FuIEdDLiAgKi8KICAgcHJpbnRtYXhf dCBib290ID0gZ2V0X2Jvb3RfdGltZSAoKTsKIApAQCAtMzkwLDIwICs0NjEsMTYgQEAKICAg Y2hhciBjb25zdCAqdXNlcl9uYW1lID0gU1RSSU5HUCAobHVzZXJfbmFtZSkgPyBTU0RBVEEg KGx1c2VyX25hbWUpIDogIiI7CiAgIExpc3BfT2JqZWN0IGxob3N0X25hbWUgPSBGc3lzdGVt X25hbWUgKCk7CiAgIGNoYXIgY29uc3QgKmhvc3RfbmFtZSA9IFNUUklOR1AgKGxob3N0X25h bWUpID8gU1NEQVRBIChsaG9zdF9uYW1lKSA6ICIiOwotICBwdHJkaWZmX3QgbG9ja19pbmZv X3NpemUgPSAoc3RybGVuICh1c2VyX25hbWUpICsgc3RybGVuIChob3N0X25hbWUpCi0JCQkg ICAgICArIDIgKiBJTlRfU1RSTEVOX0JPVU5EIChwcmludG1heF90KQotCQkJICAgICAgKyBz aXplb2YgIkAuOiIpOwotICBjaGFyICpsb2NrX2luZm9fc3RyID0gU0FGRV9BTExPQ0EgKGxv Y2tfaW5mb19zaXplKTsKKyAgY2hhciBsb2NrX2luZm9fc3RyW01BWF9MRklORk8gKyAxXTsK ICAgcHJpbnRtYXhfdCBwaWQgPSBnZXRwaWQgKCk7CiAKLSAgZXNwcmludGYgKGxvY2tfaW5m b19zdHIsIGJvb3QgPyAiJXNAJXMuJSJwTWQiOiUicE1kIDogIiVzQCVzLiUicE1kLAotCSAg ICB1c2VyX25hbWUsIGhvc3RfbmFtZSwgcGlkLCBib290KTsKLSAgZXJyID0gY3JlYXRlX2xv Y2tfZmlsZSAobGZuYW1lLCBsb2NrX2luZm9fc3RyLCBmb3JjZSk7CisgIGlmIChzaXplb2Yg bG9ja19pbmZvX3N0cgorICAgICAgPD0gc25wcmludGYgKGxvY2tfaW5mb19zdHIsIHNpemVv ZiBsb2NrX2luZm9fc3RyLAorCQkgICBib290ID8gIiVzQCVzLiUicE1kIjolInBNZCA6ICIl c0Alcy4lInBNZCwKKwkJICAgdXNlcl9uYW1lLCBob3N0X25hbWUsIHBpZCwgYm9vdCkpCisg ICAgcmV0dXJuIEVOQU1FVE9PTE9ORzsKIAotICBzeW1saW5rX2Vycm5vID0gZXJybm87Ci0g IFNBRkVfRlJFRSAoKTsKLSAgZXJybm8gPSBzeW1saW5rX2Vycm5vOwotICByZXR1cm4gZXJy ID09IDA7CisgIHJldHVybiBjcmVhdGVfbG9ja19maWxlIChsZm5hbWUsIGxvY2tfaW5mb19z dHIsIGZvcmNlKTsKIH0KIAogLyogUmV0dXJuIHRydWUgaWYgdGltZXMgQSBhbmQgQiBhcmUg bm8gbW9yZSB0aGFuIG9uZSBzZWNvbmQgYXBhcnQuICAqLwpAQCAtNDE0LDMyICs0ODEsMzkg QEAKICAgcmV0dXJuIChhIC0gYiA+PSAtMSAmJiBhIC0gYiA8PSAxKTsKIH0KIAwKLXN0YXRp YyBMaXNwX09iamVjdAotcmVhZF9sb2NrX2RhdGEgKGNoYXIgKmxmbmFtZSkKKy8qIFJlYWQg dGhlIGRhdGEgZm9yIHRoZSBsb2NrIGZpbGUgTEZOQU1FIGludG8gTEZJTkZPLiAgUmVhZCBh dCBtb3N0CisgICBNQVhfTEZJTkZPICsgMSBieXRlcy4gIFJldHVybiB0aGUgbnVtYmVyIG9m IGJ5dGVzIHJlYWQsIG9yIC0xCisgICAoc2V0dGluZyBlcnJubykgb24gZXJyb3IuICAqLwor CitzdGF0aWMgcHRyZGlmZl90CityZWFkX2xvY2tfZGF0YSAoY2hhciAqbGZuYW1lLCBjaGFy IGxmaW5mb1tNQVhfTEZJTkZPICsgMV0pCiB7Ci0jaWZuZGVmIFdJTkRPV1NOVAotICByZXR1 cm4gZW1hY3NfcmVhZGxpbmthdCAoQVRfRkRDV0QsIGxmbmFtZSk7Ci0jZWxzZQotICBpbnQg ZmQgPSBlbWFjc19vcGVuIChsZm5hbWUsIE9fUkRPTkxZIHwgT19CSU5BUlksIFNfSVJFQUQp OwotICBzc2l6ZV90IG5ieXRlczsKLSAgLyogMjU2IGNoYXJzIGZvciB1c2VyLCAxMDI0IGNo YXJzIGZvciBob3N0LCAxMCBkaWdpdHMgZm9yIGVhY2ggb2YgMiBpbnQncy4gICovCi0gIGVu dW0geyBNQVhfTEZJTkZPID0gMjU2ICsgMTAyNCArIDEwICsgMTAgKyAyIH07Ci0gIGNoYXIg bGZpbmZvW01BWF9MRklORk8gKyAxXTsKLQotICBpZiAoZmQgPCAwKQotICAgIHJldHVybiBR bmlsOwotCi0gIG5ieXRlcyA9IGVtYWNzX3JlYWQgKGZkLCBsZmluZm8sIE1BWF9MRklORk8p OwotICBlbWFjc19jbG9zZSAoZmQpOwotCi0gIGlmIChuYnl0ZXMgPiAwKQorICBwdHJkaWZm X3QgbmJ5dGVzOworCisgIHdoaWxlICgobmJ5dGVzID0gcmVhZGxpbmthdCAoQVRfRkRDV0Qs IGxmbmFtZSwgbGZpbmZvLCBNQVhfTEZJTkZPICsgMSkpIDwgMAorCSAmJiBlcnJubyA9PSBF SU5WQUwpCiAgICAgewotICAgICAgbGZpbmZvW25ieXRlc10gPSAnXDAnOwotICAgICAgcmV0 dXJuIGJ1aWxkX3N0cmluZyAobGZpbmZvKTsKKyAgICAgIGludCBmZCA9IGVtYWNzX29wZW4g KGxmbmFtZSwgT19SRE9OTFkgfCBPX0JJTkFSWSB8IE9fTk9GT0xMT1csIDApOworICAgICAg aWYgKDAgPD0gZmQpCisJeworCSAgcHRyZGlmZl90IHJlYWRfYnl0ZXMgPSBlbWFjc19yZWFk IChmZCwgbGZpbmZvLCBNQVhfTEZJTkZPICsgMSk7CisJICBpbnQgcmVhZF9lcnJubyA9IGVy cm5vOworCSAgaWYgKGVtYWNzX2Nsb3NlIChmZCkgIT0gMCkKKwkgICAgcmV0dXJuIC0xOwor CSAgZXJybm8gPSByZWFkX2Vycm5vOworCSAgcmV0dXJuIHJlYWRfYnl0ZXM7CisJfQorCisg ICAgICBpZiAoZXJybm8gIT0gRUxPT1ApCisJcmV0dXJuIC0xOworCisgICAgICAvKiByZWFk bGlua2F0IHNhdyBhIG5vbi1zeW1saW5rLCBidXQgZW1hY3Nfb3BlbiBzYXcgYSBzeW1saW5r LgorCSBUaGUgZm9ybWVyIG11c3QgaGF2ZSBiZWVuIHJlbW92ZWQgYW5kIHJlcGxhY2VkIGJ5 IHRoZSBsYXR0ZXIuCisJIFRyeSBhZ2Fpbi4gICovCisgICAgICBRVUlUOwogICAgIH0KLSAg ZWxzZQotICAgIHJldHVybiBRbmlsOwotI2VuZGlmCisKKyAgcmV0dXJuIG5ieXRlczsKIH0K IAogLyogUmV0dXJuIDAgaWYgbm9ib2R5IG93bnMgdGhlIGxvY2sgZmlsZSBMRk5BTUUgb3Ig dGhlIGxvY2sgaXMgb2Jzb2xldGUsCkBAIC00NTEsODMgKzUyNSw3OCBAQAogY3VycmVudF9s b2NrX293bmVyIChsb2NrX2luZm9fdHlwZSAqb3duZXIsIGNoYXIgKmxmbmFtZSkKIHsKICAg aW50IHJldDsKLSAgcHRyZGlmZl90IGxlbjsKICAgbG9ja19pbmZvX3R5cGUgbG9jYWxfb3du ZXI7Ci0gIGludG1heF90IG47Ci0gIGNoYXIgKmF0LCAqZG90LCAqY29sb247Ci0gIExpc3Bf T2JqZWN0IGxmaW5mb19vYmplY3QgPSByZWFkX2xvY2tfZGF0YSAobGZuYW1lKTsKLSAgY2hh ciAqbGZpbmZvOwotICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xOwotCi0gIC8qIElmIG5vbmV4aXN0 ZW50IGxvY2sgZmlsZSwgYWxsIGlzIHdlbGw7IG90aGVyd2lzZSwgZ290IHN0cmFuZ2UgZXJy b3IuICovCi0gIGlmIChOSUxQIChsZmluZm9fb2JqZWN0KSkKLSAgICByZXR1cm4gZXJybm8g PT0gRU5PRU5UID8gMCA6IC0xOwotICBsZmluZm8gPSBTU0RBVEEgKGxmaW5mb19vYmplY3Qp OworICBwdHJkaWZmX3QgbGZpbmZvbGVuOworICBpbnRtYXhfdCBwaWQsIGJvb3RfdGltZTsK KyAgY2hhciAqYXQsICpkb3QsICpjb2xvbiwgKmxmaW5mb19lbmQ7CiAKICAgLyogRXZlbiBp ZiB0aGUgY2FsbGVyIGRvZXNuJ3Qgd2FudCB0aGUgb3duZXIgaW5mbywgd2Ugc3RpbGwgaGF2 ZSB0bwogICAgICByZWFkIGl0IHRvIGRldGVybWluZSByZXR1cm4gdmFsdWUuICAqLwogICBp ZiAoIW93bmVyKQogICAgIG93bmVyID0gJmxvY2FsX293bmVyOwogCisgIC8qIElmIG5vbmV4 aXN0ZW50IGxvY2sgZmlsZSwgYWxsIGlzIHdlbGw7IG90aGVyd2lzZSwgZ290IHN0cmFuZ2Ug ZXJyb3IuICovCisgIGxmaW5mb2xlbiA9IHJlYWRfbG9ja19kYXRhIChsZm5hbWUsIG93bmVy LT51c2VyKTsKKyAgaWYgKGxmaW5mb2xlbiA8IDApCisgICAgcmV0dXJuIGVycm5vID09IEVO T0VOVCA/IDAgOiAtMTsKKyAgaWYgKE1BWF9MRklORk8gPCBsZmluZm9sZW4pCisgICAgcmV0 dXJuIC0xOworICBvd25lci0+dXNlcltsZmluZm9sZW5dID0gMDsKKwogICAvKiBQYXJzZSBV U0VSQEhPU1QuUElEOkJPT1RfVElNRS4gIElmIGNhbid0IHBhcnNlLCByZXR1cm4gLTEuICAq LwogICAvKiBUaGUgVVNFUiBpcyBldmVyeXRoaW5nIGJlZm9yZSB0aGUgbGFzdCBALiAgKi8K LSAgYXQgPSBzdHJyY2hyIChsZmluZm8sICdAJyk7Ci0gIGRvdCA9IHN0cnJjaHIgKGxmaW5m bywgJy4nKTsKLSAgaWYgKCFhdCB8fCAhZG90KQotICAgIHJldHVybiAtMTsKLSAgbGVuID0g YXQgLSBsZmluZm87Ci0gIEdDUFJPMSAobGZpbmZvX29iamVjdCk7Ci0gIG93bmVyLT51c2Vy ID0geG1hbGxvYyAobGVuICsgMSk7Ci0gIG1lbWNweSAob3duZXItPnVzZXIsIGxmaW5mbywg bGVuKTsKLSAgb3duZXItPnVzZXJbbGVuXSA9IDA7CisgIG93bmVyLT5hdCA9IGF0ID0gbWVt cmNociAob3duZXItPnVzZXIsICdAJywgbGZpbmZvbGVuKTsKKyAgaWYgKCFhdCkKKyAgICBy ZXR1cm4gLTE7CisgIG93bmVyLT5kb3QgPSBkb3QgPSBzdHJyY2hyIChhdCwgJy4nKTsKKyAg aWYgKCFkb3QpCisgICAgcmV0dXJuIC0xOwogCiAgIC8qIFRoZSBQSUQgaXMgZXZlcnl0aGlu ZyBmcm9tIHRoZSBsYXN0IGAuJyB0byB0aGUgYDonLiAgKi8KKyAgaWYgKCEgY19pc2RpZ2l0 IChkb3RbMV0pKQorICAgIHJldHVybiAtMTsKICAgZXJybm8gPSAwOwotICBuID0gc3RydG9p bWF4IChkb3QgKyAxLCBOVUxMLCAxMCk7Ci0gIG93bmVyLT5waWQgPQotICAgICgoMCA8PSBu ICYmIG4gPD0gVFlQRV9NQVhJTVVNIChwaWRfdCkKLSAgICAgICYmIChUWVBFX01BWElNVU0g KHBpZF90KSA8IElOVE1BWF9NQVggfHwgZXJybm8gIT0gRVJBTkdFKSkKLSAgICAgPyBuIDog MCk7CisgIHBpZCA9IHN0cnRvaW1heCAoZG90ICsgMSwgJm93bmVyLT5jb2xvbiwgMTApOwor ICBpZiAoZXJybm8gPT0gRVJBTkdFKQorICAgIHBpZCA9IC0xOwogCi0gIGNvbG9uID0gc3Ry Y2hyIChkb3QgKyAxLCAnOicpOwogICAvKiBBZnRlciB0aGUgYDonLCBpZiB0aGVyZSBpcyBv bmUsIGNvbWVzIHRoZSBib290IHRpbWUuICAqLwotICBuID0gMDsKLSAgaWYgKGNvbG9uKQor ICBzd2l0Y2ggKG93bmVyLT5jb2xvblswXSkKICAgICB7Ci0gICAgICBlcnJubyA9IDA7Ci0g ICAgICBuID0gc3RydG9pbWF4IChjb2xvbiArIDEsIE5VTEwsIDEwKTsKKyAgICBjYXNlIDA6 CisgICAgICBib290X3RpbWUgPSAwOworICAgICAgbGZpbmZvX2VuZCA9IG93bmVyLT5jb2xv bjsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSAnOic6CisgICAgICBpZiAoISBjX2lzZGln aXQgKG93bmVyLT5jb2xvblsxXSkpCisJcmV0dXJuIC0xOworICAgICAgYm9vdF90aW1lID0g c3RydG9pbWF4IChvd25lci0+Y29sb24gKyAxLCAmbGZpbmZvX2VuZCwgMTApOworICAgICAg YnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgb3du ZXItPmJvb3RfdGltZSA9Ci0gICAgKCgwIDw9IG4gJiYgbiA8PSBUWVBFX01BWElNVU0gKHRp bWVfdCkKLSAgICAgICYmIChUWVBFX01BWElNVU0gKHRpbWVfdCkgPCBJTlRNQVhfTUFYIHx8 IGVycm5vICE9IEVSQU5HRSkpCi0gICAgID8gbiA6IDApOwotCi0gIC8qIFRoZSBob3N0IGlz IGV2ZXJ5dGhpbmcgaW4gYmV0d2Vlbi4gICovCi0gIGxlbiA9IGRvdCAtIGF0IC0gMTsKLSAg b3duZXItPmhvc3QgPSB4bWFsbG9jIChsZW4gKyAxKTsKLSAgbWVtY3B5IChvd25lci0+aG9z dCwgYXQgKyAxLCBsZW4pOwotICBvd25lci0+aG9zdFtsZW5dID0gMDsKLQotICAvKiBXZSdy ZSBkb25lIGxvb2tpbmcgYXQgdGhlIGxpbmsgaW5mby4gICovCi0gIFVOR0NQUk87CisgIGlm IChsZmluZm9fZW5kICE9IG93bmVyLT51c2VyICsgbGZpbmZvbGVuKQorICAgIHJldHVybiAt MTsKIAogICAvKiBPbiBjdXJyZW50IGhvc3Q/ICAqLwotICBpZiAoU1RSSU5HUCAoRnN5c3Rl bV9uYW1lICgpKQotICAgICAgJiYgc3RyY21wIChvd25lci0+aG9zdCwgU1NEQVRBIChGc3lz dGVtX25hbWUgKCkpKSA9PSAwKQorICBpZiAoU1RSSU5HUCAoVnN5c3RlbV9uYW1lKQorICAg ICAgJiYgZG90IC0gKGF0ICsgMSkgPT0gU0JZVEVTIChWc3lzdGVtX25hbWUpCisgICAgICAm JiBtZW1jbXAgKGF0ICsgMSwgU1NEQVRBIChWc3lzdGVtX25hbWUpLCBTQllURVMgKFZzeXN0 ZW1fbmFtZSkpID09IDApCiAgICAgewotICAgICAgaWYgKG93bmVyLT5waWQgPT0gZ2V0cGlk ICgpKQorICAgICAgaWYgKHBpZCA9PSBnZXRwaWQgKCkpCiAgICAgICAgIHJldCA9IDI7IC8q IFdlIG93biBpdC4gICovCi0gICAgICBlbHNlIGlmIChvd25lci0+cGlkID4gMAotICAgICAg ICAgICAgICAgJiYgKGtpbGwgKG93bmVyLT5waWQsIDApID49IDAgfHwgZXJybm8gPT0gRVBF Uk0pCi0JICAgICAgICYmIChvd25lci0+Ym9vdF90aW1lID09IDAKLQkJICAgfHwgd2l0aGlu X29uZV9zZWNvbmQgKG93bmVyLT5ib290X3RpbWUsIGdldF9ib290X3RpbWUgKCkpKSkKKyAg ICAgIGVsc2UgaWYgKDAgPCBwaWQgJiYgcGlkIDw9IFRZUEVfTUFYSU1VTSAocGlkX3QpCisg ICAgICAgICAgICAgICAmJiAoa2lsbCAocGlkLCAwKSA+PSAwIHx8IGVycm5vID09IEVQRVJN KQorCSAgICAgICAmJiAoYm9vdF90aW1lID09IDAKKwkJICAgfHwgKGJvb3RfdGltZSA8PSBU WVBFX01BWElNVU0gKHRpbWVfdCkKKwkJICAgICAgICYmIHdpdGhpbl9vbmVfc2Vjb25kIChi b290X3RpbWUsIGdldF9ib290X3RpbWUgKCkpKSkpCiAgICAgICAgIHJldCA9IDE7IC8qIEFu IGV4aXN0aW5nIHByb2Nlc3Mgb24gdGhpcyBtYWNoaW5lIG93bnMgaXQuICAqLwotICAgICAg LyogVGhlIG93bmVyIHByb2Nlc3MgaXMgZGVhZCBvciBoYXMgYSBzdHJhbmdlIHBpZCAoPD0w KSwgc28gdHJ5IHRvCisgICAgICAvKiBUaGUgb3duZXIgcHJvY2VzcyBpcyBkZWFkIG9yIGhh cyBhIHN0cmFuZ2UgcGlkLCBzbyB0cnkgdG8KICAgICAgICAgIHphcCB0aGUgbG9ja2ZpbGUu ICAqLwotICAgICAgZWxzZSBpZiAodW5saW5rIChsZm5hbWUpIDwgMCkKLSAgICAgICAgcmV0 ID0gLTE7CiAgICAgICBlbHNlCi0JcmV0ID0gMDsKKyAgICAgICAgcmV0dXJuIHVubGluayAo bGZuYW1lKTsKICAgICB9CiAgIGVsc2UKICAgICB7IC8qIElmIHdlIHdhbnRlZCB0byBzdXBw b3J0IHRoZSBjaGVjayBmb3Igc3RhbGUgbG9ja3Mgb24gcmVtb3RlIG1hY2hpbmVzLApAQCAt NTM1LDExICs2MDQsNiBAQAogICAgICAgcmV0ID0gMTsKICAgICB9CiAKLSAgLyogQXZvaWQg Z2FyYmFnZS4gICovCi0gIGlmIChvd25lciA9PSAmbG9jYWxfb3duZXIgfHwgcmV0IDw9IDAp Ci0gICAgewotICAgICAgRlJFRV9MT0NLX0lORk8gKCpvd25lcik7Ci0gICAgfQogICByZXR1 cm4gcmV0OwogfQogCkBAIC01NTEsMjkgKzYxNSwyNSBAQAogICAgUmV0dXJuIC0xIGlmIGNh bm5vdCBsb2NrIGZvciBhbnkgb3RoZXIgcmVhc29uLiAgKi8KIAogc3RhdGljIGludAotbG9j a19pZl9mcmVlIChsb2NrX2luZm9fdHlwZSAqY2xhc2hlciwgcmVnaXN0ZXIgY2hhciAqbGZu YW1lKQorbG9ja19pZl9mcmVlIChsb2NrX2luZm9fdHlwZSAqY2xhc2hlciwgY2hhciAqbGZu YW1lKQogewotICB3aGlsZSAoISBsb2NrX2ZpbGVfMSAobGZuYW1lLCAwKSkKKyAgaW50IGVy cjsKKyAgd2hpbGUgKChlcnIgPSBsb2NrX2ZpbGVfMSAobGZuYW1lLCAwKSkgPT0gRUVYSVNU KQogICAgIHsKLSAgICAgIGludCBsb2NrZXI7Ci0KLSAgICAgIGlmIChlcnJubyAhPSBFRVhJ U1QpCi0JcmV0dXJuIC0xOwotCi0gICAgICBsb2NrZXIgPSBjdXJyZW50X2xvY2tfb3duZXIg KGNsYXNoZXIsIGxmbmFtZSk7Ci0gICAgICBpZiAobG9ja2VyID09IDIpCi0gICAgICAgIHsK LSAgICAgICAgICBGUkVFX0xPQ0tfSU5GTyAoKmNsYXNoZXIpOwotICAgICAgICAgIHJldHVy biAwOyAgIC8qIFdlIG91cnNlbHZlcyBsb2NrZWQgaXQuICAqLwotICAgICAgICB9Ci0gICAg ICBlbHNlIGlmIChsb2NrZXIgPT0gMSkKLSAgICAgICAgcmV0dXJuIDE7ICAvKiBTb21lb25l IGVsc2UgaGFzIGl0LiAgKi8KLSAgICAgIGVsc2UgaWYgKGxvY2tlciA9PSAtMSkKLQlyZXR1 cm4gLTE7ICAgLyogY3VycmVudF9sb2NrX293bmVyIHJldHVybmVkIHN0cmFuZ2UgZXJyb3Iu ICAqLworICAgICAgc3dpdGNoIChjdXJyZW50X2xvY2tfb3duZXIgKGNsYXNoZXIsIGxmbmFt ZSkpCisJeworCWNhc2UgMjoKKwkgIHJldHVybiAwOyAgIC8qIFdlIG91cnNlbHZlcyBsb2Nr ZWQgaXQuICAqLworCWNhc2UgMToKKwkgIHJldHVybiAxOyAgIC8qIFNvbWVvbmUgZWxzZSBo YXMgaXQuICAqLworCWNhc2UgLTE6CisJICByZXR1cm4gLTE7ICAvKiBjdXJyZW50X2xvY2tf b3duZXIgcmV0dXJuZWQgc3RyYW5nZSBlcnJvci4gICovCisJfQogCiAgICAgICAvKiBXZSBk ZWxldGVkIGEgc3RhbGUgbG9jazsgdHJ5IGFnYWluIHRvIGxvY2sgdGhlIGZpbGUuICAqLwog ICAgIH0KLSAgcmV0dXJuIDA7CisKKyAgcmV0dXJuIGVyciA/IC0xIDogMDsKIH0KIAogLyog bG9ja19maWxlIGxvY2tzIGZpbGUgRk4sCkBAIC02NDUsMTcgKzcwNSwxNiBAQAogICBpZiAo MCA8IGxvY2tfaWZfZnJlZSAoJmxvY2tfaW5mbywgbGZuYW1lKSkKICAgICB7CiAgICAgICAv KiBTb21lb25lIGVsc2UgaGFzIHRoZSBsb2NrLiAgQ29uc2lkZXIgYnJlYWtpbmcgaXQuICAq LwotICAgICAgcHRyZGlmZl90IGxvY2tlcl9zaXplID0gKHN0cmxlbiAobG9ja19pbmZvLnVz ZXIpICsgc3RybGVuIChsb2NrX2luZm8uaG9zdCkKLQkJCSAgICAgICArIElOVF9TVFJMRU5f Qk9VTkQgKHByaW50bWF4X3QpCi0JCQkgICAgICAgKyBzaXplb2YgIkAgKHBpZCApIik7Ci0g ICAgICBjaGFyICpsb2NrZXIgPSBTQUZFX0FMTE9DQSAobG9ja2VyX3NpemUpOwotICAgICAg cHJpbnRtYXhfdCBwaWQgPSBsb2NrX2luZm8ucGlkOwogICAgICAgTGlzcF9PYmplY3QgYXR0 YWNrOwotICAgICAgZXNwcmludGYgKGxvY2tlciwgIiVzQCVzIChwaWQgJSJwTWQiKSIsCi0J CWxvY2tfaW5mby51c2VyLCBsb2NrX2luZm8uaG9zdCwgcGlkKTsKLSAgICAgIEZSRUVfTE9D S19JTkZPIChsb2NrX2luZm8pOwotCi0gICAgICBhdHRhY2sgPSBjYWxsMiAoaW50ZXJuICgi YXNrLXVzZXItYWJvdXQtbG9jayIpLCBmbiwgYnVpbGRfc3RyaW5nIChsb2NrZXIpKTsKKyAg ICAgIGNoYXIgKmRvdCA9IGxvY2tfaW5mby5kb3Q7CisgICAgICBwdHJkaWZmX3QgcGlkbGVu ID0gbG9ja19pbmZvLmNvbG9uIC0gKGRvdCArIDEpOworICAgICAgc3RhdGljIGNoYXIgY29u c3QgcmVwbGFjZW1lbnRbXSA9ICIgKHBpZCAiOworICAgICAgaW50IHJlcGxhY2VtZW50bGVu ID0gc2l6ZW9mIHJlcGxhY2VtZW50IC0gMTsKKyAgICAgIG1lbW1vdmUgKGRvdCArIHJlcGxh Y2VtZW50bGVuLCBkb3QgKyAxLCBwaWRsZW4pOworICAgICAgc3RyY3B5IChkb3QgKyByZXBs YWNlbWVudGxlbiArIHBpZGxlbiwgIikiKTsKKyAgICAgIG1lbWNweSAoZG90LCByZXBsYWNl bWVudCwgcmVwbGFjZW1lbnRsZW4pOworICAgICAgYXR0YWNrID0gY2FsbDIgKGludGVybiAo ImFzay11c2VyLWFib3V0LWxvY2siKSwgZm4sCisJCSAgICAgIGJ1aWxkX3N0cmluZyAobG9j a19pbmZvLnVzZXIpKTsKICAgICAgIC8qIFRha2UgdGhlIGxvY2sgaWYgdGhlIHVzZXIgc2Fp ZCBzby4gICovCiAgICAgICBpZiAoIU5JTFAgKGF0dGFjaykpCiAJbG9ja19maWxlXzEgKGxm bmFtZSwgMSk7CkBAIC03NjAsMTAgKzgxOSw3IEBACiAgIGVsc2UgaWYgKG93bmVyID09IDIp CiAgICAgcmV0ID0gUXQ7CiAgIGVsc2UKLSAgICByZXQgPSBidWlsZF9zdHJpbmcgKGxvY2tl ci51c2VyKTsKLQotICBpZiAob3duZXIgPiAwKQotICAgIEZSRUVfTE9DS19JTkZPIChsb2Nr ZXIpOworICAgIHJldCA9IG1ha2Vfc3RyaW5nIChsb2NrZXIudXNlciwgbG9ja2VyLmF0IC0g bG9ja2VyLnVzZXIpOwogCiAgIFNBRkVfRlJFRSAoKTsKICAgcmV0dXJuIHJldDsKCj09PSBt b2RpZmllZCBmaWxlICdzcmMvdzMyLmMnCi0tLSBzcmMvdzMyLmMJMjAxMy0wMi0yOCAwNjoz MDo0OCArMDAwMAorKysgc3JjL3czMi5jCTIwMTMtMDMtMDUgMDE6NDI6MTIgKzAwMDAKQEAg LTM0MTYsNyArMzQxNiwxMyBAQAogfQogCiBpbnQKLXN5c19yZW5hbWUgKGNvbnN0IGNoYXIg KiBvbGRuYW1lLCBjb25zdCBjaGFyICogbmV3bmFtZSkKK2ZjaG1vZCAoaW50IGZkLCBtb2Rl X3QgbW9kZSkKK3sKKyAgcmV0dXJuIDA7Cit9CisKK2ludAorc3lzX3JlbmFtZV9yZXBsYWNl IChjb25zdCBjaGFyICpvbGRuYW1lLCBjb25zdCBjaGFyICpuZXduYW1lLCBCT09MIGZvcmNl KQogewogICBCT09MIHJlc3VsdDsKICAgY2hhciB0ZW1wW01BWF9QQVRIXTsKQEAgLTM0NzIs NyArMzQ3OCw3IEBACiAJcmV0dXJuIC0xOwogICAgIH0KIAotICAvKiBFbXVsYXRlIFVuaXgg YmVoYXZpb3IgLSBuZXduYW1lIGlzIGRlbGV0ZWQgaWYgaXQgYWxyZWFkeSBleGlzdHMKKyAg LyogSWYgRk9SQ0UsIGVtdWxhdGUgVW5peCBiZWhhdmlvciAtIG5ld25hbWUgaXMgZGVsZXRl ZCBpZiBpdCBhbHJlYWR5IGV4aXN0cwogICAgICAoYXQgbGVhc3QgaWYgaXQgaXMgYSBmaWxl OyBkb24ndCBkbyB0aGlzIGZvciBkaXJlY3RvcmllcykuCiAKICAgICAgU2luY2Ugd2UgbXVz dG4ndCBkbyB0aGlzIGlmIHdlIGFyZSBqdXN0IGNoYW5naW5nIHRoZSBjYXNlIG9mIHRoZQpA QCAtMzQ5MCw3ICszNDk2LDcgQEAKIAogICByZXN1bHQgPSByZW5hbWUgKHRlbXAsIG5ld25h bWUpOwogCi0gIGlmIChyZXN1bHQgPCAwKQorICBpZiAocmVzdWx0IDwgMCAmJiBmb3JjZSkK ICAgICB7CiAgICAgICBEV09SRCB3MzJlcnIgPSBHZXRMYXN0RXJyb3IgKCk7CiAKQEAgLTM1 MzAsNiArMzUzNiwxMiBAQAogfQogCiBpbnQKK3N5c19yZW5hbWUgKGNoYXIgY29uc3QgKm9s ZCwgY2hhciBjb25zdCAqbmV3KQoreworICByZXR1cm4gc3lzX3JlbmFtZV9yZXBsYWNlIChv bGQsIG5ldywgVFJVRSk7Cit9CisKK2ludAogc3lzX3JtZGlyIChjb25zdCBjaGFyICogcGF0 aCkKIHsKICAgcmV0dXJuIF9ybWRpciAobWFwX3czMl9maWxlbmFtZSAocGF0aCwgTlVMTCkp OwoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy93MzIuaCcKLS0tIHNyYy93MzIuaAkyMDEzLTAy LTAyIDE3OjE0OjI0ICswMDAwCisrKyBzcmMvdzMyLmgJMjAxMy0wMy0wNSAwMTo0MjoxMiAr MDAwMApAQCAtMTg2LDYgKzE4Niw4IEBACiBleHRlcm4gdm9pZCBzcmFuZG9tIChpbnQpOwog ZXh0ZXJuIGludCByYW5kb20gKHZvaWQpOwogCitleHRlcm4gaW50IGZjaG1vZCAoaW50LCBt b2RlX3QpOworZXh0ZXJuIGludCBzeXNfcmVuYW1lX3JlcGxhY2UgKGNoYXIgY29uc3QgKiwg Y2hhciBjb25zdCAqLCBCT09MKTsKIGV4dGVybiBpbnQgc3lzX3BpcGUgKGludCAqKTsKIAog ZXh0ZXJuIHZvaWQgc2V0X3Byb2Nlc3NfZGlyIChjaGFyICopOwoK --------------040908020407060001050605-- From debbugs-submit-bounces@debbugs.gnu.org Tue Mar 05 13:38:40 2013 Received: (at 13807) by debbugs.gnu.org; 5 Mar 2013 18:38:40 +0000 Received: from localhost ([127.0.0.1]:32788 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UCwl4-00008h-0K for submit@debbugs.gnu.org; Tue, 05 Mar 2013 13:38:38 -0500 Received: from mtaout20.012.net.il ([80.179.55.166]:63125) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UCwl0-00008R-KF for 13807@debbugs.gnu.org; Tue, 05 Mar 2013 13:38:36 -0500 Received: from conversion-daemon.a-mtaout20.012.net.il by a-mtaout20.012.net.il (HyperSendmail v2007.08) id <0MJ700M00AFI1500@a-mtaout20.012.net.il> for 13807@debbugs.gnu.org; Tue, 05 Mar 2013 20:38:06 +0200 (IST) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by a-mtaout20.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0MJ700LK5AFHW830@a-mtaout20.012.net.il>; Tue, 05 Mar 2013 20:38:06 +0200 (IST) Date: Tue, 05 Mar 2013 20:38:02 +0200 From: Eli Zaretskii Subject: Re: bug#13807: updated version to avoid MS-Windows vs non-MS-Windows clashes In-reply-to: <5135579C.400@cs.ucla.edu> X-012-Sender: halo1@inter.net.il To: Paul Eggert Message-id: <834ngp3d6d.fsf@gnu.org> References: <512A98D5.7080000@cs.ucla.edu> <512D3508.1000906@cs.ucla.edu> <83txoxwq0p.fsf@gnu.org> <51326459.4030001@cs.ucla.edu> <83vc99tsbm.fsf@gnu.org> <51327F29.5000600@cs.ucla.edu> <83ppzgtp2c.fsf@gnu.org> <5133E313.5040701@cs.ucla.edu> <83ip57t8h3.fsf@gnu.org> <5135579C.400@cs.ucla.edu> X-Spam-Score: -1.2 (-) X-Debbugs-Envelope-To: 13807 Cc: 13807@debbugs.gnu.org, monnier@iro.umontreal.ca X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list Reply-To: Eli Zaretskii List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.2 (-) > Date: Mon, 04 Mar 2013 18:25:32 -0800 > From: Paul Eggert > CC: monnier@iro.umontreal.ca, 13807@debbugs.gnu.org > > > This will need a no-op emulation of fchmod for Windows (since a file > > created here will be world-writable anyway). > > OK, thanks. Also, older POSIXish hosts that lack mkstemp won't need > the fchmod either. I added the following to try to address these two points. > Revised complete patch attached, relative to trunk bzr 111938. Thanks, I have 2 more nits. > + while ((nbytes = readlinkat (AT_FDCWD, lfname, lfinfo, MAX_LFINFO + 1)) < 0 > + && errno == EINVAL) > { > - lfinfo[nbytes] = '\0'; > - return build_string (lfinfo); > + int fd = emacs_open (lfname, O_RDONLY | O_BINARY | O_NOFOLLOW, 0); > + if (0 <= fd) > + { > + ptrdiff_t read_bytes = emacs_read (fd, lfinfo, MAX_LFINFO + 1); > + int read_errno = errno; > + if (emacs_close (fd) != 0) > + return -1; > + errno = read_errno; > + return read_bytes; > + } > + > + if (errno != ELOOP) > + return -1; We will need to define away O_NOFOLLOW and ELOOP, to get this to compile on Windows. I think the right place for the former is nt/inc/unistd.h, near O_NOCTTY, and for the latter nt/inc/ms-w32.h, where ENOTSUP is defined. Other than that, I think this is OK. Thanks. From debbugs-submit-bounces@debbugs.gnu.org Tue Mar 05 17:39:20 2013 Received: (at 13807-done) by debbugs.gnu.org; 5 Mar 2013 22:39:20 +0000 Received: from localhost ([127.0.0.1]:33197 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UD0Vw-0007yD-Pk for submit@debbugs.gnu.org; Tue, 05 Mar 2013 17:39:20 -0500 Received: from smtp.cs.ucla.edu ([131.179.128.62]:57502) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UD0Vu-0007xx-3k for 13807-done@debbugs.gnu.org; Tue, 05 Mar 2013 17:39:14 -0500 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id A6F87A600A8; Tue, 5 Mar 2013 14:38:45 -0800 (PST) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 21FWqMKmVX3g; Tue, 5 Mar 2013 14:38:45 -0800 (PST) Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id 37B53A600A7; Tue, 5 Mar 2013 14:38:45 -0800 (PST) Message-ID: <513673F4.2020800@cs.ucla.edu> Date: Tue, 05 Mar 2013 14:38:44 -0800 From: Paul Eggert User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130219 Thunderbird/17.0.3 MIME-Version: 1.0 To: Eli Zaretskii Subject: Re: bug#13807: updated version to avoid MS-Windows vs non-MS-Windows clashes References: <512A98D5.7080000@cs.ucla.edu> <512D3508.1000906@cs.ucla.edu> <83txoxwq0p.fsf@gnu.org> <51326459.4030001@cs.ucla.edu> <83vc99tsbm.fsf@gnu.org> <51327F29.5000600@cs.ucla.edu> <83ppzgtp2c.fsf@gnu.org> <5133E313.5040701@cs.ucla.edu> <83ip57t8h3.fsf@gnu.org> <5135579C.400@cs.ucla.edu> <834ngp3d6d.fsf@gnu.org> In-Reply-To: <834ngp3d6d.fsf@gnu.org> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Score: -2.1 (--) X-Debbugs-Envelope-To: 13807-done Cc: 13807-done@debbugs.gnu.org, monnier@iro.umontreal.ca X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -4.8 (----) On 03/05/13 10:38, Eli Zaretskii wrote: > We will need to define away O_NOFOLLOW and ELOOP, to get this to > compile on Windows. I think the right place for the former is > nt/inc/unistd.h, near O_NOCTTY, and for the latter nt/inc/ms-w32.h, > where ENOTSUP is defined. Thanks, I did the former, but for the latter it's possible ELOOP won't be defined on a (very old) POSIXish host, so I put a conditional definition for it into filelock.c itself, which should work for MS-Windows as well. Installed as trunk bzr 111948 and marking this as done. From unknown Mon Jun 23 02:21:25 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Wed, 03 Apr 2013 11:24:02 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator