>>>>> Joost Witteveen writes:

 JW> i.e., 1073741942, or 2**30+118 (doesn't look very special to me).
 JW> As far as I can see, whenever fcntl returns -1, it _should_ set
 JW> errno to something more sensible than that.

Hurd errnos are quite different from Linux errnos, and the errno
you're looking at is quite a sensible one: EOPNOTSUPP (a weaker
version of ENOSYS).  File locking is not fully implemented on the
Hurd, and your program is asking for something that the Hurd doesn't
(yet) understand.  This is a known bug.

So, the correct thing to do is treat this code as a failure.  It will
stop being returned once that particular fcntl is implemented by the
libc and Hurd servers.

The explanation: the Hurd errno space is carved up into server errors,
microkernel errors, etc.  The Mach error code conventions are followed
by or'ing the code (118) with a constant to tell strerror that this is
the Hurd subsystem.  I found EOPNOTSUPP by looking at
libc/manual/error.texi: there's an [EMAIL PROTECTED] errno NNN' line for each
code.

-- 
 Gordon Matzigkeit <[EMAIL PROTECTED]>  //\ I'm a FIG (http://fig.org/)
Committed to diversity and freedom \// Do Screen (http://fig.org/gnu/screen/)


Reply via email to