PATCH: ext2-undelete!

Kurt Huwig (kurt@huwig.de)
Mon, 28 Jul 1997 13:50:04 +0200 (CEST)


This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.
Send mail to mime@docserver.cac.washington.edu for more info.

---1463807743-1801059118-870090604=:1291
Content-Type: TEXT/PLAIN; charset=ISO-8859-1
Content-Transfer-Encoding: 8BIT

On Sun, 27 Jul 1997, Kurt Huwig wrote:
> On Sun, 27 Jul 1997, Rogier Wolff wrote:
> > Kurt Huwig wrote:
> > > I looked through dejanews and found Rogier's patch. It did not patch in
> > > directly, because the sources have changed a little bit, so I did it by
> > > hand, together with minor changes:
> >
> > Kurt, there should be a followup that had a slightly different patch.
> > There is an attribute bit that says "this file needs safe delete",
> > which is currently unused. I didn't know that, so I wrote it without
> > using that bit. Someon else volunteerd "but there is a bit, for which
> > you just made the implementation".
>
> After some time, I found the patch.

Darren made some mistakes in his patch:

- he made the name of the directory adjustable via define, but overlooked
that you need the length of it in 'ext2_lookup'. So it would only work
if you use a name with 12 letters. I don't want to use 'strlen' here.
- he did not move the 'ext2_unlink' code after 'do_ext2_rename', so it
won't compile at all. A
- he changed some of the 'printk' into 'ext2_debug' but still every move
is reported via one printk...annoying
- you/he said 'moveing' instead of 'moving'...ok my English is worse ;-)

I included the reference to 'chattr' and 'lsattr' in the config help. I
think this will prevent any FAQs about how to set the 'u'-bit... ;-)

Kurt

-------------------------------------------------------------
Impossible doesn't exist! Unmöglich gibt's nicht!
Difficult exists. Schwierig gibt's.

---1463807743-1801059118-870090604=:1291
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="undelete.patch"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.3.96.970728135004.1291A@TittyTwister.huwig.de>
Content-Description: ext2-undelete-2.0.30-2

