public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* c/10143: Post increment doesn work more than once per statement
@ 2003-03-19  1:06 macdonn
  0 siblings, 0 replies; 9+ messages in thread
From: macdonn @ 2003-03-19  1:06 UTC (permalink / raw)
  To: gcc-gnats


>Number:         10143
>Category:       c
>Synopsis:       Post increment doesn work more than once per statement
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          wrong-code
>Submitter-Id:   net
>Arrival-Date:   Wed Mar 19 01:06:00 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator:     Nick MacDonald
>Release:        gcc 3.2.2, gcc 2.95.2
>Organization:
>Environment:
SunOS 5.8 Generic_108528-18 sun4u sparc SUNW,Ultra-5_10
>Description:
The following code produces the following output...  I do not believe this to be correct, and a sample output from MS Visual C++ is also attached.  A second program (a debugging portion of the one that I used to originally find the problem, is also attached.)

Program one:
#include <stdio.h>

int main(int argc, char* argv[])
{
  int i1, j1;
  int i2, j2;
  int i3, j3;
  int i4, j4;
  int i5, j5;
  int i6, j6;
  int i7, j7;
  int t;

  for (i1=0, j1=0; i1<10; t=i1++| i1++)  j1++;
  for (i2=0, j2=0; i2<10; t=i2++ * i2++) j2++;
  for (i3=0, j3=0; i3<10; i3++, i3++)    j3++;

  for (i4=0, j4=0; i4<10; t=++i4| ++i4)  ++j4;
  for (i5=0, j5=0; i5<10; t=++i5 * ++i5) ++j5;
  for (i6=0, j6=0; i6<10; ++i6, ++i6)    ++j6;

  for (i7=0, j7=0; i7<10; t=i7++| ++i7)  j7++;

  printf("i1=%d, j1=%d\n", i1, j1);
  printf("i2=%d, j2=%d\n", i2, j2);
  printf("i3=%d, j3=%d\n", i3, j3);
  printf("\n");
  printf("i4=%d, j4=%d\n", i4, j4);
  printf("i5=%d, j5=%d\n", i5, j5);
  printf("i6=%d, j6=%d\n", i6, j6);
  printf("\n");
  printf("i7=%d, j7=%d\n", i7, j7);

  return 0;
}

Generated [incorrect] Results:
i1=10, j1=10
i2=10, j2=10
i3=10, j3=5

i4=10, j4=5
i5=10, j5=5
i6=10, j6=5

i7=10, j7=10

[What I consider to be] Correct results:
Here is the output from VC6 and WinNT. 

i1=10, j1=5 
i2=10, j2=5 
i3=10, j3=5 

i4=10, j4=5 
i5=10, j5=5 
i6=10, j6=5 

i7=10, j7=5


Program 2:
#include <stdio.h>

int main(int argc, char* argv[])
{
  unsigned char x[]={1,2,3,4};
  unsigned long e, f, g, h, i;
  int p=0, q=0, r=-1, s=0;
  int a, b, c, d;

  e=(x[p++]<<24) |
    (x[p++]<<16) |
    (x[p++]<< 8) |
    (x[p++]);

  f=(x[(a=q++)]<<24) |
    (x[(b=q++)]<<16) |
    (x[(c=q++)]<< 8) |
    (x[(d=q++)]);

  g=(x[++r]<<24) |
    (x[++r]<<16) |
    (x[++r]<< 8) |
    (x[++r]);

  h=(x[0]<<24) |
    (x[1]<<16) |
    (x[2]<< 8) |
    (x[3]);

  i =(x[s++]<<24);
  i|=(x[s++]<<16);
  i|=(x[s++]<< 8);
  i|=(x[s++]);

  printf("\n\
  unsigned char x[]={1,2,3,4};\n\
  unsigned long e, f, g, h, i;\n\
  int p=0, q=0, r=-1, s=0;\n\
  int a, b, c, d;\n\
\n\
  e=(x[p++]<<24) |\n\
    (x[p++]<<16) |\n\
    (x[p++]<< 8) |\n\
    (x[p++]);\n\
\n\
  f=(x[(a=q++)]<<24) |\n\
    (x[(b=q++)]<<16) |\n\
    (x[(c=q++)]<< 8) |\n\
    (x[(d=q++)]);\n\
\n\
  g=(x[++r]<<24) |\n\
    (x[++r]<<16) |\n\
    (x[++r]<< 8) |\n\
    (x[++r]);\n\
\n\
  h=(x[0]<<24) |\n\
    (x[1]<<16) |\n\
    (x[2]<< 8) |\n\
    (x[3]);\n\
\n\
  i =(x[s++]<<24);\n\
  i|=(x[s++]<<16);\n\
  i|=(x[s++]<< 8);\n\
  i|=(x[s++]);\n\
\n\n");

  printf("p=%d  e=%lu or 0x%08x\n", p, e, e);
  printf("q=%d  f=%lu or 0x%08x\n", q, f, f);
  printf("   a=%d  b=%d  c=%d  d=%d\n", a, b, c, d);
  printf("r=%d  g=%lu or 0x%08x\n", r, g, g);
  printf ("     h=%lu or 0x%08x\n",    h, h);
  printf("s=%d  i=%lu or 0x%08x\n", s, i, i);

  return 0;
}

