Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 29 Nov 2003 21:51:53 -0800
From:      Alfred Perlstein <bright@mu.org>
To:        Daniel Eischen <eischen@vigrid.com>
Cc:        current@freebsd.org
Subject:   Re: [PATCH] please review. file descriptor passing for libc_r.
Message-ID:  <20031130055153.GC35957@elvis.mu.org>
In-Reply-To: <Pine.GSO.4.10.10311300032240.5459-100000@pcnet5.pcnet.com>
References:  <20031129234834.GY35957@elvis.mu.org> <Pine.GSO.4.10.10311300032240.5459-100000@pcnet5.pcnet.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Seems like a good diff.

* Daniel Eischen <eischen@vigrid.com> [031129 21:41] wrote:
> 
> You should just call close() if the fd has not been initialized.
> 
> Index: uthread_close.c
> ===================================================================
> RCS file: /opt/FreeBSD/cvs/src/lib/libc_r/uthread/uthread_close.c,v
> retrieving revision 1.16
> diff -u -r1.16 uthread_close.c
> --- uthread_close.c	9 Jun 2003 16:45:37 -0000	1.16
> +++ uthread_close.c	30 Nov 2003 09:05:52 -0000
> @@ -50,8 +50,7 @@
>  	struct fd_table_entry	*entry;
>  
>  	if ((fd < 0) || (fd >= _thread_dtablesize) ||
> -	    (fd == _thread_kern_pipe[0]) || (fd == _thread_kern_pipe[1]) ||
> -	    (_thread_fd_table[fd] == NULL)) {
> +	    (fd == _thread_kern_pipe[0]) || (fd == _thread_kern_pipe[1])) {
>  		/*
>  		 * Don't allow silly programs to close the kernel pipe
>  		 * and non-active descriptors.
> @@ -59,6 +58,8 @@
>  		errno = EBADF;
>  		ret = -1;
>  	}
> +	else if (_thread_fd_table[fd] == NULL)
> +		ret = __sys_close(fd);
>  	/*
>  	 * Lock the file descriptor while the file is closed and get
>  	 * the file descriptor status:
> 
> -- 
> Dan Eischen

-- 
- Alfred Perlstein
- Research Engineering Development Inc.
- email: bright@mu.org cell: 408-480-4684



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20031130055153.GC35957>