[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: memstat-0.9 hurd patch (PATH_MAX)



Hi,

I'm currently fixing... my fix! 
I have some questions related to things that are not yet clear to me...

2012/1/22 Jérémie Koenig <jk@jk.fr.eu.org>
The usual trick for "%d" is to use the constant "sizeof (int) * 3 +
1". I included + 1 for the sign, but it's not really necessary if we
exepect sizeof(int) >= 2, which we probably should.
Why '*3'? Do you expect PID to be in a certain range? Or is it C-voodoo?!

Also, I think there are some problems with your pointer arithmetic.
For instance,
     if (fgets(buf+last,size,f) == NULL)
will overwrite the last character read from the previous iteration (if
there was one).
According to the 'gets' page, each "read" returns a '\0' terminated string. Each time I get rid of this '\0' when concatenating.
 
I would say the "first unused byte" convention is more common and
straightforward.
I'll rewrite a more consistent code... 

buf[last+1] will always be '\0' (the terminating null character of the
string). I also think you mean to return when the last character _is_
a newline (fortunately the two mistakes cancel each other out in the
usual case of no reallocation needed :-).
My Bad!!
 
Last, but not least, you should be careful with whitespace. Your patch
mixes tabs and spaces for indentation, 
... which is perfectly consistent with the original code! ;-)
 Is a mix (maybe with a logic... I haven't figured it out yet) of spaces and tabs. I can try to reproduce the same "pattern" but not sure what the rule is! 

Thanks again, hope next iteration will be better! 

Tanguy

Reply to: