Date: Wed, 21 Oct 1998 09:06:58 -0700 (PDT) From: Matthew Dillon <dillon@apollo.backplane.com> To: "David O'Brien" <obrien@nuxi.com> Cc: Peter Wemm <peter@netplex.com.au>, cvs-committers@FreeBSD.ORG Subject: Re: cvs commit: src/lib/libc/stdio mktemp.c Message-ID: <199810211606.JAA06226@apollo.backplane.com> References: <199810202134.PAA28899@harmony.village.org> <199810210231.KAA14549@spinner.netplex.com.au> <19981021025928.A21068@nuxi.com>
next in thread | previous in thread | raw e-mail | index | archive | help
:> - open(path, O_CREAT|O_EXCL|O_RDWR, 0600)) >= 0)
:> + open(path, O_CREAT|O_EXCL|O_RDWR, 0600)) >= 0) {
:
:Stylistically speaking, why do people keep insisting on not checking
:error conditions properly? open(2) is documented to return "-1" on
:error, not non-negative as many want to test it against.
:
:Yes, this has caused me problems on an old 286 Xenix system.
for open(), checking the result for >= 0 for success is historical.
In many years past, some programmers made the mistake of checking the
result of open for values greater then 0 (> 0), forgetting that 0 is
a perfectly valid file descriptor. In disgust, T.R.O.T.W. explicitly
began comparing the result against >= 0.
Most people I know do not compare against -1 explicitly for any system
call but instead use an insequality. Historically, the result of a system
call has been tested negative ( < 0 ) to determine if there was an error,
or exactly 0 ( == 0) if not, except for those calls that had a specific
type of return value (such as read()). The one glaring exception to this,
historically, has been lseek(). Many people these days don't even bother
checking the return value for lseek() unless they need the new position
of the file.
With open(), it is especially silly to compare against an explicit -1
because many programs will then use the file descriptor in an FD_SET or
as an array index somewhere and thus the descriptor would blow up the
program if it were negative (say, -2). Better to fail.
-Matt
:--
:-- David (obrien@NUXI.com -or- obrien@FreeBSD.org)
:
:
Matthew Dillon Engineering, HiWay Technologies, Inc. & BEST Internet
Communications & God knows what else.
<dillon@backplane.com> (Please include original email in any response)
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199810211606.JAA06226>
