socsvn commit: r222837 - in soc2011/gk/ino64-head: include
lib/libc/gen
gk at FreeBSD.org
gk at FreeBSD.org
Sun Jun 5 16:19:37 UTC 2011
Author: gk
Date: Sun Jun 5 16:19:34 2011
New Revision: 222837
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=222837
Log:
Replace dirfd() macro with exported libc symbol
Use _dirfd() macro internally
Added:
soc2011/gk/ino64-head/lib/libc/gen/dirfd.c
- copied, changed from r222836, soc2011/gk/ino64-head/lib/libc/gen/dirent-private.h
Modified:
soc2011/gk/ino64-head/include/dirent.h
soc2011/gk/ino64-head/lib/libc/gen/Makefile.inc
soc2011/gk/ino64-head/lib/libc/gen/Symbol.map
soc2011/gk/ino64-head/lib/libc/gen/dirent-private.h
soc2011/gk/ino64-head/lib/libc/gen/fts-compat.c
soc2011/gk/ino64-head/lib/libc/gen/fts.c
soc2011/gk/ino64-head/lib/libc/gen/getcwd.c
Modified: soc2011/gk/ino64-head/include/dirent.h
==============================================================================
--- soc2011/gk/ino64-head/include/dirent.h Sun Jun 5 16:19:18 2011 (r222836)
+++ soc2011/gk/ino64-head/include/dirent.h Sun Jun 5 16:19:34 2011 (r222837)
@@ -79,6 +79,7 @@
DIR *__opendir2(const char *, int);
int getdents(int, char *, int);
int getdirentries(int, char *, int, long *);
+int dirfd(DIR *);
#endif
DIR *opendir(const char *);
DIR *fdopendir(int);
Modified: soc2011/gk/ino64-head/lib/libc/gen/Makefile.inc
==============================================================================
--- soc2011/gk/ino64-head/lib/libc/gen/Makefile.inc Sun Jun 5 16:19:18 2011 (r222836)
+++ soc2011/gk/ino64-head/lib/libc/gen/Makefile.inc Sun Jun 5 16:19:34 2011 (r222837)
@@ -9,7 +9,7 @@
_thread_init.c \
alarm.c arc4random.c assert.c aux.c basename.c check_utility_compat.c \
clock.c closedir.c confstr.c \
- crypt.c ctermid.c daemon.c devname.c dirname.c disklabel.c \
+ crypt.c ctermid.c daemon.c devname.c dirfd.c dirname.c disklabel.c \
dlfcn.c drand48.c elf_utils.c erand48.c err.c errlst.c errno.c \
exec.c fdevname.c feature_present.c fmtcheck.c fmtmsg.c fnmatch.c \
fpclassify.c frexp.c fstab.c ftok.c fts.c fts-compat.c ftw.c \
Modified: soc2011/gk/ino64-head/lib/libc/gen/Symbol.map
==============================================================================
--- soc2011/gk/ino64-head/lib/libc/gen/Symbol.map Sun Jun 5 16:19:18 2011 (r222836)
+++ soc2011/gk/ino64-head/lib/libc/gen/Symbol.map Sun Jun 5 16:19:34 2011 (r222837)
@@ -359,6 +359,7 @@
FBSD_1.2 {
basename_r;
cfmakesane;
+ dirfd;
endutxent;
getpagesizes;
getutxent;
Modified: soc2011/gk/ino64-head/lib/libc/gen/dirent-private.h
==============================================================================
--- soc2011/gk/ino64-head/lib/libc/gen/dirent-private.h Sun Jun 5 16:19:18 2011 (r222836)
+++ soc2011/gk/ino64-head/lib/libc/gen/dirent-private.h Sun Jun 5 16:19:34 2011 (r222837)
@@ -49,6 +49,6 @@
struct _telldir *dd_td; /* telldir position recording */
};
-#define dirfd(dirp) ((dirp)->dd_fd)
+#define _dirfd(dirp) ((dirp)->dd_fd)
#endif /* !_DIRENT_PRIVATE_H_ */
Copied and modified: soc2011/gk/ino64-head/lib/libc/gen/dirfd.c (from r222836, soc2011/gk/ino64-head/lib/libc/gen/dirent-private.h)
==============================================================================
--- soc2011/gk/ino64-head/lib/libc/gen/dirent-private.h Sun Jun 5 16:19:18 2011 (r222836, copy source)
+++ soc2011/gk/ino64-head/lib/libc/gen/dirfd.c Sun Jun 5 16:19:34 2011 (r222837)
@@ -29,26 +29,22 @@
* $FreeBSD$
*/
-#ifndef _DIRENT_PRIVATE_H_
-#define _DIRENT_PRIVATE_H_
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
-struct _telldir; /* see telldir.h */
-struct pthread_mutex;
+#include "namespace.h"
+#include <sys/param.h>
-/* structure describing an open directory. */
-struct _dirdesc {
- int dd_fd; /* file descriptor associated with directory */
- long dd_loc; /* offset in current buffer */
- long dd_size; /* amount of data returned by getdirentries */
- char *dd_buf; /* data buffer */
- int dd_len; /* size of data buffer */
- long dd_seek; /* magic cookie returned by getdirentries */
- long dd_rewind; /* magic cookie for rewinding */
- int dd_flags; /* flags for readdir */
- struct pthread_mutex *dd_lock; /* lock */
- struct _telldir *dd_td; /* telldir position recording */
-};
+#include <dirent.h>
+#include "un-namespace.h"
-#define dirfd(dirp) ((dirp)->dd_fd)
+#include "dirent-private.h"
-#endif /* !_DIRENT_PRIVATE_H_ */
+int
+dirfd(DIR *dirp)
+{
+ if (dirp == NULL)
+ return (-1);
+
+ return (_dirfd(dirp));
+}
Modified: soc2011/gk/ino64-head/lib/libc/gen/fts-compat.c
==============================================================================
--- soc2011/gk/ino64-head/lib/libc/gen/fts-compat.c Sun Jun 5 16:19:18 2011 (r222836)
+++ soc2011/gk/ino64-head/lib/libc/gen/fts-compat.c Sun Jun 5 16:19:34 2011 (r222837)
@@ -713,7 +713,7 @@
*/
cderrno = 0;
if (nlinks || type == BREAD) {
- if (fts_safe_changedir(sp, cur, dirfd(dirp), NULL)) {
+ if (fts_safe_changedir(sp, cur, _dirfd(dirp), NULL)) {
if (nlinks && type == BREAD)
cur->fts_errno = errno;
cur->fts_flags |= FTS_DONTCHDIR;
Modified: soc2011/gk/ino64-head/lib/libc/gen/fts.c
==============================================================================
--- soc2011/gk/ino64-head/lib/libc/gen/fts.c Sun Jun 5 16:19:18 2011 (r222836)
+++ soc2011/gk/ino64-head/lib/libc/gen/fts.c Sun Jun 5 16:19:34 2011 (r222837)
@@ -710,7 +710,7 @@
*/
cderrno = 0;
if (nlinks || type == BREAD) {
- if (fts_safe_changedir(sp, cur, dirfd(dirp), NULL)) {
+ if (fts_safe_changedir(sp, cur, _dirfd(dirp), NULL)) {
if (nlinks && type == BREAD)
cur->fts_errno = errno;
cur->fts_flags |= FTS_DONTCHDIR;
Modified: soc2011/gk/ino64-head/lib/libc/gen/getcwd.c
==============================================================================
--- soc2011/gk/ino64-head/lib/libc/gen/getcwd.c Sun Jun 5 16:19:18 2011 (r222836)
+++ soc2011/gk/ino64-head/lib/libc/gen/getcwd.c Sun Jun 5 16:19:34 2011 (r222837)
@@ -119,7 +119,7 @@
for (first = 1;; first = 0) {
/* Stat the current level. */
- if (dir != NULL ? _fstat(dirfd(dir), &s) : lstat(".", &s))
+ if (dir != NULL ? _fstat(_dirfd(dir), &s) : lstat(".", &s))
goto err;
/* Save current node values. */
@@ -141,13 +141,13 @@
}
/* Open and stat parent directory. */
- fd = _openat(dir != NULL ? dirfd(dir) : AT_FDCWD,
+ fd = _openat(dir != NULL ? _dirfd(dir) : AT_FDCWD,
"..", O_RDONLY);
if (fd == -1)
goto err;
if (dir)
(void) closedir(dir);
- if (!(dir = fdopendir(fd)) || _fstat(dirfd(dir), &s)) {
+ if (!(dir = fdopendir(fd)) || _fstat(_dirfd(dir), &s)) {
_close(fd);
goto err;
}
@@ -173,7 +173,7 @@
continue;
/* Save the first error for later. */
- if (fstatat(dirfd(dir), dp->d_name, &s,
+ if (fstatat(_dirfd(dir), dp->d_name, &s,
AT_SYMLINK_NOFOLLOW)) {
if (!save_errno)
save_errno = errno;
More information about the svn-soc-all
mailing list