From kde-core-devel Sat Aug 11 04:54:29 2001 From: Waldo Bastian Date: Sat, 11 Aug 2001 04:54:29 +0000 To: kde-core-devel Subject: Re: Fwd: Re: 64 bit file support X-MARC-Message: https://marc.info/?l=kde-core-devel&m=99750583203115 MIME-Version: 1 Content-Type: multipart/mixed; boundary="--------------Boundary-00=_TA0W98T12LWTFAM22NBO" --------------Boundary-00=_TA0W98T12LWTFAM22NBO Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 8bit On Friday 10 August 2001 02:35 pm, Waldo Bastian wrote: > On Friday 10 August 2001 11:53 am, Waldo Bastian wrote: > > This solution won't work under Linux, though. Linux headers define > > "struct stat" based on the value of _FILE_OFFSET_BITS. If you place the > > line "#define _FILE_OFFSET_BITS 64" prior to any #include's in your > > source, you get the 64 bit version, otherwise you get the 32 bit version. [Snip] > The solution to this seems to be to define _LARGEFILE_SOURCE and > _LARGEFILE64_SOURCE and to leave _FILE_OFFSET_BITS undefined. You should > then be able to use stat64() and other 64-bit versions of the stdio > functions. The normal functions remain 32-bit then. That also means that > you have to use "struct stat64" instead of "struct stat". Which then leads to the following patch. largefile.h goes into kdelibs/kio. Note that the current file io-slave already does support 64-bit files on linux and 64-bit platforms. With this patch it should also do this on all other 32-bit platforms that support 64-bit files. kio/largefile.h contains a bunch of defines that might be usefull in other places of KDE as well. We should probably move it to kdecore so that all of KDE can use it. The API hasn't changed yet so although > 2GB files should now be reported, they will still have the wrong size. Please test. Cheers, Waldo -- KDE 2.2: We deliver. --------------Boundary-00=_TA0W98T12LWTFAM22NBO Content-Type: text/x-c; charset="iso-8859-1"; name="largefile.h" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="largefile.h" I2luY2x1ZGUgPHVuaXN0ZC5oPgoKI2lmZGVmIF9MRlM2NF9MQVJHRUZJTEUKI2RlZmluZSBLSU9f c3RhdAkJOjpzdGF0NjQKI2RlZmluZSBLSU9fbHN0YXQJCTo6bHN0YXQ2NAojZGVmaW5lIEtJT19m c3RhdAkJOjpmc3RhdDY0CiNkZWZpbmUgS0lPX29wZW4JCTo6b3BlbjY0CiNkZWZpbmUgS0lPX2xz ZWVrCQk6OmxzZWVrNjQKI2RlZmluZSBLSU9fcmVhZGRpcgkJOjpyZWFkZGlyNjQKI2RlZmluZSBL SU9fc3RydWN0X3N0YXQgCXN0cnVjdCBzdGF0NjQKI2RlZmluZSBLSU9fc3RydWN0X2RpcmVudAlz dHJ1Y3QgZGlyZW50NjQKI2Vsc2UKI2RlZmluZSBLSU9fc3RhdAkJOjpzdGF0CiNkZWZpbmUgS0lP X2xzdGF0CQk6OmxzdGF0CiNkZWZpbmUgS0lPX2ZzdGF0CQk6OmZzdGF0CiNkZWZpbmUgS0lPX29w ZW4JCTo6b3BlbgojZGVmaW5lIEtJT19sc2VlawkJOjpsc2VlawojZGVmaW5lIEtJT19yZWFkZGly CQk6OnJlYWRkaXIKI2RlZmluZSBLSU9fc3RydWN0X3N0YXQgCXN0cnVjdCBzdGF0CiNkZWZpbmUg S0lPX3N0cnVjdF9kaXJlbnQJc3RydWN0IGRpcmVudAojZW5kaWYKCiNpZmRlZiBfTEZTNjRfU1RE SU8KI2RlZmluZSBLSU9fZm9wZW4JCWZvcGVuNjQKI2Vsc2UKI2RlZmluZSBLSU9fZm9wZW4JCWZv cGVuCiNlbmRpZgo= --------------Boundary-00=_TA0W98T12LWTFAM22NBO Content-Type: text/x-diff; charset="iso-8859-1"; name="file.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="file.diff" SW5kZXg6IE1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9ob21lL2tkZS9rZGVsaWJz L2tpby9maWxlL01ha2VmaWxlLmFtLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjIwCmRpZmYgLXUg LTMgLWQgLXAgLXIxLjIwIE1ha2VmaWxlLmFtCi0tLSBNYWtlZmlsZS5hbQkyMDAxLzA1LzE0IDEx OjU5OjEyCTEuMjAKKysrIE1ha2VmaWxlLmFtCTIwMDEvMDgvMTEgMDQ6NDQ6NDAKQEAgLTEsNSAr MSw3IEBACiAjIyBNYWtlZmlsZS5hbSBvZiBrZGViYXNlL2tpb3NsYXZlL2ZpbGUKIAorQU1fQ1BQ RkxBR1MgPSAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UKKwogSU5DTFVERVMgPSAtSSQoc3JjZGlyKS8u LiAtSSQoc3JjZGlyKS8uLi8uLiAkKGFsbF9pbmNsdWRlcykKIAogIyMjIyMjIyBGaWxlcwpJbmRl eDogZmlsZS5jYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvaG9tZS9rZGUva2RlbGlicy9raW8vZmls ZS9maWxlLmNjLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjExMApkaWZmIC11IC0zIC1kIC1wIC1y MS4xMTAgZmlsZS5jYwotLS0gZmlsZS5jYwkyMDAxLzA3LzE4IDIxOjMyOjUxCTEuMTEwCisrKyBm aWxlLmNjCTIwMDEvMDgvMTEgMDQ6NDQ6NDAKQEAgLTIsMTYgKzIsNiBAQAogCiAjaW5jbHVkZSA8 Y29uZmlnLmg+CiAKLSNpZmRlZiBfX2xpbnV4X18KLSNpZm5kZWYgX0dOVV9TT1VSQ0UKLSNkZWZp bmUgX0dOVV9TT1VSQ0UKLSNlbmRpZgotI2lmbmRlZiBfRklMRV9PRkZTRVRfQklUUwotI2RlZmlu ZSBfRklMRV9PRkZTRVRfQklUUyA2NAotI2VuZGlmCi0jaW5jbHVkZSA8ZmVhdHVyZXMuaD4KLSNl bmRpZgotCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaW5jbHVkZSA8c3lzL3dhaXQuaD4KICNp bmNsdWRlIDxzeXMvc3RhdC5oPgpAQCAtNTUsNiArNDUsNyBAQAogI2VuZGlmCiAKICNpbmNsdWRl IDxraW8vaW9zbGF2ZV9kZWZhdWx0cy5oPgorI2luY2x1ZGUgPGtpby9sYXJnZWZpbGUuaD4KICNp bmNsdWRlIDxrZ2xvYmFsLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBLSU87CkBAIC0xMDUsOCArOTYs OCBAQCB2b2lkIEZpbGVQcm90b2NvbDo6Y2htb2QoIGNvbnN0IEtVUkwmIHVyCiB2b2lkIEZpbGVQ cm90b2NvbDo6bWtkaXIoIGNvbnN0IEtVUkwmIHVybCwgaW50IHBlcm1pc3Npb25zICkKIHsKICAg ICBRQ1N0cmluZyBfcGF0aCggUUZpbGU6OmVuY29kZU5hbWUodXJsLnBhdGgoKSkpOwotICAgIHN0 cnVjdCBzdGF0IGJ1ZmY7Ci0gICAgaWYgKCA6OnN0YXQoIF9wYXRoLmRhdGEoKSwgJmJ1ZmYgKSA9 PSAtMSApIHsKKyAgICBLSU9fc3RydWN0X3N0YXQgYnVmZjsKKyAgICBpZiAoIEtJT19zdGF0KCBf cGF0aC5kYXRhKCksICZidWZmICkgPT0gLTEgKSB7CiAJaWYgKCA6Om1rZGlyKCBfcGF0aC5kYXRh KCksIDA3NzcgLyp1bWFzayB3aWxsIGJlIGFwcGxpZWQqLyApICE9IDAgKSB7CiAJICAgIGlmICgg ZXJybm8gPT0gRUFDQ0VTICkgewogCQllcnJvciggS0lPOjpFUlJfQUNDRVNTX0RFTklFRCwgdXJs LnBhdGgoKSApOwpAQCAtMTM2LDggKzEyNyw4IEBAIHZvaWQgRmlsZVByb3RvY29sOjpta2Rpcigg Y29uc3QgS1VSTCYgdXIKIHZvaWQgRmlsZVByb3RvY29sOjpnZXQoIGNvbnN0IEtVUkwmIHVybCAp CiB7CiAgICAgUUNTdHJpbmcgX3BhdGgoIFFGaWxlOjplbmNvZGVOYW1lKHVybC5wYXRoKCkpKTsK LSAgICBzdHJ1Y3Qgc3RhdCBidWZmOwotICAgIGlmICggOjpzdGF0KCBfcGF0aC5kYXRhKCksICZi dWZmICkgPT0gLTEgKSB7CisgICAgS0lPX3N0cnVjdF9zdGF0IGJ1ZmY7CisgICAgaWYgKCBLSU9f c3RhdCggX3BhdGguZGF0YSgpLCAmYnVmZiApID09IC0xICkgewogICAgICAgICBpZiAoIGVycm5v ID09IEVBQ0NFUyApCiAgICAgICAgICAgIGVycm9yKCBLSU86OkVSUl9BQ0NFU1NfREVOSUVELCB1 cmwucGF0aCgpICk7CiAgICAgICAgIGVsc2UKQEAgLTE1NCw3ICsxNDUsNyBAQCB2b2lkIEZpbGVQ cm90b2NvbDo6Z2V0KCBjb25zdCBLVVJMJiB1cmwgCiAJcmV0dXJuOwogICAgIH0KIAotICAgIGlu dCBmZCA9IG9wZW4oIF9wYXRoLmRhdGEoKSwgT19SRE9OTFkpOworICAgIGludCBmZCA9IEtJT19v cGVuKCBfcGF0aC5kYXRhKCksIE9fUkRPTkxZKTsKICAgICBpZiAoIGZkIDwgMCApIHsKIAllcnJv ciggS0lPOjpFUlJfQ0FOTk9UX09QRU5fRk9SX1JFQURJTkcsIHVybC5wYXRoKCkgKTsKIAlyZXR1 cm47CkBAIC0yMzcsOCArMjI4LDggQEAgdm9pZCBGaWxlUHJvdG9jb2w6OnB1dCggY29uc3QgS1VS TCYgdXJsLAogCiAgICAgYm9vbCBiTWFya1BhcnRpYWwgPSBjb25maWcoKS0+cmVhZEJvb2xFbnRy eSgiTWFya1BhcnRpYWwiLCB0cnVlKTsKIAotICAgIHN0cnVjdCBzdGF0IGJ1ZmZfb3JpZzsKLSAg ICBib29sIG9yaWdfZXhpc3RzID0gKCA6OnN0YXQoIF9kZXN0X29yaWcuZGF0YSgpLCAmYnVmZl9v cmlnICkgIT0gLTEgKTsKKyAgICBLSU9fc3RydWN0X3N0YXQgYnVmZl9vcmlnOworICAgIGJvb2wg b3JpZ19leGlzdHMgPSAoIEtJT19zdGF0KCBfZGVzdF9vcmlnLmRhdGEoKSwgJmJ1ZmZfb3JpZyAp ICE9IC0xICk7CiAgICAgaWYgKCBvcmlnX2V4aXN0cyAmJiAgIV9vdmVyd3JpdGUgJiYgIV9yZXN1 bWUpCiAgICAgewogICAgICAgICBpZiAoU19JU0RJUihidWZmX29yaWcuc3RfbW9kZSkpCkBAIC0y NTQsOCArMjQ1LDggQEAgdm9pZCBGaWxlUHJvdG9jb2w6OnB1dCggY29uc3QgS1VSTCYgdXJsLAog ICAgICAgICBrZERlYnVnKDcxMDEpIDw8ICJBcHBlbmRpbmcgLnBhcnQgZXh0ZW5zaW9uIHRvICIg PDwgZGVzdF9vcmlnIDw8IGVuZGw7CiAgICAgICAgIGRlc3QgPSBkZXN0X3BhcnQ7CiAKLSAgICAg ICAgc3RydWN0IHN0YXQgYnVmZl9wYXJ0OwotICAgICAgICBib29sIHBhcnRfZXhpc3RzID0gKCA6 OnN0YXQoIF9kZXN0X3BhcnQuZGF0YSgpLCAmYnVmZl9wYXJ0ICkgIT0gLTEgKTsKKyAgICAgICAg S0lPX3N0cnVjdF9zdGF0IGJ1ZmZfcGFydDsKKyAgICAgICAgYm9vbCBwYXJ0X2V4aXN0cyA9ICgg S0lPX3N0YXQoIF9kZXN0X3BhcnQuZGF0YSgpLCAmYnVmZl9wYXJ0ICkgIT0gLTEgKTsKICAgICAg ICAgaWYgKCBwYXJ0X2V4aXN0cyAmJiAhX3Jlc3VtZSAmJiBidWZmX3BhcnQuc3Rfc2l6ZSA+IDAg KQogICAgICAgICB7CiAgICAgICAgICAgICBrZERlYnVnKCkgPDwgIkZpbGVQcm90b2NvbDo6cHV0 IDogY2FsbGluZyBjYW5SZXN1bWUgd2l0aCAiIDw8ICh1bnNpZ25lZCBsb25nKWJ1ZmZfcGFydC5z dF9zaXplIDw8IGVuZGw7CkBAIC0yOTMsOCArMjg0LDggQEAgdm9pZCBGaWxlUHJvdG9jb2w6OnB1 dCggY29uc3QgS1VSTCYgdXJsLAogICAgIGludCBmZDsKIAogICAgIGlmICggX3Jlc3VtZSApIHsK LSAgICAgICAgZmQgPSBvcGVuKCBfZGVzdC5kYXRhKCksIE9fUkRXUiApOyAgLy8gYXBwZW5kIGlm IHJlc3VtaW5nCi0gICAgICAgIGxzZWVrKGZkLCAwLCBTRUVLX0VORCk7IC8vIFNlZWsgdG8gZW5k CisgICAgICAgIGZkID0gS0lPX29wZW4oIF9kZXN0LmRhdGEoKSwgT19SRFdSICk7ICAvLyBhcHBl bmQgaWYgcmVzdW1pbmcKKyAgICAgICAgS0lPX2xzZWVrKGZkLCAwLCBTRUVLX0VORCk7IC8vIFNl ZWsgdG8gZW5kCiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gV0FCQTogTWFrZSBzdXJlIHRoYXQg d2Uga2VlcCB3cml0aW5nIHBlcm1pc3Npb25zIG91cnNlbHZlcywKICAgICAgICAgLy8gb3RoZXJ3 aXNlIHdlIGNhbiBiZSBpbiBmb3IgYSBzdXJwcmlzZSBvbiBORlMuCkBAIC0zMDQsNyArMjk1LDcg QEAgdm9pZCBGaWxlUHJvdG9jb2w6OnB1dCggY29uc3QgS1VSTCYgdXJsLAogICAgICAgICBlbHNl CiAgICAgICAgICAgIGluaXRpYWxNb2RlID0gMDY2NjsKIAotICAgICAgICBmZCA9IG9wZW4oX2Rl c3QuZGF0YSgpLCBPX0NSRUFUIHwgT19UUlVOQyB8IE9fV1JPTkxZLCBpbml0aWFsTW9kZSk7Cisg ICAgICAgIGZkID0gS0lPX29wZW4oX2Rlc3QuZGF0YSgpLCBPX0NSRUFUIHwgT19UUlVOQyB8IE9f V1JPTkxZLCBpbml0aWFsTW9kZSk7CiAgICAgfQogCiAgICAgaWYgKCBmZCA8IDAgKSB7CkBAIC0z NTQsOCArMzQ1LDggQEAgdm9pZCBGaWxlUHJvdG9jb2w6OnB1dCggY29uc3QgS1VSTCYgdXJsLAog CSAgIHJlbW92ZShfZGVzdC5kYXRhKCkpOwogICAgICAgICB9IGVsc2UgaWYgKGJNYXJrUGFydGlh bCkKICAgICAgICAgewotICAgICAgICAgICBzdHJ1Y3Qgc3RhdCBidWZmOwotICAgICAgICAgICBp ZiAoKCA6OnN0YXQoIF9kZXN0LmRhdGEoKSwgJmJ1ZmYgKSA9PSAtMSApIHx8CisgICAgICAgICAg IEtJT19zdHJ1Y3Rfc3RhdCBidWZmOworICAgICAgICAgICBpZiAoKCBLSU9fc3RhdCggX2Rlc3Qu ZGF0YSgpLCAmYnVmZiApID09IC0xICkgfHwKICAgICAgICAgICAgICAgICggYnVmZi5zdF9zaXpl IDwgY29uZmlnKCktPnJlYWROdW1FbnRyeSgiTWluaW11bUtlZXBTaXplIiwgREVGQVVMVF9NSU5J TVVNX0tFRVBfU0laRSkgKSkKICAgICAgICAgICAgewogCSAgICAgICByZW1vdmUoX2Rlc3QuZGF0 YSgpKTsKQEAgLTQwMCw4ICszOTEsOCBAQCB2b2lkIEZpbGVQcm90b2NvbDo6Y29weSggY29uc3Qg S1VSTCAmc3JjCiB7CiAgICAgUUNTdHJpbmcgX3NyYyggUUZpbGU6OmVuY29kZU5hbWUoc3JjLnBh dGgoKSkpOwogICAgIFFDU3RyaW5nIF9kZXN0KCBRRmlsZTo6ZW5jb2RlTmFtZShkZXN0LnBhdGgo KSkpOwotICAgIHN0cnVjdCBzdGF0IGJ1ZmZfc3JjOwotICAgIGlmICggOjpzdGF0KCBfc3JjLmRh dGEoKSwgJmJ1ZmZfc3JjICkgPT0gLTEgKSB7CisgICAgS0lPX3N0cnVjdF9zdGF0IGJ1ZmZfc3Jj OworICAgIGlmICggS0lPX3N0YXQoIF9zcmMuZGF0YSgpLCAmYnVmZl9zcmMgKSA9PSAtMSApIHsK ICAgICAgICAgaWYgKCBlcnJubyA9PSBFQUNDRVMgKQogICAgICAgICAgICBlcnJvciggS0lPOjpF UlJfQUNDRVNTX0RFTklFRCwgc3JjLnBhdGgoKSApOwogICAgICAgICBlbHNlCkBAIC00MTgsOCAr NDA5LDggQEAgdm9pZCBGaWxlUHJvdG9jb2w6OmNvcHkoIGNvbnN0IEtVUkwgJnNyYwogCXJldHVy bjsKICAgICB9CiAKLSAgICBzdHJ1Y3Qgc3RhdCBidWZmX2Rlc3Q7Ci0gICAgYm9vbCBkZXN0X2V4 aXN0cyA9ICggOjpzdGF0KCBfZGVzdC5kYXRhKCksICZidWZmX2Rlc3QgKSAhPSAtMSApOworICAg IEtJT19zdHJ1Y3Rfc3RhdCBidWZmX2Rlc3Q7CisgICAgYm9vbCBkZXN0X2V4aXN0cyA9ICggS0lP X3N0YXQoIF9kZXN0LmRhdGEoKSwgJmJ1ZmZfZGVzdCApICE9IC0xICk7CiAgICAgaWYgKCBkZXN0 X2V4aXN0cyApCiAgICAgewogICAgICAgICBpZiAoU19JU0RJUihidWZmX2Rlc3Quc3RfbW9kZSkp CkBAIC00MzUsNyArNDI2LDcgQEAgdm9pZCBGaWxlUHJvdG9jb2w6OmNvcHkoIGNvbnN0IEtVUkwg JnNyYwogICAgICAgICB9CiAgICAgfQogCi0gICAgaW50IHNyY19mZCA9IG9wZW4oIF9zcmMuZGF0 YSgpLCBPX1JET05MWSk7CisgICAgaW50IHNyY19mZCA9IEtJT19vcGVuKCBfc3JjLmRhdGEoKSwg T19SRE9OTFkpOwogICAgIGlmICggc3JjX2ZkIDwgMCApIHsKIAllcnJvciggS0lPOjpFUlJfQ0FO Tk9UX09QRU5fRk9SX1JFQURJTkcsIHNyYy5wYXRoKCkgKTsKIAlyZXR1cm47CkBAIC00NDksNyAr NDQwLDcgQEAgdm9pZCBGaWxlUHJvdG9jb2w6OmNvcHkoIGNvbnN0IEtVUkwgJnNyYwogICAgIGVs c2UKICAgICAgICBpbml0aWFsTW9kZSA9IDA2NjY7CiAKLSAgICBpbnQgZGVzdF9mZCA9IG9wZW4o X2Rlc3QuZGF0YSgpLCBPX0NSRUFUIHwgT19UUlVOQyB8IE9fV1JPTkxZLCBpbml0aWFsTW9kZSk7 CisgICAgaW50IGRlc3RfZmQgPSBLSU9fb3BlbihfZGVzdC5kYXRhKCksIE9fQ1JFQVQgfCBPX1RS VU5DIHwgT19XUk9OTFksIGluaXRpYWxNb2RlKTsKICAgICBpZiAoIGRlc3RfZmQgPCAwICkgewog CWtkRGVidWcoNzEwMSkgPDwgIiMjIyMjIyBDT1VMRCBOT1QgV1JJVEUgIiA8PCBkZXN0LnVybCgp IDw8IGVuZGw7CiAgICAgICAgIGlmICggZXJybm8gPT0gRUFDQ0VTICkgewpAQCAtNTQ3LDggKzUz OCw4IEBAIHZvaWQgRmlsZVByb3RvY29sOjpyZW5hbWUoIGNvbnN0IEtVUkwgJnMKIHsKICAgICBR Q1N0cmluZyBfc3JjKCBRRmlsZTo6ZW5jb2RlTmFtZShzcmMucGF0aCgpKSk7CiAgICAgUUNTdHJp bmcgX2Rlc3QoIFFGaWxlOjplbmNvZGVOYW1lKGRlc3QucGF0aCgpKSk7Ci0gICAgc3RydWN0IHN0 YXQgYnVmZl9zcmM7Ci0gICAgaWYgKCA6OnN0YXQoIF9zcmMuZGF0YSgpLCAmYnVmZl9zcmMgKSA9 PSAtMSApIHsKKyAgICBLSU9fc3RydWN0X3N0YXQgYnVmZl9zcmM7CisgICAgaWYgKCBLSU9fc3Rh dCggX3NyYy5kYXRhKCksICZidWZmX3NyYyApID09IC0xICkgewogICAgICAgICBpZiAoIGVycm5v ID09IEVBQ0NFUyApCiAgICAgICAgICAgIGVycm9yKCBLSU86OkVSUl9BQ0NFU1NfREVOSUVELCBz cmMucGF0aCgpICk7CiAgICAgICAgIGVsc2UKQEAgLTU1Niw4ICs1NDcsOCBAQCB2b2lkIEZpbGVQ cm90b2NvbDo6cmVuYW1lKCBjb25zdCBLVVJMICZzCiAJcmV0dXJuOwogICAgIH0KIAotICAgIHN0 cnVjdCBzdGF0IGJ1ZmZfZGVzdDsKLSAgICBib29sIGRlc3RfZXhpc3RzID0gKCA6OnN0YXQoIF9k ZXN0LmRhdGEoKSwgJmJ1ZmZfZGVzdCApICE9IC0xICk7CisgICAgS0lPX3N0cnVjdF9zdGF0IGJ1 ZmZfZGVzdDsKKyAgICBib29sIGRlc3RfZXhpc3RzID0gKCBLSU9fc3RhdCggX2Rlc3QuZGF0YSgp LCAmYnVmZl9kZXN0ICkgIT0gLTEgKTsKICAgICBpZiAoIGRlc3RfZXhpc3RzICkKICAgICB7CiAg ICAgICAgIGlmIChTX0lTRElSKGJ1ZmZfZGVzdC5zdF9tb2RlKSkKQEAgLTYxNCw4ICs2MDUsOCBA QCB2b2lkIEZpbGVQcm90b2NvbDo6c3ltbGluayggY29uc3QgUVN0cmluCiAgICAgICAgICAgICB9 CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RydWN0 IHN0YXQgYnVmZl9kZXN0OwotICAgICAgICAgICAgICAgIDo6bHN0YXQoIFFGaWxlOjplbmNvZGVO YW1lKCBkZXN0LnBhdGgoKSApLCAmYnVmZl9kZXN0ICk7CisgICAgICAgICAgICAgICAgS0lPX3N0 cnVjdF9zdGF0IGJ1ZmZfZGVzdDsKKyAgICAgICAgICAgICAgICBLSU9fbHN0YXQoIFFGaWxlOjpl bmNvZGVOYW1lKCBkZXN0LnBhdGgoKSApLCAmYnVmZl9kZXN0ICk7CiAgICAgICAgICAgICAgICAg aWYgKFNfSVNESVIoYnVmZl9kZXN0LnN0X21vZGUpKQogICAgICAgICAgICAgICAgICAgICBlcnJv ciggS0lPOjpFUlJfRElSX0FMUkVBRFlfRVhJU1QsIGRlc3QucGF0aCgpICk7CiAgICAgICAgICAg ICAgICAgZWxzZQpAQCAtNjg2LDkgKzY3Nyw5IEBAIGJvb2wgRmlsZVByb3RvY29sOjpjcmVhdGVV RFNFbnRyeSggY29uc3QKIAogICAgIG1vZGVfdCB0eXBlOwogICAgIG1vZGVfdCBhY2Nlc3M7Ci0g ICAgc3RydWN0IHN0YXQgYnVmZjsKKyAgICBLSU9fc3RydWN0X3N0YXQgYnVmZjsKIAotCWlmICgg bHN0YXQoIHBhdGguZGF0YSgpLCAmYnVmZiApID09IDAgKSAgeworCWlmICggS0lPX2xzdGF0KCBw YXRoLmRhdGEoKSwgJmJ1ZmYgKSA9PSAwICkgIHsKIAogCSAgICBpZiAoU19JU0xOSyhidWZmLnN0 X21vZGUpKSB7CiAKQEAgLTcwMyw3ICs2OTQsNyBAQCBib29sIEZpbGVQcm90b2NvbDo6Y3JlYXRl VURTRW50cnkoIGNvbnN0CiAJCWVudHJ5LmFwcGVuZCggYXRvbSApOwogCiAJCS8vIEEgbGluayBw b2l0aW5nIHRvIG5vd2hlcmUgPwotCQlpZiAoIDo6c3RhdCggcGF0aC5kYXRhKCksICZidWZmICkg PT0gLTEgKSB7CisJCWlmICggS0lPX3N0YXQoIHBhdGguZGF0YSgpLCAmYnVmZiApID09IC0xICkg ewogCQkgICAgLy8gSXQgaXMgYSBsaW5rIHBvaW50aW5nIHRvIG5vd2hlcmUKIAkJICAgIHR5cGUg PSBTX0lGTVQgLSAxOwogCQkgICAgYWNjZXNzID0gU19JUldYVSB8IFNfSVJXWEcgfCBTX0lSV1hP OwpAQCAtODAzLDggKzc5NCw4IEBAIHZvaWQgRmlsZVByb3RvY29sOjpzdGF0KCBjb25zdCBLVVJM ICYgdXIKICAgICAgKiBUaGlzIGlzIHRoZSByZWFzb24gZm9yIHRoZSAtMQogICAgICAqLwogICAg IFFDU3RyaW5nIF9wYXRoKCBRRmlsZTo6ZW5jb2RlTmFtZSh1cmwucGF0aCgtMSkpKTsKLSAgICBz dHJ1Y3Qgc3RhdCBidWZmOwotICAgIGlmICggOjpsc3RhdCggX3BhdGguZGF0YSgpLCAmYnVmZiAp ID09IC0xICkgeworICAgIEtJT19zdHJ1Y3Rfc3RhdCBidWZmOworICAgIGlmICggS0lPX2xzdGF0 KCBfcGF0aC5kYXRhKCksICZidWZmICkgPT0gLTEgKSB7CiAJZXJyb3IoIEtJTzo6RVJSX0RPRVNf Tk9UX0VYSVNULCB1cmwucGF0aCgtMSkgKTsKIAlyZXR1cm47CiAgICAgfQpAQCAtODYwLDggKzg1 MSw4IEBAIHZvaWQgRmlsZVByb3RvY29sOjpsaXN0RGlyKCBjb25zdCBLVVJMJiAKICAgICBRQ1N0 cmluZyBfcGF0aCggUUZpbGU6OmVuY29kZU5hbWUodXJsLnBhdGgoKSkpOwogICAgIGtkRGVidWco NzEwMSkgPDwgIj09PT09PT09PSBMSVNUICIgPDwgdXJsLnVybCgpIDw8ICIgPT09PT09PT09IiA8 PCBlbmRsOwogCi0gICAgc3RydWN0IHN0YXQgYnVmZjsKLSAgICBpZiAoIDo6c3RhdCggX3BhdGgu ZGF0YSgpLCAmYnVmZiApID09IC0xICkgeworICAgIEtJT19zdHJ1Y3Rfc3RhdCBidWZmOworICAg IGlmICggS0lPX3N0YXQoIF9wYXRoLmRhdGEoKSwgJmJ1ZmYgKSA9PSAtMSApIHsKIAllcnJvcigg S0lPOjpFUlJfRE9FU19OT1RfRVhJU1QsIHVybC5wYXRoKCkgKTsKIAlyZXR1cm47CiAgICAgfQpA QCAtODcyLDcgKzg2Myw3IEBAIHZvaWQgRmlsZVByb3RvY29sOjpsaXN0RGlyKCBjb25zdCBLVVJM JiAKICAgICB9CiAKICAgICBESVIgKmRwID0gMEw7Ci0gICAgc3RydWN0IGRpcmVudCAqZXA7Cisg ICAgS0lPX3N0cnVjdF9kaXJlbnQgKmVwOwogCiAgICAgZHAgPSBvcGVuZGlyKCBfcGF0aC5kYXRh KCkgKTsKICAgICBpZiAoIGRwID09IDAgKSB7CkBAIC04ODUsNyArODc2LDcgQEAgdm9pZCBGaWxl UHJvdG9jb2w6Omxpc3REaXIoIGNvbnN0IEtVUkwmIAogICAgIC8vIGZpbGVzIHdoZXJlIFFGaWxl OjplbmNvZGVOYW1lKFFGaWxlOjpkZWNvZGVOYW1lKGEpKSAhPSBhLgogICAgIFFTdHJMaXN0IGVu dHJ5TmFtZXM7CiAKLSAgICB3aGlsZSAoICggZXAgPSByZWFkZGlyKCBkcCApICkgIT0gMEwgKQor ICAgIHdoaWxlICggKCBlcCA9IEtJT19yZWFkZGlyKCBkcCApICkgIT0gMEwgKQogCWVudHJ5TmFt ZXMuYXBwZW5kKCBlcC0+ZF9uYW1lICk7CiAKICAgICBjbG9zZWRpciggZHAgKTsKQEAgLTkyNyw4 ICs5MTgsOCBAQCB2b2lkIEZpbGVQcm90b2NvbDo6bGlzdERpciggY29uc3QgS1VSTCYgCiB2b2lk IEZpbGVQcm90b2NvbDo6dGVzdERpciggY29uc3QgUVN0cmluZyYgcGF0aCApCiB7CiAgICAgUUNT dHJpbmcgX3BhdGgoIFFGaWxlOjplbmNvZGVOYW1lKHBhdGgpKTsKLSAgICBzdHJ1Y3Qgc3RhdCBi dWZmOwotICAgIGlmICggOjpzdGF0KCBfcGF0aC5kYXRhKCksICZidWZmICkgPT0gLTEgKSB7Cisg ICAgS0lPX3N0cnVjdF9zdGF0IGJ1ZmY7CisgICAgaWYgKCBLSU9fc3RhdCggX3BhdGguZGF0YSgp LCAmYnVmZiApID09IC0xICkgewogCWVycm9yKCBLSU86OkVSUl9ET0VTX05PVF9FWElTVCwgcGF0 aCApOwogCXJldHVybjsKICAgICB9CkBAIC0xMTQ4LDcgKzExMzksNyBAQCB2b2lkIEZpbGVQcm90 b2NvbDo6dW5tb3VudCggY29uc3QgUVN0cmluCiAJCWtkRGVidWcoNzEwMSkgPDwgIlZPTE1HVDog bG9va2luZyBmb3IgIgogCQkJPDwgX3BvaW50LmxvY2FsOEJpdCgpIDw8IGVuZGw7CiAKLQkJaWYo IChtbnR0YWIgPSBmb3BlbiggTU5UVEFCLCAiciIgKSkgPT0gTlVMTCApIHsKKwkJaWYoIChtbnR0 YWIgPSBLSU9fZm9wZW4oIE1OVFRBQiwgInIiICkpID09IE5VTEwgKSB7CiAJCQllcnIgPSAiY291 bGRuJ3Qgb3BlbiBtbnR0YWIiOwogCQkJa2REZWJ1Zyg3MTAxKSA8PCAiVk9MTUdUOiAiIDw8IGVy ciA8PCBlbmRsOwogCQkJZXJyb3IoIEtJTzo6RVJSX0NPVUxEX05PVF9VTk1PVU5ULCBlcnIgKTsK QEAgLTEyMzYsMTggKzEyMjcsMTggQEAgdm9pZCBGaWxlUHJvdG9jb2w6OnVubW91bnQoIGNvbnN0 IFFTdHJpbgogUVN0cmluZyB0ZXN0TG9nRmlsZSggY29uc3QgY2hhciAqX2ZpbGVuYW1lICkKIHsK ICAgICBjaGFyIGJ1ZmZlclsgMTAyNCBdOwotICAgIHN0cnVjdCBzdGF0IGJ1ZmY7CisgICAgS0lP X3N0cnVjdF9zdGF0IGJ1ZmY7CiAKICAgICBRU3RyaW5nIHJlc3VsdDsKIAotICAgIHN0YXQoIF9m aWxlbmFtZSwgJmJ1ZmYgKTsKKyAgICBLSU9fc3RhdCggX2ZpbGVuYW1lLCAmYnVmZiApOwogICAg IGludCBzaXplID0gYnVmZi5zdF9zaXplOwogICAgIGlmICggc2l6ZSA9PSAwICkgewogCXVubGlu ayggX2ZpbGVuYW1lICk7CiAJcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBGSUxFICogZiA9 IGZvcGVuKCBfZmlsZW5hbWUsICJyYiIgKTsKKyAgICBGSUxFICogZiA9IEtJT19mb3BlbiggX2Zp bGVuYW1lLCAicmIiICk7CiAgICAgaWYgKCBmID09IDBMICkgewogCXVubGluayggX2ZpbGVuYW1l ICk7CiAJcmVzdWx0ID0gaTE4bigiQ291bGQgbm90IHJlYWQgJTEiKS5hcmcoUUZpbGU6OmRlY29k ZU5hbWUoX2ZpbGVuYW1lKSk7Cg== --------------Boundary-00=_TA0W98T12LWTFAM22NBO--