comp.lang.ada
 help / color / mirror / Atom feed
* Ada -> C or C++ translator
@ 2002-06-17 12:26 David Rasmussen
  2002-06-17 12:51 ` Martin Dowie
  2002-06-18 23:41 ` Robert A Duff
  0 siblings, 2 replies; 17+ messages in thread
From: David Rasmussen @ 2002-06-17 12:26 UTC (permalink / raw)


I know that some Ada features don't have portable counterparts in C or 
C++ (like concurrency), but does some sort of translator exist from Ada 
to C or C++? It could use C or C++ as an Intermediate Representation 
language similar to what the Comeau C/C++ compiler does. This way, one 
could do the development with Ada and have all the advantages of Ada, 
and end up with hopefully more correct code, and then for the release, 
one could translate to C or C++ and use some of the very effecient 
compilers for these languages. I realize that the support of some parts 
of Ada's runtime system (like exceptions) wont be intact, but for 
projects where this isn't important, such a translator could still be 
useful.

Does such a translator exist?

/David




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

* Re: Ada -> C or C++ translator
  2002-06-17 12:26 Ada -> C or C++ translator David Rasmussen
@ 2002-06-17 12:51 ` Martin Dowie
  2002-06-17 12:59   ` David Rasmussen
  2002-06-18 23:41 ` Robert A Duff
  1 sibling, 1 reply; 17+ messages in thread
From: Martin Dowie @ 2002-06-17 12:51 UTC (permalink / raw)


"David Rasmussen" <pinkfloydhomer@yahoo.com> wrote in message
news:3D0DD57A.5000402@yahoo.com...
> I know that some Ada features don't have portable counterparts in C or
> C++ (like concurrency), but does some sort of translator exist from Ada
> to C or C++? It could use C or C++ as an Intermediate Representation
> language similar to what the Comeau C/C++ compiler does. This way, one
> could do the development with Ada and have all the advantages of Ada,
> and end up with hopefully more correct code, and then for the release,
> one could translate to C or C++ and use some of the very effecient
> compilers for these languages. I realize that the support of some parts
> of Ada's runtime system (like exceptions) wont be intact, but for
> projects where this isn't important, such a translator could still be
> useful.

Why do you suspect that an Ada compiler won't give you decent performance?
The performance of today's Ada95 compilers seem pretty much on a par with
the C/C++ compilers I'm using. There is an argument that they should be
able to produce more efficient code too but other than the 'famous' Tartan
compiler paper, I have yet to see much evidence of this.

Didn't Averstar/Intermetric's Ada compiler use 'C' as an intermediate
representation?





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

* Re: Ada -> C or C++ translator
  2002-06-17 12:51 ` Martin Dowie
@ 2002-06-17 12:59   ` David Rasmussen
  2002-06-17 14:21     ` Larry Kilgallen
  0 siblings, 1 reply; 17+ messages in thread
From: David Rasmussen @ 2002-06-17 12:59 UTC (permalink / raw)


Martin Dowie wrote:
> 
> Why do you suspect that an Ada compiler won't give you decent performance?
> The performance of today's Ada95 compilers seem pretty much on a par with
> the C/C++ compilers I'm using. There is an argument that they should be
> able to produce more efficient code too but other than the 'famous' Tartan
> compiler paper, I have yet to see much evidence of this.
> 
> Didn't Averstar/Intermetric's Ada compiler use 'C' as an intermediate
> representation?
> 

There might exist good Ada compilers. But I use free tools. I use gcc 
for Ada, and while it has a good x86 backend, there exist other free 
compilers such as the free Intel C++ and others that produce even better 
code. Such a translator would give more choice to the programmer.

/David





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

