X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fdirent.in.h;h=15f0245b0929efa68b39f57123ae1e9ba2daf0d9;hb=bd606be378ddd8404641cad023dd43f1f676b26e;hp=494d71abb74d32065532f14e9d970c96ee904d6f;hpb=c2318e88599d84748f3537b54646913f0af0eb20;p=gnulib.git diff --git a/lib/dirent.in.h b/lib/dirent.in.h index 494d71abb..15f0245b0 100644 --- a/lib/dirent.in.h +++ b/lib/dirent.in.h @@ -1,5 +1,5 @@ -/* Wrapper around . - Copyright (C) 2006-2008 Free Software Foundation, Inc. +/* A GNU-like . + Copyright (C) 2006-2009 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -16,7 +16,9 @@ #ifndef _GL_DIRENT_H +#if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ +#endif /* The include_next requires a split double-inclusion guard. */ #@INCLUDE_NEXT@ @NEXT_DIRENT_H@ @@ -24,13 +26,15 @@ #ifndef _GL_DIRENT_H #define _GL_DIRENT_H +/* The definition of GL_LINK_WARNING is copied here. */ -/* Declare overridden functions. */ #ifdef __cplusplus extern "C" { #endif +/* Declare overridden functions. */ + #if @REPLACE_FCHDIR@ # define opendir rpl_opendir extern DIR * opendir (const char *); @@ -38,6 +42,53 @@ extern DIR * opendir (const char *); extern int closedir (DIR *); #endif +/* Declare other POSIX functions. */ + +#if @GNULIB_DIRFD@ +# if !@HAVE_DECL_DIRFD@ && !defined dirfd +/* Return the file descriptor associated with the given directory stream, + or -1 if none exists. */ +extern int dirfd (DIR const *dir); +# endif +#elif defined GNULIB_POSIXCHECK +# undef dirfd +# define dirfd(d) \ + (GL_LINK_WARNING ("dirfd is unportable - " \ + "use gnulib module dirfd for portability"), \ + dirfd (d)) +#endif + +#if @GNULIB_SCANDIR@ +/* Scan the directory DIR, calling FILTER on each directory entry. + Entries for which FILTER 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. */ +# if !@HAVE_SCANDIR@ +extern int scandir (const char *dir, struct dirent ***namelist, + int (*filter) (const struct dirent *), + int (*cmp) (const struct dirent **, const struct dirent **)); +# endif +#elif defined GNULIB_POSIXCHECK +# undef scandir +# define scandir(d,n,f,c) \ + (GL_LINK_WARNING ("scandir is unportable - " \ + "use gnulib module scandir for portability"), \ + scandir (d, n, f, c)) +#endif + +#if @GNULIB_ALPHASORT@ +/* Compare two 'struct dirent' entries alphabetically. */ +# if !@HAVE_ALPHASORT@ +extern int alphasort (const struct dirent **, const struct dirent **); +# endif +#elif defined GNULIB_POSIXCHECK +# undef alphasort +# define alphasort(a,b) \ + (GL_LINK_WARNING ("alphasort is unportable - " \ + "use gnulib module alphasort for portability"), \ + alphasort (a, b)) +#endif + #ifdef __cplusplus } #endif