diff options
author | Zack Weinberg <zackw@panix.com> | 2017-06-08 15:39:03 -0400 |
---|---|---|
committer | Zack Weinberg <zackw@panix.com> | 2017-06-08 15:39:03 -0400 |
commit | 5046dbb4a7eba5eccfd258f92f4735c9ffc8d069 (patch) | |
tree | 4470480d904b65cf14ca524f96f79eca818c3eaf /dirent | |
parent | 199fc19d3aaaf57944ef036e15904febe877fc93 (diff) | |
download | glibc-zack/build-layout-experiment.tar glibc-zack/build-layout-experiment.tar.gz glibc-zack/build-layout-experiment.tar.bz2 glibc-zack/build-layout-experiment.zip |
Prepare for radical source tree reorganization.zack/build-layout-experiment
All top-level files and directories are moved into a temporary storage
directory, REORG.TODO, except for files that will certainly still
exist in their current form at top level when we're done (COPYING,
COPYING.LIB, LICENSES, NEWS, README), all old ChangeLog files (which
are moved to the new directory OldChangeLogs, instead), and the
generated file INSTALL (which is just deleted; in the new order, there
will be no generated files checked into version control).
Diffstat (limited to 'dirent')
35 files changed, 0 insertions, 2140 deletions
diff --git a/dirent/Makefile b/dirent/Makefile deleted file mode 100644 index 1648bf42d2..0000000000 --- a/dirent/Makefile +++ /dev/null @@ -1,43 +0,0 @@ -# Copyright (C) 1991-2017 Free Software Foundation, Inc. -# This file is part of the GNU C Library. - -# The GNU C Library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. - -# The GNU C Library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. - -# You should have received a copy of the GNU Lesser General Public -# License along with the GNU C Library; if not, see -# <http://www.gnu.org/licenses/>. - -# -# Sub-makefile for dirent portion of the library. -# -subdir := dirent - -include ../Makeconfig - -headers := dirent.h bits/dirent.h -routines := opendir closedir readdir readdir_r rewinddir \ - seekdir telldir scandir alphasort versionsort \ - getdents getdents64 dirfd readdir64 readdir64_r scandir64 \ - alphasort64 versionsort64 fdopendir \ - scandirat scandirat64 \ - scandir-cancel scandir-tail scandir64-tail - -tests := list tst-seekdir opendir-tst1 bug-readdir1 tst-fdopendir \ - tst-fdopendir2 tst-scandir tst-scandir64 - -CFLAGS-scandir.c = $(uses-callbacks) -CFLAGS-scandir64.c = $(uses-callbacks) -CFLAGS-scandir-tail.c = $(uses-callbacks) -CFLAGS-scandir64-tail.c = $(uses-callbacks) - -include ../Rules - -opendir-tst1-ARGS = --test-dir=${common-objpfx}dirent diff --git a/dirent/Versions b/dirent/Versions deleted file mode 100644 index d976d373f6..0000000000 --- a/dirent/Versions +++ /dev/null @@ -1,50 +0,0 @@ -libc { - GLIBC_2.0 { - # a* - alphasort; - - # c* - closedir; - - # d* - dirfd; - - # g* - getdirentries; - - # o* - opendir; - - # r* - readdir; readdir_r; rewinddir; - - # s* - scandir; seekdir; - - # t* - telldir; - } - GLIBC_2.1 { - # a* - alphasort64; - - # r* - readdir64; readdir64_r; - - # s* - scandir64; - - # v* - versionsort; versionsort64; - } - GLIBC_2.2 { - # g* - getdirentries64; - } - GLIBC_2.4 { - fdopendir; - } - GLIBC_2.15 { - scandirat; scandirat64; - } -} diff --git a/dirent/alphasort.c b/dirent/alphasort.c deleted file mode 100644 index c5bf96a42c..0000000000 --- a/dirent/alphasort.c +++ /dev/null @@ -1,37 +0,0 @@ -/* Copyright (C) 1992-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -/* We need to avoid the header declaration of alphasort64, because - the types don't match alphasort and then the compiler will - complain about the mismatch when we do the alias below. */ -#define alphasort64 __renamed_alphasort64 - -#include <dirent.h> - -#undef alphasort64 - -#include <string.h> - -int -alphasort (const struct dirent **a, const struct dirent **b) -{ - return strcoll ((*a)->d_name, (*b)->d_name); -} - -#ifdef _DIRENT_MATCHES_DIRENT64 -weak_alias (alphasort, alphasort64) -#endif diff --git a/dirent/alphasort64.c b/dirent/alphasort64.c deleted file mode 100644 index a979849237..0000000000 --- a/dirent/alphasort64.c +++ /dev/null @@ -1,30 +0,0 @@ -/* Copyright (C) 1992-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <dirent.h> -#include <string.h> - -/* alphasort.c defines alphasort64 as an alias if _DIRENT_MATCHES_DIRENT64. */ -#ifndef _DIRENT_MATCHES_DIRENT64 - -int -alphasort64 (const struct dirent64 **a, const struct dirent64 **b) -{ - return strcoll ((*a)->d_name, (*b)->d_name); -} - -#endif diff --git a/dirent/bug-readdir1.c b/dirent/bug-readdir1.c deleted file mode 100644 index 4c3521dbb5..0000000000 --- a/dirent/bug-readdir1.c +++ /dev/null @@ -1,38 +0,0 @@ -#include <dirent.h> -#include <errno.h> -#include <errno.h> -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> -#include <sys/types.h> - - -int -main (void) -{ - DIR *dirp; - struct dirent* ent; - - /* open a dir stream */ - dirp = opendir ("/tmp"); - if (dirp == NULL) - { - if (errno == ENOENT) - exit (0); - - perror ("opendir"); - exit (1); - } - - /* close the directory file descriptor, making it invalid */ - if (close (dirfd (dirp)) != 0) - { - puts ("could not close directory file descriptor"); - /* This is not an error. It is not guaranteed this is possible. */ - return 0; - } - - ent = readdir (dirp); - - return ent != NULL || errno != EBADF; -} diff --git a/dirent/closedir.c b/dirent/closedir.c deleted file mode 100644 index 00d9333772..0000000000 --- a/dirent/closedir.c +++ /dev/null @@ -1,33 +0,0 @@ -/* Copyright (C) 1991-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <errno.h> -#include <stddef.h> -#include <dirent.h> - - -/* Close the directory stream DIRP. - Return 0 if successful, -1 if not. */ -int -__closedir (DIR *dirp) -{ - __set_errno (ENOSYS); - return -1; -} -weak_alias (__closedir, closedir) - -stub_warning (closedir) diff --git a/dirent/dirent.h b/dirent/dirent.h deleted file mode 100644 index a9f80bca82..0000000000 --- a/dirent/dirent.h +++ /dev/null @@ -1,404 +0,0 @@ -/* Copyright (C) 1991-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -/* - * POSIX Standard: 5.1.2 Directory Operations <dirent.h> - */ - -#ifndef _DIRENT_H -#define _DIRENT_H 1 - -#include <features.h> - -__BEGIN_DECLS - -#include <bits/types.h> - -#ifdef __USE_XOPEN -# ifndef __ino_t_defined -# ifndef __USE_FILE_OFFSET64 -typedef __ino_t ino_t; -# else -typedef __ino64_t ino_t; -# endif -# define __ino_t_defined -# endif -# if defined __USE_LARGEFILE64 && !defined __ino64_t_defined -typedef __ino64_t ino64_t; -# define __ino64_t_defined -# endif -#endif - -/* This file defines `struct dirent'. - - It defines the macro `_DIRENT_HAVE_D_NAMLEN' iff there is a `d_namlen' - member that gives the length of `d_name'. - - It defines the macro `_DIRENT_HAVE_D_RECLEN' iff there is a `d_reclen' - member that gives the size of the entire directory entry. - - It defines the macro `_DIRENT_HAVE_D_OFF' iff there is a `d_off' - member that gives the file offset of the next directory entry. - - It defines the macro `_DIRENT_HAVE_D_TYPE' iff there is a `d_type' - member that gives the type of the file. - */ - -#include <bits/dirent.h> - -#if defined __USE_MISC && !defined d_fileno -# define d_ino d_fileno /* Backward compatibility. */ -#endif - -/* These macros extract size information from a `struct dirent *'. - They may evaluate their argument multiple times, so it must not - have side effects. Each of these may involve a relatively costly - call to `strlen' on some systems, so these values should be cached. - - _D_EXACT_NAMLEN (DP) returns the length of DP->d_name, not including - its terminating null character. - - _D_ALLOC_NAMLEN (DP) returns a size at least (_D_EXACT_NAMLEN (DP) + 1); - that is, the allocation size needed to hold the DP->d_name string. - Use this macro when you don't need the exact length, just an upper bound. - This macro is less likely to require calling `strlen' than _D_EXACT_NAMLEN. - */ - -#ifdef _DIRENT_HAVE_D_NAMLEN -# define _D_EXACT_NAMLEN(d) ((d)->d_namlen) -# define _D_ALLOC_NAMLEN(d) (_D_EXACT_NAMLEN (d) + 1) -#else -# define _D_EXACT_NAMLEN(d) (strlen ((d)->d_name)) -# ifdef _DIRENT_HAVE_D_RECLEN -# define _D_ALLOC_NAMLEN(d) (((char *) (d) + (d)->d_reclen) - &(d)->d_name[0]) -# else -# define _D_ALLOC_NAMLEN(d) (sizeof (d)->d_name > 1 ? sizeof (d)->d_name : \ - _D_EXACT_NAMLEN (d) + 1) -# endif -#endif - - -#ifdef __USE_MISC -/* File types for `d_type'. */ -enum - { - DT_UNKNOWN = 0, -# define DT_UNKNOWN DT_UNKNOWN - DT_FIFO = 1, -# define DT_FIFO DT_FIFO - DT_CHR = 2, -# define DT_CHR DT_CHR - DT_DIR = 4, -# define DT_DIR DT_DIR - DT_BLK = 6, -# define DT_BLK DT_BLK - DT_REG = 8, -# define DT_REG DT_REG - DT_LNK = 10, -# define DT_LNK DT_LNK - DT_SOCK = 12, -# define DT_SOCK DT_SOCK - DT_WHT = 14 -# define DT_WHT DT_WHT - }; - -/* Convert between stat structure types and directory types. */ -# define IFTODT(mode) (((mode) & 0170000) >> 12) -# define DTTOIF(dirtype) ((dirtype) << 12) -#endif - - -/* This is the data type of directory stream objects. - The actual structure is opaque to users. */ -typedef struct __dirstream DIR; - -/* Open a directory stream on NAME. - Return a DIR stream on the directory, or NULL if it could not be opened. - - This function is a possible cancellation point and therefore not - marked with __THROW. */ -extern DIR *opendir (const char *__name) __nonnull ((1)); - -#ifdef __USE_XOPEN2K8 -/* Same as opendir, but open the stream on the file descriptor FD. - - This function is a possible cancellation point and therefore not - marked with __THROW. */ -extern DIR *fdopendir (int __fd); -#endif - -/* Close the directory stream DIRP. - Return 0 if successful, -1 if not. - - This function is a possible cancellation point and therefore not - marked with __THROW. */ -extern int closedir (DIR *__dirp) __nonnull ((1)); - -/* Read a directory entry from DIRP. Return a pointer to a `struct - dirent' describing the entry, or NULL for EOF or error. The - storage returned may be overwritten by a later readdir call on the - same DIR stream. - - If the Large File Support API is selected we have to use the - appropriate interface. - - This function is a possible cancellation point and therefore not - marked with __THROW. */ -#ifndef __USE_FILE_OFFSET64 -extern struct dirent *readdir (DIR *__dirp) __nonnull ((1)); -#else -# ifdef __REDIRECT -extern struct dirent *__REDIRECT (readdir, (DIR *__dirp), readdir64) - __nonnull ((1)); -# else -# define readdir readdir64 -# endif -#endif - -#ifdef __USE_LARGEFILE64 -extern struct dirent64 *readdir64 (DIR *__dirp) __nonnull ((1)); -#endif - -#ifdef __USE_POSIX -/* Reentrant version of `readdir'. Return in RESULT a pointer to the - next entry. - - This function is a possible cancellation point and therefore not - marked with __THROW. */ -# ifndef __USE_FILE_OFFSET64 -extern int readdir_r (DIR *__restrict __dirp, - struct dirent *__restrict __entry, - struct dirent **__restrict __result) - __nonnull ((1, 2, 3)) __attribute_deprecated__; -# else -# ifdef __REDIRECT -extern int __REDIRECT (readdir_r, - (DIR *__restrict __dirp, - struct dirent *__restrict __entry, - struct dirent **__restrict __result), - readdir64_r) - __nonnull ((1, 2, 3)) __attribute_deprecated__; -# else -# define readdir_r readdir64_r -# endif -# endif - -# ifdef __USE_LARGEFILE64 -extern int readdir64_r (DIR *__restrict __dirp, - struct dirent64 *__restrict __entry, - struct dirent64 **__restrict __result) - __nonnull ((1, 2, 3)) __attribute_deprecated__; -# endif -#endif /* POSIX or misc */ - -/* Rewind DIRP to the beginning of the directory. */ -extern void rewinddir (DIR *__dirp) __THROW __nonnull ((1)); - -#if defined __USE_MISC || defined __USE_XOPEN -# include <bits/types.h> - -/* Seek to position POS on DIRP. */ -extern void seekdir (DIR *__dirp, long int __pos) __THROW __nonnull ((1)); - -/* Return the current position of DIRP. */ -extern long int telldir (DIR *__dirp) __THROW __nonnull ((1)); -#endif - -#ifdef __USE_XOPEN2K8 - -/* Return the file descriptor used by DIRP. */ -extern int dirfd (DIR *__dirp) __THROW __nonnull ((1)); - -# if defined __OPTIMIZE__ && defined _DIR_dirfd -# define dirfd(dirp) _DIR_dirfd (dirp) -# endif - -# ifdef __USE_MISC -# ifndef MAXNAMLEN -/* Get the definitions of the POSIX.1 limits. */ -# include <bits/posix1_lim.h> - -/* `MAXNAMLEN' is the BSD name for what POSIX calls `NAME_MAX'. */ -# ifdef NAME_MAX -# define MAXNAMLEN NAME_MAX -# else -# define MAXNAMLEN 255 -# endif -# endif -# endif - -# define __need_size_t -# include <stddef.h> - -/* Scan the directory DIR, calling SELECTOR on each directory entry. - Entries for which SELECT returns nonzero are individually malloc'd, - sorted using qsort with CMP, and collected in a malloc'd array in - *NAMELIST. Returns the number of entries selected, or -1 on error. - - This function is a cancellation point and therefore not marked with - __THROW. */ -# ifndef __USE_FILE_OFFSET64 -extern int scandir (const char *__restrict __dir, - struct dirent ***__restrict __namelist, - int (*__selector) (const struct dirent *), - int (*__cmp) (const struct dirent **, - const struct dirent **)) - __nonnull ((1, 2)); -# else -# ifdef __REDIRECT -extern int __REDIRECT (scandir, - (const char *__restrict __dir, - struct dirent ***__restrict __namelist, - int (*__selector) (const struct dirent *), - int (*__cmp) (const struct dirent **, - const struct dirent **)), - scandir64) __nonnull ((1, 2)); -# else -# define scandir scandir64 -# endif -# endif - -# if defined __USE_GNU && defined __USE_LARGEFILE64 -/* This function is like `scandir' but it uses the 64bit dirent structure. - Please note that the CMP function must now work with struct dirent64 **. */ -extern int scandir64 (const char *__restrict __dir, - struct dirent64 ***__restrict __namelist, - int (*__selector) (const struct dirent64 *), - int (*__cmp) (const struct dirent64 **, - const struct dirent64 **)) - __nonnull ((1, 2)); -# endif - -# ifdef __USE_GNU -/* Similar to `scandir' but a relative DIR name is interpreted relative - to the directory for which DFD is a descriptor. - - This function is a cancellation point and therefore not marked with - __THROW. */ -# ifndef __USE_FILE_OFFSET64 -extern int scandirat (int __dfd, const char *__restrict __dir, - struct dirent ***__restrict __namelist, - int (*__selector) (const struct dirent *), - int (*__cmp) (const struct dirent **, - const struct dirent **)) - __nonnull ((2, 3)); -# else -# ifdef __REDIRECT -extern int __REDIRECT (scandirat, - (int __dfd, const char *__restrict __dir, - struct dirent ***__restrict __namelist, - int (*__selector) (const struct dirent *), - int (*__cmp) (const struct dirent **, - const struct dirent **)), - scandirat64) __nonnull ((2, 3)); -# else -# define scandirat scandirat64 -# endif -# endif - -/* This function is like `scandir' but it uses the 64bit dirent structure. - Please note that the CMP function must now work with struct dirent64 **. */ -extern int scandirat64 (int __dfd, const char *__restrict __dir, - struct dirent64 ***__restrict __namelist, - int (*__selector) (const struct dirent64 *), - int (*__cmp) (const struct dirent64 **, - const struct dirent64 **)) - __nonnull ((2, 3)); -# endif - -/* Function to compare two `struct dirent's alphabetically. */ -# ifndef __USE_FILE_OFFSET64 -extern int alphasort (const struct dirent **__e1, - const struct dirent **__e2) - __THROW __attribute_pure__ __nonnull ((1, 2)); -# else -# ifdef __REDIRECT -extern int __REDIRECT_NTH (alphasort, - (const struct dirent **__e1, - const struct dirent **__e2), - alphasort64) __attribute_pure__ __nonnull ((1, 2)); -# else -# define alphasort alphasort64 -# endif -# endif - -# if defined __USE_GNU && defined __USE_LARGEFILE64 -extern int alphasort64 (const struct dirent64 **__e1, - const struct dirent64 **__e2) - __THROW __attribute_pure__ __nonnull ((1, 2)); -# endif -#endif /* Use XPG7. */ - - -#ifdef __USE_MISC -/* Read directory entries from FD into BUF, reading at most NBYTES. - Reading starts at offset *BASEP, and *BASEP is updated with the new - position after reading. Returns the number of bytes read; zero when at - end of directory; or -1 for errors. */ -# ifndef __USE_FILE_OFFSET64 -extern __ssize_t getdirentries (int __fd, char *__restrict __buf, - size_t __nbytes, - __off_t *__restrict __basep) - __THROW __nonnull ((2, 4)); -# else -# ifdef __REDIRECT -extern __ssize_t __REDIRECT_NTH (getdirentries, - (int __fd, char *__restrict __buf, - size_t __nbytes, - __off64_t *__restrict __basep), - getdirentries64) __nonnull ((2, 4)); -# else -# define getdirentries getdirentries64 -# endif -# endif - -# ifdef __USE_LARGEFILE64 -extern __ssize_t getdirentries64 (int __fd, char *__restrict __buf, - size_t __nbytes, - __off64_t *__restrict __basep) - __THROW __nonnull ((2, 4)); -# endif -#endif /* Use misc. */ - -#ifdef __USE_GNU -/* Function to compare two `struct dirent's by name & version. */ -# ifndef __USE_FILE_OFFSET64 -extern int versionsort (const struct dirent **__e1, - const struct dirent **__e2) - __THROW __attribute_pure__ __nonnull ((1, 2)); -# else -# ifdef __REDIRECT -extern int __REDIRECT_NTH (versionsort, - (const struct dirent **__e1, - const struct dirent **__e2), - versionsort64) - __attribute_pure__ __nonnull ((1, 2)); -# else -# define versionsort versionsort64 -# endif -# endif - -# ifdef __USE_LARGEFILE64 -extern int versionsort64 (const struct dirent64 **__e1, - const struct dirent64 **__e2) - __THROW __attribute_pure__ __nonnull ((1, 2)); -# endif -#endif /* Use GNU. */ - -__END_DECLS - -#endif /* dirent.h */ diff --git a/dirent/dirfd.c b/dirent/dirfd.c deleted file mode 100644 index 7af77adf01..0000000000 --- a/dirent/dirfd.c +++ /dev/null @@ -1,30 +0,0 @@ -/* Return the file descriptor used by a DIR stream. Stub version. - Copyright (C) 1995-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <dirent.h> -#include <dirstream.h> -#include <errno.h> - -int -dirfd (DIR *dirp) -{ - __set_errno (ENOSYS); - return -1; -} - -stub_warning (dirfd) diff --git a/dirent/fdopendir.c b/dirent/fdopendir.c deleted file mode 100644 index a3d18657fd..0000000000 --- a/dirent/fdopendir.c +++ /dev/null @@ -1,33 +0,0 @@ -/* Open a directory stream from a file descriptor. Stub version. - Copyright (C) 2005-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <errno.h> -#include <stddef.h> -#include <dirent.h> - - -/* Open a directory stream on FD. */ -DIR * -__fdopendir (int fd) -{ - __set_errno (ENOSYS); - return NULL; -} -weak_alias (__fdopendir, fdopendir) - -stub_warning (fdopendir) diff --git a/dirent/getdents.c b/dirent/getdents.c deleted file mode 100644 index 30e95f776d..0000000000 --- a/dirent/getdents.c +++ /dev/null @@ -1,31 +0,0 @@ -/* Copyright (C) 1991-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <stddef.h> -#include <errno.h> -#include <sys/types.h> -#include <dirent.h> - -ssize_t -__getdirentries (int fd, char *buf, size_t nbytes, off_t *basep) -{ - __set_errno (ENOSYS); - return -1; -} -weak_alias (__getdirentries, getdirentries) - -stub_warning (getdirentries) diff --git a/dirent/getdents64.c b/dirent/getdents64.c deleted file mode 100644 index 9528e5313f..0000000000 --- a/dirent/getdents64.c +++ /dev/null @@ -1,30 +0,0 @@ -/* Copyright (C) 1991-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <stddef.h> -#include <errno.h> -#include <sys/types.h> -#include <dirent.h> - -ssize_t -getdirentries64 (int fd, char *buf, size_t nbytes, off64_t *basep) -{ - __set_errno (ENOSYS); - return -1; -} - -stub_warning (getdirentries64) diff --git a/dirent/list.c b/dirent/list.c deleted file mode 100644 index e99b253808..0000000000 --- a/dirent/list.c +++ /dev/null @@ -1,75 +0,0 @@ -/* Copyright (C) 1991-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <errno.h> -#include <stddef.h> -#include <stdio.h> -#include <stdlib.h> -#include <dirent.h> - - -static int -test (const char *name) -{ - DIR *dirp; - struct dirent *entp; - int retval = 0; - - puts (name); - - dirp = opendir (name); - if (dirp == NULL) - { - perror ("opendir"); - return 1; - } - - errno = 0; - while ((entp = readdir (dirp)) != NULL) - printf ("%s\tfile number %lu\n", - entp->d_name, (unsigned long int) entp->d_fileno); - - if (errno) - { - perror ("readdir"); - retval = 1; - } - - if (closedir (dirp) < 0) - { - perror ("closedir"); - retval = 1; - } - - return retval; -} - -int -main (int argc, char **argv) -{ - int retval = 0; - --argc; - ++argv; - - if (argc == 0) - retval = test ("."); - else - while (argc-- > 0) - retval |= test (*argv++); - - return retval; -} diff --git a/dirent/opendir-tst1.c b/dirent/opendir-tst1.c deleted file mode 100644 index 6171d617aa..0000000000 --- a/dirent/opendir-tst1.c +++ /dev/null @@ -1,95 +0,0 @@ -/* Copyright (C) 1998-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <dirent.h> -#include <errno.h> -#include <fcntl.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> -#include <sys/stat.h> - -/* Name of the FIFO. */ -char tmpname[] = "fifoXXXXXX"; - - -/* Do the real work. */ -static int -real_test (void) -{ - DIR *dirp; - - /* This should not block for an FIFO. */ - dirp = opendir (tmpname); - - /* Successful. */ - if (dirp != NULL) - { - /* Oh, oh, how can this work? */ - fputs ("`opendir' succeeded on a FIFO???\n", stdout); - closedir (dirp); - return 1; - } - - if (errno != ENOTDIR) - { - fprintf (stdout, "`opendir' return error `%s' instead of `%s'\n", - strerror (errno), strerror (ENOTDIR)); - return 1; - } - - return 0; -} - - -static int -do_test (void) -{ - int retval; - - if (mktemp (tmpname) == NULL) - { - perror ("mktemp"); - return 1; - } - - /* Try to generate a FIFO. */ - if (mknod (tmpname, 0600 | S_IFIFO, 0) < 0) - { - perror ("mknod"); - /* We cannot make this an error. */ - return 0; - } - - retval = real_test (); - - remove (tmpname); - - return retval; -} - - -static void -do_cleanup (void) -{ - remove (tmpname); -} -#define CLEANUP_HANDLER do_cleanup - -#include <support/test-driver.c> diff --git a/dirent/opendir.c b/dirent/opendir.c deleted file mode 100644 index bbfbc64251..0000000000 --- a/dirent/opendir.c +++ /dev/null @@ -1,40 +0,0 @@ -/* Copyright (C) 1991-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <errno.h> -#include <stddef.h> -#include <dirent.h> -#include <fcntl.h> - - -DIR * -__opendirat (int dfd, const char *name) -{ - __set_errno (ENOSYS); - return NULL; -} - - -/* Open a directory stream on NAME. */ -DIR * -__opendir (const char *name) -{ - return __opendirat (AT_FDCWD, name); -} -weak_alias (__opendir, opendir) - -stub_warning (opendir) diff --git a/dirent/readdir.c b/dirent/readdir.c deleted file mode 100644 index 07c8e67fb7..0000000000 --- a/dirent/readdir.c +++ /dev/null @@ -1,31 +0,0 @@ -/* Copyright (C) 1991-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <errno.h> -#include <stddef.h> -#include <dirent.h> - -/* Read a directory entry from DIRP. */ -struct dirent * -__readdir (DIR *dirp) -{ - __set_errno (ENOSYS); - return NULL; -} -weak_alias (__readdir, readdir) - -stub_warning (readdir) diff --git a/dirent/readdir64.c b/dirent/readdir64.c deleted file mode 100644 index 14ec8f37a9..0000000000 --- a/dirent/readdir64.c +++ /dev/null @@ -1,30 +0,0 @@ -/* Copyright (C) 1991-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <errno.h> -#include <stddef.h> -#include <dirent.h> - -/* Read a directory entry from DIRP. */ -struct dirent64 * -__readdir64 (DIR *dirp) -{ - __set_errno (ENOSYS); - return NULL; -} -weak_alias (__readdir64, readdir64) -stub_warning (readdir64) diff --git a/dirent/readdir64_r.c b/dirent/readdir64_r.c deleted file mode 100644 index b032bdb061..0000000000 --- a/dirent/readdir64_r.c +++ /dev/null @@ -1,31 +0,0 @@ -/* Copyright (C) 1991-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <errno.h> -#include <stddef.h> -#include <dirent.h> - -/* Read a directory entry from DIRP, store result in ENTRY and return - pointer to result in *RESULT. */ -int -readdir64_r (DIR *dirp, struct dirent64 *entry, struct dirent64 **result) -{ - __set_errno (ENOSYS); - *result = NULL; - return -1; -} -stub_warning (readdir64_r) diff --git a/dirent/readdir_r.c b/dirent/readdir_r.c deleted file mode 100644 index c7c02b06ab..0000000000 --- a/dirent/readdir_r.c +++ /dev/null @@ -1,33 +0,0 @@ -/* Copyright (C) 1991-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <errno.h> -#include <stddef.h> -#include <dirent.h> - -/* Read a directory entry from DIRP, store result in ENTRY and return - pointer to result in *RESULT. */ -int -__readdir_r (DIR *dirp, struct dirent *entry, struct dirent **result) -{ - __set_errno (ENOSYS); - *result = NULL; - return ENOSYS; -} -weak_alias (__readdir_r, readdir_r) - -stub_warning (readdir_r) diff --git a/dirent/rewinddir.c b/dirent/rewinddir.c deleted file mode 100644 index 73c59e589d..0000000000 --- a/dirent/rewinddir.c +++ /dev/null @@ -1,34 +0,0 @@ -/* Copyright (C) 1991-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <errno.h> -#include <stddef.h> -#include <dirent.h> - - -/* Rewind DIRP to the beginning of the directory. */ -void -__rewinddir (DIR *dirp) -{ - __set_errno (ENOSYS); - /* No way to indicate failure. */ -} -libc_hidden_def (__rewinddir) -weak_alias (__rewinddir, rewinddir) - - -stub_warning (rewinddir) diff --git a/dirent/scandir-cancel.c b/dirent/scandir-cancel.c deleted file mode 100644 index e34a350539..0000000000 --- a/dirent/scandir-cancel.c +++ /dev/null @@ -1,31 +0,0 @@ -/* Cancellation handler used in scandir* implementations. - Copyright (C) 1992-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <dirent.h> - -void -__scandir_cancel_handler (void *arg) -{ - struct scandir_cancel_struct *cp = arg; - void **v = cp->v; - - for (size_t i = 0; i < cp->cnt; ++i) - free (v[i]); - free (v); - (void) __closedir (cp->dp); -} diff --git a/dirent/scandir-tail.c b/dirent/scandir-tail.c deleted file mode 100644 index 7810fb4d42..0000000000 --- a/dirent/scandir-tail.c +++ /dev/null @@ -1,110 +0,0 @@ -/* Logic guts of scandir*. - Copyright (C) 1992-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <dirent.h> -#include <errno.h> -#include <stdlib.h> -#include <string.h> -#include <libc-lock.h> - -#ifndef SCANDIR_TAIL -# define SCANDIR_TAIL __scandir_tail -# define READDIR __readdir -# define DIRENT_TYPE struct dirent -#endif - -internal_function -int -SCANDIR_TAIL (DIR *dp, - DIRENT_TYPE ***namelist, - int (*select) (const DIRENT_TYPE *), - int (*cmp) (const DIRENT_TYPE **, const DIRENT_TYPE **)) -{ - if (dp == NULL) - return -1; - - int save = errno; - __set_errno (0); - - int result; - struct scandir_cancel_struct c = { .dp = dp }; - __libc_cleanup_push (&__scandir_cancel_handler, &c); - - DIRENT_TYPE **v = NULL; - size_t vsize = 0; - DIRENT_TYPE *d; - while ((d = READDIR (dp)) != NULL) - { - if (select != NULL) - { - int selected = (*select) (d); - - /* The SELECT function might have changed errno. It was - zero before and it need to be again to make the later - tests work. */ - __set_errno (0); - - if (!selected) - continue; - } - else - __set_errno (0); - - if (__glibc_unlikely (c.cnt == vsize)) - { - if (vsize == 0) - vsize = 10; - else - vsize *= 2; - DIRENT_TYPE **new = realloc (v, vsize * sizeof *v); - if (new == NULL) - break; - c.v = v = new; - } - - size_t dsize = &d->d_name[_D_ALLOC_NAMLEN (d)] - (char *) d; - DIRENT_TYPE *vnew = malloc (dsize); - if (vnew == NULL) - break; - v[c.cnt++] = (DIRENT_TYPE *) memcpy (vnew, d, dsize); - } - - if (__glibc_likely (errno == 0)) - { - __closedir (dp); - - /* Sort the list if we have a comparison function to sort with. */ - if (cmp != NULL) - qsort (v, c.cnt, sizeof *v, (__compar_fn_t) cmp); - - *namelist = v; - result = c.cnt; - } - else - { - /* This frees everything and calls closedir. */ - __scandir_cancel_handler (&c); - result = -1; - } - - __libc_cleanup_pop (0); - - if (result >= 0) - __set_errno (save); - return result; -} diff --git a/dirent/scandir.c b/dirent/scandir.c deleted file mode 100644 index ad6342b6d8..0000000000 --- a/dirent/scandir.c +++ /dev/null @@ -1,45 +0,0 @@ -/* Copyright (C) 1992-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -/* We need to avoid the header declaration of scandir64, because - the types don't match scandir and then the compiler will - complain about the mismatch when we do the alias below. */ -#define scandir64 __renamed_scandir64 - -#include <dirent.h> - -#undef scandir64 - -#ifndef SCANDIR -# define SCANDIR scandir -# define SCANDIR_TAIL __scandir_tail -# define DIRENT_TYPE struct dirent -#endif - - -int -SCANDIR (const char *dir, - DIRENT_TYPE ***namelist, - int (*select) (const DIRENT_TYPE *), - int (*cmp) (const DIRENT_TYPE **, const DIRENT_TYPE **)) -{ - return SCANDIR_TAIL (__opendir (dir), namelist, select, cmp); -} - -#ifdef _DIRENT_MATCHES_DIRENT64 -weak_alias (scandir, scandir64) -#endif diff --git a/dirent/scandir64-tail.c b/dirent/scandir64-tail.c deleted file mode 100644 index 4d1746aae0..0000000000 --- a/dirent/scandir64-tail.c +++ /dev/null @@ -1,26 +0,0 @@ -/* Logic guts of scandir*64. - Copyright (C) 2015-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <dirent.h> - -#ifndef _DIRENT_MATCHES_DIRENT64 -# define SCANDIR_TAIL __scandir64_tail -# define READDIR __readdir64 -# define DIRENT_TYPE struct dirent64 -# include <scandir-tail.c> -#endif diff --git a/dirent/scandir64.c b/dirent/scandir64.c deleted file mode 100644 index cfe553b0f4..0000000000 --- a/dirent/scandir64.c +++ /dev/null @@ -1,29 +0,0 @@ -/* Copyright (C) 2000-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <dirent.h> - -/* scandir.c defines scandir64 as an alias if _DIRENT_MATCHES_DIRENT64. */ -#ifndef _DIRENT_MATCHES_DIRENT64 - -# define SCANDIR scandir64 -# define SCANDIR_TAIL __scandir64_tail -# define DIRENT_TYPE struct dirent64 - -# include <dirent/scandir.c> - -#endif diff --git a/dirent/scandirat.c b/dirent/scandirat.c deleted file mode 100644 index b331ea5681..0000000000 --- a/dirent/scandirat.c +++ /dev/null @@ -1,49 +0,0 @@ -/* Copyright (C) 1992-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -/* We need to avoid the header declaration of scandir64, because - the types don't match scandir and then the compiler will - complain about the mismatch when we do the alias below. */ -#define scandirat64 __renamed_scandirat64 - -#include <dirent.h> - -#undef scandirat64 - -#ifndef SCANDIRAT -# define SCANDIRAT __scandirat -# define SCANDIR_TAIL __scandir_tail -# define DIRENT_TYPE struct dirent -# define SCANDIRAT_WEAK_ALIAS -#endif - -int -SCANDIRAT (int dfd, const char *dir, - DIRENT_TYPE ***namelist, - int (*select) (const DIRENT_TYPE *), - int (*cmp) (const DIRENT_TYPE **, const DIRENT_TYPE **)) -{ - return SCANDIR_TAIL (__opendirat (dfd, dir), namelist, select, cmp); -} -libc_hidden_def (SCANDIRAT) -#ifdef SCANDIRAT_WEAK_ALIAS -weak_alias (__scandirat, scandirat) -#endif - -#ifdef _DIRENT_MATCHES_DIRENT64 -weak_alias (scandirat, scandirat64) -#endif diff --git a/dirent/scandirat64.c b/dirent/scandirat64.c deleted file mode 100644 index c5c918a919..0000000000 --- a/dirent/scandirat64.c +++ /dev/null @@ -1,29 +0,0 @@ -/* Copyright (C) 2000-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <dirent.h> - -/* scandirat.c defines scandirat64 as an alias if _DIRENT_MATCHES_DIRENT64. */ -#ifndef _DIRENT_MATCHES_DIRENT64 - -# define SCANDIRAT scandirat64 -# define SCANDIR_TAIL __scandir64_tail -# define DIRENT_TYPE struct dirent64 - -# include <scandirat.c> - -#endif diff --git a/dirent/seekdir.c b/dirent/seekdir.c deleted file mode 100644 index 6dfc9a73cd..0000000000 --- a/dirent/seekdir.c +++ /dev/null @@ -1,37 +0,0 @@ -/* Copyright (C) 1991-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <sys/types.h> -#include <errno.h> -#include <stddef.h> -#include <dirent.h> - -/* Seek to position POS in DIRP. */ -void -seekdir (DIR *dirp, long int pos) -{ - if (dirp == NULL) - { - __set_errno (EINVAL); - return; - } - - __set_errno (ENOSYS); -} - - -stub_warning (seekdir) diff --git a/dirent/telldir.c b/dirent/telldir.c deleted file mode 100644 index 7d2374e46a..0000000000 --- a/dirent/telldir.c +++ /dev/null @@ -1,38 +0,0 @@ -/* Copyright (C) 1991-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <errno.h> -#include <sys/types.h> -#include <stddef.h> -#include <dirent.h> - -/* Return the current position of DIRP. */ -long int -telldir (DIR *dirp) -{ - if (dirp == NULL) - { - __set_errno (EINVAL); - return -1l; - } - - __set_errno (ENOSYS); - return -1l; -} - - -stub_warning (telldir) diff --git a/dirent/tst-fdopendir.c b/dirent/tst-fdopendir.c deleted file mode 100644 index 89bdca9086..0000000000 --- a/dirent/tst-fdopendir.c +++ /dev/null @@ -1,128 +0,0 @@ -#include <stdio.h> -#include <fcntl.h> -#include <stdlib.h> -#include <unistd.h> -#include <dirent.h> -#include <stdbool.h> -#include <string.h> -#include <sys/stat.h> - -#ifndef O_NOATIME -# define O_NOATIME 0 -#endif - -static int -do_test (void) -{ - char fname[] = "/tmp/jXXXXXX"; - int fd = mkstemp (fname); - if (fd == -1) - { - puts ("mkstemp failed"); - return 1; - } - - write (fd, "hello", 5); - close (fd); - - struct stat64 st; - if (stat64 (fname, &st) == -1) - { - puts ("first stat failed"); - return 0; - } - - /* Make sure there is enough time between the creation and the access. */ - sleep (2); - - fd = open (fname, O_RDONLY | O_NOATIME); - if (fd == -1) - { - puts ("first open failed"); - return 1; - } - - char buf[5]; - read(fd, buf, sizeof (buf)); - close(fd); - - struct stat64 st2; - if (stat64 (fname, &st2) == -1) - { - puts ("second stat failed"); - return 0; - } - - bool no_noatime = false; -#ifdef _STATBUF_ST_NSEC - if (st.st_atim.tv_sec != st2.st_atim.tv_sec - || st.st_atim.tv_nsec != st2.st_atim.tv_nsec) -#else - if (st.st_atime != st2.st_atime) -#endif - { - puts ("file atime changed"); - no_noatime = true; - } - - unlink(fname); - - strcpy(fname, "/tmp/dXXXXXX"); - char *d = mkdtemp (fname); - if (d == NULL) - { - puts ("mkdtemp failed"); - return 1; - } - - if (stat64 (d, &st) == -1) - { - puts ("third stat failed"); - return 0; - } - sleep (2); - - fd = open64 (d, O_RDONLY|O_NDELAY|O_DIRECTORY|O_NOATIME); - if (fd == -1) - { - puts ("second open failed"); - return 1; - } - DIR *dir = fdopendir (fd); - if (dir == NULL) - { - puts ("fdopendir failed"); - return 1; - } - - struct dirent *de; - while ((de = readdir (dir)) != NULL) - ; - - closedir (dir); - - if (stat64 (d, &st2) == -1) - { - puts ("fourth stat failed"); - return 0; - } -#ifdef _STATBUF_ST_NSEC - if (!no_noatime - && (st.st_atim.tv_sec != st2.st_atim.tv_sec - || st.st_atim.tv_nsec != st2.st_atim.tv_nsec)) -#else - if (!no_noatime && st.st_atime != st2.st_atime) -#endif - { - puts ("directory atime changed"); - return 1; - } - - rmdir(fname); - - return 0; -} - -#define TIMEOUT 6 -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/dirent/tst-fdopendir2.c b/dirent/tst-fdopendir2.c deleted file mode 100644 index 7709e4b3bc..0000000000 --- a/dirent/tst-fdopendir2.c +++ /dev/null @@ -1,42 +0,0 @@ -#include <errno.h> -#include <dirent.h> -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> - - -static int -do_test (void) -{ - char tmpl[] = "/tmp/tst-fdopendir2-XXXXXX"; - int fd = mkstemp (tmpl); - if (fd == -1) - { - puts ("cannot open temp file"); - return 1; - } - - errno = 0; - DIR *d = fdopendir (fd); - - int e = errno; - - close (fd); - unlink (tmpl); - - if (d != NULL) - { - puts ("fdopendir with normal file descriptor did not fail"); - return 1; - } - if (e != ENOTDIR) - { - printf ("fdopendir set errno to %d, not %d as expected\n", e, ENOTDIR); - return 1; - } - - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/dirent/tst-scandir.c b/dirent/tst-scandir.c deleted file mode 100644 index 4ecfd7b932..0000000000 --- a/dirent/tst-scandir.c +++ /dev/null @@ -1,298 +0,0 @@ -/* Basic test for scandir function. - Copyright (C) 2015-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <stdbool.h> -#include <dirent.h> -#include <errno.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#ifndef D -# define D(x) x -#endif - -static void prepare (void); -static int do_test (void); -#define PREPARE(argc, argv) prepare () -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" - -static const char *scandir_test_dir; - -static void -prepare (void) -{ - size_t test_dir_len = strlen (test_dir); - static const char dir_name[] = "/tst-scandir.XXXXXX"; - - size_t dirbuflen = test_dir_len + sizeof (dir_name); - char *dirbuf = malloc (dirbuflen); - if (dirbuf == NULL) - { - puts ("out of memory"); - exit (1); - } - - snprintf (dirbuf, dirbuflen, "%s%s", test_dir, dir_name); - if (mkdtemp (dirbuf) == NULL) - { - puts ("cannot create temporary directory"); - exit (1); - } - - add_temp_file (dirbuf); - scandir_test_dir = dirbuf; -} - -/* The directory should be empty save the . and .. files. */ -static void -verify_empty (const char *dirname) -{ - DIR *dir = opendir (dirname); - if (dir == NULL) - { - printf ("opendir (%s): %s\n", dirname, strerror (errno)); - exit (1); - } - - struct dirent64 *d; - while ((d = readdir64 (dir)) != NULL) - if (strcmp (d->d_name, ".") != 0 && strcmp (d->d_name, "..") != 0) - { - printf ("temp directory contains file \"%s\"\n", d->d_name); - exit (1); - } - - closedir (dir); -} - -static void -make_file (const char *dirname, const char *filename) -{ - char *name = NULL; - if (asprintf (&name, "%s/%s", dirname, filename) < 0) - { - puts ("out of memory"); - exit (1); - } - - int fd = open (name, O_WRONLY | O_CREAT | O_EXCL, 0600); - if (fd < 0) - { - printf ("cannot create \"%s\": %s\n", name, strerror (errno)); - exit (1); - } - close (fd); - - free (name); -} - -static void -remove_file (const char *dirname, const char *filename) -{ - char *name = NULL; - if (asprintf (&name, "%s/%s", dirname, filename) < 0) - { - puts ("out of memory"); - exit (1); - } - - remove (name); - - free (name); -} - -static void -freelist (struct D(dirent) **list, size_t n) -{ - for (size_t i = 0; i < n; ++i) - free (list[i]); - free (list); -} - -static int -select_a (const struct D(dirent) *d) -{ - return d->d_name[0] == 'a'; -} - -static int -do_test (void) -{ - verify_empty (scandir_test_dir); - - make_file (scandir_test_dir, "c"); - make_file (scandir_test_dir, "aa"); - make_file (scandir_test_dir, "b"); - make_file (scandir_test_dir, "a"); - - - /* First a basic test with no select or compare functions. */ - - struct D(dirent) **list; - int n = D(scandir) (scandir_test_dir, &list, NULL, NULL); - if (n < 0) - { - printf ("scandir failed on %s: %s\n", - scandir_test_dir, strerror (errno)); - return 1; - } - if (n != 6) - { - printf ("scandir returned %d entries instead of 6\n", n); - return 1; - } - - struct - { - const char *name; - bool found; - } expected[] = - { - { ".", }, - { "..", }, - { "a", }, - { "aa", }, - { "b", }, - { "c", }, - }; - - /* Verify the results, ignoring the order. */ - for (int i = 0; i < n; ++i) - { - for (size_t j = 0; j < sizeof expected / sizeof expected[0]; ++j) - if (!strcmp (list[i]->d_name, expected[j].name)) - { - expected[j].found = true; - goto found; - } - - printf ("scandir yields unexpected entry [%d] \"%s\"\n", - i, list[i]->d_name); - return 1; - - found:; - } - - for (size_t j = 0; j < sizeof expected / sizeof expected[0]; ++j) - if (!expected[j].found) - { - printf ("failed to produce \"%s\"\n", expected[j].name); - return 1; - } - - freelist (list, n); - - - /* Now a test with a comparison function. */ - - n = D(scandir) (scandir_test_dir, &list, NULL, &D(alphasort)); - if (n < 0) - { - printf ("scandir failed on %s: %s\n", - scandir_test_dir, strerror (errno)); - return 1; - } - if (n != 6) - { - printf ("scandir returned %d entries instead of 6\n", n); - return 1; - } - - assert (sizeof expected / sizeof expected[0] == 6); - for (int i = 0; i < n; ++i) - if (strcmp (list[i]->d_name, expected[i].name)) - { - printf ("scandir yields [%d] of \"%s\", expected \"%s\"\n", - i, list[i]->d_name, expected[i].name); - return 1; - } - - freelist (list, n); - - - /* Now a test with a select function but no comparison function. */ - - n = D(scandir) (scandir_test_dir, &list, &select_a, NULL); - if (n < 0) - { - printf ("scandir failed on %s: %s\n", - scandir_test_dir, strerror (errno)); - return 1; - } - if (n != 2) - { - printf ("scandir returned %d entries instead of 2\n", n); - return 1; - } - - if (strcmp (list[0]->d_name, "a") && strcmp (list[0]->d_name, "aa")) - { - printf ("scandir yields [0] \"%s\", expected \"a\" or \"aa\"\n", - list[0]->d_name); - return 1; - } - if (strcmp (list[1]->d_name, "a") && strcmp (list[1]->d_name, "aa")) - { - printf ("scandir yields [1] \"%s\", expected \"a\" or \"aa\"\n", - list[1]->d_name); - return 1; - } - if (!strcmp (list[0]->d_name, list[1]->d_name)) - { - printf ("scandir yields \"%s\" twice!\n", list[0]->d_name); - return 1; - } - - freelist (list, n); - - - /* Now a test with both functions. */ - - n = D(scandir) (scandir_test_dir, &list, &select_a, &D(alphasort)); - if (n < 0) - { - printf ("scandir failed on %s: %s\n", - scandir_test_dir, strerror (errno)); - return 1; - } - if (n != 2) - { - printf ("scandir returned %d entries instead of 2\n", n); - return 1; - } - - if (strcmp (list[0]->d_name, "a") || strcmp (list[1]->d_name, "aa")) - { - printf ("scandir yields {\"%s\", \"%s\"}, expected {\"a\", \"aa\"}\n", - list[0]->d_name, list[1]->d_name); - return 1; - } - - freelist (list, n); - - - /* Clean up the test directory. */ - remove_file (scandir_test_dir, "c"); - remove_file (scandir_test_dir, "aa"); - remove_file (scandir_test_dir, "b"); - remove_file (scandir_test_dir, "a"); - - return 0; -} diff --git a/dirent/tst-scandir64.c b/dirent/tst-scandir64.c deleted file mode 100644 index 3f4c68ed7c..0000000000 --- a/dirent/tst-scandir64.c +++ /dev/null @@ -1,2 +0,0 @@ -#define D(x) x##64 -#include "tst-scandir.c" diff --git a/dirent/tst-seekdir.c b/dirent/tst-seekdir.c deleted file mode 100644 index dcdd699b09..0000000000 --- a/dirent/tst-seekdir.c +++ /dev/null @@ -1,81 +0,0 @@ -#include <stdio.h> -#include <dirent.h> -#include <stdlib.h> - -static int -do_test (void) -{ - DIR * dirp; - long int save3 = 0; - long int cur; - int i = 0; - int result = 0; - struct dirent *dp; - long int save0; - long int rewind; - - dirp = opendir ("."); - if (dirp == NULL) - { - printf ("opendir failed: %m\n"); - return 1; - } - - save0 = telldir (dirp); - if (save0 == -1) - { - printf ("telldir failed: %m\n"); - result = 1; - } - - for (dp = readdir (dirp); dp != NULL; dp = readdir (dirp)) - { - /* save position 3 (after fourth entry) */ - if (i++ == 3) - save3 = telldir (dirp); - - printf ("%s\n", dp->d_name); - - /* stop at 400 (just to make sure dirp->__offset and dirp->__size are - scrambled */ - if (i == 400) - break; - } - - printf ("going back past 4-th entry...\n"); - - /* go back to saved entry */ - seekdir (dirp, save3); - - /* Check whether telldir equals to save3 now. */ - cur = telldir (dirp); - if (cur != save3) - { - printf ("seekdir (d, %ld); telldir (d) == %ld\n", save3, cur); - result = 1; - } - - /* print remaining files (3-last) */ - for (dp = readdir (dirp); dp != NULL; dp = readdir (dirp)) - printf ("%s\n", dp->d_name); - - /* Check rewinddir */ - rewinddir (dirp); - rewind = telldir (dirp); - if (rewind == -1) - { - printf ("telldir failed: %m\n"); - result = 1; - } - else if (save0 != rewind) - { - printf ("rewinddir didn't reset directory stream\n"); - result = 1; - } - - closedir (dirp); - return result; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/dirent/versionsort.c b/dirent/versionsort.c deleted file mode 100644 index 9e97b29288..0000000000 --- a/dirent/versionsort.c +++ /dev/null @@ -1,37 +0,0 @@ -/* Copyright (C) 1992-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -/* We need to avoid the header declaration of versionsort64, because - the types don't match versionsort and then the compiler will - complain about the mismatch when we do the alias below. */ -#define versionsort64 __renamed_versionsort64 - -#include <dirent.h> - -#undef versionsort64 - -#include <string.h> - -int -versionsort (const struct dirent **a, const struct dirent **b) -{ - return __strverscmp ((*a)->d_name, (*b)->d_name); -} - -#ifdef _DIRENT_MATCHES_DIRENT64 -weak_alias (versionsort, versionsort64) -#endif diff --git a/dirent/versionsort64.c b/dirent/versionsort64.c deleted file mode 100644 index 3fceb8947a..0000000000 --- a/dirent/versionsort64.c +++ /dev/null @@ -1,30 +0,0 @@ -/* Copyright (C) 1992-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <dirent.h> -#include <string.h> - -/* versionsort.c defines a versionsort64 alias if _DIRENT_MATCHES_DIRENT64. */ -#ifndef _DIRENT_MATCHES_DIRENT64 - -int -versionsort64 (const struct dirent64 **a, const struct dirent64 **b) -{ - return __strverscmp ((*a)->d_name, (*b)->d_name); -} - -#endif |