* Re: Ada -> C or C++ translator
  2002-06-17 14:21     ` Larry Kilgallen
@ 2002-06-17 14:19       ` David Rasmussen
  2002-06-28 18:40       ` pontius
  1 sibling, 0 replies; 17+ messages in thread
From: David Rasmussen @ 2002-06-17 14:19 UTC (permalink / raw)


Larry Kilgallen wrote:
> 
> 
>>There might exist good Ada compilers. But I use free tools. I use gcc 
>>for Ada, and while it has a good x86 backend, there exist other free 
>>compilers such as the free Intel C++ and others that produce even better 
>>code. Such a translator would give more choice to the programmer.
> 
> 
> But your original post said:
> 
> 
>>Does such a translator exist?
> 
> 
> with no requirement the translator be free (in any sense of the word).

Sure, but first and foremost I wanted to find out if it existed at all. 
Most of Ada is isomorphic with C and/or C++.

/David




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

* Re: Ada -> C or C++ translator
  2002-06-17 12:59   ` David Rasmussen
@ 2002-06-17 14:21     ` Larry Kilgallen
  2002-06-17 14:19       ` David Rasmussen
  2002-06-28 18:40       ` pontius
  0 siblings, 2 replies; 17+ messages in thread
From: Larry Kilgallen @ 2002-06-17 14:21 UTC (permalink / raw)


In article <3D0DDD18.7090501@yahoo.com>, David Rasmussen <pinkfloydhomer@yahoo.com> writes:
> Martin Dowie wrote:
>> 
>> Why do you suspect that an Ada compiler won't give you decent performance?
>> The performance of today's Ada95 compilers seem pretty much on a par with
>> the C/C++ compilers I'm using. There is an argument that they should be
>> able to produce more efficient code too but other than the 'famous' Tartan
>> compiler paper, I have yet to see much evidence of this.
>> 
>> Didn't Averstar/Intermetric's Ada compiler use 'C' as an intermediate
>> representation?

It would be more accurate to say that they have a version of their
AdaMagic product that uses C as an intermediate representation.
In other settings it is coupled with a different back end and a
different intermediate representation.

> There might exist good Ada compilers. But I use free tools. I use gcc 
> for Ada, and while it has a good x86 backend, there exist other free 
> compilers such as the free Intel C++ and others that produce even better 
> code. Such a translator would give more choice to the programmer.

But your original post said:

> Does such a translator exist?

with no requirement the translator be free (in any sense of the word).



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

* Re: Ada -> C or C++ translator
  2002-06-17 12:26 Ada -> C or C++ translator David Rasmussen
  2002-06-17 12:51 ` Martin Dowie
@ 2002-06-18 23:41 ` Robert A Duff
  2002-06-19  0:21   ` exceptions and C functions (was Re: Ada -> C or C++ translator) Dale Stanbrough
  1 sibling, 1 reply; 17+ messages in thread
From: Robert A Duff @ 2002-06-18 23:41 UTC (permalink / raw)


David Rasmussen <pinkfloydhomer@yahoo.com> writes:

> I know that some Ada features don't have portable counterparts in C or 
> C++ (like concurrency), but does some sort of translator exist from Ada 
> to C or C++? It could use C or C++ as an Intermediate Representation 
> language similar to what the Comeau C/C++ compiler does. This way, one 
> could do the development with Ada and have all the advantages of Ada, 
> and end up with hopefully more correct code, and then for the release, 
> one could translate to C or C++ and use some of the very effecient 
> compilers for these languages. I realize that the support of some parts 
> of Ada's runtime system (like exceptions) wont be intact, but for 
> projects where this isn't important, such a translator could still be 
> useful.
> 
> Does such a translator exist?
> 
> /David

The AverCom (was AverStar, was Intermetrics) AdaMagic compiler can
generate C code.  (It also generates machine code on various targets.)

It supports the full language, including exceptions, tasking, etc (but
not the optional annexes).  (It's not *easy* to translate Ada's
exceptions into C, but it is possible.)

E-mail to Tucker Taft (stt@avercom.net) if you are interested.

- Bob



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

