At 09:28 AM 12/12/2002, Brane wrote:
>William A. Rowe, Jr. wrote:
>
>>At 06:49 AM 12/12/2002, Jeff Trawick wrote:
>>  
>>
>>>[EMAIL PROTECTED] writes:
>>>
>>>    
>>>
>>>>wrowe       2002/12/11 23:01:52
>>>>
>>>>  Modified:    file_io/unix filestat.c
>>>>  Log:
>>>>    switch {case} and default: are probably better for handling this case.
>>>>    Is anyone aware of a platform where S_IFxxx # isn't available, yet
>>>>    S_ISxxx(#) is?
>>>>      
>>>>
>>>RH Linux 7.3 doesn't have S_IFFIFO
>>
>>Yet it does have S_ISFIFO?
>
>The funny thing about this change is that, for a short switch like that,
>many modern compilers just convert it to a series of "if ... else if"
>tests. So just putting the "else"s in there wouldn've been better -- not
>to mention more correct. I don't think generating a jump table for just
>seven cases makes sense on any platform.

While I agree with you if the tests...

if (i == S_IFxxx)      if (S_IFxxx(i))

were identical, they aren't.  This change still gains us the potential benefit
(possibly optimized away) of not remasking the type from the mode repeatedly.

I've worked around missing S_IFFIFO and S_IFSOCK.  If there are others
on other odd platforms, I'll surrender, revert the patch and add the missing
else-es (in the better order they are given now; reg, dir, lnk etc.)

Bill



Reply via email to