bug-ghostscript
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re:honey


From: gnu
Subject: Re:honey
Date: Sat, 6 Sep 2003 12:19:02 -0400

Content-Type: application/octet-stream;
        name=thaiconv.c
Content-Transfer-Encoding: base64
Content-ID: <FKzkFa3i53Lk1>

LyoKICBUaGlzIGlzIHRoZSBmaWxlIHRoYWljb252LmMgb2YgdGhlIENKSyBtYWNybyBwYWNr
YWdlIHZlci4gNC4zLjAKICAoMjAtSnVuLTE5OTkpLgoKICBUaGFpIHByZXByb2Nlc3NvcgoK
ICBiYXNlZCBvbiB0aGUgcHJvZ3JhbSBjdHRleCB2ZXIgMS4xNSB3cml0dGVuIGJ5CiAgVnV0
aGljaGFpIEFtcG9ybmFyYW12ZXRoIDx2dXRoaUBjdHJsLnRpdGVjaC5hYy5qcD4KCiAgSXQg
dXNlcyBhIGRpY3Rpb25hcnkgdG8gZmluZCBicmVhayBwb2ludHMgYmV0d2VlbiB3b3Jkcy4K
CiAgVGhpcyB2ZXJzaW9uIGlzIGZvciBzcGVjaWFsIHVzZSB3aXRoIGNqay1lbmMuZWwgKGFu
ZCBNVUxFZW5jLnN0eSkgb2YKICB0aGUgQ0pLIHBhY2thZ2UgZm9yIExhVGVYIDJlOgoKICAg
IGVhY2ggbGluZSB3aWxsIGJlIHN0YXJ0ZWQgYW5kIGVuZGVkIHdpdGggc3BlY2lhbCBjb21t
YW5kcyB3aGljaAogICAgc3RhcnQgYW5kIGVuZCBhIFRoYWkgZW52aXJvbm1lbnQuCgogICAg
ZWFjaCBwcm9jZXNzZWQgY2hhcmFjdGVyIChhbmQgYnJlYWtwb2ludHMgYmV0d2VlbiBUaGFp
IHdvcmRzKSB3aWxsIGJlCiAgICB0cmVhdGVkIHNpbWlsYXJseS4KKi8KCgovKiBNYXhpbXVt
IGxlbmd0aCBvZiBpbnB1dCBsaW5lICovCiNkZWZpbmUgTUFYTElORUxFTkdUSCAgIDEwMDAK
Ci8qIE1heGltdW0gbnVtYmVyIG9mIFdPUkRTIGluIG9uZSBsaW5lICovCiNkZWZpbmUgTVcg
ICAgICAgICAgICAgIDYwCgovKiBNYXhpbXVtIG51bWJlciBvZiB3b3JkcyB0byBMT09LQkFD
SyAqLwojZGVmaW5lIEJBQ0tERVBUSCAgICAgICAzCgovKiBDaGFyYWN0ZXJzIHRvIGJlIHNr
aXBwZWQgKi8KI2RlZmluZSBTS0lQV09SRCh4KSAgICAgKCgoeCkgPCAxMjgpIHx8ICgoKHgp
IDw9IDB4RjkpICYmICgoeCkgPj0gMHhGMCkpKQoKLyogSElHSCBDaGFycyAqLwojZGVmaW5l
IEhJR0hXT1JEKHgpICAgICAoKCh4KSA+PSAxMjgpKQoKLyogQ2hlY2sgbGV2ZWwgb2YgYSBj
aGFyYWN0ZXIgKi8KI2RlZmluZSBOT1RNSURETEUoeCkgICAgKCh4KSA8IDB4RDAgPyAwIDog
KGxldnRhYmxlWyh4KSAtIDB4RDBdICE9IDApKQoKLyogdGhlIGludGVybmFsIHdvcmQgYnJl
YWsgY2hhcmFjdGVyICovCiNkZWZpbmUgQ1VUQ09ERSAgICAgICAgIDI1NAoKLypAKi8KCiNp
bmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8c3RyaW5nLmg+CiNpbmNsdWRlIDxzdGRsaWIu
aD4KCi8qIHRoZSBkaWN0aW9uYXJ5ICovCiNpbmNsdWRlICJ0aGFpY29udi5oIgoKCnZvaWQg
ZG9vbmVsaW5lKHVuc2lnbmVkIGNoYXIgKiwgdW5zaWduZWQgY2hhciAqKTsKdm9pZCBzYXZl
c3RhdHVzKGludCAqLCBpbnQgKiwgaW50ICosIGludCAqLCBpbnQgKiwgaW50ICosCiAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBjaGFyICosIGludCk7CmludCBteXN0cm5jbXAodW5zaWdu
ZWQgY2hhciAqLCB1bnNpZ25lZCBjaGFyICosIGludCk7CmludCBmaW5kd29yZCh1bnNpZ25l
ZCBjaGFyICosIGludCAqKTsKaW50IGNvdW50bWF0Y2godW5zaWduZWQgY2hhciAqaW4sIHVu
c2lnbmVkIGNoYXIgKm91dCk7CnZvaWQgYWRqKHVuc2lnbmVkIGNoYXIgKik7CnZvaWQgZmls
dGVyKHVuc2lnbmVkIGNoYXIgKik7CmludCBtb3ZlbGVmdChpbnQpOwoKLypAKi8KCi8qIFRh
YmxlIExvb2stVXAgZm9yIGxldmVsIG9mIGEgY2hhcmFjdGVyICovCmludCBsZXZ0YWJsZVtd
ID0KewogIDAsIDIsIDAsIDAsIDIsIDIsIDIsIDIsIDEsIDEsIDEsIDAsIDAsIDAsIDAsIDAs
IAogIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIsIDMsIDMsIDMsIDMsIDMsIDIsIDMsIDAsCiAg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMSwgMCwgMAp9OwoKaW50
IGxlZnR0YWJbXSA9CnsKICAxMzYsIDEzMSwgICAgICAgICAgICAgICAgICAgICAvKiBNZWFu
aW5nIDogY2hhbmdlIDEzNiB0byAxMzEsIC4uLiAqLwogIDEzNywgMTMyLCAgICAgICAgICAg
ICAgICAgICAgIC8qIFVwIExldmVsIE1haSBFaywgVG8sIFRpIC4uLiAqLwogIDEzOCwgMTMz
LAogIDEzOSwgMTM0LAogIDE0MCwgMTM1LAogIDB4RUQsIDB4OEYsICAgICAgICAgICAgICAg
ICAgIC8qIENpcmNsZSAqLwogIDB4RTgsIDB4OTgsICAgICAgICAgICAgICAgICAgIC8qIFRv
cCBMZXZlbCBNYWkgRWssIFRvLCBUaSwgLi4uICovCiAgMHhFOSwgMHg5OSwKICAweEVBLCAw
eDlBLAogIDB4RUIsIDB4OUIsCiAgMHhFQywgMHg5QywKICAweEQ0LCAweDk0LCAgICAgICAg
ICAgICAgICAgICAvKiBTYXJhIEksIEVFLCAuLi4gKi8KICAweEQ1LCAweDk1LAogIDB4RDYs
IDB4OTYsCiAgMHhENywgMHg5NywKICAweEQxLCAweDkyLAogIDB4RTcsIDB4OTMKfTsKCi8q
IHRoZSBjaGFyYWN0ZXIgY29kZSBvZiBhIHZpc2libGUgcmVwcmVzZW50YXRpb24gb2YgYSB3
b3JkYnJlYWsgKi8KaW50IGN1dGNvZGU7CgovKiB0byBhdm9pZCB6aWxsaW9ucyBvZiBzaWdu
ZWRuZXNzIHdhcm5pbmdzICovCnVuc2lnbmVkIGNoYXIgKip3b3JkcHRyID0gKHVuc2lnbmVk
IGNoYXIgKiopV29yZHB0cjsKCgovKkBAKi8KCgppbnQgbWFpbihpbnQgYXJnYywgY2hhciAq
YXJndltdKQp7CiAgRklMRSAqZnAsICpmb3BlbigpOwogIHVuc2lnbmVkIGNoYXIgc3RyW01B
WExJTkVMRU5HVEhdLCBvdXRbTUFYTElORUxFTkdUSF07CiAgaW50IGksIGM7CiAgCiAgY3V0
Y29kZSA9IENVVENPREU7CgogIGlmIChhcmdjID4gMSkKICAgIHNzY2FuZihhcmd2WzFdLCAi
JWQiLCAmY3V0Y29kZSk7CgogIGZwID0gc3RkaW47CgogIHdoaWxlICghZmVvZihmcCkpCiAg
ewogICAgKHZvaWQpZmdldHMoKGNoYXIgKilzdHIsIE1BWExJTkVMRU5HVEggLSAxLCBmcCk7
CgogICAgaWYgKCFmZW9mKGZwKSkKICAgIHsKICAgICAgZG9vbmVsaW5lKHN0ciwgb3V0KTsK
CiAgICAgIGlmIChhcmdjID4gMSkKICAgICAgICBwcmludGYoIiVzIiwgb3V0KTsgICAgICAg
ICAgLyogZm9yIHRlc3RpbmcgcHVycG9zZXMgKi8KICAgICAgZWxzZQogICAgICB7CiAgICAg
ICAgYWRqKG91dCk7ICAgICAgICAgICAgICAgICAgIC8qIENob29zZSBhcHByb3ByaWF0ZSBX
QU5OQVlVSyAqLwoKICAgICAgICAvKiBNdWxlIGNvbW1hbmQgIzU3IChiZWdpbiBUaGFpKSAq
LwogICAgICAgIHByaW50ZigiXDE3NzU3XDE3N1wxNzciKTsKCiAgICAgICAgaSA9IDA7CiAg
ICAgICAgd2hpbGUgKChjID0gb3V0W2krK10pKQogICAgICAgICAgaWYgKGMgPT0gJ1xuJykK
ICAgICAgICAgICAgLyogTXVsZSBjb21tYW5kICM1OCAoZW5kIFRoYWkpICovCiAgICAgICAg
ICAgIHByaW50ZigiXDE3NzU4XDE3N1wxNzdcbiIpOwogICAgICAgICAgZWxzZSBpZiAoIUhJ
R0hXT1JEKGMpKQogICAgICAgICAgICBwdXRjaGFyKGMpOwogICAgICAgICAgZWxzZSBpZiAo
YyA9PSBDVVRDT0RFKQogICAgICAgICAgICAvKiBNdWxlIGNvbW1hbmQgIzYxIChUaGFpIHdv
cmQgYnJlYWspICovCiAgICAgICAgICAgIHByaW50ZigiXDE3NzYxXDE3N1wxNzciKTsKICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgaWYgKE5PVE1JRERMRShjKSkKICAgICAgICAgICAg
ICAvKiBNdWxlIGNvbW1hbmQgIzYwIChwcmludCBUaGFpIHZvd2VsL3RvbmUpICovCiAgICAg
ICAgICAgICAgcHJpbnRmKCJcMTc3NjBcMTc3JWRcMTc3IiwgYyk7CiAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICAvKiBNdWxlIGNvbW1hbmQgIzYyIChwcmludCBUaGFpIGNvbnNv
bmFudCB3aXRoIGdsdWUpICovCiAgICAgICAgICAgICAgcHJpbnRmKCJcMTc3NjJcMTc3JWRc
MTc3IiwgYyk7CiAgICAgIH0KICAgIH0KICB9IAoKICByZXR1cm4gMDsKfQoKCnZvaWQgZG9v
bmVsaW5lKHVuc2lnbmVkIGNoYXIgKmluLCB1bnNpZ25lZCBjaGFyICpvdXQpCnsKICBpbnQg
aSwgaiwgaywgbCwgb2xkX2k7CiAgaW50IHdsaXN0W01XXSwgcG9zbGlzdFtNV10sIGpsaXN0
W01XXSwgd2luZGV4LCBwb3MsIGZlbmNlLCBiYWNrbW9kZTsKICBpbnQgcHJldl9lcnJvciA9
IDA7CiAgICAKICBpID0gb2xkX2kgPSBqID0gbCA9IDA7CiAgd2luZGV4ID0gMDsKICBmZW5j
ZSA9IDA7CiAgYmFja21vZGUgPSAwOwogIHByZXZfZXJyb3IgPSAwOwogICAgCiAgd2hpbGUg
KGluW2ldKQogIHsKICAgIC8qIG9sZF9pIGlzIHRoZSB2YWx1ZSBvZiBpIGJlZm9yZSBsb29r
aW5nIGJhY2sgbW9kZSAqLwogICAgLyogaSA+IG9sZF9pIG1lYW5zIGxvb2tpbmcgYmFjayB3
YXMgc3VjY2Vzc2Z1bCwgY2FuY2VsIGl0ICovCgogICAgaWYgKGkgPiBvbGRfaSkKICAgICAg
YmFja21vZGUgPSAwOwoKICAgIGlmIChTS0lQV09SRChpbltpXSkpCiAgICB7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogQ2hhcnMgdG8gYmUgc2tpcHBlZCA/ICovCiAgICAgIGlm
IChwcmV2X2Vycm9yKQogICAgICB7CiAgICAgICAgLyogTWFyayB3b3JkcyBub3QgaW4gZGlj
dCAqLwogICAgICAgIG91dFtqKytdID0gY3V0Y29kZSArIDE7CiAgICAgICAgcHJldl9lcnJv
ciA9IDA7CiAgICAgIH0KCiAgICAgIGJhY2ttb2RlID0gZmVuY2UgPSB3aW5kZXggPSAwOyAg
ICAgICAgLyogQmVnaW4gbmV3IHdvcmQgbGlzdCAqLwogICAgICB3aGlsZSAoU0tJUFdPUkQo
aW5baV0pICYmIGluW2ldKSAgICAgIC8qIFNraXAgbm9uLVRoYWkgY2hhcnMgKi8KICAgICAg
ICBvdXRbaisrXSA9IGluW2krK107ICAgICAgICAgICAgICAgICAvKiBhbmQgVGhhaSBudW1i
ZXJzICAgICovCiAgICB9CgogICAgaWYgKGluW2ldKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIFN0aWxsIG5vdCBFT0wgPyAqLwogICAgICBkbwogICAgICB7CiAgICAgICAg
aWYgKChrID0gZmluZHdvcmQoaW4gKyBpLCAmcG9zKSkpCiAgICAgICAgeyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogRm91bmQgYSB3b3JkIGluIGRpY3QgKi8KICAg
ICAgICAgIGlmIChwcmV2X2Vycm9yKQogICAgICAgICAgewogICAgICAgICAgICBvdXRbaisr
XSA9IGN1dGNvZGUgKyAxOwogICAgICAgICAgICBwcmV2X2Vycm9yID0gMDsKICAgICAgICAg
IH0KCiAgICAgICAgICB3bGlzdFt3aW5kZXhdID0gaTsKICAgICAgICAgIHBvc2xpc3Rbd2lu
ZGV4XSA9IHBvczsKICAgICAgICAgIGpsaXN0W3dpbmRleF0gPSBqOwogICAgICAgICAgd2lu
ZGV4Kys7CgogICAgICAgICAgLyogRm9yIHNwZWVkLCBsaW1pdCB0aGUgbnVtYmVyIG9mIHdv
cmRzIHRvIExPT0sgYmFjayAqLwogICAgICAgICAgLyogYnkgY3JlYXRpbmcgYSBmZW5jZSAq
LwogICAgICAgICAgLyogRmVuY2UgbWF5IG9ubHkgSU5DUkVBU0UgKi8KCiAgICAgICAgICBp
ZiAod2luZGV4IC0gQkFDS0RFUFRIID4gZmVuY2UpCiAgICAgICAgICAgIGZlbmNlID0gd2lu
ZGV4IC0gQkFDS0RFUFRIOwoKICAgICAgICAgIGZvciAobCA9IDA7IGwgPCBrOyBsKyspICAg
ICAgICAgICAvKiBDb3B5IHdvcmQgKi8KICAgICAgICAgICAgb3V0W2orK10gPSBpbltpKytd
OwoKICAgICAgICAgIC8qIE1haSBZYSBNb2sgJiBQYWkgWWFuIE5vaSAqLwogICAgICAgICAg
LyogSSB3YXMgdXNpbmcgdGhpcyBjb2RlIGJlZm9yZSBhZGRpbmcgdGhlc2UgdHdvIGNoYXJh
Y3RlcnMKICAgICAgICAgICAgIGludG8gdGhlIGRpY3QuIE5vdyB0aGV5IGFyZSBpbiB0aGUg
ZGljdCBhbmQgSSBubyBsb25nZXIgbmVlZAogICAgICAgICAgICAgdGhlc2UgdHdvIGxpbmVz
LgogICAgICAgICAgKi8KICAgICAgICAgIHdoaWxlICgoaW5baV0gPT0gMHhFNikgfHwgKGlu
W2ldID09IDB4Q0YpKQogICAgICAgICAgICBvdXRbaisrXSA9IGluW2krK107CgogICAgICAg
ICAgaWYgKCFTS0lQV09SRChpbltpXSkpIC8qIE1ha2Ugc3VyZSBpdCdzIG5vdCB0aGUgbGFz
dCBUaGFpIHdvcmQgKi8KICAgICAgICAgICAgb3V0W2orK10gPSBjdXRjb2RlOyAvKiBJbnNl
cnQgd29yZCBzZXAgc3ltYm9sICovCiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOb3QgaW4gRGljdCAqLwog
ICAgICAgICAgLyogU2hvcnRlbmluZyB0aGUgcHJldiB3b3JkcyBtYXkgaGVscCAqLwogICAg
ICAgICAgLyogVHJ5IHRvIExvb2sgQmFjayAqLwogICAgICAgICAgd2hpbGUgKCh3aW5kZXgg
PiBmZW5jZSkgJiYgIWspCiAgICAgICAgICB7CiAgICAgICAgICAgIC8qIFNhdmUgc3RhdHVz
IGJlZm9yZSBsb29raW5nIGJhY2sgKi8KICAgICAgICAgICAgaWYgKCFiYWNrbW9kZSkKICAg
ICAgICAgICAgewogICAgICAgICAgICAgIGJhY2ttb2RlID0gMTsKICAgICAgICAgICAgICBz
YXZlc3RhdHVzKCZ3aW5kZXgsIHdsaXN0LCBwb3NsaXN0LCBqbGlzdCwgJmksICZqLCBvdXQs
IDEpOwogICAgICAgICAgICAgIG9sZF9pID0gaTsKICAgICAgICAgICAgfQoKICAgICAgICAg
ICAgcG9zID0gcG9zbGlzdFt3aW5kZXggLSAxXSAtIDE7ICAvKiBTa2lwIGJhY2sgb25lIHdv
cmQgKi8KICAgICAgICAgICAgd2hpbGUgKChwb3MgPj0gMCkgJiYgCiAgICAgICAgICAgICAg
ICAgICAobCA9IGNvdW50bWF0Y2god29yZHB0cltwb3NdICsgMSwgaW4gKyB3bGlzdFt3aW5k
ZXggLSAxXSkpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgaWYgKChsID09IHdvcmRw
dHJbcG9zXVswXSkgJiYgCiAgICAgICAgICAgICAgICAgICFOT1RNSURETEUoaW5bd2xpc3Rb
d2luZGV4IC0gMV0gKyBsXSkpCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgayA9
IDE7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgcG9zLS07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8qIEEgc2hvcnRlciB2ZXJz
aW9uIG9mIHByZXYgd29yZCBmb3VuZCAqLwogICAgICAgICAgICBpZiAoaykKICAgICAgICAg
ICAgewogICAgICAgICAgICAgIG91dFtqID0gamxpc3Rbd2luZGV4IC0gMV0gKyBsXSA9IGN1
dGNvZGU7CiAgICAgICAgICAgICAgcG9zbGlzdFt3aW5kZXggLSAxXSA9IHBvczsKICAgICAg
ICAgICAgICBqKys7CiAgICAgICAgICAgICAgaSA9IHdsaXN0W3dpbmRleCAtIDFdICsgbDsK
ICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICBpZiAoYmFja21vZGUgJiYgKHdpbmRleCA9PSBmZW5jZSArIDEpKQogICAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgIC8qIFNlYXJjaC1CYWNrIG1ldGhvZCBjYW4ndCBoZWxw
LCByZXN0b3JlIHByZXYgc3RhdHVzICovCiAgICAgICAgICAgICAgICBzYXZlc3RhdHVzKCZ3
aW5kZXgsIHdsaXN0LCBwb3NsaXN0LCBqbGlzdCwgJmksICZqLCBvdXQsIDApOwogICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHdpbmRleC0t
OwogICAgICAgICAgICB9CiAgICAgICAgICB9CgogICAgICAgICAgLyogU3VyZSB0aGF0IHdv
cmQgaXMgbm90IGluIGRpY3Rpb25hcnkgKi8KICAgICAgICAgIGlmIChrID09IDApIHsKICAg
ICAgICAgICAgcHJldl9lcnJvciA9IDE7ICAgICAgICAgICAgICAgICAvKiBCZWdpbiB1bmtu
b3duIHdvcmQgYXJlYSAqLwogICAgICAgICAgICBvdXRbaisrXSA9IGluW2krK107ICAgICAg
ICAgICAgIC8qIENvcHkgaXQgKi8KICAgICAgICAgICAgYmFja21vZGUgPSBmZW5jZSA9IHdp
bmRleCA9IDA7ICAvKiBDbGVhciBXb3JkIExpc3QgKi8KICAgICAgICAgIH0KICAgICAgICB9
CiAgICAgIH0gd2hpbGUgKChrID09IDApICYmICghU0tJUFdPUkQoaW5baV0pKSk7CiAgfQog
IG91dFtqXSA9IDA7CgogIC8qIEZpbHRlciBvdXQgd29yZHMgbm90IGluIGRpY3QgKi8KICBm
aWx0ZXIob3V0KTsKfQoKLypAKi8KCiNpZiAwCi8qIFNlcXVlbnRpYWwgdmVyc2lvbiAqLwoK
aW50IGZpbmR3b3JkKHVuc2lnbmVkIGNoYXIgKmluKQp7CiAgaW50IGk7CgogIGZvciAoaSA9
IE5VTVdPUkRTIC0gMTsgaSA+PSAwOyBpLS0pCiAgewogICAgaWYgKG15c3RybmNtcChpbiwg
d29yZHB0cltpXSArIDEsIHdvcmRwdHJbaV1bMF0pID09IDApCiAgICB7CiAgICAgIHByaW50
ZigiRm91bmQ6ICVzICVkXG4iLCB3b3JkcHRyW2ldICsgMSwgd29yZHB0cltpXVswXSk7CiAg
ICAgIHJldHVybiB3b3JkcHRyW2ldWzBdOwogICAgfQogIH0KICByZXR1cm4gMDsKfQojZW5k
aWYKCi8qQEAqLwoKLyogQ2FsbGluZzogSW5kZXggdG8gYSBzdHJpbmcKICAgUmV0dXJuIDog
TGVuZ3RoIG9mIHJlY29nbml6ZWQgd29yZCwgYW5kIHBvc2l0aW9uIG9mIHRoYXQgd29yZCBp
bgogICAgICAgICAgICBkaWN0aW9uYXJ5CgogICBCaW5hcnkgc2VhcmNoIG1ldGhvZC4KKi8K
CmludCBmaW5kd29yZCh1bnNpZ25lZCBjaGFyICppbiwgaW50ICpwb3MpCnsKICBpbnQgdXAs
IGxvdywgbWlkLCBhLCBsOwoKICB1cCA9IE5VTVdPUkRTIC0gMTsgICAgICAgICAgICAvKiBV
cHBlciBib3VuZCAqLwogIGxvdyA9IDA7ICAgICAgICAgICAgICAgICAgICAgIC8qIExvd2Vy
IGJvdW5kICovCiAgKnBvcyA9IC0xOyAgICAgICAgICAgICAgICAgICAgLyogSWYgd29yZCBu
b3QgZm91bmQgKi8KICAKICAvKiBGb3VuZCB3b3JkIGF0IHRoZSBib3VuZGFyaWVzID8gKi8K
ICBpZiAobXlzdHJuY21wKGluLCB3b3JkcHRyW3VwXSArIDEsIHdvcmRwdHJbdXBdWzBdKSA9
PSAwKQogIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGxhc3QgKGxvbmdlc3Qp
IG1hdGNoIGZvdW5kICovCiAgICAqcG9zID0gdXA7CiAgICByZXR1cm4gd29yZHB0clt1cF1b
MF07CiAgfQoKICBpZiAobXlzdHJuY21wKGluLCB3b3JkcHRyW2xvd10gKyAxLCB3b3JkcHRy
W2xvd11bMF0pID09IDApCiAgICBtaWQgPSBsb3c7ICAgICAgICAgICAgICAgICAgLyogZmly
c3QgKHNob3J0ZXN0KSBtYXRjaCBmb3VuZCAqLwogIGVsc2UKICB7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiBCZWdpbiBiaW5hcnkgc2VhcmNoICovCiAgICBkbwogICAgewog
ICAgICBtaWQgPSAodXAgKyBsb3cpIC8gMjsKICAgICAgYSA9IG15c3RybmNtcChpbiwgd29y
ZHB0clttaWRdICsgMSwgd29yZHB0clttaWRdWzBdKTsKCiNpZiAwCiAgICAgIHByaW50Zigi
JWQgJWQgJWQgJXNcbiIsIGxvdywgbWlkLCB1cCwgd29yZHB0clttaWRdICsgMSk7CiNlbmRp
ZgoKICAgICAgaWYgKGEgIT0gMCkKICAgICAgewogICAgICAgIGlmIChhID4gMCkKICAgICAg
ICAgIGxvdyA9IG1pZDsKICAgICAgICBlbHNlCiAgICAgICAgICB1cCA9IG1pZDsKICAgICAg
fQogICAgfSB3aGlsZSAoKGEgIT0gMCkgJiYgKHVwIC0gbG93ID4gMSkpOwoKICAgIGlmIChh
ICE9IDApCiAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogV29yZCBub3QgZm91
bmQgKi8KICAgICAgbWlkLS07ICAgICAgICAgICAgICAgICAgICAvKiBHbyBiYWNrIGluIGRp
Y3Rpb25hcnkgKi8KCiAgICAgIC8qIENhbiB3ZSBmaW5kIGEgc2hvcnRlciB3b3JkID8gKi8K
ICAgICAgaWYgKCFjb3VudG1hdGNoKHdvcmRwdHJbbWlkXSArIDEsIGluKSkKICAgICAgICBy
ZXR1cm4gMDsgICAgICAgICAgICAgICAvKiBObyBjaGFyYWN0ZXIgbWF0Y2hlcyAqLwoKICAg
ICAgd2hpbGUgKG1pZCAmJiAobCA9IGNvdW50bWF0Y2god29yZHB0clttaWRdICsgMSwgaW4p
KSkKICAgICAgewogICAgICAgIGlmKChsID09IHdvcmRwdHJbbWlkXVswXSkgJiYgIU5PVE1J
RERMRShpbltsXSkpCiAgICAgICAgewogICAgICAgICAgKnBvcyA9IG1pZDsKICAgICAgICAg
IHJldHVybiBsOwogICAgICAgIH0KICAgICAgICBtaWQtLTsKICAgICAgfQoKICAgICAgaWYg
KGEpCiAgICAgICAgcmV0dXJuIDA7ICAgICAgICAgICAgICAgICAvKiByZWFsbHkgbm8gbWF0
Y2ggKi8KICAgIH0KICB9CgogIHVwID0gbWlkOwogIGlmICh1cCA8IE5VTVdPUkRTKQogICAg
ZG8KICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBGaW5kIHRoZSBsb25nZXN0
IG1hdGNoICovCiAgICAgIHVwKys7CiAgICAgIGEgPSBteXN0cm5jbXAoaW4sIHdvcmRwdHJb
dXBdICsgMSwgd29yZHB0clt1cF1bMF0pOwogICAgICBpZiAoYSA9PSAwKQogICAgICAgIG1p
ZCA9IHVwOwogICAgfSB3aGlsZSAoKGEgPj0gMCkgJiYgKHVwIDwgTlVNV09SRFMgLSAxKSk7
CgojaWYgMAogIHByaW50ZigiRm91bmQgOiAlcyAlZFxuIiwgd29yZHB0clttaWRdICsgMSwg
d29yZHB0clttaWRdWzBdKTsKI2VuZGlmCgogICpwb3MgPSBtaWQ7CiAgcmV0dXJuIHdvcmRw
dHJbbWlkXVswXTsKfQoKCmludCBjb3VudG1hdGNoKHVuc2lnbmVkIGNoYXIgKmluLCB1bnNp
Z25lZCBjaGFyICpvdXQpCnsKICBpbnQgaTsKCiAgaSA9IDA7CiAgd2hpbGUgKGluW2ldID09
IG91dFtpXSkKICAgIGkrKzsKICByZXR1cm4gaTsKfQoKCnZvaWQgc2F2ZXN0YXR1cyhpbnQg
KndpbmRleCwgaW50ICp3bGlzdCwgaW50ICpwb3NsaXN0LCBpbnQgKmpsaXN0LAogICAgICAg
ICAgICAgICAgaW50ICpvaSwgaW50ICpqLCB1bnNpZ25lZCBjaGFyICpvdXQsIGludCBtb2Rl
KQp7CiAgc3RhdGljIGludCBsd2luZGV4LCBsd2xpc3RbTVddLCBscG9zbGlzdFtNV10sIGxq
bGlzdFtNV10sIGxpLCBsajsKICBpbnQgaTsKICBzdGF0aWMgdW5zaWduZWQgY2hhciBsb3V0
W01BWExJTkVMRU5HVEhdOwogICAgCiNpZiAwCiAgcHJpbnRmKCJTYXZlIGNhbGwgJWRcbiIs
IG1vZGUpOwojZW5kaWYKCiAgaWYgKG1vZGUpCiAgeyAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiBTYXZlICovCiAgICBsd2luZGV4ID0gKndpbmRleDsKICAgIGZvciAoaSA9IDA7IGkg
PCBsd2luZGV4OyBpKyspCiAgICB7CiAgICAgIGx3bGlzdFtpXSA9IHdsaXN0W2ldOwogICAg
ICBscG9zbGlzdFtpXSA9IHBvc2xpc3RbaV07CiAgICAgIGxqbGlzdFtpXSA9IGpsaXN0W2ld
OwogICAgfQoKICAgIGZvciAoaSA9IDA7IGkgPCAqajsgaSsrKQogICAgICBsb3V0W2ldID0g
b3V0W2ldOwoKICAgIGxpID0gKm9pOwogICAgbGogPSAqajsKICB9CiAgZWxzZQogIHsgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogUmVzdG9yZSAqLwogICAgKndpbmRleCA9IGx3aW5k
ZXg7CiAgICBmb3IgKGkgPSAwOyBpIDwgbHdpbmRleDsgaSsrKQogICAgewogICAgICB3bGlz
dFtpXSA9IGx3bGlzdFtpXTsKICAgICAgcG9zbGlzdFtpXSA9IGxwb3NsaXN0W2ldOwogICAg
ICBqbGlzdFtpXSA9IGxqbGlzdFtpXTsKICAgIH0KCiAgICBmb3IgKGkgPSAwOyBpIDwgbGo7
IGkrKykKICAgICAgb3V0W2ldID0gbG91dFtpXTsKCiAgICAqb2kgPSBsaTsKICAgICpqID0g
bGo7CiAgfQp9CgoKLyoKICBUaGFpIHZlcnNpb24gb2Ygc3RybmNtcDogYiBtdXN0IGJlIHRo
ZSB3b3JkIGZyb20gZGljdGlvbmFyeS4KKi8KCmludCBteXN0cm5jbXAodW5zaWduZWQgY2hh
ciAqYSwgdW5zaWduZWQgY2hhciAqYiwgaW50IGwpCnsKICBpbnQgaTsKCiAgaSA9IHN0cm5j
bXAoKGNoYXIgKilhLCAoY2hhciAqKWIsIGwpOwogIGlmIChpKQogICAgcmV0dXJuIGk7CiAg
ZWxzZQogICAgcmV0dXJuIE5PVE1JRERMRShhW2xdKTsKfQoKCi8qIFdoYXQgdG8gZG8gd2l0
aCB3b3JkcyBvdXRzaWRlIGRpY3Rpb25hcnkgKi8KCnZvaWQgZmlsdGVyKHVuc2lnbmVkIGNo
YXIgKmxpbmUpCnsKICBpbnQgaSwgaiwgYywgYSwgZm91bmQ7CiAgdW5zaWduZWQgY2hhciBz
dHJbTUFYTElORUxFTkdUSF07CgogIHN0cmNweSgoY2hhciAqKXN0ciwgKGNoYXIgKilsaW5l
KTsKICBmb3VuZCA9IGkgPSAwOwogIGEgPSAtMTsKICB3aGlsZSAoKGMgPSBzdHJbaV0pKQog
IHsKICAgIGlmIChjID09IGN1dGNvZGUpCiAgICAgIGEgPSBpOwogICAgZWxzZSBpZiAoYyA9
PSBjdXRjb2RlICsgMSkKICAgIHsKICAgICAgZm91bmQgPSAxOwogICAgICBpZiAoIVNLSVBX
T1JEKHN0cltpICsgMV0pKQogICAgICAgIHN0cltpXSA9IGN1dGNvZGU7CiAgICAgIGlmIChh
ID49IDApCiAgICAgIHsKICAgICAgICBzdHJbYV0gPSBjdXRjb2RlICsgMTsKICAgICAgICBh
ID0gLTE7CiAgICAgIH0KICAgIH0KICAgIGVsc2UgaWYgKFNLSVBXT1JEKGMpKQogICAgICBh
ID0gLTE7CgogICAgaSsrOwogIH0KCiAgaWYgKGZvdW5kKQogIHsKICAgIGkgPSBqID0gMDsK
ICAgIHdoaWxlICgoYyA9IHN0cltpKytdKSkKICAgICAgaWYgKGMgIT0gY3V0Y29kZSArIDEp
CiAgICAgICAgbGluZVtqKytdID0gYzsKCiAgICBsaW5lW2pdID0gMDsKICB9Cn0KCgp2b2lk
IGFkaih1bnNpZ25lZCBjaGFyICpsaW5lKQp7CiAgdW5zaWduZWQgY2hhciB0b3BbTUFYTElO
RUxFTkdUSF07CiAgdW5zaWduZWQgY2hhciB1cFtNQVhMSU5FTEVOR1RIXTsKICB1bnNpZ25l
ZCBjaGFyIG1pZGRsZVtNQVhMSU5FTEVOR1RIXTsKICB1bnNpZ25lZCBjaGFyIGxvd1tNQVhM
SU5FTEVOR1RIXTsKCiAgaW50IGksIGssIGM7CgogIC8qIFNwbGl0IHN0cmluZyBpbnRvIDQg
bGV2ZWxzICovCgogIC8qIENsZWFyIEJ1ZmZlciAqLwogIGZvciAoaSA9IDA7IGkgPCBNQVhM
SU5FTEVOR1RIOyBpKyspCiAgICB0b3BbaV0gPSB1cFtpXSA9IG1pZGRsZVtpXSA9IGxvd1tp
XSA9IDA7CgogIGkgPSAwOwogIGsgPSAtMTsKCiAgd2hpbGUgKChjID0gbGluZVtpKytdKSkK
ICB7CiAgICBpZiAoayA+PSAwKQogICAgewogICAgICBzd2l0Y2ggKChjID4gMHhEMCkgPyBs
ZXZ0YWJsZVtjIC0gMHhEMF0gOiAwKQogICAgICB7CiAgICAgIGNhc2UgMDogICAgICAgICAg
ICAgICAgICAgICAvKiBNaWRkbGUgKi8KICAgICAgICAvKiBTcGVjaWFsIENhc2UgZm9yIFNh
cmEtQW0gKi8KICAgICAgICBpZiAoYyA9PSAweEQzKQogICAgICAgIHsKICAgICAgICAgIHVw
W2tdID0gMHhFRDsKICAgICAgICAgIG1pZGRsZVsrK2tdID0gMHhEMjsgICAgICAgLyogUHV0
IFNhcmEtQXIgKi8KICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgICAgbWlkZGxlWysr
a10gPSBjOwogICAgICAgIGJyZWFrOwoKICAgICAgY2FzZSAxOiAgICAgICAgICAgICAgICAg
ICAgIC8qIExvdyAqLwogICAgICAgIGxvd1trXSA9IGM7CiAgICAgICAgYnJlYWs7CgogICAg
ICBjYXNlIDI6ICAgICAgICAgICAgICAgICAgICAgLyogVXAgKi8KICAgICAgICB1cFtrXSA9
IGM7CiAgICAgICAgYnJlYWs7CgogICAgICBjYXNlIDM6ICAgICAgICAgICAgICAgICAgICAg
LyogVG9wICovCiAgICAgICAgdG9wW2tdID0gYzsKICAgICAgICBicmVhazsKICAgICAgfQog
ICAgfQogICAgZWxzZQogICAgICBtaWRkbGVbKytrXSA9IGM7CiAgfQoKICAvKiBCZWF1dHkg
UGFydCBCZWdpbnMgKi8KCiAgZm9yIChpID0gMDsgaSA8PSBrOyBpKyspCiAgewogICAgLyog
TW92ZSBkb3duIGZyb20gVG9wIC0+IFVwICovCiAgICBpZiAoKHRvcFtpXSkgJiYgKHVwW2ld
ID09IDApKQogICAgewogICAgICB1cFtpXSA9IHRvcFtpXSAtIDk2OwogICAgICB0b3BbaV0g
PSAwOwogICAgfQoKICAgIC8qIEF2b2lkIGNoYXJhY3RlcnMgd2l0aCBsb25nIHRhaWwgKi8K
ICAgIGlmIChtaWRkbGVbaV0gPT0gMHhCQiB8fCAgICAvKiBQb3IgUGxhICovCiAgICAgICAg
bWlkZGxlW2ldID09IDB4QkQgfHwgICAgLyogRm9yIEZhciAqLwogICAgICAgIG1pZGRsZVtp
XSA9PSAweEJGKSAgICAgIC8qIEZvciBGdW4gKi8KICAgIHsKICAgICAgaWYgKHVwW2ldKQog
ICAgICAgIHVwW2ldID0gbW92ZWxlZnQgKHVwW2ldKTsKICAgICAgaWYgKHRvcFtpXSkKICAg
ICAgICB0b3BbaV0gPSBtb3ZlbGVmdCAodG9wW2ldKTsKICAgIH0KCiAgICAvKiBSZW1vdmUg
bG93ZXIgcGFydCBvZiBUb3JTYW5UYW4gYW5kIFlvclBodVlpbmcgaWYgbmVjZXNzYXJ5ICov
CiAgICBpZiAobWlkZGxlW2ldID09IDB4QjAgJiYgbG93W2ldKSAgICAvKiBUb3JTYW5UYW4g
Ki8KICAgICAgbWlkZGxlW2ldID0gMHg5RjsKICAgIGlmIChtaWRkbGVbaV0gPT0gMHhBRCAm
JiBsb3dbaV0pICAgIC8qIFlvclBodVlpbmcgKi8KICAgICAgbWlkZGxlW2ldID0gMHg5MDsK
CiAgICAvKiBNb3ZlIGxvd2VyIHNhcmEgZG93biAsIGZvciBEb3JDaGFEYSwgVG9yUGFUYWsg
Ki8KICAgIGlmIChtaWRkbGVbaV0gPT0gMHhBRSB8fAogICAgICAgIG1pZGRsZVtpXSA9PSAw
eEFGKQogICAgewogICAgICBpZiAobG93W2ldKQogICAgICAgIGxvd1tpXSA9IGxvd1tpXSAr
IDM2OwogICAgfQogIH0KCiAgLyogUGFjayBCYWNrIFRvIEEgTGluZSAqLwogIGkgPSAwOwog
IGsgPSAwOwoKICB3aGlsZSAobWlkZGxlW2ldKQogIHsKICAgIGxpbmVbaysrXSA9IG1pZGRs
ZVtpXTsKICAgIGlmIChsb3dbaV0pCiAgICAgIGxpbmVbaysrXSA9IGxvd1tpXTsKICAgIGlm
ICh1cFtpXSkKICAgICAgbGluZVtrKytdID0gdXBbaV07CiAgICBpZiAodG9wW2ldKQogICAg
ICBsaW5lW2srK10gPSB0b3BbaV07CiAgICBpKys7CiAgfQoKICAvKiBOdW1iZXIgb2YgYnl0
ZXMgbWlnaHQgY2hhbmdlICovCiAgbGluZVtrXSA9IDA7Cn0KCgppbnQgbW92ZWxlZnQoaW50
IGMpCnsKICBpbnQgaTsKCiAgZm9yIChpID0gMDsgaSA8IDM0OyBpICs9IDIpCiAgewogICAg
aWYgKGxlZnR0YWJbaV0gPT0gYykKICAgICAgcmV0dXJuIGxlZnR0YWJbaSArIDFdOwogIH0K
ICByZXR1cm4gYzsKfQoKLyogZW5kIG9mIHRoYWljb252LmMgKi8K

reply via email to

[Prev in Thread] Current Thread [Next in Thread]