diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/chown.c | 35 |
2 files changed, 33 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog index 1d4d67489c..93337e1a25 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +1998-03-08 Ulrich Drepper <drepper@cygnus.com> + + * sysdeps/unix/sysv/linux/chown.c: Add versioning stuff. + 1998-03-07 Andreas Jaeger <aj@arthur.rhein-neckar.de> * sysdeps/unix/sysv/linux/chown.c: New file for compatibility of diff --git a/sysdeps/unix/sysv/linux/chown.c b/sysdeps/unix/sysv/linux/chown.c index f380d93736..578dfc7e3f 100644 --- a/sysdeps/unix/sysv/linux/chown.c +++ b/sysdeps/unix/sysv/linux/chown.c @@ -38,7 +38,7 @@ static int __libc_old_chown; int -__chown (const char *file, uid_t owner, gid_t group) +__real_chown (const char *file, uid_t owner, gid_t group) { int result; @@ -56,13 +56,36 @@ __chown (const char *file, uid_t owner, gid_t group) return __lchown (file, owner, group); } -#else -/* compiling under older kernels */ +#endif + + +#if !defined __NR_lchown || \ + (defined HAVE_ELF && defined PIC && defined DO_VERSIONING) +/* compiling under older kernels or for compatibiity */ int -__chown (const char *file, uid_t owner, gid_t group) +__chown_is_lchown (const char *file, uid_t owner, gid_t group) { - return __syscall_chown (file, owner, group); + return __lchown (file, owner, group); } #endif -weak_alias (__chown, chown) +#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING +symbol_version (__chown_is_lchown, __chown, GLIBC_2.0) +symbol_version (__chown_is_lchown, chown, GLIBC_2.0) + +# ifdef __NR_lchown +default_symbol_version (__real_chown, __chown, GLIBC_2.1) +default_symbol_version (__real_chown, chown, GLIBC_2.1) +# else +default_symbol_version (__chown_is_lchown, __chown, GLIBC_2.1) +default_symbol_version (__chown_is_lchown, chown, GLIBC_2.1) +# endif +#else +# ifdef __NR_lchown +strong_alias (__real_chown, __chown) +weak_alias (__real_chown, chown) +# else +strong_alias (__chown_is_lchown, __chown) +weak_alias (__chown_is_lchown, chown) +# endif +#endif |