sane-project-website/old-archive/1998-12/0329.html

273 wiersze
15 KiB
HTML
Czysty Zwykły widok Historia

<!-- received="Thu Dec 31 07:32:43 1998 PST" -->
<!-- sent="Thu, 31 Dec 1998 15:32:43 +0000 (GMT)" -->
<!-- name="Nick Lamb" -->
<!-- email="njl98r@ecs.soton.ac.uk" -->
<!-- subject="Roll up, Roll up. Test your backend" -->
<!-- id="" -->
<!-- inreplyto="" -->
<title>sane-devel: Roll up, Roll up. Test your backend</title>
<h1>Roll up, Roll up. Test your backend</h1>
<b>Nick Lamb</b> (<a href="mailto:njl98r@ecs.soton.ac.uk"><i>njl98r@ecs.soton.ac.uk</i></a>)<br>
<i>Thu, 31 Dec 1998 15:32:43 +0000 (GMT)</i>
<p>
<ul>
<li> <b>Messages sorted by:</b> <a href="date.html#329">[ date ]</a><a href="index.html#329">[ thread ]</a><a href="subject.html#329">[ subject ]</a><a href="author.html#329">[ author ]</a>
<!-- next="start" -->
<li> <b>Next message:</b> <a href="0330.html">Robert Brink: "Re: Very slow colour scanning with Trust Imagery 1200SP (= Mustek MSF-06000SP)"</a>
<li> <b>Previous message:</b> <a href="0328.html">Hugo van der Kooij: "Re: Forwards-Backwards"</a>
<!-- nextthread="start" -->
<!-- reply="end" -->
</ul>
<!-- body="start" -->
This message is in MIME format. The first part should be readable text,<br>
while the remaining parts are likely unreadable without MIME-aware tools.<br>
Send mail to <a href="mailto:mime@docserver.cac.washington.edu">mime@docserver.cac.washington.edu</a> for more info.<br>
<p>
--1318610500-70641457-915118363=:29443<br>
Content-Type: TEXT/PLAIN; charset=US-ASCII<br>
<p>
<p>
A while back I reported that SANE 1.0 has a broken PNM device driver.<br>
While I was waiting for it to be fixed (someone?) I offered to write<br>
a test frontend that would spot this sort of stupidity. Here it is.<br>
<p>
I have added functionality to SANE's scanimage so that it can hopefully<br>
detect broken SANE backends. A patch attached to this mail. I can also<br>
make it available for HTTP if anyone asks.<br>
<p>
The file scanimage-test-patch is a patch to be applied directly to the<br>
file frontend/scanimage.c.<br>
<p>
I would like to see this patch, or something similar, applied before<br>
SANE 1.0.1 is made available, but it should perhaps be enclosed in<br>
#ifdefs so that by default the test features aren't compiled in. This<br>
is especially the case if some hardware+backend combos are still<br>
broken when shipped with 1.0.1 -- I hope that doesn't happen.<br>
<p>
What does it do?<br>
----------------<br>
<p>
This frontend detects problems with SANE backends which do not fully<br>
meet the SANE specification. In this first version I have concentrated<br>
on a problem which several backends "In the wild" are known to have.<br>
In particular this version checks that the backend correctly handles<br>
sane_read(...) even for unusual and varying buffer length values. It<br>
detects backends which overflow the buffer or incorrectly report the<br>
amount of data read and it also detects backends which sometimes don't<br>
write any data even after a blocking read.<br>
<p>
Why should I use it?<br>
--------------------<br>
<p>
If you're a SANE end-user you probably don't want to try this. If you<br>
do try it, and it detects a problem with a backend you use, please<br>
report it to the SANE developers mailing list, where hopefully someone<br>
will notice and take appropriate action.<br>
<p>
If you're a SANE frontend developer, you probably don't want to try <br>
this. The exception is if your frontend has problems in sane_read(...)<br>
on some backends, but not others. In that case this patch may help<br>
you to show that the problem is in the backend, and you can breathe<br>
a sigh of relief.<br>
<p>
If you're a SANE backend developer, and you have working code, you<br>
really should try this frontend. Any properly working backend should<br>
pass with no trouble, but those which don't are a problem. In the<br>
future hopefully a program somewhat like this one will form part of<br>
a self-certification test for new SANE backends...<br>
<p>
If you're a SANE backend developer, but you don't yet have working code<br>
you should be reminded that sane_read(...) is used very politely by<br>
the two commonest frontends, scanimage and xscanimage. Your code should<br>
be written to work with /any/ frontend, and that means this one too.<br>
<p>
If you're a core developer, please take a look at this and see if you<br>
think the tests done here should be _required_ before a backend is<br>
made part of the core SANE distribution in future. Also please try it<br>
with any backends for which you have appropriate hardware, as a double<br>
check in case the maintainer doesn't see this.<br>
<p>
How do I compile it?<br>
--------------------<br>
<p>
After applying the patch, simply recompile and (optionally) re-install<br>
the scanimage frontend. The new code should work on all the platforms<br>
for which scanimage itself was tested. It works for me (TM)<br>
<p>
How do I use it?<br>
----------------<br>
<p>
Simply add the parameter --test or -T to an ordinary scanimage run, and<br>
the test code is invoked in place of the ordinary scanimage sane_read<br>
code. Unlike a normal scan, there is no data written to stdout for the<br>
test scan.<br>
<p>
e.g. scanimage -d pnm:0 -T --filename /path/to/some.ppm<br>
<p>
After some initial diagnostic messages, there are a series of lines<br>
each containing a description of the test being performed, then either<br>
PASS or FAIL and a brief explanation of the problem.<br>
<p>
It is NOT acceptable for a backend to FAIL any of the tests. If it is<br>
not possible to handle the extreme values tried by --test in your<br>
backend (e.g. due to hardware limitations) then you should return a<br>
suitable SANE error status and note the limitation under BUGS in the<br>
manual page for your backend.<br>
<p>
Feedback<br>
--------<br>
<p>
I have only tested this on an Intel PC with no physical scanners. For<br>
testing I used only the PNM:0 and PNM:1 devices. Therefore I cannot<br>
say for sure that this works with _any_ known scanners in the real world<br>
I hope some of you will help rectify that by sending me bug reports.<br>
<p>
I would also appreciate info about other ways in which some backends are<br>
known not to meet the SANE standard. This code should evolve to test<br>
for compliance as thoroughly as possible.<br>
<p>
Nick<br>
<a href="mailto:njl195@zepler.org.uk">njl195@zepler.org.uk</a><br>
<p>
--1318610500-70641457-915118363=:29443<br>
Content-Type: TEXT/PLAIN; charset=US-ASCII; name=scanimage-test-patch<br>
Content-Transfer-Encoding: BASE64<br>
Content-ID: &lt;<a href="mailto:Pine.LNX.3.96.981231153243.29443B@chef.ecs.soton.ac.uk">Pine.LNX.3.96.981231153243.29443B@chef.ecs.soton.ac.uk</a>&gt;<br>
Content-Description: Scanimage patch<br>
<p>
LS0tIHNjYW5pbWFnZS5jLm9sZAlUaHUgRGVjIDMxIDEzOjIzOjU1IDE5OTgN<br>
CisrKyBzY2FuaW1hZ2UuYwlUaHUgRGVjIDMxIDEzOjM4OjA0IDE5OTgNCkBA<br>
IC01OSwxOCArNTksMTkgQEANCiAgIHsibGlzdC1kZXZpY2VzIiwgbm9fYXJn<br>
dW1lbnQsIE5VTEwsICdMJ30sDQogICB7ImhlbHAiLCBub19hcmd1bWVudCwg<br>
TlVMTCwgJ2gnfSwNCiAgIHsidmVyYm9zZSIsIG5vX2FyZ3VtZW50LCBOVUxM<br>
LCAndid9LA0KKyAgeyJ0ZXN0Iiwgbm9fYXJndW1lbnQsIE5VTEwsICdUJ30s<br>
DQogICB7InZlcnNpb24iLCBub19hcmd1bWVudCwgTlVMTCwgJ1YnfSwNCiAg<br>
IHswLCB9DQogfTsNCiANCi0jZGVmaW5lIEJBU0VfT1BUU1RSSU5HCSJkOmhM<br>
dlYiDQorI2RlZmluZSBCQVNFX09QVFNUUklORwkiZDpoTHZWVCINCiAjZGVm<br>
aW5lIFNUUklQX0hFSUdIVAkyNTYJLyogIyBsaW5lcyB3ZSBpbmNyZW1lbnQg<br>
aW1hZ2UgaGVpZ2h0ICovDQogDQogc3RhdGljIHN0cnVjdCBvcHRpb24gKiBh<br>
bGxfb3B0aW9uczsNCiBzdGF0aWMgaW50IG9wdGlvbl9udW1iZXJfbGVuOw0K<br>
IHN0YXRpYyBpbnQgKiBvcHRpb25fbnVtYmVyOw0KIHN0YXRpYyBTQU5FX0hh<br>
bmRsZSBkZXZpY2U7DQotc3RhdGljIGludCB2ZXJib3NlOw0KK3N0YXRpYyBp<br>
bnQgdmVyYm9zZSwgdGVzdDsNCiBzdGF0aWMgaW50IGhlbHA7DQogc3RhdGlj<br>
IGNvbnN0IGNoYXIgKiBwcm9nX25hbWU7DQogc3RhdGljIFNBTkVfT3B0aW9u<br>
X0Rlc2NyaXB0b3Igd2luZG93X29wdGlvblsyXTsNCkBAIC05MzgsNiArOTM5<br>
LDEwNiBAQA0KICAgICBmcmVlIChpbWFnZS5kYXRhKTsNCiB9DQogDQorc3Rh<br>
dGljIHZvaWQgY2xlYW5fYnVmZmVyKFNBTkVfQnl0ZSAqYnVmZmVyLCBpbnQg<br>
c2l6ZSkgew0KKyAgaW50IGk7DQorICBmb3IgKGk9IDA7IGkgPCBzaXplOyAr<br>
K2kpIHsNCisgICAgYnVmZmVyW2ldPSAweDIzOw0KKyAgfQ0KK30NCisNCitz<br>
dGF0aWMgdm9pZA0KK3Bhc3NfZmFpbCAoaW50IG1heCwgaW50IGxlbiwgU0FO<br>
RV9CeXRlICpidWZmZXIsIFNBTkVfU3RhdHVzIHN0YXR1cykgew0KKyAgaWYg<br>
KHN0YXR1cyAhPSBTQU5FX1NUQVRVU19HT09EKSB7DQorICAgIGZwcmludGYo<br>
c3RkZXJyLCAiRkFJTCBFcnJvcjogJXNcbiIsIHNhbmVfc3Ryc3RhdHVzKHN0<br>
YXR1cykpOw0KKyAgfSBlbHNlIGlmIChidWZmZXJbbGVuXSAhPSAweDIzKSB7<br>
DQorICAgIHdoaWxlKGJ1ZmZlcltsZW5dICE9IDB4MjMpIGxlbisrOw0KKyAg<br>
ICBmcHJpbnRmKHN0ZGVyciwgIkZBSUwgQ2hlYXQ6ICVkIGJ5dGVzXG4iLCBs<br>
ZW4pOw0KKyAgfSBlbHNlIGlmIChsZW4gPiBtYXgpIHsNCisgICAgZnByaW50<br>
ZihzdGRlcnIsICJGQUlMIE92ZXJmbG93OiAlZCBieXRlc1xuIiwgbGVuKTsN<br>
CisgIH0gZWxzZSBpZiAobGVuID09IDApIHsNCisgICAgZnByaW50ZihzdGRl<br>
cnIsICJGQUlMIE5vIGRhdGFcbiIpOw0KKyAgfSBlbHNlIHsNCisgICAgZnBy<br>
aW50ZihzdGRlcnIsICJQQVNTXG4iKTsNCisgIH0NCit9DQorDQorc3RhdGlj<br>
IHZvaWQNCit0ZXN0X2l0ICh2b2lkKQ0KK3sNCisgIGludCBpLCBsZW47DQor<br>
ICBTQU5FX1BhcmFtZXRlcnMgcGFybTsNCisgIFNBTkVfU3RhdHVzIHN0YXR1<br>
czsNCisgIEltYWdlIGltYWdlID0gezAsIH07DQorICBzdGF0aWMgY29uc3Qg<br>
Y2hhciAqZm9ybWF0X25hbWVbXSA9DQorICAgIHsgImdyYXkiLCAiUkdCIiwg<br>
InJlZCIsICJncmVlbiIsICJibHVlIiB9Ow0KKw0KKyAgc3RhdHVzID0gc2Fu<br>
ZV9zdGFydCAoZGV2aWNlKTsNCisgIGlmIChzdGF0dXMgIT0gU0FORV9TVEFU<br>
VVNfR09PRCkgew0KKyAgICBmcHJpbnRmIChzdGRlcnIsICIlczogc2FuZV9z<br>
dGFydDogJXNcbiIsDQorICAgICAgICAgICAgIHByb2dfbmFtZSwgc2FuZV9z<br>
dHJzdGF0dXMgKHN0YXR1cykpOw0KKyAgICBnb3RvIGNsZWFudXA7DQorICB9<br>
DQorDQorICBzdGF0dXMgPSBzYW5lX2dldF9wYXJhbWV0ZXJzIChkZXZpY2Us<br>
ICZwYXJtKTsNCisgIGlmIChzdGF0dXMgIT0gU0FORV9TVEFUVVNfR09PRCkg<br>
ew0KKyAgICBmcHJpbnRmIChzdGRlcnIsICIlczogc2FuZV9nZXRfcGFyYW1l<br>
dGVyczogJXNcbiIsDQorICAgICAgICAgICAgIHByb2dfbmFtZSwgc2FuZV9z<br>
dHJzdGF0dXMgKHN0YXR1cykpOw0KKyAgICBnb3RvIGNsZWFudXA7DQorICB9<br>
DQorDQorICBpZiAocGFybS5saW5lcyA+PSAwKSB7DQorICAgIGZwcmludGYg<br>
KHN0ZGVyciwgIiVzOiBzY2FubmluZyBpbWFnZSBvZiBzaXplICVkeCVkIHBp<br>
eGVscyBhdCAiDQorICAgICAgICAgICAgICIlZCBiaXRzL3BpeGVsXG4iLA0K<br>
KyAgICAgICAgICAgICBwcm9nX25hbWUsIHBhcm0ucGl4ZWxzX3Blcl9saW5l<br>
LCBwYXJtLmxpbmVzLA0KKyAgICAgICAgICAgICA4ICogcGFybS5ieXRlc19w<br>
ZXJfbGluZSAvIHBhcm0ucGl4ZWxzX3Blcl9saW5lKTsNCisgIH0gZWxzZSB7<br>
DQorICAgIGZwcmludGYgKHN0ZGVyciwgIiVzOiBzY2FubmluZyBpbWFnZSAl<br>
ZCBwaXhlbHMgd2lkZSBhbmQgIg0KKyAgICAgICAgICAgICAidmFyaWFibGUg<br>
aGVpZ2h0IGF0ICVkIGJpdHMvcGl4ZWxcbiIsDQorICAgICAgICAgICAgIHBy<br>
b2dfbmFtZSwgcGFybS5waXhlbHNfcGVyX2xpbmUsDQorICAgICAgICAgICAg<br>
IDggKiBwYXJtLmJ5dGVzX3Blcl9saW5lIC8gcGFybS5waXhlbHNfcGVyX2xp<br>
bmUpOw0KKyAgfQ0KKyAgZnByaW50ZiAoc3RkZXJyLCAiJXM6IGFjcXVpcmlu<br>
ZyAlcyBmcmFtZSwgJWQgYml0cy9zYW1wbGVcbiIsDQorICAgICAgICAgICBw<br>
cm9nX25hbWUsIGZvcm1hdF9uYW1lW3Bhcm0uZm9ybWF0XSwgcGFybS5kZXB0<br>
aCk7DQorDQorICBpbWFnZS5kYXRhPSBtYWxsb2MocGFybS5ieXRlc19wZXJf<br>
bGluZSAqIDIpOw0KKw0KKyAgY2xlYW5fYnVmZmVyKGltYWdlLmRhdGEsIHBh<br>
cm0uYnl0ZXNfcGVyX2xpbmUgKiAyKTsNCisgIGZwcmludGYgKHN0ZGVyciwg<br>
IiVzOiByZWFkaW5nIG9uZSBzY2FubGluZSwgJWQgYnl0ZXMuLi5cdCIsIHBy<br>
b2dfbmFtZSwNCisgICAgICAgICAgIHBhcm0uYnl0ZXNfcGVyX2xpbmUpOw0K<br>
KyAgc3RhdHVzPSBzYW5lX3JlYWQoZGV2aWNlLCBpbWFnZS5kYXRhLCBwYXJt<br>
LmJ5dGVzX3Blcl9saW5lLCAmbGVuKTsNCisgIHBhc3NfZmFpbChwYXJtLmJ5<br>
dGVzX3Blcl9saW5lLCBsZW4sIGltYWdlLmRhdGEsIHN0YXR1cyk7DQorICBp<br>
ZiAoc3RhdHVzICE9IFNBTkVfU1RBVFVTX0dPT0QpIGdvdG8gY2xlYW51cDsN<br>
CisNCisgIGNsZWFuX2J1ZmZlcihpbWFnZS5kYXRhLCBwYXJtLmJ5dGVzX3Bl<br>
cl9saW5lICogMik7DQorICBmcHJpbnRmIChzdGRlcnIsICIlczogcmVhZGlu<br>
ZyBvbmUgYnl0ZS4uLlx0XHQiLCBwcm9nX25hbWUpOw0KKyAgc3RhdHVzPSBz<br>
YW5lX3JlYWQoZGV2aWNlLCBpbWFnZS5kYXRhLCAxLCAmbGVuKTsNCisgIHBh<br>
c3NfZmFpbCgxLCBsZW4sIGltYWdlLmRhdGEsIHN0YXR1cyk7DQorICBpZiAo<br>
c3RhdHVzICE9IFNBTkVfU1RBVFVTX0dPT0QpIGdvdG8gY2xlYW51cDsNCisN<br>
CisgIGZvciAoaT0yOyBpIDwgcGFybS5ieXRlc19wZXJfbGluZSAqIDI7IGkq<br>
PTIpIHsNCisgICAgY2xlYW5fYnVmZmVyKGltYWdlLmRhdGEsIHBhcm0uYnl0<br>
ZXNfcGVyX2xpbmUgKiAyKTsNCisgICAgZnByaW50ZiAoc3RkZXJyLCAiJXM6<br>
IHN0ZXBwZWQgcmVhZCwgJWQgYnl0ZXMuLi4gXHQiLCBwcm9nX25hbWUsDQor<br>
ICAgICAgICAgICAgIGkpOw0KKyAgICBzdGF0dXM9IHNhbmVfcmVhZChkZXZp<br>
Y2UsIGltYWdlLmRhdGEsIGksICZsZW4pOw0KKyAgICBwYXNzX2ZhaWwoaSwg<br>
bGVuLCBpbWFnZS5kYXRhLCBzdGF0dXMpOw0KKyAgICBpZiAoc3RhdHVzICE9<br>
IFNBTkVfU1RBVFVTX0dPT0QpIGdvdG8gY2xlYW51cDsNCisgIH0NCisNCisg<br>
IGZvciAoaS89MjsgaSA+IDI7IGkvPTIpIHsNCisgICAgY2xlYW5fYnVmZmVy<br>
KGltYWdlLmRhdGEsIHBhcm0uYnl0ZXNfcGVyX2xpbmUgKiAyKTsNCisgICAg<br>
ZnByaW50ZiAoc3RkZXJyLCAiJXM6IHN0ZXBwZWQgcmVhZCwgJWQgYnl0ZXMu<br>
Li4gXHQiLCBwcm9nX25hbWUsDQorICAgICAgICAgICAgIGkgLSAxKTsNCisg<br>
ICAgc3RhdHVzPSBzYW5lX3JlYWQoZGV2aWNlLCBpbWFnZS5kYXRhLCBpIC0g<br>
MSwgJmxlbik7DQorICAgIHBhc3NfZmFpbChpIC0gMSwgbGVuLCBpbWFnZS5k<br>
YXRhLCBzdGF0dXMpOw0KKyAgICBpZiAoc3RhdHVzICE9IFNBTkVfU1RBVFVT<br>
X0dPT0QpIGdvdG8gY2xlYW51cDsNCisgIH0NCisgDQorY2xlYW51cDoNCisg<br>
IHNhbmVfY2FuY2VsIChkZXZpY2UpOw0KKyAgaWYgKGltYWdlLmRhdGEpDQor<br>
ICAgIGZyZWUgKGltYWdlLmRhdGEpOw0KK30NCisNCiBpbnQNCiBtYWluIChp<br>
bnQgYXJnYywgY2hhciAqKmFyZ3YpDQogew0KQEAgLTk3NSw2ICsxMDc2LDcg<br>
QEANCiAJY2FzZSAnZCc6IGRldm5hbWUgPSBvcHRhcmc7IGJyZWFrOw0KIAlj<br>
YXNlICdoJzogaGVscCA9IDE7IGJyZWFrOw0KIAljYXNlICd2JzogKyt2ZXJi<br>
b3NlOyBicmVhazsNCisJY2FzZSAnVCc6IHRlc3Q9IDE7IGJyZWFrOw0KIAlj<br>
YXNlICdMJzoNCiAJICB7DQogCSAgICBpbnQgaTsNCkBAIC0xMDE0LDYgKzEx<br>
MTYsNyBAQA0KIC1kLCAtLWRldmljZS1uYW1lPURFVklDRSAgIHVzZSBhIGdp<br>
dmVuIHNjYW5uZXIgZGV2aWNlXG5cDQogLWgsIC0taGVscCAgICAgICAgICAg<br>
ICAgICAgZGlzcGxheSB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdFxuXA0K<br>
IC1MLCAtLWxpc3QtZGV2aWNlcyAgICAgICAgIHNob3cgYXZhaWxhYmxlIHNj<br>
YW5uZXIgZGV2aWNlc1xuXA0KKy1ULCAtLXRlc3QgICAgICAgICAgICAgICAg<br>
IHRlc3QgYmFja2VuZCB0aG9yb3VnaGx5XG5cDQogLXYsIC0tdmVyYm9zZSAg<br>
ICAgICAgICAgICAgZ2l2ZSBldmVuIG1vcmUgc3RhdHVzIG1lc3NhZ2VzXG5c<br>
DQogLVYsIC0tdmVyc2lvbiAgICAgICAgICAgICAgcHJpbnQgdmVyc2lvbiBp<br>
bmZvcm1hdGlvblxuIiwNCiAJICAgIHByb2dfbmFtZSk7DQpAQCAtMTEyMSw3<br>
ICsxMjI0LDcgQEANCiAJICAgIGNhc2UgJz8nOg0KIAkgICAgICBleGl0ICgx<br>
KTsJLyogZXJyb3IgbWVzc2FnZSBpcyBwcmludGVkIGJ5IGdldG9wdF9sb25n<br>
KCkgKi8NCiANCi0JICAgIGNhc2UgJ2QnOiBjYXNlICdoJzogY2FzZSAndic6<br>
IGNhc2UgJ1YnOg0KKwkgICAgY2FzZSAnZCc6IGNhc2UgJ2gnOiBjYXNlICd2<br>
JzogY2FzZSAnVic6IGNhc2UgJ1QnOg0KIAkgICAgICAvKiBwcmV2aW91c2x5<br>
IGhhbmRsZWQgb3B0aW9ucyAqLw0KIAkgICAgICBicmVhazsNCiANCkBAIC0x<br>
MjMxLDcgKzEzMzQsMTAgQEANCiAgIHNpZ25hbCAoU0lHUElQRSwgc2lnaGFu<br>
ZGxlcik7DQogICBzaWduYWwgKFNJR1RFUk0sIHNpZ2hhbmRsZXIpOw0KIA0K<br>
LSAgc2Nhbl9pdCAoKTsNCisgIGlmICh0ZXN0ID09IDApIA0KKyAgICBzY2Fu<br>
X2l0ICgpOw0KKyAgZWxzZQ0KKyAgICB0ZXN0X2l0ICgpOw0KIA0KICAgc2Fu<br>
ZV9jbG9zZSAoZGV2aWNlKTsNCiANCg==<br>
--1318610500-70641457-915118363=:29443--<br>
<p>
<pre>
--
Source code, list archive, and docs: <a href="http://www.mostang.com/sane/">http://www.mostang.com/sane/</a>
To unsubscribe: echo unsubscribe sane-devel | mail <a href="mailto:majordomo@mostang.com">majordomo@mostang.com</a>
</pre>
<!-- body="end" -->
<p>
<ul>
<!-- next="start" -->
<li> <b>Next message:</b> <a href="0330.html">Robert Brink: "Re: Very slow colour scanning with Trust Imagery 1200SP (= Mustek MSF-06000SP)"</a>
<li> <b>Previous message:</b> <a href="0328.html">Hugo van der Kooij: "Re: Forwards-Backwards"</a>
<!-- nextthread="start" -->
<!-- reply="end" -->
</ul>