diff options
author | Ulrich Drepper <drepper@redhat.com> | 1998-05-12 12:22:17 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1998-05-12 12:22:17 +0000 |
commit | ee74a442e8b9403f02f7e933260625acf145ad08 (patch) | |
tree | 1500526c0bc3f8bee1bbd5a2914e37d58e5d8bdc | |
parent | de7e6366d6de7b1c8f8409af669b2c1e83d7307b (diff) | |
download | glibc-ee74a442e8b9403f02f7e933260625acf145ad08.tar.gz glibc-ee74a442e8b9403f02f7e933260625acf145ad08.tar.xz glibc-ee74a442e8b9403f02f7e933260625acf145ad08.zip |
Update.
1998-05-12 12:15 Ulrich Drepper <drepper@cygnus.com> * posix/glob.c: Move to ... * sysdeps/generic/glob.c: ...here. * posix/glob.h (glob_t): Use correct types for gl_pathc and gl_offs elements. * sysdeps/unix/sysv/linux/alpha/glob.c: New file. * sysdeps/unix/sysv/linux/alpha/oldglob.c: New file. * sysdeps/unix/sysv/linux/alpha/Dist: Add oldglob.c. * sysdeps/unix/sysv/linux/alpha/Makefile: Compile oldglob in posix subdir. * libc.map [GLIBC_2.1]: Add glob and globfree. 1998-05-12 Ulrich Drepper <drepper@cygnus.com> * sunrpc/Makefile (generated): Restore old list. 1998-05-11 Andreas Jaeger <aj@arthur.rhein-neckar.de> * rt/Makefile (tests): Define only if we have a thread library. * nis/ypclnt.c: Add: #include <errno.h>. 1998-05-10 15:39 Zack Weinberg <zack@rabi.phys.columbia.edu> * configure.in: Define and substitute RELEASE as well as VERSION. * config.make.in: Add RELEASE and VERSION to be substituted. * Makeconfig: Delete all references to version.mk. * Make-dist: Likewise. * MakeTAGS: Likewise. * elf/Makefile: Likewise. 1998-05-10 Thorsten Kukuk <kukuk@vt.uni-paderborn.de> * nis/ypclnt.c: Move "(none)" domainname check from __yp_check to yp_get_default_domain. 1998-05-12 Ulrich Drepper <drepper@cygnus.com> * sysdeps/posix/profil.c (__profil): Don't define act and timer variables as static. Patch by Joe Keane <jgk@jgk.org>. 1998-05-12 Wolfram Gloger <wmglo@dent.med.uni-muenchen.de> * malloc/malloc.c: Fix for NO_THREADS case. Remove statfs and fstatfs. and pwrite as EXTRA. * sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list: Likewise.
-rw-r--r-- | .cvsignore | 2 | ||||
-rw-r--r-- | ChangeLog | 53 | ||||
-rw-r--r-- | Make-dist | 1 | ||||
-rw-r--r-- | MakeTAGS | 3 | ||||
-rw-r--r-- | Makeconfig | 14 | ||||
-rw-r--r-- | config.make.in | 3 | ||||
-rwxr-xr-x | configure | 5 | ||||
-rw-r--r-- | configure.in | 4 | ||||
-rw-r--r-- | elf/Makefile | 4 | ||||
-rw-r--r-- | libc.map | 2 | ||||
-rw-r--r-- | malloc/malloc.c | 20 | ||||
-rw-r--r-- | nis/ypclnt.c | 9 | ||||
-rw-r--r-- | posix/glob.h | 6 | ||||
-rw-r--r-- | rt/Makefile | 4 | ||||
-rw-r--r-- | sunrpc/Makefile | 3 | ||||
-rw-r--r-- | sysdeps/generic/glob.c (renamed from posix/glob.c) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/alpha/Dist | 1 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/alpha/Makefile | 4 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/alpha/glob.c | 30 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/alpha/oldglob.c | 94 |
20 files changed, 223 insertions, 39 deletions
diff --git a/.cvsignore b/.cvsignore index b907f7a024..9140e6d68e 100644 --- a/.cvsignore +++ b/.cvsignore @@ -22,4 +22,4 @@ releases crypt linuxthreads -aio +libc.prj .libc.prcs_aux diff --git a/ChangeLog b/ChangeLog index b76a5c406b..ef8d9a1c22 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,10 +1,57 @@ +1998-05-12 12:15 Ulrich Drepper <drepper@cygnus.com> + + * posix/glob.c: Move to ... + * sysdeps/generic/glob.c: ...here. + * posix/glob.h (glob_t): Use correct types for gl_pathc and gl_offs + elements. + * sysdeps/unix/sysv/linux/alpha/glob.c: New file. + * sysdeps/unix/sysv/linux/alpha/oldglob.c: New file. + * sysdeps/unix/sysv/linux/alpha/Dist: Add oldglob.c. + * sysdeps/unix/sysv/linux/alpha/Makefile: Compile oldglob in posix + subdir. + * libc.map [GLIBC_2.1]: Add glob and globfree. + +1998-05-12 Ulrich Drepper <drepper@cygnus.com> + + * sunrpc/Makefile (generated): Restore old list. + +1998-05-11 Andreas Jaeger <aj@arthur.rhein-neckar.de> + + * rt/Makefile (tests): Define only if we have a thread library. + + * nis/ypclnt.c: Add: #include <errno.h>. + +1998-05-10 15:39 Zack Weinberg <zack@rabi.phys.columbia.edu> + + * configure.in: Define and substitute RELEASE as well as + VERSION. + * config.make.in: Add RELEASE and VERSION to be substituted. + * Makeconfig: Delete all references to version.mk. + * Make-dist: Likewise. + * MakeTAGS: Likewise. + * elf/Makefile: Likewise. + +1998-05-10 Thorsten Kukuk <kukuk@vt.uni-paderborn.de> + + * nis/ypclnt.c: Move "(none)" domainname check from __yp_check to + yp_get_default_domain. + +1998-05-12 Ulrich Drepper <drepper@cygnus.com> + + * sysdeps/posix/profil.c (__profil): Don't define act and timer + variables as static. Patch by Joe Keane <jgk@jgk.org>. + +1998-05-12 Wolfram Gloger <wmglo@dent.med.uni-muenchen.de> + + * malloc/malloc.c: Fix for NO_THREADS case. + 1998-05-11 18:02 Richard Henderson <rth@cygnus.com> * sysdeps/unix/sysv/linux/alpha/Makefile (sysdep_routines): - Remove statfs and fstatfs. + Remove statfs and fstatfs. * sysdeps/unix/sysv/linux/alpha/syscalls.list: Don't mark pread - and pwrite as EXTRA. - * sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list: Likewise. + and pwrite as EXTRA. + * sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list: Likewise. 1998-05-09 Ulrich Drepper <drepper@cygnus.com> diff --git a/Make-dist b/Make-dist index 293598febc..13df78abce 100644 --- a/Make-dist +++ b/Make-dist @@ -132,7 +132,6 @@ foo:=$(shell echo '+tsrcs=$(+tsrcs)'>&2) foo:=$(shell echo foobie, dammit! >&2) ifndef tardir --include $(common-objpfx)version.mk export tardir := glibc-$(version) endif diff --git a/MakeTAGS b/MakeTAGS index 57d7a5b766..b4320ee896 100644 --- a/MakeTAGS +++ b/MakeTAGS @@ -163,9 +163,6 @@ $P/subdirs.pot: $(subdirs:%=$P/%.pot) do sed "/^#:/s% % $$d/%g" $P/$$d.pot; done) > $@.new mv -f $@.new $@ -# Get $(version) defined. -include $(common-objpfx)version.mk - # Combine all the messages into the final sorted template translation file. # The following code requires GNU date. $P/libc.pot: $(all-pot) diff --git a/Makeconfig b/Makeconfig index 1948e79512..8cdf8c6a76 100644 --- a/Makeconfig +++ b/Makeconfig @@ -657,15 +657,6 @@ ifndef BUILD_CC BUILD_CC = $(CC) endif -# Figure out the version numbers from version.h. - -$(common-objpfx)version.mk: $(..)version.h $(..)Makeconfig - sed -n -e 's/^.*RELEASE.*"\([^"]*\)".*$$/release=\1/p' \ - -e 's/^.*VERSION.*"\([^"]*\)".*$$/version=\1/p' \ - < $< > $@-new - mv -f $@-new $@ - -common-generated += version.mk ifeq (yes, $(build-shared)) @@ -704,11 +695,6 @@ endif postclean-generated += soversions.mk -ifndef avoid-generated -# Get $(version) defined with the release version number. --include $(common-objpfx)version.mk -endif - # Generate the header containing the names of all shared libraries. # We use a stamp file to avoid uncessary recompilations. before-compile += $(common-objpfx)gnu/lib-names.h diff --git a/config.make.in b/config.make.in index 1838b5da1d..d23ee8dbd8 100644 --- a/config.make.in +++ b/config.make.in @@ -2,6 +2,9 @@ # From $Id$. # Don't edit this file. Put configuration parameters in configparms instead. +version = @VERSION@ +release = @RELEASE@ + # Installation prefixes. install_root = prefix = @prefix@ diff --git a/configure b/configure index 66db82f857..5e6f231bd1 100755 --- a/configure +++ b/configure @@ -2870,7 +2870,9 @@ else config_makefile=Makefile fi -VERSION=`sed -e 's/^#define VERSION "\([^"]*\)"/\1/p' -e d < $srcdir/version.h` +VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h` +RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h` + trap '' 1 2 15 @@ -3067,6 +3069,7 @@ s%@static_nss@%$static_nss%g s%@nopic_initfini@%$nopic_initfini%g s%@DEFINES@%$DEFINES%g s%@VERSION@%$VERSION%g +s%@RELEASE@%$RELEASE%g CEOF EOF diff --git a/configure.in b/configure.in index 3c711edd80..d04c18b0b3 100644 --- a/configure.in +++ b/configure.in @@ -1159,8 +1159,10 @@ else config_makefile=Makefile fi -VERSION=`sed -e 's/^#define VERSION "\([^"]*\)"/\1/p' -e d < $srcdir/version.h` +VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h` +RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h` AC_SUBST(VERSION) +AC_SUBST(RELEASE) AC_OUTPUT(config.make glibcbug ${config_makefile} ${config_uname}, , [echo '$config_vars' >> config.make; test -d bits || mkdir bits]) diff --git a/elf/Makefile b/elf/Makefile index 2c164158b3..2f2e4b1934 100644 --- a/elf/Makefile +++ b/elf/Makefile @@ -191,8 +191,8 @@ sed $($(ldd-shell)-ldd-rewrite) < $< | sed -f $(ldd-rewrite-script) > $@.new endef endif -$(objpfx)ldd: ldd.$(ldd-shell).in $(common-objpfx)version.mk \ - $(common-objpfx)soversions.mk $(common-objpfx)config.make +$(objpfx)ldd: ldd.$(ldd-shell).in $(common-objpfx)soversions.mk \ + $(common-objpfx)config.make $(gen-ldd) chmod 555 $@.new mv -f $@.new $@ diff --git a/libc.map b/libc.map index 2d77216648..5f50ad43b1 100644 --- a/libc.map +++ b/libc.map @@ -470,7 +470,7 @@ GLIBC_2.1 { __key_gendes_LOCAL; # chown interface change. - chown; + chown; glob; globfree; # Change in pthread_attr_t. pthread_attr_init; diff --git a/malloc/malloc.c b/malloc/malloc.c index 78e6b399b2..4306a0a12f 100644 --- a/malloc/malloc.c +++ b/malloc/malloc.c @@ -1195,11 +1195,13 @@ static Void_t* realloc_check(Void_t* oldmem, size_t bytes, const Void_t *caller); static Void_t* memalign_check(size_t alignment, size_t bytes, const Void_t *caller); +#ifndef NO_THREADS static Void_t* malloc_starter(size_t sz, const Void_t *caller); static void free_starter(Void_t* mem, const Void_t *caller); static Void_t* malloc_atfork(size_t sz, const Void_t *caller); static void free_atfork(Void_t* mem, const Void_t *caller); #endif +#endif #else @@ -1216,11 +1218,13 @@ static Void_t* malloc_check(); static void free_check(); static Void_t* realloc_check(); static Void_t* memalign_check(); +#ifndef NO_THREADS static Void_t* malloc_starter(); static void free_starter(); static Void_t* malloc_atfork(); static void free_atfork(); #endif +#endif #endif @@ -1533,6 +1537,8 @@ static unsigned long max_mmapped_mem = 0; int __malloc_initialized = -1; +#ifndef NO_THREADS + /* The following two functions are registered via thread_atfork() to make sure that the mutexes remain in a consistent state in the fork()ed version of a thread. Also adapt the malloc and free hooks @@ -1605,6 +1611,8 @@ ptmalloc_init_all __MALLOC_P((void)) (void)mutex_init(&list_lock); } +#endif + /* Initialization routine. */ #if defined(_LIBC) #if 0 @@ -1624,6 +1632,7 @@ ptmalloc_init __MALLOC_P((void)) if(__malloc_initialized >= 0) return; __malloc_initialized = 0; +#ifndef NO_THREADS #if defined _LIBC || defined MALLOC_HOOKS /* With some threads implementations, creating thread-specific data or initializing a mutex may call malloc() itself. Provide a @@ -1633,18 +1642,17 @@ ptmalloc_init __MALLOC_P((void)) __malloc_hook = malloc_starter; __free_hook = free_starter; #endif -#if defined _LIBC && !defined NO_THREADS +#ifdef _LIBC /* Initialize the pthreads interface. */ if (__pthread_initialize != NULL) __pthread_initialize(); #endif -#ifndef NO_THREADS mutex_init(&main_arena.mutex); mutex_init(&list_lock); tsd_key_create(&arena_key, NULL); tsd_setspecific(arena_key, (Void_t *)&main_arena); thread_atfork(ptmalloc_lock_all, ptmalloc_unlock_all, ptmalloc_init_all); -#endif +#endif /* !defined NO_THREADS */ #if defined _LIBC || defined MALLOC_HOOKS if((s = getenv("MALLOC_TRIM_THRESHOLD_"))) mALLOPt(M_TRIM_THRESHOLD, atoi(s)); @@ -1655,8 +1663,10 @@ ptmalloc_init __MALLOC_P((void)) if((s = getenv("MALLOC_MMAP_MAX_"))) mALLOPt(M_MMAP_MAX, atoi(s)); s = getenv("MALLOC_CHECK_"); +#ifndef NO_THREADS __malloc_hook = save_malloc_hook; __free_hook = save_free_hook; +#endif if(s) { if(s[0]) mALLOPt(M_CHECK_ACTION, (int)(s[0] - '0')); __malloc_check_init(); @@ -4431,6 +4441,8 @@ memalign_check(alignment, bytes, caller) return chunk2mem_check(p, bytes); } +#ifndef NO_THREADS + /* The following hooks are used when the global initialization in ptmalloc_init() hasn't completed yet. */ @@ -4525,6 +4537,8 @@ free_atfork(mem, caller) Void_t* mem; const Void_t *caller; (void)mutex_unlock(&ar_ptr->mutex); } +#endif + #endif /* defined _LIBC || defined MALLOC_HOOKS */ diff --git a/nis/ypclnt.c b/nis/ypclnt.c index 2d76daded9..e8c016d028 100644 --- a/nis/ypclnt.c +++ b/nis/ypclnt.c @@ -17,6 +17,7 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#include <errno.h> #include <fcntl.h> #include <string.h> #include <unistd.h> @@ -379,6 +380,12 @@ yp_get_default_domain (char **outdomain) { if (getdomainname (__ypdomainname, NIS_MAXNAMELEN)) result = YPERR_NODOM; + else if (strcmp (__ypdomainname, "(none)") == 0) + { + /* If domainname is not set, some Systems will return "(none)" */ + __ypdomainname[0] = '\0'; + result = YPERR_NODOM; + } else *outdomain = __ypdomainname; } @@ -398,8 +405,6 @@ __yp_check (char **domain) if (__ypdomainname[0] == '\0') if (yp_get_default_domain (&unused)) return 0; - else if (strcmp (__ypdomainname, "(none)") == 0) - return 0; if (domain) *domain = __ypdomainname; diff --git a/posix/glob.h b/posix/glob.h index a546c865f2..fd8255cd53 100644 --- a/posix/glob.h +++ b/posix/glob.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1992, 1995, 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1991, 92, 95, 96, 97, 98 Free Software Foundation, Inc. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as @@ -92,9 +92,9 @@ struct stat; #endif typedef struct { - int gl_pathc; /* Count of paths matched by the pattern. */ + size_t gl_pathc; /* Count of paths matched by the pattern. */ char **gl_pathv; /* List of matched pathnames. */ - int gl_offs; /* Slots to reserve in `gl_pathv'. */ + size_t gl_offs; /* Slots to reserve in `gl_pathv'. */ int gl_flags; /* Set to FLAGS, maybe | GLOB_MAGCHAR. */ /* If the GLOB_ALTDIRFUNC flag is set, the following functions diff --git a/rt/Makefile b/rt/Makefile index 748050a74d..bc8f9234bf 100644 --- a/rt/Makefile +++ b/rt/Makefile @@ -30,8 +30,6 @@ librt-routines := aio_cancel aio_error aio_fsync aio_misc aio_read \ librt-map := librt.map -tests := tst-aio - # Make sure that everything is distributed independent of configuration. distribute := aio_misc.h $(librt-routines:=.c) $(librt-map) @@ -39,6 +37,8 @@ include ../Makeconfig ifeq ($(have-thread-library),yes) +tests := tst-aio + extra-libs := librt extra-libs-others := $(extra-libs) diff --git a/sunrpc/Makefile b/sunrpc/Makefile index 2cdcbb9595..a6101cfc6b 100644 --- a/sunrpc/Makefile +++ b/sunrpc/Makefile @@ -55,8 +55,7 @@ headers = $(addprefix rpc/,auth.h auth_unix.h clnt.h netdb.h pmap_clnt.h \ $(rpcsvc:%=rpcsvc/%) install-others = $(inst_sysconfdir)/rpc generated = $(rpcsvc:%.x=rpcsvc/%.h) $(rpcsvc:%.x=x%.c) $(rpcsvc:%.x=x%.stmp) \ - rpc-proto.c rpc-proto.d rpcgen -generated-dirs = rpcsvc + $(rpcsvc:%.x=rpcsvc/%.stmp) $rpc-proto.c rpc-proto.d rpcgen routines := auth_none auth_unix authuxprot bindrsvprt \ clnt_gen clnt_perr clnt_raw clnt_simp clnt_tcp \ diff --git a/posix/glob.c b/sysdeps/generic/glob.c index 29697f4c55..29697f4c55 100644 --- a/posix/glob.c +++ b/sysdeps/generic/glob.c diff --git a/sysdeps/unix/sysv/linux/alpha/Dist b/sysdeps/unix/sysv/linux/alpha/Dist index 6ced71e65d..d20860445c 100644 --- a/sysdeps/unix/sysv/linux/alpha/Dist +++ b/sysdeps/unix/sysv/linux/alpha/Dist @@ -10,6 +10,7 @@ kernel_sigaction.h kernel_stat.h kernel_termios.h net/route.h +oldglob.c rt_sigaction.S sizes.h sys/acct.h diff --git a/sysdeps/unix/sysv/linux/alpha/Makefile b/sysdeps/unix/sysv/linux/alpha/Makefile index 15ba1c7316..fbbc56ecd3 100644 --- a/sysdeps/unix/sysv/linux/alpha/Makefile +++ b/sysdeps/unix/sysv/linux/alpha/Makefile @@ -1,3 +1,7 @@ +ifeq ($(subdir),posix) +sysdep_routines += oldglob +endif + ifeq ($(subdir),misc) sysdep_headers += alpha/ptrace.h alpha/regdef.h diff --git a/sysdeps/unix/sysv/linux/alpha/glob.c b/sysdeps/unix/sysv/linux/alpha/glob.c new file mode 100644 index 0000000000..7bd516191d --- /dev/null +++ b/sysdeps/unix/sysv/linux/alpha/glob.c @@ -0,0 +1,30 @@ +/* Copyright (C) 1998 Free Software Foundation, Inc. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +/* For Linux/Alpha we have to make the glob symbols versioned. */ +#define glob(pattern, flags, errfunc, pglob) \ + __new_glob (pattern, flags, errfunc, pglob) \ +#define globfree(pglob) \ + __new_globfree (pglob) + +#include_next <glob.c> + +#undef glob +#undef globfree + +default_symbol_version(__new_glob, glob, GLIBC_2.1) +default_symbol_version(__new_globfree, globfree, GLIBC_2.1) diff --git a/sysdeps/unix/sysv/linux/alpha/oldglob.c b/sysdeps/unix/sysv/linux/alpha/oldglob.c new file mode 100644 index 0000000000..97284ab3e9 --- /dev/null +++ b/sysdeps/unix/sysv/linux/alpha/oldglob.c @@ -0,0 +1,94 @@ +/* Copyright (C) 1998 Free Software Foundation, Inc. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +/* This file contains only wrappers around the real glob functions. It + became necessary since the glob_t structure changed. */ +#include <glob.h> + +#if defined PIC && DO_VERSIONING + +/* This is the old structure. The difference is that the gl_pathc and + gl_offs elements have type `int'. */ +typedef struct + { + int gl_pathc; /* Count of paths matched by the pattern. */ + char **gl_pathv; /* List of matched pathnames. */ + int gl_offs; /* Slots to reserve in `gl_pathv'. */ + int gl_flags; /* Set to FLAGS, maybe | GLOB_MAGCHAR. */ + + /* If the GLOB_ALTDIRFUNC flag is set, the following functions + are used instead of the normal file access functions. */ + void (*gl_closedir) __P ((void *)); + struct dirent *(*gl_readdir) __P ((void *)); + __ptr_t (*gl_opendir) __P ((__const char *)); + int (*gl_lstat) __P ((__const char *, struct stat *)); + int (*gl_stat) __P ((__const char *, struct stat *)); + } old_glob_t; + + +int +__old_glob (const char *pattern, int flags, + int (*errfunc) __P ((const char *, int)), + old_glob_t *pglob) +{ + glob_t correct; + int result; + + /* Construct an object of correct type. */ + correct.gl_pathc = pglob->gl_pathc; + correct.gl_pathv = pglob->gl_pathv; + correct.gl_offs = pglob->gl_offs; + correct.gl_flags = pglob->gl_flags; + correct.gl_closedir = pglob->gl_closedir; + correct.gl_readdir = pglob->gl_readdir; + correct.gl_opendir = pglob->gl_opendir; + correct.gl_lstat = pglob->gl_lstat; + correct.gl_stat = pglob->gl_stat; + + result = glob (pattern, flags, errfunc, &correct); + + /* And convert it back. */ + pglob->gl_pathc = correct.gl_pathc; + pglob->gl_pathv = correct.gl_pathv; + pglob->gl_offs = correct.gl_offs; + pglob->gl_flags = correct.gl_flags; + pglob->gl_closedir = correct.gl_closedir; + pglob->gl_readdir = correct.gl_readdir; + pglob->gl_opendir = correct.gl_opendir; + pglob->gl_lstat = correct.gl_lstat; + pglob->gl_stat = correct.gl_stat; + + return result; +} +symbol_version(__old_glob, glob, GLIBC_2.0) + + +/* Free storage allocated in PGLOB by a previous `glob' call. */ +void +__old_globfree (old_glob_t *pglob) +{ + glob_t correct; + + /* We only need these two symbols. */ + correct.gl_pathc = pglob->gl_pathc; + correct.gl_pathv = pglob->gl_pathv; + + globfree (&correct); +} +symbol_version(__old_globfree, globfree, GLIBC_2.0) + +#endif |