delorie.com/archives/browse.cgi | search |
X-Recipient: | archive-cygwin AT delorie DOT com |
DomainKey-Signature: | a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id |
:list-unsubscribe:list-subscribe:list-archive:list-post | |
:list-help:sender:from:subject:to:message-id:date:mime-version | |
:content-type; q=dns; s=default; b=qp4/TRUOVCjbIav2v9YdDMxRq+Hc4 | |
HcBvKbrHwqKtpm/buYT5OYuqGtZLG9m5lGxATtY/RKilBzZATpYbsdK1jr6PLSYF | |
vbMN2+W1qS+NO56a+euZHc84cYdcJCRuS041wuD38O/21GpYsyWZEKfihqIRX+kM | |
3r0enZaxB2w1d8= | |
DKIM-Signature: | v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id |
:list-unsubscribe:list-subscribe:list-archive:list-post | |
:list-help:sender:from:subject:to:message-id:date:mime-version | |
:content-type; s=default; bh=TauSWHVaoskL0N7WMS6Ia2hewg0=; b=X/X | |
ly9Kb9wjJtowy23+QT3uBPPv7hjW/1OojNtiRWTmotey23ZMGhmIV6vy1A3DPF6o | |
+H2gz5SbiqilNlpy13GSnVfV9m2/2bF5LthHbdopsn/KmsmcjEKRon2t9yRo1zoo | |
cGQq27zC4V/1pbksV18PZ1sqPLwjBze5gbxHlo8c= | |
Mailing-List: | contact cygwin-help AT cygwin DOT com; run by ezmlm |
List-Id: | <cygwin.cygwin.com> |
List-Subscribe: | <mailto:cygwin-subscribe AT cygwin DOT com> |
List-Archive: | <http://sourceware.org/ml/cygwin/> |
List-Post: | <mailto:cygwin AT cygwin DOT com> |
List-Help: | <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs> |
Sender: | cygwin-owner AT cygwin DOT com |
Mail-Followup-To: | cygwin AT cygwin DOT com |
Delivered-To: | mailing list cygwin AT cygwin DOT com |
Authentication-Results: | sourceware.org; auth=none |
X-Spam-SWARE-Status: | No, score=-1.1 required=5.0 tests=BAYES_00,KAM_ASCII_DIVIDERS,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=no version=3.3.2 spammy=connect, Hx-languages-length:2623, unaware, transfer |
X-HELO: | atfriesa01.ssi-schaefer.com |
From: | Michael Haubenwallner <michael DOT haubenwallner AT ssi-schaefer DOT com> |
Subject: | A little improvement for setmode(fd, 0)? |
Openpgp: | preference=signencrypt |
To: | cygwin AT cygwin DOT com |
Message-ID: | <5801c977-ad17-6f6e-39db-ad44d202c172@ssi-schaefer.com> |
Date: | Fri, 22 Feb 2019 16:43:10 +0100 |
User-Agent: | Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.5.1 |
MIME-Version: | 1.0 |
--------------C3A93BA6DAD0CAABF2E5A2B8 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Hi Corinna, sorry to be annoying, but I'm still not completely happy with the setmode(fd, 0) API yet: Using setmode(fd, 0), beyond "I am aware that not everything is binary", an application's point of view when ported to Cygwin is something like: "For this (maybe bidirectional) file descriptor, wherever the user does connect it to (stream, binary mounted fs, text mounted fs, ...), I do *not need* to transfer binary content. That is, to stay as POSIXy as possible, for line breaks I do not want to handle any \r in my text." Hence, read() should not deliver the \r when reading any line break, and write(\n) should add the \r only when the target does require that (like the file on a text mounted fs). As there is no clean way to ignore \r for reads without forcing \r for writes, right now a complete-as-possible patch for openssl may look like: https://gitweb.gentoo.org/repo/proj/prefix.git/tree/dev-libs/openssl/files/openssl-1.1.1a-cygwin-binmode.patch?id=05d897568b21446657001a51660e9a25172474f2 But there still is the difference between readonly and read+write. Attached is a test script for a collected overview of the behaviour differences when applications use the setmode() API call. $ ./setmodetest.sh Testing behaviour of various setmode() arguments... ---------+--------------------------+--------------------------+ perform: | read from 0d0a input | write the single 0a | filesys: | stream | binary | text | stream | binary | text | ---------+--------+--------+--------+--------+--------+--------+ default | 0d0a | 0d0a | 0a | 0a | 0a | 0d0a | O_BINARY | 0d0a | 0d0a | 0d0a | 0a | 0a | 0a | 0 | 0d0a | 0d0a | 0a | 0a | 0a | 0d0a | O_TEXT | 0a | 0a | 0a | 0d0a | 0d0a | 0d0a | ---------+--------+--------+--------+--------+--------+--------+ So what I would like to see is a behaviour like this: ---------+--------------------------+--------------------------+ perform: | read from 0d0a input | write the single 0a | filesys: | stream | binary | text | stream | binary | text | ---------+--------+--------+--------+--------+--------+--------+ 0 ? | 0a | 0a | 0a | 0a | 0a | 0d0a | ---------+--------+--------+--------+--------+--------+--------+ Even if that would mean that setmode(fd, 0) does not switch back to default behaviour any more. But then, isn't the default behaviour designed for applications that do not use (are unaware of) the setmode() API at all? Thoughts? For completion: $ ./setmodetest.sh --trace does create the list of commands being executed. $ ./setmodetest.sh --with-fopen does use the FILE handle API Thanks a lot! /haubi/ --------------C3A93BA6DAD0CAABF2E5A2B8 Content-Type: application/x-shellscript; name="setmodetest.sh" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="setmodetest.sh" IyEgL3Vzci9iaW4vZW52IGJhc2gKClBTND0nKCRMSU5FTk8pKyAnCnNldCAt ZQoKZGllKCkgewogIFtbIC16ICIkKiIgXV0gfHwgcHJpbnRmICIlc1xcbiIg IiQqIiA+JjIKICBleGl0IDEKfQoKaGVscCgpIHsKICBjYXQgPDxFT0YKJHsw fSBbLS10cmFjZV0gWy0td2l0aC1mb3Blbl0KRU9GCn0KCnRlc3RzZXRtb2Rl X2MoKSB7CiAgbG9jYWwgZmh0eXBlPSdpbnQnCiAgbG9jYWwgaW52YWxpZF9m aD0nLTEnCiAgbG9jYWwgaW50X2ZkX2Zyb21fZmg9J2ludCBmZCA9IGZoOycK ICBsb2NhbCBzZXRtb2RlX2ZkX2JpbmFyeT0nc2V0bW9kZShmZCwgT19CSU5B UlkpJwogIGxvY2FsIHNldG1vZGVfZmRfdGV4dD0nc2V0bW9kZShmZCwgT19U RVhUKScKICBsb2NhbCByZWFkX2J1Zl9mcm9tX2ZoPSdyZWFkKGZoLCBidWYs IGJ1ZnNpemUpJwogIGxvY2FsIHdyaXRlX25ld2xpbmVfdG9fZmg9J3dyaXRl KGZoLCAiXG4iLCAxKScKICBsb2NhbCBzdGRpbmZoPScwJwogIGxvY2FsIHN0 ZG91dGZoPScxJwogIGxvY2FsIG9wZW5fYXJndjNfZm9yX3JlYWQ9J29wZW4o YXJndlszXSwgT19SRE9OTFkpJwogIGxvY2FsIG9wZW5fYXJndjNfZm9yX3dy aXRlPSdvcGVuKGFyZ3ZbM10sIE9fQ1JFQVQgfCBPX1RSVU5DIHwgT19XUk9O TFksIDA2NDQpJwogIGxvY2FsIGNsb3NlX29wZW5maD0naWYgKG9wZW5maCA+ PSAwKSBjbG9zZShvcGVuZmgpJwogIGlmIFtbICR7V0lUSF9GT1BFTn0gXV07 IHRoZW4KICAgIGZodHlwZT0nRklMRSAqJwogICAgaW52YWxpZF9maD0nTlVM TCcKICAgIGludF9mZF9mcm9tX2ZoPSdpbnQgZmQgPSBmaCA/IGZpbGVubyhm aCkgOiAtMTsnCiAgICBzZXRtb2RlX2ZkX2JpbmFyeT0nMCcKICAgIHNldG1v ZGVfZmRfdGV4dD0nMCcKICAgIHJlYWRfYnVmX2Zyb21fZmg9J2dldGxpbmUo JmJ1ZiwgJmJ1ZnNpemUsIGZoKScKICAgIHdyaXRlX25ld2xpbmVfdG9fZmg9 J2ZwcmludGYoZmgsICJcbiIpJwogICAgc3RkaW5maD0nZnJlb3BlbihOVUxM LCBmb3Blbl9tb2RlKGFyZ3ZbMV0sIGFyZ3ZbMl0pLCBzdGRpbiknCiAgICBz dGRvdXRmaD0nZnJlb3BlbihOVUxMLCBmb3Blbl9tb2RlKGFyZ3ZbMV0sIGFy Z3ZbMl0pLCBzdGRvdXQpJwogICAgb3Blbl9hcmd2M19mb3JfcmVhZD0nZm9w ZW4oYXJndlszXSwgZm9wZW5fbW9kZShhcmd2WzFdLCBhcmd2WzJdKSknCiAg ICBvcGVuX2FyZ3YzX2Zvcl93cml0ZT0nZm9wZW4oYXJndlszXSwgZm9wZW5f bW9kZShhcmd2WzFdLCBhcmd2WzJdKSknCiAgICBjbG9zZV9vcGVuZmg9J2lm IChvcGVuZmgpIGZjbG9zZShvcGVuZmgpJwogIGZpCiAgY2F0IDw8RU9GCiNp bmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8c3RkbGliLmg+CiNpbmNsdWRl IDxpby5oPgojaW5jbHVkZSA8ZmNudGwuaD4KI2luY2x1ZGUgPHN0cmluZy5o PgojaW5jbHVkZSA8dW5pc3RkLmg+CgpjaGFyIHRvaGV4KGNoYXIgaGFsZmJ5 dGUpCnsKICBoYWxmYnl0ZSAmPSAweGY7CiAgaWYgKGhhbGZieXRlID49IDB4 YSkKICAgIHJldHVybiAnYScgKyAoaGFsZmJ5dGUgLSAweGEpOwogIHJldHVy biAnMCcgKyBoYWxmYnl0ZTsKfQoKdHlwZWRlZiAke2ZodHlwZX0gZmh0eXBl OwoKaW50IGRvc2V0bW9kZShjaGFyIGNvbnN0ICogbW9kZSwgZmh0eXBlIGZo KQp7CiAgJHtpbnRfZmRfZnJvbV9maH0KICBpZiAoZmQgPCAwKSByZXR1cm4g LTE7CiAgaWYgKCFtb2RlKSByZXR1cm4gMDsKICBlbHNlIGlmICghc3RyY21w KG1vZGUsICJkZWZhdWx0IikpIHJldHVybiAwOwogIGVsc2UgaWYgKCFzdHJj bXAobW9kZSwgImJpbm1vZGUiKSkgcmV0dXJuICR7c2V0bW9kZV9mZF9iaW5h cnl9OwogIGVsc2UgaWYgKCFzdHJjbXAobW9kZSwgInR4dG1vZGUiKSkgcmV0 dXJuICR7c2V0bW9kZV9mZF90ZXh0fTsKICBlbHNlIGlmICghc3RyY21wKG1v ZGUsICJudWxtb2RlIikpIHJldHVybiBzZXRtb2RlKGZkLCAwKTsKICBlbHNl IGlmICghc3RyY21wKG1vZGUsICJ0d29tb2RlIikpIHJldHVybiBzZXRtb2Rl KGZkLCBPX0JJTkFSWSB8IE9fVEVYVCk7CiAgcmV0dXJuIC0xOwp9CgppbnQg dGVzdHJlYWQoY2hhciBjb25zdCAqIG1vZGUsIGZodHlwZSBmaCkKewogIGlm IChkb3NldG1vZGUobW9kZSwgZmgpIDwgMCkKICAgIHJldHVybiAtMTsKCiAg c2l6ZV90IGJ1ZnNpemUgPSAxMjg7CiAgY2hhciAqIGJ1ZiA9IG1hbGxvYyhi dWZzaXplKTsKICBpZiAoIWJ1ZikKICAgIHJldHVybiAtMTsKICBzc2l6ZV90 IG4sIGk7CiAgd2hpbGUoKG4gPSAke3JlYWRfYnVmX2Zyb21fZmh9KSA+IDAp CiAgICBmb3IoaSA9IDA7IGkgPCBuOyArK2kpCiAgICAgIHByaW50ZigiJWMl YyIsIHRvaGV4KGJ1ZltpXSA+PiA0KSwgdG9oZXgoYnVmW2ldICYgMHhmKSk7 CiAgaWYgKGJ1ZikKICAgIGZyZWUoYnVmKTsKICByZXR1cm4gMDsKfQoKaW50 IHRlc3R3cml0ZShjaGFyIGNvbnN0ICogbW9kZSwgZmh0eXBlIGZoKQp7CiAg aWYgKGRvc2V0bW9kZShtb2RlLCBmaCkgPCAwKQogICAgcmV0dXJuIC0xOwoK ICAke3dyaXRlX25ld2xpbmVfdG9fZmh9OwogIHJldHVybiAwOwp9CgppbnQg aGVscChjaGFyIGNvbnN0ICogYXJndjApCnsKICBmcHJpbnRmKHN0ZGVyciwg IiVzIDxyZWFkfHdyaXRlPiA8c2V0bW9kZT4gPGZpbGV8LT5cbiIsIGFyZ3Yw KTsKICByZXR1cm4gMTsKfQoKY2hhciBjb25zdCAqIGZvcGVuX21vZGUoY2hh ciBjb25zdCAqIGFyZ3YxLCBjaGFyIGNvbnN0ICogYXJndjIpCnsKICBpZiAo IXN0cmNtcChhcmd2MSwgInJlYWQiKSkKICAgIHsKICAgICAgaWYgKCFzdHJj bXAoYXJndjIsICJiaW5tb2RlIikpIHJldHVybiAicmIiOwogICAgICBpZiAo IXN0cmNtcChhcmd2MiwgInR4dG1vZGUiKSkgcmV0dXJuICJydCI7CiAgICAg IHJldHVybiAiciI7CiAgICB9CiAgaWYgKCFzdHJjbXAoYXJndjEsICJ3cml0 ZSIpKQogICAgewogICAgICBpZiAoIXN0cmNtcChhcmd2MiwgImJpbm1vZGUi KSkgcmV0dXJuICJ3YiI7CiAgICAgIGlmICghc3RyY21wKGFyZ3YyLCAidHh0 bW9kZSIpKSByZXR1cm4gInd0IjsKICAgICAgcmV0dXJuICJ3IjsKICAgIH0K ICByZXR1cm4gTlVMTDsKfQoKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiph cmd2KQp7CiAgaWYgKGFyZ2MgPCAzKQogICAgcmV0dXJuIGhlbHAoYXJndlsw XSk7CgogIGludCByZXQgPSAtMTsKICBmaHR5cGUgb3BlbmZoID0gJHtpbnZh bGlkX2ZofTsKICBmaHR5cGUgZmggPSAke2ludmFsaWRfZmh9OwogIGlmICgh c3RyY21wKGFyZ3ZbMV0sICJyZWFkIikpCiAgICB7CiAgICAgIGlmICghc3Ry Y21wKGFyZ3ZbM10sICItIikpCiAgICAgICAgZmggPSAke3N0ZGluZmh9Owog ICAgICBlbHNlCiAgICAgICAgb3BlbmZoID0gZmggPSAke29wZW5fYXJndjNf Zm9yX3JlYWR9OwogICAgICByZXQgPSB0ZXN0cmVhZChhcmd2WzJdLCBmaCk7 CiAgICB9CiAgZWxzZSBpZiAoIXN0cmNtcChhcmd2WzFdLCAid3JpdGUiKSkK ICAgIHsKICAgICAgaWYgKCFzdHJjbXAoYXJndlszXSwgIi0iKSkKICAgICAg ICBmaCA9ICR7c3Rkb3V0Zmh9OwogICAgICBlbHNlCiAgICAgICAgb3BlbmZo ID0gZmggPSAke29wZW5fYXJndjNfZm9yX3dyaXRlfTsKICAgICAgcmV0ID0g dGVzdHdyaXRlKGFyZ3ZbMl0sIGZoKTsKICAgIH0KICBlbHNlCiAgICByZXR1 cm4gaGVscChhcmd2WzBdKTsKICAke2Nsb3NlX29wZW5maH07CiAgcmV0dXJu IHJldCA8IDAgPyAxIDogMDsKfQpFT0YKfQoKSVNUUkFDRT1mYWxzZQpXSVRI X0ZPUEVOPQoKdHJhY2UoKSB7CiAgJHtJU1RSQUNFfSB8fCByZXR1cm4gMAog IHByaW50ZiAiJXNcbiIgIiQqIgp9Cgpmb3IgYXJnIGluICIkQCI7IGRvCiAg Y2FzZSAke2FyZ30gaW4KICAtLXRyYWNlKSBJU1RSQUNFPTogOzsKICAtLXdp dGgtZm9wZW4pIFdJVEhfRk9QRU49JHthcmd9IDs7CiAgLS1oZWxwKSBoZWxw OyBleGl0IDAgOzsKICAtLXRlc3RzZXRtb2RlX2MpIHRlc3RzZXRtb2RlX2M7 IGV4aXQgMCA7OwogIGVzYWMKZG9uZQoKVEVTVERJUj0kKHB3ZCkvc2V0bW9k ZXRlc3QtJCQKCnRyYWNlICJta2RpciBzZXRtb2RldGVzdC0kJCIKbWtkaXIg c2V0bW9kZXRlc3QtJCQKdHJhcCAiCiAgc2V0ICtlCiAgdHJhY2UgdW1vdW50 ICcke1RFU1RESVJ9L2JpbmFyeWRpcicKICB1bW91bnQgJyR7VEVTVERJUn0v YmluYXJ5ZGlyJyAyPi9kZXYvbnVsbAogIHRyYWNlIHVtb3VudCAnJHtURVNU RElSfS90ZXh0ZGlyJwogIHVtb3VudCAnJHtURVNURElSfS90ZXh0ZGlyJyAy Pi9kZXYvbnVsbAogIHRyYWNlIHBvcGQKICBwb3BkID4vZGV2L251bGwKICB0 cmFjZSBybSAtcmYgc2V0bW9kZXRlc3QtJCQKICBybSAtcmYgc2V0bW9kZXRl c3QtJCQKIiAwCgp0cmFjZSAiJDAgJHtXSVRIX0ZPUEVOfSAtLXRlc3RzZXRt b2RlX2MgPiBzZXRtb2RldGVzdC0kJC90ZXN0c2V0bW9kZS5jIgp0ZXN0c2V0 bW9kZV9jID4gc2V0bW9kZXRlc3QtJCQvdGVzdHNldG1vZGUuYwoKdHJhY2Ug InB1c2hkIHNldG1vZGV0ZXN0LSQkIgpwdXNoZCBzZXRtb2RldGVzdC0kJCA+ L2Rldi9udWxsCgp0cmFjZSBnY2MgLWcgLW8gdGVzdHNldG1vZGUgdGVzdHNl dG1vZGUuYwpnY2MgLWcgLW8gdGVzdHNldG1vZGUgdGVzdHNldG1vZGUuYwoK dHJhY2UgbWtkaXIgcGxhaW5kaXIgYmluYXJ5ZGlyIHRleHRkaXIKbWtkaXIg cGxhaW5kaXIKbWtkaXIgYmluYXJ5ZGlyCm1rZGlyIHRleHRkaXIKdHJhY2Ug InByaW50ZiAnXFxuJyB8IHVuaXgyZG9zID4gcGxhaW5kaXIvdG9yZWFkIgpw cmludGYgJ1xuJyB8IHVuaXgyZG9zID4gcGxhaW5kaXIvdG9yZWFkCnRyYWNl ICJtb3VudCAtbyBiaW5hcnkgJyQoY3lncGF0aCAtbSAiJHtURVNURElSfS9w bGFpbmRpciIpJyAnJHtURVNURElSfS9iaW5hcnlkaXInIgptb3VudCAtbyBi aW5hcnkgIiQoY3lncGF0aCAtbSAiJHtURVNURElSfS9wbGFpbmRpciIpIiAi JHtURVNURElSfS9iaW5hcnlkaXIiCnRyYWNlICJtb3VudCAtbyB0ZXh0ICAg JyQoY3lncGF0aCAtbSAiJHtURVNURElSfS9wbGFpbmRpciIpJyAnJHtURVNU RElSfS90ZXh0ZGlyJyIKbW91bnQgLW8gdGV4dCAgICIkKGN5Z3BhdGggLW0g IiR7VEVTVERJUn0vcGxhaW5kaXIiKSIgIiR7VEVTVERJUn0vdGV4dGRpciIK dHJhY2UKCnNldCArZQoKREFTSEVTPSctLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0nCgpzZXRtb2RlZm10PSIlLTguOHMiCnNldG1vZGVzPSgKICAiZGVm YXVsdDogZGVmYXVsdCIKICAiYmlubW9kZTpPX0JJTkFSWSIKICAibnVsbW9k ZTogIDAgICAgICIKICAidHh0bW9kZTpPX1RFWFQgICIKIyAidHdvbW9kZTog IGJvdGggICIKKQoKdGVzdG1vZGVoZWFkZXJmbXQ9IiUyNC4yNHMiICMgbGVu Z3RoIHRvIGZpdCAic3RyZWFtIHwgYmluYXJ5IHwgIHRleHQgIgp0ZXN0bW9k ZWZtdD0iJS01LjVzIiAjIGxlbmd0aCB0byBmaXQgInN0cmVhbSB8IGJpbmFy eSB8ICB0ZXh0ICIKdGVzdG1vZGVzPSgKICAgInJlYWQ6cmVhZCBmcm9tIDBk MGEgaW5wdXQgICIKICAid3JpdGU6d3JpdGUgdGhlIHNpbmdsZSAwYSAgICIK KQoKZmlsZW1vZGVmbXQ9IiU2LjZzIgpmaWxlbW9kZXM9KAogICJzdHJlYW06 c3RyZWFtIgogICJiaW5hcnk6YmluYXJ5IgogICAgInRleHQ6IHRleHQgIgop CgpydW50ZXN0KCkgewogIGxvY2FsIHRyYWNlPTogc2V0bW9kZSB0ZXN0bW9k ZSBmaWxlbW9kZQogIGxvY2FsIGFyZwogIGZvciBhcmcgaW4gIiRAIjsgZG8K ICAgIGNhc2UgJHthcmd9IGluCiAgICAtLXRyYWNlKSB0cmFjZT1wcmludGYg OzsKICAgIC0tc2V0bW9kZT0qKSBzZXRtb2RlPSR7YXJnIy0tc2V0bW9kZT19 IDs7CiAgICAtLXRlc3Rtb2RlPSopIHRlc3Rtb2RlPSR7YXJnIy0tdGVzdG1v ZGU9fSA7OwogICAgLS1maWxlbW9kZT0qKSBmaWxlbW9kZT0ke2FyZyMtLWZp bGVtb2RlPX0gOzsKICAgIGVzYWMKICBkb25lCgogIGxvY2FsIGZpbGUgdmFs dWUKICBjYXNlICR7ZmlsZW1vZGV9OiR7dGVzdG1vZGV9IGluCiAgc3RyZWFt OnJlYWQpCiAgICAkdHJhY2UgIi4vdGVzdHNldG1vZGUgcmVhZCAke3NldG1v ZGV9IC0gPCBwbGFpbmRpci90b3JlYWQ7ICMgIgogICAgcHJpbnRmICIlcyIg IiQoLi90ZXN0c2V0bW9kZSByZWFkICIke3NldG1vZGV9IiAtIDwgInBsYWlu ZGlyL3RvcmVhZCIpIgogICAgOzsKICBzdHJlYW06d3JpdGUpCiAgICBybSAt ZiAicGxhaW5kaXIvdG93cml0ZSIKICAgICR0cmFjZSAiLi90ZXN0c2V0bW9k ZSB3cml0ZSAke3NldG1vZGV9IC0gfCB4eGQgLXA7ICMgIgogICAgLi90ZXN0 c2V0bW9kZSB3cml0ZSAiJHtzZXRtb2RlfSIgLSA+ICJwbGFpbmRpci9zdHJl YW13cml0ZS0ke3NldG1vZGV9IgogICAgcHJpbnRmICIlcyIgIiQoeHhkIC1w ICJwbGFpbmRpci9zdHJlYW13cml0ZS0ke3NldG1vZGV9IikiCiAgICA7Owog ICo6cmVhZCkKICAgICR0cmFjZSAiLi90ZXN0c2V0bW9kZSByZWFkICR7c2V0 bW9kZX0gJHtmaWxlbW9kZX1kaXIvdG9yZWFkOyAjICIKICAgIHByaW50ZiAi JXMiICIkKC4vdGVzdHNldG1vZGUgcmVhZCAiJHtzZXRtb2RlfSIgIiR7Zmls ZW1vZGV9ZGlyL3RvcmVhZCIpIgogICAgOzsKICAqOndyaXRlKQogICAgcm0g LWYgInBsYWluZGlyL3Rvd3JpdGUiCiAgICAkdHJhY2UgIi4vdGVzdHNldG1v ZGUgd3JpdGUgJHtzZXRtb2RlfSAke2ZpbGVtb2RlfWRpci8ke2ZpbGVtb2Rl fXdyaXRlLSR7c2V0bW9kZX07ICMgIgogICAgLi90ZXN0c2V0bW9kZSB3cml0 ZSAiJHtzZXRtb2RlfSIgIiR7ZmlsZW1vZGV9ZGlyLyR7ZmlsZW1vZGV9d3Jp dGUtJHtzZXRtb2RlfSIKICAgIHByaW50ZiAiJXMiICIkKHh4ZCAtcCAicGxh aW5kaXIvJHtmaWxlbW9kZX13cml0ZS0ke3NldG1vZGV9IikiCiAgICA7Owog ICopCiAgICBkaWUgImludmFsaWQ6IHJ1bnRlc3QgLS1zZXRtb2RlPSR7c2V0 bW9kZX0gLS10ZXN0bW9kZT0ke3Rlc3Rtb2RlfSAtLWZpbGVtb2RlPSR7Zmls ZW1vZGV9IgogICAgOzsKICBlc2FjCiAgJHRyYWNlICJcXG4iCn0KCiMgaGVh ZGVyIGxpbmVzCiMgMDogCiMgMTogLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwojIDI6 IHBlcmZvcm06IHwgICByZWFkIGZyb20gMGQwYSBpbnB1dCAgIHwgICB3cml0 ZSB0aGUgc2luZ2xlIDBhICAgIHwKIyAzOiBmaWxlc3lzOiB8IHN0cmVhbSB8 IGJpbmFyeSB8ICB0ZXh0ICB8IHN0cmVhbSB8IGJpbmFyeSB8ICB0ZXh0ICB8 CiMgNDogLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKwoKaGVhZGVyMCgpIHsKICBwcmlu dGYgIlRlc3RpbmcgYmVoYXZpb3VyIG9mIHZhcmlvdXMgc2V0bW9kZSgpIGFy Z3VtZW50cy4uLlxuIgp9CgpoZWFkZXIxKCkgewogIHByaW50ZiAiJHtzZXRt b2RlZm10fS0rIiAiJHtEQVNIRVN9IgogIGZvciB0ZXN0bW9kZSBpbiAiJHt0 ZXN0bW9kZXNbQF19IjsgZG8KICAgIHRlc3RkZXNjPSR7dGVzdG1vZGUjKjp9 CiAgICB0ZXN0bW9kZT0ke3Rlc3Rtb2RlJToqfQogICAgcHJpbnRmICIlcyR7 dGVzdG1vZGVoZWFkZXJmbXR9LSsiICItIiAiJHtEQVNIRVN9IgogIGRvbmUK ICBwcmludGYgIlxcbiIKfQoKaGVhZGVyMigpIHsKICBwcmludGYgIiR7c2V0 bW9kZWZtdH0gfCIgInBlcmZvcm06IgogIGZvciB0ZXN0bW9kZSBpbiAiJHt0 ZXN0bW9kZXNbQF19IjsgZG8KICAgIHRlc3RkZXNjPSR7dGVzdG1vZGUjKjp9 CiAgICB0ZXN0bW9kZT0ke3Rlc3Rtb2RlJToqfQogICAgcHJpbnRmICIgJHt0 ZXN0bW9kZWhlYWRlcmZtdH0gfCIgIiR7dGVzdGRlc2N9IgogIGRvbmUKICBw cmludGYgIlxcbiIKfQoKaGVhZGVyMygpIHsKICBwcmludGYgIiR7c2V0bW9k ZWZtdH0gfCIgImZpbGVzeXM6IgogIGZvciB0ZXN0bW9kZSBpbiAiJHt0ZXN0 bW9kZXNbQF19IjsgZG8KICAgIHRlc3RkZXNjPSR7dGVzdG1vZGUjKjp9CiAg ICB0ZXN0bW9kZT0ke3Rlc3Rtb2RlJToqfQogICAgZm9yIGZpbGVtb2RlIGlu ICIke2ZpbGVtb2Rlc1tAXX0iOyBkbwogICAgICBmaWxlZGVzYz0ke2ZpbGVt b2RlIyo6fQogICAgICBmaWxlbW9kZT0ke2ZpbGVtb2RlJToqfQogICAgICBw cmludGYgIiAke2ZpbGVtb2RlZm10fSB8IiAiJHtmaWxlZGVzY30iCiAgICBk b25lCiAgZG9uZQogIHByaW50ZiAiXFxuIgp9CgpoZWFkZXI0KCkgewogIHBy aW50ZiAiJHtzZXRtb2RlZm10fS0rIiAiJHtEQVNIRVN9IgogIGZvciB0ZXN0 bW9kZSBpbiAiJHt0ZXN0bW9kZXNbQF19IjsgZG8KICAgIHRlc3RkZXNjPSR7 dGVzdG1vZGUjKjp9CiAgICB0ZXN0bW9kZT0ke3Rlc3Rtb2RlJToqfQogICAg Zm9yIGZpbGVtb2RlIGluICIke2ZpbGVtb2Rlc1tAXX0iOyBkbwogICAgICBm aWxlZGVzYz0ke2ZpbGVtb2RlIyo6fQogICAgICBmaWxlbW9kZT0ke2ZpbGVt b2RlJToqfQogICAgICBwcmludGYgIiVzJHtmaWxlbW9kZWZtdH0tKyIgIi0i ICIke0RBU0hFU30iCiAgICBkb25lCiAgZG9uZQogIHByaW50ZiAiXFxuIgp9 CgphbGx0ZXN0cygpIHsKICBsb2NhbCB0cmFjZT1mYWxzZQogIGxvY2FsIGFy ZwogIGZvciBhcmcgaW4gIiRAIjsgZG8KICAgIGNhc2UgJHthcmd9IGluCiAg ICAtLXRyYWNlKSB0cmFjZT06IDs7CiAgICBlc2FjCiAgZG9uZQogIGZvciBz ZXRtb2RlIGluICIke3NldG1vZGVzW0BdfSI7IGRvCiAgICBzZXRkZXNjPSR7 c2V0bW9kZSMqOn0KICAgIHNldG1vZGU9JHtzZXRtb2RlJToqfQogICAgJHt0 cmFjZX0gfHwgcHJpbnRmICIke3NldG1vZGVmbXR9IHwiICIke3NldGRlc2N9 IgogICAgZm9yIHRlc3Rtb2RlIGluICIke3Rlc3Rtb2Rlc1tAXX0iOyBkbwog ICAgICB0ZXN0ZGVzYz0ke3Rlc3Rtb2RlIyo6fQogICAgICB0ZXN0bW9kZT0k e3Rlc3Rtb2RlJToqfQogICAgICBmb3IgZmlsZW1vZGUgaW4gIiR7ZmlsZW1v ZGVzW0BdfSI7IGRvCiAgICAgICAgZmlsZWRlc2M9JHtmaWxlbW9kZSMqOn0K ICAgICAgICBmaWxlbW9kZT0ke2ZpbGVtb2RlJToqfQogICAgICAgIGlmICR7 dHJhY2V9OyB0aGVuCiAgICAgICAgICAjIHByaW50ZiAic2V0bW9kZSgke3Nl dGRlc2N9KSwgJHt0ZXN0bW9kZWZtdH0gJHtmaWxlbW9kZWZtdH0gZmQ6ICIg IiR7dGVzdG1vZGV9IiAiJHtmaWxlbW9kZX0iCiAgICAgICAgICBydW50ZXN0 IC0tdHJhY2UgIi0tc2V0bW9kZT0ke3NldG1vZGV9IiAiLS10ZXN0bW9kZT0k e3Rlc3Rtb2RlfSIgIi0tZmlsZW1vZGU9JHtmaWxlbW9kZX0iCiAgICAgICAg ZWxzZQogICAgICAgICAgcHJpbnRmICIgJHtmaWxlbW9kZWZtdH0gfCIgIiQo cnVudGVzdCAiLS1zZXRtb2RlPSR7c2V0bW9kZX0iICItLXRlc3Rtb2RlPSR7 dGVzdG1vZGV9IiAiLS1maWxlbW9kZT0ke2ZpbGVtb2RlfSIpIgogICAgICAg IGZpCiAgICAgIGRvbmUKICAgIGRvbmUKICAgIHByaW50ZiAiXFxuIgogIGRv bmUKfQoKaWYgJHtJU1RSQUNFfTsgdGhlbgogIGFsbHRlc3RzIC0tdHJhY2UK ZWxzZQogIGhlYWRlcjAKICBoZWFkZXIxCiAgaGVhZGVyMgogIGhlYWRlcjMK ICBoZWFkZXI0CiAgYWxsdGVzdHMKICBoZWFkZXI0CmZpCgpleGl0IDAK --------------C3A93BA6DAD0CAABF2E5A2B8 Content-Type: text/plain; charset=us-ascii -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple --------------C3A93BA6DAD0CAABF2E5A2B8--
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |