delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2005/03/05/04:07:11

Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
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
X-OB-Received: from unknown (205.158.62.182) by wfilter.us4.outblaze.com; 5 Mar 2005 09:06:51 -0000
MIME-Version: 1.0
From: "imaginate australiamail.com" <imaginate AT australiamail DOT com>
To: cygwin AT cygwin DOT com
Date: Sat, 05 Mar 2005 04:06:51 -0500
Subject: apparent bug: incorrect file position after write()
Message-Id: <20050305090651.B2AB31CE32B@ws1-6.us4.outblaze.com>
X-IsSubscribed: yes
Note-from-DJ: This may be spam

------------=_1110013611-15189-0
Content-Type: text/plain; charset="iso-8859-1"
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

I'm experiencing unexpected behaviour under cygwin that as far as I=20
know doesn't happen under linux.  I don't have access to linux to=20
test at present.

Some successful write()s to a file increment the file's position by=20
more than the count argument.  The extra byte(s) are added to the=20
file's size and can be read by lseek()ing to the exact location=20
where the extra byte(s) start.  When reading from a location prior=20
to this location the extra byte(s) become invisible although they=20
can affect the values returned from read() and lseek().

I have other priorities that prevent me from debugging the cygwin=20
source code however I have produced some code that reliably=20
replicates the problem.  I have attached two source files, one of=20
which is the bare minimum to reproduce the problem and the other of=20
which does a bit more analysis.  They can each be compiled simply=20
by giving the filename as an argument to gcc.

Also attached is a file with the contents of a shell session where=20
I demonstrate the results I am getting from the programs on this=20
machine.  Finally I have attached the results of the cygcheck -s -v=20
-r command.  The 'xyz' directory is not its actual name but this as=20
far as I can see is irrelevant to the problem.

Have at it folks...

--=20
___________________________________________________________
Sign-up for Ads Free at Mail.com
http://promo.mail.com/adsfreejump.htm


------------=_1110013611-15189-0
Content-Type: application/octet-stream; name="cygcheck.out"
Content-Disposition: attachment; filename="cygcheck.out"
Content-Transfer-Encoding: base64

DQpDeWd3aW4gQ29uZmlndXJhdGlvbiBEaWFnbm9zdGljcw0KQ3VycmVudCBT
eXN0ZW0gVGltZTogU2F0IE1hciAwNSAxOToyNDowOCAyMDA1DQoNCldpbmRv
d3MgOTggU0UgVmVyIDQuMTAgQnVpbGQgMjIyMiANCg0KUGF0aDoJQzpceHl6
XGN5Z3dpblx1c3JcbG9jYWxcYmluDQoJQzpceHl6XGN5Z3dpblxiaW4NCglD
Olx4eXpcY3lnd2luXGJpbg0KCUM6XHh5elxjeWd3aW5cdXNyXFgxMVI2XGJp
bg0KCWM6XFdJTkRPV1MNCgljOlxXSU5ET1dTXENPTU1BTkQNCg0KT3V0cHV0
IGZyb20gQzpceHl6XGN5Z3dpblxiaW5caWQuZXhlIChub250c2VjKQ0KVUlE
OiA4NjUoRGFuKSBHSUQ6IDU0NChhbGwpDQo1NDQoYWxsKQ0KDQpPdXRwdXQg
ZnJvbSBDOlx4eXpcY3lnd2luXGJpblxpZC5leGUgKG50c2VjKQ0KVUlEOiA4
NjUoRGFuKSBHSUQ6IDU0NChhbGwpDQo1NDQoYWxsKQ0KDQpTeXNEaXI6IEM6
XFdJTkRPV1NcU1lTVEVNDQpXaW5EaXI6IEM6XFdJTkRPV1MNCg0KSE9NRSA9
IGBDOlx4eXpcY3lnd2luXGhvbWVcRGFuJw0KTUFLRV9NT0RFID0gYHVuaXgn
DQpQV0QgPSBgL2hvbWUvRGFuJw0KVVNFUiA9IGBEYW4nDQoNCkJMQVNURVIg
PSBgQTIyMCBJNSBEMSBUNCBQMzMwJw0KQ01ETElORSA9IGBiYXNoIC0tbG9n
aW4gLWknDQpDT01TUEVDID0gYEM6XFdJTkRPV1NcQ09NTUFORC5DT00nDQpD
VlNfUlNIID0gYC9iaW4vc3NoJw0KSE9TVE5BTUUgPSBgYmVsaW5kYWpvbmVz
QGVmdGVsJw0KSU5GT1BBVEggPSBgL3Vzci9sb2NhbC9pbmZvOi91c3IvaW5m
bzovdXNyL3NoYXJlL2luZm86L3Vzci9hdXRvdG9vbC9kZXZlbC9pbmZvOi91
c3IvYXV0b3Rvb2wvc3RhYmxlL2luZm86Jw0KTUFOUEFUSCA9IGAvdXNyL2xv
Y2FsL21hbjovdXNyL21hbjovdXNyL3NoYXJlL21hbjovdXNyL2F1dG90b29s
L2RldmVsL21hbjonDQpPTERQV0QgPSBgL3Vzci9iaW4nDQpQUklOVEVSID0g
YEVQU09OIFN0eWx1cyBDNDMgU2VyaWVzJw0KUFJPTVBUID0gYCRwJGcnDQpQ
UzEgPSBgXFtcMDMzXTA7XHdcMDA3DQpcMDMzWzMybVxdXHVAXGggXFtcMDMz
WzMzbVx3XDAzM1swbVxdDQokICcNClNITFZMID0gYDEnDQpTWVNURU1ST09U
ID0gYEM6XFdJTkRPV1MnDQpURU1QID0gYEM6XFdJTkRPV1NcVEVNUCcNClRF
Uk0gPSBgY3lnd2luJw0KVE1QID0gYEM6XFdJTkRPV1NcVEVNUCcNCldJTkJP
T1RESVIgPSBgQzpcV0lORE9XUycNCldJTkRJUiA9IGBDOlxXSU5ET1dTJw0K
XyA9IGAvdXNyL2Jpbi9jeWdjaGVjaycNClBPU0lYTFlfQ09SUkVDVCA9IGAx
Jw0KDQpIS0VZX0NVUlJFTlRfVVNFUlxTb2Z0d2FyZVxDeWdudXMgU29sdXRp
b25zDQpIS0VZX0NVUlJFTlRfVVNFUlxTb2Z0d2FyZVxDeWdudXMgU29sdXRp
b25zXEN5Z3dpbg0KSEtFWV9DVVJSRU5UX1VTRVJcU29mdHdhcmVcQ3lnbnVz
IFNvbHV0aW9uc1xDeWd3aW5cbW91bnRzIHYyDQpIS0VZX0NVUlJFTlRfVVNF
UlxTb2Z0d2FyZVxDeWdudXMgU29sdXRpb25zXEN5Z3dpblxQcm9ncmFtIE9w
dGlvbnMNCkhLRVlfTE9DQUxfTUFDSElORVxTb2Z0d2FyZVxDeWdudXMgU29s
dXRpb25zDQpIS0VZX0xPQ0FMX01BQ0hJTkVcU29mdHdhcmVcQ3lnbnVzIFNv
bHV0aW9uc1xDeWd3aW4NCkhLRVlfTE9DQUxfTUFDSElORVxTb2Z0d2FyZVxD
eWdudXMgU29sdXRpb25zXEN5Z3dpblxtb3VudHMgdjINCiAgKGRlZmF1bHQp
ID0gYC9jeWdkcml2ZScNCiAgY3lnZHJpdmUgZmxhZ3MgPSAweDAwMDAwMDIw
DQpIS0VZX0xPQ0FMX01BQ0hJTkVcU29mdHdhcmVcQ3lnbnVzIFNvbHV0aW9u
c1xDeWd3aW5cbW91bnRzIHYyXC8NCiAgKGRlZmF1bHQpID0gYEM6XHh5elxj
eWd3aW4nDQogIGZsYWdzID0gMHgwMDAwMDAwOA0KSEtFWV9MT0NBTF9NQUNI
SU5FXFNvZnR3YXJlXEN5Z251cyBTb2x1dGlvbnNcQ3lnd2luXG1vdW50cyB2
MlwvdXNyL2Jpbg0KICAoZGVmYXVsdCkgPSBgQzpceHl6XGN5Z3dpbi9iaW4n
DQogIGZsYWdzID0gMHgwMDAwMDAwOA0KSEtFWV9MT0NBTF9NQUNISU5FXFNv
ZnR3YXJlXEN5Z251cyBTb2x1dGlvbnNcQ3lnd2luXG1vdW50cyB2MlwvdXNy
L2xpYg0KICAoZGVmYXVsdCkgPSBgQzpceHl6XGN5Z3dpbi9saWInDQogIGZs
YWdzID0gMHgwMDAwMDAwOA0KSEtFWV9MT0NBTF9NQUNISU5FXFNvZnR3YXJl
XEN5Z251cyBTb2x1dGlvbnNcQ3lnd2luXFByb2dyYW0gT3B0aW9ucw0KDQph
OiAgZmQgICAgICAgICAgICAgTi9BICAgIE4vQSAgICAgICAgICAgICAgICAg
ICAgDQpjOiAgaGQgIEZBVDMyICAgICAyMDA4TWIgIDk4JSBDUCAgICBVTiAg
ICAgICAgICAgNDExNQ0KZDogIGNkICAgICAgICAgICAgIE4vQSAgICBOL0Eg
ICAgICAgICAgICAgICAgICAgIA0KDQpDOlx4eXpcY3lnd2luICAgICAgLyAg
ICAgICAgICBzeXN0ZW0gIHRleHRtb2RlDQpDOlx4eXpcY3lnd2luL2JpbiAg
L3Vzci9iaW4gICBzeXN0ZW0gIHRleHRtb2RlDQpDOlx4eXpcY3lnd2luL2xp
YiAgL3Vzci9saWIgICBzeXN0ZW0gIHRleHRtb2RlDQouICAgICAgICAgICAg
ICAgICAgICAvY3lnZHJpdmUgIHN5c3RlbSAgdGV4dG1vZGUsY3lnZHJpdmUN
Cg0KTm90IEZvdW5kOiBhd2sNCkZvdW5kOiBDOlx4eXpcY3lnd2luXGJpblxi
YXNoLmV4ZQ0KRm91bmQ6IEM6XHh5elxjeWd3aW5cYmluXGNhdC5leGUNCkZv
dW5kOiBDOlx4eXpcY3lnd2luXGJpblxjcC5leGUNCkZvdW5kOiBDOlx4eXpc
Y3lnd2luXGJpblxjcHAuZXhlDQpGb3VuZDogQzpceHl6XGN5Z3dpblxiaW5c
ZmluZC5leGUNCkZvdW5kOiBjOlxXSU5ET1dTXENPTU1BTkRcZmluZC5leGUN
Cldhcm5pbmc6IEM6XHh5elxjeWd3aW5cYmluXGZpbmQuZXhlIGhpZGVzIGM6
XFdJTkRPV1NcQ09NTUFORFxmaW5kLmV4ZQ0KRm91bmQ6IEM6XHh5elxjeWd3
aW5cYmluXGdjYy5leGUNCk5vdCBGb3VuZDogZ2RiDQpGb3VuZDogQzpceHl6
XGN5Z3dpblxiaW5cZ3JlcC5leGUNCkZvdW5kOiBDOlx4eXpcY3lnd2luXGJp
blxsZC5leGUNCkZvdW5kOiBDOlx4eXpcY3lnd2luXGJpblxscy5leGUNCkZv
dW5kOiBDOlx4eXpcY3lnd2luXGJpblxtYWtlLmV4ZQ0KRm91bmQ6IEM6XHh5
elxjeWd3aW5cYmluXG12LmV4ZQ0KRm91bmQ6IEM6XHh5elxjeWd3aW5cYmlu
XHJtLmV4ZQ0KRm91bmQ6IEM6XHh5elxjeWd3aW5cYmluXHNlZC5leGUNCkZv
dW5kOiBDOlx4eXpcY3lnd2luXGJpblxzaC5leGUNCkZvdW5kOiBDOlx4eXpc
Y3lnd2luXGJpblx0YXIuZXhlDQoNCiAgIDU1ayAyMDA0LzA5LzE0IEM6XHh5
elxjeWd3aW5cYmluXGN5Z2J6Mi0xLmRsbCAtIG9zPTQuMCBpbWc9MS4wIHN5
cz00LjANCiAgICAgICAgICAgICAgICAgICJjeWdiejItMS5kbGwiIHYwLjAg
dHM9MjAwNC85LzE0IDE0OjE2DQogIDk5MWsgMjAwNC8wNy8wNiBDOlx4eXpc
Y3lnd2luXGJpblxjeWdpY29udi0yLmRsbCAtIG9zPTQuMCBpbWc9MS4wIHN5
cz00LjANCiAgICAgICAgICAgICAgICAgICJjeWdpY29udi0yLmRsbCIgdjAu
MCB0cz0yMDA0LzcvNyA0OjEwDQogICAzN2sgMjAwMy8wOC8xMCBDOlx4eXpc
Y3lnd2luXGJpblxjeWdpbnRsLTIuZGxsIC0gb3M9NC4wIGltZz0xLjAgc3lz
PTQuMA0KICAgICAgICAgICAgICAgICAgImN5Z2ludGwtMi5kbGwiIHYwLjAg
dHM9MjAwMy84LzExIDc6NTANCiAgIDU0ayAyMDA0LzA3LzA2IEM6XHh5elxj
eWd3aW5cYmluXGN5Z2ludGwtMy5kbGwgLSBvcz00LjAgaW1nPTEuMCBzeXM9
NC4wDQogICAgICAgICAgICAgICAgICAiY3lnaW50bC0zLmRsbCIgdjAuMCB0
cz0yMDA0LzcvNyAzOjUxDQogICA0MGsgMjAwNC8xMC8xMCBDOlx4eXpcY3ln
d2luXGJpblxjeWdmb3JtLTguZGxsIC0gb3M9NC4wIGltZz0xLjAgc3lzPTQu
MA0KICAgICAgICAgICAgICAgICAgImN5Z2Zvcm0tOC5kbGwiIHYwLjAgdHM9
MjAwNC8xMC8xMCAxOTozMw0KICAgMjJrIDIwMDQvMTAvMTAgQzpceHl6XGN5
Z3dpblxiaW5cY3lnbWVudS04LmRsbCAtIG9zPTQuMCBpbWc9MS4wIHN5cz00
LjANCiAgICAgICAgICAgICAgICAgICJjeWdtZW51LTguZGxsIiB2MC4wIHRz
PTIwMDQvMTAvMTAgMTk6MzMNCiAgIDc0ayAyMDA0LzEwLzEwIEM6XHh5elxj
eWd3aW5cYmluXGN5Z25jdXJzZXMrKy04LmRsbCAtIG9zPTQuMCBpbWc9MS4w
IHN5cz00LjANCiAgICAgICAgICAgICAgICAgICJjeWduY3Vyc2VzKystOC5k
bGwiIHYwLjAgdHM9MjAwNC8xMC8xMCAxOTozMw0KICAyMTZrIDIwMDQvMTAv
MTAgQzpceHl6XGN5Z3dpblxiaW5cY3lnbmN1cnNlcy04LmRsbCAtIG9zPTQu
MCBpbWc9MS4wIHN5cz00LjANCiAgICAgICAgICAgICAgICAgICJjeWduY3Vy
c2VzLTguZGxsIiB2MC4wIHRzPTIwMDQvMTAvMTAgMTk6MjUNCiAgIDEzayAy
MDA0LzEwLzEwIEM6XHh5elxjeWd3aW5cYmluXGN5Z3BhbmVsLTguZGxsIC0g
b3M9NC4wIGltZz0xLjAgc3lzPTQuMA0KICAgICAgICAgICAgICAgICAgImN5
Z3BhbmVsLTguZGxsIiB2MC4wIHRzPTIwMDQvMTAvMTAgMTk6MzINCiAgIDYy
ayAyMDAzLzEyLzExIEM6XHh5elxjeWd3aW5cYmluXGN5Z3BjcmUtMC5kbGwg
LSBvcz00LjAgaW1nPTEuMCBzeXM9NC4wDQogICAgICAgICAgICAgICAgICAi
Y3lncGNyZS0wLmRsbCIgdjAuMCB0cz0yMDAzLzEyLzEyIDQ6MDENCiAgICA5
ayAyMDAzLzEyLzExIEM6XHh5elxjeWd3aW5cYmluXGN5Z3BjcmVwb3NpeC0w
LmRsbCAtIG9zPTQuMCBpbWc9MS4wIHN5cz00LjANCiAgICAgICAgICAgICAg
ICAgICJjeWdwY3JlcG9zaXgtMC5kbGwiIHYwLjAgdHM9MjAwMy8xMi8xMiA0
OjAxDQogICAxOGsgMjAwNC8wNy8wNiBDOlx4eXpcY3lnd2luXGJpblxjeWdj
aGFyc2V0LTEuZGxsIC0gb3M9NC4wIGltZz0xLjAgc3lzPTQuMA0KICAgICAg
ICAgICAgICAgICAgImN5Z2NoYXJzZXQtMS5kbGwiIHYwLjAgdHM9MjAwNC83
LzcgNDowOQ0KICAgMjJrIDIwMDEvMTIvMTMgQzpceHl6XGN5Z3dpblxiaW5c
Y3lnaW50bC0xLmRsbCAtIG9zPTQuMCBpbWc9MS4wIHN5cz00LjANCiAgICAg
ICAgICAgICAgICAgICJjeWdpbnRsLTEuZGxsIiB2MC4wIHRzPTIwMDEvMTIv
MTMgMjA6MjgNCiAgIDIyayAyMDAyLzA2LzA5IEM6XHh5elxjeWd3aW5cYmlu
XGN5Z3BvcHQtMC5kbGwgLSBvcz00LjAgaW1nPTEuMCBzeXM9NC4wDQogICAg
ICAgICAgICAgICAgICAiY3lncG9wdC0wLmRsbCIgdjAuMCB0cz0yMDAyLzYv
OSAxNTo0NQ0KICAgMjFrIDIwMDEvMDYvMjAgQzpceHl6XGN5Z3dpblxiaW5c
Y3lnaW50bC5kbGwgLSBvcz00LjAgaW1nPTEuMCBzeXM9NC4wDQogICAgICAg
ICAgICAgICAgICAiY3lnaW50bC5kbGwiIHYwLjAgdHM9MjAwMS82LzIxIDM6
MDkNCiAgIDQ4ayAyMDAzLzA4LzA5IEM6XHh5elxjeWd3aW5cYmluXGN5Z2Zv
cm03LmRsbCAtIG9zPTQuMCBpbWc9MS4wIHN5cz00LjANCiAgICAgICAgICAg
ICAgICAgICJjeWdmb3JtNy5kbGwiIHYwLjAgdHM9MjAwMy84LzkgMTk6MjUN
CiAgIDI5ayAyMDAzLzA4LzA5IEM6XHh5elxjeWd3aW5cYmluXGN5Z21lbnU3
LmRsbCAtIG9zPTQuMCBpbWc9MS4wIHN5cz00LjANCiAgICAgICAgICAgICAg
ICAgICJjeWdtZW51Ny5kbGwiIHYwLjAgdHM9MjAwMy84LzkgMTk6MjUNCiAg
MjI0ayAyMDAzLzA4LzA5IEM6XHh5elxjeWd3aW5cYmluXGN5Z25jdXJzZXM3
LmRsbCAtIG9zPTQuMCBpbWc9MS4wIHN5cz00LjANCiAgICAgICAgICAgICAg
ICAgICJjeWduY3Vyc2VzNy5kbGwiIHYwLjAgdHM9MjAwMy84LzkgMTk6MjQN
CiAgIDE5ayAyMDAzLzA4LzA5IEM6XHh5elxjeWd3aW5cYmluXGN5Z3BhbmVs
Ny5kbGwgLSBvcz00LjAgaW1nPTEuMCBzeXM9NC4wDQogICAgICAgICAgICAg
ICAgICAiY3lncGFuZWw3LmRsbCIgdjAuMCB0cz0yMDAzLzgvOSAxOToyNA0K
ICAgNjNrIDIwMDMvMDQvMTEgQzpceHl6XGN5Z3dpblxiaW5cY3lncGNyZS5k
bGwgLSBvcz00LjAgaW1nPTEuMCBzeXM9NC4wDQogICAgICAgICAgICAgICAg
ICAiY3lncGNyZS5kbGwiIHYwLjAgdHM9MjAwMy80LzExIDE4OjMxDQogICA2
MWsgMjAwMy8wNC8xMSBDOlx4eXpcY3lnd2luXGJpblxjeWdwY3JlcG9zaXgu
ZGxsIC0gb3M9NC4wIGltZz0xLjAgc3lzPTQuMA0KICAgICAgICAgICAgICAg
ICAgImN5Z3BjcmVwb3NpeC5kbGwiIHYwLjAgdHM9MjAwMy80LzExIDE4OjMx
DQogICA2MmsgMjAwNC8xMC8xMCBDOlx4eXpcY3lnd2luXGJpblxjeWd6LmRs
bCAtIG9zPTQuMCBpbWc9MS4wIHN5cz00LjANCiAgICAgICAgICAgICAgICAg
ICJjeWd6LmRsbCIgdjAuMCB0cz0yMDA0LzEwLzEwIDE1OjA5DQogMTExNGsg
MjAwNC8xMS8xMCBDOlx4eXpcY3lnd2luXGJpblxjeWd3aW4xLmRsbCAtIG9z
PTQuMCBpbWc9MS4wIHN5cz00LjANCiAgICAgICAgICAgICAgICAgICJjeWd3
aW4xLmRsbCIgdjAuMCB0cz0yMDA0LzExLzExIDA6MzQNCiAgICBDeWd3aW4g
RExMIHZlcnNpb24gaW5mbzoNCiAgICAgICAgRExMIHZlcnNpb246IDEuNS4x
Mg0KICAgICAgICBETEwgZXBvY2g6IDE5DQogICAgICAgIERMTCBiYWQgc2ln
bmFsIG1hc2s6IDE5MDA1DQogICAgICAgIERMTCBvbGQgdGVybWlvczogNQ0K
ICAgICAgICBETEwgbWFsbG9jIGVudjogMjgNCiAgICAgICAgQVBJIG1ham9y
OiAwDQogICAgICAgIEFQSSBtaW5vcjogMTE2DQogICAgICAgIFNoYXJlZCBk
YXRhOiA0DQogICAgICAgIERMTCBpZGVudGlmaWVyOiBjeWd3aW4xDQogICAg
ICAgIE1vdW50IHJlZ2lzdHJ5OiAyDQogICAgICAgIEN5Z251cyByZWdpc3Ry
eSBuYW1lOiBDeWdudXMgU29sdXRpb25zDQogICAgICAgIEN5Z3dpbiByZWdp
c3RyeSBuYW1lOiBDeWd3aW4NCiAgICAgICAgUHJvZ3JhbSBvcHRpb25zIG5h
bWU6IFByb2dyYW0gT3B0aW9ucw0KICAgICAgICBDeWd3aW4gbW91bnQgcmVn
aXN0cnkgbmFtZTogbW91bnRzIHYyDQogICAgICAgIEN5Z2RyaXZlIGZsYWdz
OiBjeWdkcml2ZSBmbGFncw0KICAgICAgICBDeWdkcml2ZSBwcmVmaXg6IGN5
Z2RyaXZlIHByZWZpeA0KICAgICAgICBDeWdkcml2ZSBkZWZhdWx0IHByZWZp
eDogDQogICAgICAgIEJ1aWxkIGRhdGU6IFdlZCBOb3YgMTAgMDg6MzQ6NDcg
RVNUIDIwMDQNCiAgICAgICAgU2hhcmVkIGlkOiBjeWd3aW4xUzQNCg0KDQpD
eWd3aW4gUGFja2FnZSBJbmZvcm1hdGlvbg0KTGFzdCBkb3dubG9hZGVkIGZp
bGVzIHRvOiBDOlx4eXpcZG93bmxvYWRzXGN5Z3dpbg0KTGFzdCBkb3dubG9h
ZGVkIGZpbGVzIGZyb206IGZ0cDovL21pcnJvci5hYXJuZXQuZWR1LmF1L3B1
Yi9jeWd3aW4NCg0KUGFja2FnZSAgICAgICAgICAgICAgVmVyc2lvbg0KX3Vw
ZGF0ZS1pbmZvLWRpciAgICAgMDAyMzEtMQ0KYXNoICAgICAgICAgICAgICAg
ICAgMjAwNDAxMjctMQ0KYmFzZS1maWxlcyAgICAgICAgICAgMy4yLTENCmJh
c2UtcGFzc3dkICAgICAgICAgIDIuMi0xDQpiYXNoICAgICAgICAgICAgICAg
ICAyLjA1Yi0xNg0KYmludXRpbHMgICAgICAgICAgICAgMjAwNDEyMjktMQ0K
YnppcDIgICAgICAgICAgICAgICAgMS4wLjItNg0KY29yZXV0aWxzICAgICAg
ICAgICAgNS4yLjEtNQ0KY3lndXRpbHMgICAgICAgICAgICAgMS4yLjYtMQ0K
Y3lnd2luICAgICAgICAgICAgICAgMS41LjEyLTENCmN5Z3dpbi1kb2MgICAg
ICAgICAgIDEuNC0yDQpkaWZmdXRpbHMgICAgICAgICAgICAyLjguNy0xDQpm
aW5kdXRpbHMgICAgICAgICAgICAyMDA0MTIyNy0xDQpnY2MtY29yZSAgICAg
ICAgICAgICAzLjMuMy0zDQpnY2MtbWluZ3ctY29yZSAgICAgICAyMDA0MDgx
MC0xDQpncmVwICAgICAgICAgICAgICAgICAyLjUuMWEtMQ0KZ3JvZmYgICAg
ICAgICAgICAgICAgMS4xOC4xLTINCmd6aXAgICAgICAgICAgICAgICAgIDEu
My41LTENCmxlc3MgICAgICAgICAgICAgICAgIDM4MS0xDQpsaWJiejJfMSAg
ICAgICAgICAgICAxLjAuMi02DQpsaWJjaGFyc2V0MSAgICAgICAgICAxLjku
Mi0xDQpsaWJpY29udiAgICAgICAgICAgICAxLjkuMi0xDQpsaWJpY29udjIg
ICAgICAgICAgICAxLjkuMi0xDQpsaWJpbnRsICAgICAgICAgICAgICAwLjEw
LjM4LTMNCmxpYmludGwxICAgICAgICAgICAgIDAuMTAuNDAtMQ0KbGliaW50
bDIgICAgICAgICAgICAgMC4xMi4xLTMNCmxpYmludGwzICAgICAgICAgICAg
IDAuMTQuMS0xDQpsaWJuY3Vyc2VzNyAgICAgICAgICA1LjMtNA0KbGlibmN1
cnNlczggICAgICAgICAgNS40LTENCmxpYnBjcmUgICAgICAgICAgICAgIDQu
MS0xDQpsaWJwY3JlMCAgICAgICAgICAgICA0LjUtMQ0KbGlicG9wdDAgICAg
ICAgICAgICAgMS42LjQtNA0KbG9naW4gICAgICAgICAgICAgICAgMS45LTcN
Cm1ha2UgICAgICAgICAgICAgICAgIDMuODAtMQ0KbWFuICAgICAgICAgICAg
ICAgICAgMS41bzEtMQ0KbWluZ3ctcnVudGltZSAgICAgICAgMy43LTENCm1r
dGVtcCAgICAgICAgICAgICAgIDEuNS0zDQpuY3Vyc2VzICAgICAgICAgICAg
ICA1LjQtMQ0KcmVhZGxpbmUgICAgICAgICAgICAgNS4wLTENCnNlZCAgICAg
ICAgICAgICAgICAgIDQuMS4zLTENCnRhciAgICAgICAgICAgICAgICAgIDEu
MTMuMjUtNQ0KdGVybWNhcCAgICAgICAgICAgICAgMjAwMjExMDYtMg0KdGVy
bWluZm8gICAgICAgICAgICAgNS40XzIwMDQxMDA5LTENCnRleGluZm8gICAg
ICAgICAgICAgIDQuNy0yDQp3MzJhcGkgICAgICAgICAgICAgICAzLjItMQ0K
d2hpY2ggICAgICAgICAgICAgICAgMS42LTENCnpsaWIgICAgICAgICAgICAg
ICAgIDEuMi4yLTENClVzZSAtaCB0byBzZWUgaGVscCBhYm91dCBlYWNoIHNl
Y3Rpb24NCg==

------------=_1110013611-15189-0
Content-Type: text/plain; name="shell.txt"
Content-Disposition: attachment; filename="shell.txt"
Content-Transfer-Encoding: quoted-printable

=0D
This is a copy of my shell interaction:=0D
=0D
$ ls -l=0D
total 13=0D
-rw-r--r--  1 Dan all  1980 Mar  5 17:56 shortnsweet.c=0D
-rw-r--r--  1 Dan all 10962 Mar  5 17:48 writetest.c=0D
$ gcc shortnsweet.c -o shortnsweet=0D
$ ./shortnsweet=0D
chkwrite:: extra bytes written (according to lseek)=0D
        supposed to be     : 1 byte(s)=0D
        actual             : 2 byte(s)=0D
        file pos (pre-wr  ): 10=0D
        file pos (post-wr ): 12=0D
        file size (fstat)  : 12=0D
$ ls -l tstfile=0D
-rw-r--r--  1 Dan all 16 Mar  5 18:05 tstfile=0D
$ gcc writetest.c -o writetest=0D
$ ./writetest=0D
chkwrite:: extra bytes written (according to lseek)=0D
        supposed to be     : 1 byte(s)=0D
        actual             : 2 byte(s)=0D
        total bytes written: 11=0D
        file pos (pre-wr  ): 10=0D
        file pos (post-wr ): 12=0D
        file size (fstat)  : 12=0D
        wrote              : 0xa=0D
        read back          : 0xa=0D
inconsistency:: showing chkread errors:=0D
chkread:: too few bytes read (according to return value of read)=0D
        supposed to be     : 2 byte(s)=0D
        actual             : 1 byte(s)=0D
        file pos (pre-rd)  : 10=0D
        file pos (post-rd) : 12=0D
        read               : 0xa=0D
examine_inconsistency:: read 1 (extra bytes) bytes:: 0xa=0D
examine_inconsistency:: showing chkread errors (intended):=0D
chkread:: extra bytes read (according to lseek)=0D
        supposed to be     : 1 byte(s)=0D
        actual             : 2 byte(s)=0D
        file pos (pre-read): 10=0D
        file pos (post-rd) : 12=0D
        read               : 0xa=0D
examine_inconsistency:: showing chkread errors (intended and extra):=0D
chkread:: too few bytes read (according to return value of read)=0D
        supposed to be     : 2 byte(s)=0D
        actual             : 1 byte(s)=0D
        file pos (pre-rd)  : 10=0D
        file pos (post-rd) : 12=0D
        read               : 0xa=0D
examine_inconsistency:: showing chkread errors (intended and extra+1):=0D
chkread:: too few bytes read (according to return value of read)=0D
        supposed to be     : 3 byte(s)=0D
        actual             : 2 byte(s)=0D
        file pos (pre-rd)  : 10=0D
        file pos (post-rd) : 13=0D
        read               : 0xa 0xb=0D
read_and_fprint_file:: showing chkread errors (entire file):=0D
chkread:: too few bytes read (according to return value of read)=0D
        supposed to be     : 16 byte(s)=0D
        actual             : 15 byte(s)=0D
        file pos (pre-rd)  : 0=0D
        file pos (post-rd) : 16=0D
        read               : 0 0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xa 0xb =
0xc 0xd 0xe=0D
chklseek_then_read_byte:: read 0 at pos 0=0D
chklseek_then_read_byte:: read 0x1 at pos 0x1=0D
chklseek_then_read_byte:: read 0x2 at pos 0x2=0D
chklseek_then_read_byte:: read 0x3 at pos 0x3=0D
chklseek_then_read_byte:: read 0x4 at pos 0x4=0D
chklseek_then_read_byte:: read 0x5 at pos 0x5=0D
chklseek_then_read_byte:: read 0x6 at pos 0x6=0D
chklseek_then_read_byte:: read 0x7 at pos 0x7=0D
chklseek_then_read_byte:: read 0x8 at pos 0x8=0D
chklseek_then_read_byte:: read 0x9 at pos 0x9=0D
chklseek_then_read_byte:: read 0xa at pos 0xa=0D
chklseek_then_read_byte:: read 0xa at pos 0xb=0D
chklseek_then_read_byte:: read 0xb at pos 0xc=0D
chklseek_then_read_byte:: read 0xc at pos 0xd=0D
chklseek_then_read_byte:: read 0xd at pos 0xe=0D
$ ls -l tstfile=0D
-rw-r--r--  1 Dan all 16 Mar  5 18:07 tstfile=0D

------------=_1110013611-15189-0
Content-Type: application/octet-stream; name="shortnsweet.c"
Content-Disposition: attachment; filename="shortnsweet.c"
Content-Transfer-Encoding: base64

I2luY2x1ZGUgPHN5cy90eXBlcy5oPgkvKiogb3BlbiBmc3RhdAkJCQkJICAq
Ki8NCiNpbmNsdWRlIDxzeXMvc3RhdC5oPgkvKiogb3BlbiBmc3RhdAkJCQkJ
ICAqKi8NCiNpbmNsdWRlIDxmY250bC5oPgkvKiogb3BlbgkJCQkJICAqKi8N
CiNpbmNsdWRlIDx1bmlzdGQuaD4JLyoqIHdyaXRlIGNsb3NlIGZzdGF0CQkJ
CSAgKiovDQojaW5jbHVkZSA8c3RkaW8uaD4JLyoqIGZwcmludGYgcGVycm9y
CQkJCSAgKiovDQojaW5jbHVkZSA8c3RkbGliLmg+CS8qKiBFWElUX0ZBSUxV
UkUgRVhJVF9TVUNDRVNTCQkJICAqKi8NCg0KI2RlZmluZSBURVNURklMRQki
Li90c3RmaWxlIg0KI2RlZmluZSBMT09QTUFYCQkweEYNCg0Kdm9pZCBjaGts
c2Vla190aGVuX3JlYWRfYnl0ZShpbnQgZmQsIG9mZl90IHBvcyk7IA0Kc3Np
emVfdCBjaGt3cml0ZShpbnQgZmQsIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90
IGNvdW50KTsNCg0KaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQ0K
ew0KCWludCBmZDsNCgl1bnNpZ25lZCBjaGFyIGJ1ZjsNCgkNCglpZiAoKGZk
ID0gb3BlbihURVNURklMRSwgT19SRFdSIHwgT19DUkVBVCB8IE9fVFJVTkMs
DQoJCQkJCVNfSVJVU1IgfCBTX0lXVVNSKSkgPT0gLTEpIHsNCgkJcGVycm9y
KCJtYWluOjogb3BlbiBmYWlsZWQiKTsNCgkJcmV0dXJuIEVYSVRfRkFJTFVS
RTsNCgl9DQogICAgICAgCWZvciAoYnVmID0gMDsgYnVmIDwgTE9PUE1BWDsg
YnVmKyspDQogICAgICAgCQljaGt3cml0ZShmZCwgJmJ1ZiwgMSk7DQogICAg
ICAgCWlmIChjbG9zZShmZCkgPT0gLTEpIHsNCiAgICAgICAJCXBlcnJvcigi
bWFpbjo6IGNsb3NlIGZhaWxlZCIpOw0KCQlyZXR1cm4gRVhJVF9GQUlMVVJF
Ow0KCX0NCglyZXR1cm4gRVhJVF9TVUNDRVNTOw0KfQ0KDQpzc2l6ZV90IGNo
a3dyaXRlKGludCBmZCwgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgY291bnQp
DQp7DQoJc3NpemVfdCBjb3VudF9yZXQsIGRlbHRhOw0KCW9mZl90IGluaXRf
cG9zLCBmaW5hbF9wb3MgPSAtMTsNCglzdHJ1Y3Qgc3RhdCBzdGF0Ow0KDQoJ
aWYgKChpbml0X3BvcyA9IGxzZWVrKGZkLCAwLCBTRUVLX0NVUikpID09IC0x
KQ0KCQlwZXJyb3IoImNoa3dyaXRlOjogbHNlZWsgZmFpbGVkIik7DQoJaWYg
KChjb3VudF9yZXQgPSB3cml0ZShmZCwgYnVmLCBjb3VudCkpID09IC0xKSB7
DQoJCXBlcnJvcigiY2hrd3JpdGU6OiB3cml0ZSBmYWlsZWQiKTsNCgkJcmV0
dXJuIGNvdW50X3JldDsNCgl9DQogICAgICAgCWlmICgoZmluYWxfcG9zID0g
bHNlZWsoZmQsIDAsIFNFRUtfQ1VSKSkgPT0gLTEpDQogICAgICAgCQlwZXJy
b3IoImNoa3dyaXRlOjogbHNlZWsgZmFpbGVkIik7DQoJaWYgKGluaXRfcG9z
ICE9IC0xICYmIGZpbmFsX3BvcyAhPSAtMSANCgkJCSYmIChkZWx0YSA9IGZp
bmFsX3BvcyAtIGluaXRfcG9zKSAhPSBjb3VudCkgew0KCQlmcHJpbnRmKHN0
ZGVyciwgImNoa3dyaXRlOjogJXMgYnl0ZXMgd3JpdHRlbiAiDQoJCQkJIihh
Y2NvcmRpbmcgdG8gbHNlZWspXG4iDQoJCQkJIlx0c3VwcG9zZWQgdG8gYmUg
ICAgIDogJWQgYnl0ZShzKVxuIg0KCQkJCSJcdGFjdHVhbCAgICAgICAgICAg
ICA6ICVkIGJ5dGUocylcbiIsDQoJCQkJKGRlbHRhID4gY291bnQpID8gImV4
dHJhIiA6ICJ0b28gZmV3IiwNCgkJCQljb3VudCwgZGVsdGEpOw0KCQlmcHJp
bnRmKHN0ZGVyciwgIlx0ZmlsZSBwb3MgKHByZS13ciAgKTogJWRcbiIsIChp
bnQpaW5pdF9wb3MpOw0KCQlmcHJpbnRmKHN0ZGVyciwgIlx0ZmlsZSBwb3Mg
KHBvc3Qtd3IgKTogJWRcbiIsIChpbnQpZmluYWxfcG9zKTsNCgkJaWYgKGZz
dGF0KGZkLCAmc3RhdCkgPT0gLTEpDQoJCQlwZXJyb3IoImNoa3dyaXRlOjog
ZnN0YXQgZmFpbGVkIik7DQoJCWVsc2UgDQoJCQlmcHJpbnRmKHN0ZGVyciwg
Ilx0ZmlsZSBzaXplIChmc3RhdCkgIDogJWRcbiIsIA0KCQkJCQkJCShpbnQp
c3RhdC5zdF9zaXplKTsNCgl9DQoJcmV0dXJuIGNvdW50X3JldDsNCn0NCg0K

