This is the mail archive of the
cygwin@sourceware.cygnus.com
mailing list for the Cygwin project.
Re: sys_errlist
- To: John Fralinger <fralinjh at ei dot dupont dot com>
- Subject: Re: sys_errlist
- From: Mumit Khan <khan at nanotech dot wisc dot edu>
- Date: Wed, 03 Nov 1999 16:00:03 -0600
- cc: cygwin at sourceware dot cygnus dot com
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