Re: Re: [Fwd: Motorola A780 phone]

"Alexandre d'Alton" <multisync-jojFES6RfZNxtahE/[email protected]> Tue, 25 Oct 2005 09:41:41 +0200 (CEST)
Newsgroups gmane.comp.gnome.apps.multisync.devel
Message-ID <[email protected]>
------=_20051025094141_52079
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

>> If now I want to integrate my work into multisync, I would like your
>> comments on how to do that.
>>      1) Add a switch and config in the syncml plugin in order to add t=
he
>> USB device as an alternate data transport than HTTP.
>> OR
>>      2) Keep the "proxy" approach of the external program that
>> translates
>> HTTP <-> USB binary data.
>>
>> My prefered way would be the 1)
>>
>> Please give me your comments and ask for more information if necessary=
.
>
> It seems to be the 1) the right way.
>
> Alexandre, could I ask you to send me your standalone program if suitab=
le
> for
> testing and/or synchronization?

I send the source-code of the syncml_proxy program that redirects
USB<->HTTP. It only supports one sync per run.

It is not that stable yet. Some values are hard-coded, It's not pretty
code but as I think we'll have to integrate it to multisync, it's not a
problem yet.

Last time I tried it, authentication were not working (don't remember the
password sent by the phone), so I just forced it to be true in Multisync.

Let me know If you're able to make it woks.
Thanks,

Alex.

>
> Thanks,
>
> Peter
> (peter-92d/[email protected])
>
>
>
>
> -------------------------------------------------------
> This SF.Net email is sponsored by:
> Power Architecture Resource Center: Free content, downloads, discussion=
s,
> and more. http://solutions.newsforge.com/ibmarch.tmpl
> _______________________________________________
> Multisync-devel mailing list
> Multisync-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
> https://lists.sourceforge.net/lists/listinfo/multisync-devel
>





------=_20051025094141_52079
Content-Type: application/octet-stream; name="syncml_proxy.c"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="syncml_proxy.c"

