HDTenEightyP/NetNews huggingface dataset:
From: mouse@thunder.mcrcim.mcgill.edu (der Mouse)
Subject: Re: character pointers in funtion calls
Organization: McGill Research Centre for Intelligent Machines
Date: Fri, 18 Dec 92 02:17:09 GMT

In article <BzD1w3.1z5@ocsmd.ocs.com>, ted@ocsmd.ocs.com (Ted Scott) writes:
> Spandan Choudury (schoudhu@ucunix.san.uc.edu) wrote:

> Step 1: Get a good C primer and look at the memory sections, then
> walk through the code you present here and see if you can find some
> of these problems:

Hm, I think you might do well to follow this advice yourself in a
couple of cases.

> :  f()                     <- If you want this to return a char * then
>                               define it that way: char *f() 
> : {
> :   char* i;               <- Look up "automatic variables" in the primer 
>                               you bought in step 1. Notice the part about 
>                               the storage becomming undefined when the 
>                               function exits.
> 
> :   i = "phoo";            <- A dangerous practice in the real world if
>                               you can't guarantee that *i will never be
>                               attempted to be modified.
> 
> :   return (i);            <- (and implicitly free the memory on the stack
>                               where i had a happy albiet brief life) 
>                               returning the old value of i which may or may 
>                               not be overwritten when printf uses the stack. 
> : }

No, no, no.  It is correct that the storage allocated to the variable i
goes away when f returns.  This *does not matter*, since no reference
to that storage survives.  The return statement returns the value that
was stored there, not, as you seem to think, a pointer to the storage
in question.  That value is itself a pointer, but it points to a string
literal, which does *not* go away.

					der Mouse

			    mouse@larry.mcrcim.mcgill.edu
Newsgroups: comp.lang.c
From: aa@rexago8.uucp (Adam Andrews)
Subject: Re: Help!!!!!!!!!!!!
Organization: Summit Information Systems
Date: Mon, 14 Dec 1992 17:49:31 GMT

