Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 18 Aug 2013 20:11:35 +0000 (UTC)
From:      Pawel Jakub Dawidek <pjd@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r254499 - in head: include lib/libc/gen
Message-ID:  <201308182011.r7IKBZM3002425@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: pjd
Date: Sun Aug 18 20:11:34 2013
New Revision: 254499
URL: http://svnweb.freebsd.org/changeset/base/254499

Log:
  Implement fdclosedir(3) function, which is equivalent to the closedir(3)
  function, but returns directory file descriptor instead of closing it.
  
  Submitted by:	Mariusz Zaborski <oshogbo@FreeBSD.org>
  Sponsored by:	Google Summer of Code 2013

Modified:
  head/include/dirent.h
  head/lib/libc/gen/Symbol.map
  head/lib/libc/gen/closedir.c
  head/lib/libc/gen/directory.3

Modified: head/include/dirent.h
==============================================================================
--- head/include/dirent.h	Sun Aug 18 20:06:35 2013	(r254498)
+++ head/include/dirent.h	Sun Aug 18 20:11:34 2013	(r254499)
@@ -79,6 +79,7 @@ int	 dirfd(DIR *);
 #endif
 #if __BSD_VISIBLE
 DIR	*__opendir2(const char *, int);
+int	 fdclosedir(DIR *);
 int	 getdents(int, char *, int);
 int	 getdirentries(int, char *, int, long *);
 #endif

Modified: head/lib/libc/gen/Symbol.map
==============================================================================
--- head/lib/libc/gen/Symbol.map	Sun Aug 18 20:06:35 2013	(r254498)
+++ head/lib/libc/gen/Symbol.map	Sun Aug 18 20:11:34 2013	(r254499)
@@ -384,6 +384,7 @@ FBSD_1.3 {
 	clock_getcpuclockid;
 	dirfd;
 	dup3;
+	fdclosedir;
 	fdlopen;
 	__FreeBSD_libc_enter_restricted_mode;
 	getcontextx;

Modified: head/lib/libc/gen/closedir.c
==============================================================================
--- head/lib/libc/gen/closedir.c	Sun Aug 18 20:06:35 2013	(r254498)
+++ head/lib/libc/gen/closedir.c	Sun Aug 18 20:11:34 2013	(r254499)
@@ -49,7 +49,7 @@ __FBSDID("$FreeBSD$");
  * close a directory.
  */
 int
-closedir(DIR *dirp)
+fdclosedir(DIR *dirp)
 {
 	int fd;
 
@@ -65,5 +65,12 @@ closedir(DIR *dirp)
 		_pthread_mutex_destroy(&dirp->dd_lock);
 	}
 	free((void *)dirp);
-	return(_close(fd));
+	return (fd);
+}
+
+int
+closedir(DIR *dirp)
+{
+
+	return (_close(fdclosedir(dirp)));
 }

Modified: head/lib/libc/gen/directory.3
==============================================================================
--- head/lib/libc/gen/directory.3	Sun Aug 18 20:06:35 2013	(r254498)
+++ head/lib/libc/gen/directory.3	Sun Aug 18 20:11:34 2013	(r254499)
@@ -28,7 +28,7 @@
 .\"     @(#)directory.3	8.1 (Berkeley) 6/4/93
 .\" $FreeBSD$
 .\"
-.Dd July 5, 2012
+.Dd August 18, 2013
 .Dt DIRECTORY 3
 .Os
 .Sh NAME
@@ -40,6 +40,7 @@
 .Nm seekdir ,
 .Nm rewinddir ,
 .Nm closedir ,
+.Nm fdclosedir ,
 .Nm dirfd
 .Nd directory operations
 .Sh LIBRARY
@@ -64,6 +65,8 @@
 .Ft int
 .Fn closedir "DIR *dirp"
 .Ft int
+.Fn fdclosedir "DIR *dirp"
+.Ft int
 .Fn dirfd "DIR *dirp"
 .Sh DESCRIPTION
 The
@@ -208,6 +211,13 @@ On failure, \-1 is returned and the glob
 is set to indicate the error.
 .Pp
 The
+.Fn fdclosedir
+function is equivalent to the
+.Fn closedir
+function except that this function returns directory file descriptor instead of
+closing it.
+.Pp
+The
 .Fn dirfd
 function
 returns the integer file descriptor associated with the named
@@ -252,6 +262,9 @@ The
 .Fn fdopendir
 function appeared in
 .Fx 8.0 .
+.Fn fdclosedir
+function appeared in
+.Fx 10.0 .
 .Sh BUGS
 The invalidation of
 .Fn telldir



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