diff options
author | Ulrich Drepper <drepper@redhat.com> | 2006-04-24 17:01:40 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2006-04-24 17:01:40 +0000 |
commit | a346370d582ed9be5e434f955c049e75abc37c28 (patch) | |
tree | d3bf31f79d210adfa9b58a906afe65237b879ae1 /posix/bits | |
parent | 34a15e61e019c0aaa6b56c79b75ddb0ded49f590 (diff) | |
download | glibc-a346370d582ed9be5e434f955c049e75abc37c28.zip glibc-a346370d582ed9be5e434f955c049e75abc37c28.tar.gz glibc-a346370d582ed9be5e434f955c049e75abc37c28.tar.bz2 |
* posix/bits/unistd.h (__readlinkat_chk): New prototype.
(__readlinkat_alias): New alias.
(readlinkat): New inline function.
* include/unistd.h (readlinkat): Add libc_hidden_proto.
* sysdeps/unix/sysv/linux/readlinkat.c (readlinkat): Add
libc_hidden_def.
* io/readlinkat.c (readlinkat): Likewise.
* debug/readlinkat_chk.c: New file.
* debug/Makefile (routines): Add readlinkat_chk.
* debug/Versions (libc): Export __readlinkat_chk@@GLIBC_2.5.
* debug/tst-chk1.c (do_test): Add readlinkat tests.
* nis/nss_nisplus/nisplus-netgrp.c: Cleanups.
code is possible. Move compatibility code in .text.compat section.
over gaih array. There is only one function to call in the moment.
Diffstat (limited to 'posix/bits')
-rw-r--r-- | posix/bits/unistd.h | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/posix/bits/unistd.h b/posix/bits/unistd.h index d461108..96f26d5 100644 --- a/posix/bits/unistd.h +++ b/posix/bits/unistd.h @@ -100,6 +100,28 @@ __NTH (readlink (__const char *__restrict __path, char *__restrict __buf, } #endif +#ifdef __USE_ATFILE +extern ssize_t __readlinkat_chk (int __fd, __const char *__restrict __path, + char *__restrict __buf, size_t __len, + size_t __buflen) + __THROW __nonnull ((2, 3)) __wur; +extern ssize_t __REDIRECT_NTH (__readlinkat_alias, + (int __fd, __const char *__restrict __path, + char *__restrict __buf, size_t __len), + readlinkat) + __nonnull ((2, 3)) __wur; + +extern __always_inline __nonnull ((2, 3)) __wur ssize_t +__NTH (readlinkat (int __fd, __const char *__restrict __path, + char *__restrict __buf, size_t __len)) +{ + if (__bos (__buf) != (size_t) -1 + && (!__builtin_constant_p (__len) || __len > __bos (__buf))) + return __readlinkat_chk (__fd, __path, __buf, __len, __bos (__buf)); + return __readlinkat_alias (__fd, __path, __buf, __len); +} +#endif + extern char *__getcwd_chk (char *__buf, size_t __size, size_t __buflen) __THROW __wur; extern char *__REDIRECT_NTH (__getcwd_alias, |