The [incorrect] results of this program:
  unsigned char x[]={1,2,3,4};
  unsigned long e, f, g, h, i;
  int p=0, q=0, r=-1, s=0;
  int a, b, c, d;

  e=(x[p++]<<24) |
    (x[p++]<<16) |
    (x[p++]<< 8) |
    (x[p++]);

  f=(x[(a=q++)]<<24) |
    (x[(b=q++)]<<16) |
    (x[(c=q++)]<< 8) |
    (x[(d=q++)]);

  g=(x[++r]<<24) |
    (x[++r]<<16) |
    (x[++r]<< 8) |
    (x[++r]);

  h=(x[0]<<24) |
    (x[1]<<16) |
    (x[2]<< 8) |
    (x[3]);

  i =(x[s++]<<24);
  i|=(x[s++]<<16);
  i|=(x[s++]<< 8);
  i|=(x[s++]);


p=1  e=16843009 or 0x01010101
q=1  f=16843009 or 0x01010101
   a=0  b=0  c=0  d=0
r=3  g=16909060 or 0x01020304
     h=16909060 or 0x01020304
s=4  i=16909060 or 0x01020304

[p and q should not be 1, and b,c,d should not be 0.]
>How-To-Repeat:
Compile the supplied program and run it.  Correct (IMHO) results should look like:
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="WeirdForLoop.c"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="WeirdForLoop.c"

I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKQp7CiAg
aW50IGkxLCBqMTsKICBpbnQgaTIsIGoyOwogIGludCBpMywgajM7CiAgaW50IGk0LCBqNDsKICBp
bnQgaTUsIGo1OwogIGludCBpNiwgajY7CiAgaW50IGk3LCBqNzsKICBpbnQgdDsKCiAgZm9yIChp
MT0wLCBqMT0wOyBpMTwxMDsgdD1pMSsrfCBpMSsrKSAgajErKzsKICBmb3IgKGkyPTAsIGoyPTA7
IGkyPDEwOyB0PWkyKysgKiBpMisrKSBqMisrOwogIGZvciAoaTM9MCwgajM9MDsgaTM8MTA7IGkz
KyssIGkzKyspICAgIGozKys7CgogIGZvciAoaTQ9MCwgajQ9MDsgaTQ8MTA7IHQ9KytpNHwgKytp
NCkgICsrajQ7CiAgZm9yIChpNT0wLCBqNT0wOyBpNTwxMDsgdD0rK2k1ICogKytpNSkgKytqNTsK
ICBmb3IgKGk2PTAsIGo2PTA7IGk2PDEwOyArK2k2LCArK2k2KSAgICArK2o2OwoKICBmb3IgKGk3
PTAsIGo3PTA7IGk3PDEwOyB0PWk3Kyt8ICsraTcpICBqNysrOwoKICBwcmludGYoImkxPSVkLCBq
MT0lZFxuIiwgaTEsIGoxKTsKICBwcmludGYoImkyPSVkLCBqMj0lZFxuIiwgaTIsIGoyKTsKICBw
cmludGYoImkzPSVkLCBqMz0lZFxuIiwgaTMsIGozKTsKICBwcmludGYoIlxuIik7CiAgcHJpbnRm
KCJpND0lZCwgajQ9JWRcbiIsIGk0LCBqNCk7CiAgcHJpbnRmKCJpNT0lZCwgajU9JWRcbiIsIGk1
LCBqNSk7CiAgcHJpbnRmKCJpNj0lZCwgajY9JWRcbiIsIGk2LCBqNik7CiAgcHJpbnRmKCJcbiIp
OwogIHByaW50ZigiaTc9JWQsIGo3PSVkXG4iLCBpNywgajcpOwoKICByZXR1cm4gMDsKfQoK


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: c/10143: Post increment doesn work more than once per statement
@ 2003-03-20  0:16 Neil Booth
  0 siblings, 0 replies; 9+ messages in thread
From: Neil Booth @ 2003-03-20  0:16 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