* exceptions and C functions (was Re: Ada -> C or C++ translator)
  2002-06-18 23:41 ` Robert A Duff
@ 2002-06-19  0:21   ` Dale Stanbrough
  2002-06-19  1:44     ` Robert A Duff
  0 siblings, 1 reply; 17+ messages in thread
From: Dale Stanbrough @ 2002-06-19  0:21 UTC (permalink / raw)


Robert A Duff wrote:

> It supports the full language, including exceptions, tasking, etc (but
> not the optional annexes).  (It's not *easy* to translate Ada's
> exceptions into C, but it is possible.)

Can Ada exceptions cross C functions? E.g. if an Ada subprogram called
a C function, which called an Ada subprogram which raised an exception,
would the exception propagate across the C void?


If they don't (and pragma import of external language elements is 
basically incompatable with exceptions) then couldn't you just
translate all Ada subprograms into equivalent C functions but with
an extra exception paarameter?

Dale



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

* Re: exceptions and C functions (was Re: Ada -> C or C++ translator)
  2002-06-19  0:21   ` exceptions and C functions (was Re: Ada -> C or C++ translator) Dale Stanbrough
@ 2002-06-19  1:44     ` Robert A Duff
  2002-06-19 14:32       ` Wes Groleau
  0 siblings, 1 reply; 17+ messages in thread
From: Robert A Duff @ 2002-06-19  1:44 UTC (permalink / raw)


Dale Stanbrough <dale@cs.rmit.edu.au> writes:

> Robert A Duff wrote:
> 
> > It supports the full language, including exceptions, tasking, etc (but
> > not the optional annexes).  (It's not *easy* to translate Ada's
> > exceptions into C, but it is possible.)
> 
> Can Ada exceptions cross C functions? E.g. if an Ada subprogram called
> a C function, which called an Ada subprogram which raised an exception,
> would the exception propagate across the C void?

Yes.

> If they don't (and pragma import of external language elements is 
> basically incompatable with exceptions) then couldn't you just
> translate all Ada subprograms into equivalent C functions but with
> an extra exception paarameter?

Yes, but that wouldn't be very efficient.  Also, part of the goal (not
the *main* goal) is to make the C code somewhat human-readable, so we
don't want to clutter things with extra implicitly-generated parameters
except in cases where we have to.

- Bob



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

* Re: exceptions and C functions (was Re: Ada -> C or C++ translator)
  2002-06-19  1:44     ` Robert A Duff
@ 2002-06-19 14:32       ` Wes Groleau
  2002-06-19 17:33         ` Robert A Duff
  0 siblings, 1 reply; 17+ messages in thread
From: Wes Groleau @ 2002-06-19 14:32 UTC (permalink / raw)



> > Can Ada exceptions cross C functions? E.g. if an Ada subprogram called
> > a C function, which called an Ada subprogram which raised an exception,
> > would the exception propagate across the C void?
> 
> Yes.

No.  Unless the compiler vendors had taken steps to ensure
this would happen.  I think the answer is yes with gcc (cc1/gnat1)

-- 
Wes Groleau
http://freepages.rootsweb.com/~wgroleau



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

* Re: exceptions and C functions (was Re: Ada -> C or C++ translator)
  2002-06-19 14:32       ` Wes Groleau
@ 2002-06-19 17:33         ` Robert A Duff
  2002-06-19 17:58           ` Wes Groleau
  0 siblings, 1 reply; 17+ messages in thread
From: Robert A Duff @ 2002-06-19 17:33 UTC (permalink / raw)


Wes Groleau <wesgroleau@despammed.com> writes:

> > > Can Ada exceptions cross C functions? E.g. if an Ada subprogram called
> > > a C function, which called an Ada subprogram which raised an exception,
> > > would the exception propagate across the C void?
> > 
> > Yes.
> 
> No.  Unless the compiler vendors had taken steps to ensure
> this would happen.  I think the answer is yes with gcc (cc1/gnat1)

Umm.  The question was about the AverCom (was AverStar, was
Intermetrics) AdaMagic compiler -- the version that translates to C.
I work for this compiler vendor, and I implemented much of the
exception handling facility.  This compiler vendor *has* taken steps to
make sure that exceptions can propagate from Ada to C back to Ada.

So the answer, as I said, is "Yes".  Sheesh.

- Bob



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

