[prev in list] [next in list] [prev in thread] [next in thread] 

List:       cyrus-devel
Subject:    Some bits and pieces of evil GUID fiddling code
From:       "Bron Gondwana" <brong () fastmail ! fm>
Date:       2007-10-15 12:45:02
Message-ID: 1192452302.4235.1215923313 () webmail ! messagingengine ! com
[Download RAW message or body]

This is a multi-part message in MIME format.

--_----------=_119245230242350
Content-Disposition: inline
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="ISO-8859-1"
MIME-Version: 1.0
X-Mailer: MessagingEngine.com Webmail Interface
Date: Mon, 15 Oct 2007 12:45:02 UT

Attached are:

CyrusIndex.pm - my Perl module for directly fiddling index files - it can
handle version 9 AND version 10 index files now, and even handles
up/downgrades in stream_copy now.

index_uids.pl - a simple tool for dumping the contents of an index file

guidhelper.pl - ***WARNING*** this comes with no warranty either expressed
                or implied and will probably eat your data if you don't
                use it very carefully - also won't work outside FastMail
                as-is anyway.

I'm posting these more for general interest than out of a belief anyone
else will get much use out of them.  guidhelper.pl in particular has hooks
deep into the FastMail way of doing things, though I tried to abstract the
main work component out to where people could use it if they want to spend
some time rewriting the "get folder list" bit.

I have successfully used guidhelper.pl to simulate the reconstruct
instructions given for upgrading without the IO hit of the
'reconstruct -g' on the replica.

