Subject: RE: sys_errlist
From: "Suhaib M. Siddiqi" <[email-masked]>
To: "Mumit Khan" <[email-masked]>, "John Fralinger" <[email-masked]>
Cc: <[email-masked]>
Date: Wed, 3 Nov 1999 20:22:20 -0500

On most of the Unices, including RedHat Linux it is sys_errlist,
in errno.h on Cygwin it is _sys_errlist.  That was the reason
I had to add #define sys_errlist _sys_errlist at 100 places when
I patched OpenDx code for Cygwin B20.1.  Off course I had to add
#ifdef __CYGWIN__
#include <errno.h>
#endif 
too, otherwise during linking _sys_errlist was not resolved.

Suhaib
 
> -----Original Message-----
> From: [email-masked]
> [mailto:[email-masked]]On Behalf Of Mumit Khan
> Sent: Wednesday, November 03, 1999 5:00 PM
> To: John Fralinger
> Cc: [email-masked]
> Subject: Re: sys_errlist 
> 
> 
> John Fralinger <[email-masked]> writes:
> > Mumit,
> >    Thanks for your quick response.
> >    Your test code below does indeed work.
> > 
> > I am still confused about when to use an "_" and when not to.
> > 
> > I do not have any problems implementing Mr. Siddiqi's suggestion
> > but I would like to understand what's going on.
> 
> sys_nerr, sys_errlist are not mandated by various standards, and the
> runtimes tend to expose these non-standard items with a leading
> underscore. This unfortunately causes trouble with lots of the existing 
> Unix code, and that's unfortunate. Perhaps Cygnus will consider exposing
> the non-underscored version as well via the export definition file?
> 
> Detecting the correct form of sys_nerr and sys_errlist turns out to
> be quite tricky. Consider the following tests that are normally used
> for detecting runtime library characteristics:
> 
>  try 1: create a dummy program with sys_nerr and see if it links. If 
>    found, done.
>  try 2: create a dummy program with _sys_nerr and see if it links. If 
>    found, done.
> 
> If neither tests succeed, the runtime library does not have sys_nerr.
> Now consider the case of Cygwin: you can't just create a dummy program,
> but also have to make sure you include <errno.h>, and then try both
> sys_nerr and _sys_nerr.
> 
> So, what's the right way to do this? Use POSIX mandated strerror ()
> and forget avoid non-standard stuff. Or, since I have code dating
> back many many years, write a port library that implements sys_nerr
> and sys_errlist for platforms that don't have it.
> 
> Regards,
> Mumit
> 
> 
> --
> Want to unsubscribe from this list?
> Send a message to [email-masked]
> 

--
Want to unsubscribe from this list?
Send a message to [email-masked]