--===============1341524242==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
New submission from xbit <sgaerner@gmx.net>:
Hi,
calling 'hammer snaprm /pfs/my.pfs 0x0000000123456789' will remove the syml=
ink
my.pfs. The symlink can be restored if the PFS number is known.
Attached is a patch that fixes this issue. It also ensures that arguments o=
f the
different 'snaprm' commands cannot be mixed.
Sven
----------
files: 0001-fixed-snaprm-command-to-avoid-removing-PFS-symlinks.patch
messages: 10029
nosy: xbit
priority: bug
status: unread
title: Command 'hammer snaprm' removes PFS symlink
_____________________________________________________
DragonFly issue tracker <bugs@lists.dragonflybsd.org>
<http://bugs.dragonflybsd.org/issue2111>
_____________________________________________________
--===============1341524242==
Content-Type: application/octet-stream
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="0001-fixed-snaprm-command-to-avoid-removing-PFS-symlinks.patch"
RnJvbSBiYTBjYmNlOGI2ZmRiMmZjYmIwMmUxNGFhZjllN2Q1MzZkZDcyZDU1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTdmVuIEdhZXJuZXIgPHNnYWVybmVyQGdteC5uZXQ+CkRhdGU6
IFR1ZSwgOSBBdWcgMjAxMSAxNjozOToxNCArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIGZpeGVkIHNu
YXBybSBjb21tYW5kIHRvIGF2b2lkIHJlbW92aW5nIFBGUyBzeW1saW5rcwoKKiBDYWxsaW5nICdo
YW1tZXIgc25hcHJtIC9wZnMvc29tZS5wZnMgMHgwMDAwMDAwMTIzNDU2Nzg5JyByZW1vdmVkCiAg
dGhlIFBGUyBsaW5rIC9wZnMvc29tZS5wZnMuIFRoaXMgaGFzIGJlZW4gZml4ZWQuCiogUmUtaW1w
bGVtZW50ZWQgZnVuY3Rpb24gdG8gZGV0ZWN0IGlmIGEgc3ltbGluayBwb2ludHMgdG8gYSB0cmFu
c2lkIG9yCiAgdG8gYSBQU0YuCiogQWxsb3cgcGFzc2luZyBtb3JlIGFyZ3VtZW50cyB0byBlYWNo
IGNhbGwsIHVwZGF0ZWQgdGhlIHVzYWdlIGFzIHdlbGwuCiAgRWFjaCBjYWxsIGNhbiBub3cgcmVt
b3ZlIG1vcmUgdGhhbiBvbmUgc25hcHNob3QuCgpTaWduZWQtb2ZmLWJ5OiBTdmVuIEdhZXJuZXIg
PHNnYWVybmVyQGdteC5uZXQ+Ci0tLQogc2Jpbi9oYW1tZXIvY21kX3NuYXBzaG90LmMgfCAgMjEx
ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tCiAxIGZpbGVzIGNo
YW5nZWQsIDE1MyBpbnNlcnRpb25zKCspLCA1OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9z
YmluL2hhbW1lci9jbWRfc25hcHNob3QuYyBiL3NiaW4vaGFtbWVyL2NtZF9zbmFwc2hvdC5jCmlu
ZGV4IDc5NmMzOGIuLmNmNjUwNzEgMTAwNjQ0Ci0tLSBhL3NiaW4vaGFtbWVyL2NtZF9zbmFwc2hv
dC5jCisrKyBiL3NiaW4vaGFtbWVyL2NtZF9zbmFwc2hvdC5jCkBAIC01Myw2ICs1Myw3IEBAIHN0
YXRpYyB2b2lkIHNuYXBzaG90X2FkZChpbnQgZmQsIGNvbnN0IGNoYXIgKmZzeW0sIGNvbnN0IGNo
YXIgKnRzeW0sCiBzdGF0aWMgdm9pZCBzbmFwc2hvdF9scyhjb25zdCBjaGFyICpwYXRoKTsKIHN0
YXRpYyB2b2lkIHNuYXBzaG90X2RlbChpbnQgZnNmZCwgaGFtbWVyX3RpZF90IHRpZCk7CiBzdGF0
aWMgY2hhciAqZGlycGFydChjb25zdCBjaGFyICpwYXRoKTsKK3N0YXRpYyB2b2lkIHNuYXBzaG90
X3NuYXBybV9ieV90aWQoY2hhciAqKmF2LCBpbnQgYWMsIGludCBmc2ZkKTsKIAogLyoKICAqIGhh
bW1lciBzbmFwIDxwYXRoPiBbPG5vdGU+XQpAQCAtMjAwLDgyICsyMDEsMTQ0IEBAIGhhbW1lcl9j
bWRfc25hcGxzKGNoYXIgKiphdiwgaW50IGFjKQogfQogCiAvKgotICogaGFtbWVyIHNuYXBybSA8
cGF0aD4gLi4uCi0gKiBoYW1tZXIgc25hcHJtIDx0cmFuc2lkPiAuLi4KLSAqIGhhbW1lciBzbmFw
cm0gPGZpbGVzeXN0ZW0+IDx0cmFuc2lkPiAuLi4KKyAqIGhhbW1lciBzbmFwcm0gPHNuYXBzaG90
IHBhdGg+IFs8c25hcHNob3QgcGF0aD4gLi4uXQorICogaGFtbWVyIHNuYXBybSA8dHJhbnNpZD4g
Wzx0cmFuc2lkPiAuLi5dCisgKiBoYW1tZXIgc25hcHJtIDxmaWxlc3lzdGVtPiA8dHJhbnNpZD4g
Wzx0cmFuc2lkPiAuLi5dCiAgKi8KIHZvaWQKIGhhbW1lcl9jbWRfc25hcHJtKGNoYXIgKiphdiwg
aW50IGFjKQogewogCXN0cnVjdCBzdGF0IHN0OwotCWNoYXIgbGlua2J1ZlsxMDI0XTsKKwljaGFy
IGxpbmtidWZbMTAyNF0gPSB7IDAgfTsKIAlpbnRtYXhfdCB0aWQ7CiAJaW50IGZzZmQgPSAtMTsK
LQlpbnQgaTsKKwlpbnQgaSA9IDA7CiAJY2hhciAqZGlycGF0aDsKIAljaGFyICpwdHI7CisJdWlu
dDhfdCByZW1vdmVfc3ltbGlua3MgPSAwOwogCi0JZm9yIChpID0gMDsgaSA8IGFjOyArK2kpIHsK
LQkJaWYgKGxzdGF0KGF2W2ldLCAmc3QpIDwgMCkgewotCQkJdGlkID0gc3RydG91bGwoYXZbaV0s
ICZwdHIsIDE2KTsKLQkJCWlmICgqcHRyKSB7Ci0JCQkJZXJyKDIsICJoYW1tZXIgc25hcHJtOiBu
b3QgYSBmaWxlIG9yIHRpZDogJXMiLAotCQkJCSAgICBhdltpXSk7Ci0JCQkJLyogbm90IHJlYWNo
ZWQgKi8KKwkvLyBsZWF2ZSBpZiBubyBhcmcKKwlpZihhYyA9PSAwKSB7CisJCWVycihFSU5WQUws
ICJoYW1tZXIgc25hcHJtOiBhdCBsZWFzdCBvbmUgYXJndW1lbnQgaXMgIgorCQkJInJlcXVpcmVk
Iik7CisJCS8qIG5vdCByZWFjaGVkICovCisJfQorCisJZG8geworCQkvLyBpbnNwZWN0IGFyZ3Vt
ZW50cworCQlpZiAobHN0YXQoYXZbaV0sICZzdCkgPT0gMCkgeworCQkJLy8gYXJndW1lbnQgaXMg
ZWl0aGVyIGEgbGluayBvciBhIHBhdGgsIGdldAorCQkJLy8gYXNzb2NpYXRlZCBQRlMKKwkJCS8v
IENhbGw6IGhhbW1lciBzbmFwcm0gPGZpbGVzeXN0ZW0+IDx0cmFuc2lkPiBbPHRyYW5zaWQ+IC4u
Ll0KKwkJCWlmKFNfSVNESVIoc3Quc3RfbW9kZSkpIHsKKwkJCQlpZihyZW1vdmVfc3ltbGlua3Mp
IHsKKwkJCQkJZXJyKEVJTlZBTCwKKwkJCQkJCSJoYW1tZXIgc25hcHJtOiBpbnZhbGlkIGFyZ3Vt
ZW50ICIKKwkJCQkJCSJwYXNzZWQsIHNuYXBzaG90IHN5bWxpbmsgIgorCQkJCQkJImV4cGVjdGVk
Iik7CisJCQkJCS8qIG5vdCByZWFjaGVkICovCisJCQkJfQorCQkJCWFzc2VydChmc2ZkID09IC0x
KTsKKwkJCQlhc3NlcnQoaSA9PSAwKTsKKwkJCQlmc2ZkID0gb3BlbihhdlswXSwgT19SRE9OTFkp
OworCQkJCWlmKGZzZmQgPj0gMCkgeworCQkJCQkvLyBza2lwIGZpcnN0IGFyZ3VtZW50CisJCQkJ
CXNuYXBzaG90X3NuYXBybV9ieV90aWQoYXYgKyAxLCBhYyAtIDEsIGZzZmQpOworCQkJCX0KIAkJ
CX0KLQkJCWlmIChmc2ZkIDwgMCkKLQkJCQlmc2ZkID0gb3BlbigiLiIsIE9fUkRPTkxZKTsKLQkJ
CXNuYXBzaG90X2RlbChmc2ZkLCB0aWQpOwotCQl9IGVsc2UgaWYgKFNfSVNESVIoc3Quc3RfbW9k
ZSkpIHsKLQkJCWlmIChmc2ZkID49IDApCi0JCQkJY2xvc2UoZnNmZCk7Ci0JCQlmc2ZkID0gb3Bl
bihhdltpXSwgT19SRE9OTFkpOwotCQkJaWYgKGZzZmQgPCAwKSB7Ci0JCQkJZXJyKDIsICJoYW1t
ZXIgc25hcHJtOiBjYW5ub3Qgb3BlbiBkaXIgJXMiLAotCQkJCSAgICBhdltpXSk7Ci0JCQkJLyog
bm90IHJlYWNoZWQgKi8KKwkJCWVsc2UgaWYoU19JU0xOSyhzdC5zdF9tb2RlKSkgeworCQkJCS8v
IGNoZWNrIGlmIGxpbmsgcG9pbnRzIHRvIGEgdmVyc2lvbiBvciB0byBhIFBGUworCQkJCWlmIChy
ZWFkbGluayhhdltpXSwgbGlua2J1Ziwgc2l6ZW9mKGxpbmtidWYpIC0gMSkgPCAwKSB7CisJCQkJ
CWVycihFTk9FTlQsICJoYW1tZXIgc25hcHJtOiBjYW5ub3QgcmVhZCBzb2Z0bGluazogIgorCQkJ
CQkJIiVzIiwgYXZbaV0pOworCQkJCQkvKiBub3QgcmVhY2hlZCAqLworCQkJCX0KKworCQkJCS8v
IHNuYXBzaG90IGxpbmsgbG9va3MgbGlrZSAvcGF0aC90by9wZnMvQEAweDAwMDAwMDAxMjM0NTY3
ODkKKwkJCQkvLyBQRlMgbGluayBsb29rcyBsaWtlIC9wYXRoL3RvL0BALTE6MDAwMDEKKworCQkJ
CS8vIENhbGw6IGhhbW1lciBzbmFwcm0gPGZpbGVzeXN0ZW0+IDx0cmFuc2lkPiBbPHRyYW5zaWQ+
IC4uLl0KKwkJCQkvLyBDYWxsOiBoYW1tZXIgc25hcHJtIDxzbmFwc2hvdCBwYXRoPiBbPHNuYXBz
aG90IHBhdGg+IC4uLl0KKwkJCQlkaXJwYXRoID0gc3RycmNocihsaW5rYnVmLCAnQCcpOworCQkJ
CWlmKChkaXJwYXRoICE9IE5VTEwpICYmCisJCQkJICAgKGRpcnBhdGggPiBsaW5rYnVmKSAmJgor
CQkJCSAgICgqKC0tZGlycGF0aCkgPT0gJ0AnKSkgeworCQkJCQkvLyBkaXJwYXRoIHBvaW50cyB0
byBsaW5rIHRhcmdldCB3aXRob3V0IHBhdGgKKwkJCQkJLy8gc2tpcCBsZWFkaW5nIEBACisJCQkJ
CWRpcnBhdGggKz0gMjsKKwkJCQkJdGlkID0gc3RydG91bGwoZGlycGF0aCwgJnB0ciwgMTYpOwor
CQkJCQlpZigqcHRyKSB7CisJCQkJCQkvLyBDYWxsOiBoYW1tZXIgc25hcHJtIDxmaWxlc3lzdGVt
PiA8dHJhbnNpZD4gWy4uLl0KKwkJCQkJCWlmKHJlbW92ZV9zeW1saW5rcykgeworCQkJCQkJCWVy
cihFTk9FTlQsCisJCQkJCQkJCSJoYW1tZXIgc25hcHJtOiBpbnZhbGlkIGFyZ3VtZW50IHBhc3Nl
ZCwgIgorCQkJCQkJCQkiZXhwZWN0IHNuYXBzaG90IHN5bWxpbmsiKTsKKwkJCQkJCQkvKiBub3Qg
cmVhY2hlZCAqLworCQkJCQkJfQorCisJCQkJCQlhc3NlcnQoZnNmZCA9PSAtMSk7CisJCQkJCQlh
c3NlcnQoaSA9PSAwKTsKKwkJCQkJCS8vIHJlbW92ZSBzbmFwc2hvdCwgYXQgbGVhc3Qgb25lIHRy
YW5zaWQgaXMgcmVxdWlyZWQKKwkJCQkJCWlmKGFjID09IDEpIHsKKwkJCQkJCQllcnIoRUlOVkFM
LCAiaGFtbWVyIHNuYXBybTogYXQgbGVhc3Qgb24gIgorCQkJCQkJCQkidHJhbnNpZCBpcyByZXF1
aXJlZCIpOworCQkJCQkJCS8qIG5vdCByZWFjaGVkICovCisJCQkJCQl9CisJCQkJCQlmc2ZkID0g
b3BlbihhdlswXSwgT19SRE9OTFkpOworCQkJCQkJaWYoZnNmZCA+PSAwKSB7CisJCQkJCQkJLy8g
c2tpcCBmaXJzdCBhcmd1bWVudAorCQkJCQkJCXNuYXBzaG90X3NuYXBybV9ieV90aWQoYXYgKyAx
LCBhYyAtIDEsIGZzZmQpOworCQkJCQkJfQorCQkJCQl9CisJCQkJCWVsc2UgeworCQkJCQkJLy8g
Q2FsbDogaGFtbWVyIHNuYXBybSA8c25hcHNob3QgcGF0aD4gWy4uLl0KKwkJCQkJCS8vIHJlbW92
ZSBzeW1saW5rIGFuZCBzbmFwc2hvdAorCQkJCQkJcHJpbnRmKCJEZWxldGluZyBzbmFwc2hvdCAw
eCUwMTZqeCAlc1xuIiwKKwkJCQkJCQkgICB0aWQsIGF2W2ldKTsKKwkJCQkJCWZzZmQgPSBvcGVu
KGF2W2ldLCBPX1JET05MWSk7CisJCQkJCQlpZihmc2ZkID49IDApIHsKKwkJCQkJCQlzbmFwc2hv
dF9kZWwoZnNmZCwgdGlkKTsKKwkJCQkJCQlyZW1vdmUoYXZbMF0pOworCQkJCQkJfQorCQkJCQkJ
Ly8gYWRqdXN0IGZsYWcgYW5kIGNvdW50ZXIgdG8gcmVtb3ZlIG1vcmUKKwkJCQkJCS8vIHNuYXBz
aG90cyBieSBzeW1saW5rCisJCQkJCQlpZigoYWMgPiAxKSAmJiAoaSA8IChhYyAtIDEpKSkgewor
CQkJCQkJCSsraTsKKwkJCQkJCQlyZW1vdmVfc3ltbGlua3MgPSAxOworCQkJCQkJfQorCQkJCQkJ
ZWxzZSB7CisJCQkJCQkJcmVtb3ZlX3N5bWxpbmtzID0gMDsKKwkJCQkJCX0KKwkJCQkJfQorCQkJ
CX0KIAkJCX0KLQkJfSBlbHNlIGlmIChTX0lTTE5LKHN0LnN0X21vZGUpKSB7Ci0JCQlkaXJwYXRo
ID0gZGlycGFydChhdltpXSk7Ci0JCQliemVybyhsaW5rYnVmLCBzaXplb2YobGlua2J1ZikpOwot
CQkJaWYgKHJlYWRsaW5rKGF2W2ldLCBsaW5rYnVmLCBzaXplb2YobGlua2J1ZikgLSAxKSA8IDAp
IHsKLQkJCQllcnIoMiwgImhhbW1lciBzbmFwcm06IGNhbm5vdCByZWFkIHNvZnRsaW5rOiAiCi0J
CQkJICAgICAgICIlcyIsIGF2W2ldKTsKKwkJCWVsc2UgeworCQkJCWVycihFSU5WQUwsICJoYW1t
ZXIgc25hcHJtOiBpbnZhbGlkIHBhcmFtZXRlciBwYXNzZWQiKTsKIAkJCQkvKiBub3QgcmVhY2hl
ZCAqLwogCQkJfQotCQkJaWYgKGxpbmtidWZbMF0gPT0gJy8nKSB7Ci0JCQkJZnJlZShkaXJwYXRo
KTsKLQkJCQlkaXJwYXRoID0gZGlycGFydChsaW5rYnVmKTsKLQkJCX0gZWxzZSB7Ci0JCQkJYXNw
cmludGYoJnB0ciwgIiVzLyVzIiwgZGlycGF0aCwgbGlua2J1Zik7Ci0JCQkJZnJlZShkaXJwYXRo
KTsKLQkJCQlkaXJwYXRoID0gZGlycGFydChwdHIpOwotCQkJfQorCQl9CisJCWVsc2UgeworCQkJ
Ly8gQ2FsbDogaGFtbWVyIHNuYXBybSA8dHJhbnNpZD4gWzx0cmFuc2lkPiAuLi5dCiAKLQkJCWlm
IChmc2ZkID49IDApCi0JCQkJY2xvc2UoZnNmZCk7Ci0JCQlmc2ZkID0gb3BlbihkaXJwYXRoLCBP
X1JET05MWSk7Ci0JCQlpZiAoZnNmZCA8IDApIHsKLQkJCQllcnIoMiwgImhhbW1lciBzbmFwcm06
IGNhbm5vdCBvcGVuIGRpciAlcyIsCi0JCQkJICAgIGRpcnBhdGgpOworCQkJLy8gaGFuZGxlIGxp
c3Qgb2YgdHJhbnNpZHMKKwkJCWlmKHJlbW92ZV9zeW1saW5rcykgeworCQkJCWVycihFSU5WQUws
ICJoYW1tZXIgc25hcHJtOiBpbnZhbGlkIGFyZ3VtZW50IHBhc3NlZCwgIgorCQkJCQkiZXhwZWN0
IHNuYXBzaG90IHN5bWxpbmsiKTsKIAkJCQkvKiBub3QgcmVhY2hlZCAqLwogCQkJfQogCi0JCQlp
ZiAoKHB0ciA9IHN0cnJjaHIobGlua2J1ZiwgJ0AnKSkgJiYKLQkJCSAgICBwdHIgPiBsaW5rYnVm
ICYmIHB0clstMV0gPT0gJ0AnKSB7Ci0JCQkJdGlkID0gc3RydG91bGwocHRyICsgMSwgTlVMTCwg
MTYpOwotCQkJCXNuYXBzaG90X2RlbChmc2ZkLCB0aWQpOworCQkJYXNzZXJ0KGZzZmQgPT0gLTEp
OworCQkJYXNzZXJ0KGkgPT0gMCk7CisJCQlmc2ZkID0gb3BlbigiLiIsIE9fUkRPTkxZKTsKKwkJ
CWlmKGZzZmQgPj0gMCkgeworCQkJCXNuYXBzaG90X3NuYXBybV9ieV90aWQoYXYsIGFjLCBmc2Zk
KTsKIAkJCX0KLQkJCXJlbW92ZShhdltpXSk7Ci0JCQlmcmVlKGRpcnBhdGgpOwotCQl9IGVsc2Ug
ewotCQkJZXJyKDIsICJoYW1tZXIgc25hcHJtOiBub3QgZGlyZWN0b3J5IG9yIHNuYXBzaG90ICIK
LQkJCSAgICAgICAic29mdGxpbms6ICVzIiwgYXZbaV0pOwotCQkJLyogbm90IHJlYWNoZWQgKi8K
IAkJfQotCX0KLQlpZiAoZnNmZCA+PSAwKQorCX0gd2hpbGUocmVtb3ZlX3N5bWxpbmtzKTsKKwor
CWlmKGZzZmQgPj0gMCkgewogCQljbG9zZShmc2ZkKTsKKwl9CiB9CiAKIC8qCkBAIC01NjUsOSAr
NjI4LDkgQEAgc25hcHNob3RfdXNhZ2UoaW50IGV4aXRfY29kZSkKICAgICAiaGFtbWVyIHNuYXBs
byA8cGF0aD4gWzxub3RlPl1cdFx0Y3JlYXRlIHNuYXBzaG90ICYgbGluaywgcG9pbnRzIHRvXG4i
CiAJCQkJIlx0XHRcdFx0XHR0YXJnZXQgZGlyXG4iCiAgICAgImhhbW1lciBzbmFwcSA8ZGlyPiBb
PG5vdGU+XVx0XHRjcmVhdGUgc25hcHNob3QsIG91dHB1dCBwYXRoIHRvIHN0ZG91dFxuIgotICAg
ICJoYW1tZXIgc25hcHJtIDxwYXRoPiAuLi5cdFx0ZGVsZXRlIHNuYXBzaG90czsgZmlsZXN5c3Rl
bSBpcyBDV0RcbiIKLSAgICAiaGFtbWVyIHNuYXBybSA8dHJhbnNpZD4gLi4uXHRcdGRlbGV0ZSBz
bmFwc2hvdHNcbiIKLSAgICAiaGFtbWVyIHNuYXBybSA8ZmlsZXN5c3RlbT4gPHRyYW5zaWQ+IC4u
Llx0ZGVsZXRlIHNuYXBzaG90c1xuIgorICAgICJoYW1tZXIgc25hcHJtIDxzeW1saW5rPiAuLi5c
dFx0ZGVsZXRlIHNuYXBzaG90cyBieSBzeW1saW5rXG4iCisgICAgImhhbW1lciBzbmFwcm0gPHRy
YW5zaWQ+IC4uLlx0XHRkZWxldGUgc25hcHNob3RzIGJ5IElEIGZvciBDV0RcbiIKKyAgICAiaGFt
bWVyIHNuYXBybSA8UEZTPiA8dHJhbnNpZD4gLi4uXHRkZWxldGUgc25hcHNob3RzIGJ5IElEIG9u
IFBGU1xuIgogICAgICJoYW1tZXIgc25hcGxzIFs8cGF0aD4gLi4uXVx0XHRsaXN0IGF2YWlsYWJs
ZSBzbmFwc2hvdHNcbiIKICAgICAiXG4iCiAgICAgIk5PVEU6IFNuYXBzaG90cyBhcmUgY3JlYXRl
ZCBpbiBmaWxlc3lzdGVtIG1ldGEtZGF0YSwgYW55IGRpcmVjdG9yeVxuIgpAQCAtNjExLDMgKzY3
NCwzNSBAQCBkaXJwYXJ0KGNvbnN0IGNoYXIgKnBhdGgpCiAJcmVzW3B0ciAtIHBhdGhdID0gMDsK
IAlyZXR1cm4ocmVzKTsKIH0KKworLyoqCisgKiBSZW1vdmUgYWxsIHNuYXBzaG90cyB0aGF0IGFy
ZSBwYXNzZWQgYXMgYXJndW1lbnRzLgorICoKKyAqIEV4cGVjdCBlYWNoIGFyZ3VtZW50IHRvIGJl
IGEgdHJhbnNpZC4KKyAqLworc3RhdGljCit2b2lkCitzbmFwc2hvdF9zbmFwcm1fYnlfdGlkKGNo
YXIgKiphdiwgaW50IGFjLCBpbnQgZnNmZCkKK3sKKwlpbnQgaTsKKwlpbnRtYXhfdCB0aWQ7CisJ
Y2hhciAqcHRyOworCisJYXNzZXJ0KGZzZmQgPj0gMCk7CisJYXNzZXJ0KGFjID4gMCk7CisKKwlm
b3IoaSA9IDA7IGkgPCBhYzsgKytpKSB7CisJCXRpZCA9IHN0cnRvdWxsKGF2W2ldLCAmcHRyLCAx
Nik7CisJCWlmKCpwdHIpIHsKKwkJCS8vIGNvbnZlcnNpb24gZmFpbGVkCisJCQlpZihmc2ZkID49
IDApIHsKKwkJCQljbG9zZShmc2ZkKTsKKwkJCX0KKwkJCWVycihFTk9FTlQsICJoYW1tZXIgc25h
cHJtOiBub3QgYSBmaWxlIG9yIHRpZDogJXMiLAorCQkJCWF2W2ldKTsKKwkJCS8qIG5vdCByZWFj
aGVkICovCisJCX0KKwkJcHJpbnRmKCJEZWxldGluZyBzbmFwc2hvdCAweCUwMTZqeFxuIiwgdGlk
KTsKKwkJc25hcHNob3RfZGVsKGZzZmQsIHRpZCk7CisJfQorfQotLSAKMS43LjUuNAoK
--===============1341524242==--