ffigen -> uffi

Marco Baringer <[email protected]> Fri, 20 Aug 2004 11:34:42 +0200
Newsgroups gmane.lisp.clump
Message-ID <[email protected]>
--=-=-=


attached is a small lisp library which parser ffigen's outut and
generates the corresponding uffi lisp code. currently this is ppc
specific since (afaik) ffigen only runs on ppc, but since the uffi
stuff is, well, universal, it should be possible to generate the uffi
interface once on a mac and distribute to other systems.

it's not perfect (some of the type conversion stuff is admitedly
wrong), it's only been tested on OpenMCL, it may make your computer
explode, etc. that said, it's good enough to build a working uffi
definition for icu 3.0.


--=-=-=
Content-Type: application/octet-stream
Content-Disposition: attachment; filename=parse-ffi.lisp
Content-Transfer-Encoding: base64

Ozs7OyAtKi0gbGlzcCAtKi0KCihkZWZwYWNrYWdlIDpmZmlnZW4KICAoOnVzZSA6Y29tbW9uLWxp
c3ApCiAgKDpleHBvcnQgIzpwYXJzZS1mZmkpKQoKKGluLXBhY2thZ2UgOmZmaWdlbikKCgwKOzs7
OyBQdWJsaWMgRW50cnkgUG9pbnQKCihkZWZ1biBwYXJzZS1mZmkgKGluICZrZXkgb3V0IG1vZHVs
ZSAocGFja2FnZSAoZmluZC1wYWNrYWdlIDpmZmlnZW4pKSkKICAiR2l2ZW4gdGhlIGZmaWdlbiBn
ZW5lcmF0ZWQgZmlsZSBJTiwgZ2VuZXJhdGUgYSBmaWxlIE9VVApjb250YWluaW5nIHRoZSBjb3Jy
ZXNwb25kaW5nIFVGRkkgZm9ybXMuCgpBcmd1bWVudHM6CgpJTiAtIHBhdGhuYW1lIG9mIHRoZSBn
ZW5lcmF0ZWQgZmZpIGludGVyZmFjZS4KCk9VVCAtIHBhdGhuYW1lIG9mIHRoZSBVRkZJIGZpbGUg
dG8gZ2VuZXJhdGUuIERlZmF1bHRzIHRvIElOIHdpdGgKcGF0aG5hbWUtdHlwZSBvZiBcIi5saXNw
XCIuCgpNT0RVTEUgLSBWYWx1ZSBvZiB0aGUgOm1vZHVsZSBhcmd1bWVudCBwYXNzZWQgdG8gVUZG
SSBmdW5jdGlvbnMuCgpQQUNLQUdFIC0gcGFja2FnZSBzcGVjaWZpZXIuIFRoZSBnZW5lcmF0ZWQg
Y29kZSB3aWxsIGJlIGV4ZWN1dGVkCmluIHRoaXMgcGFja2FnZS4gQWxsIFVGRkkgbmFtZXMgKHR5
cGUsIGZ1bmN0aW9ucywgYXJndW1lbnRzLCBldGMpCndpbGwgYmUgaW50ZXJuZWQgaW4gdGhpcyBw
YWNrYWdlLiBUaGlzIHBhY2thZ2UgbXVzdCBleGlzdCB3aGVuCnRoZSBVRkZJIGZpbGUgaXMgZ2Vu
ZXJhdGVkIGFuZCBhbHNvIHdoZW4gdGhlIFVGRkkgZmlsZSBpcyBsb2FkZWQuIgogICh1bmxlc3Mg
KHBhdGhuYW1lLXR5cGUgaW4pCiAgICAoc2V0ZiBpbiAobWVyZ2UtcGF0aG5hbWVzICIuZmZpIiBp
bikpKQogICh1bmxlc3Mgb3V0CiAgICAoc2V0ZiBvdXQgKG1lcmdlLXBhdGhuYW1lcyAiLmxpc3Ai
IGluKSkpCiAgKHdpdGgtb3Blbi1maWxlIChpbi1zdHJlYW0gaW4gOmRpcmVjdGlvbiA6aW5wdXQg
OmlmLWRvZXMtbm90LWV4aXN0IDplcnJvcikKICAgICh3aXRoLW9wZW4tZmlsZSAoKmZmaS1vdXRw
dXQqIG91dCA6ZGlyZWN0aW9uIDpvdXRwdXQgOmlmLWV4aXN0cyA6c3VwZXJzZWRlKQogICAgICAo
ZGVjbGFyZSAoc3BlY2lhbCAqZmZpLW91dHB1dCopKQogICAgICAobGV0ICgoKmZmaS1tb2R1bGUq
IG1vZHVsZSkKICAgICAgICAgICAgKCpmZmktcGFja2FnZSogKGZpbmQtcGFja2FnZSBwYWNrYWdl
KSkpCiAgICAgICAgKGRlY2xhcmUgKHNwZWNpYWwgKmZmaS1tb2R1bGUqICpmZmktcGFja2FnZSop
KQogICAgICAgIChhc3NlcnQgKmZmaS1wYWNrYWdlKgogICAgICAgICAgICAgICAgKHBhY2thZ2Up
CiAgICAgICAgICAgICAgICAiTm8gcGFja2FnZSBuYW1lZDogflMiIHBhY2thZ2UpCiAgICAgICAg
KHdyaXRlLWxpbmUgIjs7IEFVVE9NQVRJQ0FMTFkgR0VORVJBVEVEIEZJTEUuIERPIE5PVCBFRElU
LiIgKmZmaS1vdXRwdXQqKQogICAgICAgIChwcmluMSBgKGluLXBhY2thZ2UgLChwYWNrYWdlLW5h
bWUgKmZmaS1wYWNrYWdlKikpICpmZmktb3V0cHV0KikgICAgICAgIAogICAgICAgICh0ZXJwcmkg
KmZmaS1vdXRwdXQqKQogICAgICAgIChsb29wCiAgICAgICAgICAgZm9yIGZvcm0gPSAobGV0ICgo
KnBhY2thZ2UqIChmaW5kLXBhY2thZ2UgOmZmaWdlbikpKQogICAgICAgICAgICAgICAgICAgICAg
ICAocmVhZCBpbi1zdHJlYW0gbmlsIGluLXN0cmVhbSBuaWwpKQogICAgICAgICAgIHVudGlsIChl
cSBmb3JtIGluLXN0cmVhbSkKICAgICAgICAgICBkbyAobGV0ICgoKnBhY2thZ2UqICpmZmktcGFj
a2FnZSopKQogICAgICAgICAgICAgICAgKHBhcnNlLXJlY29yZCBmb3JtKSkpKSkpCiAgKHZhbHVl
cyBpbiBvdXQpKQoKDAo7Ozs7IEltcGxlbWVudGF0aW9uCgooZGVmdW4gcGFyc2UtcmVjb3JkIChy
ZWNvcmQpCiAgKGRlY2xhcmUgKHNwZWNpYWwgKmZmaS1vdXRwdXQqKSkKICAoZGVzdHJ1Y3R1cmlu
Zy1iaW5kICh0eXBlIChzb3VyY2UtZmlsZSBsaW5lLW51bWJlcikgbmFtZSAmcmVzdCBhcmdzKQog
ICAgICByZWNvcmQKICAgIChmb3JtYXQgKmZmaS1vdXRwdXQqICI7IH5TIH5BIGZyb20gfkE6fkR+
JSIgdHlwZSBuYW1lIChpZiAoc3RyaW5nPSBzb3VyY2UtZmlsZSAiIikKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5zcGVjaWZp
ZWQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc291cmNlLWZpbGUpIGxpbmUtbnVtYmVyKQogICAgKHByaW4xCiAgICAgKGVjYXNl
IHR5cGUKICAgICAgIChmdW5jdGlvbiAocGFyc2UtZnVuY3Rpb24tcmVjb3JkIG5hbWUgYXJncykp
CiAgICAgICAodmFyIChwYXJzZS12YXItcmVjb3JkIG5hbWUgYXJncykpCiAgICAgICAodHlwZSAo
cGFyc2UtdHlwZS1yZWNvcmQgbmFtZSBhcmdzKSkKICAgICAgIChzdHJ1Y3QgKHBhcnNlLXN0cnVj
dC1yZWNvcmQgbmFtZSBhcmdzKSkKICAgICAgICh1bmlvbiAocGFyc2UtdW5pb24tcmVjb3JkIG5h
bWUgYXJncykpCiAgICAgICAoZW51bSAocGFyc2UtZW51bS1yZWNvcmQgbmFtZSBhcmdzKSkKICAg
ICAgICgoZW51bS1pZGVudCBtYWNybykgbmlsKSkKICAgICAqZmZpLW91dHB1dCopCiAgICAodGVy
cHJpICpmZmktb3V0cHV0KikpCiAgdCkKCihkZWZ1biBtYWtlLWZmaS1uYW1lIChuYW1lLXN0cmlu
ZykKICAiY29udmVydCBhIHN0cmluZyBhcyBmb3VuZCBpbiBhIC5mZmkgZmlsZSB0byBhCiAgc3lt
Ym9sLiBzb21ldGhpbWVzIGZmaSBtZXNzZXMgdXAgKHR5cGVkZWYgc3RydWN0IHsgLi4uIH0KICB0
eXBlX25hbWU7KSBhbmQgd2UgbmVlZCB0byBtYW5nbGUgdGhlIG5hbWUgYSBiaXQuIgogIChkZWNs
YXJlIChzcGVjaWFsICpmZmktcGFja2FnZSopKQogIChpZiAoZXZlcnkgIydkaWdpdC1jaGFyLXAg
bmFtZS1zdHJpbmcpCiAgICAgIChsZXQgKChtYW5nbGVkLW5hbWUgKGludGVybiAoZm9ybWF0IG5p
bCAiRkZJLUFSRy1+QSIgbmFtZS1zdHJpbmcpICpmZmktcGFja2FnZSopKSkKICAgICAgICAod2Fy
biAiQWxsIGRpZ2l0IG5hbWUsIGNoZWNrIGZmaSBvdXR1cHV0LiB1c2luZyB+UyBpbnN0ZWFkLiIg
bWFuZ2xlZC1uYW1lKQogICAgICAgIG1hbmdsZWQtbmFtZSkKICAgICAgKGludGVybiBuYW1lLXN0
cmluZyAqZmZpLXBhY2thZ2UqKSkpCgooZGVmdW4gcGFyc2UtZnVuY3Rpb24tcmVjb3JkIChuYW1l
IGFyZ3MpCiAgImNyZWF0ZSBhIHVmZmk6ZGVmLWZ1bmN0aW9uLiBzaW5jZSBmZmlnZW4gdGhyb3dz
IGF3YXkgdGhlIGFyZwogIG5hbWUgaW5mbyB3ZSBidWlsZCB1cCBzb21lIGR1bW15IG5hbWVzLiIK
ICAoZGVjbGFyZSAoc3BlY2lhbCAqZmZpLW1vZHVsZSopKQogIChkZXN0cnVjdHVyaW5nLWJpbmQg
KHR5cGUgYXR0cmlidXRlcykKICAgICAgYXJncwogICAgKGRlY2xhcmUgKGlnbm9yZSBhdHRyaWJ1
dGVzKSkKICAgIChkZXN0cnVjdHVyaW5nLWJpbmQgKGZ1bmN0aW9uIGFyZy10eXBlcyByZXR1cm4t
dHlwZSkKICAgICAgICB0eXBlCiAgICAgIChkZWNsYXJlIChpZ25vcmUgZnVuY3Rpb24pKQogICAg
ICAobGV0ICgoYXJnLXR5cGVzIChtYXBjYXIgIydjb252ZXJ0LXR5cGVzcGVjIGFyZy10eXBlcykp
KQogICAgICAgICh3aGVuIChhbmQgKD0gKGxlbmd0aCBhcmctdHlwZXMpIDEpCiAgICAgICAgICAg
ICAgICAgICAoZXFsIDp2b2lkIChmaXJzdCBhcmctdHlwZXMpKSkKICAgICAgICAgIChzZXRmIGFy
Zy10eXBlcyBuaWwpKQogICAgICAgIGAodWZmaTpkZWYtZnVuY3Rpb24gKCxuYW1lICwobWFrZS1m
ZmktbmFtZSBuYW1lKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICwobWFwY2FyIChsYW1i
ZGEgKHR5cGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaXN0IChn
ZW5zeW0gIkFSRy0iKSB0eXBlKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFyZy10eXBlcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpyZXR1cm5pbmcgLChjb252
ZXJ0LXR5cGVzcGVjIHJldHVybi10eXBlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgOm1v
ZHVsZSAsKmZmaS1tb2R1bGUqKSkpKSkKCihkZWZ1biBwYXJzZS10eXBlLXJlY29yZCAobmFtZSBh
cmdzKQogICJjcmVhdGUgYSB1ZmZpOmRlZi1mb3JlaWduLXR5cGUuIgogIChsZXQgKCh0eXBlLXNw
ZWMgKGNvbnZlcnQtdHlwZXNwZWMgKGZpcnN0IGFyZ3MpKSkpCiAgICBgKHVmZmk6ZGVmLWZvcmVp
Z24tdHlwZSAsKG1ha2UtZmZpLW5hbWUgbmFtZSkgLHR5cGUtc3BlYykpKQoKKGRlZnVuIHBhcnNl
LXN0cnVjdC1maWVsZCAoZmllbGQpCiAgKGRlc3RydWN0dXJpbmctYmluZCAobmFtZSAoZmllbGQg
dHlwZSBvZmZzZXQgc2l6ZSkpCiAgICAgIGZpZWxkCiAgICAoZGVjbGFyZSAoaWdub3JlIGZpZWxk
IG9mZnNldCBzaXplKSkKICAgIChsaXN0IChtYWtlLWZmaS1uYW1lIG5hbWUpIChjb252ZXJ0LXR5
cGVzcGVjIHR5cGUpKSkpCgooZGVmdW4gcGFyc2Utc3RydWN0LXJlY29yZCAobmFtZSBhcmdzKQog
IChsZXQgKChyb3ctc3BlY3MgKGZpcnN0IGFyZ3MpKSkKICAgIGAodWZmaTpkZWYtc3RydWN0ICwo
bWFrZS1mZmktbmFtZSBuYW1lKQogICAgICAgICAsQChtYXBjYXIgIydwYXJzZS1zdHJ1Y3QtZmll
bGQgcm93LXNwZWNzKSkpKQoKKGRlZnVuIHBhcnNlLXZhci1yZWNvcmQgKG5hbWUgYXJncykKICAo
ZGVjbGFyZSAoc3BlY2lhbCAqZmZpLW1vZHVsZSopKQogIChsZXQgKCh0eXBlLXNwZWMgKGNvbnZl
cnQtdHlwZXNwZWMgKGZpcnN0IGFyZ3MpKSkKICAgICAgICAoYXR0cmlidXRlcyAoc2Vjb25kIGFy
Z3MpKSkKICAgIChpZiAobWVtYmVyICdjb25zdCBhdHRyaWJ1dGVzKQogICAgICAgIChlcnJvciAi
RG9uJ3Qga25vdyBob3cgdG8gaGFuZGxlIGNvbnN0YW50cyB5ZXQuIikKICAgICAgICBgKHVmZmk6
ZGVmLWZvcmVpZ24tdmFyICgsbmFtZSAsKG1ha2UtZmZpLW5hbWUgbmFtZSkpICx0eXBlLXNwZWMg
LCpmZmktbW9kdWxlKikpKSkKCihkZWZ1biBwYXJzZS1lbnVtLXJlY29yZCAobmFtZSBhcmdzKQog
IGAodWZmaTpkZWYtZW51bSAsKG1ha2UtZmZpLW5hbWUgbmFtZSkKICAgICAgICwobWFwY2FyIChs
YW1iZGEgKGZpZWxkKQogICAgICAgICAgICAgICAgICAobGlzdCAobWFrZS1mZmktbmFtZSAoZmly
c3QgZmllbGQpKSAoc2Vjb25kIGZpZWxkKSkpCiAgICAgICAgICAgICAgICAoZmlyc3QgYXJncykp
KSkKCihkZWZ1biBwYXJzZS11bmlvbi1yZWNvcmQgKG5hbWUgYXJncykKICBgKHVmZmk6ZGVmLXVu
aW9uICwobWFrZS1mZmktbmFtZSBuYW1lKQogICAgICAgLEAobWFwY2FyIChsYW1iZGEgKGZpZWxk
KQogICAgICAgICAgICAgICAgICAgKGRlc3RydWN0dXJpbmctYmluZCAobmFtZSAoZmllbGQtc3lt
Ym9sIHR5cGUgb2Zmc2V0IHNpemUpKQogICAgICAgICAgICAgICAgICAgICAgIGZpZWxkCiAgICAg
ICAgICAgICAgICAgICAgIChkZWNsYXJlIChpZ25vcmUgZmllbGQtc3ltYm9sIG9mZnNldCBzaXpl
KSkKICAgICAgICAgICAgICAgICAgICAgKGxpc3QgKG1ha2UtZmZpLW5hbWUgbmFtZSkgKGNvbnZl
cnQtdHlwZXNwZWMgdHlwZSkpKSkKICAgICAgICAgICAgICAgICAoZmlyc3QgYXJncykpKSkKCihk
ZWZ1biBjb252ZXJ0LXR5cGVzcGVjICh0eXBlLXNwZWMpCiAgImNvbnZlcnQsIGFzIG11Y2ggYXMg
cG9zc2libGUsIGEgZmZpZ2VuIHR5cGVzcGVjIHRvIGEgdWZmaSB0eXBlc3BlYy4iCiAgKGVjYXNl
IChmaXJzdCB0eXBlLXNwZWMpCiAgICAoc3RydWN0LXJlZiBgKDpzdHJ1Y3QgLChtYWtlLWZmaS1u
YW1lIChzZWNvbmQgdHlwZS1zcGVjKSkpKQogICAgKHVuaW9uLXJlZiBgKDp1bmlvbiAsKG1ha2Ut
ZmZpLW5hbWUgKHNlY29uZCB0eXBlLXNwZWMpKSkpCiAgICAoZW51bS1yZWYgKG1ha2UtZmZpLW5h
bWUgKHNlY29uZCB0eXBlLXNwZWMpKSkKICAgIChmdW5jdGlvbgogICAgICh3YXJuICJJZ25vcmlu
ZyBmdW5jdGlvbiBwb2ludGVyIHR5cGU6IH5TLiIgdHlwZS1zcGVjKQogICAgIGAoOiogOnZvaWQp
KQogICAgKHBvaW50ZXIgYCg6KiAsKGNvbnZlcnQtdHlwZXNwZWMgKHNlY29uZCB0eXBlLXNwZWMp
KSkpCiAgICAoYXJyYXkKICAgICA7OyB3ZSBpZ25vcmUgdGhlIDx2YWx1ZT4gcGFyYW0gaW4gYXJy
YXkgc3BlY3MKICAgICBgKDoqICwoY29udmVydC10eXBlc3BlYyAodGhpcmQgdHlwZS1zcGVjKSkp
KQogICAgKHR5cGVkZWYgKG1ha2UtZmZpLW5hbWUgKHNlY29uZCB0eXBlLXNwZWMpKSkKICAgIDs7
IGtub3duIHByaW1pdGl2ZXMKICAgIChjaGFyIDpjaGFyKQogICAgKHNpZ25lZC1jaGFyIDpjaGFy
KQogICAgKHVuc2lnbmVkLWNoYXIgOnVuc2lnbmVkLWNoYXIpCiAgICAoc2hvcnQgOnNob3J0KQog
ICAgKHVuc2lnbmVkLXNob3J0IDp1bnNpZ25lZC1zaG9ydCkKICAgIChpbnQgOmludCkKICAgICh1
bnNpZ25lZCA6dW5zaWduZWQtaW50KQogICAgOzs7OyBYWFggdGhpcyBpcyByZWFsbHkgYmFkLgog
ICAgKChsb25nIGxvbmctbG9uZykgOmxvbmcpCiAgICA7Ozs7IGlkZW0KICAgICgodW5zaWduZWQt
bG9uZyB1bnNpZ25lZC1sb25nLWxvbmcpIDp1bnNpZ25lZC1sb25nKQogICAgKGZsb2F0IDpmbG9h
dCkKICAgIChkb3VibGUgOmRvdWJsZSkKICAgICh2b2lkIDp2b2lkKSkpCgo7Ozs7IENPUFlSSUdI
VCAoQykgMjAwNCBFZHdhcmQgTWFyY28gQmFyaW5nZXIuCjs7OzsgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KOzs7OyAKOzs7OyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKOzs7OyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKOzs7OyBhcmUgbWV0Ogo7Ozs7
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Cjs7OzsgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgo7Ozs7IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cjs7OzsgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQo7Ozs7ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCjs7OzsgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgYXV0
aG9yIG5vciB0aGUgbmFtZXMgb2YgdGhlIGNvbnRyaWJ1dG9ycwo7Ozs7ICAgIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2Fy
ZQo7Ozs7ICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgo7Ozs7
IAo7Ozs7IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUlMgQU5EIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5ECjs7OzsgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCjs7OzsgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UKOzs7OyBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JT
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKOzs7OyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAo7Ozs7IERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTCjs7OzsgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCjs7OzsgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKOzs7
OyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZCjs7OzsgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgo7Ozs7IFNVQ0ggREFNQUdFLgo=
--=-=-=


p.s. - so, who's going to port ffigen to linux and windows? :)

-- 
-Marco
Ring the bells that still can ring.
Forget your perfect offering.
There is a crack in everything.
That's how the light gets in.
     -Leonard Cohen

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

_______________________________________________
Clump mailing list
[email protected]
http://manly.caddr.com/mailman/listinfo/clump

--=-=-=--