* Re: exceptions and C functions (was Re: Ada -> C or C++ translator)
  2002-06-19 17:33         ` Robert A Duff
@ 2002-06-19 17:58           ` Wes Groleau
  2002-06-19 19:17             ` Robert A Duff
  0 siblings, 1 reply; 17+ messages in thread
From: Wes Groleau @ 2002-06-19 17:58 UTC (permalink / raw)



> Umm.  The question was about the AverCom (was AverStar, was
> ....
> 
> So the answer, as I said, is "Yes".  Sheesh.

Sorry--I didn't go back far enough in the thread.

Nor go forward far enough in the altered subject line :-)

-- 
Wes Groleau
http://freepages.rootsweb.com/~wgroleau



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

* Re: exceptions and C functions (was Re: Ada -> C or C++ translator)
  2002-06-19 17:58           ` Wes Groleau
@ 2002-06-19 19:17             ` Robert A Duff
  0 siblings, 0 replies; 17+ messages in thread
From: Robert A Duff @ 2002-06-19 19:17 UTC (permalink / raw)


Wes Groleau <wesgroleau@despammed.com> writes:

> Sorry--I didn't go back far enough in the thread.
> 
> Nor go forward far enough in the altered subject line :-)

;-) ;-) 

- Bob



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

* Re: Ada -> C or C++ translator
  2002-06-17 14:21     ` Larry Kilgallen
  2002-06-17 14:19       ` David Rasmussen
@ 2002-06-28 18:40       ` pontius
  2002-06-29  1:47         ` tmoran
  2002-07-03 15:16         ` Robert I. Eachus
  1 sibling, 2 replies; 17+ messages in thread
From: pontius @ 2002-06-28 18:40 UTC (permalink / raw)


In article <oOvYmTwBAtFP@eisner.encompasserve.org>,
	Kilgallen@SpamCop.net (Larry Kilgallen) writes:
> In article <3D0DDD18.7090501@yahoo.com>, David Rasmussen <pinkfloydhomer@yahoo.com> writes:
>> Martin Dowie wrote:
>>>
>>> Why do you suspect that an Ada compiler won't give you decent performance?
>>> The performance of today's Ada95 compilers seem pretty much on a par with
>>> the C/C++ compilers I'm using. There is an argument that they should be
>>> able to produce more efficient code too but other than the 'famous' Tartan
>>> compiler paper, I have yet to see much evidence of this.
>>>
>>> Didn't Averstar/Intermetric's Ada compiler use 'C' as an intermediate
>>> representation?
>
> It would be more accurate to say that they have a version of their
> AdaMagic product that uses C as an intermediate representation.
> In other settings it is coupled with a different back end and a
> different intermediate representation.
>
>> There might exist good Ada compilers. But I use free tools. I use gcc
>> for Ada, and while it has a good x86 backend, there exist other free
>> compilers such as the free Intel C++ and others that produce even better
>> code. Such a translator would give more choice to the programmer.
>
> But your original post said:
>
>> Does such a translator exist?
>
> with no requirement the translator be free (in any sense of the word).

I asked the same question a few months ago, so here's a different
perspective on the issue...

Picture an area where C/C++ are the normal and supported tools, and
indeed there is an aversion to "weird" stuff like Ada. Even within a
company or area things like this can vary from one department to
another.

So at the moment, while I may prefer to do some development in Ada, I
am being told to "just use normal stuff that someone else can pick up
from you, instead of something weird that will make us write it over."
Keep in mind that software development is also not our main job, rather
something that sometimes needs to be done so we can do our main job.

So I'd like to develop in Ada, and be prepared as needed to move the
code to C/C++, or perhaps Java, if it needs to be given to someone
else. Since there is no support, and hence no budget for this idea, I
need to use free tools. Interface to existing C/C++ libraries is also
necessary. (former easy, latter may need workarounds)

So far since the code hasn't been terribly performance sensitive, I've
been using scripting languages so far. I may be able to keep it there,
but I don't know.

Dale Pontius
NOT speaking for IBM



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

* Re: Ada -> C or C++ translator
  2002-06-28 18:40       ` pontius
@ 2002-06-29  1:47         ` tmoran
  2002-07-01 14:30           ` pontius
  2002-07-03 15:16         ` Robert I. Eachus
  1 sibling, 1 reply; 17+ messages in thread
From: tmoran @ 2002-06-29  1:47 UTC (permalink / raw)


