Currently we have both EOPNOTSUPP ("Operation not supported") and
ENOTSUP ("Not supported") errnos. EOPNOTSUPP is historical; ENOTSUP
was randomly added by POSIX relatively recently.

And lately I've noticed a tendency to conflate them, which isn't
healthy.

It is too late to do #define ENOTSUP EOPNOTSUPP (although we could do
this as part of the mythical libc major version bump to happen
Sometime(TM)) but I think we should take steps to prevent any more
confusion than already exists:

   - do not add new uses of ENOTSUP except where specifically mandated
     by POSIX;
   - avoid creating interfaces where ENOTSUP and EOPNOTSUPP are both
     expected error conditions (and remove any that have crept in);
   - mention this in errno(2);
   - also add a notice to this effect somewhere it will be seen
     (although I have no idea where that would be);

Alternatively we could try to articulate a distinction between them
and adjust the messages to match; but I'm not sure this is compatible
with the mandated behavior.

Thoughts anyone?

-- 
David A. Holland
dholl...@netbsd.org

Reply via email to