The following reply was made to PR c/10143; it has been noted by GNATS.

From: Neil Booth <neil@daikokuya.co.uk>
To: Nick Macdonald <macdonn@nortelnetworks.com>
Cc: "Joseph S. Myers" <jsm28@cam.ac.uk>,
	Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>,
	gcc-gnats@gcc.gnu.org, gcc-bugs@gcc.gnu.org
Subject: Re: c/10143: Post increment doesn work more than once per statement
Date: Thu, 20 Mar 2003 00:08:04 +0000

 Nick Macdonald wrote:-
 
 > I was just trying to make the product better...  I feel the answer of
 > "not a bug" to be a bit pedantic...  sure, technically it may not be a
 > bug...  however, logically, the current behaviour is less than stellar
 > and it should be addressed to make post and pre increment behave more or
 > less similarly...  I have learned a valuable lesson from all this, and I
 
 Things aren't that clearcut - effectively, the compiler passes the
 code to the optimizer with a set of restrictions indicating what the
 optimizer can and cannot assume.  Because of guarantees afforded by the
 standard, the optimizer is given pretty free reign, and munges your code.
 But that's only because it's wrong.  It's not a matter of treating a or
 b consistently; just consider it a fluke that you observed the result
 you did.  If you move a line of code you might see a different result,
 or GCC in 2 months time might, for any of a million reasons, decide to
 optimize it differently.
 
 Now, -Wsequence-point should have warned, but its algorithm is based on
 GCC trees, so consider me unsurprised at its fragility.  None of this
 existed in 2.95, but it does in 3.2.
 
 Neil.


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: c/10143: Post increment doesn work more than once per statement
@ 2003-03-19 22:36 Nick Macdonald
  0 siblings, 0 replies; 9+ messages in thread
From: Nick Macdonald @ 2003-03-19 22:36 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

The following reply was made to PR c/10143; it has been noted by GNATS.

From: "Nick Macdonald" <macdonn@nortelnetworks.com>
To: "Joseph S. Myers" <jsm28@cam.ac.uk>
Cc: Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>,
   gcc-gnats@gcc.gnu.org, gcc-bugs@gcc.gnu.org
Subject: Re: c/10143: Post increment doesn work more than once per statement
Date: Wed, 19 Mar 2003 17:28:44 -0500

 Did you mean that I should do the reopen/retitle?  I am not familiar
 with the bug reporting tool (this was my first use)... But I'm guessing
 I could go try to figure out how to do so...  assuming a guest account
 can
 do so...
 
 > That then is a bug in -Wsequence-point we need to fix (and this PR should
 > be reopened and retitled to reflect that): this is one of the simple cases
 > that -Wsequence-point is meant to detect, not one of the complicated cases
 > that are known not to be handled.
 
 -- 
 Nick MacDonald
 Nortel Networks
 macdonn@nortelnetworks.com


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: c/10143: Post increment doesn work more than once per statement
@ 2003-03-19 20:16 Joseph S. Myers
  0 siblings, 0 replies; 9+ messages in thread
From: Joseph S. Myers @ 2003-03-19 20:16 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

The following reply was made to PR c/10143; it has been noted by GNATS.

From: "Joseph S. Myers" <jsm28@cam.ac.uk>
To: Nick Macdonald <macdonn@nortelnetworks.com>
Cc: Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>, 
     <gcc-gnats@gcc.gnu.org>,  <gcc-bugs@gcc.gnu.org>
Subject: Re: c/10143: Post increment doesn work more than once per statement
Date: Wed, 19 Mar 2003 20:09:49 +0000 (GMT)

 On Wed, 19 Mar 2003, Nick Macdonald wrote:
 
 > {macdonn}195: gcc -Wsequence-point WeirdForLoop.c
 > 
 > There is no sequence point warning when compiling either program... 
 > using either 2.95.2 or 3.2.2
 
 That then is a bug in -Wsequence-point we need to fix (and this PR should
 be reopened and retitled to reflect that): this is one of the simple cases
 that -Wsequence-point is meant to detect, not one of the complicated cases
 that are known not to be handled.
 
 -- 
 Joseph S. Myers
 jsm28@cam.ac.uk
 


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: c/10143: Post increment doesn work more than once per statement
@ 2003-03-19 19:56 Nick Macdonald
  0 siblings, 0 replies; 9+ messages in thread
From: Nick Macdonald @ 2003-03-19 19:56 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

The following reply was made to PR c/10143; it has been noted by GNATS.

From: "Nick Macdonald" <macdonn@nortelnetworks.com>
To: "Joseph S. Myers" <jsm28@cam.ac.uk>
Cc: Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>,
   gcc-gnats@gcc.gnu.org, gcc-bugs@gcc.gnu.org
