Re: __attribute__((warn_unused_result)) for NetBSD?

James Chacon <[email protected]>
Newsgroups gmane.os.netbsd.devel.general
Message-ID <[email protected]>
On Sep 15, 2008, at 2:39 PM, Aleksey Cheusov wrote:

>> In general EBADF is meaningless on close.
> Yes, EBADF is not a big problem.
>
>> Isn't it only possible to get EINTR on non-blocking I/O? Otherwise
>> isn't this an auto-restarted call?
> AFAIK SA_RESTART is BSD-ism and is absent on many systems.
>

We're kinda discussing a BSD system so it's kinda relevant. I don't  
really care if linux didn't implement it...

>> Anyways, for the most part all common usages of close don't need
>> warnings about missing the return value that I can see.
> I personally disagree. The following is much more robust approach.
>
> void xclose (int fd)
> {
> 	int ret;
> 	do {
> 		ret = close (fd);
> 	}while (ret == -1 && errno == EINTR);
>
> 	if (ret == -1){
> 		perror("perror failed");
> 		exit (1);
> 	}
> }
>
> The same for read(2), write(2) and many others.
>

You may choose to write such code. The reality is (especially for  
close) that code like this doesn't exist and likely has no value on  
systems with restartable system calls.

James
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.