jcontro@engws10.ic.sunysb.edu () writes:
>In a function, I declare a pointer to a structure, say:
>   SOME_STUCT  *Ptr;
>let SOME_STRUCT have a field which contains a Next pointer, etc...
>I pass it to a function, like this :
>fn( ..., Ptr );
>recieve it like :  fn( SOME_STRUCT *Ptr ) { ...
>The problem is that inside the funciton I create a linked list,
>of which Ptr is the head. I know it does this correctly.
>But, when the function returns, the space is lost, I think.  Is it
>because I allocated it locally??

I think your problem is that you're passing your pointer as a value; thus,
the function cannot modify it.

Try passing it like: fn( ..., &Ptr);
and receiving it like: fn ( SOME_STRUCT **Ptr) { ...
and referencing it like: *Ptr=(SOME_STRUCT *)calloc( ... );  (or whatever)

Or I may be wrong...

-- 
Adam Andrews                "When the going gets weird, we get even weirder."
uunet!rexago8!aa or aa@rexago8.UUCP       e-mail only to aa@summitis.com
Newsgroups: comp.lang.c
From: fred@genesis.demon.co.uk (Lawrence Kirby)
Subject: Finding the number of days between two dates 
Distribution: world
Organization: BT
Date: Tue, 15 Dec 1992 18:31:43 +0000


In article <1fsk16INNhn0@cs.tut.fi> pjh@cs.tut.fi writes:

>
>
>I need to write a standard conforming implementation of a function
>that computes the number of days between two given dates. For example,
>given Dec. 6, 1992 and Dec. 24, 1992, the function should return 18.
>
>The "obvious" way to do this is to form tm-structures of the two
>dates, convert them to time_t using mktime(), and then find the
>difference in seconds using difftime(). However, K&R2 is not explicit
>about this and I would like to ask a few details:
>

If the standard time facilities are inadequate for your purposes try the
following functions which are fairly small and quick!

fromdate() converts a generalised Gregorian date to a relative day count.
diffdate() takes the difference between 2 relative day counts. For portability
you're limited to roughly year +/- 32766 although changing all year
declarations to long should extend that to over +/- 500,000 years with 32 bit
longs! (Perhaps useful for Fred Flintstone's diary! :-) )

fromdate() returns values relative to some date in year 0 (i.e. 1BC) but the
precise date doesn't matter since we're only concerned with the difference.


/********************************  diffdate()  ********************************
 * Calculates the difference in days between 2 dates
 */

static long diffdate(int year1, int month1, int dotm1,
                     int year2, int month2, int dotm2 )

{
    return(fromdate(year2, month2, dotm2) - fromdate(year1, month1, dotm1));
}


/********************************  fromdate()  ********************************
 * Converts from Gregorian date to Julian days
 */

static long fromdate(int year, int month, int dotm)

{
    long epoque;

    month -= 2;             /* Make the year start on March 1st (!) */
    if (month < 1) {
        month += 12;
        year--;
    }

    epoque = year/400;
    if (epoque*400 > year)  /* Ensure negative years are dealt with correctly */
        epoque--;
    year -= epoque*400;     /* Now 0 <= year < 400 */

    return(epoque*146097L + year*365L + year/4 - year/100 +
           (month*367)/12 + dotm);
}


-----------------------------------------
Lawrence Kirby | fred@genesis.demon.co.uk
Wilts, England | 70734.126@compuserve.com
-----------------------------------------
Newsgroups: comp.lang.c
From: swispl@solomon.technet.sg (SW International)
Subject: C pretty printer wanted
Organization: TECHNET, Singapore
X-Newsreader: TIN [version 1.1 PL8]
Date: Wed, 16 Dec 1992 07:53:34 GMT

Hello everyone !

I am looking for program, which takes as input C-source, and prints it
"pretty". No, I don't mean like bc would do, changing indenting etc, but
the following:

	print character constants and strings in bold
	print comments shaded or shadowed

maybe something else, but that's what i want.

It can be in shell, ksh, perl or C. It can generate output for either
HPLJ, epson or (even better) Postscript.

It would be nice, if (in case of PS) it can also put two pages onto one,
wrap lines and put a nice header, in the style that so many popular
programs use. But that functionality could also be provided by another
program, or by a separate postscript module to b included when nedded.

Oh yes, before I forget. It should not choke on syntax that does not exactly conform with C. Ie. it should only check for strings and comments etc, but not
necessarily examine avery variable.

Is there anything like it out there?

aTdHvAaNnKcSe

Mathias
--
SW International Systems Pte Ltd     |  "I've got a plan so cunning 
    14, Science Park Drive           | you could put a tail on it and
    Singapore Science Park           | call it a weasel".. Black Adder
    Singapore 0511                   | 
    Tel: (65) 778-0066               |
    Fax: (65) 777-9401               | swispl@solomon.technet.sg
*Eifersucht ist eine Leidenschaft, die mit Eifer sucht, was Leiden schafft*
From: ugo@oliver.sublink.org (Ugo Cei)
Newsgroups: comp.lang.c
Subject: Re: C palindrome puzzle
Keywords: ANSI C, palindrome, puzzle
Date: 12 Dec 92 20:10:26 GMT
Organization: Oliver System - Pavia ITALY

imc@comlab.ox.ac.uk (Ian Collier) writes:

>By the way, why use printf() when puts() will do?

Because K&R did!

-- 
Ugo Cei --- Via Colombo 7 - 27100 Pavia - ITALY   |
         -- Sublink:  ugo@oliver.sublink.org      | "Real programs dump core"
Newsgroups: comp.lang.c
From: thayne@unislc.uucp (Thayne Forbes)
Subject: Re: RFD: splitting comp.lang.c
X-Newsreader: TIN [version 1.1 PL6]
Organization: HomeVax
Date: Thu, 17 Dec 1992 02:57:49 GMT

Steve Gallichio (steveg@cadkey.com) wrote:
: In article <1992Dec16.151243.12903@cadkey.com> eric@cadkey.com (Eric Holtman) writes:
: >Therefore, I propose the following splits for this newsgroup
: 
: Eric, you ignorant slut... :-)
:  
: How about comp.lang.c.howdoigetunbufferedinputwhenusinggetchar ?

My boss said this might be a good place to start a new group called
comp.lang.c.helpmekeepmyjob
I don't understand what he means, but I was thinking about starting a
group for a good friend of mine called
comp.lang.c.nuke.sub.commander

What do you think?

Oh yeah,  Eric, you are an insufferable prig.

-- 
Thayne Forbes
thayne@unislc.slc.unisys.com
Newsgroups: comp.lang.c
From: mccall@mksol.dseg.ti.com (fred j mccall 575-3539)
Subject: Re: Peek/Poke in C
Organization: Texas Instruments Inc
Date: Fri, 18 Dec 1992 16:06:00 GMT

In <BV5XVB5w165w@blackwlf.gwinnett.com> ericwebb@blackwlf.gwinnett.com (eric webb) writes:

>Hi again.. does anyone know how to do equivalent of BASIC's PEEK & POKE 
>statements in C?  My guess is that you need to use a far pointer to the 
>type of data (i.e., char, int, etc.), and then stuff the ptr with the seg 
>& offset.  How does one do this stuffing?  Does anyone know of any other 
>way to do it??  I need to go both ways, esp. POKE.

Sounds like you're in implementation dependent country (what with
'far', 'set', and 'offset').  Check your manual.

[And that's what you get for using DOS and BASIC.  :-)]

-- 
"Insisting on perfect safety is for people who don't have the balls to live
 in the real world."   -- Mary Shafer, NASA Ames Dryden
------------------------------------------------------------------------------
Fred.McCall@dseg.ti.com - I don't speak for others and they don't speak for me.
Xref: sparky comp.lang.c:18619 comp.lang.pascal:7562
From: hosken@spss.com (Bill Hosken)
Newsgroups: comp.lang.c,comp.lang.pascal
Subject: Re: Shape fitting
Date: 18 Dec 92 15:34:57 GMT
Organization: SPSS, Inc.

In article <1992Dec18.042948.23135@philmtl.philips.ca>, ray@philmtl.philips.ca (Ray Dunn) writes:
> There doesn't seem to be an appropriate newsgroup to ask general algorithm
> questions so please excuse this here (didn't I see some talk about
> comp.algorithms in news.groups a few months ago?)
> 
> Can someone point me in the direction of a good reference for algorithms to
> fit shapes - I came up dry in a scan of the local univ library index.
> 
This is one of the varients of the 'bin packing' problem.  There is an
extensive literature.  Don't expect to find any fast 'optimal' algorithm.
Newsgroups: comp.lang.c
From: bandy@netnews.jhuapl.edu (Mike Bandy)
Subject: Re: VAX C and RMS
Organization: JHU/Applied Physics Laboratory
Date: Fri, 18 Dec 1992 16:55:17 GMT

billb@crpmks.uucp (Bill Bochnik (Info Systems)) writes:

>I'm new to using C to access VMS structures, such as RMS, so bear with me.  
>Could somebody send me a sample of code, or point me toward a good book on 
>using RMS files from C?  I'm working with MONITOR data files, which has 
>variable length records (as per the layout in the back of the manual).  

DEC's "VAX-11 C" book (the small format orange one) has a chapter on 
RMS.  They discuss setting up the FABs, RABs, XABs, etc and hooking 
them together.

-- 

	Mike Bandy
	bandy@aplcomm.jhuapl.edu
	Johns Hopkins University / Applied Physics Lab
From: mouse@thunder.mcrcim.mcgill.edu (der Mouse)
Newsgroups: comp.lang.c
Subject: Re: Question to test general C knowledge
Date: 20 Dec 92 23:44:00 GMT
Organization: McGill Research Centre for Intelligent Machines

In article <1992Dec17.190025.11325@athena.mit.edu>, scs@adam.mit.edu (Steve Summit) writes:
> In article <1992Dec14.222413.28898@newshost.lanl.gov>, jlg@cochiti.lanl.gov (J. Giles) writes:

>>    varname%4
>>    varname&03
> Whether or not the AND is faster is immaterial, as any C compiler
> worthy of the name can and will replace a modulus operation by a mask
> if it is in fact correct and better to do so.

The compiler often cannot tell whether it is correct to do so.  If the
variable is declared signed (probably implicitly), but cannot in fact
be negative at that point (for reasons the compiler cannot determine,
eg, it's the return value from a separately compiled function which is
called with arguments which make it always return a positive value),
then &3 is correct but the compiler can't determine this.  (Unless it
rounds divison by four towards minus infinity, in which case they *are*
equivalent.)

> There are a few "source code" optimizations which it may still be
> worth making, but replacing % by & (or / by >>) isn't one of them.

And I agree, except for special circumstances (eg, divison/modulus is
slower than and/shift, and cycles are very precious, or kernel code for
a machine where / and % are normally done by the kernel on behalf of
user processes).

					der Mouse

			    mouse@larry.mcrcim.mcgill.edu
From: d_north@ondec.lonestar.org (David G. North, CCP)
Newsgroups: comp.lang.c
Subject: Re: 9th order polynomial
Date: 15 Dec 92 03:40:15 GMT
Organization: onDEC systems, Dallas, TX

In article <1992Dec10.154522.15893@lambda.msfc.nasa.gov>,
  edmondso@lambda.msfc.nasa.gov (Rich Edmondson) writes:
> I need to use a 9th order polynomial to calibrate values on a system I
> am designing.  Does anyone know of an algorithm which is more
> efficient than recursive multiplication, given a list of polynomial
> coefficients?
Define recursive multiplication.

How about an O*log2(n) algorithm--->

double
di_exponentiate(d_src,i_pow)
  double d_src;
  int i_pow;
{
  double temp,accum;
  int i;

  for (temp=d_src, accum=1.0, i=i_pow; i ; i>>=1, temp*=temp)
    if (i&1) accum *= temp;
  return(accum);
}

int
main(){
  double d_test = 2.0;
  int i_exponent = 13;
  double d_result;

  d_result = di_exponentiate(d_test,i_exponent);
  printf("Result is %lf\n",d_result);

}
-- 
David G. North, CCP
d_north@ondec.lonestar.org {...!texsun!montagar!ondec!d_north}
onDEC systems                                 "Everyone's crazy but you & me...
P.O.Box 795848, Dallas TX  75379-5848          and come to think about it, I'm
(214)985-1316 ... (214)902-3957                not so sure about you either!"
From: scjones@thor.sdrc.com (Larry Jones)
Newsgroups: comp.lang.c
Subject: Re: Questions about token merging and trigraphs
Date: 17 Dec 92 16:31:14 GMT

In article <mcdonald.610@aries.scs.uiuc.edu>, mcdonald@aries.scs.uiuc.edu (J. D. McDonald) writes:
> [ re trigraphs ]
> That last it **UTTERLY WRONG**. I found that **many** of my programs
> broke!! **MANY** .. and they had lots of occurences of ??!, 
> ??) ??(, ??[. and ??] in them, in **critical** places!!!
> 
> I chose them as delimiters in a special ASCII file format for data,
> and chose them as no one would be likely to try to use them as
> actual strings in the text-comment portion of the file!! They are coded
> into the program in strings .. and it would not have been so bad had
> not the idiotic ANSI committee decided that they would be replaced in
> strings as well as code!!

If they weren't replaced in strings, they wouldn't be much good.  I
sympathize with your problems, but ANSI C compilers have been around for
a long time now and you are the first person I've heard complain about
trigraphs causing major breakage.

> BECAUSE OF THEM, it is **IMPOSSIBLE** to write code that is both
> K&R I and ANSI!!!

Nonsense -- simply avoid using those combinations of characters.  Since
you presumably have to continue to support your existing file format,
you can't follow that advice, but you can do something like:

	const char delims[5][4] = {
		{ '?', '?', '!', '\0' },
		{ '?', '?', ')', '\0' },
		{ '?', '?', '(', '\0' },
		{ '?', '?', ']', '\0' },
		{ '?', '?', '[', '\0' }};

and then use delims[] rather than having explicit strings in the code.

> Ordinary C was never broken in this regard, so no fix was necessary.
> Trigraphs should be removed from the standard, TODAY.

Can you spell "parochial"?  You've obviously never tried to use C on an
IBM mainframe or a computer in Japan, Denmark, etc.
----
Larry Jones, SDRC, 2000 Eastman Dr., Milford, OH  45150-2789  513-576-2070
larry.jones@sdrc.com  or  ...uunet!sdrc!larry.jones
I can feel my brain beginning to atrophy already. -- Calvin
Newsgroups: comp.lang.c
Subject: turboc
From: donohue@nrlvx1.nrl.navy.mil
Date: 18 Dec 92 14:08:40 -0400
Organization: NRL SPACE SYSTEMS DIVISION

This is a followup to the turbo C question I had posted earlier
This code works in vax C, but when it is called in turbo c it produces 
a floating point error:domain.  It does allow a string to be entered, but
once it is, an error occurs.  Can anybody tell me what the discrepency
in turbo c is that I don't see?  Thanks

John Donohue

#include <stdio.h>
#include <math.h>
#include <float.h>
#include <stdlib.h>
#include <ctype.h>
#define issign(c)  (((c) == '-' || (c) == '+') ? (1):(0))
#define size 12
#define YES 1
#define NO 0
main ()
{
char ch;
static char number[size];
int digit;
float value;
double atof();
int count;
M10: count = 0;
 digit = YES;
printf("ENTER NUMBER \n");
gets(number);
	if (number[size -1] != '\0')
		{
		puts("Too many digits; You wiped me out.");
		number[size-1] = '\0';
		goto M10;
		}
while ((ch = number[count]) != '\0' && digit == YES)
	{
	if (!issign(ch) && !isdigit(ch))
		{
		digit = NO;
		printf("That doesn't look like an number\n");
		goto M10;
		}
	if (digit == YES)
	{
	value = atof(number);
	printf("The number was %f \n",value);
	goto stoper;
	}
	}	
stoper: printf("PROGRAM DONE\n");	
}
From: hbf@gandalf.uio.no (Hallvard B Furuseth)
Newsgroups: comp.lang.c
Subject: assert
Date: 19 Dec 92 15:31:13 GMT
Organization: University of Oslo, Norway

assert is sometimes (ie sun or gcc) defined to call another macro (ie
__assert) which does most or all of the work.  I expect it's a hack to
make sure the argument is stringified properly, or something like that.
Can somebody explain?
--

Hallvard
Newsgroups: comp.lang.c
From: wirzeniu@klaava.Helsinki.FI (Lars Wirzenius)
Subject: Re: find the number difference of dates
Organization: University of Helsinki
Date: Wed, 16 Dec 1992 18:29:04 GMT

lembark@sysjj.mdcbbs.com writes:
>(time_t)-1 works since time_t is normally an unsigned quantity;
>(time_t)~0 does the same basic thing (32 bits of 0xFFF... will do the
>same thing).

(time_t)-1 works because it is defined so.  The author of the C
library has to choose time_t so that the cast will work.  I do not
know whether time_t is normally an unsigned quantity (it isn't on the
machines I have access to, both of them running different versions of
Unix), but assuming anything about time_t's type is not a good idea.
Even the assumption that -1 and ~0 have the same representation is
invalid (it only works on systems with two's complement representation
for negative numbers).

time_t is an abstraction, and you shouldn't assume anything about what
it looks like on the inside.  Use the documented interface (the
functions in time.h, e.g. time, gmtime, localtime, difftime, mktime)
to manipulate things.

The same rules apply for other abstract types defined by the library.
For example, don't go mucking with the internals of a FILE object.

--
Lars.Wirzenius@helsinki.fi  (finger wirzeniu@klaava.helsinki.fi)
   MS-DOS, you can't live with it, you can live without it.
Newsgroups: comp.lang.c
From: jinli@dgp.toronto.edu (Jin Tonic Li)
Subject: Wanted: program to extract comments from C/C++ codes
Organization: CSRI, University of Toronto
Distribution: na
Date: 20 Dec 92 20:32:50 GMT


Is there a program that can extract the comments out of C/C++
codes and dump them into a file?

It will be great if the program can handle both /* ... */ and //
comment styles and can keep the indentation for the comments.
Also, for the // comment style, it can remove the initial //
automatically so that only the text is dump out to the file.

Info on such a program/codes will be appreciated.

Thanks in advance,

-- 
Jin Li                               (416) 978-6619  //  Gin & Tonic mix well
Dynamic Graphics Project, Dept. of Computer Science  \\
University of Toronto, Ontario, Canada   M5S 1A1     //
jinli@dgp.utoronto.ca          uunet!utai!dgp!jinli  \\    No bugs, no bucks
Newsgroups: comp.lang.c
From: wirzeniu@klaava.Helsinki.FI (Lars Wirzenius)
Subject: Re: unbuffered getchar().
Organization: University of Helsinki
Date: Wed, 16 Dec 1992 19:34:06 GMT

adesai@iastate.edu (Alpaa Desai) writes:
>A while ago some one had asked if there was a way to get unbuffered
>getchar().  I saw a couple of solutions for it which were I thought a
>bit complicated.  Anyway, I found a simple one in Kernighan and
>Ritchie (second edition) page171.  They have given the entire
>function getchar().

Actually, no.  They have written a function that works somewhat like
getchar, some of the time, and have even called it getchar (stupid,
IMHO), but it is not the real getchar.  

Even so, the function they have does not solve the problem that most
people are having, since it doesn't disable the operating system's
buffer, only stdio's, and that is required for the effect of reading
single characters without the user having to press return.

(Their getchar doesn't mix very well with stdio functions precisely
because it avoid stdio's buffers.)

Also not that their implementation is for Unix, not a generic one.
The problem of reading-without-pressing-return stays unsolved (or at
least the solutions are specific to systems).

--
Lars.Wirzenius@helsinki.fi  (finger wirzeniu@klaava.helsinki.fi)
   MS-DOS, you can't live with it, you can live without it.
From: jos@and.nl (Jos Horsmeier)
Newsgroups: comp.lang.c
Subject: Re: Another question to test general C knowledge
Date: 15 Dec 92 16:23:35 GMT
Organization: AND Software BV Rotterdam

In article <1992Dec15.131413.3057@infonode.ingr.com> dfw@fed_img.ingr.com writes:
|Yeah,
|  how about
|
|  i = i++;
|
|  What are the side effects of THIS (i never gets incremented).
|  i = ++i; is trivial; ++i PRE-increments i, then assigns it to itself,
|  just as i++ or i += 1.
|
|Enjoy,

No, I'm not enjoying myself. Can we please stop this thread. Have a look
at what the standard says about this silliness:

3.3 Expressions

Between the previous and the 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 accessed only to determine the
value to bestored.

[ end quote ]

Since both examples above violate the first `shall' clause, the behavior
is undefined or maybe just implementation defined. That's all ...

kind regards,

Jos aka jos@and.nl
Newsgroups: comp.lang.c,comp.unix.bsd
From: woyansky@flamingo.ece.cmu.edu (George J. Woyansky)
Subject: Re: Segmentation faults
Originator: woyansky@flamingo.ece.cmu.edu
Reply-To: woyansky@flamingo.ece.cmu.edu (George J. Woyansky)
Organization: Electrical and Computer Engineering, Carnegie Mellon
Date: Fri, 18 Dec 1992 13:04:50 GMT


|> 
|> 
|> Hi,
|>     Why is the following code producing a segmentation fault???
|> I am compiling this code on an Encore Multimax running UMAX 4.3 Unix.
|> Please send replies to CBUSCH@ub.d.umn.edu.
|> 
[OK frags deleted] 
|> 
|> void writexy(x,y,s)
|> {
|>    printf("\33[%d;%dH%s",y,x,s);
|> }
|>    



Hmm.  Maybe here?  You need 
int x,y;
char s[];

after your function declaration.


-George Woyansky
 ECE Dept., Carnegie Mellon University
 Pittsburgh, PA  15213
From: c60b-1fk@e260-1c.berkeley.edu (Ahmon Dancy)
Newsgroups: comp.lang.c
Subject: stdin
Date: 17 Dec 1992 03:37:56 GMT
Organization: University of California, Berkeley
Distribution: world
NNTP-Posting-Host: e260-1c.berkeley.edu
Originator: c60b-1fk@e260-1c.berkeley.edu


Can someone give me an example of code that will periodically check
if stdin is ready (someone has typed something) but not stop and wait
for input.  Any help is appreciated.  Email replies only, please.
-- 
-------------------------------------------------------------------------------
Ahmon Dancy  (c60b-1fk@webworm.berkeley.edu)
-------------------------------------------------------------------------------
From: hartman@ulogic.UUCP (Richard M. Hartman)
Newsgroups: comp.lang.c
Subject: Re: What do you say.
Date: 11 Dec 92 21:07:25 GMT
Distribution: na
Organization: negligable

Sorry Steve, that answer just seemed too straight to be funny.

(Am I forgiven?)

		-Richard Hartman
		hartman@ulogic.COM

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
"There are no problems, only opportunities!"
"What we have here is an insurmountable opportunity..."
Newsgroups: comp.lang.c