Subject: Re: c/10143: Post increment doesn work more than once per statement
Date: Wed, 19 Mar 2003 14:54:29 -0500

 Good point... I did not see that recommendation, however, even if I
 had.... check this:
 
 
 {macdonn}85: which gcc
 /opt/unsupported/gcc-2.95.2/bin/gcc
 {macdonn}86: gcc -Wall shift.c
 shift.c: In function `main':
 shift.c:67: warning: unsigned int format, long unsigned int arg (arg 4)
 shift.c:68: warning: unsigned int format, long unsigned int arg (arg 4)
 shift.c:70: warning: unsigned int format, long unsigned int arg (arg 4)
 shift.c:71: warning: unsigned int format, long unsigned int arg (arg 3)
 shift.c:72: warning: unsigned int format, long unsigned int arg (arg 4)
 {macdonn}87: gcc -Wsequence-point shift.c
 cc1: Invalid option `-Wsequence-point'
 
 
 {macdonn}193: gcc -Wall WeirdForLoop.c        
 {macdonn}194: gcc -v
 Reading specs from
 /tmp/gcc_install/lib/gcc-lib/sparc-sun-solaris2.8/3.2.2/specs
 Configured with: ../configure --with-as=/usr/ccs/bin/as
 --with-ld=/usr/ccs/bin/ld --disable-nls --prefix=/tmp/gcc_install
 Thread model: posix
 gcc version 3.2.2
 {macdonn}195: gcc -Wsequence-point WeirdForLoop.c
 
 There is no sequence point warning when compiling either program... 
 using either 2.95.2 or 3.2.2
 
 
 As for your questions... I submitted by bug by starting from this URL:
 http://www.gnu.org/directory/gcc.html which led to this URL:
 http://www.gnu.org/software/gcc/gnats.html which led to this URL: 
 http://gcc.gnu.org/cgi-bin/gnatsweb.pl  and no where along that path did
 I see the recommendationabout warnings (even though in this case that
 would not have helped.)
 
 
 A person comment on all this:
 I was just trying to make the product better...  I feel the answer of
 "not a bug" to be a bit pedantic...  sure, technically it may not be a
 bug...  however, logically, the current behaviour is less than stellar
 and it should be addressed to make post and pre increment behave more or
 less similarly...  I have learned a valuable lesson from all this, and I
 will now write better code because of it... but I still think that the
 choice of implementing this behaviour in the chosen manner is highly
 likely to make a bad problem much more seriously wrong than it should
 be.  (If the evil empire can do something meaningful with it...  we
 should be able to learn from that...)
 
 If this bizarre code generating behaviour is to stand as is then I'd
 rather the compiler default to warning on this behaviour than to make it
 my requirement to know that I should request a sequence point
 warning...  i.e. default the warning on and make it a requirement to
 supress it.
 
 Nick
 
 
 "Joseph S. Myers" wrote:
 > 
 > On 19 Mar 2003, Falk Hueffner wrote:
 > 
 > > > (Is there a FAQ entry somewhere that deals with this issue?)
 > >
 > > See the documentation of -Wsequence-point. (We should probably add
 > > this to the list of C non-bugs...)
 > 
 > The bug reporting instructions <http://gcc.gnu.org/bugs.html> say:
 > 
 >    Before reporting that GCC compiles your code incorrectly, please
 >    compile it with gcc -Wall and see whether this shows anything wrong
 >    with your code that could be the cause instead of a bug in GCC.
 > 
 > To the submitter: did you see this part of the instructions and try
 > compiling your code with -Wall (which includes -Wsequence-point, which
 > would have shown up the problem with the code)?  If not, how could we
 > improve the documentation of how to submit bugs so that you would have
 > seen and followed these instructions?  If you did use -Wall, how could we
 > clarify the warning message?
 > 
 > --
 > Joseph S. Myers
 > jsm28@cam.ac.uk
 
 -- 
 Nick MacDonald
 Nortel Networks, Belleville
 macdonn@nortelnetworks.com
 (613) 966-0100 Ext. 8755  ESN: 343-8755


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: c/10143: Post increment doesn work more than once per statement
@ 2003-03-19 19:06 Joseph S. Myers
  0 siblings, 0 replies; 9+ messages in thread
From: Joseph S. Myers @ 2003-03-19 19:06 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

The following reply was made to PR c/10143; it has been noted by GNATS.

