Re: [ANNOUNCE] kernelconf-0.1.3

Christian Koenig ("ChristianK."@t-online.de)
Mon, 18 Feb 2002 23:42:14 +0100


--------------Boundary-00=_E23R9KVVWVCAFQFMKHLO
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: 8bit

Hi,

Sorry for the delay, but got lots do to last week.

Ok here it comes.

Work done:
-Synced with your code.
-Completly rewritten the the c-code <-> tcl-code interface (It now use pipes).
-Dependencys are now partialy working. (Try symbol EXPERIMENTAL or MODULES).

To do:
-Loading / Saving of config files doesn't work for the moment.
-The resolv_* funktions are simply q&d.
-The whole thing should look more like the "original" xconfig.

MfG Christian Koenig (and sorry for my poor English).

--------------Boundary-00=_E23R9KVVWVCAFQFMKHLO
Content-Type: text/x-diff;
charset="iso-8859-1";
name="kernelconf-xconfig.diff"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="kernelconf-xconfig.diff"

ZGlmZiAtdU5yIGtlcm5lbGNvbmYtMC4xLjMvY29uZi9oZWFkZXIudGsga2VybmVsY29uZi0wLjEu
My5uZXcvY29uZi9oZWFkZXIudGsKLS0tIGtlcm5lbGNvbmYtMC4xLjMvY29uZi9oZWFkZXIudGsJ
VGh1IEphbiAgMSAwMTowMDowMCAxOTcwCisrKyBrZXJuZWxjb25mLTAuMS4zLm5ldy9jb25mL2hl
YWRlci50awlNb24gRmViIDE4IDIyOjA5OjMwIDIwMDIKQEAgLTAsMCArMSwyNDQgQEAKK3Byb2Mg
c3ltX3NldHZhbHVlIHsgc3ltbmFtZSB2YWx1ZSB9IHsKKwlwdXRzIHN0ZG91dCAiU1lNX1NFVCAk
c3ltbmFtZSAkdmFsdWUiCit9CisKK3Byb2MgbWVudV91cGRhdGVfZGVwZW5kcyB7IHcgc3ltdmFs
eSBzeW12YWxtIH0geworCisJY2F0Y2ggeworCQlpZiB7ICRzeW12YWx5ID09ICJuIiB9IHsKKwkJ
CSR3LnN5IGNvbmZpZ3VyZSAtc3RhdGUgZGlzYWJsZWQKKwkJfSBlbHNlIHsKKwkJCSR3LnN5IGNv
bmZpZ3VyZSAtc3RhdGUgbm9ybWFsCisJCX0KKwkJcHV0cyBzdGRlcnIgIiR3ICRzeW12YWwiCisJ
fQorCWNhdGNoIHsKKwkJaWYgeyAkc3ltdmFsbSA9PSAibiIgfSB7CisJCQkkdy5zbSBjb25maWd1
cmUgLXN0YXRlIGRpc2FibGVkCisJCX0gZWxzZSB7CisJCQkkdy5zbSBjb25maWd1cmUgLXN0YXRl
IG5vcm1hbAorCQl9CisJCXB1dHMgc3RkZXJyICIkdyAkc3ltdmFsIgorCX0KKwljYXRjaCB7CisJ
CWlmIHsgJHN5bXZhbG0gPT0gIm4iICYmICRzeW12YWx5ID09ICJuIiB9IHsKKwkJCSR3LnNuIGNv
bmZpZ3VyZSAtc3RhdGUgZGlzYWJsZWQKKwkJfSBlbHNlIHsKKwkJCSR3LnNuIGNvbmZpZ3VyZSAt
c3RhdGUgbm9ybWFsCisJCX0KKwkJcHV0cyBzdGRlcnIgIiR3ICRzeW12YWwiCisJfQorCWNhdGNo
IHsKKwkJaWYgeyAkc3ltdmFsbSA9PSAibiIgJiYgJHN5bXZhbHkgPT0gIm4iIH0geworCQkJJHcu
YyBjb25maWd1cmUgLXN0YXRlIGRpc2FibGVkCisJCX0gZWxzZSB7CisJCQkkdy5jIGNvbmZpZ3Vy
ZSAtc3RhdGUgbm9ybWFsCisJCX0KKwkJcHV0cyBzdGRlcnIgIiR3ICRzeW12YWwiCisJfQorfQor
Citwcm9jIGNvbmZpZ19vcHRpb24geyB3IGxpbmUgdGV4dCBzeW1uYW1lIHN5bXR5cGUgaGF2ZXN5
bSBoZWxwIGhhdmVoZWxwIGNoaWxkIGhhdmVjaGlsZCB9IHsKKworCWZyYW1lICR3LmYkbGluZQor
CisJaWYgeyAkaGF2ZXN5bSAmIDQgfSB7CisJCXJhZGlvYnV0dG9uICR3LmYkbGluZS5zeSAtdGV4
dCAieSIgLXZhcmlhYmxlICRzeW1uYW1lIC12YWx1ZSB5IFwKKwkJCS1yZWxpZWYgZ3Jvb3ZlIC13
aWR0aCAyIC1jb21tYW5kICJzeW1fc2V0dmFsdWUgJHN5bW5hbWUgeSIKKwkJaWYgeyAkc3ltdHlw
ZSAhPSAiU1lNX0JPT0wiICYmICRzeW10eXBlICE9ICJTWU1fVFJJIiAmJiAkc3ltdHlwZSAhPSAi
U1lNX09QVElPTiIgfSB7CisJCQkkdy5mJGxpbmUuc3kgY29uZmlndXJlIC10ZXh0ICItIiAtc3Rh
dGUgZGlzYWJsZWQKKwkJfSBlbHNlaWYgeyAkc3ltdHlwZSA9PSAiU1lNX09QVElPTiIgfSB7CisJ
CQkkdy5mJGxpbmUuc3kgY29uZmlndXJlIC10ZXh0ICIiCisJCX0KKwkJcGFjayAkdy5mJGxpbmUu
c3kgLXNpZGUgbGVmdCAtZmlsbCB5CisJfQorCisJaWYgeyAkaGF2ZXN5bSAmIDIgfSB7CisJCXJh
ZGlvYnV0dG9uICR3LmYkbGluZS5zbSAtdGV4dCAibSIgLXZhcmlhYmxlICRzeW1uYW1lIC12YWx1
ZSBtIFwKKwkJCSAtcmVsaWVmIGdyb292ZSAtd2lkdGggMiAtY29tbWFuZCAic3ltX3NldHZhbHVl
ICRzeW1uYW1lIG0iCisKKwkJaWYgeyAkc3ltdHlwZSAhPSAiU1lNX01PRFVMRSIgJiYgJHN5bXR5
cGUgIT0gIlNZTV9UUkkiIH0geworCQkJJHcuZiRsaW5lLnNtIGNvbmZpZ3VyZSAtdGV4dCAiLSIg
LXN0YXRlIGRpc2FibGVkCisJCX0KKwkJcGFjayAkdy5mJGxpbmUuc20gLXNpZGUgbGVmdCAtZmls
bCB5CisJfQorCisJaWYgeyAkaGF2ZXN5bSAmIDEgfSB7CisJCXJhZGlvYnV0dG9uICR3LmYkbGlu
ZS5zbiAtdGV4dCAibiIgIC12YXJpYWJsZSAkc3ltbmFtZSAtdmFsdWUgbiBcCisJCQktcmVsaWVm
IGdyb292ZSAtd2lkdGggMiAtY29tbWFuZCAic3ltX3NldHZhbHVlICRzeW1uYW1lIG4iCisJCWlm
IHsgJHN5bXR5cGUgIT0gIlNZTV9CT09MIiAmJiAkc3ltdHlwZSAhPSAiU1lNX1RSSSIgfSB7CisJ
CQkkdy5mJGxpbmUuc24gY29uZmlndXJlIC10ZXh0ICItIiAtc3RhdGUgZGlzYWJsZWQKKwkJfQor
CQlwYWNrICR3LmYkbGluZS5zbiAtc2lkZSBsZWZ0IC1maWxsIHkKKwl9CisKKwltZXNzYWdlICR3
LmYkbGluZS5tIC10ZXh0ICIkdGV4dCIgLWFuY2hvciB3IC13aWR0aCAxMDAwMAorCXBhY2sgJHcu
ZiRsaW5lLm0gLXNpZGUgbGVmdCAtZmlsbCBib3RoIC1leHBhbmQgb24KKworCWlmIHsgJGhhdmVo
ZWxwIH0geworCQlpZiB7ICRoZWxwICE9ICIiIH0geworCQkJYnV0dG9uICR3LmYkbGluZS5oIC10
ZXh0ICI/IiAtY29tbWFuZCAkaGVscAorCQl9IGVsc2UgeworCQkJYnV0dG9uICR3LmYkbGluZS5o
IC10ZXh0ICI/IiAtc3RhdGUgZGlzYWJsZWQgLXJlbGllZiBmbGF0CisJCX0KKwkJcGFjayAkdy5m
JGxpbmUuaCAtc2lkZSBsZWZ0IC1maWxsIHkKKwl9CisKKwlpZiB7ICRoYXZlY2hpbGQgfSB7CisJ
CWlmIHsgJGNoaWxkICE9ICIiIH0geworCQkJYnV0dG9uICR3LmYkbGluZS5jCisJCQljaGlsZF9i
dXR0b25fb24gJHcgJGxpbmUgIiR0ZXh0IiAiJGNoaWxkIgorCQl9IGVsc2UgeworCQkJYnV0dG9u
ICR3LmYkbGluZS5jIC10ZXh0ICItPiIgLXN0YXRlIGRpc2FibGVkIC1yZWxpZWYgZmxhdAorCQl9
CisJCXBhY2sgJHcuZiRsaW5lLmMgLXNpZGUgbGVmdCAtZmlsbCB5CisJfQorCisJcGFjayAkdy5m
JGxpbmUgLWFuY2hvciB3IC1maWxsIGJvdGggLWV4cGFuZCB5IC1pbiAkdy5jYW52YXMuc2JmCisK
KwlwdXRzIHN0ZG91dCAiTUVOVV9ERVBFTkRTICRzeW1uYW1lIgorfQorCitwcm9jIGNoaWxkX2J1
dHRvbl9vbiB7IHcgbGluZSB0ZXh0IGNoaWxkIH0geworCSR3LmYkbGluZS5jIGNvbmZpZ3VyZSAt
dGV4dCAiLT4iCisJJHcuZiRsaW5lLmMgY29uZmlndXJlIC1jb21tYW5kICJjcmVhdGVfd2luZG93
ICR3ICRsaW5lIFwiJHRleHRcIiBcIiRjaGlsZFwiOyRjaGlsZDtjcmVhdGVfc2Nyb2xsYmFyICR3
LmMkbGluZSIKKwkkdy5mJGxpbmUuYyBjb25maWd1cmUgLXJlbGllZiByYWlzZWQKK30KKworcHJv
YyBjaGlsZF9idXR0b25fb2ZmIHsgdyBsaW5lIH0geworCSR3LmYkbGluZS5jIGNvbmZpZ3VyZSAt
dGV4dCAiPC0iCisJJHcuZiRsaW5lLmMgY29uZmlndXJlIC1jb21tYW5kICJkZXN0cm95ICR3LmMk
bGluZSIKKwkkdy5mJGxpbmUuYyBjb25maWd1cmUgLXJlbGllZiBmbGF0Cit9CisKK3Byb2MgaW5p
dF93aW5kb3cgeyB3IHRleHQgfSB7CisKKwlzY3JvbGxiYXIgJHcudnNjcm9sbCAtY29tbWFuZCAi
JHcuY2FudmFzIHl2aWV3IgorCXBhY2sgJHcudnNjcm9sbCAtc2lkZSByaWdodCAtZmlsbCB5CisK
KwljYW52YXMgJHcuY2FudmFzIC1yZWxpZWYgZmxhdCAtYm9yZGVyd2lkdGggMCAteXNjcm9sbGNv
bW1hbmQgIiR3LnZzY3JvbGwgc2V0IgorCWZyYW1lICR3LmNhbnZhcy5zYmYKKwlwYWNrICR3LmNh
bnZhcyAtc2lkZSByaWdodCAtZmlsbCB5IC1leHBhbmQgb24KK30KKworcHJvYyBjYWx3aSB7IGNt
ZCB3IH0geworCWlmIHsgWyB3aW5mbyBwYXJlbnQgJHcgXSAhPSAiIiB9IHsKKwkJcmV0dXJuIFsg
ZXhwciBbIGNhbHdpICRjbWQgWyB3aW5mbyBwYXJlbnQgJHcgXSBdICsgWyB3aW5mbyAkY21kICR3
IF0gXQorCX0gZWxzZSB7CisJCXJldHVybiBbIHdpbmZvICRjbWQgJHcgXQorCX0KK30KKworcHJv
YyBtYXh3aSB7IGNtZCB3IH0geworCWlmIHsgWyB3aW5mbyBwYXJlbnQgJHcgXSAhPSAiIiB9IHsK
KwkJcmV0dXJuIFsgbWF4IFsgbWF4d2kgJGNtZCBbIHdpbmZvIHBhcmVudCAkdyBdIF0gIFsgd2lu
Zm8gJGNtZCAkdyBdIF0KKwl9IGVsc2UgeworCQlyZXR1cm4gWyB3aW5mbyAkY21kICR3IF0KKwl9
Cit9CisKK3Byb2MgY3JlYXRlX3dpbmRvdyB7IHcgbGluZSB0ZXh0IGNoaWxkIH0geworCisJdG9w
bGV2ZWwgJHcuYyRsaW5lIC1jbGFzcyBEaWFsb2cKKwl3bSB0aXRsZSAkdy5jJGxpbmUgJHRleHQK
KworCWluaXRfd2luZG93ICR3LmMkbGluZSAkdGV4dAorCisJZXZhbCAiYmluZCAkdy5jJGxpbmUg
PERlc3Ryb3k+IHsgY2hpbGRfYnV0dG9uX29uICR3ICRsaW5lIFwiJHRleHRcIiBcIiRjaGlsZFwi
IH0iCisJY2hpbGRfYnV0dG9uX29mZiAkdyAkbGluZQorCisjCWJ1dHRvbiAkdy5jJGxpbmUuY2xv
c2UgLXRleHQgIjwtIiAtY29tbWFuZCAiZGVzdHJveSAkdy5jJGxpbmUiCisjCXBhY2sgJHcuYyRs
aW5lLmNsb3NlIC1zaWRlIGxlZnQgLWFuY2hvciBuCisKKyMJc2V0IHBvc3ggWyBtYXh3aSByZXF3
ICR3IF0KKyMJc2V0IHBvc3kgWyBleHByIFsgY2Fsd2kgeSAkdy5mJGxpbmUuYyBdIC0gWyBjYWx3
aSB5ICR3LmMkbGluZS5jbG9zZSBdIF0KKyMJc2V0IHBvc3kgWyBjYWx3aSB5ICR3LmYkbGluZS5j
IF0KKworIwl3bSBnZW9tZXRyeSAkdy5jJGxpbmUgKyRwb3N4KyRwb3N5Cit9CisKK3Byb2MgY3Jl
YXRlX3Njcm9sbGJhciB7IHcgfSB7CisKKwlzZXQgc2l6b2sgMAorCSNbZXhwciBbd2luZm8gcmVx
aGVpZ2h0ICR3LmYyLm9rXSArIDEyXQorCSNwYWNrICR3LmNhbnZhcy5zYmYKKwl1cGRhdGUgaWRs
ZXRhc2tzCisJc2V0IG1heHkgW2V4cHIgW3dpbmZvIHNjcmVlbmhlaWdodCAuXSAqIDMgLyA0XQor
CXNldCBjYW52dG90YWwgW3dpbmZvIHJlcWhlaWdodCAkdy5jYW52YXMuc2JmXQorCWlmIFtleHBy
ICRzaXpvayArICRjYW52dG90YWwgPCAkbWF4eV0geworCQlzZXQgc2l6eSAkY2FudnRvdGFsCisJ
fSBlbHNlIHsKKwkJc2V0IHNpenkgW2V4cHIgJG1heHkgLSAkc2l6b2tdCisJfQorCisJJHcuY2Fu
dmFzIGNvbmZpZ3VyZSAtd2lkdGggW3dpbmZvIHJlcXcgJHcuY2FudmFzLnNiZl0gLWhlaWdodCAk
c2l6eSBcCisJCS1zY3JvbGxyZWdpb24gIjAgMCBbd2luZm8gcmVxdyAkdy5jYW52YXMuc2JmXSBb
d2luZm8gcmVxaCAkdy5jYW52YXMuc2JmXSIKKwkkdy5jYW52YXMgY29uZmlndXJlIC15c2Nyb2xs
aW5jcmVtZW50IDEwCisJJHcuY2FudmFzIGNyZWF0ZSB3aW5kb3cgMCAwIC1hbmNob3IgbncgLXdp
bmRvdyAkdy5jYW52YXMuc2JmCisJcGFjayAkdy5jYW52YXMgLXNpZGUgcmlnaHQgLWZpbGwgeSAt
ZXhwYW5kIG9uCisJIyB1cGRhdGUgaWRsZXRhc2tzCisKK30KKworcHJvYyBkb2hlbHAgeyB3IHBh
cmVudCBmaWxlbmFtZSBzdGFydCBsZW5ndGggfSB7CisJY2F0Y2gge2Rlc3Ryb3kgJHcgfQorCXRv
cGxldmVsICR3IC1jbGFzcyBEaWFsb2cKKwlzZXQgZmlsZWZvdW5kIDAKKwlpZiB7IFtmaWxlIHJl
YWRhYmxlICRmaWxlbmFtZV0gPT0gMX0gdGhlbiB7CisJCXNldCBmaWxlZm91bmQgMQorCQlzZXQg
aWQgW29wZW4gJGZpbGVuYW1lXQorCQlzZWVrICRpZCAkc3RhcnQKKwkJc2V0IG1lc3NhZ2UgW3Jl
YWQgJGlkICRsZW5ndGhdCisJCWNsb3NlICRpZAorCX0KKwlmcmFtZSAkdy5mMQorCXBhY2sgJHcu
ZjEgLWZpbGwgYm90aCAtZXhwYW5kIG9uCisJc2V0IG9sZEZvY3VzIFtmb2N1c10KKwlmcmFtZSAk
dy5mMgorCWJ1dHRvbiAkdy5mMi5vayAtdGV4dCAiT0siIC13aWR0aCAxMCAtY29tbWFuZCAiZGVz
dHJveSAkdzsgY2F0Y2gge2ZvY3VzICRvbGRGb2N1c30iCisJcGFjayAkdy5mMi5vayAtc2lkZSBi
b3R0b20gLXBhZHkgNiAtYW5jaG9yIG4KKwlwYWNrICR3LmYyIC1zaWRlIGJvdHRvbSAtcGFkeCAx
MCAtYW5jaG9yIHMKKwlzY3JvbGxiYXIgJHcuZjEudnNjcm9sbCAtY29tbWFuZCAiJHcuZjEuY2Fu
dmFzIHl2aWV3IgorCXBhY2sgJHcuZjEudnNjcm9sbCAtc2lkZSByaWdodCAtZmlsbCB5CisKKwlj
YW52YXMgJHcuZjEuY2FudmFzIC1yZWxpZWYgZmxhdCAtYm9yZGVyd2lkdGggMCAteXNjcm9sbGNv
bW1hbmQgIiR3LmYxLnZzY3JvbGwgc2V0IgorCWZyYW1lICR3LmYxLmYKKwlwYWNrICR3LmYxLmNh
bnZhcyAtc2lkZSByaWdodCAtZmlsbCB5IC1leHBhbmQgb24KKwlpZiB7ICRmaWxlZm91bmQgPT0g
MCB9IHRoZW4geworCQltZXNzYWdlICR3LmYxLmYubSAtd2lkdGggNzUwIC1hc3BlY3QgMzAwIC1y
ZWxpZWYgZmxhdCAtdGV4dCBcCisJCQkiTm8gaGVscCBhdmFpbGFibGUgLSB1bmFibGUgdG8gb3Bl
biBmaWxlICRmaWxlbmFtZS4gIFRoaXMgZmlsZSBzaG91bGQgaGF2ZSBjb21lIHdpdGggeW91ciBr
ZXJuZWwuIgorCQlsYWJlbCAkdy5mMS5ibSAtYml0bWFwIGVycm9yCisJCXdtIHRpdGxlICR3ICJS
VEZNIgorCX0gZWxzZSB7CisJCXRleHQgJHcuZjEuZi5tIC13aWR0aCA3MyAtcmVsaWVmIGZsYXQg
LXdyYXAgd29yZAorCQkkdy5mMS5mLm0gaW5zZXJ0IDAuMCAkbWVzc2FnZQorCQkkdy5mMS5mLm0g
Y29uZiAtc3RhdGUgZGlzYWJsZWQgLWhlaWdodCBbJHcuZjEuZi5tIGluZGV4IGVuZF0KKwkJbGFi
ZWwgJHcuZjEuYm0gLWJpdG1hcCBpbmZvCisJCXdtIHRpdGxlICR3ICJDb25maWd1cmF0aW9uIGhl
bHAiCisJfQorCXBhY2sgJHcuZjEuZi5tIC1zaWRlIGxlZnQKKwlwYWNrICR3LmYxLmJtICR3LmYx
LmYgLXNpZGUgbGVmdCAtcGFkeCAxMAorCWZvY3VzICR3CisJc2V0IHdpbnggW2V4cHIgW3dpbmZv
IHggJHBhcmVudF0rMjBdCisJc2V0IHdpbnkgW2V4cHIgW3dpbmZvIHkgJHBhcmVudF0rMjBdCisJ
d20gZ2VvbWV0cnkgJHcgKyR3aW54KyR3aW55CisJc2V0IHNpem9rIFtleHByIFt3aW5mbyByZXFo
ZWlnaHQgJHcuZjIub2tdICsgMTJdCisJc2V0IG1heHkgW2V4cHIgW3dpbmZvIHNjcmVlbmhlaWdo
dCAuXSAqIDMgLyA0XQorCXNldCBjYW52dG90YWwgW3dpbmZvIHJlcWhlaWdodCAkdy5mMS5mLm1d
CisJaWYgW2V4cHIgJHNpem9rICsgJGNhbnZ0b3RhbCA8ICRtYXh5XSB7CisJCXNldCBzaXp5ICRj
YW52dG90YWwKKwl9IGVsc2UgeworCQlzZXQgc2l6eSBbZXhwciAkbWF4eSAtICRzaXpva10KKwl9
CisJJHcuZjEuY2FudmFzIGNvbmZpZ3VyZSAtaGVpZ2h0ICRzaXp5IC13aWR0aCBbd2luZm8gcmVx
d2lkdGggJHcuZjEuZi5tXSBcCisJCS1zY3JvbGxyZWdpb24gIjAgMCBbd2luZm8gcmVxd2lkdGgg
JHcuZjEuZi5tXSBbd2luZm8gcmVxaGVpZ2h0ICR3LmYxLmYubV0iCisJJHcuZjEuY2FudmFzIGNy
ZWF0ZSB3aW5kb3cgMCAwIC1hbmNob3IgbncgLXdpbmRvdyAkdy5mMS5mCisJdXBkYXRlIGlkbGV0
YXNrcworCXNldCBtYXh5IFt3aW5mbyBzY3JlZW5oZWlnaHQgLl0KKwlpZiBbZXhwciAkc2l6b2sg
KyAkY2FudnRvdGFsIDwgJG1heHldIHsKKwkJc2V0IHNpenkgW2V4cHIgJHNpem9rICsgJGNhbnZ0
b3RhbF0KKwl9IGVsc2UgeworCQlzZXQgc2l6eSAkbWF4eQorCX0KKwl3bSBtYXhzaXplICR3IFt3
aW5mbyB3aWR0aCAkd10gJHNpenkKK30KZGlmZiAtdU5yIGtlcm5lbGNvbmYtMC4xLjMvY29uZi94
Y29uZmlnLmMga2VybmVsY29uZi0wLjEuMy5uZXcvY29uZi94Y29uZmlnLmMKLS0tIGtlcm5lbGNv
bmYtMC4xLjMvY29uZi94Y29uZmlnLmMJU2F0IEZlYiAgOSAwODo1MzozNyAyMDAyCisrKyBrZXJu
ZWxjb25mLTAuMS4zLm5ldy9jb25mL3hjb25maWcuYwlNb24gRmViIDE4IDIzOjE0OjA4IDIwMDIK
QEAgLTYsOSArNiw0NTQgQEAKICAqIENvcHlyaWdodCAoQykgMjAwMiBieSBBbnVyYWRoYSBSYXRu
YXdlZXJhCiAgKi8KCisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2lu
Y2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHVuaXN0ZC5o
PgorCisjaW5jbHVkZSAiZXhwcmVzc2lvbnMuaCIKKworI2luY2x1ZGUgImRlcHMuaCIKKyNpbmNs
dWRlICJoZWxwLmgiCisjaW5jbHVkZSAiaWQuaCIKKyNpbmNsdWRlICJyZWFkY29uZmlnLmgiCisj
aW5jbHVkZSAicmVhZHN5bWJvbHMuaCIKKyNpbmNsdWRlICJ0b2tlbnMuaCIKKyNpbmNsdWRlICJ3
cml0ZWNvbmZpZy5oIgorI2luY2x1ZGUgInN5bWJvbHMuaCIKKworI2luY2x1ZGUgInN5cy93YWl0
LmgiCisKKyNkZWZpbmUgTUFYX01FTlVfTkFNRQkJMjU2CisjZGVmaW5lIE1BWF9WQUxVRV9TSVpF
CTI1NgorCitleHRlcm4gSWRQdHIgcm9vdF9tZW51OworCitGSUxFICp0Y2xmX2luLCAqdGNsZl9v
dXQ7CisKK2ludCB0eXBlMnhzaXplKFR5cGUgdHlwZSkKK3sKKwlzd2l0Y2ggKHR5cGUpIHsKKwlj
YXNlIFRZUEVfT1BUSU9OOgorCQlyZXR1cm4gNDsgYnJlYWs7CisJY2FzZSBUWVBFX0JPT0w6CisJ
CXJldHVybiA1OyBicmVhazsKKwljYXNlIFRZUEVfVFJJOgorCWNhc2UgVFlQRV9JTlQ6CisJY2Fz
ZSBUWVBFX0hFWDoKKwljYXNlIFRZUEVfQ0hBUjoKKwljYXNlIFRZUEVfU1RSOgorCQlyZXR1cm4g
NzsgYnJlYWs7CisJZGVmYXVsdDoKKwkJcmV0dXJuIDA7CisJfQorfQorCit2b2lkIGZwcmludGZf
dHlwZTJuYW1lKEZJTEUgKmYsVHlwZSB0eXBlKQoreworCXN3aXRjaCAodHlwZSkgeworCWNhc2Ug
VFlQRV9OVUxMOgorCQlmcHJpbnRmKGYsIlNZTV9OVUxMIik7IGJyZWFrOworCQljYXNlIFRZUEVf
Qk9PTDoKKwkJCWZwcmludGYoZiwiU1lNX0JPT0wiKTsgYnJlYWs7CisJCWNhc2UgVFlQRV9UUkk6
CisJCQlmcHJpbnRmKGYsIlNZTV9UUkkiKTsgYnJlYWs7CisJCWNhc2UgVFlQRV9JTlQ6CisJCQlm
cHJpbnRmKGYsIlNZTV9JTlQiKTsgYnJlYWs7CisJCWNhc2UgVFlQRV9IRVg6CisJCQlmcHJpbnRm
KGYsIlNZTV9IRVgiKTsgYnJlYWs7CisJCWNhc2UgVFlQRV9DSEFSOgorCQkJZnByaW50ZihmLCJT
WU1fQ0hBUiIpOyBicmVhazsKKwkJY2FzZSBUWVBFX1NUUjoKKwkJCWZwcmludGYoZiwiU1lNX1NU
UiIpOyBicmVhazsKKwkJY2FzZSBUWVBFX09QVElPTjoKKwkJCWZwcmludGYoZiwiU1lNX09QVElP
TiIpOyBicmVhazsKKwkJY2FzZSBUWVBFX1VOS05PV046CisJCQlmcHJpbnRmKGYsIlNZTV9VTktO
T1dOIik7IGJyZWFrOworCQljYXNlIFRZUEVfREVQRU5EUzoKKwkJCWZwcmludGYoZiwiU1lNX0RF
UEVORFMiKTsgYnJlYWs7CisJCWNhc2UgVFlQRV9ERVJJVkVEOgorCQkJZnByaW50ZihmLCJTWU1f
REVSSVZFRCIpOyBicmVhazsKKwkJY2FzZSBUWVBFX09SOgorCQkJZnByaW50ZihmLCJTWU1fT1Ii
KTsgYnJlYWs7CisJCWNhc2UgVFlQRV9BTkQ6CisJCQlmcHJpbnRmKGYsIlNZTV9BTkQiKTsgYnJl
YWs7CisJCWNhc2UgVFlQRV9FUVVBTDoKKwkJCWZwcmludGYoZiwiU1lNX0VRVUFMIik7IGJyZWFr
OworCQljYXNlIFRZUEVfTk9UX0VRVUFMOgorCQkJZnByaW50ZihmLCJTWU1fTk9UX0VRVUFMIik7
IGJyZWFrOworCQljYXNlIFRZUEVfTFQ6CisJCQlmcHJpbnRmKGYsIlNZTV9MVCIpOyBicmVhazsK
KwkJY2FzZSBUWVBFX0dUOgorCQkJZnByaW50ZihmLCJTWU1fR1QiKTsgYnJlYWs7CisJCWNhc2Ug
VFlQRV9MVEU6CisJCQlmcHJpbnRmKGYsIlNZTV9MVEUiKTsgYnJlYWs7CisJCWNhc2UgVFlQRV9H
VEU6CisJCQlmcHJpbnRmKGYsIlNZTV9HVEUiKTsgYnJlYWs7CisJCWNhc2UgVFlQRV9OT1Q6CisJ
CQlmcHJpbnRmKGYsIlNZTV9OT1QiKTsgYnJlYWs7CisJCWNhc2UgVFlQRV9MRUZUX1BBUkE6CisJ
CQlmcHJpbnRmKGYsIlNZTV9MRUZUX1BBUkEiKTsgYnJlYWs7CisJCWNhc2UgVFlQRV9SSUdIVF9Q
QVJBOgorCQkJZnByaW50ZihmLCJTWU1fUklHSFRfUEFSQSIpOyBicmVhazsKKwkJY2FzZSBUWVBF
X1NZTUJPTDoKKwkJCWZwcmludGYoZiwiU1lNX1NZTUJPTEUiKTsgYnJlYWs7CisJCWNhc2UgVFlQ
RV9WQUxVRToKKwkJCWZwcmludGYoZiwiU1lNX1ZBTFVFIik7IGJyZWFrOworCX0KK30KKwordm9p
ZCBmcHJpbnRmX3ByZWMydGsoUHJlY2VkZW5jZSBwcmVjKQoreworCXN3aXRjaCAocHJlYykgewor
CQljYXNlIFBSRV9OVUxMOgorCQkJZnByaW50Zih0Y2xmX291dCwiUFJFX05VTEwiKTsgYnJlYWs7
CisJCWNhc2UgUFJFX0FTU0lHTjoKKwkJCWZwcmludGYodGNsZl9vdXQsIlBSRV9BU1NJR04iKTsg
YnJlYWs7CisJCWNhc2UgUFJFX09SOgorCQkJZnByaW50Zih0Y2xmX291dCwiUFJFX09SIik7IGJy
ZWFrOworCQljYXNlIFBSRV9BTkQ6CisJCQlmcHJpbnRmKHRjbGZfb3V0LCJQUkVfQU5EIik7IGJy
ZWFrOworCQljYXNlIFBSRV9FUVVBTDoKKwkJCWZwcmludGYodGNsZl9vdXQsIlBSRV9FUVVBTCIp
OyBicmVhazsKKwkJY2FzZSBQUkVfUkVMOgorCQkJZnByaW50Zih0Y2xmX291dCwiUFJFX1JFTCIp
OyBicmVhazsKKwkJY2FzZSBQUkVfTk9UOgorCQkJZnByaW50Zih0Y2xmX291dCwiUFJFX05PVCIp
OyBicmVhazsKKwl9Cit9CisKK3ZvaWQgZnByaW50Zl9tZW51X25hbWUoRklMRSAqZiwgSWRQdHIg
bWVudSwgaW50IHJvb3QpCit7CisJaW50IHRjbGlkeCA9IDA7CisJaW50IGNoaWxkaWR4ID0gMDsK
KwlJZFB0ciBjdXJfbWVudTsKKworCWlmKG1lbnUtPm1lbnUtPnBhcmVudCkgeworCQlmcHJpbnRm
X21lbnVfbmFtZShmLG1lbnUtPm1lbnUtPnBhcmVudCwgMCk7CisJCWN1cl9tZW51ID0gbWVudS0+
bWVudS0+cGFyZW50LT5tZW51LT5maXJzdF9jaGlsZDsKKwkJZm9yKDtjdXJfbWVudSAmJiAoc3Ry
Y21wKGN1cl9tZW51LT5uYW1lLG1lbnUtPm5hbWUpICE9IDApO2N1cl9tZW51ID0gY3VyX21lbnUt
Pm1lbnUtPm5leHQpCisJCQlpZihjdXJfbWVudS0+bWVudSkgeworCQkJdGNsaWR4Kys7CisJCQlp
ZihjdXJfbWVudS0+bWVudS0+Zmlyc3RfY2hpbGQpCisJCQkJY2hpbGRpZHgrKzsKKwkJCX0KKwkJ
aWYocm9vdCkKKwkJCWZwcmludGYoZiwiLmYlZCIsdGNsaWR4KTsKKwkJZWxzZQorCQkJZnByaW50
ZihmLCIuYyVkIixjaGlsZGlkeCk7CisJfSBlbHNlCisJCWZwcmludGYoZiwiLmYwIik7Cit9CisK
K3ZvaWQgZG9feG1lbnUoSWRQdHIgbWVudSwgY2hhciAqbmFtZSkKK3sKKwljaGFyIHN1Yl9uYW1l
W01BWF9NRU5VX05BTUVdOworCWludCBzdWJfaW5kZXgsdGNsaWR4OworCWludCBoYXZlX3N5bQkJ
PSAwOworCWludCBoYXZlX2Rlc2MJCT0gMDsKKwlpbnQgaGF2ZV9jaGlsZAk9IDA7CisJSWRQdHIg
Y3VyX21lbnU7CisKKwlzdWJfaW5kZXggPSAwOworCWZvcihjdXJfbWVudSA9IG1lbnU7Y3VyX21l
bnU7Y3VyX21lbnUgPSBjdXJfbWVudS0+bWVudS0+bmV4dCkgeworCQlpZihjdXJfbWVudS0+c3lt
Ym9sKQorCQkJaGF2ZV9zeW0gfD0gdHlwZTJ4c2l6ZShjdXJfbWVudS0+c3ltYm9sLT50eXBlKTsK
KworCQlpZihjdXJfbWVudS0+bWVudS0+Zmlyc3RfY2hpbGQpIHsKKwkJCXNwcmludGYoc3ViX25h
bWUsIiVzXyVkIixuYW1lLHN1Yl9pbmRleCsrKTsKKwkJCWRvX3htZW51KGN1cl9tZW51LT5tZW51
LT5maXJzdF9jaGlsZCwmc3ViX25hbWVbMF0pOworCQkJaGF2ZV9jaGlsZCA9IDE7CisJCX0KKwor
CQlpZihjdXJfbWVudS0+ZGVzY19sZW5ndGgpCisJCQloYXZlX2Rlc2MgPSAxOworCX0KKworCWZw
cmludGYodGNsZl9vdXQsIlxuIik7CisJZnByaW50Zih0Y2xmX291dCwgInByb2MgJXMgeyB3IH0g
e1xuIixuYW1lKTsKKwlzdWJfaW5kZXggPSAwOworCXRjbGlkeCA9IDA7CisJZm9yKGN1cl9tZW51
ID0gbWVudTtjdXJfbWVudTtjdXJfbWVudSA9IGN1cl9tZW51LT5tZW51LT5uZXh0KSB7CisJCS8q
aWYgKGN1cl9tZW51LT5mbGFncyAmIE1FTlVfRkxBR19WSVNJQkxFKSAqL3sKKwkJCWZwcmludGYo
dGNsZl9vdXQsICJcdGNvbmZpZ19vcHRpb24gJHcgJWQgXCIlc1wiICVzICIsCisJCQkJdGNsaWR4
LGN1cl9tZW51LT5tZW51LT5jYXB0aW9uLGN1cl9tZW51LT5uYW1lKTsKKworCQkJaWYoY3VyX21l
bnUtPnN5bWJvbCkgeworCQkJCWZwcmludGZfdHlwZTJuYW1lKHRjbGZfb3V0LGN1cl9tZW51LT5z
eW1ib2wtPnR5cGUpOworCQkJCWZwcmludGYodGNsZl9vdXQsICIgJWQgIixoYXZlX3N5bSk7CisJ
CQl9IGVsc2UgeworCQkJCWZwcmludGYodGNsZl9vdXQsICJTWU1fTk9ORSAlZCAiLGhhdmVfc3lt
KTsKKwkJCX0KKworCQkJaWYoY3VyX21lbnUtPmRlc2NfbGVuZ3RoKSB7CisJCQkJZnByaW50Zih0
Y2xmX291dCwgIlwiZG9oZWxwIC5kb2hlbHAgLiBcXFwiJXNcXFwiICVsZCAlbGRcIiB0cnVlICIs
CisJCQkJCWN1cl9tZW51LT5jb25maWdfZmlsZSwKKwkJCQkJY3VyX21lbnUtPmRlc2Nfc3RhcnQs
Y3VyX21lbnUtPmRlc2NfbGVuZ3RoKTsKKwkJCX0gZWxzZSB7CisJCQkJZnByaW50Zih0Y2xmX291
dCwgIlwiXCIgJXMgIiwgaGF2ZV9kZXNjID8gInRydWUiIDogImZhbHNlIik7CisJCQl9CisKKwkJ
CWlmKGN1cl9tZW51LT5tZW51LT5maXJzdF9jaGlsZCkgeworCQkJCXNwcmludGYoc3ViX25hbWUs
IiVzXyVkIixuYW1lLHN1Yl9pbmRleCk7CisJCQkJZnByaW50Zih0Y2xmX291dCwgIlwiJXMgJHcu
YyVkXCIgdHJ1ZVxuIiwmc3ViX25hbWVbMF0sdGNsaWR4KTsKKwkJCQlzdWJfaW5kZXgrKzsKKwkJ
CX0gZWxzZSB7CisJCQkJZnByaW50Zih0Y2xmX291dCwgIlwiXCIgJXNcbiIsIGhhdmVfY2hpbGQg
PyAidHJ1ZSIgOiAiZmFsc2UiKTsKKwkJCX0KKworCQkJZnByaW50Zih0Y2xmX291dCwiXG4iKTsK
KwkJCXRjbGlkeCsrOworCQl9CisJfQorCWZwcmludGYodGNsZl9vdXQsICJ9XG5cbiIpOworCit9
CisKK3ZvaWQgZnByaW50Zl92YWx1ZTJ0Y2woRklMRSAqZiwgU3ltYm9sUHRyIHN5bSkKK3sKKwlz
d2l0Y2ggKHN5bS0+dHlwZSkgeworCWNhc2UgVFlQRV9UUkk6CisJY2FzZSBUWVBFX0JPT0w6CisJ
Y2FzZSBUWVBFX09QVElPTjoKKwkJZnByaW50ZihmLCIlYyIsc3ltLT52YWx1ZS5jaGFyX3ZhbCk7
IGJyZWFrOworCWNhc2UgVFlQRV9JTlQ6CisJY2FzZSBUWVBFX0hFWDoKKwljYXNlIFRZUEVfQ0hB
UjoKKwkJZnByaW50ZihmLCIlZCIsc3ltLT52YWx1ZS5pbnRfdmFsKTsJYnJlYWs7CisJY2FzZSBU
WVBFX1NZTUJPTDoKKwkJZnByaW50ZihmLCJDT05GSUdfJXMiLHN5bS0+dmFsdWUuaWRfdmFsLT5u
YW1lKTsJYnJlYWs7CisJY2FzZSBUWVBFX1NUUjoKKwljYXNlIFRZUEVfVkFMVUU6CisJCWZwcmlu
dGYoZiwiJXMiLHN5bS0+dmFsdWUuc3RyX3ZhbCk7IGJyZWFrOworCWRlZmF1bHQ6CisJCWJyZWFr
OworCX0KK30KKworc3RhdGljIFRva2VuUHRyIHRjbDJ2YWx1ZShJZFB0ciBzeW0sIGNoYXIgKnZh
bHVlKQoreworCVRva2VuUHRyIHRva2VuOworCisJaWYgKChzeW0gPT0gTlVMTCkgfHwgKHN5bS0+
c3ltYm9sID09IE5VTEwpKQorCQlyZXR1cm4gTlVMTDsKKworCXRva2VuID0gbmV3X3Rva2VuKCk7
CisJdG9rZW4tPnR5cGUgPSBzeW0tPnN5bWJvbC0+dHlwZTsKKworCXN3aXRjaCAodG9rZW4tPnR5
cGUpIHsKKwljYXNlIFRZUEVfVFJJOgorCWNhc2UgVFlQRV9CT09MOgorCWNhc2UgVFlQRV9PUFRJ
T046CisJCXRva2VuLT52YWx1ZS5jaGFyX3ZhbCA9IHZhbHVlWzBdOyBicmVhazsKKwljYXNlIFRZ
UEVfSU5UOgorCWNhc2UgVFlQRV9IRVg6CisJY2FzZSBUWVBFX0NIQVI6CisJCXNzY2FuZigmdmFs
dWVbMF0sIiVkIiwmdG9rZW4tPnZhbHVlLmludF92YWwpOyBicmVhazsKKwljYXNlIFRZUEVfU1RS
OgorCWNhc2UgVFlQRV9WQUxVRToKKwkJdG9rZW4tPnZhbHVlLnN0cl92YWwgPSBzdHJkdXAodmFs
dWUpOyBicmVhazsKKwlkZWZhdWx0OgorCQlmcmVlKHRva2VuKTsKKwkJcmV0dXJuIE5VTEw7CisJ
CWJyZWFrOworCX0KKwlyZXR1cm4gdG9rZW47Cit9CisKK2ludCBkb194c3ltKElkUHRyIGN1cl9z
eW0pCit7CisJZnByaW50Zih0Y2xmX291dCwic2V0ICVzICIsY3VyX3N5bS0+bmFtZSk7CisJZnBy
aW50Zl92YWx1ZTJ0Y2wodGNsZl9vdXQsY3VyX3N5bS0+c3ltYm9sKTsKKwlmcHJpbnRmKHRjbGZf
b3V0LCJcbiIpOworCXJldHVybiAwOworfQorCit2b2lkIGZwcmludGZfbWVudV91cGRhdGVfZGVw
ZW5kcyhJZFB0ciBpZCkKK3sKKwljaGFyIHJlc3VsdHkgPSAneSc7CisJY2hhciByZXN1bHRtID0g
J3knOworCWNoYXIgb3JndmFsdWU7CisKKwlmcHJpbnRmKHRjbGZfb3V0LCJtZW51X3VwZGF0ZV9k
ZXBlbmRzICIpOworCWZwcmludGZfbWVudV9uYW1lKHRjbGZfb3V0LGlkLDEpOworCisJaWYoaWQt
PnN5bWJvbCkKKwkJaWYoaWQtPnN5bWJvbC0+dHlwZSA9PSBUWVBFX0JPT0wgfHwgaWQtPnN5bWJv
bC0+dHlwZSA9PSBUWVBFX1RSSSkgeworCisJCQlvcmd2YWx1ZSA9IGlkLT5zeW1ib2wtPnZhbHVl
LmNoYXJfdmFsOworCisJCQlpZC0+c3ltYm9sLT52YWx1ZS5jaGFyX3ZhbCA9ICd5JzsKKwkJCWlm
IChldmFsdWF0ZV9hbGxfZXhwcmVzc2lvbnMoaWQtPnN5bWJvbC0+ZGVwZW5kcykpCisJCQkJcmVz
dWx0eSA9ICduJzsKKworCQkJaWYoaWQtPnN5bWJvbC0+dHlwZSA9PSBUWVBFX1RSSSkgeworCQkJ
CWlkLT5zeW1ib2wtPnZhbHVlLmNoYXJfdmFsID0gJ20nOworCQkJCWlmIChldmFsdWF0ZV9hbGxf
ZXhwcmVzc2lvbnMoaWQtPnN5bWJvbC0+ZGVwZW5kcykpCisJCQkJCXJlc3VsdG0gPSAnbic7CisJ
CQl9IGVsc2UKKwkJCQkJcmVzdWx0bSA9ICduJzsKKworCQkJaWQtPnN5bWJvbC0+dmFsdWUuY2hh
cl92YWwgPSBvcmd2YWx1ZTsKKworCQl9CisKKwlpZihpZC0+bWVudSAmJiBpZC0+bWVudS0+ZGVw
ZW5kcyAmJiBldmFsdWF0ZV9hbGxfZXhwcmVzc2lvbnMoaWQtPm1lbnUtPmRlcGVuZHMpKSB7CisJ
CXJlc3VsdHkgPSAnbic7CisJCXJlc3VsdG0gPSAnbic7CisJfQorCisvLwlmcHJpbnRmKHN0ZGVy
ciwiVGVzdGluZyAlc1x0JWMgJWNcbiIsaWQtPm5hbWUscmVzdWx0eSxyZXN1bHRtKTsKKwlmcHJp
bnRmKHRjbGZfb3V0LCIgJWMgJWNcbiIscmVzdWx0eSxyZXN1bHRtKTsKK30KKwordm9pZCBkb194
aW8oKQoreworCWNoYXIgKnBhcmFtWzNdOworCWludCBwY291bnQsaTsKKwljaGFyIGJ1ZmZlclsy
NTZdOworCisJd2hpbGUgKGZnZXRzKCZidWZmZXJbMF0sc2l6ZW9mIGJ1ZmZlcix0Y2xmX2luKSkg
eworCisJCXBjb3VudCA9IHNzY2FuZigmYnVmZmVyWzBdLCIlYXMgJWFzICVhc1xuIiwmcGFyYW1b
MF0sJnBhcmFtWzFdLCZwYXJhbVsyXSk7CisKKwkJaWYgKHN0cmNtcChwYXJhbVswXSwiU1lNX1NF
VCIpID09IDApIHsKKworCQkJSWRQdHIgc3ltID0gc2VhcmNoX2lkKHBhcmFtWzFdLElEX1NFQVJD
SCk7CisJCQlJZExpc3RQdHIgYWZmOworCisJCQlpZihzeW0gJiYgc3ltLT5zeW1ib2wpIHsKKwkJ
CQlzZXRfc3ltYm9sX3ZhbHVlKHN5bSx0Y2wydmFsdWUoc3ltLCBwYXJhbVsyXSkpOworCQkJCWZv
cihhZmYgPSBzeW0tPnN5bWJvbC0+YWZmZWN0czsgYWZmOyBhZmYgPSBhZmYtPm5leHQpIHsKKwkJ
CQkJaWYgKGFmZi0+aWQtPm1lbnUpCisJCQkJCQlmcHJpbnRmX21lbnVfdXBkYXRlX2RlcGVuZHMo
YWZmLT5pZCk7CisJCQkJfQorCQkJfQorCisJCX0gZWxzZSBpZiAoc3RyY21wKHBhcmFtWzBdLCJN
RU5VX0RFUEVORFMiKSA9PSAwKSB7CisKKwkJCUlkUHRyIG1lbnUgPSBzZWFyY2hfaWQocGFyYW1b
MV0sSURfU0VBUkNIKTsKKwkJCWZwcmludGZfbWVudV91cGRhdGVfZGVwZW5kcyhtZW51KTsKKwor
CQl9CisKKwkJZmZsdXNoKHRjbGZfb3V0KTsKKwkJZm9yKGk9MDtpPHBjb3VudDtpKyspIHsKKy8v
CQkJZnByaW50ZihzdGRlcnIsIiVzICIscGFyYW1baV0pOworCQkJZnJlZShwYXJhbVtpXSk7CisJ
CX0KKy8vCQlmcHJpbnRmKHN0ZGVyciwiXG4iKTsKKwl9Cit9CisKK3BpZF90IGRvX3dpc2goKQor
eworCWludCB4MmNmaWxlZGVzWzJdOworCWludCBjMnhmaWxlZGVzWzJdOworCXBpZF90IHBpZCA9
IDA7CisKKwlpZihwaXBlKCZ4MmNmaWxlZGVzWzBdKTwwKQorCQlleGl0KDEpOworCisJaWYocGlw
ZSgmYzJ4ZmlsZWRlc1swXSk8MCkKKwkJZXhpdCgxKTsKKworCXBpZCA9IGZvcmsoKTsKKworCWlm
KHBpZCA8IDApCisJCWV4aXQoMSk7CisKKwlpZihwaWQ9PTApIHsKKworCQlpZihkdXAyKGMyeGZp
bGVkZXNbMF0sMCkgPCAwKQorCQkJZXhpdCgxKTsKKworCQlpZihkdXAyKHgyY2ZpbGVkZXNbMV0s
MSkgPCAwKQorCQkJZXhpdCgxKTsKKworCQljbG9zZShjMnhmaWxlZGVzWzBdKTsKKwkJY2xvc2Uo
YzJ4ZmlsZWRlc1sxXSk7CisJCWNsb3NlKHgyY2ZpbGVkZXNbMF0pOworCQljbG9zZSh4MmNmaWxl
ZGVzWzFdKTsKKworCQlleGVjbCgiL3Vzci9iaW4vd2lzaCIsMCk7CisJCWV4aXQoMSk7CisJfSBl
bHNlIHsKKwkJY2xvc2UoYzJ4ZmlsZWRlc1swXSk7CisJCWNsb3NlKHgyY2ZpbGVkZXNbMV0pOwor
CisJCXRjbGZfaW4gPSBmZG9wZW4oeDJjZmlsZWRlc1swXSwiciIpOworCQlpZighdGNsZl9pbikK
KwkJCWV4aXQoMSk7CisJCXRjbGZfb3V0ID0gZmRvcGVuKGMyeGZpbGVkZXNbMV0sInciKTsKKwkJ
aWYoIXRjbGZfb3V0KQorCQkJZXhpdCgxKTsKKwl9CisKKwlyZXR1cm4gcGlkOworfQogCiBpbnQg
ZG9feGNvbmZpZygpCiB7Ci0gICAgcmV0dXJuIDE7CisJcGlkX3QgcGlkOworCisJcGlkID0gZG9f
d2lzaCgpOworCisJZnByaW50Zih0Y2xmX291dCwic291cmNlIFwiY29uZi9oZWFkZXIudGtcIlxu
Iik7CisKKwl0cmF2ZXJzZV9zeW1ib2xzKGRvX3hzeW0pOworCWRvX3htZW51KHJvb3RfbWVudS0+
bWVudS0+Zmlyc3RfY2hpbGQsImRvbWVudSIpOworCisJZnByaW50Zih0Y2xmX291dCwiZnJhbWUg
LmYwXG4iKTsKKwlmcHJpbnRmKHRjbGZfb3V0LCJpbml0X3dpbmRvdyAuZjAgXCIlc1wiXG4iLHJv
b3RfbWVudS0+bWVudS0+Y2FwdGlvbik7CisJZnByaW50Zih0Y2xmX291dCwiZG9tZW51IC5mMFxu
Iik7CisJZnByaW50Zih0Y2xmX291dCwiY3JlYXRlX3Njcm9sbGJhciAuZjBcbiIpOworCWZwcmlu
dGYodGNsZl9vdXQsInBhY2sgLmYwXG4iKTsKKwlmcHJpbnRmKHRjbGZfb3V0LCJidXR0b24gLnNh
dmUgLXRleHQgXCJTYXZlXCIgLWNvbW1hbmQgXCJ3cml0ZV9jb25maWdcIlxuIik7CisJZnByaW50
Zih0Y2xmX291dCwicGFjayAuc2F2ZVxuIik7CisJZnByaW50Zih0Y2xmX291dCwiYnV0dG9uIC5s
b2FkIC10ZXh0IFwiTG9hZFwiIC1jb21tYW5kIFwicmVhZF9jb25maWdcIlxuIik7CisJZnByaW50
Zih0Y2xmX291dCwicGFjayAubG9hZFxuIik7CisKKwlmZmx1c2godGNsZl9vdXQpOworCWRvX3hp
bygpOworCXdhaXRwaWQocGlkLE5VTEwsMCk7CisJZmNsb3NlKHRjbGZfb3V0KTsKKwlmY2xvc2Uo
dGNsZl9pbik7CisJcmV0dXJuIDA7CiB9CiAKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2
W10pCit7CisJaW50IHJldHZhbCA9IDA7CisKKwlzZXRfcHJlY2VkZW5jZXMoKTsKKwlpZiAoKHJl
dHZhbCA9IHJlYWRfc3ltYm9scyhhcmd2WzFdKSkpCisJCXJldHVybiByZXR2YWw7CisJcG9zdF9w
cm9jZXNzX3N5bWJvbHMoKTsKKworCXJlYWRfY29uZmlnKCJhcmNoL2kzODYvZGVmY29uZmlnIik7
CisJcmVhZF9jb25maWcoIi5jb25maWciKTsKKworCXJldHZhbCA9IGRvX3hjb25maWcoKTsKKwor
CXJldHVybiByZXR2YWw7Cit9CisKK2ludCByZXNvbHZfZGVyaXZlZChJZFB0ciBpZCwgRXhwcmVz
c2lvblB0ciBkZXJpdmVkKQoreworCXJldHVybiAwOworfQorCitpbnQgcmVzb2x2X2RlcGVuZHMo
SWRQdHIgaWQsIEV4cHJlc3Npb25QdHIgZGVwZW5kcykKK3sKKy8qT3VjaCBUaGlzIHNjcmVhbXM6
IFBsZWFzZSBQbGVhc2UgRklYIE1FISEhICovCisJc2V0X3N5bWJvbF92YWx1ZShpZCx0Y2wydmFs
dWUoaWQsICJuIikpOworCWRvX3hzeW0oaWQpOworCXJldHVybiAwOworfQorCitpbnQgcmVzb2x2
X2RlcGVuZHNfd2l0aF9kZXJpdmVkKElkUHRyIGlkLCBFeHByZXNzaW9uUHRyIGRlcGVuZHMsIEV4
cHJlc3Npb25QdHIgZGVyaXZlZCkKK3sKKwlyZXR1cm4gMDsKK30K

--------------Boundary-00=_E23R9KVVWVCAFQFMKHLO--
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/