> So at the moment, while I may prefer to do some development in Ada, I
> am being told to "just use normal stuff that someone else can pick up
> from you, instead of something weird that will make us write it over."
> ...
> been using scripting languages so far.

Beautiful!  You can't use Ada, a language designed for lasting,
maintainable programs, because it's not been demonstrated that any
of your colleagues can handle it.  But it's assumed that there must
be someone around who knows the scripting language you chose, and
your program in that language will be maintainable.  The third
option being C/C++ because lots of your colleagues know that, and
the fact the code is generated by machine as an intermediate
"high level assembler" will certainly not be any problem.
I love it!  #.#



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

* Re: Ada -> C or C++ translator
  2002-06-29  1:47         ` tmoran
@ 2002-07-01 14:30           ` pontius
  0 siblings, 0 replies; 17+ messages in thread
From: pontius @ 2002-07-01 14:30 UTC (permalink / raw)


In article <rk8T8.74$hC4.7251245@newssvr13.news.prodigy.com>,
	tmoran@acm.org writes:
>> So at the moment, while I may prefer to do some development in Ada, I
>> am being told to "just use normal stuff that someone else can pick up
>> from you, instead of something weird that will make us write it over."
>> ...
>> been using scripting languages so far.
>
> Beautiful!  You can't use Ada, a language designed for lasting,
> maintainable programs, because it's not been demonstrated that any
> of your colleagues can handle it.  But it's assumed that there must
> be someone around who knows the scripting language you chose, and
> your program in that language will be maintainable.  The third
> option being C/C++ because lots of your colleagues know that, and
> the fact the code is generated by machine as an intermediate
> "high level assembler" will certainly not be any problem.
> I love it!  #.#

I would too, except I'm stuck in it. I've come under some flak for
using Python instead of something more mainstream like Perl or Rexx.
(Throw a smiley after that last one, if you wish.)

Dale Pontius
NOT speaking for IBM



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

* Re: Ada -> C or C++ translator
  2002-06-28 18:40       ` pontius
  2002-06-29  1:47         ` tmoran
@ 2002-07-03 15:16         ` Robert I. Eachus
  2002-07-13 22:55           ` David Thompson
  1 sibling, 1 reply; 17+ messages in thread
From: Robert I. Eachus @ 2002-07-03 15:16 UTC (permalink / raw)


pontius@btv.mbi.com.invalid wrote:


> Picture an area where C/C++ are the normal and supported tools, and
> indeed there is an aversion to "weird" stuff like Ada. Even within a
> company or area things like this can vary from one department to
> another.
> 
> So at the moment, while I may prefer to do some development in Ada, I
> am being told to "just use normal stuff that someone else can pick up
> from you, instead of something weird that will make us write it over."
> Keep in mind that software development is also not our main job, rather
> something that sometimes needs to be done so we can do our main job.
> 
> So I'd like to develop in Ada, and be prepared as needed to move the
> code to C/C++, or perhaps Java, if it needs to be given to someone
> else. Since there is no support, and hence no budget for this idea, I
> need to use free tools. Interface to existing C/C++ libraries is also
> necessary. (former easy, latter may need workarounds)
> 
> So far since the code hasn't been terribly performance sensitive, I've
> been using scripting languages so far. I may be able to keep it there,
> but I don't know.


There was a project many years ago that had us all laughing when we 
found out what was going on.  You could probably use the same technique...

The project manager and all of his team wanted to use Ada, but alas 
upper management would not let them.  The code had to be in C so it 
would be portable.  What did they do?  Well they defined a number of C 
macros, then wrote all their code in (a subset of) Ada.  Add an emacs 
macro which added the #defines and changed withs into includes, and they 
were all set.  The project code was all written in Ada, but the check-in 
process compiled the C code as well, and the CM suite also checked 
overnight that the C and Ada versions produced identical output on the 
regression suite.

Sounds like a lot of work, but it took less than a week to get the first 
version of the toolset up and running.  In fact it took some of the 
programmers longer to understand that if the Ada compile failed, there 
really was a bug in their code.  The biggest complaints of course were 
about things that were valid in K&R C and some current C compilers "let 
you get away with."  For example, returning -1 from a function defined 
to return a pointer...