LS0tIGxpbnV4L0RvY3VtZW50YXRpb24vQ29uZmlndXJlLmhlbHAub3JpZwlT
dW4gSnVsIDI3IDE0OjI3OjQ1IDE5OTcNCisrKyBsaW51eC9Eb2N1bWVudGF0
aW9uL0NvbmZpZ3VyZS5oZWxwCU1vbiBKdWwgMjggMTM6MzQ6MTcgMTk5Nw0K
QEAgLTI5ODcsNiArMjk4NywyOSBAQA0KICAgc3Vuc2l0ZS51bmMuZWR1Oi9w
dWIvTGludXgvZG9jcy9mYXFzLiBUaGlzIG9wdGlvbiB3aWxsIGVubGFyZ2Ug
eW91cg0KICAga2VybmVsIGJ5IGFib3V0IDQxIGtCLiBEZWZhdWx0IGlzIFku
DQogDQorVW5kZWxldGUgc3VwcG9ydCBmb3IgZXh0MiBmaWxlc3lzdGVtcw0K
K0NPTkZJR19FWFQyX1VOREVMRVRFDQorICBUaGlzIGVuYWJsZXMgYW4gdW5k
ZWxldGUgZmVhdHVyZSBmb3IgZXh0Mi1wYXJ0aXRpb25zLiBGaWxlcyBtYXJr
ZWQNCisgIHdpdGggdGhlIGV4dDIgYXR0cmlidXRlICd1JyBmb3IgJ3VuZG8g
cmVtb3ZlJyB3aWxsIGJlIG1vdmVkIHRvIGENCisgIC53YXN0ZWJhc2tldCBk
aXJlY3RvcnkgYXQgdGhlIHRvcCBvZiB0aGUgZnMsIHNpbWlsYXIgdG8gbG9z
dCtmb3VuZA0KKyAgYW5kIHRoZSBiaXQgd2lsbCBiZSBjbGVhcmVkLiBJZiBu
byAud2FzdGViYXNrZXQgZGlyZWN0b3J5IGV4aXN0cw0KKyAgdGhlbiB1bmRl
bGV0aW9uIGlzIG5vdCBhY3RpdmUgb24gdGhhdCBwYXJ0aXRpb24uIEFsbCBm
aWxlcyBjcmVhdGVkDQorICBpbiBhIGRpcmVjdG9yeSB3aXRoIHRoZSAndSct
Yml0IHNldCB3aWxsIGhhdmUgaXQgc2V0LCB0b28uDQorICBZb3UgY2FuIHVz
ZSAnY2hhdHRyJyBhbmQgJ2xzYXR0cicgdG8gY2hhbmdlIGFuZCB2aWV3IHRo
aXMgYXR0cmlidXRlLg0KKyAgVGhleSBhcmUgaW4gdGhlIHBhY2thZ2UgJ2Uy
ZnNwcm9ncycgYXZhaWxhYmxlIGF0DQorICAgIGZ0cDovL3N1bnNpdGUudW5j
LmVkdS9wdWIvTGludXgvc3lzdGVtL2ZpbGVzeXN0ZW1zL2V4dDIvDQorICBB
dCBwcmVzZW50IGlmIGEgZmlsZSBpbiB0aGUgLndhc3RlYmFza2V0IGRpcmVj
dG9yeSBhbHJlYWR5IGV4aXN0cw0KKyAgdGhlbiBfMCBpcyBhcHBlbmVkIHRv
IHRoZSBuZXh0IGZpbGUgb2YgdGhhdCBuYW1lIGFuZCBzbyBvbi4NCisgIENB
VkVBVFM6DQorICAgIC0gSWYgYSB1c2VyIGhhcyB0aGUgcmlnaHQgdG8gZGVs
ZXRlIGEgZmlsZSwgaXQgd2lsbCBiZSBtb3ZlZA0KKyAgICAgIHRvIHRoZSB3
YXN0ZWJhc2tldCByZWdhcmRsZXNzIG9mIHRoZSBwZXJtaXNzaW9ucyBvZiB0
aGUNCisgICAgICB3YXN0ZWJhc2tldC4gSWYgeW91IGRvbid0IHdhbnQgc2Vj
dXJpdHkgaG9sZXMgdG8gb3RoZXJzLCB5b3UNCisgICAgICBzaG91bGQgbWFr
ZSB0aGUgd2FzdGViYXNrZXQgbW9kZSA3MDAuDQorICAgIC0gWW91IGhhdmUg
dG8gbWFrZSBzdXJlIHRoYXQgdGhlIGRpcmVjdG9yeSBpcyBlbXB0aWVkIG9y
IHlvdXINCisgICAgICBoYXJkZGlzayB3aWxsIGJlIGZ1bGwgdmVyeSBzb29u
IQ0KKyAgICAtIFJlbWVtYmVyIHRvIHNldCB0aGUgJ3UnIGJpdCBvbiB1bmRl
bGV0ZWQgZmlsZXMgaWYgeW91IHdhbnQgdGhlbQ0KKyAgICAgIHRvIGJlIHVu
ZGVsZXRlLWFibGUgYWdhaW4uDQorDQogeGlhZnMgZmlsZXN5c3RlbSBzdXBw
b3J0DQogQ09ORklHX1hJQV9GUw0KICAgVGhpcyBpcyBhbiBvbGQgZmlsZXN5
c3RlbSAoPSBtZXRob2QgdG8gb3JnYW5pemUgZmlsZXMgb24gYSBoYXJkZGlz
aw0KLS0tIGxpbnV4L2ZzL0NvbmZpZy5pbi5vcmlnCVRodSBKdWwgMTcgMDE6
MDI6MzcgMTk5Nw0KKysrIGxpbnV4L2ZzL0NvbmZpZy5pbglNb24gSnVsIDI4
IDEzOjQyOjUyIDE5OTcNCkBAIC0xMSw2ICsxMSw5IEBADQogdHJpc3RhdGUg
J1NlY29uZCBleHRlbmRlZCBmcyBzdXBwb3J0JyBDT05GSUdfRVhUMl9GUw0K
IGlmIFsgIiRDT05GSUdfRVhUMl9GUyIgPSAieSIgXTsgdGhlbg0KIAlib29s
ICcJTk9fQVRJTUUgc3VwcG9ydCBmb3IgZXh0MiBmaWxlc3lzdGVtcycgQ09O
RklHX0VYVDJfTk9BVElNRQ0KKwlpZiBbICIkQ09ORklHX0VYUEVSSU1FTlRB
TCIgPSAieSIgXTsgdGhlbg0KKwkJYm9vbCAnICBVbmRlbGV0ZSBzdXBwb3J0
IGZvciBleHQyIGZpbGVzeXN0ZW1zIChFWFBFUklNRU5UQUwpJyBDT05GSUdf
RVhUMl9VTkRFTEVURQ0KKwlmaQ0KIGZpDQogdHJpc3RhdGUgJ3hpYWZzIGZp
bGVzeXN0ZW0gc3VwcG9ydCcgQ09ORklHX1hJQV9GUw0KIA0KLS0tIGxpbnV4
L2ZzL2V4dDIvbmFtZWkuYy5vcmlnCVNhdCBOb3YgMzAgMTE6MjE6MjAgMTk5
Ng0KKysrIGxpbnV4L2ZzL2V4dDIvbmFtZWkuYwlNb24gSnVsIDI4IDAwOjU4
OjI0IDE5OTcNCkBAIC02OTUsNzMgKzY5NSw2IEBADQogCXJldHVybiByZXR2
YWw7DQogfQ0KIA0KLWludCBleHQyX3VubGluayAoc3RydWN0IGlub2RlICog
ZGlyLCBjb25zdCBjaGFyICogbmFtZSwgaW50IGxlbikNCi17DQotCWludCBy
ZXR2YWw7DQotCXN0cnVjdCBpbm9kZSAqIGlub2RlOw0KLQlzdHJ1Y3QgYnVm
ZmVyX2hlYWQgKiBiaDsNCi0Jc3RydWN0IGV4dDJfZGlyX2VudHJ5ICogZGU7
DQotDQotcmVwZWF0Og0KLQlpZiAoIWRpcikNCi0JCXJldHVybiAtRU5PRU5U
Ow0KLQlyZXR2YWwgPSAtRU5PRU5UOw0KLQlpbm9kZSA9IE5VTEw7DQotCWlm
IChsZW4gPiBFWFQyX05BTUVfTEVOKSB7DQotCQlpcHV0IChkaXIpOw0KLQkJ
cmV0dXJuIC1FTkFNRVRPT0xPTkc7DQotCX0NCi0JYmggPSBleHQyX2ZpbmRf
ZW50cnkgKGRpciwgbmFtZSwgbGVuLCAmZGUpOw0KLQlpZiAoIWJoKQ0KLQkJ
Z290byBlbmRfdW5saW5rOw0KLQlpZiAoIShpbm9kZSA9IGlnZXQgKGRpci0+
aV9zYiwgZGUtPmlub2RlKSkpDQotCQlnb3RvIGVuZF91bmxpbms7DQotCWlm
IChpbm9kZS0+aV9zYi0+ZHFfb3ApDQotCQlpbm9kZS0+aV9zYi0+ZHFfb3At
PmluaXRpYWxpemUgKGlub2RlLCAtMSk7DQotCXJldHZhbCA9IC1FUEVSTTsN
Ci0JaWYgKFNfSVNESVIoaW5vZGUtPmlfbW9kZSkpDQotCQlnb3RvIGVuZF91
bmxpbms7DQotCWlmIChJU19BUFBFTkQoaW5vZGUpIHx8IElTX0lNTVVUQUJM
RShpbm9kZSkpDQotCQlnb3RvIGVuZF91bmxpbms7DQotCWlmIChkZS0+aW5v
ZGUgIT0gaW5vZGUtPmlfaW5vKSB7DQotCQlpcHV0KGlub2RlKTsNCi0JCWJy
ZWxzZShiaCk7DQotCQljdXJyZW50LT5jb3VudGVyID0gMDsNCi0JCXNjaGVk
dWxlKCk7DQotCQlnb3RvIHJlcGVhdDsNCi0JfQ0KLQlpZiAoKGRpci0+aV9t
b2RlICYgU19JU1ZUWCkgJiYgIWZzdXNlcigpICYmDQotCSAgICBjdXJyZW50
LT5mc3VpZCAhPSBpbm9kZS0+aV91aWQgJiYNCi0JICAgIGN1cnJlbnQtPmZz
dWlkICE9IGRpci0+aV91aWQpDQotCQlnb3RvIGVuZF91bmxpbms7DQotCWlm
ICghaW5vZGUtPmlfbmxpbmspIHsNCi0JCWV4dDJfd2FybmluZyAoaW5vZGUt
Pmlfc2IsICJleHQyX3VubGluayIsDQotCQkJICAgICAgIkRlbGV0aW5nIG5v
bmV4aXN0ZW50IGZpbGUgKCVsdSksICVkIiwNCi0JCQkgICAgICBpbm9kZS0+
aV9pbm8sIGlub2RlLT5pX25saW5rKTsNCi0JCWlub2RlLT5pX25saW5rID0g
MTsNCi0JfQ0KLQlyZXR2YWwgPSBleHQyX2RlbGV0ZV9lbnRyeSAoZGUsIGJo
KTsNCi0JaWYgKHJldHZhbCkNCi0JCWdvdG8gZW5kX3VubGluazsNCi0JZGly
LT5pX3ZlcnNpb24gPSArK2V2ZW50Ow0KLQltYXJrX2J1ZmZlcl9kaXJ0eShi
aCwgMSk7DQotCWlmIChJU19TWU5DKGRpcikpIHsNCi0JCWxsX3J3X2Jsb2Nr
IChXUklURSwgMSwgJmJoKTsNCi0JCXdhaXRfb25fYnVmZmVyIChiaCk7DQot
CX0NCi0JZGlyLT5pX2N0aW1lID0gZGlyLT5pX210aW1lID0gQ1VSUkVOVF9U
SU1FOw0KLQlkaXItPmlfZGlydCA9IDE7DQotCWlub2RlLT5pX25saW5rLS07
DQotCWlub2RlLT5pX2RpcnQgPSAxOw0KLQlpbm9kZS0+aV9jdGltZSA9IGRp
ci0+aV9jdGltZTsNCi0JcmV0dmFsID0gMDsNCi1lbmRfdW5saW5rOg0KLQli
cmVsc2UgKGJoKTsNCi0JaXB1dCAoaW5vZGUpOw0KLQlpcHV0IChkaXIpOw0K
LQlyZXR1cm4gcmV0dmFsOw0KLX0NCi0NCiBpbnQgZXh0Ml9zeW1saW5rIChz
dHJ1Y3QgaW5vZGUgKiBkaXIsIGNvbnN0IGNoYXIgKiBuYW1lLCBpbnQgbGVu
LA0KIAkJICBjb25zdCBjaGFyICogc3ltbmFtZSkNCiB7DQpAQCAtMTEwMSw2
ICsxMDM0LDEyMCBAQA0KIAlpcHV0IChuZXdfaW5vZGUpOw0KIAlpcHV0IChv
bGRfZGlyKTsNCiAJaXB1dCAobmV3X2Rpcik7DQorCXJldHVybiByZXR2YWw7
DQorfQ0KKw0KK2ludCBleHQyX3VubGluayAoc3RydWN0IGlub2RlICogZGly
LCBjb25zdCBjaGFyICogbmFtZSwgaW50IGxlbikNCit7DQorCWludCByZXR2
YWw7DQorCXN0cnVjdCBpbm9kZSAqIGlub2RlOw0KKwlzdHJ1Y3QgYnVmZmVy
X2hlYWQgKiBiaDsNCisJc3RydWN0IGV4dDJfZGlyX2VudHJ5ICogZGU7DQor
DQorcmVwZWF0Og0KKwlpZiAoIWRpcikNCisJCXJldHVybiAtRU5PRU5UOw0K
KwlyZXR2YWwgPSAtRU5PRU5UOw0KKwlpbm9kZSA9IE5VTEw7DQorCWlmIChs
ZW4gPiBFWFQyX05BTUVfTEVOKSB7DQorCQlpcHV0IChkaXIpOw0KKwkJcmV0
dXJuIC1FTkFNRVRPT0xPTkc7DQorCX0NCisJYmggPSBleHQyX2ZpbmRfZW50
cnkgKGRpciwgbmFtZSwgbGVuLCAmZGUpOw0KKwlpZiAoIWJoKQ0KKwkJZ290
byBlbmRfdW5saW5rOw0KKwlpZiAoIShpbm9kZSA9IGlnZXQgKGRpci0+aV9z
YiwgZGUtPmlub2RlKSkpDQorCQlnb3RvIGVuZF91bmxpbms7DQorCWlmIChp
bm9kZS0+aV9zYi0+ZHFfb3ApDQorCQlpbm9kZS0+aV9zYi0+ZHFfb3AtPmlu
aXRpYWxpemUgKGlub2RlLCAtMSk7DQorCXJldHZhbCA9IC1FUEVSTTsNCisJ
aWYgKFNfSVNESVIoaW5vZGUtPmlfbW9kZSkpDQorCQlnb3RvIGVuZF91bmxp
bms7DQorCWlmIChJU19BUFBFTkQoaW5vZGUpIHx8IElTX0lNTVVUQUJMRShp
bm9kZSkpDQorCQlnb3RvIGVuZF91bmxpbms7DQorCWlmIChkZS0+aW5vZGUg
IT0gaW5vZGUtPmlfaW5vKSB7DQorCQlpcHV0KGlub2RlKTsNCisJCWJyZWxz
ZShiaCk7DQorCQljdXJyZW50LT5jb3VudGVyID0gMDsNCisJCXNjaGVkdWxl
KCk7DQorCQlnb3RvIHJlcGVhdDsNCisJfQ0KKwlpZiAoKGRpci0+aV9tb2Rl
ICYgU19JU1ZUWCkgJiYgIWZzdXNlcigpICYmDQorCSAgICBjdXJyZW50LT5m
c3VpZCAhPSBpbm9kZS0+aV91aWQgJiYNCisJICAgIGN1cnJlbnQtPmZzdWlk
ICE9IGRpci0+aV91aWQpDQorCQlnb3RvIGVuZF91bmxpbms7DQorCWlmICgh
aW5vZGUtPmlfbmxpbmspIHsNCisJCWV4dDJfd2FybmluZyAoaW5vZGUtPmlf
c2IsICJleHQyX3VubGluayIsDQorCQkJICAgICAgIkRlbGV0aW5nIG5vbmV4
aXN0ZW50IGZpbGUgKCVsdSksICVkIiwNCisJCQkgICAgICBpbm9kZS0+aV9p
bm8sIGlub2RlLT5pX25saW5rKTsNCisJCWlub2RlLT5pX25saW5rID0gMTsN
CisJfQ0KKyNpZmRlZiBDT05GSUdfRVhUMl9VTkRFTEVURQ0KKwkvKiBPbmx5
IG1vdmUgaWYgJ1VORE8gUkVNT1ZFJyBiaXQgc2V0ICovDQorCWlmIChpbm9k
ZS0+dS5leHQyX2kuaV9mbGFncyAmIEVYVDJfVU5STV9GTCkgew0KKwkJaWYg
KGlub2RlLT5pX3NiKSB7DQorCQkJc3RydWN0IGlub2RlICp3YiwqdG1wOw0K
KwkJCWNvbnN0IGNoYXIgKm5ld19uYW1lOw0KKwkJCWNoYXIgYnVmW0VYVDJf
TkFNRV9MRU5dOw0KKwkJCWludCBuZXdfbGVuOw0KKwkJCWludCB2ZXJzaW9u
Ow0KKw0KKwkJCWlub2RlLT5pX3NiLT5zX21vdW50ZWQtPmlfY291bnQrKzsN
CisJCQlpZiAoZXh0Ml9sb29rdXAgKGlub2RlLT5pX3NiLT5zX21vdW50ZWQs
Ii53YXN0ZWJhc2tldCIsMTIsJndiKSA9PSAwKSB7DQorCQkJCWV4dDJfZGVi
dWcgKCJpbm9kZV9jPSVkLCBkaXJfYz0lZCx3Yl9jPSVkXG4iLGlub2RlLT5p
X2NvdW50LGRpci0+aV9jb3VudCx3Yi0+aV9jb3VudCk7IA0KKwkJCQluZXdf
bmFtZT1uYW1lOw0KKwkJCQluZXdfbGVuID0gbGVuOw0KKwkJCQl2ZXJzaW9u
ID0gMDsNCisJCQkJd2ItPmlfY291bnQrKzsNCisJCQkJd2hpbGUgKGV4dDJf
bG9va3VwICh3YixuZXdfbmFtZSxuZXdfbGVuLCZ0bXApID09IDApIHsNCisJ
CQkJCWlwdXQgKHRtcCk7DQorCQkJCQlzcHJpbnRmIChidWYsIiVzXyVkIixu
YW1lLHZlcnNpb24rKyk7DQorCQkJCQluZXdfbmFtZSA9IGJ1ZjsNCisJCQkJ
CW5ld19sZW4gPSBzdHJsZW4gKGJ1Zik7DQorCQkJCQl3Yi0+aV9jb3VudCsr
Ow0KKwkJCQl9DQorCQkJCWV4dDJfZGVidWcgKCJtb3ZpbmcgJXMgdG8gd2Fz
dGViYXNrZXQgYXMgJXMuXG4iLG5hbWUsbmV3X25hbWUpOw0KKwkJCQl3aGls
ZSAoZGlyLT5pX3NiLT51LmV4dDJfc2Iuc19yZW5hbWVfbG9jaykNCisJCQkJ
CXNsZWVwX29uICgmZGlyLT5pX3NiLT51LmV4dDJfc2Iuc19yZW5hbWVfd2Fp
dCk7DQorCQkJCWRpci0+aV9zYi0+dS5leHQyX3NiLnNfcmVuYW1lX2xvY2sg
PSAxOw0KKw0KKwkJCQlyZXR2YWwgPSBkb19leHQyX3JlbmFtZSAoZGlyLCBu
YW1lLCBsZW4sIHdiLCBuZXdfbmFtZSwgbmV3X2xlbiwgMCk7DQorDQorCQkJ
CWRpci0+aV9zYi0+dS5leHQyX3NiLnNfcmVuYW1lX2xvY2sgPSAwOw0KKwkJ
CQl3YWtlX3VwICgmZGlyLT5pX3NiLT51LmV4dDJfc2Iuc19yZW5hbWVfd2Fp
dCk7DQorCQkJCWV4dDJfZGVidWcgKCJpbm9kZV9jPSVkLCBkaXJfYz0lZCx3
Yl9jPSVkXG4iLGlub2RlLT5pX2NvdW50LGRpci0+aV9jb3VudCx3Yi0+aV9j
b3VudCk7IA0KKwkJCQlicmVsc2UgKGJoKTsNCisJCQkJaW5vZGUtPnUuZXh0
Ml9pLmlfZmxhZ3MgJj0gfkVYVDJfVU5STV9GTDsNCisJCQkJaXB1dCAoaW5v
ZGUpOw0KKwkJCQlyZXR1cm4gcmV0dmFsOw0KKwkJCX0gZWxzZSB7DQorCQkJ
CWV4dDJfZGVidWcgKCJObyB3YXN0ZWJhc2tldC4gT2xkIHVubGluayBmb3Ig
JXMuLi4uXG4iLG5hbWUpOw0KKwkJCX0NCisJCX0gZWxzZSB7DQorCQkJcHJp
bnRrICgiV2FybmluZzogVW5kZWxldGUgY2FuJ3QgZmluZCBhIHN1cGVyYmxv
Y2sgZm9yIGlub2RlICVsZFxuIg0KKwkJCQkiRGVsZXRpbmcgZmlsZSBub3Jt
YWxseS5cbiIsaW5vZGUtPmlfaW5vKTsNCisJCX0NCisJfQ0KKyNlbmRpZg0K
KwlyZXR2YWwgPSBleHQyX2RlbGV0ZV9lbnRyeSAoZGUsIGJoKTsNCisJaWYg
KHJldHZhbCkNCisJCWdvdG8gZW5kX3VubGluazsNCisJZGlyLT5pX3ZlcnNp
b24gPSArK2V2ZW50Ow0KKwltYXJrX2J1ZmZlcl9kaXJ0eShiaCwgMSk7DQor
CWlmIChJU19TWU5DKGRpcikpIHsNCisJCWxsX3J3X2Jsb2NrIChXUklURSwg
MSwgJmJoKTsNCisJCXdhaXRfb25fYnVmZmVyIChiaCk7DQorCX0NCisJZGly
LT5pX2N0aW1lID0gZGlyLT5pX210aW1lID0gQ1VSUkVOVF9USU1FOw0KKwlk
aXItPmlfZGlydCA9IDE7DQorCWlub2RlLT5pX25saW5rLS07DQorCWlub2Rl
LT5pX2RpcnQgPSAxOw0KKwlpbm9kZS0+aV9jdGltZSA9IGRpci0+aV9jdGlt
ZTsNCisJcmV0dmFsID0gMDsNCitlbmRfdW5saW5rOg0KKwlicmVsc2UgKGJo
KTsNCisJaXB1dCAoaW5vZGUpOw0KKwlpcHV0IChkaXIpOw0KIAlyZXR1cm4g
cmV0dmFsOw0KIH0NCiANCi0tLSAvZGV2L251bGwJU3VuIEp1biAyOSAxNzox
MDoyMCAxOTk3DQorKysgbGludXgvaW5pdC9wYXRjaGVzL2V4dDItdW5kZWxl
dGUtMi4wLjMwCU1vbiBKdWwgMjggMTM6NDI6MzIgMTk5Nw0KQEAgLTAsMCAr
MSBAQA0KK2V4dDIgdW5kZWxldGUgc3VwcG9ydCAoUm9naWVyIFdvbGZmIDxS
LkUuV29sZmZAQml0V2l6YXJkLm5sPi9EYXJyZW4gSiBNb2ZmYXQgPGRhcnJl
bkB4YXJpdXMuZGVtb24uY28udWs+L0t1cnQgSHV3aWcgPGt1cnRAaHV3aWcu
ZGU+KQ0K
---1463807743-1801059118-870090604=:1291--