I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHVuaXN0ZC5o
PgojaW5jbHVkZSA8c3RkbGliLmg+CiNpbmNsdWRlIDx0aW1lLmg+CiNpbmNsdWRlIDxmY250bC5o
PgojaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CiNpbmNsdWRl
IDxzeXMvc2VsZWN0Lmg+CiNpbmNsdWRlIDxzeXMvdGltZS5oPgojaW5jbHVkZSA8bmV0aW5ldC9p
bi5oPgojaW5jbHVkZSA8bmV0ZGIuaD4KI2luY2x1ZGUgPGdsaWIuaD4KCnR5cGVkZWYgc3RydWN0
IGhlYWRlcl9fIHsKCXVuc2lnbmVkIGNoYXIgY21kOwoJdW5zaWduZWQgc2hvcnQgbGVuOwp9IGhl
YWRlcl90OwoKI2RlZmluZSBTWU5DTUxfQ09OTl9USU1FT1VUIDEwMAoKI2RlZmluZSBHRVRfREVW
SU5GICJQT1NUIGh0dHA6Ly8vU3luYyBIVFRQLzEuMVxuIiAgICBcCgkiY29udGVudC10eXBlOiBh
cHBsaWNhdGlvbi92bmQuc3luY21sK3htbFxuIiBcCgkiQWNjZXB0OiBhcHBsaWNhdGlvbi92bmQu
c3luY21sK3htbFxuIiBcCgkiY29udGVudC1sZW5ndGg6IDk2OVxuIiBcCgkiPCFET0NUWVBFIFN5
bmNNTCBQVUJMSUMgXCItLy9TWU5DTUwvL0RURCBTeW5jTUwgMS4wLy9FTlwiIFwiaHR0cDovL3d3
dy5zeW5jbWwub3JnL2RvY3Mvc3luY21sX3JlcHJlc2VudF92MTBfMjAwMDEyMDcuZHRkXCI+IiBc
CgkiPFN5bmNNTCB4bWxucz1cInN5bmNtbDpTWU5DTUwxLjBcIj4iIFwKCSI8U3luY0hkcj48VmVy
RFREPjEuMDwvVmVyRFREPjxWZXJQcm90bz5TeW5jTUwvMS4wPC9WZXJQcm90bz48U2Vzc2lvbklE
PjAzMjkxMjMxNDA8L1Nlc3Npb25JRD48TXNnSUQ+MTwvTXNnSUQ+PFRhcmdldD4iIFwKCSI8TG9j
VVJJPmh0dHA6Ly8vU3luYzwvTG9jVVJJPjwvVGFyZ2V0PjxTb3VyY2U+PExvY1VSST4zNTQzNTgw
MDA4NDAwOTQ8L0xvY1VSST48TG9jTmFtZT5tb3RvPC9Mb2NOYW1lPjwvU291cmNlPjxNZXRhPiIg
XAoJIjxNYXhNc2dTaXplIHhtbG5zPVwic3luY21sOm1ldGluZlwiPjEwMDAwPC9NYXhNc2dTaXpl
PjwvTWV0YT48Q3JlZD48TWV0YT48VHlwZSB4bWxucz1cInN5bmNtbDptZXRpbmZcIj5zeW5jbWw6
YXV0aC1iYXNpYzwvVHlwZT4iIFwKCSI8Rm9ybWF0IHhtbG5zPVwic3luY21sOm1ldGluZlwiPmI2
NDwvRm9ybWF0PjwvTWV0YT48RGF0YT5iVzkwYnpwdGIzUnY8L0RhdGE+PC9DcmVkPjwvU3luY0hk
cj4iIFwKCSI8U3luY0JvZHk+PEdldD48Q21kSUQ+MTwvQ21kSUQ+PEl0ZW0+PFRhcmdldD48TG9j
VVJJPi4vZGV2aW5mMTA8L0xvY1VSST48L1RhcmdldD48L0l0ZW0+PC9HZXQ+PEZpbmFsPjwvRmlu
YWw+PC9TeW5jQm9keT48L1N5bmNNTD4iCgp2b2lkIHByaW50X2RhdGEodW5zaWduZWQgY2hhciAq
IGRhdGEsIGludCBsZW4pIHsKCWludCBpID0gMDsKCWludCBqOwoJZm9yIChpPTA7IGk8bGVuOyBp
KyspIHsKCQlpZiAoKCsraiAlIDE2KSA9PSAwKSBwcmludGYoIlxuIik7CgkJaWYoaXNwcmludChk
YXRhW2ldKSB8fCBpc3NwYWNlKGRhdGFbaV0pKSB7CgkJCXByaW50ZigiJTAyWCglYykgIiwgZGF0
YVtpXSwgZGF0YVtpXSk7CgkJfSBlbHNlIHsKCQkJcHJpbnRmKCIlMDJYKC4pICIsIGRhdGFbaV0p
OwoJCX0KCX0KCXByaW50ZigiXG4iKTsKfQoKY2hhciAqIHJlYWRfbGluZShGSUxFICogZikgewoJ
Y2hhciBidWZbMjU1XTsKCWludCBpID0gMDsKCWNoYXIgYzsKCgl3aGlsZSAoKGMgPSBmZ2V0Yyhm
KSkgIT0gMHgwYSkgewoJCWJ1ZltpKytdID0gYzsKCX0KCWJ1ZltpKytdID0gMHgwYTsKCWJ1Zltp
KytdID0gMDsKCXJldHVybiAoY2hhciAqICkgc3RyZHVwKGJ1Zik7Cn0KCmludCByZWFkX2hlYWRl
cihGSUxFICogZiwgaGVhZGVyX3QgKiBoZHIpIHsKCXVuc2lnbmVkIGNoYXIgdG90b1szXTsKCWZy
ZWFkKHRvdG8sIDMsIDEsIGYpOwoJaGRyLT5jbWQgPSB0b3RvWzBdOwoJaGRyLT5sZW4gPSB0b3Rv
WzFdIDw8IDggfCB0b3RvWzJdOwoJcmV0dXJuIGhkci0+bGVuOwp9CgppbnQgcmVhZF9kYXRhKEZJ
TEUgKiBmLCBpbnQgbGVuLCBjaGFyICogZGF0YSkgewoJcmV0dXJuIGZyZWFkKGRhdGEsIDEsIGxl
biwgZik7Cn0KCmludCB3cml0ZV9kYXRhKEZJTEUgKiBmLCBpbnQgbGVuLCBjaGFyICogZGF0YSkg
ewoJcmV0dXJuIGZ3cml0ZShkYXRhLCAxLCBsZW4sIGYpOwp9Cgp2b2lkIHdyaXRlX2xpbmUoRklM
RSAqIGYsIGNoYXIgKiBkYXRhKSB7Cglmd3JpdGUoZGF0YSwgMSwgc3RybGVuKGRhdGEpLCBmKTsK
fQoKI2RlZmluZSBXQlhNTF9TVVBQT1JUX1NZTkNNTAojaW5jbHVkZSA8d2J4bWwuaD4KCmNoYXIg
KiAgd2J4bWxfdG9vbChjaGFyICogZGF0YSwgaW50IGxlbil7CglXQl9VVElOWSAqaW4gPSBkYXRh
LCAqeG1sID0gTlVMTDsKCVdCX0xPTkcgaW5zaXplID0gbGVuOwoJV0JYTUxDb252V0JYTUwyWE1M
UGFyYW1zIHBhcmFtcyA9IHtXQlhNTF9FTkNPREVSX1hNTF9HRU5fSU5ERU5ULAoJCQkJCSAgIFdC
WE1MX0xBTkdfU1lOQ01MX1NZTkNNTDEwLCAyLCBUUlVFIH07CglpZiAod2J4bWxfY29udl93Ynht
bDJ4bWwoaW4sIGluc2l6ZSwgJnhtbCwgJnBhcmFtcykgPT0gV0JYTUxfT0spIHsKCQlkYXRhID0g
KFdCX1VUSU5ZICopZ19zdHJkdXAoeG1sKTsKCQl3YnhtbF9mcmVlKHhtbCk7CgkJcHJpbnRmKGRh
dGEpOwoJfSBlbHNlIHsgCgkJcmV0dXJuIE5VTEw7Cgl9CglyZXR1cm4gZGF0YTsKfQoKCmNoYXIg
KiBnZXRfZnVsbF9kYXRhKEZJTEUgKiBkZXYsIGludCAqcmV0X2xlbikKewoKCWhlYWRlcl90IGhk
cjsKCWNoYXIgY29udGludWVfY21kW10gPSB7IDB4OTAsIDB4MDAsIDB4MDN9OwoJY2hhciAqIHRt
cCwgKiBjdXJyOwoJaW50IGRhdGFfbGVuOwoJaW50IGxlbjsKCglsZW4gPSByZWFkX2hlYWRlcihk
ZXYsICZoZHIpOwoJCglwcmludGYoIkdvdCBoZWFkZXIgbGVuICVkIHR5cGUgJTAyeFxuIiwgaGRy
LmxlbiwgaGRyLmNtZCk7CgoJaWYgKGhkci5sZW4gPT0gMyAmJiBoZHIuY21kID09IDB4ODEpCgkJ
cmV0dXJuIE5VTEw7CgoJZGF0YV9sZW4gPSBoZHIubGVuIC0gMzsKCgljdXJyID0gdG1wID0gbWFs
bG9jKGRhdGFfbGVuKTsKCglyZWFkX2RhdGEoZGV2LCBoZHIubGVuIC0gMywgdG1wKTsKCWN1cnIg
Kz0gaGRyLmxlbiAtIDM7CgoJLy9wcmludF9kYXRhKHRtcCwgaGRyLmxlbiAtIDMpOwoKCXdoaWxl
ICghKGhkci5jbWQmMHg4MCkpIHsKCQljaGFyIGR1bW15WzNdOwoKCQl3cml0ZV9kYXRhKGRldiwg
MywgY29udGludWVfY21kKTsKCQkKCQlsZW4gPSByZWFkX2hlYWRlcihkZXYsICZoZHIpOwoJCQoJ
CXByaW50ZigiR290IGhlYWRlciBsZW4gJWQgdHlwZSAlMDJ4XG4iLCBoZHIubGVuLCBoZHIuY21k
KTsKCQlkYXRhX2xlbiArPSBoZHIubGVuIC0gMzsKCQl0bXAgPSByZWFsbG9jKHRtcCwgZGF0YV9s
ZW4pOwoJCS8qIGR1bW15IHJlYWQuLi4gKi8KCQkvL2xlbiA9IHJlYWRfaGVhZGVyKGRldiwgJmhk
cik7CgkJcmVhZF9kYXRhKGRldiwgMywgZHVtbXkpOwoJCXByaW50ZigiRHVtbXkgcmVhZCBnaXZl
cyA6ICUwMnggJTAyeCAlMDJ4XG4iLCBkdW1teVswXSwgZHVtbXlbMV0sIGR1bW15WzJdKTsKCQly
ZWFkX2RhdGEoZGV2LCBoZHIubGVuIC0gNiwgY3Vycik7CgkJY3VyciArPSBoZHIubGVuIC0gNjsK
CX0KCSpyZXRfbGVuID0gZGF0YV9sZW47IAoJcmV0dXJuIHRtcDsKfQoKLy8gTGlrZSByZWFkKCkg
YnV0IHdpdGggYSB0aW1lb3V0IG9mIHRpbWVvdXQgc2Vjb25kcwppbnQgY29ubl9yZWFkKGludCBm
ZCwgY2hhciAqZGF0YSwgaW50IGxlbiwgaW50IHRpbWVvdXQpIHsKCXN0cnVjdCB0aW1ldmFsIHR2
OwoJZmRfc2V0IHJzZXQsIHdzZXQsIHhzZXQ7CglpbnQgbGVubGVmdCA9IGxlbjsKCglpZiAoZmQg
PCAwKQoJCXJldHVybigwKTsKCXdoaWxlIChsZW5sZWZ0ID4gMCkgewoJCUZEX1pFUk8oJnJzZXQp
OwoJCUZEX1pFUk8oJndzZXQpOwoJCUZEX1pFUk8oJnhzZXQpOwoJCUZEX1NFVChmZCwgJnJzZXQp
OwoJCXR2LnR2X3NlYyA9IHRpbWVvdXQ7CgkJdHYudHZfdXNlYyA9IDA7CgkJaWYgKHNlbGVjdChm
ZCsxLCAgJnJzZXQsICZ3c2V0LCAmeHNldCwgJnR2KSkgewoJCQlpbnQgcmV0OwoJCQlyZXQgPSBy
ZWFkKGZkLCBkYXRhK2xlbi1sZW5sZWZ0LCBsZW5sZWZ0KTsgCgkJCWlmIChyZXQgPiAwKSB7CgkJ
CQlsZW5sZWZ0IC09IHJldDsKCQkJfSBlbHNlIHsKCQkJCXJldHVybihsZW4tbGVubGVmdCk7CgkJ
CX0KCQl9IGVsc2UgewoJCQlyZXR1cm4oLTEpOwoJCX0KCX0KCXJldHVybihsZW4pOwp9CgppbnQg
Y29ubl93cml0ZShpbnQgZmQsIGNoYXIgKmRhdGEsIGludCBsZW4sIGludCB0aW1lb3V0KSB7Cglz
dHJ1Y3QgdGltZXZhbCB0djsKCWZkX3NldCByc2V0LCB3c2V0LCB4c2V0OwoJaW50IGxlbmxlZnQg
PSBsZW47CgoJaWYgKGZkIDwgMCkKCQlyZXR1cm4oMCk7Cgl3aGlsZSAobGVubGVmdCA+IDApIHsK
CQlGRF9aRVJPKCZyc2V0KTsKCQlGRF9aRVJPKCZ3c2V0KTsKCQlGRF9aRVJPKCZ4c2V0KTsKCQlG
RF9TRVQoZmQsICZ3c2V0KTsKCQl0di50dl9zZWMgPSB0aW1lb3V0OwoJCXR2LnR2X3VzZWMgPSAw
OwoJCWlmIChzZWxlY3QoZmQrMSwgICZyc2V0LCAmd3NldCwgJnhzZXQsICZ0dikpIHsKCQkJaW50
IHJldDsKCQkJcmV0ID0gd3JpdGUoZmQsIGRhdGErbGVuLWxlbmxlZnQsIGxlbmxlZnQpOyAKCQkJ
aWYgKHJldCA+IDApIHsKCQkJCWxlbmxlZnQgLT0gcmV0OwoJCQl9IGVsc2UgewoJCQkJcmV0dXJu
KHJldCk7CgkJCX0KCQl9IGVsc2UgewoJCQlyZXR1cm4oLTEpOwoJCX0KCX0KCXJldHVybihsZW4p
Owp9CgovLyBSZWNlaXZlIG9uZSBsaW5lLCB3aXRoIHRpbWVvdXQKaW50IGNvbm5fcmVjdl9saW5l
KGludCBmZCwgY2hhciAqbGluZSwgaW50IGxlbikgewoJaW50IGkgPSAwOwoJaW50IHJlcyA9IC0x
OwoJCglpZiAobGVuID09IDApCgkJcmV0dXJuKDApOwoJaSA9IC0xOwoJZG8gewoJCWkrKzsKCQly
ZXMgPSBjb25uX3JlYWQoZmQsIGxpbmUraSwgMSwgCgkJCQlTWU5DTUxfQ09OTl9USU1FT1VUKTsK
CX0gd2hpbGUgKHJlcyA9PSAxICYmIGkgPCBsZW4gJiYgbGluZVtpXSAhPSAnXG4nKTsKCWxpbmVb
aV0gPSAwOwoJaWYgKGkgPiAwICYmIGxpbmVbaS0xXSA9PSAnXHInKQoJCWxpbmVbLS1pXSA9IDA7
CglyZXR1cm4oaSk7Cn0KCmludCBjb25uX3JlY3YoaW50IGZkLCBjaGFyICpkYXRhLCBpbnQgbGVu
KSB7CglpbnQgcmVzID0gLTE7CglpZiAobGVuID09IDApCgkJcmV0dXJuKDApOwoJcmVzID0gY29u
bl9yZWFkKGZkLCBkYXRhLCBsZW4sIFNZTkNNTF9DT05OX1RJTUVPVVQpOwoJcmV0dXJuKHJlcyk7
Cn0KCmludCBjb25uX3NlbmQoaW50IGZkLCBjaGFyICpkYXRhLCBpbnQgbGVuKSB7CglpbnQgcmVz
ID0gMDsKCWlmIChsZW4gPT0gMCkKCQlyZXR1cm4oMCk7CglyZXMgPSBjb25uX3dyaXRlKGZkLCBk
YXRhLCBsZW4sIFNZTkNNTF9DT05OX1RJTUVPVVQpOwoJcmV0dXJuKHJlcyk7Cn0KCmludCBjb25u
X3JlY3ZfYWxsKGludCBmZCwgY2hhciAqKmRhdGEpIHsKCWludCBsZW4gPSAwOwoJKmRhdGEgPSBO
VUxMOwoJaWYgKGZkID49IDApIHsKCQlpbnQgYmxvY2tsZW4gPSAxMDI0LCBvZmZzZXQ9MCwgcmVz
OwoJCSpkYXRhID0gZ19tYWxsb2MoYmxvY2tsZW4pOwoJCXdoaWxlKChyZXMgPSBjb25uX3JlYWQo
ZmQsICpkYXRhK29mZnNldCwgCgkJCQkgICAgICAgYmxvY2tsZW4tb2Zmc2V0LCAKCQkJCSAgICAg
ICBTWU5DTUxfQ09OTl9USU1FT1VUKSkgPT0gYmxvY2tsZW4tb2Zmc2V0KSB7CgkJCWNoYXIgKnRt
cCA9ICpkYXRhOwoJCQlvZmZzZXQgPSBibG9ja2xlbjsKCQkJKmRhdGEgPSBnX21hbGxvYyhibG9j
a2xlbioyKTsKCQkJbWVtY3B5KCpkYXRhLCB0bXAsIGJsb2NrbGVuKTsKCQkJYmxvY2tsZW4gKj0g
MjsKCQkJZ19mcmVlKHRtcCk7CgkJfQoJCWxlbiA9IG9mZnNldDsKCQlpZiAocmVzID49IDApCgkJ
CWxlbiArPSByZXM7Cgl9CglyZXR1cm4obGVuKTsKfQoKCmludCBvcGVuX3NvY2tldChpbnQgcG9y
dCkKewoJaW50IHNvY2sgPSBzb2NrZXQoUEZfSU5FVCwgU09DS19TVFJFQU0sIDApOwoJc3RydWN0
IGhvc3RlbnQgKmhvc3RlbnQ7CglzdHJ1Y3Qgc29ja2FkZHJfaW4gc2VydmFkZHI7CiAgICAKCWhv
c3RlbnQgPSBnZXRob3N0YnluYW1lKCJsb2NhbGhvc3QiKTsKCXNlcnZhZGRyLnNpbl9mYW1pbHkg
PSBBRl9JTkVUOwoJc2VydmFkZHIuc2luX3BvcnQgPSBodG9ucyhwb3J0KTsKCXNlcnZhZGRyLnNp
bl9hZGRyLnNfYWRkciA9IAoJCSgqKCh1bnNpZ25lZCBpbnQqKWhvc3RlbnQtPmhfYWRkcl9saXN0
WzBdKSk7CglpZiAoY29ubmVjdChzb2NrLCAoc3RydWN0IHNvY2thZGRyKikgJnNlcnZhZGRyLCAK
CQkgICAgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpKSB7CgkJcHJpbnRmKCJFcnJvciBjb25u
ZWN0aW5nIHRvIGxvY2FsaG9zdDolZFxuIiwgcG9ydCk7CgkJcmV0dXJuIC0xOwoJfQoJcmV0dXJu
IHNvY2s7Cn0KCgpjaGFyICoKcmVhZF9odHRwX3Jlc3AoaW50IHNvY2tldCwgaW50ICpsZW4pCnsK
CWludCBjb250ZW50bGVuZ3RoID0gLTE7CglpbnQgcmVzID0gMDsKCWludCBleHBlY3QgPSAwOwoJ
Y2hhciAqZGF0YSA9IE5VTEwsICp0bXA7CgljaGFyIGNvbnRlbnR0eXBlWzEwMjRdID0gIiIsIHRy
YW5zZmVyZW5jb2RpbmdbMjU2XSA9ICIiOwoJY2hhciBsaW5lWzEwMjRdOwoJY2hhciBjb29raWVb
MTAyNF0gPSAiIjsKCWdib29sZWFuIGhlYWRlcnMgPSBUUlVFOwoJaW50IGw7CgoJaWYgKChyZXMg
PSBjb25uX3JlY3ZfbGluZShzb2NrZXQsIGxpbmUsIDEwMjQpKSA+PSAwKSB7CgkJY2hhciBodHRw
Y21kWzMyXSA9ICIiOwoJCWNoYXIgZmlsZVsyNTZdOwoJCWNoYXIgaHR0cHZlclszMl07CgkJaW50
IHJzcGNvZGUgPSAwOwoJCWdib29sZWFuIGh0dHByZXE9RkFMU0U7CgkJZ2Jvb2xlYW4gaHR0cHJz
cD1GQUxTRTsKCQlpZiAoc3NjYW5mKGxpbmUsICJIVFRQLyUzMXMgJWQiLCBodHRwdmVyLCAmcnNw
Y29kZSkgPT0gMikgewoJCQlodHRwcnNwPVRSVUU7CgkJfQoJCS8vIEdldCBoZWFkZXJzCgkJd2hp
bGUgKGhlYWRlcnMpIHsKCQkJaWYgKGNvbm5fcmVjdl9saW5lKHNvY2tldCwgbGluZSwgMTAyNCkg
Pj0gMCkgewoJCQkJY2hhciBrZXlbMjU2XSwgdmFsdWVbMTAyNF07CgkJCQlwcmludGYoIiVzXG4i
LCBsaW5lKTsKCQkJCWlmIChzdHJsZW4obGluZSkgPiAwKSB7CgkJCQkJaWYgKHNzY2FuZihsaW5l
LCAiJTI1NVteOl06ICUxMDIzW15cbl0iLCBrZXksIHZhbHVlKSA9PSAyKSB7CgkJCQkJCWlmICgh
Z19zdHJjYXNlY21wKGtleSwgImNvbnRlbnQtbGVuZ3RoIikpCgkJCQkJCQlzc2NhbmYodmFsdWUs
ICIlZCIsICZjb250ZW50bGVuZ3RoKTsKCQkJCQkJaWYgKCFnX3N0cmNhc2VjbXAoa2V5LCAiY29u
dGVudC10eXBlIikpCgkJCQkJCQlzc2NhbmYodmFsdWUsICIlMTAyM1teO10iLCAmY29udGVudHR5
cGUpOwoJCQkJCQlpZiAoIWdfc3RyY2FzZWNtcChrZXksICJleHBlY3QiKSkKCQkJCQkJCXNzY2Fu
Zih2YWx1ZSwgIiVkIiwgJmV4cGVjdCk7CgkJCQkJCWlmICghZ19zdHJjYXNlY21wKGtleSwgInRy
YW5zZmVyLWVuY29kaW5nIikpCgkJCQkJCQlzc2NhbmYodmFsdWUsICIlMjU1W147XSIsICZ0cmFu
c2ZlcmVuY29kaW5nKTsKCQkJCQkJaWYgKCFnX3N0cmNhc2VjbXAoa2V5LCAiY29va2llIikpIHsK
CQkJCQkJCWlmIChzc2NhbmYodmFsdWUsICIlMTAyM1teXG5dIiwgJmNvb2tpZSkgPj0gMSkgewoJ
CQkJCQkJCWNoYXIgKnBvcyA9IGNvb2tpZTsKCQkJCQkJCQl3aGlsZSAocG9zKSB7CgkJCQkJCQkJ
CWNoYXIgbmFtZVsyNTZdPSIiLHZhbHVlWzI1Nl07CgkJCQkJCQkJCXNzY2FuZihwb3MsICIlMjU1
W149O109JTI1NVteO10iLCBuYW1lLCB2YWx1ZSk7CgkJCQkJCQkJCXBvcyA9IHN0cnN0cihwb3Ms
IjsiKTsKCQkJCQkJCQkJd2hpbGUgKHBvcyAmJiAqcG9zICYmICgqcG9zID09ICcgJyB8fCAqcG9z
ID09ICc7JykpCgkJCQkJCQkJCQlwb3MrKzsKCQkJCQkJCQl9IAoJCQkJCQkJfQoJCQkJCQl9CgkJ
CQkJfQoJCQkJfSBlbHNlCgkJCQkJaGVhZGVycyA9IEZBTFNFOwoJCQl9IGVsc2UKCQkJCWhlYWRl
cnMgPSBGQUxTRTsKCQl9Cgl9CglsID0gY29udGVudGxlbmd0aDsKCXByaW50ZigiR28gdG8gcmVj
dl9hbGwgJWRcbiIsIGwpOwoJZGF0YSA9IG1hbGxvYyhjb250ZW50bGVuZ3RoKTsKCXJlcyA9IGNv
bnRlbnRsZW5ndGggPSBjb25uX3JlYWQoc29ja2V0LCBkYXRhLCBsLCBTWU5DTUxfQ09OTl9USU1F
T1VUKTsKCXByaW50ZigiR290ICVkIGJ5dGVzIFxuIiwgcmVzKTsKCgkqbGVuID0gY29udGVudGxl
bmd0aDsKCglyZXR1cm4gZGF0YTsKfQoKCmNoYXIgKiBzZXNzaW9uX2lkOwppbnQKcG9zdF9yZXF1
ZXN0KGludCBmZCwgY2hhciAqIGRhdGEsIGludCBsZW4pCnsKCWNoYXIgKiBidWZmZXI7CglpbnQg
aTsKCWNoYXIqIG9mZnNldDsKCWNoYXIgKiBvOwoJYnVmZmVyID0gbWFsbG9jKDEwMjQgKyBsZW4p
OwoJaSA9IDA7Cgl3aGlsZSAoaSA8IGxlbikgewoJCWlmIChvZmZzZXQgPSBzdHJzdHIoZGF0YSAr
IGksICI/c2Vzc2lvbmlkPSIpKSB7CgkJCXNlc3Npb25faWQgPSBzdHJkdXAob2Zmc2V0KTsKCQkJ
cHJpbnRmKCJHb3Qgc2Vzc2lvbiA6JXNcbiIsIHNlc3Npb25faWQpOwoJCQlicmVhazsKCQl9IGVs
c2UgewoJCQlzZXNzaW9uX2lkID0gTlVMTDsKCQl9CgkJaSArPSBzdHJsZW4oZGF0YStpKSArIDE7
Cgl9CglzcHJpbnRmKGJ1ZmZlciwgCgkJIlBPU1QgaHR0cDovLy9TeW5jJXMgSFRUUC8xLjFcbiIK
CQkiY29udGVudC1sZW5ndGg6ICVkXG4iCgkJImNvbnRlbnQtdHlwZTogYXBwbGljYXRpb24vdm5k
LnN5bmNtbCt3YnhtbFxuXG4iLCBzZXNzaW9uX2lkLCBsZW4pOwoKCWlmKHNlc3Npb25faWQpIHsK
CQlmcmVlKHNlc3Npb25faWQpOwoJCXNlc3Npb25faWQgPSBOVUxMOwoJfQoJaSA9IHN0cmxlbihi
dWZmZXIpOwoJbWVtY3B5KGJ1ZmZlcitpLCBkYXRhLCBsZW4pOwoKCWNvbm5fc2VuZChmZCwgYnVm
ZmVyLCBsZW4raSk7CglmcmVlKGJ1ZmZlcik7CglwcmludGYoIlJlcXVlc3Qgc2VudFxuIik7Cgly
ZXR1cm47CQp9CgojZGVmaW5lIE1BWF9MRU4gMTAxMwoKaW50IApzZW5kX2RhdGFfbXVsdGlwbGUo
RklMRSAqIGZkLCBjaGFyICogZGF0YSwgaW50IGxlbikKewoJaW50IHRvZ28gPSBsZW47CglpbnQg
dG1wX2xlbiA9IE1BWF9MRU47CglpbnQgZm4gPSBmaWxlbm8oZmQpOwoJaGVhZGVyX3QgcGhkcjsK
CgljaGFyIGZ1bGxfaGRyW10gPSB7MHg5MCwgMHgwNCwgMHgwLCAweEMzLCAweDAwLCAweDAwLCAw
eDAsIDB4MCwgMHg0OCwgMHgwLCAweDB9OyAKCWNoYXIgaGRyW10gPSB7MHg5MCwgMHgwMCwgMHgw
MCwgMHg0OCwgMHgwMCwgMHgwMH07CgljaGFyICogcHRyID0gZGF0YTsKCglmdWxsX2hkclsxXSA9
IChNQVhfTEVOICsgMTEpID4+IDggJiAweGZmOwoJZnVsbF9oZHJbMl0gPSAoTUFYX0xFTiArIDEx
KSAmIDB4ZmY7CgoJZnVsbF9oZHJbNl0gPSAobGVuKSA+PiA4ICYgMHhmZjsKCWZ1bGxfaGRyWzdd
ID0gKGxlbikgPj4gOCAmIDB4ZmY7CgoJZnVsbF9oZHJbOV0gPSAoTUFYX0xFTiArIDMpID4+IDgg
JiAweGZmOwoJZnVsbF9oZHJbMTBdID0gKE1BWF9MRU4gKyAzKSAmIDB4ZmY7CgkJCgljb25uX3Nl
bmQoZm4sIGZ1bGxfaGRyLCAxMSk7Cgljb25uX3NlbmQoZm4sIGRhdGEsIE1BWF9MRU4pOwoKCQoJ
dG9nbyAtPSB0bXBfbGVuOwoJcHRyICs9IHRtcF9sZW47CglwcmludGYoIlNlbnQgQ2h1bmsgJWQs
IHRvZ28gJWRcbiIsIHRtcF9sZW4sIHRvZ28pOwoJcmVhZF9oZWFkZXIoZmQsICZwaGRyKTsKCXBy
aW50ZigiR290IGhlYWRlciBsZW4gJWQgdHlwZSAlMDJ4XG4iLCBwaGRyLmxlbiwgcGhkci5jbWQp
OwoKCXdoaWxlICh0b2dvID4gTUFYX0xFTiApIHsKCQloZHJbMV0gPSAoTUFYX0xFTis2KSA+PiA4
ICYgMHhmZjsKCQloZHJbMl0gPSAoTUFYX0xFTis2KSAmIDB4ZmY7CgkJaGRyWzRdID0gKE1BWF9M
RU4rMykgPj4gOCAmIDB4ZmY7CgkJaGRyWzVdID0gKE1BWF9MRU4rMykgJiAweGZmOwoJCWNvbm5f
c2VuZChmbiwgaGRyLCA2KTsKCQljb25uX3NlbmQoZm4sIHB0ciwgdG1wX2xlbik7CgkJcHRyICs9
IHRtcF9sZW47CgkJdG9nbyAtPSB0bXBfbGVuOwoJCXByaW50ZigiU2VudCBDaHVuayAlZCwgdG9n
byAlZCBcbiIsIHRtcF9sZW4sIHRvZ28pOwoJCXJlYWRfaGVhZGVyKGZkLCAmcGhkcik7CgkJcHJp
bnRmKCJHb3QgaGVhZGVyIGxlbiAlZCB0eXBlICUwMnhcbiIsIHBoZHIubGVuLCBwaGRyLmNtZCk7
Cgl9CgloZHJbMF0gPSAweGEwOwoJaGRyWzFdID0gKHRvZ28rNikgPj4gOCAmIDB4ZmY7CgloZHJb
Ml0gPSAodG9nbys2KSAmIDB4ZmY7CgloZHJbM10gPSAweDQ5OwoJaGRyWzRdID0gKHRvZ28rMykg
Pj4gOCAmIDB4ZmY7CgloZHJbNV0gPSAodG9nbyszKSAmIDB4ZmY7Cgljb25uX3NlbmQoZm4sIGhk
ciwgNik7Cgljb25uX3NlbmQoZm4sIHB0ciwgdG9nbyk7CglwcmludGYoIlNlbnQgQ2h1bmsgJWQg
XG4iLCB0b2dvKTsKCXJldHVybiAwOwp9CgoKaW50IApzZW5kX2RhdGFfd2l0aF9oZWFkZXIoRklM
RSAqIGZkLCBjaGFyICogZGF0YSwgaW50IGxlbikKewoJY2hhciB0b3RvW10gPSB7MHhhMCwgMHgw
LCAweDAsIDB4QzMsIDB4MDAsIDB4MDAsIDB4MCwgMHgwLCAweDQ5LCAweDAsIDB4MH07IAoJaW50
IGZuID0gZmlsZW5vKGZkKTsKCWludCByZXM7CgoJaWYgKGxlbiA+IE1BWF9MRU4pCgkJcmV0dXJu
IChzZW5kX2RhdGFfbXVsdGlwbGUoZmQsIGRhdGEsIGxlbikpOwoKCXRvdG9bNl0gPSBsZW4gPj4g
OCAmIDB4ZmY7Cgl0b3RvWzddID0gbGVuICYgMHhmZjsJCglsZW4gKz0gMzsKCXRvdG9bOV0gPSBs
ZW4gPj4gOCAmIDB4ZmY7Cgl0b3RvWzEwXSA9IGxlbiAmIDB4ZmY7CglsZW4gKz0gODsKCXRvdG9b
MV0gPSBsZW4gPj4gOCAmIDB4ZmY7Cgl0b3RvWzJdID0gbGVuICYgMHhmZjsKCQoJcmVzID0gY29u
bl9zZW5kKGZuLCB0b3RvLCAxMSk7CglwcmludGYoIlNlbnQgaGVhZGVyICVkIGJ5dGVzIC4uLlxu
IiwgcmVzKTsKCQoJLy9wcmludF9kYXRhKHRvdG8sIDExKTsKCglyZXMgPSBjb25uX3NlbmQoZm4s
IGRhdGEsIGxlbi0xMSk7CglwcmludGYoIlNlbnQgZGF0YSAlZCBieXRlcy4uLlxuIiwgcmVzKTsK
CXJldHVybiAwOwp9CgoKaW50IG1haW4gKGludCBhcmdjLCBjaGFyICoqIGFyZ3YpIHsKCUZJTEUg
KiBkZXYsICpvdXQ7CgljaGFyICogdG1wOwoJaW50IGxlbjsKCWhlYWRlcl90IGhkcjsKCWNoYXIg
Y21kW10gPSB7IDB4YTAsIDB4MDAsIDB4MGMsIDB4MTIsIDB4MDAsIDB4MDQsIDB4MDAsIDB4Q0Is
IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEgfTsJCgljaGFyIGNtZDNbXSA9IHsgMHhhMCwgMHgwMCwg
MHgwM307CglpbnQgb2Zmc2V0OwoJaW50IHNvY2tldDsgCgljaGFyICogZGV2aW5mOwoJaW50IGRl
dmluZmxlbjsKCWludCBjb250ID0gMTsKCglpZiAoIShzb2NrZXQgPSBvcGVuX3NvY2tldCg1MDUw
KSkgKSB7CgkJcmV0dXJuIDA7Cgl9CgovKgoJcG9zdF9yZXF1ZXN0KHNvY2tldCwgR0VUX0RFVklO
Riwgc3RybGVuKEdFVF9ERVZJTkYpKTsKCglkZXZpbmYgPSByZWFkX2h0dHBfcmVzcChzb2NrZXQs
ICZkZXZpbmZsZW4pOwoJewoJCWludCBvZmYgPSBzdHJzdHIoZGV2aW5mLCAiP3Nlc3Npb25pZD0i
KTsKCQlpZiAob2ZmKSB7CgkJCXNlc3Npb25faWQgPSBzdHJkdXAoZGV2aW5mK29mZik7CgkJCXBy
aW50ZigiU2Vzc2lvbklEIGlzIDogJXMiLCBzZXNzaW9uX2lkKTsKCQl9Cgl9CiovCQoJZGV2ID0g
Zm9wZW4oIi9kZXYvdHR5QUNNMCIsICJ3KyIpOwoKCWlmIChkZXYgPT0gTlVMTCkgewoJCXByaW50
ZigiRXJyb3Igb3BlbmluZyBmaWxlIFxuIik7CgkJZXhpdCgxKTsKCX0KCW91dCA9IGZvcGVuKCJv
dXQud2J4bWwiLCAidyIpOwoJCgl3cml0ZV9saW5lKGRldiwgIkFUXHJcbkFURTFcclxuIik7CgoJ
Ly90bXAgPSByZWFkX2xpbmUoZGV2KTsKCS8vZnJlZSh0bXApOwoKCWRvIHsKCQl0bXAgPSByZWFk
X2xpbmUoZGV2KTsKCQlpZihzdHJjbXAodG1wLCAiT0tcclxuIikpIHsKCQkJcHJpbnRmKCJPSyBl
eHBlY3RlZFxuIik7CgkJCWZyZWUodG1wKTsJCQoJCQkvL3JldHVybjsKCQl9IGVsc2UgewoJCQlj
b250ID0gMDsKCQl9Cgl9IHdoaWxlIChjb250KTsKCglwcmludGYoIkdvdCBPS1xuIik7CgoJd3Jp
dGVfbGluZShkZXYsICJBVCtNU1lOQ1xyXG4iKTsKCgljb250ID0gMTsKCWRvIHsKCQl0bXAgPSBy
ZWFkX2xpbmUoZGV2KTsKCQlpZiAoc3RyY21wKHRtcCwgIkFUK01TWU5DXHJcbiIpKSB7CgkJCXBy
aW50ZigiQVQrTVNZTkMgZXhwZWN0ZWRcbiIpOwoJCQlmcmVlKHRtcCk7CgkJCS8vcmV0dXJuIDsJ
CgkJfWVsc2UgewoJCQljb250ID0gMDsKCQl9Cgl9IHdoaWxlIChjb250KTsKCglmcmVlKHRtcCk7
Cgl0bXAgPSByZWFkX2xpbmUoZGV2KTsKCWZyZWUodG1wKTsKCXRtcCA9IHJlYWRfbGluZShkZXYp
OwoKCWlmKHN0cmNtcCh0bXAsICJPS1xyXG4iKSkgewoJCXByaW50ZigiT0sgZXhwZWN0ZWRcbiIp
OwoJCWZyZWUodG1wKTsJCQoJCXJldHVybiA7Cgl9CglmcmVlKHRtcCk7CgoJbGVuID0gcmVhZF9o
ZWFkZXIoZGV2LCAmaGRyKTsKCQoJcHJpbnRmKCJHb3QgaGVhZGVyIGxlbiAlZCB0eXBlICUwMnhc
biIsIGhkci5sZW4sIGhkci5jbWQpOwoJCgl0bXAgPSBtYWxsb2MoaGRyLmxlbiAtIDMpOwoJcmVh
ZF9kYXRhKGRldiwgaGRyLmxlbiAtIDMsIHRtcCk7CgkvL3ByaW50X2RhdGEodG1wLCBoZHIubGVu
IC0gMyk7CglmcmVlKHRtcCk7CgkKCXdyaXRlX2RhdGEoZGV2LCAxMiwgY21kKTsKCgl3aGlsZSAo
MSkgewoJCWNoYXIgKiB0bXAyOwoJCWludCBsZW4yOwoKCQl0bXAgPSBnZXRfZnVsbF9kYXRhKGRl
diwgJmxlbik7CgkJcHJpbnRmKF9fRklMRV9fICIlZFxuIiwgX19MSU5FX18pOwoJCS8vcHJpbnRf
ZGF0YSh0bXAsIGxlbik7CgkJaWYgKHRtcCA9PSBOVUxMKSB7CgkJCXJldHVybiAwOwoJCX0KCQl3
cml0ZV9kYXRhKGRldiwgMywgY21kMyk7CgkJdG1wMiA9IGdldF9mdWxsX2RhdGEoZGV2LCAmbGVu
Mik7CgkJaWYgKHRtcDIgPT0gTlVMTCkgewoJCQlyZXR1cm4gMDsKCQl9CgkJcHJpbnRmKF9fRklM
RV9fICIlZFxuIiwgX19MSU5FX18pOwoJCWZyZWUodG1wMik7CgoJCW91dCA9IGZvcGVuKCJvdXRf
MS53YnhtbCIsICJ3Iik7CgkJewoJCQlvZmZzZXQgPSB0bXBbN10rMTM7CgkJCWZ3cml0ZSh0bXAg
KyBvZmZzZXQsIDEsIGxlbi1vZmZzZXQsIG91dCk7CgkJCWZjbG9zZShvdXQpOwoJCQkvL3ByaW50
Zih3YnhtbF90b29sKHRtcCtvZmZzZXQsIGxlbi1vZmZzZXQpKTsKCQl9CgkJcG9zdF9yZXF1ZXN0
KHNvY2tldCwgdG1wK29mZnNldCwgbGVuIC0gb2Zmc2V0KTsKCQlmcmVlKHRtcCk7CgoJCXRtcCA9
IHJlYWRfaHR0cF9yZXNwKHNvY2tldCwgJmxlbik7CgkJb3V0ID0gZm9wZW4oIm91dF9zZXJ2ZXIu
d2J4bWwiLCAidyIpOwoJCXsKCQkJZndyaXRlKHRtcCwgMSwgbGVuLCBvdXQpOwoJCQlmY2xvc2Uo
b3V0KTsKCQkJLy9wcmludGYod2J4bWxfdG9vbCh0bXArb2Zmc2V0LCBsZW4tb2Zmc2V0KSk7CgkJ
fQoJCQoJCXByaW50ZigicmVhZGJhY2sgJWQgY2hhcnMgXG4iLCBsZW4pOwoJCWlmIChsZW4gPiAx
MSkgewoJCQkvL3ByaW50X2RhdGEodG1wLGxlbik7CgkJCXNlbmRfZGF0YV93aXRoX2hlYWRlcihk
ZXYsIHRtcCwgbGVuKTsKCQkJcHJpbnRmKF9fRklMRV9fICIlZFxuIiwgX19MSU5FX18pOwoJCX0K
CX0KCgl3cml0ZV9kYXRhKGRldiwgMywgY21kMyk7Cgl0bXAgPSBnZXRfZnVsbF9kYXRhKGRldiwg
Jmxlbik7CgoJb3V0ID0gZm9wZW4oIm91dF8yLndieG1sIiwgInciKTsKCWZ3cml0ZSh0bXAsIDEs
IGxlbiwgb3V0KTsKCWZjbG9zZShvdXQpOwoJZnJlZSh0bXApOwoJCglyZXR1cm47Cn0KCgo=
------=_20051025094141_52079--




-------------------------------------------------------
This SF.Net email is sponsored by the JBoss Inc.
Get Certified Today * Register for a JBoss Training Course
Free Certification Exam for All Training Attendees Through End of 2005
Visit http://www.jboss.com/services/certification for more information