In general the programming team felt that the "up front" cost through 
unit test balanced out.  Getting clean initial clean compiles from both 
Ada and C took longer, but that was more than cancelled out by the 
strong typing benefits when interfaces needed to be modified.

Of course, integration and test was scheduled for 8 months, and took 
three weeks. ;-)

I know it sounds hard, but once they got started, the #defines were easy:

#define begin {
#define end } \/\/
(Did I get that right?  It has been so long since I did "clever" things 
in cpp.  The intent of course is to make everything following the end 
keyword a comment.)

And of course, there were areas of Ada that they had no intention of 
using such as tasking and exceptions, so those were not supported by the 
translation too.





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

* Re: Ada -> C or C++ translator
  2002-07-03 15:16         ` Robert I. Eachus
@ 2002-07-13 22:55           ` David Thompson
  0 siblings, 0 replies; 17+ messages in thread
From: David Thompson @ 2002-07-13 22:55 UTC (permalink / raw)


Robert I. Eachus <rieachus@attbi.com> wrote :
...
> There was a project many years ago that had us all laughing when we
> found out what was going on.  You could probably use the same technique...
> [emacs and C macros to take subset-Ada and make it work as C]
...
> I know it sounds hard, but once they got started, the #defines were easy:
>
> #define begin {
> #define end } \/\/
> (Did I get that right?  It has been so long since I did "clever" things
> in cpp.  The intent of course is to make everything following the end
> keyword a comment.)
>
I doubt it, or at least not portably.

At least in any standard-conforming (post 89) implementation,
comments become logical whitespace _before_ macro substitution,
which can't legally "construct" a comment, although many implemenations
generate preprocessor output as text and re-parse it (which is not required,
but often convenient) and support deferring comments to the latter stage
to make the preprocessed output more informative.

Plus double-slash comments didn't exist in original/traditional C or C89;
they were (re)introduced in C++ in the early 1990's and migrated back to C,
standardized only in C99.

But most important, backslash+slash is outright illegal.  Backslash
escapes are legal only in character and string literals, where they are
interpreted only during compilation proper (translation phase 7) after
preprocessing is completed; and inside comments they are ignored.
Backslashes are NOT handled differently in preprocessing directives,
or macros.  Line splicing using backslash+physical-end-of-line is a
separate though similar looking case, technically not an escape, and
is equally legal everywhere -- though it is generally only needed, and
hence used, on preprocessor directives.  (And in C++98 and C99 UCNs,
basically Unicode escapes, are also legal in/as an identifier for
alphanumeric-ish characters only.)

Although a compiler, or possibly preprocessor, could use \/ for some
kind of extension, I have never heard of one doing so, and certainly
not turning it into a comment-introducing token as you want here.

The closest you can rely on is a "function-like" (parameterized) macro
that ignores/discards its argument, but usage is not transparent:
#define end(x) }
...  begin /*foo*/ ... end(foo) ...

--
- David.Thompson 1 now at worldnet.att.net








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

end of thread, other threads:[~2002-07-13 22:55 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-06-17 12:26 Ada -> C or C++ translator David Rasmussen
2002-06-17 12:51 ` Martin Dowie
2002-06-17 12:59   ` David Rasmussen
2002-06-17 14:21     ` Larry Kilgallen
2002-06-17 14:19       ` David Rasmussen
2002-06-28 18:40       ` pontius
2002-06-29  1:47         ` tmoran
2002-07-01 14:30           ` pontius
2002-07-03 15:16         ` Robert I. Eachus
2002-07-13 22:55           ` David Thompson
2002-06-18 23:41 ` Robert A Duff
2002-06-19  0:21   ` exceptions and C functions (was Re: Ada -> C or C++ translator) Dale Stanbrough
2002-06-19  1:44     ` Robert A Duff
2002-06-19 14:32       ` Wes Groleau
2002-06-19 17:33         ` Robert A Duff
2002-06-19 17:58           ` Wes Groleau
2002-06-19 19:17             ` Robert A Duff

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox