Paul Eggert <[EMAIL PROTECTED]> wrote:
> Jim Meyering <[EMAIL PROTECTED]> writes:
>
>> +      if (result == 280)
>> +        result = 0;
>
> Ouch.  I suppose there's no help for it; we need a runtime check to
> work around that kernel bug.  The bug has been reported only for Linux
> kernels, right?  If so, I suggest the following alternative:
>
>       #ifdef __linux__
>       /* Work around what might be a kernel bug:
>        http://bugzilla.redhat.com/442352
>        http://bugzilla.redhat.com/449910
>        It appears that utimensat can mistakenly return 280 rather
>        than 0 to indicate success.
>        FIXME: remove in 2010 or whenever the offending kernels
>        are no longer in common use.  */
>       if (0 < result)
>       result = 0;
>       #endif
>
> This won't cause any difference in behavior on working Linux kernels,
> but is more likely to catch minor variants of the broken Linux
> kernels.  Also, it should generate faster code on all Linux kernels.
> Finally, it doesn't penalize code non-Linux kernels.

Looks good.  Thanks!
I've pushed that.


Reply via email to