(I'm thinking evil thoughts of a "guidmode: zero" and setting that on
 the replicas so they automatically zero during the initial upgrade, but
 that's possibly not worth the effort for a once-off for just us!) 

Enjoy,

Bron.
-- 
  Bron Gondwana
  brong@fastmail.fm


--_----------=_119245230242350
Content-Disposition: attachment; filename="IndexFile.pm"
Content-Transfer-Encoding: base64
Content-Type: application/x-perl; name="IndexFile.pm"
MIME-Version: 1.0
X-Mailer: MessagingEngine.com Webmail Interface
Date: Mon, 15 Oct 2007 12:45:02 UT

IyEvdXNyL2Jpbi9wZXJsIC1jCgojIFBhY2thZ2UgdG8gaGFuZGxlIEN5cnVz
IEluZGV4IGZpbGVzICh2ZXJzaW9uIDkgYW5kIHZlcnNpb24gMTApCgpwYWNr
YWdlIEN5cnVzOjpJbmRleEZpbGU7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2Fybmlu
Z3M7Cgp1c2UgSU86OkZpbGU7CnVzZSBJTzo6RmlsZTo6ZmNudGw7CnVzZSBJ
Tzo6SGFuZGxlOwp1c2UgRmlsZTo6VGVtcDsKdXNlIERhdGE6OkR1bXBlcjsK
CiMgU2V0IHVwIGhlYWRlciBhbmQgcmVjb3JkIGZvcm1hdHRpbmcgaW5mb3Jt
YXRpb24ge3t7CgpteSAkVmVyc2lvbkZvcm1hdHMgPSB7CiAgOSA9PiB7CiAg
ICBIZWFkZXJTaXplID0+IDk2LAogICAgX21ha2VfZmllbGRzKCdIZWFkZXIn
LDw8RU9GKSwKR2VuZXJhdGlvbiAgICAgICAgICAgIGludDMyICA0CkZvcm1h
dCAgICAgICAgICAgICAgICBpbnQzMiAgNApNaW5vclZlcnNpb24gICAgICAg
ICAgaW50MzIgIDQKU3RhcnRPZmZzZXQgICAgICAgICAgIGludDMyICA0ClJl
Y29yZFNpemUgICAgICAgICAgICBpbnQzMiAgNApFeGlzdHMgICAgICAgICAg
ICAgICAgaW50MzIgIDQKTGFzdEFwcGVuZGRhdGUgICAgICAgIHRpbWVfdCA0
Ckxhc3RVaWQgICAgICAgICAgICAgICBpbnQzMiAgNApRdW90YVVzZWQgICAg
ICAgICAgICAgaW50NjQgIDgKUG9wM0xhc3RMb2dpbiAgICAgICAgIHRpbWVf
dCA0ClVpZFZhbGlkaXR5ICAgICAgICAgICBpbnQzMiAgNApEZWxldGVkICAg
ICAgICAgICAgICAgaW50MzIgIDQKQW5zd2VyZWQgICAgICAgICAgICAgIGlu
dDMyICA0CkZsYWdnZWQgICAgICAgICAgICAgICBpbnQzMiAgNApPcHRpb25z
ICAgICAgICAgICAgICAgYml0bWFwIDQKTGVha2VkQ2FjaGUgICAgICAgICAg
IGludDMyICA0CkhpZ2VzdE1vZHNlcSAgICAgICAgICBpbnQ2NCAgOApTcGFy
ZTAgICAgICAgICAgICAgICAgaW50MzIgIDQKU3BhcmUxICAgICAgICAgICAg
ICAgIGludDMyICA0ClNwYXJlMiAgICAgICAgICAgICAgICBpbnQzMiAgNApT
cGFyZTMgICAgICAgICAgICAgICAgaW50MzIgIDQKU3BhcmU0ICAgICAgICAg
ICAgICAgIGludDMyICA0CkVPRgogICAgUmVjb3JkU2l6ZSA9PiA4MCwgIyBk
ZWZpbmVkIGluIGZpbGUgdG9vLCBjaGVjayBpdCEKICAgIF9tYWtlX2ZpZWxk
cygnUmVjb3JkJywgPDxFT0YpLApVaWQgICAgICAgICAgICAgICAgICAgaW50
MzIgIDQKSW50ZXJuYWxEYXRlICAgICAgICAgIHRpbWVfdCA0ClNlbnREYXRl
ICAgICAgICAgICAgICB0aW1lX3QgNApTaXplICAgICAgICAgICAgICAgICAg
aW50MzIgIDQKSGVhZGVyU2l6ZSAgICAgICAgICAgIGludDMyICA0CkNvbnRl
bnRPZmZzZXQgICAgICAgICBpbnQzMiAgNApDYWNoZU9mZnNldCAgICAgICAg
ICAgaW50MzIgIDQKTGFzdFVwZGF0ZWQgICAgICAgICAgIHRpbWVfdCA0ClN5
c3RlbUZsYWdzICAgICAgICAgICBiaXRtYXAgNApVc2VyRmxhZ3MgICAgICAg
ICAgICAgYml0bWFwIDE2CkNvbnRlbnRMaW5lcyAgICAgICAgICBpbnQzMiAg
NApDYWNoZVZlcnNpb24gICAgICAgICAgaW50MzIgIDQKTWVzc2FnZVV1aWQg
ICAgICAgICAgIGhleCAgICAxMgpNb2RzZXEgICAgICAgICAgICAgICAgaW50
NjQgIDgKRU9GCiAgfSwKICAxMCA9PiB7CiAgICBIZWFkZXJTaXplID0+IDk2
LAogICAgX21ha2VfZmllbGRzKCdIZWFkZXInLDw8RU9GKSwKR2VuZXJhdGlv
biAgICAgICAgICAgIGludDMyICA0CkZvcm1hdCAgICAgICAgICAgICAgICBp
bnQzMiAgNApNaW5vclZlcnNpb24gICAgICAgICAgaW50MzIgIDQKU3RhcnRP
ZmZzZXQgICAgICAgICAgIGludDMyICA0ClJlY29yZFNpemUgICAgICAgICAg
ICBpbnQzMiAgNApFeGlzdHMgICAgICAgICAgICAgICAgaW50MzIgIDQKTGFz
dEFwcGVuZGRhdGUgICAgICAgIHRpbWVfdCA0Ckxhc3RVaWQgICAgICAgICAg
ICAgICBpbnQzMiAgNApRdW90YVVzZWQgICAgICAgICAgICAgaW50NjQgIDgK
UG9wM0xhc3RMb2dpbiAgICAgICAgIHRpbWVfdCA0ClVpZFZhbGlkaXR5ICAg
ICAgICAgICBpbnQzMiAgNApEZWxldGVkICAgICAgICAgICAgICAgaW50MzIg
IDQKQW5zd2VyZWQgICAgICAgICAgICAgIGludDMyICA0CkZsYWdnZWQgICAg
ICAgICAgICAgICBpbnQzMiAgNApPcHRpb25zICAgICAgICAgICAgICAgYml0
bWFwIDQKTGVha2VkQ2FjaGUgICAgICAgICAgIGludDMyICA0CkhpZ2VzdE1v
ZHNlcSAgICAgICAgICBpbnQ2NCAgOApTcGFyZTAgICAgICAgICAgICAgICAg
aW50MzIgIDQKU3BhcmUxICAgICAgICAgICAgICAgIGludDMyICA0ClNwYXJl
MiAgICAgICAgICAgICAgICBpbnQzMiAgNApTcGFyZTMgICAgICAgICAgICAg
ICAgaW50MzIgIDQKU3BhcmU0ICAgICAgICAgICAgICAgIGludDMyICA0CkVP
RgogICAgUmVjb3JkU2l6ZSA9PiA4OCwgIyBkZWZpbmVkIGluIGZpbGUgdG9v
LCBjaGVjayBpdCEKICAgIF9tYWtlX2ZpZWxkcygnUmVjb3JkJywgPDxFT0Yp
LApVaWQgICAgICAgICAgICAgICAgICAgaW50MzIgIDQKSW50ZXJuYWxEYXRl
ICAgICAgICAgIHRpbWVfdCA0ClNlbnREYXRlICAgICAgICAgICAgICB0aW1l
X3QgNApTaXplICAgICAgICAgICAgICAgICAgaW50MzIgIDQKSGVhZGVyU2l6
ZSAgICAgICAgICAgIGludDMyICA0CkNvbnRlbnRPZmZzZXQgICAgICAgICBp
bnQzMiAgNApDYWNoZU9mZnNldCAgICAgICAgICAgaW50MzIgIDQKTGFzdFVw
ZGF0ZWQgICAgICAgICAgIHRpbWVfdCA0ClN5c3RlbUZsYWdzICAgICAgICAg
ICBiaXRtYXAgNApVc2VyRmxhZ3MgICAgICAgICAgICAgYml0bWFwIDE2CkNv
bnRlbnRMaW5lcyAgICAgICAgICBpbnQzMiAgNApDYWNoZVZlcnNpb24gICAg
ICAgICAgaW50MzIgIDQKTWVzc2FnZUd1aWQgICAgICAgICAgIGhleCAgICAy
MApNb2RzZXEgICAgICAgICAgICAgICAgaW50NjQgIDgKRU9GCiAgfSwKfTsK
CnN1YiBfbWFrZV9maWVsZHMgewogIG15ICRwcmVmaXggPSBzaGlmdDsKICBt
eSAkc3RyaW5nID0gc2hpZnQ7CgogIG15IEBsaW5lcyA9IGdyZXAgeyBtL1xT
LyB9IHNwbGl0IC9cbi8sICRzdHJpbmc7CgogIG15IEBpdGVtczsKICBteSBA
cGFja2l0ZW1zOwogIGZvcmVhY2ggbXkgJGxpbmUgKEBsaW5lcykgewogICAg
bXkgKCROYW1lLCAkVHlwZSwgJFNpemUpID0gc3BsaXQgL1xzKy8sICRsaW5l
OwoKICAgIHB1c2ggQGl0ZW1zLCBbJE5hbWUsICRUeXBlLCAkU2l6ZV07CiAg
ICBwdXNoIEBwYWNraXRlbXMsIF9tYWtlX3BhY2soJFR5cGUsICRTaXplKTsK
ICB9CgogIHJldHVybiAoCiAgICAkcHJlZml4IC4gJ0ZpZWxkcycgPT4gXEBp
dGVtcywKICAgICRwcmVmaXggLiAnUGFjaycgPT4gam9pbigiIiwgQHBhY2tp
dGVtcyksCiAgKTsKfQoKc3ViIF9tYWtlX3BhY2sgewogIG15ICRmb3JtYXQg
PSBzaGlmdDsKICBteSAkc2l6ZSA9IHNoaWZ0OwogIGlmICgkZm9ybWF0IGVx
ICdpbnQzMicgb3IgJGZvcm1hdCBlcSAndGltZV90JykgewogICAgcmV0dXJu
ICdOJzsKICB9CiAgZWxzaWYgKCRmb3JtYXQgZXEgJ2ludDY0JykgeyAjIGln
bm9yZSBzdGFydC4uCiAgICByZXR1cm4gJ3hbTl1OJzsKICB9CiAgZWxzaWYg
KCRmb3JtYXQgZXEgJ2JpdG1hcCcpIHsKICAgIHJldHVybiAnQicgLiAoOCAq
ICRzaXplKTsKICB9CiAgZWxzaWYgKCRmb3JtYXQgZXEgJ2hleCcpIHsKICAg
IHJldHVybiAnSCcgLiAoMiAqICRzaXplKTsKICB9Cn0KCiMgfX19CgojIFBV
QkxJQyBBUEkKCnN1YiBuZXcgewogIG15ICRjbGFzcyA9IHNoaWZ0OwogIG15
ICRoYW5kbGUgPSBzaGlmdDsKCiAgIyByZWFkIGhlYWRlcgogIG15ICRidWY7
CiAgIyBYWFggLSBjaGVjayBmb3Igc3VjY2VzcyEKICBzeXNyZWFkKCRoYW5k
bGUsICRidWYsIDEyKTsKICBteSAkdmVyc2lvbiA9IHVucGFjaygnTicsIHN1
YnN0cigkYnVmLCA4KSk7CiAgbXkgJFNlbGYgPSBibGVzcyB7IHZlcnNpb24g
PT4gJHZlcnNpb24gfSwgcmVmKCRjbGFzcykgfHwgJGNsYXNzOwogIGlmICht
eSAkZnJtID0gJFZlcnNpb25Gb3JtYXRzLT57JHZlcnNpb259KSB7CiAgICAk
U2VsZi0+e2Zvcm1hdH0gPSAkZnJtOwogICAgbXkgJHJlc3Q7CiAgICBzeXNy
ZWFkKCRoYW5kbGUsICRyZXN0LCAkZnJtLT57SGVhZGVyU2l6ZX0gLSAxMik7
CiAgICAkYnVmIC49ICRyZXN0OwogIH0KICBlbHNlIHsKICAgIGRpZSAiVW5r
bm93biBoZWFkZXIgZm9ybWF0ICR2ZXJzaW9uXG4iOwogIH0KICAkU2VsZi0+
e3Jhd2hlYWRlcn0gPSAkYnVmOwogICRTZWxmLT57aGVhZGVyfSA9ICRTZWxm
LT5wYXJzZV9oZWFkZXIoJGJ1Zik7CiAgJFNlbGYtPntyZWNvcmRzX2RvbmV9
ID0gMDsKICAkU2VsZi0+e2hhbmRsZX0gPSAkaGFuZGxlOwogIHJldHVybiAk
U2VsZjsKfQoKc3ViIG5ld19maWxlIHsKICBteSAkY2xhc3MgPSBzaGlmdDsK
ICBteSAkZmlsZSA9IHNoaWZ0OwogIG15ICRsb2Nrb3B0cyA9IHNoaWZ0OwoK
ICBteSAkZmg7CiAgaWYgKCRsb2Nrb3B0cykgewogICAgJGxvY2tvcHRzID0g
Wydsb2NrX2V4J10gdW5sZXNzIHJlZigkbG9ja29wdHMpIGVxICdBUlJBWSc7
CiAgICAkZmggPSBJTzo6RmlsZTo6ZmNudGwtPm5ldygkZmlsZSwgJys8Jywg
QCRsb2Nrb3B0cykKICAgICAgICAgIHx8IGRpZSAiQ2FuJ3Qgb3BlbiAkZmls
ZSBmb3IgbG9ja2VkIHJlYWQ6ICQhIjsKICB9IGVsc2UgewogICAgJGZoID0g
SU86OkZpbGUtPm5ldygiPCAkZmlsZSIpIAogICAgICAgICAgfHwgZGllICJD
YW4ndCBvcGVuICRmaWxlIGZvciByZWFkOiAkISI7CiAgfQoKICByZXR1cm4g
JGNsYXNzLT5uZXcoJGZoKTsKfQoKc3ViIHN0cmVhbV9jb3B5IHsKICBteSAk
U2VsZiA9IHNoaWZ0OwogIG15ICRvdXRmaCA9IHNoaWZ0OwogIG15ICRkZWNp
ZGUgPSBzaGlmdDsKICBteSAlT3B0cyA9IEBfOwoKICBteSAkb3V0ID0gJFNl
bGYtPm5ld19lbXB0eSgkT3B0c3t2ZXJzaW9ufSB8fCAkU2VsZi0+e3ZlcnNp
b259KTsKCiAgbXkgJG5ld2hlYWRlciA9ICRTZWxmLT5oZWFkZXJfY29weSgp
OwoKICAjIGluaXRpYWxseSBlbXB0eQogICRuZXdoZWFkZXItPntFeGlzdHN9
ID0gMDsKICAjIEltcG9ydGFudCEgIE90aGVyd2lzZSB5b3UgZ2V0IHZlcnNp
b25zIG91dCBvZiBza2V3IQogICRuZXdoZWFkZXItPntNaW5vclZlcnNpb259
ID0gJG91dC0+e3ZlcnNpb259OwogICRuZXdoZWFkZXItPntSZWNvcmRTaXpl
fSA9ICRvdXQtPntmb3JtYXR9e1JlY29yZFNpemV9OwogICRvdXQtPndyaXRl
X2hlYWRlcigkb3V0ZmgsICRuZXdoZWFkZXIpOwoKICAkU2VsZi0+cmVzZXQo
KTsKICB3aGlsZSAobXkgJHJlY29yZCA9ICRTZWxmLT5uZXh0X3JlY29yZCgp
KSB7CiAgICBpZiAoJGRlY2lkZS0+KCRuZXdoZWFkZXIsICRyZWNvcmQpKSB7
CiAgICAgICRuZXdoZWFkZXItPntFeGlzdHN9Kys7CiAgICAgICRvdXQtPndy
aXRlX3JlY29yZCgkb3V0ZmgsICRyZWNvcmQpOwogICAgfQogIH0KCiAgIyB1
cGRhdGUgZXhpc3RzIGFuZCBsYXN0IHVwZGF0ZWQKICAkbmV3aGVhZGVyLT57
TGFzdFVwZGF0ZWR9ID0gdGltZSgpOwogIHNlZWsoJG91dGZoLCAwLCAwKTsK
ICAkb3V0LT53cml0ZV9oZWFkZXIoJG91dGZoLCAkbmV3aGVhZGVyKTsKfQoK
c3ViIG5ld19lbXB0eSB7CiAgbXkgJGNsYXNzID0gc2hpZnQ7CiAgbXkgJHZl
cnNpb24gPSBzaGlmdDsKCiAgbXkgJFNlbGYgPSBibGVzcyB7IHZlcnNpb24g
PT4gJHZlcnNpb24gfSwgcmVmKCRjbGFzcykgfHwgJGNsYXNzOwogIGlmICht
eSAkZnJtID0gJFZlcnNpb25Gb3JtYXRzLT57JHZlcnNpb259KSB7CiAgICAk
U2VsZi0+e2Zvcm1hdH0gPSAkZnJtOwogIH0KICBlbHNlIHsKICAgIGRpZSAi
dW5rbm93biB2ZXJzaW9uICR2ZXJzaW9uIjsKICB9CgogIHJldHVybiAkU2Vs
ZjsKfQoKc3ViIGhlYWRlciB7CiAgbXkgJFNlbGYgPSBzaGlmdDsKICBteSAk
RmllbGQgPSBzaGlmdDsKCiAgaWYgKCRGaWVsZCkgewogICAgcmV0dXJuICRT
ZWxmLT57aGVhZGVyfXskRmllbGR9OwogIH0KCiAgcmV0dXJuICRTZWxmLT57
aGVhZGVyfTsKfQoKc3ViIGhlYWRlcl9jb3B5IHsKICBteSAkU2VsZiA9IHNo
aWZ0OwoKICByZXR1cm4geyAleyRTZWxmLT57aGVhZGVyfX0gfTsKfQoKc3Vi
IHJlc2V0IHsKICBteSAkU2VsZiA9IHNoaWZ0OwoKICBteSAkSGVhZGVyU2l6
ZSA9ICRTZWxmLT57Zm9ybWF0fXtIZWFkZXJTaXplfTsKICAKICBzeXNzZWVr
KCRTZWxmLT57aGFuZGxlfSwgJEhlYWRlclNpemUsIDApOwogICRTZWxmLT57
cmVjb3Jkc19kb25lfSA9IDA7CiAgZGVsZXRlICRTZWxmLT57cmF3cmVjb3Jk
fTsKICBkZWxldGUgJFNlbGYtPntyZWNvcmR9Owp9CgpzdWIgbmV4dF9yZWNv
cmQgewogIG15ICRTZWxmID0gc2hpZnQ7CgogIG15ICRSZWNvcmRTaXplID0g
JFNlbGYtPmhlYWRlcignUmVjb3JkU2l6ZScpOwogIG15ICRFeGlzdHMgPSAk
U2VsZi0+aGVhZGVyKCdFeGlzdHMnKTsKCiAgaWYgKCRTZWxmLT57cmVjb3Jk
c19kb25lfSA8ICRFeGlzdHMpIHsKICAgIG15ICRidWY7CiAgICBzeXNyZWFk
KCRTZWxmLT57aGFuZGxlfSwgJGJ1ZiwgJFJlY29yZFNpemUpOwogICAgJFNl
bGYtPntyZWNvcmRzX2RvbmV9Kys7CiAgICBteSAkcmVjID0gJFNlbGYtPnBh
cnNlX3JlY29yZCgkYnVmKTsKICAgICRTZWxmLT57cmF3cmVjb3JkfSA9ICRi
dWY7CiAgICAkU2VsZi0+e3JlY29yZH0gPSAkcmVjOwogICAgcmV0dXJuICRy
ZWM7CiAgfQogIGVsc2UgewogICAgZGVsZXRlICRTZWxmLT57cmF3cmVjb3Jk
fTsKICAgIGRlbGV0ZSAkU2VsZi0+e3JlY29yZH07CiAgICByZXR1cm4gdW5k
ZWY7ICMgbm8gbW9yZSByZWNvcmRzIQogIH0KfQoKc3ViIHJlY29yZCB7CiAg
bXkgJFNlbGYgPSBzaGlmdDsKICBteSAkRmllbGQgPSBzaGlmdDsKCiAgcmV0
dXJuIHVuZGVmIHVubGVzcyAoJFNlbGYtPntyZWNvcmR9KTsgCgogIGlmICgk
RmllbGQpIHsKICAgIHJldHVybiAkU2VsZi0+e3JlY29yZH17JEZpZWxkfTsK
ICB9CiAgcmV0dXJuICRTZWxmLT57cmVjb3JkfTsKfQoKc3ViIHdyaXRlX2hl
YWRlciB7CiAgbXkgJFNlbGYgPSBzaGlmdDsKICBteSAkZmggPSBzaGlmdDsK
ICBteSAkaGVhZGVyID0gc2hpZnQ7CgogIG15ICRidWYgPSAkU2VsZi0+bWFr
ZV9oZWFkZXIoJGhlYWRlcik7CiAgc3lzd3JpdGUoJGZoLCAkYnVmKTsKfQoK
c3ViIHdyaXRlX3JlY29yZCB7CiAgbXkgJFNlbGYgPSBzaGlmdDsKICBteSAk
ZmggPSBzaGlmdDsKICBteSAkcmVjb3JkID0gc2hpZnQ7CgogIG15ICRidWYg
PSAkU2VsZi0+bWFrZV9yZWNvcmQoJHJlY29yZCk7CiAgc3lzd3JpdGUoJGZo
LCAkYnVmKTsKfQoKc3ViIG1lcmdlX2luZGV4ZXMgewogIG15ICRTZWxmID0g
c2hpZnQ7CiAgbXkgJHRhcmdldCA9IHNoaWZ0OwogIG15IEBleHRyYXMgPSBz
aGlmdDsKCiAgIyBjb3B5IHRoZSBjdXJyZW50IGhlYWRlciBmaXJzdAogIG15
ICR0YXJnZXRwb3MgPSB0ZWxsKCR0YXJnZXQpOwogIG15ICRoZWFkZXIgPSAk
U2VsZi0+aGVhZGVyKCk7CiAgIyByZXNldCBzb21lIHN0dWZmCiAgJGhlYWRl
ci0+e0V4aXN0c30gPSAwOwogICRoZWFkZXItPntMYXN0QXBwZW5kZGF0ZX0g
PSAwOwogICRoZWFkZXItPntMYXN0VWlkfSA9IDA7CiAgJGhlYWRlci0+e1F1
b3RhVXNlZH0gPSAwOwogICRoZWFkZXItPntEZWxldGVkfSA9IDA7CiAgJGhl
YWRlci0+e0Fuc3dlcmVkfSA9IDA7CiAgJGhlYWRlci0+e0ZsYWdnZWR9ID0g
MDsKICAkaGVhZGVyLT57SGlnaGVzdE1vZHNlcX0gPSAwOwogICRTZWxmLT53
cml0ZV9oZWFkZXIoJHRhcmdldCwgJGhlYWRlcik7CgogIG15IEBhbGwgPSAo
JFNlbGYsIEBleHRyYXMpOwoKICBteSBAcmVjb3JkcyA9IG1hcCB7ICRfLT5u
ZXh0X3JlY29yZCgpIH0gQGFsbDsKCiAgbXkgJG5leHR1aWQgPSAtMTsKCiAg
d2hpbGUgKCRuZXh0dWlkKSB7CiAgICBteSAkdGhpczsKICAgIG15ICRoaWdo
ZXJ1aWQ7CgogICAgIyByZWFkIHRoZSBmaXJzdCByZWNvcmQgb2YgYWxsIGxp
c3RzCiAgICBmb3JlYWNoIG15ICRuICgwLi4kI2FsbCkgewogICAgICBuZXh0
IHVubGVzcyAkcmVjb3Jkc1skbl07CiAgICAgIGlmICgkcmVjb3Jkc1skbl17
VWlkfSA9PSAkbmV4dHVpZCkgewogICAgICAgICMgYWxnb3JpdGhtOiBrZWVw
IG1vc3QgcmVjZW50bHkgbW9kaWZpZWQKICAgICAgICBpZiAobm90ICR0aGlz
IG9yICR0aGlzLT57TGFzdE1vZGlmaWVkfSA8ICRyZWNvcmRzWyRuXXtMYXN0
TW9kaWZpZWR9KSB7CiAgICAgICAgICAkdGhpcyA9ICRyZWNvcmRzWyRuXXtM
YXN0TW9kaWZpZWR9OwogICAgICAgIH0KICAgICAgICAjIHN0ZXAgZm9yd2Fy
ZHMKICAgICAgICAkcmVjb3Jkc1skbl0gPSAkYWxsWyRuXS0+bmV4dF9yZWNv
cmQoKTsKICAgICAgfQogICAgICAjIGZpbmQgdGhlIG1pbmltdW0gbm93CiAg
ICAgIGlmIChub3QgJGhpZ2hlcnVpZCBvciAkaGlnaGVydWlkID4gJHJlY29y
ZHNbJG5de1VpZH0pIHsKICAgICAgICAkaGlnaGVydWlkID0gJHJlY29yZHNb
JG5de1VpZH07CiAgICAgIH0KICAgIH0KCiAgICAjIHdyaXRlIG91dCB0aGUg
YmVzdCByZWNvcmQgZm91bmQKICAgIGlmICgkdGhpcykgewogICAgICAkU2Vs
Zi0+d3JpdGVfcmVjb3JkKCR0YXJnZXQsICR0aGlzKTsKICAgICAgJGhlYWRl
ci0+e0V4aXN0c30rKzsKICAgICAgIyBYWFggLSB0byBtYWtlIGV2ZXJ5dGhp
bmcgZWxzZSB3b3JrLCB3ZSBwcm9iYWJseSBuZWVkIHRvIHJlY29uc3RydWN0
IG9yCiAgICAgICMgcHV0IHRoZSBlbnRpcmUgbG9naWMgaGVyZSEKICAgIH0K
CiAgICAjIG1vdmUgYWxvbmcKICAgICRuZXh0dWlkID0gJGhpZ2hlcnVpZDsK
ICB9CgogICMgbW92ZSBiYWNrIHRvIHRoZSBzdGFydCBvZiB0aGlzIGZpbGUg
YW5kIHJlLXdyaXRlIHRoZSBoZWFkZXIKICBzZWVrKCR0YXJnZXQsICR0YXJn
ZXRwb3MsIDApOwogICRTZWxmLT53cml0ZV9oZWFkZXIoJHRhcmdldCwgJGhl
YWRlcik7Cn0KCnN1YiBoZWFkZXJfZHVtcCB7CiAgbXkgJFNlbGYgPSBzaGlm
dDsKICBteSAkaGVhZGVyID0gc2hpZnQgfHwgJFNlbGYtPmhlYWRlcigpOwog
IG15IEBkYXRhOwogIGZvcmVhY2ggbXkgJGZpZWxkIChAeyRTZWxmLT57Zm9y
bWF0fXtIZWFkZXJGaWVsZHN9fSkgewogICAgcHVzaCBAZGF0YSwgJGhlYWRl
ci0+eyRmaWVsZC0+WzBdfTsKICB9CiAgcmV0dXJuIGpvaW4oJyAnLCBAZGF0
YSk7Cn0KCnN1YiBoZWFkZXJfdW5kdW1wIHsKICBteSAkU2VsZiA9IHNoaWZ0
OwogIG15ICRzdHJpbmcgPSBzaGlmdDsKICBteSBAaXRlbXMgPSBzcGxpdCAn
ICcsICRzdHJpbmc7CiAgbXkgJWhlYWRlcjsKICBmb3JlYWNoIG15ICRmaWVs
ZCAoQHskU2VsZi0+e2Zvcm1hdH17SGVhZGVyRmllbGRzfX0pIHsKICAgICRo
ZWFkZXJ7JGZpZWxkLT5bMF19ID0gc2hpZnQgQGl0ZW1zOwogIH0KICByZXR1
cm4gXCVoZWFkZXI7Cn0KCnN1YiByZWNvcmRfZHVtcCB7CiAgbXkgJFNlbGYg
PSBzaGlmdDsKICBteSAkcmVjb3JkID0gc2hpZnQgfHwgJFNlbGYtPnJlY29y
ZCgpOwogIG15IEBkYXRhOwogIGZvcmVhY2ggbXkgJGZpZWxkIChAeyRTZWxm
LT57Zm9ybWF0fXtSZWNvcmRGaWVsZHN9fSkgewogICAgcHVzaCBAZGF0YSwg
JHJlY29yZC0+eyRmaWVsZC0+WzBdfTsKICB9CiAgcmV0dXJuIGpvaW4oJyAn
LCBAZGF0YSk7Cn0KCnN1YiByZWNvcmRfdW5kdW1wIHsKICBteSAkU2VsZiA9
IHNoaWZ0OwogIG15ICRzdHJpbmcgPSBzaGlmdDsKICBteSBAaXRlbXMgPSBz
cGxpdCAnICcsICRzdHJpbmc7CiAgbXkgJXJlY29yZDsKICBmb3JlYWNoIG15
ICRmaWVsZCAoQHskU2VsZi0+e2Zvcm1hdH17UmVjb3JkRmllbGRzfX0pIHsK
ICAgICRyZWNvcmR7JGZpZWxkLT5bMF19ID0gc2hpZnQgQGl0ZW1zOwogIH0K
ICByZXR1cm4gXCVyZWNvcmQ7Cn0KCiMgU09NRVdIQVQgSU5URVJOQUwgTUVU
SE9EUwoKc3ViIG1ha2VfaGVhZGVyIHsKICBteSAkU2VsZiA9IHNoaWZ0Owog
IG15ICRkcyA9IHNoaWZ0OwoKICBteSBAbGlzdDsKICBteSAkZmllbGRzID0g
JFNlbGYtPntmb3JtYXR9e0hlYWRlckZpZWxkc307CiAgZm9yZWFjaCBteSAk
biAoMC4uJCMkZmllbGRzKSB7CiAgICAkbGlzdFskbl0gPSAkZHMtPnskZmll
bGRzLT5bJG5dWzBdfTsKICB9CgogIHJldHVybiBwYWNrKCRTZWxmLT57Zm9y
bWF0fXtIZWFkZXJQYWNrfSwgQGxpc3QpOwp9CgpzdWIgbWFrZV9yZWNvcmQg
ewogIG15ICRTZWxmID0gc2hpZnQ7CiAgbXkgJGRzID0gc2hpZnQ7CgogIG15
IEBsaXN0OwogIG15ICRmaWVsZHMgPSAkU2VsZi0+e2Zvcm1hdH17UmVjb3Jk
RmllbGRzfTsKICBmb3JlYWNoIG15ICRuICgwLi4kIyRmaWVsZHMpIHsKICAg
ICRsaXN0WyRuXSA9ICRkcy0+eyRmaWVsZHMtPlskbl1bMF19OwogIH0KCiAg
cmV0dXJuIHBhY2soJFNlbGYtPntmb3JtYXR9e1JlY29yZFBhY2t9LCBAbGlz
dCk7Cn0KCnN1YiBwYXJzZV9oZWFkZXIgewogIG15ICRTZWxmID0gc2hpZnQ7
CiAgbXkgJGJ1ZiA9IHNoaWZ0OwoKICBteSBAZGF0YSA9IHVucGFjaygkU2Vs
Zi0+e2Zvcm1hdH17SGVhZGVyUGFja30sICRidWYpOwogIG15ICVyZXM7CiAg
bXkgJGZpZWxkcyA9ICRTZWxmLT57Zm9ybWF0fXtIZWFkZXJGaWVsZHN9Owog
IGZvcmVhY2ggbXkgJG4gKDAuLiQjJGZpZWxkcykgewogICAgJHJlc3skZmll
bGRzLT5bJG5dWzBdfSA9ICRkYXRhWyRuXTsKICB9CgogIHJldHVybiBcJXJl
czsKfQoKc3ViIHBhcnNlX3JlY29yZCB7CiAgbXkgJFNlbGYgPSBzaGlmdDsK
ICBteSAkYnVmID0gc2hpZnQ7CgogIG15IEBkYXRhID0gdW5wYWNrKCRTZWxm
LT57Zm9ybWF0fXtSZWNvcmRQYWNrfSwgJGJ1Zik7CiAgbXkgJXJlczsKICBt
eSAkZmllbGRzID0gJFNlbGYtPntmb3JtYXR9e1JlY29yZEZpZWxkc307CiAg
Zm9yZWFjaCBteSAkbiAoMC4uJCMkZmllbGRzKSB7CiAgICAkcmVzeyRmaWVs
ZHMtPlskbl1bMF19ID0gJGRhdGFbJG5dOwogIH0KCiAgcmV0dXJuIFwlcmVz
Owp9Cgo=

--_----------=_119245230242350
Content-Disposition: attachment; filename="index_uids.pl"
Content-Transfer-Encoding: base64
Content-Type: application/x-perl; name="index_uids.pl"
MIME-Version: 1.0
X-Mailer: MessagingEngine.com Webmail Interface
Date: Mon, 15 Oct 2007 12:45:02 UT

IyEvdXNyL2Jpbi9wZXJsCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVz
ZSBHZXRvcHQ6OlN0ZDsKCm15ICVPcHRzOwpnZXRvcHRzKCdkJywgXCVPcHRz
KTsKCm15ICRmaWxlID0gc2hpZnQgfHwgZGllICJVc2FnZTogJDAgPGluZGV4
ZmlsZT5cbiI7CnVzZSBDeXJ1czo6SW5kZXhGaWxlOwpteSAkaW5kZXggPSBD
eXJ1czo6SW5kZXhGaWxlLT5uZXdfZmlsZSgkZmlsZSk7Cm15ICRoZWFkZXIg
PSAkaW5kZXgtPmhlYWRlcigpOwppZiAoJE9wdHN7ZH0pIHsKICBwcmludCAk
aW5kZXgtPmhlYWRlcl9kdW1wKCkgLiAiXG4iOwp9IGVsc2UgewogIHByaW50
ICJWOiRoZWFkZXItPntNaW5vclZlcnNpb259IEU6JGhlYWRlci0+e0V4aXN0
c30gVTokaGVhZGVyLT57TGFzdFVpZH1cbiI7Cn0Kd2hpbGUgKG15ICRyID0g
JGluZGV4LT5uZXh0X3JlY29yZCkgewogIGlmICgkT3B0c3tkfSkgewogICAg
cHJpbnQgJGluZGV4LT5yZWNvcmRfZHVtcCgpIC4gIlxuIjsKICB9CiAgZWxz
aWYgKCRoZWFkZXItPntNaW5vclZlcnNpb259ID09IDkpIHsKICAgIHByaW50
ICIkci0+e1VpZH0gJHItPntNZXNzYWdlVXVpZH0gJHItPntTaXplfVxuIjsK
ICB9CiAgZWxzZSB7CiAgICBwcmludCAiJHItPntVaWR9ICRyLT57TWVzc2Fn
ZUd1aWR9ICRyLT57U2l6ZX1cbiI7CiAgfQp9Cg==

--_----------=_119245230242350
Content-Disposition: attachment; filename="guidhelper.pl"
Content-Transfer-Encoding: base64
Content-Type: application/x-perl; name="guidhelper.pl"
MIME-Version: 1.0
X-Mailer: MessagingEngine.com Webmail Interface
Date: Mon, 15 Oct 2007 12:45:02 UT

IyEvdXNyL2Jpbi9wZXJsIC13Cgp1c2Ugc3RyaWN0Owp1c2UgQ3lydXM6Oklu
ZGV4RmlsZTsKdXNlIElPOjpGaWxlOwp1c2UgRGlnZXN0OjpTSEExOwp1c2Ug
R2V0b3B0OjpTdGQ7CnVzZSBNRTo6SW1hcFNsb3Q7CgpteSAlT3B0czsKZ2V0
b3B0cygnZ0cnLCBcJU9wdHMpOwoKbXkgJGRpZ2VzdCA9IERpZ2VzdDo6U0hB
MS0+bmV3KCk7CgpteSAkU2xvdE5hbWUgPSBzaGlmdDsKbXkgJFNsb3QgPSBN
RTo6SW1hcFNsb3QtPm5ldygkU2xvdE5hbWUpOwoKdW5sZXNzICgoJE9wdHN7
Z30gb3IgJE9wdHN7R30pIGFuZCAkU2xvdCkgewogIHByaW50ICJOZWVkIC1n
IG9yIC1HIGFuZCBhIHNsb3RcbiI7CiAgZXhpdCAxOwp9CgpteSAkZm9sZGVy
cyA9ICRTbG90LT5BbGxNYWlsYm94ZXMoKTsKbXkgJGNvbmYgPSAkU2xvdC0+
SW1hcGRDb25mKCk7CgpteSAoJGxvZ2luLCRwYXNzLCR1aWQsJGdpZCkgPSBn
ZXRwd25hbSgnY3lydXMnKTsKCm15IEB1c2VycyA9IHNvcnQga2V5cyAlJGZv
bGRlcnM7Cm15ICRjb3VudCA9IEB1c2VyczsKbXkgJG47CmZvcmVhY2ggbXkg
JHVzZXIgKEB1c2VycykgewogICRuKys7CiAgJDAgPSAiZ3VpZGhlbHBlcjog
JFNsb3ROYW1lICR1c2VyICgkbi8kY291bnQpIjsKICBwcmludCAiRG9pbmcg
dXNlciAkdXNlciAoJG4vJGNvdW50KVxuIjsKICBmb3JlYWNoIG15ICRtYWls
Ym94IChAeyRmb2xkZXJzLT57JHVzZXJ9fSkgewogICAgbXkgJG1ldGFkaXIg
PSAkY29uZi0+R2V0VXNlckxvY2F0aW9uKCdtZXRhJywgJHVzZXIsICdkZWZh
dWx0JywgJG1haWxib3gpOwogICAgbXkgJGRhdGFkaXIgPSAkY29uZi0+R2V0
VXNlckxvY2F0aW9uKCdzcG9vbCcsICR1c2VyLCAnZGVmYXVsdCcsICRtYWls
Ym94KTsKICAgIHVwZGF0ZV9pbmRleCgkbWV0YWRpciwgJGRhdGFkaXIsICRP
cHRze0d9KTsKICB9Cn0KCnN1YiB1cGRhdGVfaW5kZXggewogIG15ICRtZXRh
ZGlyID0gc2hpZnQ7CiAgbXkgJGRhdGFkaXIgPSBzaGlmdDsKICBteSAkZG9f
c2hhMSA9IHNoaWZ0OwoKICBteSAkZmlsZSA9ICIkbWV0YWRpci9jeXJ1cy5p
bmRleCI7CiAgbXkgJGVmaWxlID0gIiRtZXRhZGlyL2N5cnVzLmV4cHVuZ2Ui
OwoKICBteSAlc2hhMTsKICBpZiAoJGRvX3NoYTEpIHsKICAgIGZvcmVhY2gg
bXkgJGZuYW1lICgkZmlsZSwgJGVmaWxlKSB7CiAgICAgIG5leHQgdW5sZXNz
IC1lICRmbmFtZTsKICAgICAgbXkgJGluZGV4ID0gQ3lydXM6OkluZGV4Rmls
ZS0+bmV3X2ZpbGUoJGZuYW1lKSB8fCBkaWUgIkNhbid0IG9wZW4gZmlsZSAk
Zm5hbWVcbiI7CiAgICAKICAgICAgd2hpbGUgKG15ICRyZWNvcmQgPSAkaW5k
ZXgtPm5leHRfcmVjb3JkKCkpIHsKICAgICAgICB1bmxlc3MgKCRyZWNvcmQt
PntNZXNzYWdlR3VpZH0gYW5kIHN1YnN0cigkcmVjb3JkLT57TWVzc2FnZUd1
aWR9LCAyNSkgPX4gbS9bXjBdLykgewogICAgICAgICAgJHNoYTF7JHJlY29y
ZC0+e1VpZH19ID0gZ2V0X3NoYTEoIiRkYXRhZGlyLyRyZWNvcmQtPntVaWR9
LiIpOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH0KICAKICAjIGFsd2F5
cyBsb2NrIHRoZSBpbmRleCBmaWxlCiAgbXkgJGxvY2tlZF9pbmRleCA9IEN5
cnVzOjpJbmRleEZpbGUtPm5ld19maWxlKCRmaWxlLCAxKSB8fCBkaWUgIkNh
bid0IGxvY2sgaW5kZXggZmlsZSAkZmlsZSI7CiAgbXkgJG5ld19pbmRleCA9
IElPOjpGaWxlLT5uZXcoIj4gJGZpbGUuTkVXIik7CiAgbXkgQHRvZG8gPSAo
WyRmaWxlLCAkbG9ja2VkX2luZGV4LCAkbmV3X2luZGV4XSk7CgogICMgYWRk
IHRoZSBleHB1bmdlIGZpbGUgaWYgaXQgZXhpc3RzCiAgaWYgKC1lICRlZmls
ZSkgewogICAgbXkgJGxvY2tlZF9leHB1bmdlID0gQ3lydXM6OkluZGV4Rmls
ZS0+bmV3X2ZpbGUoJGVmaWxlLCAxKSB8fCBkaWUgIkNhbid0IGxvY2sgZXhw
dW5nZSBmaWxlICRlZmlsZSI7CiAgICBteSAkbmV3X2V4cHVuZ2UgPSBJTzo6
RmlsZS0+bmV3KCI+ICRlZmlsZS5ORVciKTsKICAgIHB1c2ggQHRvZG8sIFsk
ZWZpbGUsICRsb2NrZWRfZXhwdW5nZSwgJG5ld19leHB1bmdlXTsKICB9Cgog
ICMgcHJvY2VzcyBlYWNoIGluZGV4IGZpbGUgaW4gb3JkZXIKICBmb3JlYWNo
IG15ICRpdGVtIChAdG9kbykgewogICAgbXkgJHNvdXJjZSA9ICRpdGVtLT5b
MV07CiAgICBteSAkZGVzdCA9ICRpdGVtLT5bMl07CiAgICAkc291cmNlLT5z
dHJlYW1fY29weSgkZGVzdCwgc3ViIHsKICAgICAgbXkgJGhlYWRlciA9IHNo
aWZ0OwogICAgICBteSAkaW5kZXggPSBzaGlmdDsKICAgICAgaWYgKCRkb19z
aGExKSB7CiAgICAgICAgIyBkb24ndCBvdmVyd3JpdGUgaXQgaWYgd2UgZGlk
bid0IG5lZWQgdG8gY2FsY3VsYXRlIGEgbmV3IG9uZQogICAgICAgIGlmICgk
c2hhMXskaW5kZXgtPntVaWR9fSkgewogICAgICAgICAgJGluZGV4LT57TWVz
c2FnZUd1aWR9ID0gJHNoYTF7JGluZGV4LT57VWlkfX07CiAgICAgICAgfQog
ICAgICB9CiAgICAgIGVsc2UgewogICAgICAgICMgYWx3YXlzIGJsYW5rIGl0
LCBtaWdodCBhcyB3ZWxsCiAgICAgICAgJGluZGV4LT57TWVzc2FnZUd1aWR9
ID0gJzAnIHggNDA7CiAgICAgIH0KICAgICAgcmV0dXJuIDE7CiAgICB9LCB2
ZXJzaW9uID0+IDEwKTsKICB9CgogIGZvcmVhY2ggbXkgJGl0ZW0gKHJldmVy
c2UgQHRvZG8pIHsgIyB1bmxvY2sgYmFja3dhcmRzCiAgICAkaXRlbS0+WzJd
LT5jbG9zZSgpOwogICAgY2hvd24oJHVpZCwgJGdpZCwgIiRpdGVtLT5bMF0u
TkVXIik7CiAgICByZW5hbWUoIiRpdGVtLT5bMF0uTkVXIiwgJGl0ZW0tPlsw
XSk7CiAgICBAJGl0ZW0gPSAoKTsgIyBjYXVzZSBjbGVhbnVwCiAgfQp9Cgpz
dWIgZ2V0X3NoYTEgewogIG15ICRmaWxlID0gc2hpZnQ7CiAgbXkgJGZoID0g
SU86OkZpbGUtPm5ldygkZmlsZSk7CiAgJGRpZ2VzdC0+cmVzZXQoKTsKICAk
ZGlnZXN0LT5hZGRmaWxlKCRmaCk7CiAgcmV0dXJuICRkaWdlc3QtPmhleGRp
Z2VzdCgpOwp9Cg==

--_----------=_119245230242350--

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic