diff options
Diffstat (limited to 'sysdeps/unix/sysv/linux/alpha')
-rw-r--r-- | sysdeps/unix/sysv/linux/alpha/glob-lstat-compat.c | 2 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/alpha/glob.c | 47 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/alpha/libc.abilist | 3 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/alpha/oldglob.c | 6 |
4 files changed, 9 insertions, 49 deletions
diff --git a/sysdeps/unix/sysv/linux/alpha/glob-lstat-compat.c b/sysdeps/unix/sysv/linux/alpha/glob-lstat-compat.c new file mode 100644 index 0000000000..a76471d4df --- /dev/null +++ b/sysdeps/unix/sysv/linux/alpha/glob-lstat-compat.c @@ -0,0 +1,2 @@ +#define GLOB_LSTAT_VERSION GLIBC_2_1 +#include <sysdeps/unix/sysv/linux/glob-lstat-compat.c> diff --git a/sysdeps/unix/sysv/linux/alpha/glob.c b/sysdeps/unix/sysv/linux/alpha/glob.c deleted file mode 100644 index 1b813c1cfd..0000000000 --- a/sysdeps/unix/sysv/linux/alpha/glob.c +++ /dev/null @@ -1,47 +0,0 @@ -/* Copyright (C) 1998-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/>. */ - -#define glob64 __no_glob64_decl -#define globfree64 __no_globfree64_decl - -#include <sys/types.h> -#include <glob.h> -#include <shlib-compat.h> - -/* 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) - -/* We need prototypes for these new names. */ -extern int __new_glob (const char *__pattern, int __flags, - int (*__errfunc) (const char *, int), - glob_t *__pglob); -extern void __new_globfree (glob_t *__pglob); - -#include <posix/glob.c> - -#undef glob -#undef globfree -#undef glob64 -#undef globfree64 - -versioned_symbol (libc, __new_glob, glob, GLIBC_2_1); -libc_hidden_ver (__new_glob, glob) - -weak_alias (__new_glob, glob64) diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist index fab73317ca..4836ea0374 100644 --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist @@ -2014,6 +2014,9 @@ GLIBC_2.26 preadv64v2 F GLIBC_2.26 pwritev2 F GLIBC_2.26 pwritev64v2 F GLIBC_2.26 reallocarray F +GLIBC_2.27 GLIBC_2.27 A +GLIBC_2.27 glob F +GLIBC_2.27 glob64 F GLIBC_2.3 GLIBC_2.3 A GLIBC_2.3 __ctype_b_loc F GLIBC_2.3 __ctype_tolower_loc F diff --git a/sysdeps/unix/sysv/linux/alpha/oldglob.c b/sysdeps/unix/sysv/linux/alpha/oldglob.c index 988c92ba45..b54624c611 100644 --- a/sysdeps/unix/sysv/linux/alpha/oldglob.c +++ b/sysdeps/unix/sysv/linux/alpha/oldglob.c @@ -59,7 +59,9 @@ __old_glob (const char *pattern, int 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; + /* Set gl_lstat and gl_stat for both gl_stat for compatibility with old + implementation that did not follow dangling symlinks. */ + correct.gl_lstat = pglob->gl_stat; correct.gl_stat = pglob->gl_stat; result = glob (pattern, flags, errfunc, &correct); @@ -72,7 +74,7 @@ __old_glob (const char *pattern, int 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; + /* Only need to restore gl_stat. */ pglob->gl_stat = correct.gl_stat; return result; |