*BSD News Article 51828


Return to BSD News archive

Path: euryale.cc.adfa.oz.au!newshost.anu.edu.au!harbinger.cc.monash.edu.au!simtel!news.sprintlink.net!wizard.pn.com!mozo.cc.purdue.edu!purdue!haven.umd.edu!news.umbc.edu!cs.umd.edu!not-for-mail
From: torek@elf.bsdi.com (Chris Torek)
Newsgroups: comp.unix.bsd.bsdi.misc
Subject: Re: tis toolkit compile problems....
Date: 28 Sep 1995 02:46:54 -0700
Organization: Berkeley Software Design, Inc.
Lines: 37
Message-ID: <44dque$pqi@elf.bsdi.com>
References: <449ru3$su7@gateway.gallup.com> <44c4jc$ho5@web1.bga.com>
Reply-To: torek@bsdi.com
NNTP-Posting-Host: elf.bsdi.com

In article <449ru3$su7@gateway.gallup.com> Todd Beebe <todd@gallup.com> notes:
>http-gw.h:21: conflicting types for sys_errlist

Vick Khera and David P. Maynard both note that this problem can
always be fixed by deleting (or using `#ifndef __bsdi__' around)
the program's declaration(s) of sys_errlist[].

It is probably worth adding that the `right' fix is to remove all
references to sys_errlist[] entirely.  They will either be
declarations, which can simply be deleted, or uses like:

	printf("something went wrong: %s\n", sys_errlist[errno]);

The ANSI/ISO C Standard requires systems to provide a strerror()
function that produces the appropriate text, so that the above
should read:

	printf("something went wrong: %s\n", strerror(errno));

This has the advantages of (a) working on all ANSI-conformant
systems and (b) doing something reasonable when errno is something
unexpected, such as when an old binary is run on a future system
with new error numbers.

Software that must run on systems that fail to provide a strerror()
can still use strerror(), by including an optional `strerror.c'
module (with the obvious code) for these systems.  (Thus, if someone
says `not all systems have strerror()', that is not a good excuse. :-) )

For strict correctness, any source module that uses strerror() should
also `#include <string.h>'.  (The -Wimplicit warning flag for gcc2
will detect missing declarations of this sort.  See gcc(1) for details.)
-- 
In-Real-Life: Chris Torek, Berkeley Software Design Inc
Berkeley, CA	Domain:	torek@bsdi.com	+1 510 549 1145
  `... if we wish to count lines of code, we should not regard them as
   ``lines produced'' but as ``lines spent.'' '  --Edsger Dijkstra