This is the mail archive of the cygwin@sourceware.cygnus.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: sys_errlist


John Fralinger <fralinjh@ei.dupont.com> 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 cygwin-unsubscribe@sourceware.cygnus.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]