From a5f4e34a264b7cd296f8ca890ca4eaa1d0f99317 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Mon, 10 Aug 1998 15:54:54 +0000 Subject: Update. 1998-08-10 15:49 Ulrich Drepper * include/dirent.h: Protect from double inclusion. 1998-08-09 Mark Kettenis * posix/glob.h: Add LFS support for glob and globfree. * posix/Versions [GLIBC_2.1]: Add glob64 and globfree64. * posix/Makefile (routines): Add glob64. * sysdeps/generic/glob64.c: New file. * sysdeps/unix/sysv/linux/glob64.c: New file. * sysdeps/unix/sysv/linux/alpha/glob64.c: New file. * sysdeps/unix/sysv/linux/sparc/sparc64/glob64.c: New file. * sysdeps/generic/glob.c [_LIBC && glob] (__glob_pattern_p): Elide function. * sysdeps/unix/sysv/linux/alpha/glob.c: Add glob64 as a weak alias for __new_glob. Likewise for globfree64. * sysdeps/unix/sysv/linux/sparc/sparc64/glob.c: New file. 1998-08-09 Andreas Schwab * sysdeps/unix/Makefile ($(common-objpfx)s-proto.d): Remove -include flag from command. --- posix/glob.h | 50 +++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 41 insertions(+), 9 deletions(-) (limited to 'posix/glob.h') diff --git a/posix/glob.h b/posix/glob.h index da719c2a45..609f2177e5 100644 --- a/posix/glob.h +++ b/posix/glob.h @@ -77,21 +77,13 @@ extern "C" { #define GLOB_NOSPACE 1 /* Ran out of memory. */ #define GLOB_ABORTED 2 /* Read error. */ #define GLOB_NOMATCH 3 /* No matches found. */ - +#define GLOB_NOSYS 4 /* Not implemented. */ #ifdef _GNU_SOURCE /* Previous versions of this file defined GLOB_ABEND instead of GLOB_ABORTED. Provide a compatibility definition here. */ # define GLOB_ABEND GLOB_ABORTED #endif -/* This value is returned if the implementation does not support - `glob'. Since this is not the case here it will never be - returned but the conformance test suites still require the symbol - to be defined. */ -#ifdef _XOPEN_SOURCE -# define GLOB_NOSYS (-1) -#endif - /* Structure describing a globbing run. */ #if !defined _AMIGA && !defined VMS /* Buggy compiler. */ struct stat; @@ -112,6 +104,25 @@ typedef struct int (*gl_stat) __PMT ((__const char *, struct stat *)); } glob_t; +#ifdef _LARGEFILE64_SOURCE +struct stat64; +typedef struct + { + size_t gl_pathc; + char **gl_pathv; + size_t gl_offs; + int gl_flags; + + /* If the GLOB_ALTDIRFUNC flag is set, the following functions + are used instead of the normal file access functions. */ + void (*gl_closedir) __PMT ((void *)); + struct dirent64 *(*gl_readdir) __PMT ((void *)); + __ptr_t (*gl_opendir) __PMT ((__const char *)); + int (*gl_lstat) __PMT ((__const char *, struct stat64 *)); + int (*gl_stat) __PMT ((__const char *, struct stat64 *)); + } glob64_t; +#endif + /* Do glob searching for PATTERN, placing results in PGLOB. The bits defined above may be set in FLAGS. If a directory cannot be opened or read and ERRFUNC is not nil, @@ -120,12 +131,33 @@ typedef struct `glob' returns GLOB_ABEND; if it returns zero, the error is ignored. If memory cannot be allocated for PGLOB, GLOB_NOSPACE is returned. Otherwise, `glob' returns zero. */ +#if _FILE_OFFSET_BITS != 64 extern int glob __P ((__const char *__pattern, int __flags, int (*__errfunc) __P ((__const char *, int)), glob_t *__pglob)); /* Free storage allocated in PGLOB by a previous `glob' call. */ extern void globfree __P ((glob_t *__pglob)); +#else +# if __GNUC__ >= 2 +extern int glob __P ((__const char *__pattern, int __flags, + int (*__errfunc) __P ((__const char *, int)), + glob_t *__pglob)) __asm__ ("glob64"); + +extern void globfree __P ((glob_t *__pglob)) __asm__ ("globfree64"); +# else +# define glob glob64 +# define globfree globfree64 +# endif +#endif + +#ifdef _LARGEFILE64_SOURCE +extern int glob64 __P ((__const char *__pattern, int __flags, + int (*__errfunc) __P ((__const char *, int)), + glob64_t *__pglob)); + +extern void globfree64 __P ((glob64_t *__pglob)); +#endif #ifdef _GNU_SOURCE -- cgit v1.2.3