:out parameters

Ben <ben-PLN1j/[email protected]> Fri, 27 Aug 2004 00:40:39 -0400 (EDT)
Newsgroups gmane.lisp.uffi.devel
Message-ID <[email protected]>
This is a multi-part message in MIME format...

--0-1018233897-1093581639=:67679
Content-Type: text/plain; name="warning1.txt"
Content-Disposition: inline; filename="warning1.txt"
Content-Transfer-Encoding: 7bit
MIME-Version: 1.0
X-Mailer: MIME-tools 5.411 (Entity 5.404)

WARNING: This e-mail has been altered by MIMEDefang.  Following this
paragraph are indications of the actual changes made.  For more
information about your site's MIMEDefang policy, contact
B9.com MIMEDefang Administrator <[email protected]>.  For more information about MIMEDefang, see:

            http://www.roaringpenguin.com/mimedefang/enduser.php3

An attachment named make.sh was removed from this document as it
constituted a security hazard.  If you require this document, please contact
the sender and arrange an alternate means of receiving it.


--0-1018233897-1093581639=:67679
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Content-Disposition: inline

[switching to uffi-devel]

attached are my modified

src/functions.lisp
tests/make.sh
tests/uffi-c-test.c
tests/uffi-c-test-lib.lisp

sorry i'm not so good with patch.  if you give me the correct
incantations i'll do it.  i modified make.sh to work on FreeBSD.

currently i am supporting :out arguments only for numeric types.
probably other things work too but the different platforms support
different things.  in particular CMUCL doesn't support :out for
pointer-like types.  as such the tests work on :floats and
:unsigned-ints.

all the tests pass on CMUCL and Allegro on FreeBSD.  in particular
none of the old tests should be affected since the new code won't get
called without :out parameters.  next time i'm on a linux box i'll
test Lispworks, and as soon as my roommate upgrades his computer i'll
test on OpenMCL (which should be identicle to Allegro since they both
use wrapper functions.)

meanwhile, i would like to release some software which depends on the
:out parameters stuff.  since a new release of UFFI is probably not
imminent, how should i do this?

thanks and take care, B

On Fri, 20 Aug 2004, Ben wrote:

