errno.h: ESTRPIPE

Ralf Corsepius ralf.corsepius@rtems.org
Mon Mar 16 19:27:00 GMT 2009


Corinna Vinschen wrote:
> On Mar 16 16:35, Ralf Corsepius wrote:
>> Corinna Vinschen wrote:
>>> The error code is used at least in Linux and Solaris. 
>> It's not part of any POSIX or other standard I am aware about.
>>
>> If there should be one, please point me to it.
>>
>>> If we generate
>>> our own Cygwin-specific error codes we will at one point have a errno
>>> list where the same error code is used for different purposes on
>>> different systems.  I don't see that this gains anybody anything.
>> I don't have much of a problem with Cygwin wanting to adopt other OS's  
>> proprietary extensions. But this is not what your patch is doing.
>>
>> Your patch is infecting newlib with Cygwin's wish to generalize ESTRIPE.  
>> This is wrong. ESTRIPE is a non-standardized and OS-specific extension,  
>> and therefore should be treated as such (i.e. #ifdef'ed).
> 
> It's not ESTRIPE but ESTRPIPE.
Pardon, typo on my part. I am talking about ESTRPIPE

>> C.f. the patch below.
> 
> Newlib already defines the following errors not present in the POSIX standard:
Well, latent bugs, subject to fixing, I'd say.

>   EADV            /* Advertise error */
>   EBADE           /* Invalid exchange */
>   EBADFD          /* f.d. invalid for this operation */
>   EBADR           /* Invalid request descriptor */
>   EBADRQC         /* Invalid request code */
>   EBADSLT         /* Invalid slot */
>   EBFONT          /* Bad font file fmt */
>   ECHRNG          /* Channel number out of range */
>   ECOMM           /* Communication error on send */
>   EDEADLOCK       /* File locking deadlock error */
>   EDOTDOT         /* Cross mount point (not really error) */
>   EFTYPE          /* Inappropriate file type or format */
>   EHOSTDOWN       /* Host is down */
>   EL2HLT          /* Level 2 halted */
>   EL2NSYNC        /* Level 2 not synchronized */
>   EL3HLT          /* Level 3 halted */
>   EL3RST          /* Level 3 reset */
>   ELBIN           /* Inode is remote (not really error) */
>   ELIBACC         /* Can't access a needed shared lib */
>   ELIBBAD         /* Accessing a corrupted shared lib */
>   ELIBEXEC        /* Attempting to exec a shared library */
>   ELIBMAX         /* Attempting to link in too many libs */
>   ELIBSCN         /* .lib section in a.out corrupted */
>   ELNRNG          /* Link number out of range */
>   ENMFILE         /* No more files */
>   ENOANO          /* No anode */
>   ENOCSI          /* No CSI structure available */
>   ENONET          /* Machine is not on the network */
>   ENOPKG          /* Package not installed */
>   ENOTBLK         /* Block device required */
>   ENOTUNIQ        /* Given log. name not unique */
>   EPFNOSUPPORT    /* Protocol family not supported */
>   EPROCLIM   
>   EREMCHG         /* Remote address changed */
>   EREMOTE         /* The object is remote */
>   ESHUTDOWN       /* Can't send after socket shutdown */
>   ESOCKTNOSUPPORT /* Socket type not supported */
>   ESRMNT          /* Srmount error */
>   ETOOMANYREFS    
>   EUNATCH         /* Protocol driver not attached */
>   EUSERS    
>   EXFULL          /* Exchange full */
> 
> And I even didn't mention the Cygwin-specific
> 
>   ECASECLASH      /* Filename exists with different case */
>   ENOMEDIUM       /* No medium (in tape drive) */
>   ENOSHARE        /* No such host or network path */
> 
> What's different with ESTRPIPE now?
The ones you mention above are in the same bug-lane as ESTRPIPE is.

The only difference: ESTRPIPE is a new bug.

Ralf





More information about the Newlib mailing list