Mailing-List: contact cygwin-help@sourceware.cygnus.com; run by ezmlm
List-Unsubscribe: <mailto:cygwin-unsubscribe-archive-cygwin=delorie.com@sourceware.cygnus.com>
List-Subscribe: <mailto:cygwin-subscribe@sourceware.cygnus.com>
List-Archive: <http://sourceware.cygnus.com/ml/cygwin/>
List-Post: <mailto:cygwin@sourceware.cygnus.com>
List-Help: <mailto:cygwin-help@sourceware.cygnus.com>, <http://sourceware.cygnus.com/ml/#faqs>
Sender: cygwin-owner@sourceware.cygnus.com
Delivered-To: mailing list cygwin@sourceware.cygnus.com
Message-Id: <199911032200.QAA03357@mercury.xraylith.wisc.edu>
To: John Fralinger <fralinjh@ei.dupont.com>
cc: cygwin@sourceware.cygnus.com
Subject: Re: sys_errlist 
In-Reply-To: Your message of "Wed, 03 Nov 1999 14:25:36 EST."
             <00e701bf2631$34f297b0$9a5c37c0@ei.dupont.com> 
Date: Wed, 03 Nov 1999 16:00:03 -0600
From: Mumit Khan <khan@thor.xraylith.wisc.edu>

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

