summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1998-05-12 12:22:17 +0000
committerUlrich Drepper <drepper@redhat.com>1998-05-12 12:22:17 +0000
commitee74a442e8b9403f02f7e933260625acf145ad08 (patch)
tree1500526c0bc3f8bee1bbd5a2914e37d58e5d8bdc
parentde7e6366d6de7b1c8f8409af669b2c1e83d7307b (diff)
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--.cvsignore2
-rw-r--r--ChangeLog53
-rw-r--r--Make-dist1
-rw-r--r--MakeTAGS3
-rw-r--r--Makeconfig14
-rw-r--r--config.make.in3
-rwxr-xr-xconfigure5
-rw-r--r--configure.in4
-rw-r--r--elf/Makefile4
-rw-r--r--libc.map2
-rw-r--r--malloc/malloc.c20
-rw-r--r--nis/ypclnt.c9
-rw-r--r--posix/glob.h6
-rw-r--r--rt/Makefile4
-rw-r--r--sunrpc/Makefile3
-rw-r--r--sysdeps/generic/glob.c (renamed from posix/glob.c)0
-rw-r--r--sysdeps/unix/sysv/linux/alpha/Dist1
-rw-r--r--sysdeps/unix/sysv/linux/alpha/Makefile4
-rw-r--r--sysdeps/unix/sysv/linux/alpha/glob.c30
-rw-r--r--sysdeps/unix/sysv/linux/alpha/oldglob.c94
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