>> Great -- backward compatibility is essential. I think well-written is
>> more important than touching existing code. Feel free to improve
>> things. You have the test suite to exercise your changes.
>
> i'm only able to test CMUCL + Allegro on FreeBSD.  looking for
> volunteers who have access to Lispworks, SBCL and OpenMCL.
>
>>> it supports CMUCL, SBCL, Lispworks :outs.  otherwise it wraps.  i've
>>> tested the wrapping on Allegro, so it should work elsewhere.
>> 
>> What do you mean by wrapping?
>
> it creates a wrapper function that allocates space for the return
> value arguments, calls the function defined by the original
> uffi:def-function (whose name has been gensym'd), and returns all the
> values.
>
>>> i'll try to get my hands on a copy of lispworks et al and try to
>>> bulletproof it.
>
> actually it looks like there's no lispworks for freebsd.  volunteers?
>
> B
>
--0-1018233897-1093581639=:67679
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="functions.lisp"
Content-Transfer-Encoding: BASE64
Content-ID: <20040827004039.H67679-hPn5cYFhuWsSFmXig5rcr2jVSZ/[email protected]>
Content-Description: 
Content-Disposition: attachment; filename="functions.lisp"

Ozs7OyAtKi0gTW9kZTogTGlzcDsgU3ludGF4OiBBTlNJLUNvbW1vbi1MaXNw
OyBCYXNlOiAxMDsgUGFja2FnZTogVUZGSSAtKi0NCjs7OzsgKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKg0KOzs7OyBGSUxFIElERU5USUZJQ0FUSU9O
DQo7Ozs7DQo7Ozs7IE5hbWU6ICAgICAgICAgIGZ1bmN0aW9uLmxpc3ANCjs7
OzsgUHVycG9zZTogICAgICAgVUZGSSBzb3VyY2UgdG8gQyBmdW5jdGlvbiBk
ZWZpbml0aW9ucw0KOzs7OyBQcm9ncmFtbWVyOiAgICBLZXZpbiBNLiBSb3Nl
bmJlcmcNCjs7OzsgRGF0ZSBTdGFydGVkOiAgRmViIDIwMDINCjs7OzsNCjs7
OzsgJElkOiBmdW5jdGlvbnMubGlzcCA5MDEyIDIwMDQtMDQtMTUgMTA6NDM6
MDFaIGtldmluICQNCjs7OzsNCjs7OzsgVGhpcyBmaWxlLCBwYXJ0IG9mIFVG
RkksIGlzIENvcHlyaWdodCAoYykgMjAwMiBieSBLZXZpbiBNLiBSb3NlbmJl
cmcNCjs7OzsNCjs7OzsgVUZGSSB1c2VycyBhcmUgZ3JhbnRlZCB0aGUgcmln
aHRzIHRvIGRpc3RyaWJ1dGUgYW5kIHVzZSB0aGlzIHNvZnR3YXJlDQo7Ozs7
IGFzIGdvdmVybmVkIGJ5IHRoZSB0ZXJtcyBvZiB0aGUgTGlzcCBMZXNzZXIg
R05VIFB1YmxpYyBMaWNlbnNlDQo7Ozs7IChodHRwOi8vb3BlbnNvdXJjZS5m
cmFuei5jb20vcHJlYW1ibGUuaHRtbCksIGFsc28ga25vd24gYXMgdGhlIExM
R1BMLg0KOzs7OyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQoNCihp
bi1wYWNrYWdlICM6dWZmaSkNCg0KKGRlZnVuIHByb2Nlc3MtZnVuY3Rpb24t
YXJncyAoYXJncykNCiAgKGlmIChudWxsIGFyZ3MpDQogICAgICAjKyhvciBs
aXNwd29ya3MgY211IHNiY2wgc2NsIGNvcm1hbmxpc3AgKGFuZCBtY2wgKG5v
dCBvcGVubWNsKSkpIG5pbA0KICAgICAgIythbGxlZ3JvICcoOnZvaWQpDQog
ICAgICAjK29wZW5tY2wgKHZhbHVlcyBuaWwgbmlsKQ0KDQogICAgICA7OyBh
cmdzIG5vdCBudWxsDQogICAgICAjKyhvciBsaXNwd29ya3MgYWxsZWdybyBj
bXUgc2JjbCBzY2wgKGFuZCBtY2wgKG5vdCBvcGVubWNsKSkgY29ybWFubGlz
cCkNCiAgICAgIChsZXQgKHByb2Nlc3NlZCkNCgkoZG9saXN0IChhcmcgYXJn
cykNCgkgIChwdXNoIChwcm9jZXNzLW9uZS1mdW5jdGlvbi1hcmcgYXJnKSBw
cm9jZXNzZWQpKQ0KCShucmV2ZXJzZSBwcm9jZXNzZWQpKQ0KICAgICAgIytv
cGVubWNsDQogICAgICAobGV0ICgocHJvY2Vzc2VkIG5pbCkNCgkgICAgKHBh
cmFtcyBuaWwpKQ0KCShkb2xpc3QgKGFyZyBhcmdzKQ0KCSAgKGxldCAoKG5h
bWUgKGNhciBhcmcpKQ0KCQkodHlwZSAoY29udmVydC1mcm9tLXVmZmktdHlw
ZSAoY2FkciBhcmcpIDpyb3V0aW5lKSkpDQoJICAgIDs7KHdoZW4gKGFuZCAo
bGlzdHAgdHlwZSkgKGVxIChjYXIgdHlwZSkgOmFkZHJlc3MpKQ0KCSAgICA7
OyhzZXRmIHR5cGUgOmFkZHJlc3MpKQ0KCSAgICAocHVzaCBuYW1lIHBhcmFt
cykNCgkgICAgKHB1c2ggdHlwZSBwcm9jZXNzZWQpDQoJICAgIChwdXNoIG5h
bWUgcHJvY2Vzc2VkKSkpDQoJKHZhbHVlcyAobnJldmVyc2UgcGFyYW1zKSAo
bnJldmVyc2UgcHJvY2Vzc2VkKSkpDQogICAgKSkNCg0KKGRlZnVuIHByb2Nl
c3Mtb25lLWZ1bmN0aW9uLWFyZyAoYXJnKQ0KICAobGV0ICgobmFtZSAoY2Fy
IGFyZykpDQoJKHR5cGUgKGNvbnZlcnQtZnJvbS11ZmZpLXR5cGUgKGNhZHIg
YXJnKSA6cm91dGluZSkpKQ0KICAgICMrKG9yIGNtdSBzYmNsIHNjbCkNCiAg
ICA7KGxpc3QgbmFtZSB0eXBlIDppbikNCiAgICBgKCxuYW1lICx0eXBlICxA
KGlmICg9IChsZW5ndGggYXJnKSAzKSAobGlzdCAodGhpcmQgYXJnKSkgKHZh
bHVlcykpKQ0KICAgICMrKG9yIGFsbGVncm8gbGlzcHdvcmtzIChhbmQgbWNs
IChub3Qgb3Blbm1jbCkpKQ0KICAgIChpZiAoYW5kIChsaXN0cCB0eXBlKSAo
bGlzdHAgKGNhciB0eXBlKSkpDQoJKGFwcGVuZCAobGlzdCBuYW1lKSB0eXBl
KQ0KICAgICAgKGxpc3QgbmFtZSB0eXBlKSkNCiAgICAjK29wZW5tY2wNCiAg
ICAoZGVjbGFyZSAoaWdub3JlIG5hbWUgdHlwZSkpDQogICAgKSkgICAgDQoN
Cg0KKGRlZnVuIGFsbGVncm8tY29udmVydC1yZXR1cm4tdHlwZSAodHlwZSkN
CiAgKGlmIChhbmQgKGxpc3RwIHR5cGUpIChub3QgKGxpc3RwIChjYXIgdHlw
ZSkpKSkNCiAgICAgIChsaXN0IHR5cGUpDQogICAgdHlwZSkpDQoNCihkZWZ1
biBmdW5jYWxsYWJsZS1sYW1iZGEtbGlzdCAoYXJncykNCiAgKGxldCAoKGxs
IG5pbCkpDQogICAgKGRvbGlzdCAoYXJnIGFyZ3MpDQogICAgICAocHVzaCAo
Y2FyIGFyZykgbGwpKQ0KICAgIChucmV2ZXJzZSBsbCkpKQ0KDQojfA0KKGRl
Zm1hY3JvIGRlZi1mdW5jYWxsYWJsZSAobmFtZSBhcmdzICZrZXkgcmV0dXJu
aW5nKQ0KICAobGV0ICgocmVzdWx0LXR5cGUgKGNvbnZlcnQtZnJvbS11ZmZp
LXR5cGUgcmV0dXJuaW5nIDpyZXR1cm4pKQ0KCShmdW5jdGlvbi1hcmdzIChw
cm9jZXNzLWZ1bmN0aW9uLWFyZ3MgYXJncykpKQ0KICAgICMrbGlzcHdvcmtz
DQogICAgYChmbGk6ZGVmaW5lLWZvcmVpZ24tZnVuY2FsbGFibGUgLG5hbWUg
LGZ1bmN0aW9uLWFyZ3MNCiAgICAgIDpyZXN1bHQtdHlwZSAscmVzdWx0LXR5
cGUNCiAgICAgIDpsYW5ndWFnZSA6YW5zaS1jDQogICAgICA6Y2FsbGluZy1j
b252ZW50aW9uIDpjZGVjbCkNCiAgICAjKyhvciBjbXUgc2NsIHNiY2wpDQog
ICAgOzsgcmVxdWlyZXMgdGhlIHR5cGUgb2YgdGhlIGZ1bmN0aW9uIHBvaW50
ZXIgYmUgZGVjbGFyZWQgY29ycmVjdGx5IQ0KICAgIChsZXQqICgocHRyc3lt
IChnZW5zeW0pKQ0KCSAgIChsbCAoZnVuY2FsbGFibGUtbGFtYmRhLWxpc3Qg
YXJncykpKQ0KICAgICAgYChkZWZ1biAsbmFtZSAsKGNvbnMgcHRyc3ltIGxs
KQ0KCShhbGllbjo6YWxpZW4tZnVuY2FsbCAscHRyc3ltICxAbGwpKSkNCiAg
ICAjK29wZW5tY2wNCiAgICAobXVsdGlwbGUtdmFsdWUtYmluZCAocGFyYW1z
IGFyZ3MpIChwcm9jZXNzLWZ1bmN0aW9uLWFyZ3MgYXJncykNCiAgICAgIChs
ZXQgKChwdHJzeW0gKGdlbnN5bSkpKQ0KCWAoZGVmdW4gLG5hbWUgLChjb25z
IHB0cnN5bSBwYXJhbXMpDQoJICAoY2NsOjpmZi1jYWxsICxwdHJzeW0gLEBh
cmdzICxyZXN1bHQtdHlwZSkpKSkNCiAgICAjK2FsbGVncm8NCiAgICA7OyB0
aGlzIGlzIG1vc3QgZGVmaW5pdGVseSB3cm9uZw0KICAgIChsZXQqICgocHRy
c3ltIChnZW5zeW0pKQ0KCSAgIChsbCAoZnVuY2FsbGFibGUtbGFtYmRhLWxp
c3QgYXJncykpKQ0KICAgICAgYChkZWZ1biAsbmFtZSAsKGNvbnMgcHRyc3lt
IGxsKQ0KCShzeXN0ZW06OmZmLWZ1bmNhbGwgLHB0cnN5bSAsQGxsKSkpDQog
ICAgKSkNCnwjICAgIA0KDQooZGVmdW4gY29udmVydC1saXNwd29ya3MtYXJn
cyAoYXJncykNCiAgKGxvb3AgZm9yIGFyZyBpbiBhcmdzDQoJd2l0aCBwcm9j
ZXNzZWQgPSBuaWwNCglkbw0KCShpZiAoYW5kICg9IChsZW5ndGggYXJnKSAz
KSAoZXEgKHRoaXJkIGFyZykgOm91dCkpDQoJICAgIChwdXNoIChsaXN0IChm
aXJzdCBhcmcpDQoJCQkobGlzdCA6cmVmZXJlbmNlLXJldHVybiAoc2Vjb25k
IGFyZykpKSBwcm9jZXNzZWQpDQoJICAgIChwdXNoIChzdWJzZXEgYXJnIDAg
MikgcHJvY2Vzc2VkKSkNCglmaW5hbGx5IChyZXR1cm4gcHJvY2Vzc2VkKSkp
DQoNCihkZWZ1biBwcmVwcm9jZXNzLW5hbWVzIChuYW1lcykNCiAgKGxldCAo
KGZuYW1lIChnZW5zeW0pKSkNCiAgICAoaWYgKGF0b20gbmFtZXMpDQoJKHZh
bHVlcyAobGlzdCBuYW1lcyBmbmFtZSkgZm5hbWUgKHVmZmk6Om1ha2UtbGlz
cC1uYW1lIG5hbWVzKSkNCgkodmFsdWVzIChsaXN0IChmaXJzdCBuYW1lcykg
Zm5hbWUpIGZuYW1lIChzZWNvbmQgbmFtZXMpKSkpKQ0KDQooZGVmdW4gcHJl
cHJvY2Vzcy1hcmdzIChhcmdzKQ0KICAobG9vcCBmb3IgYXJnIGluIGFyZ3MN
Cgl3aXRoIGxpc3AtYXJncyA9IG5pbCBhbmQgb3V0ID0gbmlsIGFuZCBwcm9j
ZXNzZWQgPSBuaWwNCglkbw0KCShpZiAoPSAobGVuZ3RoIGFyZykgMykNCgkg
ICAgKGVjYXNlICh0aGlyZCBhcmcpDQoJICAgICAgKDppbiANCgkgICAgICAg
KHByb2duDQoJCSAocHVzaCAoZmlyc3QgYXJnKSBsaXNwLWFyZ3MpDQoJCSAo
cHVzaCAobGlzdCAoZmlyc3QgYXJnKSAoc2Vjb25kIGFyZykpIHByb2Nlc3Nl
ZCkpKQ0KCSAgICAgICg6b3V0DQoJICAgICAgIChwcm9nbg0KCQkgKHB1c2gg
KGxpc3QgKGZpcnN0IGFyZykgKHNlY29uZCBhcmcpKSBvdXQpDQoJCSAocHVz
aCAobGlzdCAoZmlyc3QgYXJnKSAobGlzdCAnKiAoc2Vjb25kIGFyZykpKSBw
cm9jZXNzZWQpKSkpDQoJICAgIChwcm9nbg0KCSAgICAgIChwdXNoIChmaXJz
dCBhcmcpIGxpc3AtYXJncykNCgkgICAgICAocHVzaCBhcmcgcHJvY2Vzc2Vk
KSkpDQoJZmluYWxseSAocmV0dXJuICh2YWx1ZXMgKG5yZXZlcnNlIGxpc3At
YXJncykgDQoJCQkJKG5yZXZlcnNlIG91dCkgDQoJCQkJKG5yZXZlcnNlIHBy
b2Nlc3NlZCkpKSkpDQoNCg0KKGRlZm1hY3JvIGRlZi1mdW5jdGlvbiAobmFt
ZXMgYXJncyAma2V5IG1vZHVsZSByZXR1cm5pbmcpDQogICMrKG9yIGNtdSBz
YmNsIHNjbCBhbGxlZ3JvIG1jbCBjb3JtYW5saXNwKSAoZGVjbGFyZSAoaWdu
b3JlIG1vZHVsZSkpDQoNCiAgKG11bHRpcGxlLXZhbHVlLWJpbmQgKGxpc3At
YXJncyBvdXQgcHJvY2Vzc2VkKQ0KICAgICAgKHByZXByb2Nlc3MtYXJncyBh
cmdzKQ0KICAgIChpZiAoPSAobGVuZ3RoIG91dCkgMCkNCglgKCVkZWYtZnVu
Y3Rpb24gLG5hbWVzICxhcmdzIA0KCSAgLEAoaWYgbW9kdWxlIChsaXN0IDpt
b2R1bGUgbW9kdWxlKSAodmFsdWVzKSkNCgkgICxAKGlmIHJldHVybmluZyAo
bGlzdCA6cmV0dXJuaW5nIHJldHVybmluZykgKHZhbHVlcykpKQ0KDQoJIyso
b3IgY211IHNjbCBzYmNsKQ0KCWAoJWRlZi1mdW5jdGlvbiAsbmFtZXMgLGFy
Z3MgDQoJICAsQChpZiByZXR1cm5pbmcgKGxpc3QgOnJldHVybmluZyByZXR1
cm5pbmcpICh2YWx1ZXMpKSkNCgkjK2xpc3B3b3Jrcw0KCWAoJWRlZi1mdW5j
dGlvbiAsbmFtZXMgLChjb252ZXJ0LWxpc3B3b3Jrcy1hcmdzIGFyZ3MpIA0K
CSAgLEAoaWYgbW9kdWxlIChsaXN0IDptb2R1bGUgbW9kdWxlKSAodmFsdWVz
KSkNCgkgICxAKGlmIHJldHVybmluZyAobGlzdCA6cmV0dXJuaW5nIHJldHVy
bmluZykgKHZhbHVlcykpKQ0KCSMtKG9yIGNtdSBzY2wgc2JjbCBsaXNwd29y
a3MpDQoJKG11bHRpcGxlLXZhbHVlLWJpbmQgKG5hbWUtcGFpciBmbmFtZSBs
aXNwLW5hbWUpDQoJICAgIChwcmVwcm9jZXNzLW5hbWVzIG5hbWVzKQ0KCSAg
YChwcm9nMQ0KCSAgICAoJWRlZi1mdW5jdGlvbiAsbmFtZS1wYWlyICxwcm9j
ZXNzZWQgDQoJICAgICA6bW9kdWxlICxtb2R1bGUgOnJldHVybmluZyAscmV0
dXJuaW5nKQ0KCSAgICA7KGRlY2xhaW0gKGlubGluZSAsZm5hbWUpKQ0KCSAg
ICAoZGVmdW4gLGxpc3AtbmFtZSAsbGlzcC1hcmdzDQoJICAgICAgKHdpdGgt
Zm9yZWlnbi1vYmplY3RzICxvdXQNCgkJKHZhbHVlcyAoLGZuYW1lICxAKG1h
cGNhciAjJ2ZpcnN0IGFyZ3MpKQ0KCQkJLEAobWFwY2FyICMnKGxhbWJkYSAo
YXJnKQ0KCQkJCSAgICAgIChsaXN0ICdkZXJlZi1wb2ludGVyDQoJCQkJCSAg
ICAoZmlyc3QgYXJnKQ0KCQkJCQkgICAgKHNlY29uZCBhcmcpKSkgb3V0KSkp
KSkpDQoJKSkpDQoJDQoNCjs7IG5hbWUgaXMgZWl0aGVyIGEgc3RyaW5nIHJl
cHJlc2VudGluZyBmb3JlaWduIG5hbWUsIG9yIGEgbGlzdA0KOzsgb2YgZm9y
ZWlnbi1uYW1lIGFzIGEgc3RyaW5nIGFuZCBsaXNwIG5hbWUgYXMgYSBzeW1i
b2wNCihkZWZtYWNybyAlZGVmLWZ1bmN0aW9uIChuYW1lcyBhcmdzICZrZXkg
bW9kdWxlIHJldHVybmluZykNCiAgIysob3IgY211IHNiY2wgc2NsIGFsbGVn
cm8gbWNsIGNvcm1hbmxpc3ApIChkZWNsYXJlIChpZ25vcmUgbW9kdWxlKSkN
CiAgDQogIChsZXQqICgocmVzdWx0LXR5cGUgKGNvbnZlcnQtZnJvbS11ZmZp
LXR5cGUgcmV0dXJuaW5nIDpyZXR1cm4pKQ0KCSAoZnVuY3Rpb24tYXJncyAo
cHJvY2Vzcy1mdW5jdGlvbi1hcmdzIGFyZ3MpKQ0KCSAoZm9yZWlnbi1uYW1l
IChpZiAoYXRvbSBuYW1lcykgbmFtZXMgKGNhciBuYW1lcykpKQ0KCSAobGlz
cC1uYW1lIChpZiAoYXRvbSBuYW1lcykgKG1ha2UtbGlzcC1uYW1lIG5hbWVz
KSAoY2FkciBuYW1lcykpKSkNCg0KICAgIDs7IHRvZG86IGNhbGxpbmctY29u
dmVudGlvbiA6c3RkY2FsbCBmb3IgY29ybWFubGlzcA0KICAgICMrYWxsZWdy
bw0KICAgIGAoZmY6ZGVmLWZvcmVpZ24tY2FsbCAoLGxpc3AtbmFtZSAsZm9y
ZWlnbi1uYW1lKQ0KCSAsZnVuY3Rpb24tYXJncw0KICAgICAgIDpyZXR1cm5p
bmcgLChhbGxlZ3JvLWNvbnZlcnQtcmV0dXJuLXR5cGUgcmVzdWx0LXR5cGUp
DQogICAgICAgOmNhbGwtZGlyZWN0IHQNCiAgICAgICA6c3RyaW5ncy1jb252
ZXJ0IG5pbCkNCiAgICAjKyhvciBjbXUgc2NsKQ0KICAgIGAoYWxpZW46ZGVm
LWFsaWVuLXJvdXRpbmUgKCxmb3JlaWduLW5hbWUgLGxpc3AtbmFtZSkNCgkg
LHJlc3VsdC10eXBlDQogICAgICAgLEBmdW5jdGlvbi1hcmdzKQ0KICAgICMr
c2JjbA0KICAgIGAoc2ItYWxpZW46ZGVmaW5lLWFsaWVuLXJvdXRpbmUgKCxm
b3JlaWduLW5hbWUgLGxpc3AtbmFtZSkNCgkgLHJlc3VsdC10eXBlDQogICAg
ICAgLEBmdW5jdGlvbi1hcmdzKQ0KICAgICMrbGlzcHdvcmtzDQogICAgYChm
bGk6ZGVmaW5lLWZvcmVpZ24tZnVuY3Rpb24gKCxsaXNwLW5hbWUgLGZvcmVp
Z24tbmFtZSA6c291cmNlKQ0KCSAsZnVuY3Rpb24tYXJncw0KICAgICAgICxA
KGlmIG1vZHVsZSAobGlzdCA6bW9kdWxlIG1vZHVsZSkgKHZhbHVlcykpDQog
ICAgICAgOnJlc3VsdC10eXBlICxyZXN1bHQtdHlwZQ0KICAgICAgOmxhbmd1
YWdlIDphbnNpLWMNCiAgICAgICA6Y2FsbGluZy1jb252ZW50aW9uIDpjZGVj
bCkNCiAgICAjKyhhbmQgbWNsIChub3Qgb3Blbm1jbCkpDQogICAgYChldmFs
LXdoZW4gKDpjb21waWxlLXRvcGxldmVsIDpsb2FkLXRvcGxldmVsIDpleGVj
dXRlKQ0KICAgICAgIChjY2w6ZGVmaW5lLWVudHJ5LXBvaW50ICgsbGlzcC1u
YW1lICxmb3JlaWduLW5hbWUpDQogICAgICAgICAsZnVuY3Rpb24tYXJncw0K
ICAgICAgICAgLHJlc3VsdC10eXBlKSkNCiAgICAjK29wZW5tY2wNCiAgICAo
ZGVjbGFyZSAoaWdub3JlIGZ1bmN0aW9uLWFyZ3MpKQ0KICAgICMrKGFuZCBv
cGVubWNsIGRhcndpbnBwYy10YXJnZXQpDQogICAgKHNldGYgZm9yZWlnbi1u
YW1lIChjb25jYXRlbmF0ZSAnc3RyaW5nICJfIiBmb3JlaWduLW5hbWUpKQ0K
ICAgICMrb3Blbm1jbA0KICAgIChtdWx0aXBsZS12YWx1ZS1iaW5kIChwYXJh
bXMgYXJncykgKHByb2Nlc3MtZnVuY3Rpb24tYXJncyBhcmdzKQ0KICAgICAg
YChkZWZ1biAsbGlzcC1uYW1lICxwYXJhbXMNCiAgICAgICAgIChjY2w6OmV4
dGVybmFsLWNhbGwgLGZvcmVpZ24tbmFtZSAsQGFyZ3MgLHJlc3VsdC10eXBl
KSkpDQogICAgIytjb3JtYW5saXNwDQogICAgYChjdDpkZWZ1bi1kbGwgLGxp
c3AtbmFtZSAoLGZ1bmN0aW9uLWFyZ3MpDQogICAgICAgOnJldHVybi10eXBl
ICxyZXN1bHQtdHlwZQ0KICAgICAgICxAKGlmIG1vZHVsZSAobGlzdCA6bGli
cmFyeS1uYW1lIG1vZHVsZSkgKHZhbHVlcykpDQogICAgICAgOmVudHJ5LW5h
bWUgLGZvcmVpZ24tbmFtZQ0KICAgICAgIDpsaW5rYWdlLXR5cGUgLGNhbGxp
bmctY29udmVudGlvbikgOyB3ZSBuZWVkIDpwYXNjYWwNCiAgICApKQ0KDQoN
Cg0KDQo=

--0-1018233897-1093581639=:67679
Content-Type: TEXT/x-csrc; charset=US-ASCII; name="uffi-c-test.c"
Content-Transfer-Encoding: BASE64
Content-ID: <20040827004039.C67679-hPn5cYFhuWsSFmXig5rcr2jVSZ/[email protected]>
Content-Description: 
Content-Disposition: attachment; filename="uffi-c-test.c"

LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICogRklMRSBJREVO
VElGSUNBVElPTg0KICogIA0KICogIE5hbWU6ICAgICAgICAgYy10ZXN0LWZu
cy5jDQogKiAgUHVycG9zZTogICAgICBUZXN0IGZ1bmN0aW9ucyBpbiBDIGZv
ciBVRkZJIGxpYnJhcnkNCiAqICBQcm9ncmFtZXI6ICAgIEtldmluIE0uIFJv
c2VuYmVyZw0KICogIERhdGUgU3RhcnRlZDogTWFyIDIwMDINCiAqDQogKiAg
Q1ZTIElkOiAgICRJZDogdWZmaS1jLXRlc3QuYyA5MzMwIDIwMDQtMDUtMTMg
MDQ6MzQ6NDRaIGtldmluICQNCiAqDQogKiBUaGlzIGZpbGUsIHBhcnQgb2Yg
VUZGSSwgaXMgQ29weXJpZ2h0IChjKSAyMDAyIGJ5IEtldmluIE0uIFJvc2Vu
YmVyZw0KICoNCiAqIFVGRkkgdXNlcnMgYXJlIGdyYW50ZWQgdGhlIHJpZ2h0
cyB0byBkaXN0cmlidXRlIGFuZCB1c2UgdGhpcyBzb2Z0d2FyZQ0KICogYXMg
Z292ZXJuZWQgYnkgdGhlIHRlcm1zIG9mIHRoZSBMaXNwIExlc3NlciBHTlUg
UHVibGljIExpY2Vuc2UNCiAqIChodHRwOi8vb3BlbnNvdXJjZS5mcmFuei5j
b20vcHJlYW1ibGUuaHRtbCksIGFsc28ga25vd24gYXMgdGhlIExMR1BMLg0K
DQogKiBUaGVzZSB2YXJpYWJsZXMgYXJlIGNvcnJlY3QgZm9yIEdDQw0KICog
eW91J2xsIG5lZWQgdG8gbW9kaWZ5IHRoZXNlIGZvciBvdGhlciBjb21waWxl
cnMNCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQoNCiNpZmRl
ZiBXSU4zMg0KI2luY2x1ZGUgPHdpbmRvd3MuaD4NCg0KQk9PTCBXSU5BUEkg
RGxsRW50cnlQb2ludChISU5TVEFOQ0UgaGluc3RkbGwsDQogICAgICAgICAg
ICAgICAgICAgICAgICAgIERXT1JEIGZkd1JlYXNvbiwNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgTFBWT0lEIGxwdlJlc2VydmVkKQ0Kew0KICAgICAg
ICByZXR1cm4gMTsNCn0NCiAgICAgICANCiNkZWZpbmUgRExMRVhQT1JUIF9f
ZGVjbHNwZWMoZGxsZXhwb3J0KQ0KDQojZWxzZQ0KI2RlZmluZSBETExFWFBP
UlQgDQojZW5kaWYNCg0KI2luY2x1ZGUgPGN0eXBlLmg+DQojaW5jbHVkZSA8
c3RkbGliLmg+DQojaW5jbHVkZSA8bWF0aC5oPg0KDQoNCkRMTEVYUE9SVCB1
bnNpZ25lZCBjaGFyIHVjaGFyXzEzID0gMTM7DQpETExFWFBPUlQgc2lnbmVk
IGNoYXIgc2NoYXJfbmVnXzEyMCA9IC0xMjA7DQpETExFWFBPUlQgdW5zaWdu
ZWQgc2hvcnQgdXdvcmRfMjU3ID0gMjU3Ow0KRExMRVhQT1JUIHNpZ25lZCBz
aG9ydCBzd29yZF9uZWdfMzIxID0gLTMyMTsNCkRMTEVYUE9SVCB1bnNpZ25l
ZCBpbnQgdWludF8xMjM0NTY3ID0gMTIzNDU2NzsNCkRMTEVYUE9SVCBzaWdu
ZWQgaW50IHNpbnRfbmVnXzEyMzQ1NiA9IC0xMjM0NTY7DQpETExFWFBPUlQg
ZG91YmxlIGRvdWJsZV8zXzEgPSAzLjE7DQpETExFWFBPUlQgZmxvYXQgZmxv
YXRfbmVnXzRfNSA9IC00LjU7DQoNCi8qIFRlc3Qgb2YgY29uc3RhbnQgaW5w
dXQgc3RyaW5nICovDQpETExFWFBPUlQNCmludA0KY3NfY291bnRfdXBwZXIg
KGNoYXIqIHBzeikNCnsNCiAgaW50IGNvdW50ID0gMDsNCg0KICBpZiAocHN6
KSB7DQogICAgd2hpbGUgKCpwc3opIHsNCiAgICAgIGlmIChpc3VwcGVyICgq
cHN6KSkNCgkrK2NvdW50Ow0KICAgICAgKytwc3o7DQogICAgfQ0KICAgIHJl
dHVybiBjb3VudDsNCiAgfSBlbHNlIA0KICAgIHJldHVybiAtMTsNCn0NCg0K
LyogVGVzdCBvZiBpbnB1dCBhbmQgb3V0cHV0IG9mIGEgc3RyaW5nICovDQpE
TExFWFBPUlQNCnZvaWQNCmNzX3RvX3VwcGVyIChjaGFyKiBwc3opDQp7DQog
IGlmIChwc3opIHsNCiAgICB3aGlsZSAoKnBzeikgew0KICAgICAgKnBzeiA9
IHRvdXBwZXIgKCpwc3opOw0KICAgICAgKytwc3o7DQogICAgfQ0KICB9DQp9
DQoNCi8qIFRlc3Qgb2YgYW4gb3V0cHV0IG9ubHkgc3RyaW5nICovDQpETExF
WFBPUlQNCnZvaWQNCmNzX21ha2VfcmFuZG9tIChpbnQgc2l6ZSwgY2hhciog
YnVmZmVyKQ0Kew0KICBpbnQgaTsNCiAgZm9yIChpID0gMDsgaSA8IHNpemU7
IGkrKykNCiAgICBidWZmZXJbaV0gPSAnQScgKyAocmFuZCgpICUgMjYpOw0K
fQ0KDQogICAgDQovKiBUZXN0IG9mIGlucHV0L291dHB1dCB2ZWN0b3IgKi8N
CkRMTEVYUE9SVA0Kdm9pZA0KaGFsZl9kb3VibGVfdmVjdG9yIChpbnQgc2l6
ZSwgZG91YmxlKiB2ZWMpDQp7DQogIGludCBpOw0KICBmb3IgKGkgPSAwOyBp
IDwgc2l6ZTsgaSsrKQ0KICAgIHZlY1tpXSAvPSAyLjsNCn0NCg0KICAgIA0K
DQpETExFWFBPUlQNCnZvaWQgKg0KY2FzdF90ZXN0X2ludCAoKSB7DQogIGlu
dCAqeCA9IChpbnQgKikgbWFsbG9jKHNpemVvZihpbnQpKTsNCiAgKnggPSAy
MzsNCiAgcmV0dXJuIHg7DQp9DQoNCkRMTEVYUE9SVA0Kdm9pZCAqDQpjYXN0
X3Rlc3RfZmxvYXQgKCkNCnsNCiAgZG91YmxlICp5ID0gKGRvdWJsZSAqKSBt
YWxsb2Moc2l6ZW9mKGRvdWJsZSkpOw0KICAqeSA9IDMuMjE7DQogIHJldHVy
biB5Ow0KfQ0KDQpETExFWFBPUlQNCmxvbmcNCnJldHVybl9sb25nX25lZ2F0
aXZlX29uZSAoKQ0Kew0KICByZXR1cm4gLTE7DQp9DQoNCkRMTEVYUE9SVA0K
aW50DQpyZXR1cm5faW50X25lZ2F0aXZlX29uZSAoKQ0Kew0KICByZXR1cm4g
LTE7DQp9DQoNCkRMTEVYUE9SVA0Kc2hvcnQNCnJldHVybl9zaG9ydF9uZWdh
dGl2ZV9vbmUgKCkNCnsNCiAgcmV0dXJuIC0xOw0KfQ0KDQpETExFWFBPUlQg
aW50IGZ2YXJfYWRkZW5kID0gMzsNCg0KdHlwZWRlZiBzdHJ1Y3Qgew0KICBp
bnQgaTsNCiAgZG91YmxlIGQ7DQp9IGZ2YXJfc3RydWN0X3R5cGU7DQoNCmZ2
YXJfc3RydWN0X3R5cGUgZnZhcl9zdHJ1Y3QgPSB7NDIsIDMuMn07DQoNCkRM
TEVYUE9SVA0KaW50IGZ2YXJfc3RydWN0X2ludCAoKSB7DQogIHJldHVybiAo
ZnZhcl9hZGRlbmQgKyBmdmFyX3N0cnVjdC5pKTsNCn0NCg0KRExMRVhQT1JU
DQpkb3VibGUgZnZhcl9zdHJ1Y3RfZG91YmxlICgpIHsNCiAgcmV0dXJuIGZ2
YXJfc3RydWN0LmQ7DQp9DQoNCkRMTEVYUE9SVA0Kdm9pZCB0ZXN0X2FyZ19v
dXQoZmxvYXQgaW4sIGZsb2F0ICpvdXQpIHsNCiAgKm91dCA9IGluOw0KfQ0K
DQpETExFWFBPUlQNCmludCB0ZXN0X2FyZ19hbmRfcmV0dXJuX291dCh1bnNp
Z25lZCBpbnQgaW4sIHVuc2lnbmVkIGludCAqb3V0KSB7DQogICpvdXQgPSBp
bjsNCiAgcmV0dXJuIDExOw0KfQ0K

--0-1018233897-1093581639=:67679
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="uffi-c-test-lib.lisp"
Content-Transfer-Encoding: BASE64
Content-ID: <20040827004039.M67679-hPn5cYFhuWsSFmXig5rcr2jVSZ/[email protected]>
Content-Description: 
Content-Disposition: attachment; filename="uffi-c-test-lib.lisp"

Ozs7OyAtKi0gTW9kZTogTGlzcDsgU3ludGF4OiBBTlNJLUNvbW1vbi1MaXNw
OyBCYXNlOiAxMCAtKi0NCjs7OzsgKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKg0KOzs7OyBGSUxFIElERU5USUZJQ0FUSU9ODQo7Ozs7DQo7Ozs7IE5h
bWU6ICAgICAgICAgIHVmZmktYy10ZXN0LWxpYi5saXNwDQo7Ozs7IFB1cnBv
c2U6ICAgICAgIFVGRkkgRXhhbXBsZSBmaWxlIGZvciB6bGliIGNvbXByZXNz
aW9uDQo7Ozs7IFByb2dyYW1tZXI6ICAgIEtldmluIE0uIFJvc2VuYmVyZw0K
Ozs7OyBEYXRlIFN0YXJ0ZWQ6ICBNYXIgMjAwMg0KOzs7Ow0KOzs7OyAkSWQ6
IHVmZmktYy10ZXN0LWxpYi5saXNwIDk0MzIgMjAwNC0wNS0yMyAwMDozMzo1
OVoga2V2aW4gJA0KOzs7Ow0KOzs7OyBUaGlzIGZpbGUsIHBhcnQgb2YgVUZG
SSwgaXMgQ29weXJpZ2h0IChjKSAyMDAyLTIwMDMgYnkgS2V2aW4gTS4gUm9z
ZW5iZXJnDQo7Ozs7DQo7Ozs7ICoqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioNCg0KKGluLXBhY2thZ2UgIzp1ZmZpLXRlc3RzKQ0KDQoNCih1ZmZpOmRl
Zi1mdW5jdGlvbiAoImNzX3RvX3VwcGVyIiBjcy10by11cHBlcikNCiAgKChp
bnB1dCAoKiA6dW5zaWduZWQtY2hhcikpKQ0KICA6cmV0dXJuaW5nIDp2b2lk
DQogICkNCg0KKGRlZnVuIHN0cmluZy10by11cHBlciAoc3RyKQ0KICAodWZm
aTp3aXRoLWZvcmVpZ24tc3RyaW5nIChzdHItZm9yZWlnbiBzdHIpDQogICAg
KGNzLXRvLXVwcGVyIHN0ci1mb3JlaWduKQ0KICAgICh1ZmZpOmNvbnZlcnQt
ZnJvbS1mb3JlaWduLXN0cmluZyBzdHItZm9yZWlnbikpKQ0KDQoodWZmaTpk
ZWYtZnVuY3Rpb24gKCJjc19jb3VudF91cHBlciIgY3MtY291bnQtdXBwZXIp
DQogICgoaW5wdXQgOmNzdHJpbmcpKQ0KICA6cmV0dXJuaW5nIDppbnQpDQoN
CihkZWZ1biBzdHJpbmctY291bnQtdXBwZXIgKHN0cikNCiAgKHVmZmk6d2l0
aC1jc3RyaW5nIChzdHItY3N0cmluZyBzdHIpDQogICAgKGNzLWNvdW50LXVw
cGVyIHN0ci1jc3RyaW5nKSkpIA0KDQoodWZmaTpkZWYtZnVuY3Rpb24gKCJo
YWxmX2RvdWJsZV92ZWN0b3IiIGhhbGYtZG91YmxlLXZlY3RvcikNCiAgICAo
KHNpemUgOmludCkNCiAgICAgKHZlYyAoKiA6ZG91YmxlKSkpDQogIDpyZXR1
cm5pbmcgOnZvaWQpDQoNCih1ZmZpOmRlZi1mdW5jdGlvbiAoInJldHVybl9s
b25nX25lZ2F0aXZlX29uZSIgcmV0dXJuLWxvbmctbmVnYXRpdmUtb25lKQ0K
ICAgICgpDQogIDpyZXR1cm5pbmcgOmxvbmcpDQoNCih1ZmZpOmRlZi1mdW5j
dGlvbiAoInJldHVybl9pbnRfbmVnYXRpdmVfb25lIiByZXR1cm4taW50LW5l
Z2F0aXZlLW9uZSkNCiAgICAoKQ0KICA6cmV0dXJuaW5nIDppbnQpDQoNCih1
ZmZpOmRlZi1mdW5jdGlvbiAoInJldHVybl9zaG9ydF9uZWdhdGl2ZV9vbmUi
IHJldHVybi1zaG9ydC1uZWdhdGl2ZS1vbmUpDQogICAgKCkNCiAgOnJldHVy
bmluZyA6c2hvcnQpDQoNCih1ZmZpOmRlZi1mdW5jdGlvbiAoInRlc3RfYXJn
X291dCIgJXRlc3QtYXJndW1lbnQtb3V0KQ0KICAgICgoaW4gOmZsb2F0KQ0K
ICAgICAob3V0IDpmbG9hdCA6b3V0KSkNCiAgOnJldHVybmluZyA6dm9pZCkN
Cg0KKGRlZnVuIHRlc3QtYXJndW1lbnQtb3V0IChpbikNCiAgKG11bHRpcGxl
LXZhbHVlLWJpbmQgKHJldCBvdXQpDQogICAgICAoJXRlc3QtYXJndW1lbnQt
b3V0IGluKQ0KICAgICg9IG91dCBpbikpKQ0KDQoodWZmaTpkZWYtZnVuY3Rp
b24gKCJ0ZXN0X2FyZ19hbmRfcmV0dXJuX291dCIgJXRlc3QtYXJndW1lbnQt
YW5kLXJldHVybi1vdXQpDQogICAgKChpbiA6dW5zaWduZWQtaW50KQ0KICAg
ICAob3V0IDp1bnNpZ25lZC1pbnQgOm91dCkpDQogIDpyZXR1cm5pbmcgOmlu
dCkNCg0KKGRlZnVuIHRlc3QtYXJndW1lbnQtYW5kLXJldHVybi1vdXQgKGlu
KQ0KICAobXVsdGlwbGUtdmFsdWUtYmluZCAocmV0IG91dCkNCiAgICAgICgl
dGVzdC1hcmd1bWVudC1hbmQtcmV0dXJuLW91dCBpbikNCiAgICAoYW5kICg9
IGluIG91dCkgKD0gMTEgcmV0KSkpKQ0KDQoodWZmaTpkZWYtY29uc3RhbnQg
K2RvdWJsZS12ZWMtbGVuZ3RoKyAxMCkNCihkZWZ1biB0ZXN0LWhhbGYtZG91
YmxlLXZlY3RvciAoKQ0KICAobGV0ICgodmVjICh1ZmZpOmFsbG9jYXRlLWZv
cmVpZ24tb2JqZWN0IDpkb3VibGUgK2RvdWJsZS12ZWMtbGVuZ3RoKykpDQoJ
cmVzdWx0cykNCiAgICAoZG90aW1lcyAoaSArZG91YmxlLXZlYy1sZW5ndGgr
KQ0KICAgICAgKHNldGYgKHVmZmk6ZGVyZWYtYXJyYXkgdmVjICcoOmFycmF5
IDpkb3VibGUpIGkpIA0KCSAgICAoY29lcmNlIGkgJ2RvdWJsZS1mbG9hdCkp
KQ0KICAgIChoYWxmLWRvdWJsZS12ZWN0b3IgK2RvdWJsZS12ZWMtbGVuZ3Ro
KyB2ZWMpDQogICAgKGRvdGltZXMgKGkgK2RvdWJsZS12ZWMtbGVuZ3RoKykN
CiAgICAgIChwdXNoICh1ZmZpOmRlcmVmLWFycmF5IHZlYyAnKDphcnJheSA6
ZG91YmxlKSBpKSByZXN1bHRzKSkNCiAgICAodWZmaTpmcmVlLWZvcmVpZ24t
b2JqZWN0IHZlYykNCiAgICAobnJldmVyc2UgcmVzdWx0cykpKQ0KDQooZGVm
dW4gdDIgKCkNCiAgKGxldCAoKHZlYyAobWFrZS1hcnJheSArZG91YmxlLXZl
Yy1sZW5ndGgrIDplbGVtZW50LXR5cGUgJ2RvdWJsZS1mbG9hdCkpKQ0KICAg
IChkb3RpbWVzIChpICtkb3VibGUtdmVjLWxlbmd0aCspDQogICAgICAoc2V0
ZiAoYXJlZiB2ZWMgaSkgKGNvZXJjZSBpICdkb3VibGUtZmxvYXQpKSkNCiAg
ICAoaGFsZi1kb3VibGUtdmVjdG9yICtkb3VibGUtdmVjLWxlbmd0aCsgdmVj
KQ0KICAgIHZlYykpDQoNCiMrKG9yIGNtdSBzY2wpDQooZGVmdW4gdDMgKCkN
CiAgKGxldCAoKHZlYyAobWFrZS1hcnJheSArZG91YmxlLXZlYy1sZW5ndGgr
IDplbGVtZW50LXR5cGUgJ2RvdWJsZS1mbG9hdCkpKQ0KICAgIChkb3RpbWVz
IChpICtkb3VibGUtdmVjLWxlbmd0aCspDQogICAgICAoc2V0ZiAoYXJlZiB2
ZWMgaSkgKGNvZXJjZSBpICdkb3VibGUtZmxvYXQpKSkNCiAgICAoc3lzdGVt
OndpdGhvdXQtZ2NpbmcNCiAgICAgKGhhbGYtZG91YmxlLXZlY3RvciArZG91
YmxlLXZlYy1sZW5ndGgrIChzeXN0ZW06dmVjdG9yLXNhcCB2ZWMpKSkNCiAg
ICB2ZWMpKQ0KICAgIA0KKGRlZnRlc3QgYy10ZXN0LjEgKHN0cmluZy10by11
cHBlciAidGhpcyBpcyBhIHRlc3QiKSAiVEhJUyBJUyBBIFRFU1QiKQ0KKGRl
ZnRlc3QgYy10ZXN0LjIgKHN0cmluZy10by11cHBlciBuaWwpIG5pbCkNCihk
ZWZ0ZXN0IGMtdGVzdC4zIChzdHJpbmctY291bnQtdXBwZXIgIlRoaXMgaXMg
YSBUZXN0IikgMikNCihkZWZ0ZXN0IGMtdGVzdC40IChzdHJpbmctY291bnQt
dXBwZXIgbmlsKSAtMSkNCihkZWZ0ZXN0IGMtdGVzdC41ICh0ZXN0LWhhbGYt
ZG91YmxlLXZlY3RvcikNCiAgKDAuMGQwIDAuNWQwIDEuMGQwIDEuNWQwIDIu
MGQwIDIuNWQwIDMuMGQwIDMuNWQwIDQuMGQwIDQuNWQwKSkNCihkZWZ0ZXN0
IGMtdGVzdC42IChyZXR1cm4tbG9uZy1uZWdhdGl2ZS1vbmUpIC0xKQ0KKGRl
ZnRlc3QgYy10ZXN0LjcgKHJldHVybi1pbnQtbmVnYXRpdmUtb25lKSAtMSkN
CihkZWZ0ZXN0IGMtdGVzdC44IChyZXR1cm4tc2hvcnQtbmVnYXRpdmUtb25l
KSAtMSkNCihkZWZ0ZXN0IGMtdGVzdC45ICh0ZXN0LWFyZ3VtZW50LW91dCAx
MC4wMSkgVCkNCihkZWZ0ZXN0IGMtdGVzdC4xMCAodGVzdC1hcmd1bWVudC1h
bmQtcmV0dXJuLW91dCAxMjMxKSBUKQ0KDQo=

--0-1018233897-1093581639=:67679
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
UFFI-Devel mailing list
[email protected]
http://lists.b9.com/mailman/listinfo/uffi-devel

--0-1018233897-1093581639=:67679--