From: "Joseph S. Myers" <jsm28@cam.ac.uk>
To: Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
Cc: Nick Macdonald <macdonn@nortelnetworks.com>,  <gcc-gnats@gcc.gnu.org>, 
     <gcc-bugs@gcc.gnu.org>
Subject: Re: c/10143: Post increment doesn work more than once per statement
Date: Wed, 19 Mar 2003 19:04:11 +0000 (GMT)

 On 19 Mar 2003, Falk Hueffner wrote:
 
 > > (Is there a FAQ entry somewhere that deals with this issue?)
 > 
 > See the documentation of -Wsequence-point. (We should probably add
 > this to the list of C non-bugs...)
 
 The bug reporting instructions <http://gcc.gnu.org/bugs.html> say:
 
    Before reporting that GCC compiles your code incorrectly, please
    compile it with gcc -Wall and see whether this shows anything wrong
    with your code that could be the cause instead of a bug in GCC.
 
 To the submitter: did you see this part of the instructions and try
 compiling your code with -Wall (which includes -Wsequence-point, which
 would have shown up the problem with the code)?  If not, how could we
 improve the documentation of how to submit bugs so that you would have
 seen and followed these instructions?  If you did use -Wall, how could we
 clarify the warning message?
 
 -- 
 Joseph S. Myers
 jsm28@cam.ac.uk
 


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: c/10143: Post increment doesn work more than once per statement
@ 2003-03-19 14:26 Falk Hueffner
  0 siblings, 0 replies; 9+ messages in thread
From: Falk Hueffner @ 2003-03-19 14:26 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

The following reply was made to PR c/10143; it has been noted by GNATS.

From: Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
To: "Nick Macdonald" <macdonn@nortelnetworks.com>
Cc: gcc-gnats@gcc.gnu.org, gcc-bugs@gcc.gnu.org
Subject: Re: c/10143: Post increment doesn work more than once per statement
Date: 19 Mar 2003 15:24:26 +0100

 "Nick Macdonald" <macdonn@nortelnetworks.com> writes:
 
 > http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=10143
 > 
 > If this is not a bug then can someone please point me at an
 > indication in the standard that indicates how this is correct
 > behaviour?
 
 6.5: Between the previous and next sequence point an object shall have
 its stored value modified at most once by the evaluation of an
 expression.  Furthermore, the prior value shall be read only to
 determine the value to be stored.
 
 > (Is there a FAQ entry somewhere that deals with this issue?)
 
 See the documentation of -Wsequence-point. (We should probably add
 this to the list of C non-bugs...)
 
 -- 
 	Falk


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: c/10143: Post increment doesn work more than once per statement
@ 2003-03-19 14:06 Nick Macdonald
  0 siblings, 0 replies; 9+ messages in thread
From: Nick Macdonald @ 2003-03-19 14:06 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

The following reply was made to PR c/10143; it has been noted by GNATS.

From: "Nick Macdonald" <macdonn@nortelnetworks.com>
To: gcc-gnats@gcc.gnu.org, gcc-bugs@gcc.gnu.org, nobody@gcc.gnu.org,
   gcc-prs@gcc.gnu.org
Cc:  
Subject: Re: c/10143: Post increment doesn work more than once per statement
Date: Wed, 19 Mar 2003 09:02:17 -0500

 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=10143
 
 If this is not a bug then can someone please point me at an indication
 in the standard that indicates how this is correct behaviour?  (Is there
 a FAQ entry somewhere that deals with this issue?)  It is certainly not
 what I expect, nor what other compilers do.  And I cannot understand why
 pre-increment would be different than post-increment.
 
 -- 
 Nick MacDonald
 Nortel Networks
 macdonn@nortelnetworks.com


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: c/10143: Post increment doesn work more than once per statement
@ 2003-03-19  7:10 neil
  0 siblings, 0 replies; 9+ messages in thread
From: neil @ 2003-03-19  7:10 UTC (permalink / raw)
  To: gcc-bugs, gcc-prs, macdonn, nobody

Synopsis: Post increment doesn work more than once per statement

State-Changed-From-To: open->closed
State-Changed-By: neil
State-Changed-When: Wed Mar 19 07:10:08 2003
State-Changed-Why:
    Not a bug.

http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=10143


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2003-03-20  0:16 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-03-19  1:06 c/10143: Post increment doesn work more than once per statement macdonn
2003-03-19  7:10 neil
2003-03-19 14:06 Nick Macdonald
2003-03-19 14:26 Falk Hueffner
2003-03-19 19:06 Joseph S. Myers
2003-03-19 19:56 Nick Macdonald
2003-03-19 20:16 Joseph S. Myers
2003-03-19 22:36 Nick Macdonald
2003-03-20  0:16 Neil Booth

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).