sys_errlist
Mumit Khan
khan@nanotech.wisc.edu
Wed Nov 3 14:00:00 GMT 1999
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
More information about the Cygwin
mailing list