delorie.com/archives/browse.cgi   search  
Mail Archives: geda-user/2017/03/06/15:56:37

X-Authentication-Warning: delorie.com: mail set sender to geda-user-bounces using -f
X-Recipient: geda-user AT delorie DOT com
X-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20161025;
h=mime-version:in-reply-to:references:from:date:message-id:subject:to;
bh=gH5+sTfr9f9He3KzgcRRy0PpnFKzyb8Qkl1bXFwUbKg=;
b=mCW0CjVkoXq0gBuXYOpsSoIcz4XESHD2kMUWcJnxadPjHPOxAXS6Sbyf9mHYoeqgBr
7p53B2185ihknVzd7rqKgrRAAG/OObWcqInr8/La8NkZKCTlzf16xYLw3Nt+5tGDIBzL
98DaTw30HVwHCWqNAffthcVL625L/6RETF9SZuff2bqp3YL8Gaxx0T5F+CdM8TLciaeU
qnTQ7yj4ZjDj/h/wqtZm5dYQu65aTQJY5SgrJFXBWVa+25/rJBd0YB1lh2C9Umq62lSx
BY6FPF/RtoSFHcS1mrz6cXlHWQ//t6a3oioVOwCRcz9Hwwof6R17BcGK+mFx9g9zuWYs
XR2A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20161025;
h=x-gm-message-state:mime-version:in-reply-to:references:from:date
:message-id:subject:to;
bh=gH5+sTfr9f9He3KzgcRRy0PpnFKzyb8Qkl1bXFwUbKg=;
b=NV2W51rX9bqlPBg/1MVkXrrr6Sxt1Nl8Gp+wvSpDeNqfCzBj0on8PnASGnaGeQmEp+
6d5zrvikpUSJlBQC2DCYhrr7+S0hGzqZy5nrT225Ee13WdufAeFedo0zqfmCJ8Ee3hhR
Lp2/YGzUN+IgJjz5KwP7F321rYLBV8tXqP1J5O/1kCrGZPjdV6SUTRoHt2zEl8MNPaYd
/SavJ68iuQLBcuLn7EUvZVpGIwbONo4w8dH0Vfr/w2ldQy3VKMXvhuzaOf6LYOFnupiu
knEwV23tLIxuFGC/zPGxiuhqkU2fPUmI7sZ3LWYl4eku3k8zi2ztMW4i8Ub/gV6xwxy0
Z7cg==
X-Gm-Message-State: AMke39mECstCSxMzif1XEOwkgC2pvilRlUD+krF8QkvE7mMRufrRYU+WpLH5lE6pAMOncLm6f9PcitQHIiBjzw==
X-Received: by 10.223.160.243 with SMTP id n48mr17518309wrn.198.1488833711445;
Mon, 06 Mar 2017 12:55:11 -0800 (PST)
MIME-Version: 1.0
In-Reply-To: <20170306212421.a658cb36967460efbe4ba474@gmail.com>
References: <CAGqyy=bjaaMDLLybUPdE=3h1eb4puBmHQuJL4YwFy8Nvyv5R9A AT mail DOT gmail DOT com>
<CAGqyy=a7SFSnSUeBSiZBYFidGB=k3B=DQfHZD=Z6YqLn6FEj3w AT mail DOT gmail DOT com> <20170306212421 DOT a658cb36967460efbe4ba474 AT gmail DOT com>
From: "Luis de Arquer (ldearquer AT gmail DOT com) [via geda-user AT delorie DOT com]" <geda-user AT delorie DOT com>
Date: Mon, 6 Mar 2017 21:55:10 +0100
Message-ID: <CAGqyy=ZZB+Q6T0o4x8OP0LB3pBi0XPu3T+mW4-twTEZTxJsvAg@mail.gmail.com>
Subject: Re: [geda-user] Rubberband move keeping lines direction
To: geda-user AT delorie DOT com
Reply-To: geda-user AT delorie DOT com
Errors-To: nobody AT delorie DOT com
X-Mailing-List: geda-user AT delorie DOT com
X-Unsubscribes-To: listserv AT delorie DOT com

--94eb2c1848748050a1054a161cc6
Content-Type: text/plain; charset=UTF-8

Actually, I sort of implemented it, but I forgot to add the new files
to the patch I sent!
This time, I am attaching the full patch.

2017-03-06 21:24 GMT+01:00, Nicklas Karlsson
(nicklas DOT karlsson17 AT gmail DOT com) [via geda-user AT delorie DOT com]
<geda-user AT delorie DOT com>:

> I you remember original position line should be elongenated until it hit the
> moved line. You need to calculate the intersection point, it is a good idea
> to remember original point during move and if workin 45 or 90 degree angles
> on a grid rounding errors will probably not be a problem, I think anyway.
>

It's good you say that as that's exactly what I did! The movement
vector goes from line mid point to neighbour lines' intersection. Have
a look at FitCrosshairIntoGrid( ).
But actually I am not fitting to the grid, and I gave up on 45/90 grid
alignments; that's why I moved to floating point, and made it generic
to any angle, which seems to work fine.
Anyway, it should be enhanced to grid-align on 45/90 as you say.
Maybe, if you could try the patch, you could let me know if it works
as you expect

I am trying to understand better how the Undo thing works, to complete
the implementation.

Luis

--94eb2c1848748050a1054a161cc6
Content-Type: text/x-patch; charset=UTF-8; name="rubberband_keep_direction.patch"
Content-Disposition: attachment; filename="rubberband_keep_direction.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: file0

ZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQppbmRleCAwNThj
MTBmLi5kODhmYjY2IDEwMDY0NAotLS0gYS9zcmMvTWFrZWZpbGUuYW0KKysrIGIvc3JjL01ha2Vm
aWxlLmFtCkBAIC02NCw2ICs2NCw4IEBAIFBDQl9TUkNTID0gXAogCWVkaWZfcGFyc2UuaCBcCiAJ
ZXJyb3IuYyBcCiAJZXJyb3IuaCBcCisJZmdlb21ldHJ5LmMgXAorCWZnZW9tZXRyeS5oIFwKIAlm
aWxlLmMgXAogCWZpbGUuaCBcCiAJZmluZC5jIFwKZGlmZiAtLWdpdCBhL3NyYy9jcmVhdGUuYyBi
L3NyYy9jcmVhdGUuYwppbmRleCBkNDFiNDU2Li40NWNkN2I2IDEwMDY0NAotLS0gYS9zcmMvY3Jl
YXRlLmMKKysrIGIvc3JjL2NyZWF0ZS5jCkBAIC0xMDIwLDYgKzEwMjAsOCBAQCBDcmVhdGVOZXdS
dWJiZXJiYW5kRW50cnkgKExheWVyVHlwZSAqTGF5ZXIsCiAgIHB0ci0+TGF5ZXIgPSBMYXllcjsK
ICAgcHRyLT5MaW5lID0gTGluZTsKICAgcHRyLT5Nb3ZlZFBvaW50ID0gTW92ZWRQb2ludDsKKyAg
cHRyLT5EWCA9IC0xOworICBwdHItPkRZID0gLTE7CiAgIHJldHVybiAocHRyKTsKIH0KIApkaWZm
IC0tZ2l0IGEvc3JjL2Nyb3NzaGFpci5jIGIvc3JjL2Nyb3NzaGFpci5jCmluZGV4IGM4Y2U2NTMu
LjUzNDE4MjcgMTAwNjQ0Ci0tLSBhL3NyYy9jcm9zc2hhaXIuYworKysgYi9zcmMvY3Jvc3NoYWly
LmMKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJteW1lbS5oIgogI2luY2x1ZGUgInNlYXJj
aC5oIgogI2luY2x1ZGUgInBvbHlnb24uaCIKKyNpbmNsdWRlICJmZ2VvbWV0cnkuaCIKIAogI2lm
ZGVmIEhBVkVfTElCRE1BTExPQwogI2luY2x1ZGUgPGRtYWxsb2MuaD4KQEAgLTQ0Nyw5ICs0NDgs
MjAgQEAgWE9SRHJhd01vdmVPckNvcHlPYmplY3QgKGhpZEdDIGdjKQogICAgICAgewogCUxpbmVU
eXBlICpsaW5lID0gKExpbmVUeXBlICopIENyb3NzaGFpci5BdHRhY2hlZE9iamVjdC5QdHIyOwog
Ci0JWE9SRHJhd0F0dGFjaGVkTGluZSAoZ2MsIGxpbmUtPlBvaW50MS5YICsgZHgsIGxpbmUtPlBv
aW50MS5ZICsgZHksCisJaSA9IENyb3NzaGFpci5BdHRhY2hlZE9iamVjdC5SdWJiZXJiYW5kTjsK
KwlwdHIgPSBDcm9zc2hhaXIuQXR0YWNoZWRPYmplY3QuUnViYmVyYmFuZDsKKwlpZiAoaSA9PSAy
ICYmIHB0ci0+RFggIT0gLTEpCisJeworCQlYT1JEcmF3QXR0YWNoZWRMaW5lIChnYywgbGluZS0+
UG9pbnQxLlggKyBwdHJbMF0uRFgsIGxpbmUtPlBvaW50MS5ZICsgcHRyWzBdLkRZLAorCSAgICAg
ICAgICAgICAgICAgICAgICAgICBsaW5lLT5Qb2ludDIuWCArIHB0clsxXS5EWCwgbGluZS0+UG9p
bnQyLlkgKyBwdHJbMV0uRFksCisJICAgICAgICAgICAgICAgICAgICAgbGluZS0+VGhpY2tuZXNz
KTsKKwl9CisJZWxzZQorCXsKKwkJWE9SRHJhd0F0dGFjaGVkTGluZSAoZ2MsIGxpbmUtPlBvaW50
MS5YICsgZHgsIGxpbmUtPlBvaW50MS5ZICsgZHksCiAJICAgICAgICAgICAgICAgICAgICAgICAg
IGxpbmUtPlBvaW50Mi5YICsgZHgsIGxpbmUtPlBvaW50Mi5ZICsgZHksCiAJICAgICAgICAgICAg
ICAgICAgICAgbGluZS0+VGhpY2tuZXNzKTsKKwl9CiAJYnJlYWs7CiAgICAgICB9CiAKQEAgLTU2
OSw5ICs1ODEsMTggQEAgWE9SRHJhd01vdmVPckNvcHlPYmplY3QgKGhpZEdDIGdjKQogCSAgICAg
IHBvaW50MSA9ICZwdHItPkxpbmUtPlBvaW50MTsKIAkgICAgICBwb2ludDIgPSAmcHRyLT5MaW5l
LT5Qb2ludDI7CiAJICAgIH0KLQkgIFhPUkRyYXdBdHRhY2hlZExpbmUgKGdjLCBwb2ludDEtPlgs
IHBvaW50MS0+WSwKLQkgICAgICAgICAgICAgICAgICAgICAgIHBvaW50Mi0+WCArIGR4LCBwb2lu
dDItPlkgKyBkeSwKLQkgICAgICAgICAgICAgICAgICAgICAgIHB0ci0+TGluZS0+VGhpY2tuZXNz
KTsKKwkgICAgaWYgKHB0ci0+RFggPT0gLTEpCisgICAgICB7CisJICAgICAgWE9SRHJhd0F0dGFj
aGVkTGluZSAoZ2MsIHBvaW50MS0+WCwgcG9pbnQxLT5ZLAorCSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwb2ludDItPlggKyBkeCwgcG9pbnQyLT5ZICsgZHksCisJICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHB0ci0+TGluZS0+VGhpY2tuZXNzKTsKKwkgICAgfQorCSAgICBlbHNlCisJ
ICAgIHsKKwkgICAgICBYT1JEcmF3QXR0YWNoZWRMaW5lIChnYywgcG9pbnQxLT5YLCBwb2ludDEt
PlksCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50Mi0+WCArIHB0ci0+RFgsIHBv
aW50Mi0+WSArIHB0ci0+RFksCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0ci0+TGlu
ZS0+VGhpY2tuZXNzKTsKKwkgICAgfQogCX0KICAgICAgIGVsc2UgaWYgKHB0ci0+TW92ZWRQb2lu
dCA9PSAmcHRyLT5MaW5lLT5Qb2ludDEpCiAJWE9SRHJhd0F0dGFjaGVkTGluZSAoZ2MsCkBAIC0x
MDIxLDYgKzEwNDIsOTIgQEAgRml0Q3Jvc3NoYWlySW50b0dyaWQgKENvb3JkIFgsIENvb3JkIFkp
CiAJICBlbHNlCiAJICAgIG5lYXJlc3RfZ3JpZF94ID0gTWFya2VkLlg7CiAJfQorCSAgICAvKiBN
b3ZlIGtlZXBpbmcgcnViYmVyYmFuZCBsaW5lcyBkaXJlY3Rpb24gKi8KKyAgICAgIGlmICggQ3Jv
c3NoYWlyLkF0dGFjaGVkT2JqZWN0LlR5cGUgPT0gTElORV9UWVBFICYmCisgICAgICAgICAgICBD
cm9zc2hhaXIuQXR0YWNoZWRPYmplY3QuUnViYmVyYmFuZE4gPT0gMikKKyAgICAgIHsKKyAgICAg
ICAgTGluZVR5cGUgKmxpbmUgPSAoTGluZVR5cGUqKSBDcm9zc2hhaXIuQXR0YWNoZWRPYmplY3Qu
UHRyMjsKKyAgICAgICAgTGluZVR5cGUgKnJ1YjEgPSAoTGluZVR5cGUqKSBDcm9zc2hhaXIuQXR0
YWNoZWRPYmplY3QuUnViYmVyYmFuZFswXS5MaW5lOworICAgICAgICBMaW5lVHlwZSAqcnViMiA9
IChMaW5lVHlwZSopIENyb3NzaGFpci5BdHRhY2hlZE9iamVjdC5SdWJiZXJiYW5kWzFdLkxpbmU7
CisKKyAgICAgICAgLyogQ3JlYXRlIGZsb2F0IHBvaW50LXZlY3RvciByZXByZXNlbnRhdGlvbnMg
b2YgdGhlIGxpbmVzICovCisgICAgICAgIGZsaW5lIGZtYWluLCBmcnViMSwgZnJ1YjI7CisgICAg
ICAgIGZtYWluID0gZmxpbmVfY3JlYXRlX2Zyb21fcG9pbnRzICgmbGluZS0+UG9pbnQxLCAmbGlu
ZS0+UG9pbnQyKTsKKyAgICAgICAgaWYgKENyb3NzaGFpci5BdHRhY2hlZE9iamVjdC5SdWJiZXJi
YW5kWzBdLk1vdmVkUG9pbnQgPT0gJnJ1YjEtPlBvaW50MSkKKyAgICAgICAgICBmcnViMSA9IGZs
aW5lX2NyZWF0ZV9mcm9tX3BvaW50cyAoJnJ1YjEtPlBvaW50MSwgJnJ1YjEtPlBvaW50Mik7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICBmcnViMSA9IGZsaW5lX2NyZWF0ZV9mcm9tX3BvaW50cyAo
JnJ1YjEtPlBvaW50MiwgJnJ1YjEtPlBvaW50MSk7CisgICAgICAgIAorICAgICAgICBpZiAoQ3Jv
c3NoYWlyLkF0dGFjaGVkT2JqZWN0LlJ1YmJlcmJhbmRbMV0uTW92ZWRQb2ludCA9PSAmcnViMi0+
UG9pbnQxKQorICAgICAgICAgIGZydWIyID0gZmxpbmVfY3JlYXRlX2Zyb21fcG9pbnRzICgmcnVi
Mi0+UG9pbnQxLCAmcnViMi0+UG9pbnQyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgIGZydWIy
ID0gZmxpbmVfY3JlYXRlX2Zyb21fcG9pbnRzICgmcnViMi0+UG9pbnQyLCAmcnViMi0+UG9pbnQx
KTsKKyAgICAgICAgCisgICAgICAgIC8qIElmIHRoZXkgYXJlIHZhbGlkIChub24tbnVsbCBkaXJl
Y3Rpb25zKSB3ZSBjYXJyeSBvbiAqLworICAgICAgICBpZiAoZmxpbmVfaXNfdmFsaWQoZm1haW4p
ICYmIGZsaW5lX2lzX3ZhbGlkKGZydWIxKSAmJiBmbGluZV9pc192YWxpZChmcnViMikpCisgICAg
ICAgIHsKKyAgICAgICAgICBmdmVjdG9yIGZtb3ZlOworICAgICAgICAgIAorICAgICAgICAgIGZ2
ZWN0b3IgZmludGVyc2VjdGlvbiA9IGZsaW5lX2ludGVyc2VjdGlvbihmcnViMSwgZnJ1YjIpOwor
ICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICBpZiAoIWZ2ZWN0b3JfaXNfbnVsbChmaW50
ZXJzZWN0aW9uKSkKKyAgICAgICAgICB7CisgICAgICAgICAgCS8qIE1vdmVtZW50IGRpcmVjdGlv
biBkZWZpbmVkIGFzIGZyb20gbWlkIGxpbmUgdG8gaW50ZXJzZWN0aW9uIHBvaW50ICovCisgICAg
ICAgICAgCWZ2ZWN0b3IgZm1pZDsKKyAgICAgICAgICAJZm1pZC54ID0gKChkb3VibGUpbGluZS0+
UG9pbnQyLlggKyBsaW5lLT5Qb2ludDEuWCkgLyAyLjA7CisgICAgICAgICAgCWZtaWQueSA9ICgo
ZG91YmxlKWxpbmUtPlBvaW50Mi5ZICsgbGluZS0+UG9pbnQxLlkpIC8gMi4wOworICAgICAgICAg
IAlmbW92ZS54ID0gZmludGVyc2VjdGlvbi54IC0gZm1pZC54OworICAgICAgICAgIAlmbW92ZS55
ID0gZmludGVyc2VjdGlvbi55IC0gZm1pZC55OworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNl
CisgICAgICAgICAgeworICAgICAgICAgICAgLyogTm8gaW50ZXJzZWN0aW9uLiBSdWJiZXJiYW5k
IGxpbmVzIGFyZSBwYXJhbGxlbCAqLworICAgICAgICAgICAgZm1vdmUueCA9IGZydWIxLmRpcmVj
dGlvbi54OworICAgICAgICAgICAgZm1vdmUueSA9IGZydWIxLmRpcmVjdGlvbi55OworICAgICAg
ICAgIH0gICAgICAgCQorICAgICAgICAJICAgICAgICAJCisgICAgICAgIAlpZiAoIWZ2ZWN0b3Jf
aXNfbnVsbChmbW92ZSkpCisgICAgICAgIAl7CisgICAgICAgICAgICBmdmVjdG9yX25vcm1hbGl6
ZSgmZm1vdmUpOworCisgICAgICAgICAgICAvKiBDdXJzb3IgZGVsdGEgdmVjdG9yICovCisgICAg
ICAgICAgICBmdmVjdG9yIGZjdXJzb3JfZGVsdGE7CisgICAgICAgICAgICBmY3Vyc29yX2RlbHRh
LnggPSBDcm9zc2hhaXIuWCAtIE1hcmtlZC5YOworICAgICAgICAgICAgZmN1cnNvcl9kZWx0YS55
ID0gQ3Jvc3NoYWlyLlkgLSBNYXJrZWQuWTsKKworICAgICAgICAgICAgLyogQ3Vyc29yIGRlbHRh
IHByb2plY3Rpb24gb24gbW92ZW1lbnQgZGlyZWN0aW9uICovCisgICAgICAgICAgICBkb3VibGUg
YW1vdW50X21vdmVkID0gZnZlY3Rvcl9kb3QoZm1vdmUsIGZjdXJzb3JfZGVsdGEpOworCisgICAg
ICAgICAgICAvKiBTY2FsZSBmbW92ZSBieSBjYWxjdWxhdGVkIGFtb3VudCAqLworICAgICAgICAg
ICAgZnZlY3RvciBmbW92ZV90b3RhbDsKKyAgICAgICAgICAgIGZtb3ZlX3RvdGFsLnggPSBmbW92
ZS54ICogYW1vdW50X21vdmVkOworICAgICAgICAgICAgZm1vdmVfdG90YWwueSA9IGZtb3ZlLnkg
KiBhbW91bnRfbW92ZWQ7CisKKyAgICAgICAgICAgIC8qIFVwZGF0ZSB2YWx1ZXMgZm9yIG5lYXJl
c3RfZ3JpZCBhbmQgUnViYmVyYmFuZCBsaW5lcyAqLworICAgICAgICAgICAgbmVhcmVzdF9ncmlk
X3ggPSBNYXJrZWQuWCArIGZtb3ZlX3RvdGFsLng7CisgICAgICAgICAgICBuZWFyZXN0X2dyaWRf
eSA9IE1hcmtlZC5ZICsgZm1vdmVfdG90YWwueTsKKworICAgICAgICAgICAgLyogTW92ZSBydWJi
ZXJiYW5kOiBmbW92ZV90b3RhbMK3bm9ybWFsID0gZm1vdmVfcnViYmVyYmFuZMK3bm9ybWFsCisg
ICAgICAgICAgICAgKiB3aGVyZSBub3JtYWwgaXMgdGhlIG1vdmluZyBsaW5lIG5vcm1hbAorICAg
ICAgICAgICAgICovCisgICAgICAgICAgICBmdmVjdG9yIGZub3JtYWw7CisgICAgICAgICAgICBm
bm9ybWFsLnggPSBmbWFpbi5kaXJlY3Rpb24ueTsKKyAgICAgICAgICAgIGZub3JtYWwueSA9IC1m
bWFpbi5kaXJlY3Rpb24ueDsKKyAgICAgICAgICAgIGlmIChmdmVjdG9yX2RvdChmbm9ybWFsLCBm
bW92ZSkgPCAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBmbm9ybWFsLnggPSAtZm5v
cm1hbC54OworICAgICAgICAgICAgICBmbm9ybWFsLnkgPSAtZm5vcm1hbC55OworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgZG91YmxlIHJ1YjFfbW92ZSA9IGFtb3VudF9tb3ZlZCAqIGZ2ZWN0
b3JfZG90KGZtb3ZlLCBmbm9ybWFsKSAvIGZ2ZWN0b3JfZG90KGZydWIxLmRpcmVjdGlvbiwgZm5v
cm1hbCk7CisgICAgICAgICAgICBDcm9zc2hhaXIuQXR0YWNoZWRPYmplY3QuUnViYmVyYmFuZFsw
XS5EWCA9IHJ1YjFfbW92ZSpmcnViMS5kaXJlY3Rpb24ueDsKKyAgICAgICAgICAgIENyb3NzaGFp
ci5BdHRhY2hlZE9iamVjdC5SdWJiZXJiYW5kWzBdLkRZID0gcnViMV9tb3ZlKmZydWIxLmRpcmVj
dGlvbi55OworICAgICAgICAgICAgCisgICAgICAgICAgICBkb3VibGUgcnViMl9tb3ZlID0gYW1v
dW50X21vdmVkICogZnZlY3Rvcl9kb3QoZm1vdmUsIGZub3JtYWwpIC8gZnZlY3Rvcl9kb3QoZnJ1
YjIuZGlyZWN0aW9uLCBmbm9ybWFsKTsKKyAgICAgICAgICAgIENyb3NzaGFpci5BdHRhY2hlZE9i
amVjdC5SdWJiZXJiYW5kWzFdLkRYID0gcnViMl9tb3ZlKmZydWIyLmRpcmVjdGlvbi54OworICAg
ICAgICAgICAgQ3Jvc3NoYWlyLkF0dGFjaGVkT2JqZWN0LlJ1YmJlcmJhbmRbMV0uRFkgPSBydWIy
X21vdmUqZnJ1YjIuZGlyZWN0aW9uLnk7CisgICAgICAgIAl9CisJICAgICAgfQorICAgICAgfQog
CiAgICAgfQogCmRpZmYgLS1naXQgYS9zcmMvZmdlb21ldHJ5LmMgYi9zcmMvZmdlb21ldHJ5LmMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTkwZjFmNgotLS0gL2Rldi9udWxs
CisrKyBiL3NyYy9mZ2VvbWV0cnkuYwpAQCAtMCwwICsxLDEzMCBAQAorCisjaW5jbHVkZSAiZmdl
b21ldHJ5LmgiCisjaW5jbHVkZSA8bWF0aC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNkZWZp
bmUgTUlOX0NPTVBPTkVOVAkwLjAwMDAwMQorCitpbnQgZnZlY3Rvcl9pc19udWxsIChmdmVjdG9y
IHYpCit7CisJcmV0dXJuIGZhYnModi54KSA8IE1JTl9DT01QT05FTlQgJiYgZmFicyh2LnkpIDwg
TUlOX0NPTVBPTkVOVDsKK30KKworZG91YmxlIGZ2ZWN0b3JfZG90IChmdmVjdG9yIHYxLCBmdmVj
dG9yIHYyKQoreworCXJldHVybiB2MS54ICogdjIueCArIHYxLnkgKiB2Mi55OworfQorCisKK3Zv
aWQgZnZlY3Rvcl9ub3JtYWxpemUgKGZ2ZWN0b3IgKnYpCit7CisJZG91YmxlIG1vZHVsZSA9IHNx
cnQodi0+eCAqIHYtPnggKyB2LT55ICogdi0+eSk7CisJCisJdi0+eCAvPSBtb2R1bGU7CisJdi0+
eSAvPSBtb2R1bGU7Cit9CisKK2ludCBmbGluZV9pc192YWxpZChmbGluZSBsKQoreworCXJldHVy
biAhZnZlY3Rvcl9pc19udWxsKGwuZGlyZWN0aW9uKTsKK30KKworZmxpbmUgZmxpbmVfY3JlYXRl
KExpbmVUeXBlICpsaW5lKQoreworCWZsaW5lIHJldDsKKwkKKwlyZXQucG9pbnQueCA9IGxpbmUt
PlBvaW50MS5YOworCXJldC5wb2ludC55ID0gbGluZS0+UG9pbnQxLlk7CisJcmV0LmRpcmVjdGlv
bi54ID0gbGluZS0+UG9pbnQyLlggLSBsaW5lLT5Qb2ludDEuWDsKKwlyZXQuZGlyZWN0aW9uLnkg
PSBsaW5lLT5Qb2ludDIuWSAtIGxpbmUtPlBvaW50MS5ZOworCQorCWlmICghZnZlY3Rvcl9pc19u
dWxsIChyZXQuZGlyZWN0aW9uKSkKKwkJZnZlY3Rvcl9ub3JtYWxpemUoICZyZXQuZGlyZWN0aW9u
ICk7CisJCisJcmV0dXJuIHJldDsKK30KKworCitmbGluZSBmbGluZV9jcmVhdGVfZnJvbV9wb2lu
dHMoUG9pbnRUeXBlICpiYXNlX3BvaW50LCBQb2ludFR5cGUgKm90aGVyX3BvaW50KQoreworCWZs
aW5lIHJldDsKKwkKKwlyZXQucG9pbnQueCA9IGJhc2VfcG9pbnQtPlg7CisJcmV0LnBvaW50Lnkg
PSBiYXNlX3BvaW50LT5ZOworCXJldC5kaXJlY3Rpb24ueCA9IG90aGVyX3BvaW50LT5YIC0gYmFz
ZV9wb2ludC0+WDsKKwlyZXQuZGlyZWN0aW9uLnkgPSBvdGhlcl9wb2ludC0+WSAtIGJhc2VfcG9p
bnQtPlk7CisJCisJaWYgKCFmdmVjdG9yX2lzX251bGwgKHJldC5kaXJlY3Rpb24pKQorCQlmdmVj
dG9yX25vcm1hbGl6ZSggJnJldC5kaXJlY3Rpb24gKTsKKwkKKwlyZXR1cm4gcmV0OworfQorCisK
K2Z2ZWN0b3IgZmxpbmVfaW50ZXJzZWN0aW9uKGZsaW5lIGwxLCBmbGluZSBsMikKK3sKKwlmdmVj
dG9yIHJldDsKKwlyZXQueCA9IDA7CisJcmV0LnkgPSAwOworCisJZG91YmxlIGxpbmVzX2RvdCA9
IGZ2ZWN0b3JfZG90IChsMS5kaXJlY3Rpb24sIGwyLmRpcmVjdGlvbik7CisJaWYgKGZhYnMobGlu
ZXNfZG90KSA+IDAuOTkwICkKKwl7CisJCS8qIENvbnNpZGVyIHRoZW0gcGFyYWxsZWwuIFJldHVy
biBudWxsIHBvaW50ICh2ZWN0b3IpICovCisJCXJldHVybiByZXQ7CisJfQorCQorCS8qCisJICog
KioqIEZyb20gcG9seWdvbjEuYyAqKioKKwkgKiBXZSBoYXZlIHRoZSBsaW5lczoKKwkgKiBsMTog
cDEgKyBzKmQxCisJICogbDI6IHAyICsgdCpkMgorCSAqIEFuZCB3ZSB3YW50IHRvIGtub3cgdGhl
IGludGVyc2VjdGlvbiBwb2ludC4KKwkgKiBDYWxjdWxhdGUgdDoKKwkgKiBwMSArIHMqZDEgPSBw
MiArIHQqZDIKKwkgKiB3aGljaCBpcyBzaW1pbGFyIHRvIHRoZSB0d28gZXF1YXRpb25zOgorCSAq
IHAxeCArIHMgKiBkMXggPSBwMnggKyB0ICogZDJ4CisJICogcDF5ICsgcyAqIGQxeSA9IHAyeSAr
IHQgKiBkMnkKKwkgKiBNdWx0aXBseWluZyB0aGVzZSBieSBkMXkgcmVzcC4gZDF4IGdpdmVzOgor
CSAqIGQxeSAqIHAxeCArIHMgKiBkMXggKiBkMXkgPSBkMXkgKiBwMnggKyB0ICogZDF5ICogZDJ4
CisJICogZDF4ICogcDF5ICsgcyAqIGQxeCAqIGQxeSA9IGQxeCAqIHAyeSArIHQgKiBkMXggKiBk
MnkKKwkgKiBTdWJ0cmFjdGluZyB0aGVzZSBnaXZlczoKKwkgKiBkMXkgKiBwMXggLSBkMXggKiBw
MXkgPSBkMXkgKiBwMnggLSBkMXggKiBwMnkgKyB0ICogKCBkMXkgKiBkMnggLSBkMXggKiBkMnkg
KQorCSAqIFNvIHQgY2FuIGJlIGlzb2xhdGVkOgorCSAqIHQgPSAoZDF5ICogKCBwMXggLSBwMngg
KSArIGQxeCAqICggLSBwMXkgKyBwMnkgKSkgLyAoIGQxeSAqIGQyeCAtIGQxeCAqIGQyeSApCisJ
ICogYW5kIHMgY2FuIGJlIGZvdW5kIHNpbWlsYXJseQorCSAqIHMgPSAoZDJ5ICogKCBwMnggLSBw
MXggKSArIGQyeCAqICggcDF5IC0gcDJ5ICkpIC8gKCBkMnkgKiBkMXggLSBkMnggKiBkMXkpCisJ
ICovCisJCisJZG91YmxlIHQsczsKKwlkb3VibGUgcDF4LCBwMXksIGQxeCwgZDF5OworCWRvdWJs
ZSBwMngsIHAyeSwgZDJ4LCBkMnk7CisJCisJcDF4ID0gbDEucG9pbnQueDsKKwlwMXkgPSBsMS5w
b2ludC55OworCWQxeCA9IGwxLmRpcmVjdGlvbi54OworCWQxeSA9IGwxLmRpcmVjdGlvbi55Owor
CQorCXAyeCA9IGwyLnBvaW50Lng7CisJcDJ5ID0gbDIucG9pbnQueTsKKwlkMnggPSBsMi5kaXJl
Y3Rpb24ueDsKKwlkMnkgPSBsMi5kaXJlY3Rpb24ueTsKKwkKKwl0ID0gKGQxeSAqICggcDF4IC0g
cDJ4ICkgKyBkMXggKiAoIC0gcDF5ICsgcDJ5ICkpIC8gKCBkMXkgKiBkMnggLSBkMXggKiBkMnkg
KTsKKwlzID0gKGQyeSAqICggcDJ4IC0gcDF4ICkgKyBkMnggKiAoIHAxeSAtIHAyeSApKSAvICgg
ZDJ5ICogZDF4IC0gZDJ4ICogZDF5ICk7CisKKwlwcmludGYoIkludGVyc2VjdGlvbiB0PSVmLCBz
PSVmXG4iLCB0LCBzKTsJCisJCisvLwlyZXQueCA9IHAxeCArIHMgKiBkMXg7CisvLwlyZXQueSA9
IHAxeSArIHMgKiBkMXk7CisJCisJcmV0LnggPSBwMnggKyB0ICogZDJ4OworCXJldC55ID0gcDJ5
ICsgdCAqIGQyeTsKKwkKKwkKKwlwcmludGYoIkludGVyc2VjdGlvbiB4PSVmLCB5PSVmXG4iLCBy
ZXQueCwgcmV0LnkpOworCQorCXJldHVybiByZXQ7Cit9CisKKwpkaWZmIC0tZ2l0IGEvc3JjL2Zn
ZW9tZXRyeS5oIGIvc3JjL2ZnZW9tZXRyeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjUwZmEyMjUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvZmdlb21ldHJ5LmgKQEAgLTAs
MCArMSw0MSBAQAorCisjaWZuZGVmIFBDQl9GR0VPTUVUUllfSAorI2RlZmluZSBQQ0JfRkdFT01F
VFJZX0gKKworI2luY2x1ZGUgImdsb2JhbC5oIgorCit0eXBlZGVmIHN0cnVjdAoreworCWRvdWJs
ZSB4OworCWRvdWJsZSB5OworfSBmdmVjdG9yOworCisKKy8qIGZsaW5lcyBzaG91bGQgYmUgY3Jl
YXRlZCB0aHJvdWdoIGZsaW5lX2NyZWF0ZSogZnVuY3Rpb25zLgorICogQWx0ZXJuYXRpdmVseSwg
dGhleSBjYW4gYmUgY3JlYXRlZCBtYW51YWxseSBhcyBsb25nIGFzCisgKiBkaXJlY3Rpb24gaXMg
bm9ybWFsaXplZAorICovCit0eXBlZGVmIHN0cnVjdAoreworCWZ2ZWN0b3IgcG9pbnQ7CisJZnZl
Y3RvciBkaXJlY3Rpb247Cit9IGZsaW5lOworCitpbnQgZnZlY3Rvcl9pc19udWxsKGZ2ZWN0b3Ig
dik7CisKKworLyogQW55IHZlY3RvciBnaXZlbiB0byB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBo
YXMgdG8gYmUgbm9uLW51bGwgKi8gICAKK2RvdWJsZSBmdmVjdG9yX2RvdCAoZnZlY3RvciB2MSwg
ZnZlY3RvciB2Mik7Cit2b2lkIGZ2ZWN0b3Jfbm9ybWFsaXplIChmdmVjdG9yICp2KTsKKworCitm
bGluZSBmbGluZV9jcmVhdGUoTGluZVR5cGUgKmxpbmUpOworZmxpbmUgZmxpbmVfY3JlYXRlX2Zy
b21fcG9pbnRzKFBvaW50VHlwZSAqYmFzZV9wb2ludCwgUG9pbnRUeXBlICpvdGhlcl9wb2ludCk7
CisKK2ludCBmbGluZV9pc192YWxpZChmbGluZSBsKTsKKworLyogbDEuZGlyZWN0aW9uIGFuZCBs
Mi5kaXJlY3Rpb24gYXJlIGV4cGVjdGVkIHRvIGJlIG5vcm1hbGl6ZWQgKi8KK2Z2ZWN0b3IgZmxp
bmVfaW50ZXJzZWN0aW9uKGZsaW5lIGwxLCBmbGluZSBsMik7CisKKyNlbmRpZgorCmRpZmYgLS1n
aXQgYS9zcmMvZ2xvYmFsLmggYi9zcmMvZ2xvYmFsLmgKaW5kZXggZmM5NTI4OC4uYzVjMzM4ZCAx
MDA2NDQKLS0tIGEvc3JjL2dsb2JhbC5oCisrKyBiL3NyYy9nbG9iYWwuaApAQCAtNjUyLDYgKzY1
Miw4IEBAIHR5cGVkZWYgc3RydWN0CiAgIExheWVyVHlwZSAqTGF5ZXI7IC8qITwgTGF5ZXIgdGhh
dCBob2xkcyB0aGUgbGluZS4gKi8KICAgTGluZVR5cGUgKkxpbmU7IC8qITwgVGhlIGxpbmUgaXRz
ZWxmLiAqLwogICBQb2ludFR5cGUgKk1vdmVkUG9pbnQ7IC8qITwgQW5kIGZpbmFsbHkgdGhlIHBv
aW50LiAqLworICBDb29yZCBEWDsKKyAgQ29vcmQgRFk7CiB9IFJ1YmJlcmJhbmRUeXBlOwogCiAv
KiEKZGlmZiAtLWdpdCBhL3NyYy9tb3ZlLmMgYi9zcmMvbW92ZS5jCmluZGV4IGRmYWY2MTMuLjdj
OWQ0MWMgMTAwNjQ0Ci0tLSBhL3NyYy9tb3ZlLmMKKysrIGIvc3JjL21vdmUuYwpAQCAtODA5LDcg
KzgwOSw3IEBAIE1vdmVPYmplY3RBbmRSdWJiZXJiYW5kIChpbnQgVHlwZSwgdm9pZCAqUHRyMSwg
dm9pZCAqUHRyMiwgdm9pZCAqUHRyMywKICAgLyogc2V0dXAgb2Zmc2V0ICovCiAgIERlbHRhWCA9
IERYOwogICBEZWx0YVkgPSBEWTsKLQorICAKICAgLyogbW92ZSBhbGwgdGhlIGxpbmVzLi4uIGFu
ZCByZXNldCB0aGUgY291bnRlciAqLwogICBwdHIgPSBDcm9zc2hhaXIuQXR0YWNoZWRPYmplY3Qu
UnViYmVyYmFuZDsKICAgd2hpbGUgKENyb3NzaGFpci5BdHRhY2hlZE9iamVjdC5SdWJiZXJiYW5k
TikKQEAgLTgxOSwxMCArODE5LDI2IEBAIE1vdmVPYmplY3RBbmRSdWJiZXJiYW5kIChpbnQgVHlw
ZSwgdm9pZCAqUHRyMSwgdm9pZCAqUHRyMiwgdm9pZCAqUHRyMywKICAgICAgIC8qIG9ubHkgdXBk
YXRlIHVuZG8gbGlzdCBpZiBhbiBhY3R1YWwgbW92ZW1lbnQgaGFwcGVuZWQgKi8KICAgICAgIGlm
IChEWCAhPSAwIHx8IERZICE9IDApCiAgICAgICAgIHsKLSAgICAgICAgICBBZGRPYmplY3RUb01v
dmVVbmRvTGlzdCAoTElORVBPSU5UX1RZUEUsCisgICAgICAgICAgaWYgKHB0ci0+RFggPT0gLTEp
CisgICAgICAgICAgeworICAgICAgICAgICAgcHJpbnRmKCJNb3ZlIG5vcm1hbFxuIik7CisgICAg
ICAgICAgICBBZGRPYmplY3RUb01vdmVVbmRvTGlzdCAoTElORVBPSU5UX1RZUEUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0ci0+TGF5ZXIsIHB0ci0+TGluZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHRyLT5Nb3ZlZFBvaW50LCBEWCwgRFkpOwor
ICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlCisgICAgICAgICAgeworICAgICAgICAgICAgcHJp
bnRmKCJNb3ZlIGN1c3RvbVxuIik7CisgICAgICAgICAgICBBZGRPYmplY3RUb01vdmVVbmRvTGlz
dCAoTElORVBPSU5UX1RZUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0
ci0+TGF5ZXIsIHB0ci0+TGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHRyLT5Nb3ZlZFBvaW50LCBwdHItPkRYLCBwdHItPkRZKTsKKyAgICAgICAgICAgIERlbHRhWCA9
IHB0ci0+RFg7CisgICAgICAgICAgICBEZWx0YVkgPSBwdHItPkRZOworICAgICAgICAgIH0KICAg
ICAgICAgICBNb3ZlTGluZVBvaW50IChwdHItPkxheWVyLCBwdHItPkxpbmUsIHB0ci0+TW92ZWRQ
b2ludCk7CisgICAgICAgICAgLyogUmVzdG9yZSBEZWx0YSAqLworICAgICAgICAgIERlbHRhWCA9
IERYOworICAgICAgICAgIERlbHRhWSA9IERZOwogICAgICAgICB9CiAgICAgICBDcm9zc2hhaXIu
QXR0YWNoZWRPYmplY3QuUnViYmVyYmFuZE4tLTsKICAgICAgIHB0cisrOwo=
--94eb2c1848748050a1054a161cc6--

- Raw text -


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