------------=_1110013611-15189-0
Content-Type: application/octet-stream; name="writetest.c"
Content-Disposition: attachment; filename="writetest.c"
Content-Transfer-Encoding: base64

I2luY2x1ZGUgPHN5cy90eXBlcy5oPgkvKiogb3BlbiBmc3RhdAkJCQkJICAq
Ki8NCiNpbmNsdWRlIDxzeXMvc3RhdC5oPgkvKiogb3BlbiBmc3RhdAkJCQkJ
ICAqKi8NCiNpbmNsdWRlIDxmY250bC5oPgkvKiogb3BlbgkJCQkJICAqKi8N
CiNpbmNsdWRlIDx1bmlzdGQuaD4JLyoqIHJlYWQgd3JpdGUgY2xvc2UgZnN0
YXQJCQkgICoqLw0KI2luY2x1ZGUgPHN0ZGlvLmg+CS8qKiBmcHJpbnRmIHBl
cnJvcgkJCQkgICoqLw0KI2luY2x1ZGUgPHN0ZGxpYi5oPgkvKiogbWFsbG9j
IHJlYWxsb2MgZnJlZSBFWElUX0ZBSUxVUkUgRVhJVF9TVUNDRVNTICoqLw0K
I2luY2x1ZGUgPHN0cmluZy5oPgkvKiogc3RyY2F0CQkJCQkgICoqLw0KDQoj
ZGVmaW5lIFRFU1RGSUxFCSIuL3RzdGZpbGUiDQojZGVmaW5lIExPT1BNQVgJ
CTB4Rg0KI2RlZmluZSBNQVhTVFJMRU4gICAgICAgMjA0OA0KI2RlZmluZSBt
YXgoWCwgWSkJKCgoWCk+KFkpKT8oWCk6KFkpKQ0KDQpzdHJ1Y3QgaW5jb25z
aXN0ZW5jeSB7DQoJb2ZmX3QgaW5pdF9wb3M7DQoJc2l6ZV90IGNvdW50Ow0K
CXNzaXplX3QgZGVsdGE7CQ0KfTsNCg0Kdm9pZCBhZGRfaW5jb25zaXN0ZW5j
eShvZmZfdCBpbml0X3Bvcywgc2l6ZV90IGNvdW50LCBzc2l6ZV90IGRlbHRh
KTsNCnZvaWQgY2hrbHNlZWtfdGhlbl9yZWFkX2J5dGUoaW50IGZkLCBvZmZf
dCBwb3MpOyANCnNzaXplX3QgY2hrcmVhZChpbnQgZmQsIHZvaWQgKmJ1Ziwg
c2l6ZV90IGNvdW50KTsNCnNzaXplX3QgY2hrd3JpdGUoaW50IGZkLCBjb25z
dCB2b2lkICpidWYsIHNpemVfdCBjb3VudCk7DQp2b2lkIGV4YW1pbmVfaW5j
b25zaXN0ZW5jeShpbnQgZmQsIHN0cnVjdCBpbmNvbnNpc3RlbmN5IGluY29u
c2lzdGVuY3kpOyANCnZvaWQgZnByaW50X3JlYWRfYnl0ZXMoRklMRSAqc3Ry
ZWFtLCBjb25zdCBjaGFyICpmbiwgY29uc3QgY2hhciAqZGVzYywgDQoJCQkJ
CQljb25zdCBjaGFyICpidWYsIGludCBjb3VudCk7DQp2b2lkIGluY29uc2lz
dGVuY3koaW50IGZkLCBjb25zdCB2b2lkICpidWYsIHNpemVfdCBjb3VudCwg
b2ZmX3QgaW5pdF9wb3MsIA0KCW9mZl90IGZpbmFsX3Bvcywgc2l6ZV90IGFj
dHVhbCwgaW50IGJ5dGVzX3dyaXR0ZW4sIGNvbnN0IGNoYXIgKm1ldGhvZCk7
DQp2b2lkIHJlYWRfYW5kX2ZwcmludF9maWxlKEZJTEUgKnN0cmVhbSwgaW50
IGZkKTsgDQppbnQgdGVzdF9mcHJpbnRfY2hrcmVhZF9lcnJzKEZJTEUgKnN0
cmVhbSwgY29uc3QgY2hhciAqZm4sIGNvbnN0IGNoYXIgKmRlc2MpOw0KDQpz
dHJ1Y3QgaW5jb25zaXN0ZW5jeSAqaW5jb25zaXN0ZW5jaWVzID0gTlVMTDsN
CmludCAJCSAgICAgIHN6IAkgICAgICA9IDAgICA7DQpjaGFyCQkgICAgICBl
cnJzW01BWFNUUkxFTl0gICAgICAgOw0KDQppbnQgbWFpbihpbnQgYXJnYywg
Y2hhciAqKmFyZ3YpDQp7DQoJaW50IGZkLCBpOw0KCXVuc2lnbmVkIGNoYXIg
YnVmOw0KCQ0KCWlmICgoZmQgPSBvcGVuKFRFU1RGSUxFLCBPX1JEV1IgfCBP
X0NSRUFUIHwgT19UUlVOQywNCgkJCQkJU19JUlVTUiB8IFNfSVdVU1IpKSA9
PSAtMSkgew0KCQlwZXJyb3IoIm1haW46OiBvcGVuIGZhaWxlZCIpOw0KCQly
ZXR1cm4gRVhJVF9GQUlMVVJFOw0KCX0NCiAgICAgICAJZm9yIChidWYgPSAw
OyBidWYgPCBMT09QTUFYOyBidWYrKykNCiAgICAgICAJCWNoa3dyaXRlKGZk
LCAmYnVmLCAxKTsNCglmb3IgKGkgPSAwOyBpIDwgc3o7IGkrKykNCgkJZXhh
bWluZV9pbmNvbnNpc3RlbmN5KGZkLCBpbmNvbnNpc3RlbmNpZXNbaV0pOw0K
CXJlYWRfYW5kX2ZwcmludF9maWxlKHN0ZGVyciwgZmQpOyANCglmb3IgKGkg
PSAwOyBpIDwgTE9PUE1BWDsgaSsrKQ0KCQljaGtsc2Vla190aGVuX3JlYWRf
Ynl0ZShmZCwgaSk7IA0KCWZyZWUoaW5jb25zaXN0ZW5jaWVzKTsNCiAgICAg
ICAJaWYgKGNsb3NlKGZkKSA9PSAtMSkgew0KICAgICAgIAkJcGVycm9yKCJt
YWluOjogY2xvc2UgZmFpbGVkIik7DQoJCXJldHVybiBFWElUX0ZBSUxVUkU7
DQoJfQ0KCXJldHVybiBFWElUX1NVQ0NFU1M7DQp9DQoNCnZvaWQgYWRkX2lu
Y29uc2lzdGVuY3kob2ZmX3QgaW5pdF9wb3MsIHNpemVfdCBjb3VudCwgc3Np
emVfdCBkZWx0YSkNCnsNCglpZiAoKGluY29uc2lzdGVuY2llcyA9IHJlYWxs
b2MoaW5jb25zaXN0ZW5jaWVzLCANCgkJCXNpemVvZihzdHJ1Y3QgaW5jb25z
aXN0ZW5jeSkgKiAoKytzeikpKSA9PSBOVUxMKSB7DQoJCXBlcnJvcigiYWRk
X2luY29uc2lzdGVuY3k6OiByZWFsbG9jIGZhaWxlZCIpOw0KCQlyZXR1cm47
DQoJfQ0KCWluY29uc2lzdGVuY2llc1tzeiAtIDFdLmluaXRfcG9zID0gaW5p
dF9wb3M7DQoJaW5jb25zaXN0ZW5jaWVzW3N6IC0gMV0uY291bnQJID0gY291
bnQgICA7DQoJaW5jb25zaXN0ZW5jaWVzW3N6IC0gMV0uZGVsdGEJID0gZGVs
dGEgICA7DQp9DQoNCnZvaWQgY2hrbHNlZWtfdGhlbl9yZWFkX2J5dGUoaW50
IGZkLCBvZmZfdCBwb3MpDQp7DQoJdW5zaWduZWQgY2hhciBidWY7DQoJDQoJ
aWYgKGxzZWVrKGZkLCBwb3MsIFNFRUtfU0VUKSA9PSAtMSkgew0KCQlwZXJy
b3IoImNoa2xzZWVrX3RoZW5fcmVhZDo6IGxzZWVrIGZhaWxlZCIpOw0KCQly
ZXR1cm47DQoJfQ0KCWlmIChjaGtyZWFkKGZkLCAmYnVmLCAxKSA9PSAtMSkg
ew0KCQlmcHJpbnRmKHN0ZGVyciwgImNoa2xzZWVrX3RoZW5fcmVhZF9ieXRl
OjogcmVhZCBmYWlsZWQgZm9yIHBvcyAiDQoJCQkJIiVkXG4iLCAoaW50KXBv
cyk7DQoJCXRlc3RfZnByaW50X2Noa3JlYWRfZXJycyhzdGRlcnIsICJjaGts
c2Vla190aGVuX3JlYWRfYnl0ZSIsICIiKTsNCgl9DQoJZWxzZQ0KCQlmcHJp
bnRmKHN0ZGVyciwgImNoa2xzZWVrX3RoZW5fcmVhZF9ieXRlOjogcmVhZCAl
I2hoeCBhdCBwb3MgJSN4XG4iLCBidWYsIChpbnQpcG9zKTsNCn0NCg0Kc3Np
emVfdCBjaGtyZWFkKGludCBmZCwgdm9pZCAqYnVmLCBzaXplX3QgY291bnQp
DQp7DQoJc3NpemVfdCBjb3VudF9yZXQsIGRlbHRhOw0KCW9mZl90IGZpbmFs
X3BvcywgaW5pdF9wb3M7DQoJaW50IGksIGluY29uc2lzdGVudCA9IDA7DQoJ
Y2hhciB0bXBbTUFYU1RSTEVOXTsNCgkNCgllcnJzWzBdID0gJ1wwJzsNCglp
ZiAoKGluaXRfcG9zID0gbHNlZWsoZmQsIDAsIFNFRUtfQ1VSKSkgPT0gLTEp
DQoJCXBlcnJvcigiY2hrcmVhZDo6IGxzZWVrIGZhaWxlZCIpOw0KCWlmICgo
Y291bnRfcmV0ID0gcmVhZChmZCwgYnVmLCBjb3VudCkpID09IC0xKSB7DQoJ
CXBlcnJvcigiY2hrcmVhZDo6IHJlYWQgZmFpbGVkIik7DQoJCXJldHVybiBj
b3VudF9yZXQ7DQoJfQ0KICAgICAgIAlpZiAoKGZpbmFsX3BvcyA9IGxzZWVr
KGZkLCAwLCBTRUVLX0NVUikpID09IC0xKQ0KICAgICAgIAkJcGVycm9yKCJj
aGtyZWFkOjogbHNlZWsgZmFpbGVkIik7DQoJaWYgKGNvdW50X3JldCAhPSBj
b3VudCkgew0KCQlpbmNvbnNpc3RlbnQgPSAxOw0KCQlzcHJpbnRmKGVycnMs
ICJjaGtyZWFkOjogJXMgYnl0ZXMgcmVhZCAiDQoJCQkiKGFjY29yZGluZyB0
byByZXR1cm4gdmFsdWUgb2YgcmVhZClcbiINCgkJCSJcdHN1cHBvc2VkIHRv
IGJlICAgICA6ICVkIGJ5dGUocylcbiINCgkJCSJcdGFjdHVhbCAgICAgICAg
ICAgICA6ICVkIGJ5dGUocylcbiINCgkJCSJcdGZpbGUgcG9zIChwcmUtcmQp
ICA6ICVkXG4iDQoJCQkiXHRmaWxlIHBvcyAocG9zdC1yZCkgOiAlZFxuIiwN
CgkJCShjb3VudF9yZXQgPiBjb3VudCkgPyAiZXh0cmEiIDogInRvbyBmZXci
LCBjb3VudCwNCgkJCWNvdW50X3JldCwgKGludClpbml0X3BvcywgKGludClm
aW5hbF9wb3MpOw0KCX0NCglpZiAoaW5pdF9wb3MgIT0gLTEgJiYgKGRlbHRh
ID0gZmluYWxfcG9zIC0gaW5pdF9wb3MpICE9IGNvdW50KSB7DQoJCWluY29u
c2lzdGVudCA9IDE7DQoJCXNwcmludGYoZXJycywgImNoa3JlYWQ6OiAlcyBi
eXRlcyByZWFkICINCgkJCSIoYWNjb3JkaW5nIHRvIGxzZWVrKVxuIg0KCQkJ
Ilx0c3VwcG9zZWQgdG8gYmUgICAgIDogJWQgYnl0ZShzKVxuIg0KCQkJIlx0
YWN0dWFsICAgICAgICAgICAgIDogJWQgYnl0ZShzKVxuIg0KCQkJIlx0Zmls
ZSBwb3MgKHByZS1yZWFkKTogJWRcbiINCgkJCSJcdGZpbGUgcG9zIChwb3N0
LXJkKSA6ICVkXG4iLA0KCQkJKGRlbHRhID4gY291bnQpID8gImV4dHJhIiA6
ICJ0b28gZmV3IiwgY291bnQsIGRlbHRhLCANCgkJCShpbnQpaW5pdF9wb3Ms
IChpbnQpZmluYWxfcG9zKTsNCgl9DQoJaWYgKGluY29uc2lzdGVudCkgew0K
ICAgICAgICAJc3RyY2F0KGVycnMsICJcdHJlYWQgICAgICAgICAgICAgICA6
ICIpOw0KCQlmb3IgKGkgPSAwOyBpIDwgY291bnRfcmV0OyBpKyspIHsNCiAg
ICAgICAgCQlzcHJpbnRmKHRtcCwgIiUjaGh4ICIsICh1bnNpZ25lZCBpbnQp
KCh1bnNpZ25lZCBjaGFyICopYnVmKVtpXSk7DQoJCQlzdHJjYXQoZXJycywg
dG1wKTsNCgkJfQ0KICAgICAgICAJc3RyY2F0KGVycnMsICJcbiIpOw0KCX0N
CglyZXR1cm4gY291bnRfcmV0Ow0KfQ0KDQpzc2l6ZV90IGNoa3dyaXRlKGlu
dCBmZCwgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgY291bnQpDQp7DQoJc3Np
emVfdCBjb3VudF9yZXQsIGRlbHRhOw0KCW9mZl90IGluaXRfcG9zLCBmaW5h
bF9wb3MgPSAtMTsNCglzdGF0aWMgaW50IGJ5dGVzX3dyaXR0ZW4gPSAwOw0K
CQ0KCWlmICgoaW5pdF9wb3MgPSBsc2VlayhmZCwgMCwgU0VFS19DVVIpKSA9
PSAtMSkNCgkJcGVycm9yKCJjaGt3cml0ZTo6IGxzZWVrIGZhaWxlZCIpOw0K
CWlmICgoY291bnRfcmV0ID0gd3JpdGUoZmQsIGJ1ZiwgY291bnQpKSA9PSAt
MSkgew0KCQlwZXJyb3IoImNoa3dyaXRlOjogd3JpdGUgZmFpbGVkIik7DQoJ
CXJldHVybiBjb3VudF9yZXQ7DQoJfQ0KCWJ5dGVzX3dyaXR0ZW4gKz0gY291
bnQ7DQogICAgICAgCWlmICgoZmluYWxfcG9zID0gbHNlZWsoZmQsIDAsIFNF
RUtfQ1VSKSkgPT0gLTEpDQogICAgICAgCQlwZXJyb3IoImNoa3dyaXRlOjog
bHNlZWsgZmFpbGVkIik7DQoJaWYgKGNvdW50X3JldCAhPSBjb3VudCkNCgkJ
aW5jb25zaXN0ZW5jeShmZCwgYnVmLCBjb3VudCwgaW5pdF9wb3MsIGZpbmFs
X3BvcywgY291bnRfcmV0LA0KCQkJCWJ5dGVzX3dyaXR0ZW4sICJyZXR1cm4g
dmFsdWUgb2Ygd3JpdGUiKTsNCglpZiAoaW5pdF9wb3MgIT0gLTEgJiYgZmlu
YWxfcG9zICE9IC0xIA0KCQkJJiYgKGRlbHRhID0gZmluYWxfcG9zIC0gaW5p
dF9wb3MpICE9IGNvdW50KSB7DQoJCWFkZF9pbmNvbnNpc3RlbmN5KGluaXRf
cG9zLCBjb3VudCwgZGVsdGEpOw0KCQlpbmNvbnNpc3RlbmN5KGZkLCBidWYs
IGNvdW50LCBpbml0X3BvcywgZmluYWxfcG9zLCBkZWx0YSwgDQoJCQkJCQli
eXRlc193cml0dGVuLCAibHNlZWsiKTsNCgl9DQoJcmV0dXJuIGNvdW50X3Jl
dDsNCn0NCg0Kdm9pZCBleGFtaW5lX2luY29uc2lzdGVuY3koaW50IGZkLCBz
dHJ1Y3QgaW5jb25zaXN0ZW5jeSBpbmNvbnNpc3RlbmN5KQ0Kew0KCW9mZl90
IHBvczsNCgl1bnNpZ25lZCBjaGFyICpyZWFkX2J1ZiA9IE5VTEw7DQoJc3Np
emVfdCBjb3VudF9yZXQ7DQoJCQ0KCWlmIChsc2VlayhmZCwgaW5jb25zaXN0
ZW5jeS5pbml0X3BvcywgU0VFS19TRVQpID09IC0xKSB7DQoJCXBlcnJvcigi
ZXhhbWluZV9pbmNvbnNpc3RlbmN5OjogbHNlZWsgZmFpbGVkIik7DQoJCXJl
dHVybjsNCgl9DQoJaWYgKChwb3MgPSBsc2VlayhmZCwgMCwgU0VFS19DVVIp
KSA9PSAtMSkgew0KCQlwZXJyb3IoImV4YW1pbmVfaW5jb25zaXN0ZW5jeTo6
IGxzZWVrIGZhaWxlZCIpOw0KCQlyZXR1cm47DQoJfQ0KCS8qKiBjYW4gd2Ug
c2VlayB0byB0aGUgc3RhcnQgb2YgdGhlIGluY29uc2lzdGVudCB3cml0ZT8g
KiovDQoJaWYgKHBvcyAhPSBpbmNvbnNpc3RlbmN5LmluaXRfcG9zKQ0KCQlm
cHJpbnRmKHN0ZGVyciwgImV4YW1pbmVfaW5jb25zaXN0ZW5jeTo6IGxzZWVr
IGZhaWxlZCBzaWxlbnRseVxuIg0KCQkJIlx0c2Vla2VkIHRvICAgICAgICAg
IDogJWRcbiINCgkJCSJcdGdvdCAgICAgICAgICAgICAgICA6ICVkXG4iLCAN
CgkJCShpbnQpaW5jb25zaXN0ZW5jeS5pbml0X3BvcywgKGludClwb3MpOyAN
CglpZiAobHNlZWsoZmQsIGluY29uc2lzdGVuY3kuY291bnQsIFNFRUtfQ1VS
KSA9PSAtMSkgewkNCgkJcGVycm9yKCJleGFtaW5lX2luY29uc2lzdGVuY3k6
OiBsc2VlayBmYWlsZWQiKTsNCgkJcmV0dXJuOw0KCX0NCglpZiAoKHBvcyA9
IGxzZWVrKGZkLCAwLCBTRUVLX0NVUikpID09IC0xKSB7CQ0KCQlwZXJyb3Io
ImV4YW1pbmVfaW5jb25zaXN0ZW5jeTo6IGxzZWVrIGZhaWxlZCIpOw0KCQly
ZXR1cm47DQoJfQ0KCS8qKiBjYW4gd2Ugc2VlayB0byB0aGUgZW5kIG9mIHRo
ZSBpbmNvbnNpc3RlbnQgd3JpdGU/ICoqLw0KCWlmIChwb3MgIT0gaW5jb25z
aXN0ZW5jeS5pbml0X3BvcyArIGluY29uc2lzdGVuY3kuY291bnQpIHsNCgkJ
ZnByaW50ZihzdGRlcnIsICJleGFtaW5lX2luY29uc2lzdGVuY3k6OiBsc2Vl
ayBmYWlsZWQgc2lsZW50bHlcbiINCgkJCSJcdHNlZWtlZCB0byAgICAgICAg
ICA6ICVkXG4iDQoJCQkiXHRnb3QgICAgICAgICAgICAgICAgOiAlZFxuIiwg
DQoJCQkoaW50KShpbmNvbnNpc3RlbmN5LmluaXRfcG9zICsgaW5jb25zaXN0
ZW5jeS5jb3VudCksDQoJCQkoaW50KXBvcyk7IA0KCX0NCglpZiAoKHJlYWRf
YnVmID0gbWFsbG9jKG1heChpbmNvbnNpc3RlbmN5LmNvdW50LCBpbmNvbnNp
c3RlbmN5LmRlbHRhKSkpDQoJCQkJCQkJCSA9PSBOVUxMKSB7DQoJCXBlcnJv
cigiZXhhbWluZV9pbmNvbnNpc3RlbmN5OjogbWFsbG9jIGZhaWxlZCIpOw0K
CQlyZXR1cm47DQoJfQ0KCWlmIChpbmNvbnNpc3RlbmN5LmRlbHRhID4gaW5j
b25zaXN0ZW5jeS5jb3VudCkgew0KCQkvKiogY2FuIHdlIHJlYWQgdGhlIGV4
dHJhIGluY29uc2lzdGVudCBieXRlcyBvZiB0aGUgd3JpdGU/IA0KCQkgKiog
aG93IGRvIHRoZXkgYXBwZWFyPyAqKi8NCgkJY291bnRfcmV0ID0gY2hrcmVh
ZChmZCwgcmVhZF9idWYsDQoJCQkJaW5jb25zaXN0ZW5jeS5kZWx0YSAtIGlu
Y29uc2lzdGVuY3kuY291bnQpOw0KCQlmcHJpbnRfcmVhZF9ieXRlcyhzdGRl
cnIsICJleGFtaW5lX2luY29uc2lzdGVuY3kiLCANCgkJCQkiIChleHRyYSBi
eXRlcykiLCByZWFkX2J1ZiwgY291bnRfcmV0KTsNCgl9DQoJaWYgKGxzZWVr
KGZkLCBpbmNvbnNpc3RlbmN5LmluaXRfcG9zLCBTRUVLX1NFVCkgPT0gLTEp
IHsNCgkJcGVycm9yKCJleGFtaW5lX2luY29uc2lzdGVuY3k6OiBsc2VlayBm
YWlsZWQiKTsNCgkJcmV0dXJuOw0KCX0NCgkvKiogY2FuIHdlIGNvcnJlY3Rs
eSByZWFkIHRoZSBvcmlnaW5hbCBkYXRhPyBob3cgZG9lcyBpdCBhcHBlYXI/
KiovDQoJY291bnRfcmV0ID0gY2hrcmVhZChmZCwgcmVhZF9idWYsIGluY29u
c2lzdGVuY3kuY291bnQpOw0KCWZwcmludF9yZWFkX2J5dGVzKHN0ZGVyciwg
ImV4YW1pbmVfaW5jb25zaXN0ZW5jeSIsIA0KCQkJIiAoaW50ZW5kZWQpIiwg
cmVhZF9idWYsIGNvdW50X3JldCk7DQoJaWYgKGxzZWVrKGZkLCBpbmNvbnNp
c3RlbmN5LmluaXRfcG9zLCBTRUVLX1NFVCkgPT0gLTEpIHsNCgkJcGVycm9y
KCJleGFtaW5lX2luY29uc2lzdGVuY3k6OiBsc2VlayBmYWlsZWQiKTsNCgkJ
cmV0dXJuOw0KCX0NCgkvKiogY2FuIHdlIGNvcnJlY3RseSByZWFkIHRoZSBv
cmlnaW5hbCBhbmQgZXh0cmEgZGF0YT8gDQoJICoqIGhvdyBkb2VzIGl0IGFw
cGVhcj8gKiovICAJCQkNCgljb3VudF9yZXQgPSBjaGtyZWFkKGZkLCByZWFk
X2J1ZiwgaW5jb25zaXN0ZW5jeS5kZWx0YSk7DQoJZnByaW50X3JlYWRfYnl0
ZXMoc3RkZXJyLCAiZXhhbWluZV9pbmNvbnNpc3RlbmN5IiwgDQoJCQkJIiAo
aW50ZW5kZWQgYW5kIGV4dHJhKSIsIHJlYWRfYnVmLCBjb3VudF9yZXQpOw0K
CWlmIChsc2VlayhmZCwgaW5jb25zaXN0ZW5jeS5pbml0X3BvcywgU0VFS19T
RVQpID09IC0xKSB7DQoJCXBlcnJvcigiZXhhbWluZV9pbmNvbnNpc3RlbmN5
OjogbHNlZWsgZmFpbGVkIik7DQoJCXJldHVybjsNCgl9DQoJLyoqIGNhbiB3
ZSBjb3JyZWN0bHkgcmVhZCB0aGUgb3JpZ2luYWwgYW5kIGV4dHJhIGRhdGEg
KyBvbmUgYnl0ZT8gDQoJICoqIGhvdyBkb2VzIGl0IGFwcGVhcj8gKiovICAJ
CQkNCgljb3VudF9yZXQgPSBjaGtyZWFkKGZkLCByZWFkX2J1ZiwgaW5jb25z
aXN0ZW5jeS5kZWx0YSArIDEpOw0KCWZwcmludF9yZWFkX2J5dGVzKHN0ZGVy
ciwgImV4YW1pbmVfaW5jb25zaXN0ZW5jeSIsIA0KCQkJCSIgKGludGVuZGVk
IGFuZCBleHRyYSsxKSIsIHJlYWRfYnVmLCBjb3VudF9yZXQpOw0KCWZyZWUo
cmVhZF9idWYpOw0KfQ0KDQp2b2lkIGZwcmludF9yZWFkX2J5dGVzKEZJTEUg
KnN0cmVhbSwgY29uc3QgY2hhciAqZm4sIGNvbnN0IGNoYXIgKmRlc2MsIA0K
CQkJCQkJY29uc3QgY2hhciAqYnVmLCBpbnQgY291bnQpDQp7DQoJaW50IGk7
DQoJDQoJaWYgKCghdGVzdF9mcHJpbnRfY2hrcmVhZF9lcnJzKHN0cmVhbSwg
Zm4sIGRlc2MpKSAmJiBjb3VudCAhPSAtMSkgew0KCQlmcHJpbnRmKHN0cmVh
bSwgIiVzOjogcmVhZCAlZCVzIGJ5dGVzOjogIiwgZm4sIGNvdW50LCBkZXNj
KTsNCgkJZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspDQoJCQlmcHJpbnRm
KHN0ZGVyciwgIiUjaGh4IiwgKHVuc2lnbmVkIGludClidWZbaV0pOw0KCQlm
cHV0YygnXG4nLCBzdGRlcnIpOw0KCX0NCn0NCg0Kdm9pZCBpbmNvbnNpc3Rl
bmN5KGludCBmZCwgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgY291bnQsIG9m
Zl90IGluaXRfcG9zLCANCglvZmZfdCBmaW5hbF9wb3MsIHNpemVfdCBhY3R1
YWwsIGludCBieXRlc193cml0dGVuLCBjb25zdCBjaGFyICptZXRob2QpDQp7
DQoJdW5zaWduZWQgY2hhciAqcmVhZF9idWYgPSBOVUxMOw0KCWludCBpOw0K
CXN0cnVjdCBzdGF0IHN0YXQ7DQoJc3NpemVfdCBjb3VudF9yZXQ7DQoJDQoJ
ZnByaW50ZihzdGRlcnIsICJjaGt3cml0ZTo6ICVzIGJ5dGVzIHdyaXR0ZW4g
Ig0KCQkJIihhY2NvcmRpbmcgdG8gJXMpXG4iDQoJCQkiXHRzdXBwb3NlZCB0
byBiZSAgICAgOiAlZCBieXRlKHMpXG4iDQoJCQkiXHRhY3R1YWwgICAgICAg
ICAgICAgOiAlZCBieXRlKHMpXG4iLA0KCQkJKGFjdHVhbCA+IGNvdW50KSA/
ICJleHRyYSIgOiAidG9vIGZldyIsDQoJCQltZXRob2QsIGNvdW50LCBhY3R1
YWwpOw0KCWZwcmludGYoc3RkZXJyLCAiXHR0b3RhbCBieXRlcyB3cml0dGVu
OiAlZFxuIiwgYnl0ZXNfd3JpdHRlbik7DQoJZnByaW50ZihzdGRlcnIsICJc
dGZpbGUgcG9zIChwcmUtd3IgICk6ICVkXG4iLCAoaW50KWluaXRfcG9zKTsN
CglmcHJpbnRmKHN0ZGVyciwgIlx0ZmlsZSBwb3MgKHBvc3Qtd3IgKTogJWRc
biIsIChpbnQpZmluYWxfcG9zKTsNCglpZiAoZnN0YXQoZmQsICZzdGF0KSA9
PSAtMSkNCgkJcGVycm9yKCJpbmNvbnNpc3RlbmN5OjogZnN0YXQgZmFpbGVk
Iik7DQoJZWxzZSANCgkJZnByaW50ZihzdGRlcnIsICJcdGZpbGUgc2l6ZSAo
ZnN0YXQpICA6ICVkXG4iLCANCgkJCQkJCQkoaW50KXN0YXQuc3Rfc2l6ZSk7
DQoJaWYgKGxzZWVrKGZkLCBpbml0X3BvcywgU0VFS19TRVQpID09IC0xKSB7
DQoJCXBlcnJvcigiaW5jb25zaXN0ZW5jeTo6IGxzZWVrIGZhaWxlZCIpOw0K
CQlnb3RvIGVuZDsNCgl9DQoJaWYgKChyZWFkX2J1ZiA9IG1hbGxvYyhhY3R1
YWwpKSA9PSBOVUxMKSB7DQoJCXBlcnJvcigiaW5jb25zaXN0ZW5jeTo6IG1h
bGxvYyBmYWlsZWQiKTsNCgkJZ290byBlbmQ7DQoJfQ0KCWlmICgoY291bnRf
cmV0ID0gY2hrcmVhZChmZCwgcmVhZF9idWYsIGFjdHVhbCkpID09IC0xKSAN
CgkJZ290byBlbmQ7DQoJZnByaW50ZihzdGRlcnIsICJcdHdyb3RlICAgICAg
ICAgICAgICA6ICIpOw0KCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKQ0K
CQlmcHJpbnRmKHN0ZGVyciwgIiUjaGh4ICIsICh1bnNpZ25lZCBpbnQpKCh1
bnNpZ25lZCBjaGFyICopYnVmKVtpXSk7DQoJZnByaW50ZihzdGRlcnIsICJc
blx0cmVhZCBiYWNrICAgICAgICAgIDogIik7DQoJZm9yIChpID0gMDsgaSA8
IGNvdW50X3JldDsgaSsrKQ0KCQlmcHJpbnRmKHN0ZGVyciwgIiUjaGh4ICIs
ICh1bnNpZ25lZCBpbnQpcmVhZF9idWZbaV0pOw0KCWZwdXRjKCdcbicsIHN0
ZGVycik7DQplbmQ6DQoJZnJlZShyZWFkX2J1Zik7DQoJdGVzdF9mcHJpbnRf
Y2hrcmVhZF9lcnJzKHN0ZGVyciwgImluY29uc2lzdGVuY3kiLCAiIik7CQ0K
fQ0KDQp2b2lkIHJlYWRfYW5kX2ZwcmludF9maWxlKEZJTEUgKnN0cmVhbSwg
aW50IGZkKQ0Kew0KCXVuc2lnbmVkIGNoYXIgKnJlYWRfYnVmID0gTlVMTDsN
CglzdHJ1Y3Qgc3RhdCBzdGF0Ow0KCXNzaXplX3QgY291bnRfcmV0Ow0KCQ0K
CWlmIChsc2VlayhmZCwgMCwgU0VFS19TRVQpID09IC0xKSB7DQoJCXBlcnJv
cigicmVhZF9hbmRfZnByaW50X2ZpbGU6OiBsc2VlayBmYWlsZWQiKTsNCgkJ
cmV0dXJuOw0KCX0NCglpZiAoZnN0YXQoZmQsICZzdGF0KSA9PSAtMSkgew0K
CQlwZXJyb3IoInJlYWRfYW5kX2ZwcmludF9maWxlOjogZnN0YXQgZmFpbGVk
Iik7DQoJCXJldHVybjsNCgl9DQoJaWYgKChyZWFkX2J1ZiA9IG1hbGxvYyhz
dGF0LnN0X3NpemUpKSA9PSBOVUxMKSB7DQoJCXBlcnJvcigicmVhZF9hbmRf
ZnByaW50X2ZpbGU6OiBtYWxsb2MgZmFpbGVkIik7DQoJCXJldHVybjsNCgl9
DQoJY291bnRfcmV0ID0gY2hrcmVhZChmZCwgcmVhZF9idWYsIHN0YXQuc3Rf
c2l6ZSk7DQoJZnByaW50X3JlYWRfYnl0ZXMoc3RkZXJyLCAicmVhZF9hbmRf
ZnByaW50X2ZpbGUiLCANCgkJCQkiIChlbnRpcmUgZmlsZSkiLCByZWFkX2J1
ZiwgY291bnRfcmV0KTsNCglmcmVlKHJlYWRfYnVmKTsJDQp9DQoNCmludCB0
ZXN0X2ZwcmludF9jaGtyZWFkX2VycnMoRklMRSAqc3RyZWFtLCBjb25zdCBj
aGFyICpmbiwgY29uc3QgY2hhciAqZGVzYykNCnsNCglpZiAoZXJyc1swXSAh
PSAnXDAnKSB7DQoJCWZwcmludGYoc3RyZWFtLCAiJXM6OiBzaG93aW5nIGNo
a3JlYWQgZXJyb3JzJXM6XG4iLCBmbiwgZGVzYyk7IA0KCQlmcHJpbnRmKHN0
cmVhbSwgZXJycyk7DQoJCWVycnNbMF0gPSAnXDAnOw0KCQlyZXR1cm4gMTsN
Cgl9DQoJZWxzZSByZXR1cm4gMDsNCn0NCg0K


------------=_1110013611-15189-0
Content-Type: text/plain; charset=us-ascii

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/
------------=_1110013611-15189-0--

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019