On Thu, 16 Feb 2006, Olwe Bottorff wrote:

> I'm reading "Code Reading," a very interesting book.
> He's talking about file pointers and there's a BSD OS
> line (ftpd.c) that goes like this:
>
> fin = fopen(name,"r"), closefunc = fclose;

Worse yet, it's comma operator abuse.  Of course, pretty much all use of 
the comma operator is abuse of the comma operator.

>
> I've never seen two things being done on the same
> line. It's just
>
> fin = fopen(name,"r");
> closefunc = fclose;

This code executes exactly the same as the code above.  Unless they're 
doing something really wonky, like:

     x = (fin = fopen(name, "r"), closefunc = fclose);
In which case the code should be rewritten as:
     fin = fopen(name, "r");
     closefunc = fclose;
     x = closefunc;
and the author hunted down and shot.

> right? Or am I missing something?

C doesn't care about whitespace generally.  There is no difference, to C, 
between:
     fin = fopen(name, "r"); closefunc = fclose;
and splitting it into two lines.  Heck, you could even do:
fin
=
fopen
(
name
,
"r"
)
;
closefunc
=
fclose
;

and C would care.  It's still bad style.

Brian