From debbugs-submit-bounces@debbugs.gnu.org Wed Mar 13 03:39:46 2013 Received: (at submit) by debbugs.gnu.org; 13 Mar 2013 07:39:46 +0000 Received: from localhost ([127.0.0.1]:50148 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UFgHo-0006MY-3E for submit@debbugs.gnu.org; Wed, 13 Mar 2013 03:39:45 -0400 Received: from eggs.gnu.org ([208.118.235.92]:46394) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UFgHg-0006MH-Uu for submit@debbugs.gnu.org; Wed, 13 Mar 2013 03:39:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UFgGR-0002qV-GB for submit@debbugs.gnu.org; Wed, 13 Mar 2013 03:38:27 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-106.6 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]:37061) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UFgGR-0002qR-CJ for submit@debbugs.gnu.org; Wed, 13 Mar 2013 03:38:19 -0400 Received: from eggs.gnu.org ([208.118.235.92]:57731) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UFgGL-0007Hj-Um for bug-gnu-emacs@gnu.org; Wed, 13 Mar 2013 03:38:19 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UFgGD-0002ok-41 for bug-gnu-emacs@gnu.org; Wed, 13 Mar 2013 03:38:13 -0400 Received: from smtp.cs.ucla.edu ([131.179.128.62]:52390) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UFgGC-0002of-JJ; Wed, 13 Mar 2013 03:38:05 -0400 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id BEDDBA60023; Wed, 13 Mar 2013 00:38:03 -0700 (PDT) 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 a1KiCvvj8nyf; Wed, 13 Mar 2013 00:38:00 -0700 (PDT) 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 D337AA60014; Wed, 13 Mar 2013 00:38:00 -0700 (PDT) Message-ID: <51402CD8.1050005@cs.ucla.edu> Date: Wed, 13 Mar 2013 00:38:00 -0700 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130308 Thunderbird/17.0.4 MIME-Version: 1.0 To: bug-gnu-emacs@gnu.org Subject: file synchronization fixes Content-Type: multipart/mixed; boundary="------------000104000906060006090103" 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 Cc: Eli Zaretskii 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. --------------000104000906060006090103 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Tags: patch The new code for creating regular-file lock files has a problem if the system crashes while the lock file is being created: due to races inside the file system, if the crash occurs at the wrong time the file system may end up with an empty regular-file lock file, which after the reboot will cause Emacs to bypass locking for that file indefinitely (unless the empty lock file is removed manually by the user). On a POSIX-conforming system the problem can occur only if the system crashes just as a lock file is being created. Fixing this requires using a synchronization primitive such as fsync on the newly created file, before renaming it. While looking into this I noticed some other file synchronization problems. fsync is used sometimes when fdatasync will do. Emacs does not consistently retry fsync after being interrupted. It sometimes incorrectly reports an error merely because fsync isn't supported. And it sometimes incorrectly skips fsync merely because we are on a non-BSD system. Attached a patch which I'd like to install. If MS-Windows has fdatasync already this should build on MS-Windows; if not, the MS-Windows port needs to compile lib/fdatasync.c or support an fdatasync substitute in some other way. --------------000104000906060006090103 Content-Type: text/plain; charset=UTF-8; name="fsync.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="fsync.txt" PT09IG1vZGlmaWVkIGZpbGUgJ0NoYW5nZUxvZycKLS0tIENoYW5nZUxvZwkyMDEzLTAzLTEz IDA3OjE1OjE3ICswMDAwCisrKyBDaGFuZ2VMb2cJMjAxMy0wMy0xMyAwNzozMToxNSArMDAw MApAQCAtMSw1ICsxLDEyIEBACiAyMDEzLTAzLTEzICBQYXVsIEVnZ2VydCAgPGVnZ2VydEBj cy51Y2xhLmVkdT4KIAorCUZpbGUgc3luY2hyb25pemF0aW9uIGZpeGVzLgorCSogY29uZmln dXJlLmFjIChCU0RfU1lTVEVNLCBCU0RfU1lTVEVNX0FIQik6IFJlbW92ZTsgbm8gbG9uZ2Vy IG5lZWRlZC4KKwkoZnN5bmMpOiBSZW1vdmUgY2hlY2s7IG5vdyBkb25lIGJ5IGdudWxpYi4K KwkqIGxpYi9mZGF0YXN5bmMuYywgbGliL2ZzeW5jLmMsIG00L2ZkYXRhc3luYy5tNCwgbTQv ZnN5bmMubTQ6CisJTmV3IGZpbGVzLCBmcm9tIGdudWxpYi4KKwkqIGxpYi9nbnVsaWIubWss IG00L2dudWxpYi1jb21wLm00OiBSZWdlbmVyYXRlLgorCiAJTWVyZ2UgZnJvbSBnbnVsaWIs IGluY29ycG9yYXRpbmc6CiAJMjAxMy0wMy0xMyBwdXRlbnY6IHBvcnQgdG8gU29sYXJpcyAx MAogCTIwMTMtMDMtMTIgbWt0aW1lOiBmaXggY29uZmlndXJlIHR5cG8KCj09PSBtb2RpZmll ZCBmaWxlICdhZG1pbi9DUFAtREVGSU5FUycKLS0tIGFkbWluL0NQUC1ERUZJTkVTCTIwMTMt MDItMjUgMDU6NTU6MzcgKzAwMDAKKysrIGFkbWluL0NQUC1ERUZJTkVTCTIwMTMtMDMtMTMg MDU6NTI6NTAgKzAwMDAKQEAgLTksNyArOSw2IEBACiAKIEFJWAogX0FJWAotQlNEX1NZU1RF TQogQ1lHV0lOCQlDb21waWxpbmcgdGhlIEN5Z3dpbiBwb3J0LgogX19DWUdXSU5fXwlEaXR0 bwogR05VX0xJTlVYCkBAIC0xNDksNyArMTQ4LDYgQEAKIEhBVkVfRlJFRUlGQUREUlMKIEhB VkVfRlJFRVRZUEUKIEhBVkVfRlNFRUtPCi1IQVZFX0ZTWU5DCiBIQVZFX0ZVVElNRU5TCiBI QVZFX0ZVVElNRVMKIEhBVkVfRlVUSU1FU0FUCgo9PT0gbW9kaWZpZWQgZmlsZSAnYWRtaW4v Q2hhbmdlTG9nJwotLS0gYWRtaW4vQ2hhbmdlTG9nCTIwMTMtMDMtMTEgMjI6MzI6MDcgKzAw MDAKKysrIGFkbWluL0NoYW5nZUxvZwkyMDEzLTAzLTEzIDA1OjUyOjUwICswMDAwCkBAIC0x LDMgKzEsOSBAQAorMjAxMy0wMy0xMyAgUGF1bCBFZ2dlcnQgIDxlZ2dlcnRAY3MudWNsYS5l ZHU+CisKKwlGaWxlIHN5bmNocm9uaXphdGlvbiBmaXhlcy4KKwkqIENQUC1ERUZJTkVTIChC U0RfU1lTVEVNLCBIQVZFX0ZTWU5DKTogUmVtb3ZlLgorCSogbWVyZ2UtZ251bGliIChHTlVM SUJfTU9EVUxFUyk6IEFkZCBmc3luYywgZmRhdGFzeW5jLgorCiAyMDEzLTAzLTExICBQYXVs IEVnZ2VydCAgPGVnZ2VydEBjcy51Y2xhLmVkdT4KIAogCSogbm90ZXMvdW5pY29kZTogSW1w cm92ZSBub3RlcyBhYm91dCBFbWFjcyBzb3VyY2UgZmlsZSBlbmNvZGluZy4KCj09PSBtb2Rp ZmllZCBmaWxlICdhZG1pbi9tZXJnZS1nbnVsaWInCi0tLSBhZG1pbi9tZXJnZS1nbnVsaWIJ MjAxMy0wMi0xMSAyMzozNzoxOCArMDAwMAorKysgYWRtaW4vbWVyZ2UtZ251bGliCTIwMTMt MDMtMTMgMDU6MjM6NDcgKzAwMDAKQEAgLTI5LDcgKzI5LDggQEAKICAgYWxsb2NhLW9wdCBj LWN0eXBlIGMtc3RyY2FzZQogICBjYXJlYWRsaW5rYXQgY2xvc2Utc3RyZWFtIGNyeXB0by9t ZDUgY3J5cHRvL3NoYTEgY3J5cHRvL3NoYTI1NiBjcnlwdG8vc2hhNTEyCiAgIGR0b2FzdHIg ZHRvdGltZXNwZWMgZHVwMiBlbnZpcm9uIGV4ZWNpbmZvIGZhY2Nlc3NhdAotICBmY250bC1o IGZkb3BlbmRpciBmaWxlbW9kZSBmc3RhdGF0IGdldGxvYWRhdmcgZ2V0b3B0LWdudSBnZXR0 aW1lIGdldHRpbWVvZmRheQorICBmY250bC1oIGZkYXRhc3luYyBmZG9wZW5kaXIgZmlsZW1v ZGUgZnN0YXRhdCBmc3luYworICBnZXRsb2FkYXZnIGdldG9wdC1nbnUgZ2V0dGltZSBnZXR0 aW1lb2ZkYXkKICAgaWdub3JlLXZhbHVlIGludHByb3BzIGxhcmdlZmlsZSBsc3RhdAogICBt YW55d2FybmluZ3MgbWVtcmNociBta3RpbWUKICAgcHNlbGVjdCBwdGhyZWFkX3NpZ21hc2sg cHV0ZW52IHJlYWRsaW5rIHJlYWRsaW5rYXQKCj09PSBtb2RpZmllZCBmaWxlICdjb25maWd1 cmUuYWMnCi0tLSBjb25maWd1cmUuYWMJMjAxMy0wMy0wNiAwODowMTo0NyArMDAwMAorKysg Y29uZmlndXJlLmFjCTIwMTMtMDMtMTMgMDU6NTI6NTAgKzAwMDAKQEAgLTI4NzIsNyArMjg3 Miw3IEBACiB1dGltZXMgZ2V0cmxpbWl0IHNldHJsaW1pdCBzaHV0ZG93biBnZXRhZGRyaW5m byBcCiBzdHJzaWduYWwgc2V0aXRpbWVyIFwKIHNlbmR0byByZWN2ZnJvbSBnZXRzb2NrbmFt ZSBnZXRwZWVybmFtZSBnZXRpZmFkZHJzIGZyZWVpZmFkZHJzIFwKLWdhaV9zdHJlcnJvciBt a3N0ZW1wIGdldGxpbmUgZ2V0ZGVsaW0gZnN5bmMgc3luYyBcCitnYWlfc3RyZXJyb3IgbWtz dGVtcCBnZXRsaW5lIGdldGRlbGltIHN5bmMgXAogZGlmZnRpbWUgcG9zaXhfbWVtYWxpZ24g XAogZ2V0cHdlbnQgZW5kcHdlbnQgZ2V0Z3JlbnQgZW5kZ3JlbnQgXAogdG91Y2hsb2NrIFwK QEAgLTM3NzQsNyArMzc3NCw2IEBACiAKIGRubCBEZWZpbmUgc3ltYm9scyB0byBpZGVudGlm eSB0aGUgdmVyc2lvbiBvZiBVbml4IHRoaXMgaXMuCiBkbmwgRGVmaW5lIGFsbCB0aGUgc3lt Ym9scyB0aGF0IGFwcGx5IGNvcnJlY3RseS4KLUFIX1RFTVBMQVRFKEJTRF9TWVNURU0sIFtE ZWZpbmUgaWYgdGhlIHN5c3RlbSBpcyBjb21wYXRpYmxlIHdpdGggQlNEIDQuMi5dKQogQUhf VEVNUExBVEUoRE9TX05ULCBbRGVmaW5lIGlmIHRoZSBzeXN0ZW0gaXMgTVMgRE9TIG9yIE1T IFdpbmRvd3MuXSkKIEFIX1RFTVBMQVRFKE1TRE9TLCBbRGVmaW5lIGlmIHRoZSBzeXN0ZW0g aXMgTVMgRE9TLl0pCiBBSF9URU1QTEFURShVU0csIFtEZWZpbmUgaWYgdGhlIHN5c3RlbSBp cyBjb21wYXRpYmxlIHdpdGggU3lzdGVtIElJSS5dKQpAQCAtMzc5OCwzMCArMzc5NywxMiBA QAogICAgIDs7CiAKICAgZGFyd2luKQotICAgIGRubCBCU0Q0XzMgYW5kIEJTRDRfNCBhcmUg YWxyZWFkeSBkZWZpbmVkIGluIHN5cy9wYXJhbS5oLgotICAgIEFDX0RFRklORShCU0RfU1lT VEVNLCBbXSkKLSAgICBkbmwgTW9yZSBzcGVjaWZpYyB0aGFuIHRoZSBhYm92ZSB0d28uICBX ZSBjYW5ub3QgdXNlIF9fQVBQTEVfXyBhcyB0aGlzCi0gICAgZG5sIG1heSBub3QgYmUgZGVm aW5lZCBvbiBub24tT1NYIERhcndpbiwgYW5kIHdlIGNhbm5vdCBkZWZpbmUgREFSV0lOCi0g ICAgZG5sIGhlcmUgYmVjYXVzZSBQYW50aGVyIGFuZCBsb3dlciBDb3JlRm91bmRhdGlvbi5o IHVzZXMgREFSV0lOIHRvCisgICAgZG5sIE5vdCBfX0FQUExFX18sIGFzIHRoaXMgbWF5IG5v dCBiZSBkZWZpbmVkIG9uIG5vbi1PU1ggRGFyd2luLgorICAgIGRubCBOb3QgREFSV0lOLCBi ZWNhdXNlIFBhbnRoZXIgYW5kIGxvd2VyIENvcmVGb3VuZGF0aW9uLmggdXNlIERBUldJTiB0 bwogICAgIGRubCBkaXN0aW5ndWlzaCBPUyBYIGZyb20gcHVyZSBEYXJ3aW4uCiAgICAgQUNf REVGSU5FKERBUldJTl9PUywgW10sIFtEZWZpbmUgaWYgdGhlIHN5c3RlbSBpcyBEYXJ3aW4u XSkKICAgICA7OwogCi0gIGZyZWVic2QpCi0gICAgZG5sIEhhY2sgdG8gYXZvaWQgY2FsbGlu ZyBBQ19QUkVQUk9DX0lGRUxTRSBtdWx0aXBsZSB0aW1lcy4KLSAgICBkbmwgV291bGQgbm90 IGJlIG5lZWRlZCB3aXRoIGF1dG9jb25mID49IDIuNjcsIHdoZXJlIHRoZQotICAgIGRubCBw cmVwcm9jZXNzZWQgb3V0cHV0IGlzIGFjY2Vzc2libGUgaW4gImNvbmZ0ZXN0LmkiLgotICAg IEFDX0RFRklORShCU0RfU1lTVEVNX0FIQiwgMSwgW0RlZmluZSBpZiBBSF9CT1RUT00gc2hv dWxkIGNoYW5nZSBCU0RfU1lTVEVNLl0pCi0gICAgOzsKLQotICBnbnUgfCBuZXRic2QgfCBv cGVuYnNkICkKLSAgICBBQ19QUkVQUk9DX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbCi0j aWZuZGVmIEJTRF9TWVNURU0KLSMgZXJyb3IgIkJTRF9TWVNURU0gbm90IGRlZmluZWQiCi0j ZW5kaWYKLSAgICBdXSwgW1tdXSldLCBbXSwgQUNfREVGSU5FKEJTRF9TWVNURU0sIDQzKSAp Ci0gICAgOzsKLQogICBnbnUtbGludXggfCBnbnUta2ZyZWVic2QgKQogICAgIEFDX0RFRklO RShVU0csIFtdKQogICAgIEFDX0RFRklORShHTlVfTElOVVgsIFtdLCBbRGVmaW5lIGlmIHRo cyBzeXN0ZW0gaXMgY29tcGF0aWJsZSB3aXRoIEdOVS9MaW51eC5dKQpAQCAtNDE4NSwxNSAr NDE2Niw4IEBACiAgICBMRF9TV0lUQ0hfU1lTVEVNX1RFTUFDUz0iLWZuby1waWUgLXByZWJp bmQgJGxpYnNfbnNndWkgLVhsaW5rZXIgLWhlYWRlcnBhZCAtWGxpbmtlciAkaGVhZGVycGFk X2V4dHJhIgogCiAgICAjIyBUaGlzIGlzIGhlcmUgYmVjYXVzZSBzcmMvTWFrZWZpbGUuaW4g ZGlkIHNvbWUgZXh0cmEgZmlkZGxpbmcgYXJvdW5kCi0gICAjIyB3aXRoIExEX1NXSVRDSF9T WVNURU0uICBUaGUgY3BwIGxvZ2ljIHdhczoKLSAgICMjICAgI2lmbmRlZiBMRF9TV0lUQ0hf U1lTVEVNCi0gICAjIyAgICNpZiAhZGVmaW5lZCAoX19HTlVDX18pICYmICgoZGVmaW5lZCAo QlNEX1NZU1RFTSkgJiYgIWRlZmluZWQgKENPRkYpKSkKLSAgICMjIFNpbmNlIGFsbCB0aGUg KmJzZHMgZGVmaW5lIExEX1NXSVRDSF9TWVNURU0sIHRoaXMgc2ltcGxpZmllcyB0bzoKLSAg ICMjIG5vdCB1c2luZyBnY2MsIGRhcndpbi4KLSAgICMjIEJlY2F1c2UgdGhpcyB3YXMgZG9u ZSBpbiBzcmMvTWFrZWZpbGUuaW4sIHRoZSByZXN1bHRpbmcgcGFydCBvZgotICAgIyMgTERf U1dJVENIX1NZU1RFTSB3YXMgbm90IHVzZWQgaW4gY29uZmlndXJlIChpZSwgaW4gYWNfbGlu aykuCi0gICAjIyBJdCB0aGVyZWZvcmUgc2VlbXMgY2xlYW5lciB0byBwdXQgdGhpcyBpbiBM RF9TV0lUQ0hfU1lTVEVNX1RFTUFDUywKLSAgICMjIHJhdGhlciB0aGFuIExEX1NXSVRDSF9T WVNURU0uCisgICAjIyB3aXRoIExEX1NXSVRDSF9TWVNURU0uICBJdCBzZWVtcyBjbGVhbmVy IHRvIHB1dCB0aGlzIGluCisgICAjIyBMRF9TV0lUQ0hfU1lTVEVNX1RFTUFDUyBpbnN0ZWFk LAogICAgdGVzdCAieCRMRF9TV0lUQ0hfU1lTVEVNIiA9ICJ4IiAmJiB0ZXN0ICJ4JEdDQyIg IT0gInh5ZXMiICYmIFwKICAgICAgTERfU1dJVENIX1NZU1RFTV9URU1BQ1M9Ii1YICRMRF9T V0lUQ0hfU1lTVEVNX1RFTUFDUyIKICAgIDs7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnbGliLXNy Yy9DaGFuZ2VMb2cnCi0tLSBsaWItc3JjL0NoYW5nZUxvZwkyMDEzLTAzLTEzIDA3OjI3OjM0 ICswMDAwCisrKyBsaWItc3JjL0NoYW5nZUxvZwkyMDEzLTAzLTEzIDA3OjMxOjE1ICswMDAw CkBAIC0xLDUgKzEsMTQgQEAKIDIwMTMtMDMtMTMgIFBhdWwgRWdnZXJ0ICA8ZWdnZXJ0QGNz LnVjbGEuZWR1PgogCisJRmlsZSBzeW5jaHJvbml6YXRpb24gZml4ZXMuCisJKiBNYWtlZmls ZS5pbiAoTElCX0ZEQVRBU1lOQyk6IE5ldyBtYWNyby4KKwkoZW1hY3NjbGllbnQke0VYRUVY VH0pOiBVc2UgaXQuCisJKiBlbWFjc2NsaWVudC5jIChtYWluKTogVXNlIGZkYXRhc3luYywg bm90IGZzeW5jLCBzaW5jZSB3ZSBkb24ndAorCWNhcmUgYWJvdXQgbWV0YWRhdGEuICBLZWVw IHRyeWluZyBpZiBpbnRlcnJ1cHRlZC4KKwkqIG1vdmVtYWlsLmMgKG1haW4sIHBvcG1haWwp OiBEb24ndCB3b3JyeSBhYm91dCBCU0RfU1lTVEVNLCBzaW5jZQorCWZzeW5jIGlzIGF2YWls YWJsZSBldmVyeXdoZXJlIChvciB0aGVyZSBpcyBhIHN1YnN0aXR1dGUpLiAgRG9uJ3QKKwly ZXBvcnQgYW4gZXJyb3IgaWYgZnN5bmMgcmV0dXJucyBFSU5WQUwuCisKIAlTdGF0aWMgY2hl Y2tpbmcgYnkgU3VuIEMgNS4xMi4KIAkqIGV0YWdzLmMgKGFuYWx5c2VfcmVnZXgpOiBPbWl0 IHVucmVhY2hhYmxlIGNvZGUuCiAKCj09PSBtb2RpZmllZCBmaWxlICdsaWItc3JjL01ha2Vm aWxlLmluJwotLS0gbGliLXNyYy9NYWtlZmlsZS5pbgkyMDEzLTAxLTAxIDA5OjExOjA1ICsw MDAwCisrKyBsaWItc3JjL01ha2VmaWxlLmluCTIwMTMtMDMtMTMgMDU6NDI6MjggKzAwMDAK QEAgLTE2MSw2ICsxNjEsOCBAQAogTElCU19NQUlMPUBMSUJTX01BSUxACiAjIyBlbXB0eSBv ciAtbHJ0IG9yIC1scG9zaXg0IGlmIEhBVkVfQ0xPQ0tfR0VUVElNRQogTElCX0NMT0NLX0dF VFRJTUUgPSBATElCX0NMT0NLX0dFVFRJTUVACisjIyBlbXB0eSBvciAtbHJ0IG9yIC1scG9z aXg0IGlmIEhBVkVfRkRBVEFTWU5DCitMSUJfRkRBVEFTWU5DID0gQExJQl9GREFUQVNZTkNA CiAKICMjIEV4dHJhIGxpYnJhcmllcyB0byB1c2Ugd2hlbiBsaW5raW5nIG1vdmVtYWlsLgog TElCU19NT1ZFID0gJChMSUJTX01BSUwpICQoS1JCNExJQikgJChERVNMSUIpICQoS1JCNUxJ QikgJChDUllQVE9MSUIpIFwKQEAgLTMzNCw3ICszMzYsNyBAQAogZW1hY3NjbGllbnQke0VY RUVYVH06ICR7c3JjZGlyfS9lbWFjc2NsaWVudC5jICQoY29uZmlnX2gpCiAJJChDQykgJHtB TExfQ0ZMQUdTfSAke3NyY2Rpcn0vZW1hY3NjbGllbnQuYyBcCiAJICAgLURWRVJTSU9OPSJc IiR7dmVyc2lvbn1cIiIgXAotCSAgICQoTE9BRExJQkVTKSAtbyBlbWFjc2NsaWVudAorCSAg ICQoTE9BRExJQkVTKSAkKExJQl9GREFUQVNZTkMpIC1vIGVtYWNzY2xpZW50CiAKIGhleGwk e0VYRUVYVH06ICR7c3JjZGlyfS9oZXhsLmMgJChjb25maWdfaCkKIAkkKENDKSAke0FMTF9D RkxBR1N9ICR7c3JjZGlyfS9oZXhsLmMgJChMT0FETElCRVMpIC1vIGhleGwKCj09PSBtb2Rp ZmllZCBmaWxlICdsaWItc3JjL2VtYWNzY2xpZW50LmMnCi0tLSBsaWItc3JjL2VtYWNzY2xp ZW50LmMJMjAxMy0wMS0wMiAxNjoxMzowNCArMDAwMAorKysgbGliLXNyYy9lbWFjc2NsaWVu dC5jCTIwMTMtMDMtMTMgMDU6MjM6NDcgKzAwMDAKQEAgLTE3MjQsNyArMTcyNCw4IEBACiAg ICAgICBuZWVkbGYgPSAyOwogICAgIH0KICAgZmZsdXNoIChzdGRvdXQpOwotICBmc3luYyAo MSk7CisgIHdoaWxlIChmZGF0YXN5bmMgKDEpICE9IDAgJiYgZXJybm8gPT0gRUlOVFIpCisg ICAgY29udGludWU7CiAKICAgLyogTm93LCB3YWl0IGZvciBhbiBhbnN3ZXIgYW5kIHByaW50 IGFueSBtZXNzYWdlcy4gICovCiAgIHdoaWxlIChleGl0X3N0YXR1cyA9PSBFWElUX1NVQ0NF U1MpCkBAIC0xODI1LDcgKzE4MjYsOCBAQAogICBpZiAobmVlZGxmKQogICAgIHByaW50ZiAo IlxuIik7CiAgIGZmbHVzaCAoc3Rkb3V0KTsKLSAgZnN5bmMgKDEpOworICB3aGlsZSAoZmRh dGFzeW5jICgxKSAhPSAwICYmIGVycm5vID09IEVJTlRSKQorICAgIGNvbnRpbnVlOwogCiAg IGlmIChybCA8IDApCiAgICAgZXhpdF9zdGF0dXMgPSBFWElUX0ZBSUxVUkU7Cgo9PT0gbW9k aWZpZWQgZmlsZSAnbGliLXNyYy9tb3ZlbWFpbC5jJwotLS0gbGliLXNyYy9tb3ZlbWFpbC5j CTIwMTMtMDMtMTMgMDE6MDU6NDAgKzAwMDAKKysrIGxpYi1zcmMvbW92ZW1haWwuYwkyMDEz LTAzLTEzIDA1OjIzOjQ3ICswMDAwCkBAIC00NjYsMTAgKzQ2Niw4IEBACiAJICB9CiAgICAg ICB9CiAKLSNpZmRlZiBCU0RfU1lTVEVNCi0gICAgICBpZiAoZnN5bmMgKG91dGRlc2MpIDwg MCkKKyAgICAgIGlmIChmc3luYyAob3V0ZGVzYykgIT0gMCAmJiBlcnJubyAhPSBFSU5WQUwp CiAJcGZhdGFsX2FuZF9kZWxldGUgKG91dG5hbWUpOwotI2VuZGlmCiAKICAgICAgIC8qIFBy ZXZlbnQgc3ltbGluayBhdHRhY2tzIHRydW5jYXRpbmcgb3RoZXIgdXNlcnMnIG1haWxib3hl cyAqLwogICAgICAgaWYgKHNldHJlZ2lkICgtMSwgcmVhbF9naWQpIDwgMCkKQEAgLTc1MCwy MSArNzQ4LDE0IEBACiAJfQogICAgIH0KIAotICAvKiBPbiBBRlMsIGEgY2FsbCB0byB3cml0 ZSBvbmx5IG1vZGlmaWVzIHRoZSBmaWxlIGluIHRoZSBsb2NhbAotICAgKiAgICAgd29ya3N0 YXRpb24ncyBBRlMgY2FjaGUuICBUaGUgY2hhbmdlcyBhcmUgbm90IHdyaXR0ZW4gdG8gdGhl IHNlcnZlcgotICAgKiAgICAgIHVudGlsIGEgY2FsbCB0byBmc3luYyBvciBjbG9zZSBpcyBt YWRlLiAgVXNlcnMgd2l0aCBBRlMgaG9tZQotICAgKiAgICAgIGRpcmVjdG9yaWVzIGhhdmUg bG9zdCBtYWlsIHdoZW4gb3ZlciBxdW90YSBiZWNhdXNlIHRoZXNlIGNoZWNrcyB3ZXJlCi0g ICAqICAgICAgbm90IG1hZGUgaW4gcHJldmlvdXMgdmVyc2lvbnMgb2YgbW92ZW1haWwuICov Ci0KLSNpZmRlZiBCU0RfU1lTVEVNCi0gIGlmIChmc3luYyAobWJmaSkgPCAwKQorICBpZiAo ZnN5bmMgKG1iZmkpICE9IDAgJiYgZXJybm8gIT0gRUlOVkFMKQogICAgIHsKICAgICAgIGVy cm9yICgiRXJyb3IgaW4gZnN5bmM6ICVzIiwgc3RyZXJyb3IgKGVycm5vKSwgMCk7CisgICAg ICBjbG9zZSAobWJmaSk7CiAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgIH0KLSNl bmRpZgogCi0gIGlmIChjbG9zZSAobWJmaSkgPT0gLTEpCisgIGlmIChjbG9zZSAobWJmaSkg IT0gMCkKICAgICB7CiAgICAgICBlcnJvciAoIkVycm9yIGluIGNsb3NlOiAlcyIsIHN0cmVy cm9yIChlcnJubyksIDApOwogICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKCj09PSBhZGRl ZCBmaWxlICdsaWIvZmRhdGFzeW5jLmMnCi0tLSBsaWIvZmRhdGFzeW5jLmMJMTk3MC0wMS0w MSAwMDowMDowMCArMDAwMAorKysgbGliL2ZkYXRhc3luYy5jCTIwMTMtMDMtMTMgMDU6MjM6 NDcgKzAwMDAKQEAgLTAsMCArMSwyNyBAQAorLyogRW11bGF0ZSBmZGF0YXN5bmMgb24gcGxh dGZvcm1zIHRoYXQgbGFjayBpdC4KKworICAgQ29weXJpZ2h0IChDKSAyMDExLTIwMTMgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyAgIFRoaXMgbGlicmFyeSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgIG1vZGlmeSBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworICAgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy CisgICB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUgR05VCisgICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisK KyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCisgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwg c2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisKKyNpbmNsdWRlIDxj b25maWcuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKworaW50CitmZGF0YXN5bmMgKGludCBm ZCkKK3sKKyAgLyogVGhpcyBkb2VzIG1vcmUgd29yayB0aGFuIHN0cmljdGx5IG5lY2Vzc2Fy eSwgYnV0IGlzIHRoZSBiZXN0IHdlCisgICAgIGNhbiBkbyBwb3J0YWJseS4gICovCisgIHJl dHVybiBmc3luYyAoZmQpOworfQoKPT09IGFkZGVkIGZpbGUgJ2xpYi9mc3luYy5jJwotLS0g bGliL2ZzeW5jLmMJMTk3MC0wMS0wMSAwMDowMDowMCArMDAwMAorKysgbGliL2ZzeW5jLmMJ MjAxMy0wMy0xMyAwNToyMzo0NyArMDAwMApAQCAtMCwwICsxLDgzIEBACisvKiBFbXVsYXRl IGZzeW5jIG9uIHBsYXRmb3JtcyB0aGF0IGxhY2sgaXQsIHByaW1hcmlseSBXaW5kb3dzIGFu ZAorICAgY3Jvc3MtY29tcGlsZXJzIGxpa2UgTWluR1cuCisKKyAgIFRoaXMgaXMgZGVyaXZl ZCBmcm9tIHNxbGl0ZTMgc291cmNlcy4KKyAgIGh0dHA6Ly93d3cuc3FsaXRlLm9yZy9jdnN0 cmFjL3Jsb2c/Zj1zcWxpdGUvc3JjL29zX3dpbi5jCisgICBodHRwOi8vd3d3LnNxbGl0ZS5v cmcvY29weXJpZ2h0Lmh0bWwKKworICAgV3JpdHRlbiBieSBSaWNoYXJkIFcuTS4gSm9uZXMg PHJqb25lcy5hdC5yZWRoYXQuY29tPgorCisgICBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMyBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworICAgVGhpcyBsaWJyYXJ5IGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgbW9kaWZ5 IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCisgICBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIKKyAgIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZSBHTlUKKyAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K KworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90 LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKworI2luY2x1ZGUg PGNvbmZpZy5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorCisjaWYgKGRlZmluZWQgX1dJTjMy IHx8IGRlZmluZWQgX19XSU4zMl9fKSAmJiAhIGRlZmluZWQgX19DWUdXSU5fXworCisvKiBG bHVzaEZpbGVCdWZmZXJzICovCisjIGRlZmluZSBXSU4zMl9MRUFOX0FORF9NRUFOCisjIGlu Y2x1ZGUgPHdpbmRvd3MuaD4KKworIyBpbmNsdWRlIDxlcnJuby5oPgorCisvKiBHZXQgX2dl dF9vc2ZoYW5kbGUuICAqLworIyBpbmNsdWRlICJtc3ZjLW5vdGhyb3cuaCIKKworaW50Citm c3luYyAoaW50IGZkKQoreworICBIQU5ETEUgaCA9IChIQU5ETEUpIF9nZXRfb3NmaGFuZGxl IChmZCk7CisgIERXT1JEIGVycjsKKworICBpZiAoaCA9PSBJTlZBTElEX0hBTkRMRV9WQUxV RSkKKyAgICB7CisgICAgICBlcnJubyA9IEVCQURGOworICAgICAgcmV0dXJuIC0xOworICAg IH0KKworICBpZiAoIUZsdXNoRmlsZUJ1ZmZlcnMgKGgpKQorICAgIHsKKyAgICAgIC8qIFRy YW5zbGF0ZSBzb21lIFdpbmRvd3MgZXJyb3JzIGludG8gcm91Z2ggYXBwcm94aW1hdGlvbnMg b2YgVW5peAorICAgICAgICogZXJyb3JzLiAgTVNETiBpcyB1c2VsZXNzIGFzIHVzdWFsIC0g aW4gdGhpcyBjYXNlIGl0IGRvZXNuJ3QKKyAgICAgICAqIGRvY3VtZW50IHRoZSBmdWxsIHJh bmdlIG9mIGVycm9ycy4KKyAgICAgICAqLworICAgICAgZXJyID0gR2V0TGFzdEVycm9yICgp OworICAgICAgc3dpdGNoIChlcnIpCisgICAgICAgIHsKKyAgICAgICAgY2FzZSBFUlJPUl9B Q0NFU1NfREVOSUVEOgorICAgICAgICAgIC8qIEZvciBhIHJlYWQtb25seSBoYW5kbGUsIGZz eW5jIHNob3VsZCBzdWNjZWVkLCBldmVuIHRob3VnaCB3ZSBoYXZlCisgICAgICAgICAgICAg bm8gd2F5IHRvIHN5bmMgdGhlIGFjY2Vzcy10aW1lIGNoYW5nZXMuICAqLworICAgICAgICAg IHJldHVybiAwOworCisgICAgICAgICAgLyogZWcuIFRyeWluZyB0byBmc3luYyBhIHR0eS4g Ki8KKyAgICAgICAgY2FzZSBFUlJPUl9JTlZBTElEX0hBTkRMRToKKyAgICAgICAgICBlcnJu byA9IEVJTlZBTDsKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAg ICAgICAgIGVycm5vID0gRUlPOworICAgICAgICB9CisgICAgICByZXR1cm4gLTE7CisgICAg fQorCisgIHJldHVybiAwOworfQorCisjZWxzZSAvKiAhV2luZG93cyAqLworCisjIGVycm9y ICJUaGlzIHBsYXRmb3JtIGxhY2tzIGZzeW5jIGZ1bmN0aW9uLCBhbmQgR251bGliIGRvZXNu J3QgcHJvdmlkZSBhIHJlcGxhY2VtZW50LiBUaGlzIGlzIGEgYnVnIGluIEdudWxpYi4iCisK KyNlbmRpZiAvKiAhV2luZG93cyAqLwoKPT09IG1vZGlmaWVkIGZpbGUgJ2xpYi9nbnVsaWIu bWsnCi0tLSBsaWIvZ251bGliLm1rCTIwMTMtMDItMTEgMjM6Mzc6MTggKzAwMDAKKysrIGxp Yi9nbnVsaWIubWsJMjAxMy0wMy0xMyAwNToyMzo0NyArMDAwMApAQCAtMjEsNyArMjEsNyBA QAogIyB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgYXMgdGhlIHJlc3Qgb2YgdGhhdCBw cm9ncmFtLgogIwogIyBHZW5lcmF0ZWQgYnkgZ251bGliLXRvb2wuCi0jIFJlcHJvZHVjZSBi eTogZ251bGliLXRvb2wgLS1pbXBvcnQgLS1kaXI9LiAtLWxpYj1saWJnbnUgLS1zb3VyY2Ut YmFzZT1saWIgLS1tNC1iYXNlPW00IC0tZG9jLWJhc2U9ZG9jIC0tdGVzdHMtYmFzZT10ZXN0 cyAtLWF1eC1kaXI9YnVpbGQtYXV4IC0tYXZvaWQ9ZHVwIC0tYXZvaWQ9ZXJybm8gLS1hdm9p ZD1mY2hkaXIgLS1hdm9pZD1mY250bCAtLWF2b2lkPWZzdGF0IC0tYXZvaWQ9bWFsbG9jLXBv c2l4IC0tYXZvaWQ9bXN2Yy1pbnZhbCAtLWF2b2lkPW1zdmMtbm90aHJvdyAtLWF2b2lkPW9w ZW4gLS1hdm9pZD1vcGVuYXQtZGllIC0tYXZvaWQ9b3BlbmRpciAtLWF2b2lkPXJhaXNlIC0t YXZvaWQ9c2F2ZS1jd2QgLS1hdm9pZD1zZWxlY3QgLS1hdm9pZD1zaWdwcm9jbWFzayAtLWF2 b2lkPXN5c190eXBlcyAtLWF2b2lkPXRocmVhZGxpYiAtLW1ha2VmaWxlLW5hbWU9Z251bGli Lm1rIC0tY29uZGl0aW9uYWwtZGVwZW5kZW5jaWVzIC0tbm8tbGlidG9vbCAtLW1hY3JvLXBy ZWZpeD1nbCAtLW5vLXZjLWZpbGVzIGFsbG9jYS1vcHQgYy1jdHlwZSBjLXN0cmNhc2UgY2Fy ZWFkbGlua2F0IGNsb3NlLXN0cmVhbSBjcnlwdG8vbWQ1IGNyeXB0by9zaGExIGNyeXB0by9z aGEyNTYgY3J5cHRvL3NoYTUxMiBkdG9hc3RyIGR0b3RpbWVzcGVjIGR1cDIgZW52aXJvbiBl eGVjaW5mbyBmYWNjZXNzYXQgZmNudGwtaCBmZG9wZW5kaXIgZmlsZW1vZGUgZnN0YXRhdCBn ZXRsb2FkYXZnIGdldG9wdC1nbnUgZ2V0dGltZSBnZXR0aW1lb2ZkYXkgaWdub3JlLXZhbHVl IGludHByb3BzIGxhcmdlZmlsZSBsc3RhdCBtYW55d2FybmluZ3MgbWVtcmNociBta3RpbWUg cHNlbGVjdCBwdGhyZWFkX3NpZ21hc2sgcHV0ZW52IHJlYWRsaW5rIHJlYWRsaW5rYXQgc2ln MnN0ciBzb2NrbGVuIHN0YXQtdGltZSBzdGRhbGlnbiBzdGRhcmcgc3RkYm9vbCBzdGRpbyBz dHJmdGltZSBzdHJ0b2ltYXggc3RydG91bWF4IHN5bWxpbmsgc3lzX3N0YXQgc3lzX3RpbWUg dGltZSB0aW1lci10aW1lIHRpbWVzcGVjLWFkZCB0aW1lc3BlYy1zdWIgdW5zZXRlbnYgdXRp bWVucyB3YXJuaW5ncworIyBSZXByb2R1Y2UgYnk6IGdudWxpYi10b29sIC0taW1wb3J0IC0t ZGlyPS4gLS1saWI9bGliZ251IC0tc291cmNlLWJhc2U9bGliIC0tbTQtYmFzZT1tNCAtLWRv Yy1iYXNlPWRvYyAtLXRlc3RzLWJhc2U9dGVzdHMgLS1hdXgtZGlyPWJ1aWxkLWF1eCAtLWF2 b2lkPWR1cCAtLWF2b2lkPWVycm5vIC0tYXZvaWQ9ZmNoZGlyIC0tYXZvaWQ9ZmNudGwgLS1h dm9pZD1mc3RhdCAtLWF2b2lkPW1hbGxvYy1wb3NpeCAtLWF2b2lkPW1zdmMtaW52YWwgLS1h dm9pZD1tc3ZjLW5vdGhyb3cgLS1hdm9pZD1vcGVuIC0tYXZvaWQ9b3BlbmF0LWRpZSAtLWF2 b2lkPW9wZW5kaXIgLS1hdm9pZD1yYWlzZSAtLWF2b2lkPXNhdmUtY3dkIC0tYXZvaWQ9c2Vs ZWN0IC0tYXZvaWQ9c2lncHJvY21hc2sgLS1hdm9pZD1zeXNfdHlwZXMgLS1hdm9pZD10aHJl YWRsaWIgLS1tYWtlZmlsZS1uYW1lPWdudWxpYi5tayAtLWNvbmRpdGlvbmFsLWRlcGVuZGVu Y2llcyAtLW5vLWxpYnRvb2wgLS1tYWNyby1wcmVmaXg9Z2wgLS1uby12Yy1maWxlcyBhbGxv Y2Etb3B0IGMtY3R5cGUgYy1zdHJjYXNlIGNhcmVhZGxpbmthdCBjbG9zZS1zdHJlYW0gY3J5 cHRvL21kNSBjcnlwdG8vc2hhMSBjcnlwdG8vc2hhMjU2IGNyeXB0by9zaGE1MTIgZHRvYXN0 ciBkdG90aW1lc3BlYyBkdXAyIGVudmlyb24gZXhlY2luZm8gZmFjY2Vzc2F0IGZjbnRsLWgg ZmRhdGFzeW5jIGZkb3BlbmRpciBmaWxlbW9kZSBmc3RhdGF0IGZzeW5jIGdldGxvYWRhdmcg Z2V0b3B0LWdudSBnZXR0aW1lIGdldHRpbWVvZmRheSBpZ25vcmUtdmFsdWUgaW50cHJvcHMg bGFyZ2VmaWxlIGxzdGF0IG1hbnl3YXJuaW5ncyBtZW1yY2hyIG1rdGltZSBwc2VsZWN0IHB0 aHJlYWRfc2lnbWFzayBwdXRlbnYgcmVhZGxpbmsgcmVhZGxpbmthdCBzaWcyc3RyIHNvY2ts ZW4gc3RhdC10aW1lIHN0ZGFsaWduIHN0ZGFyZyBzdGRib29sIHN0ZGlvIHN0cmZ0aW1lIHN0 cnRvaW1heCBzdHJ0b3VtYXggc3ltbGluayBzeXNfc3RhdCBzeXNfdGltZSB0aW1lIHRpbWVy LXRpbWUgdGltZXNwZWMtYWRkIHRpbWVzcGVjLXN1YiB1bnNldGVudiB1dGltZW5zIHdhcm5p bmdzCiAKIAogTU9TVExZQ0xFQU5GSUxFUyArPSBjb3JlICouc3RhY2tkdW1wCkBAIC0yOTcs NiArMjk3LDE1IEBACiAKICMjIGVuZCAgIGdudWxpYiBtb2R1bGUgZmNudGwtaAogCisjIyBi ZWdpbiBnbnVsaWIgbW9kdWxlIGZkYXRhc3luYworCisKK0VYVFJBX0RJU1QgKz0gZmRhdGFz eW5jLmMKKworRVhUUkFfbGliZ251X2FfU09VUkNFUyArPSBmZGF0YXN5bmMuYworCisjIyBl bmQgICBnbnVsaWIgbW9kdWxlIGZkYXRhc3luYworCiAjIyBiZWdpbiBnbnVsaWIgbW9kdWxl IGZkb3BlbmRpcgogCiAKQEAgLTMzMiw2ICszNDEsMTUgQEAKIAogIyMgZW5kICAgZ251bGli IG1vZHVsZSBmc3RhdGF0CiAKKyMjIGJlZ2luIGdudWxpYiBtb2R1bGUgZnN5bmMKKworCitF WFRSQV9ESVNUICs9IGZzeW5jLmMKKworRVhUUkFfbGliZ251X2FfU09VUkNFUyArPSBmc3lu Yy5jCisKKyMjIGVuZCAgIGdudWxpYiBtb2R1bGUgZnN5bmMKKwogIyMgYmVnaW4gZ251bGli IG1vZHVsZSBnZXRncm91cHMKIAogaWYgZ2xfR05VTElCX0VOQUJMRURfZ2V0Z3JvdXBzCgo9 PT0gYWRkZWQgZmlsZSAnbTQvZmRhdGFzeW5jLm00JwotLS0gbTQvZmRhdGFzeW5jLm00CTE5 NzAtMDEtMDEgMDA6MDA6MDAgKzAwMDAKKysrIG00L2ZkYXRhc3luYy5tNAkyMDEzLTAzLTEz IDA1OjIzOjQ3ICswMDAwCkBAIC0wLDAgKzEsMzIgQEAKKyMgZmRhdGFzeW5jLm00IHNlcmlh bCA0CitkbmwgQ29weXJpZ2h0IChDKSAyMDA4LTIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCitkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24KK2RubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBj b3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorZG5sIHdpdGggb3Igd2l0aG91dCBtb2RpZmlj YXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworQUNfREVG VU4oW2dsX0ZVTkNfRkRBVEFTWU5DXSwKK1sKKyAgQUNfUkVRVUlSRShbZ2xfVU5JU1REX0hf REVGQVVMVFNdKQorCisgIGRubCBVc2luZyBBQ19DSEVDS19GVU5DU19PTkNFIHdvdWxkIGJy ZWFrIG91ciBzdWJzZXF1ZW50IEFDX1NFQVJDSF9MSUJTCisgIEFDX0NIRUNLX0RFQ0xTX09O Q0UoW2ZkYXRhc3luY10pCisgIExJQl9GREFUQVNZTkM9CisgIEFDX1NVQlNUKFtMSUJfRkRB VEFTWU5DXSkKKworICBpZiB0ZXN0ICRhY19jdl9oYXZlX2RlY2xfZmRhdGFzeW5jID0gbm87 IHRoZW4KKyAgICBIQVZFX0RFQ0xfRkRBVEFTWU5DPTAKKyAgICBkbmwgTWFjIE9TIFggMTAu NyBoYXMgZmRhdGFzeW5jIGJ1dCBkb2VzIG5vdCBkZWNsYXJlIGl0LgorICAgIEFDX0NIRUNL X0ZVTkNTKFtmZGF0YXN5bmNdKQorICAgIGlmIHRlc3QgJGFjX2N2X2Z1bmNfZmRhdGFzeW5j ID0gbm87IHRoZW4KKyAgICAgIEhBVkVfRkRBVEFTWU5DPTAKKyAgICBmaQorICBlbHNlCisg ICAgZG5sIFNvbGFyaXMgPD0gMi42IGhhcyBmZGF0YXN5bmMoKSBpbiBsaWJwb3NpeDQuCisg ICAgZG5sIFNvbGFyaXMgNy4uMTAgaGFzIGl0IGluIGxpYnJ0LgorICAgIGdsX3NhdmVkX2xp YnM9JExJQlMKKyAgICBBQ19TRUFSQ0hfTElCUyhbZmRhdGFzeW5jXSwgW3J0IHBvc2l4NF0s CisgICAgICAgICAgICAgICAgICAgW3Rlc3QgIiRhY19jdl9zZWFyY2hfZmRhdGFzeW5jIiA9 ICJub25lIHJlcXVpcmVkIiB8fAorICAgICAgICAgICAgICAgICAgICBMSUJfRkRBVEFTWU5D PSRhY19jdl9zZWFyY2hfZmRhdGFzeW5jXSkKKyAgICBMSUJTPSRnbF9zYXZlZF9saWJzCisg IGZpCitdKQoKPT09IGFkZGVkIGZpbGUgJ200L2ZzeW5jLm00JwotLS0gbTQvZnN5bmMubTQJ MTk3MC0wMS0wMSAwMDowMDowMCArMDAwMAorKysgbTQvZnN5bmMubTQJMjAxMy0wMy0xMyAw NToyMzo0NyArMDAwMApAQCAtMCwwICsxLDE3IEBACisjIGZzeW5jLm00IHNlcmlhbCAyCitk bmwgQ29weXJpZ2h0IChDKSAyMDA4LTIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCitkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24KK2RubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFu ZC9vciBkaXN0cmlidXRlIGl0LAorZG5sIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25z LCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworQUNfREVGVU4oW2ds X0ZVTkNfRlNZTkNdLAorWworICBBQ19SRVFVSVJFKFtnbF9VTklTVERfSF9ERUZBVUxUU10p CisgIEFDX0NIRUNLX0ZVTkNTX09OQ0UoW2ZzeW5jXSkKKyAgaWYgdGVzdCAkYWNfY3ZfZnVu Y19mc3luYyA9IG5vOyB0aGVuCisgICAgSEFWRV9GU1lOQz0wCisgIGZpCitdKQorCisjIFBy ZXJlcXVpc2l0ZXMgb2YgbGliL2ZzeW5jLmMuCitBQ19ERUZVTihbZ2xfUFJFUkVRX0ZTWU5D XSwgWzpdKQoKPT09IG1vZGlmaWVkIGZpbGUgJ200L2dudWxpYi1jb21wLm00JwotLS0gbTQv Z251bGliLWNvbXAubTQJMjAxMy0wMy0wMSAxNToxNjo0MyArMDAwMAorKysgbTQvZ251bGli LWNvbXAubTQJMjAxMy0wMy0xMyAwNToyMzo0NyArMDAwMApAQCAtNjMsMTAgKzYzLDEyIEBA CiAgICMgQ29kZSBmcm9tIG1vZHVsZSBleHRlcm4taW5saW5lOgogICAjIENvZGUgZnJvbSBt b2R1bGUgZmFjY2Vzc2F0OgogICAjIENvZGUgZnJvbSBtb2R1bGUgZmNudGwtaDoKKyAgIyBD b2RlIGZyb20gbW9kdWxlIGZkYXRhc3luYzoKICAgIyBDb2RlIGZyb20gbW9kdWxlIGZkb3Bl bmRpcjoKICAgIyBDb2RlIGZyb20gbW9kdWxlIGZpbGVtb2RlOgogICAjIENvZGUgZnJvbSBt b2R1bGUgZnBlbmRpbmc6CiAgICMgQ29kZSBmcm9tIG1vZHVsZSBmc3RhdGF0OgorICAjIENv ZGUgZnJvbSBtb2R1bGUgZnN5bmM6CiAgICMgQ29kZSBmcm9tIG1vZHVsZSBnZXRncm91cHM6 CiAgICMgQ29kZSBmcm9tIG1vZHVsZSBnZXRsb2FkYXZnOgogICAjIENvZGUgZnJvbSBtb2R1 bGUgZ2V0b3B0LWdudToKQEAgLTE4Nyw2ICsxODksMTEgQEAKICAgZ2xfTU9EVUxFX0lORElD QVRPUihbZmFjY2Vzc2F0XSkKICAgZ2xfVU5JU1REX01PRFVMRV9JTkRJQ0FUT1IoW2ZhY2Nl c3NhdF0pCiAgIGdsX0ZDTlRMX0gKKyAgZ2xfRlVOQ19GREFUQVNZTkMKKyAgaWYgdGVzdCAk SEFWRV9GREFUQVNZTkMgPSAwOyB0aGVuCisgICAgQUNfTElCT0JKKFtmZGF0YXN5bmNdKQor ICBmaQorICBnbF9VTklTVERfTU9EVUxFX0lORElDQVRPUihbZmRhdGFzeW5jXSkKICAgZ2xf RlVOQ19GRE9QRU5ESVIKICAgaWYgdGVzdCAkSEFWRV9GRE9QRU5ESVIgPSAwIHx8IHRlc3Qg JFJFUExBQ0VfRkRPUEVORElSID0gMTsgdGhlbgogICAgIEFDX0xJQk9CSihbZmRvcGVuZGly XSkKQEAgLTIwNCw2ICsyMTEsMTIgQEAKICAgICBBQ19MSUJPQkooW2ZzdGF0YXRdKQogICBm aQogICBnbF9TWVNfU1RBVF9NT0RVTEVfSU5ESUNBVE9SKFtmc3RhdGF0XSkKKyAgZ2xfRlVO Q19GU1lOQworICBpZiB0ZXN0ICRIQVZFX0ZTWU5DID0gMDsgdGhlbgorICAgIEFDX0xJQk9C SihbZnN5bmNdKQorICAgIGdsX1BSRVJFUV9GU1lOQworICBmaQorICBnbF9VTklTVERfTU9E VUxFX0lORElDQVRPUihbZnN5bmNdKQogICBnbF9HRVRMT0FEQVZHCiAgIGlmIHRlc3QgJEhB VkVfR0VUTE9BREFWRyA9IDA7IHRoZW4KICAgICBBQ19MSUJPQkooW2dldGxvYWRhdmddKQpA QCAtNzQzLDEyICs3NTYsMTQgQEAKICAgbGliL2V4ZWNpbmZvLmluLmgKICAgbGliL2ZhY2Nl c3NhdC5jCiAgIGxpYi9mY250bC5pbi5oCisgIGxpYi9mZGF0YXN5bmMuYwogICBsaWIvZmRv cGVuZGlyLmMKICAgbGliL2ZpbGVtb2RlLmMKICAgbGliL2ZpbGVtb2RlLmgKICAgbGliL2Zw ZW5kaW5nLmMKICAgbGliL2ZwZW5kaW5nLmgKICAgbGliL2ZzdGF0YXQuYworICBsaWIvZnN5 bmMuYwogICBsaWIvZnRvYXN0ci5jCiAgIGxpYi9mdG9hc3RyLmgKICAgbGliL2dldGdyb3Vw cy5jCkBAIC04NDIsMTAgKzg1NywxMiBAQAogICBtNC9mYWNjZXNzYXQubTQKICAgbTQvZmNu dGwtby5tNAogICBtNC9mY250bF9oLm00CisgIG00L2ZkYXRhc3luYy5tNAogICBtNC9mZG9w ZW5kaXIubTQKICAgbTQvZmlsZW1vZGUubTQKICAgbTQvZnBlbmRpbmcubTQKICAgbTQvZnN0 YXRhdC5tNAorICBtNC9mc3luYy5tNAogICBtNC9nZXRncm91cHMubTQKICAgbTQvZ2V0bG9h ZGF2Zy5tNAogICBtNC9nZXRvcHQubTQKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvQ2hhbmdl TG9nJwotLS0gc3JjL0NoYW5nZUxvZwkyMDEzLTAzLTEzIDA3OjI3OjM0ICswMDAwCisrKyBz cmMvQ2hhbmdlTG9nCTIwMTMtMDMtMTMgMDc6MzE6MTUgKzAwMDAKQEAgLTEsNSArMSwxNCBA QAogMjAxMy0wMy0xMyAgUGF1bCBFZ2dlcnQgIDxlZ2dlcnRAY3MudWNsYS5lZHU+CiAKKwlG aWxlIHN5bmNocm9uaXphdGlvbiBmaXhlcy4KKwkqIE1ha2VmaWxlLmluIChMSUJfRkRBVEFT WU5DKTogTmV3IG1hY3JvLgorCShMSUJFUyk6IFVzZSBpdC4KKwkqIGNvbmZfcG9zdC5oIChC U0RfU1lTVEVNLCBCU0RfU1lTVEVNX0FIQik6IFJlbW92ZTsgbm8gbG9uZ2VyIG5lZWRlZC4K KwkqIGZpbGVpby5jIChGd3JpdGVfcmVnaW9uLCB3cml0ZV9yZWdpb25faW5oaWJpdF9mc3lu Yyk6CisJRG9uJ3Qgd29ycnkgYWJvdXQgSEFWRV9GU1lOQywgc2luY2UgYSBzdWJzdGl0dXRl IGZzeW5jIGlzCisJYXZhaWxhYmxlIGlmIHRoZSBzeXN0ZW0gbGFja3Mgb25lLgorCShGd3Jp dGVfcmVnaW4pOiBSZXRyeSBmc3luYyBpZiBpbnRlcnJ1cHRlZC4KKwogCVN0YXRpYyBjaGVj a2luZyBieSBTdW4gQyA1LjEyLgogCSogYWxsb2MuYyAoYnVmZmVyX21lbW9yeV9mdWxsKSBb UkVMX0FMTE9DXToKIAkqIGJ5dGVjb2RlLmMgKGV4ZWNfYnl0ZV9jb2RlKToKCj09PSBtb2Rp ZmllZCBmaWxlICdzcmMvTWFrZWZpbGUuaW4nCi0tLSBzcmMvTWFrZWZpbGUuaW4JMjAxMy0w Mi0yNSAwNTo1NTozNyArMDAwMAorKysgc3JjL01ha2VmaWxlLmluCTIwMTMtMDMtMTMgMDU6 NDI6MjggKzAwMDAKQEAgLTEzOSw2ICsxMzksNyBAQAogCiBMSUJfQ0xPQ0tfR0VUVElNRT1A TElCX0NMT0NLX0dFVFRJTUVACiBMSUJfRUFDQ0VTUz1ATElCX0VBQ0NFU1NACitMSUJfRkRB VEFTWU5DPUBMSUJfRkRBVEFTWU5DQAogTElCX1RJTUVSX1RJTUU9QExJQl9USU1FUl9USU1F QAogCiBEQlVTX0NGTEFHUyA9IEBEQlVTX0NGTEFHU0AKQEAgLTM5MSw3ICszOTIsNyBAQAog TElCRVMgPSAkKExJQlMpICQoVzMyX0xJQlMpICQoTElCU19HTlVTVEVQKSAkKExJQlhfQkFT RSkgJChMSUJJTUFHRSkgXAogICAgJChMSUJYX09USEVSKSAkKExJQlNPVU5EKSBcCiAgICAk KFJTVkdfTElCUykgJChJTUFHRU1BR0lDS19MSUJTKSAkKExJQl9DTE9DS19HRVRUSU1FKSBc Ci0gICAkKExJQl9FQUNDRVNTKSAkKExJQl9USU1FUl9USU1FKSAkKERCVVNfTElCUykgXAor ICAgJChMSUJfRUFDQ0VTUykgJChMSUJfRkRBVEFTWU5DKSAkKExJQl9USU1FUl9USU1FKSAk KERCVVNfTElCUykgXAogICAgJChMSUJfRVhFQ0lORk8pIFwKICAgICQoTElCWE1MMl9MSUJT KSAkKExJQkdQTSkgJChMSUJSRVNPTFYpICQoTElCU19TWVNURU0pIFwKICAgICQoTElCU19U RVJNQ0FQKSAkKEdFVExPQURBVkdfTElCUykgJChTRVRUSU5HU19MSUJTKSAkKExJQlNFTElO VVhfTElCUykgXAoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9jb25mX3Bvc3QuaCcKLS0tIHNy Yy9jb25mX3Bvc3QuaAkyMDEzLTAyLTAxIDA2OjMwOjUxICswMDAwCisrKyBzcmMvY29uZl9w b3N0LmgJMjAxMy0wMy0xMyAwNTo1Mjo1MCArMDAwMApAQCAtNDQsMTkgKzQ0LDYgQEAKICMg ZGVmaW5lIF9faGFzX2F0dHJpYnV0ZShhKSAwIC8qIG5vbi1jbGFuZyAqLwogI2VuZGlmCiAK LS8qIFRoaXMgc2lsZW5jZXMgYSBmZXcgY29tcGlsYXRpb24gd2FybmluZ3Mgb24gRnJlZUJT RC4gICovCi0jaWZkZWYgQlNEX1NZU1RFTV9BSEIKLSN1bmRlZiBCU0RfU1lTVEVNX0FIQgot I3VuZGVmIEJTRF9TWVNURU0KLSNpZiBfX0ZyZWVCU0RfXyA9PSAxCi0jZGVmaW5lIEJTRF9T WVNURU0gMTk5MTAzCi0jZWxpZiBfX0ZyZWVCU0RfXyA9PSAyCi0jZGVmaW5lIEJTRF9TWVNU RU0gMTk5MzA2Ci0jZWxpZiBfX0ZyZWVCU0RfXyA+PSAzCi0jZGVmaW5lIEJTRF9TWVNURU0g MTk5NTA2Ci0jZW5kaWYKLSNlbmRpZgotCiAjaWZkZWYgREFSV0lOX09TCiAjaWZkZWYgZW1h Y3MKICNkZWZpbmUgbWFsbG9jIHVuZXhlY19tYWxsb2MKCj09PSBtb2RpZmllZCBmaWxlICdz cmMvZmlsZWlvLmMnCi0tLSBzcmMvZmlsZWlvLmMJMjAxMy0wMy0xMyAwNzoyNzozNCArMDAw MAorKysgc3JjL2ZpbGVpby5jCTIwMTMtMDMtMTMgMDc6MzE6MTUgKzAwMDAKQEAgLTQ5NTks MjAgKzQ5NTksMjMgQEAKIAogICBpbW1lZGlhdGVfcXVpdCA9IDA7CiAKLSNpZmRlZiBIQVZF X0ZTWU5DCiAgIC8qIGZzeW5jIGFwcGVhcnMgdG8gY2hhbmdlIHRoZSBtb2R0aW1lIG9uIEJT RDQuMi4KICAgICAgRGlzayBmdWxsIGluIE5GUyBtYXkgYmUgcmVwb3J0ZWQgaGVyZS4gICov CiAgIC8qIG1pYiBzYXlzIHRoYXQgY2xvc2luZyB0aGUgZmlsZSB3aWxsIHRyeSB0byB3cml0 ZSBhcyBmYXN0IGFzIE5GUyBjYW4gZG8KICAgICAgaXQsIGFuZCB0aGF0IG1lYW5zIHRoZSBm c3luYyBoZXJlIGlzIG5vdCBjcnVjaWFsIGZvciBhdXRvc2F2ZSBmaWxlcy4gICovCi0gIGlm ICghYXV0b19zYXZpbmcgJiYgIXdyaXRlX3JlZ2lvbl9pbmhpYml0X2ZzeW5jICYmIGZzeW5j IChkZXNjKSA8IDApCisgIGlmICghYXV0b19zYXZpbmcgJiYgIXdyaXRlX3JlZ2lvbl9pbmhp Yml0X2ZzeW5jKQogICAgIHsKLSAgICAgIC8qIElmIGZzeW5jIGZhaWxzIHdpdGggRUlOVFIs IGRvbid0IHRyZWF0IHRoYXQgYXMgc2VyaW91cy4gIEFsc28KKyAgICAgIC8qIFRyYW5zZmVy IGRhdGEgYW5kIG1ldGFkYXRhIHRvIGRpc2ssIHJldHJ5aW5nIGlmIGludGVycnVwdGVkLiAg QWxzbywKIAkgaWdub3JlIEVJTlZBTCB3aGljaCBoYXBwZW5zIHdoZW4gZnN5bmMgaXMgbm90 IHN1cHBvcnRlZCBvbiB0aGlzCiAJIGZpbGUuICAqLwotICAgICAgaWYgKGVycm5vICE9IEVJ TlRSICYmIGVycm5vICE9IEVJTlZBTCkKLQlvayA9IDAsIHNhdmVfZXJybm8gPSBlcnJubzsK KyAgICAgIHdoaWxlIChmc3luYyAoZGVzYykgIT0gMCkKKwlpZiAoZXJybm8gIT0gRUlOVFIp CisJICB7CisJICAgIGlmIChlcnJubyAhPSBFSU5WQUwpCisJICAgICAgb2sgPSAwLCBzYXZl X2Vycm5vID0gZXJybm87CisJICAgIGJyZWFrOworCSAgfQogICAgIH0KLSNlbmRpZgogCiAg IG1vZHRpbWUgPSBpbnZhbGlkX2VtYWNzX3RpbWUgKCk7CiAgIGlmICh2aXNpdGluZykKQEAg LTYwNDYsMTMgKzYwNDksMTEgQEAKIGZpbGUgaXMgdXN1YWxseSBtb3JlIHVzZWZ1bCBpZiBp dCBjb250YWlucyB0aGUgZGVsZXRlZCB0ZXh0LiAgKi8pOwogICBWYXV0b19zYXZlX2luY2x1 ZGVfYmlnX2RlbGV0aW9ucyA9IFFuaWw7CiAKLSNpZmRlZiBIQVZFX0ZTWU5DCiAgIERFRlZB Ul9CT09MICgid3JpdGUtcmVnaW9uLWluaGliaXQtZnN5bmMiLCB3cml0ZV9yZWdpb25faW5o aWJpdF9mc3luYywKIAkgICAgICAgZG9jOiAvKiBOb24tbmlsIG1lYW5zIGRvbid0IGNhbGwg ZnN5bmMgaW4gYHdyaXRlLXJlZ2lvbicuCiBUaGlzIHZhcmlhYmxlIGFmZmVjdHMgY2FsbHMg dG8gYHdyaXRlLXJlZ2lvbicgYXMgd2VsbCBhcyBzYXZlIGNvbW1hbmRzLgogQSBub24tbmls IHZhbHVlIG1heSByZXN1bHQgaW4gZGF0YSBsb3NzISAgKi8pOwogICB3cml0ZV9yZWdpb25f aW5oaWJpdF9mc3luYyA9IDA7Ci0jZW5kaWYKIAogICBERUZWQVJfQk9PTCAoImRlbGV0ZS1i eS1tb3ZpbmctdG8tdHJhc2giLCBkZWxldGVfYnlfbW92aW5nX3RvX3RyYXNoLAogICAgICAg ICAgICAgICAgZG9jOiAvKiBTcGVjaWZpZXMgd2hldGhlciB0byB1c2UgdGhlIHN5c3RlbSdz IHRyYXNoIGNhbi4KCj09PSBtb2RpZmllZCBmaWxlICdzcmMvZmlsZWxvY2suYycKLS0tIHNy Yy9maWxlbG9jay5jCTIwMTMtMDMtMDUgMjI6MzU6NDEgKzAwMDAKKysrIHNyYy9maWxlbG9j ay5jCTIwMTMtMDMtMTMgMDU6MjM6NDcgKzAwMDAKQEAgLTQzNyw2ICs0MzcsMTQgQEAKIAkg IGlmIChlbWFjc193cml0ZSAoZmQsIGxvY2tfaW5mb19zdHIsIGxvY2tfaW5mb19sZW4pICE9 IGxvY2tfaW5mb19sZW4KIAkgICAgICB8fCAobmVlZF9mY2htb2QgJiYgZmNobW9kIChmZCwg d29ybGRfcmVhZGFibGUpICE9IDApKQogCSAgICBlcnIgPSBlcnJubzsKKwkgIGVsc2UKKwkg ICAgd2hpbGUgKGZzeW5jIChmZCkgIT0gMCkKKwkgICAgICBpZiAoZXJybm8gIT0gRUlOVFIp CisJCXsKKwkJICBpZiAoZXJybm8gIT0gRUlOVkFMKQorCQkgICAgZXJyID0gZXJybm87CisJ CSAgYnJlYWs7CisJCX0KIAkgIGlmIChlbWFjc19jbG9zZSAoZmQpICE9IDApCiAJICAgIGVy ciA9IGVycm5vOwogCSAgaWYgKCFlcnIgJiYgcmVuYW1lX2xvY2tfZmlsZSAobm9uY2UsIGxm bmFtZSwgZm9yY2UpICE9IDApCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL3N5c2RlcC5jJwot LS0gc3JjL3N5c2RlcC5jCTIwMTMtMDMtMTMgMDU6MDQ6NDYgKzAwMDAKKysrIHNyYy9zeXNk ZXAuYwkyMDEzLTAzLTEzIDA1OjIzOjQ3ICswMDAwCkBAIC0xMjg5LDEwICsxMjg5LDkgQEAK ICAgaWYgKHR0eV9vdXQtPnRlcm1pbmFsLT5yZXNldF90ZXJtaW5hbF9tb2Rlc19ob29rKQog ICAgIHR0eV9vdXQtPnRlcm1pbmFsLT5yZXNldF90ZXJtaW5hbF9tb2Rlc19ob29rICh0dHlf b3V0LT50ZXJtaW5hbCk7CiAKLSNpZmRlZiBCU0RfU1lTVEVNCiAgIC8qIEF2b2lkIHBvc3Np YmxlIGxvc3Mgb2Ygb3V0cHV0IHdoZW4gY2hhbmdpbmcgdGVybWluYWwgbW9kZXMuICAqLwot ICBmc3luYyAoZmlsZW5vICh0dHlfb3V0LT5vdXRwdXQpKTsKLSNlbmRpZgorICB3aGlsZSAo ZmRhdGFzeW5jIChmaWxlbm8gKHR0eV9vdXQtPm91dHB1dCkpICE9IDAgJiYgZXJybm8gPT0g RUlOVFIpCisgICAgY29udGludWU7CiAKICNpZm5kZWYgRE9TX05UCiAjaWZkZWYgRl9TRVRP V04K --------------000104000906060006090103-- From debbugs-submit-bounces@debbugs.gnu.org Wed Mar 13 14:04:28 2013 Received: (at submit) by debbugs.gnu.org; 13 Mar 2013 18:04:28 +0000 Received: from localhost ([127.0.0.1]:51734 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UFq2O-000610-6P for submit@debbugs.gnu.org; Wed, 13 Mar 2013 14:04:28 -0400 Received: from eggs.gnu.org ([208.118.235.92]:51047) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UFq2L-00060p-TP for submit@debbugs.gnu.org; Wed, 13 Mar 2013 14:04:26 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UFq19-0005bf-TY for submit@debbugs.gnu.org; Wed, 13 Mar 2013 14:03:14 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-101.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_NONE, USER_IN_WHITELIST autolearn=unavailable version=3.3.2 Received: from lists.gnu.org ([208.118.235.17]:59602) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UFq19-0005ba-P7 for submit@debbugs.gnu.org; Wed, 13 Mar 2013 14:03:11 -0400 Received: from eggs.gnu.org ([208.118.235.92]:34119) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UFq14-0001Fh-6n for bug-gnu-emacs@gnu.org; Wed, 13 Mar 2013 14:03:11 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UFq11-0005XB-Pb for bug-gnu-emacs@gnu.org; Wed, 13 Mar 2013 14:03:06 -0400 Received: from mtaout20.012.net.il ([80.179.55.166]:64697) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UFq11-0005WH-Fw for bug-gnu-emacs@gnu.org; Wed, 13 Mar 2013 14:03:03 -0400 Received: from conversion-daemon.a-mtaout20.012.net.il by a-mtaout20.012.net.il (HyperSendmail v2007.08) id <0MJM007001YO6W00@a-mtaout20.012.net.il> for bug-gnu-emacs@gnu.org; Wed, 13 Mar 2013 20:02:58 +0200 (IST) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by a-mtaout20.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0MJM0064T24YKLJ0@a-mtaout20.012.net.il>; Wed, 13 Mar 2013 20:02:58 +0200 (IST) Date: Wed, 13 Mar 2013 20:02:57 +0200 From: Eli Zaretskii Subject: Re: file synchronization fixes In-reply-to: <51402CD8.1050005@cs.ucla.edu> X-012-Sender: halo1@inter.net.il To: Paul Eggert Message-id: <83zjy7i3e6.fsf@gnu.org> References: <51402CD8.1050005@cs.ucla.edu> X-detected-operating-system: by eggs.gnu.org: Solaris 10 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 208.118.235.17 X-Spam-Score: -9.3 (---------) X-Debbugs-Envelope-To: submit Cc: bug-gnu-emacs@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: -9.3 (---------) > Date: Wed, 13 Mar 2013 00:38:00 -0700 > From: Paul Eggert > CC: Eli Zaretskii > > Attached a patch which I'd like to install. If MS-Windows has fdatasync > already this should build on MS-Windows; if not, the MS-Windows port > needs to compile lib/fdatasync.c or support an fdatasync substitute > in some other way. I think all that is needed for the MS-Windows build is this one line: --- nt/inc/ms-w32.h 2013-02-25 17:36:03 +0000 +++ nt/inc/ms-w32.h 2013-03-13 17:57:30 +0000 @@ -225,6 +225,7 @@ extern int sys_unlink (const char *); #define fileno _fileno #endif #define fsync _commit +#define fdatasync _commit #define ftruncate _chsize #define getpid _getpid #ifdef _MSC_VER Thanks. From debbugs-submit-bounces@debbugs.gnu.org Wed Mar 13 14:44:33 2013 Received: (at 13944-done) by debbugs.gnu.org; 13 Mar 2013 18:44:33 +0000 Received: from localhost ([127.0.0.1]:51821 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UFqfA-0006zt-Sp for submit@debbugs.gnu.org; Wed, 13 Mar 2013 14:44:33 -0400 Received: from smtp.cs.ucla.edu ([131.179.128.62]:40648) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UFqf8-0006zR-8Q for 13944-done@debbugs.gnu.org; Wed, 13 Mar 2013 14:44:31 -0400 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 9165FA60024; Wed, 13 Mar 2013 11:43:17 -0700 (PDT) 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 t4nX+FDWCTLS; Wed, 13 Mar 2013 11:43:17 -0700 (PDT) Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id 4EB0AA60014; Wed, 13 Mar 2013 11:43:17 -0700 (PDT) Message-ID: <5140C8C5.8010106@cs.ucla.edu> Date: Wed, 13 Mar 2013 11:43:17 -0700 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: file synchronization fixes References: <51402CD8.1050005@cs.ucla.edu> <83zjy7i3e6.fsf@gnu.org> In-Reply-To: <83zjy7i3e6.fsf@gnu.org> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Score: -3.9 (---) X-Debbugs-Envelope-To: 13944-done Cc: 13944-done@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.7 (----) On 03/13/13 11:02, Eli Zaretskii wrote: > +#define fdatasync _commit Thanks for the quick review. I added that line, pushed it as trunk bzr 112039, and am marking this as done. From unknown Fri Aug 15 18:08:23 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Thu, 11 Apr 2013 11:24:05 +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