1/* Checking macros for unistd functions.
2 Copyright (C) 2005-2024 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _UNISTD_H
20# error "Never include <bits/unistd.h> directly; use <unistd.h> instead."
21#endif
22
23# include <bits/unistd-decl.h>
24
25__fortify_function __wur ssize_t
26read (int __fd, void *__buf, size_t __nbytes)
27{
28 return __glibc_fortify (read, __nbytes, sizeof (char),
29 __glibc_objsize0 (__buf),
30 __fd, __buf, __nbytes);
31}
32
33#if defined __USE_UNIX98 || defined __USE_XOPEN2K8
34# ifndef __USE_FILE_OFFSET64
35__fortify_function __wur ssize_t
36pread (int __fd, void *__buf, size_t __nbytes, __off_t __offset)
37{
38 return __glibc_fortify (pread, __nbytes, sizeof (char),
39 __glibc_objsize0 (__buf),
40 __fd, __buf, __nbytes, __offset);
41}
42# else
43__fortify_function __wur ssize_t
44pread (int __fd, void *__buf, size_t __nbytes, __off64_t __offset)
45{
46 return __glibc_fortify (pread64, __nbytes, sizeof (char),
47 __glibc_objsize0 (__buf),
48 __fd, __buf, __nbytes, __offset);
49}
50# endif
51
52# ifdef __USE_LARGEFILE64
53__fortify_function __wur ssize_t
54pread64 (int __fd, void *__buf, size_t __nbytes, __off64_t __offset)
55{
56 return __glibc_fortify (pread64, __nbytes, sizeof (char),
57 __glibc_objsize0 (__buf),
58 __fd, __buf, __nbytes, __offset);
59}
60# endif
61#endif
62
63#if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K
64__fortify_function __nonnull ((1, 2)) __wur ssize_t
65__NTH (readlink (const char *__restrict __path, char *__restrict __buf,
66 size_t __len))
67{
68 return __glibc_fortify (readlink, __len, sizeof (char),
69 __glibc_objsize (__buf),
70 __path, __buf, __len);
71}
72#endif
73
74#ifdef __USE_ATFILE
75__fortify_function __nonnull ((2, 3)) __wur ssize_t
76__NTH (readlinkat (int __fd, const char *__restrict __path,
77 char *__restrict __buf, size_t __len))
78{
79 return __glibc_fortify (readlinkat, __len, sizeof (char),
80 __glibc_objsize (__buf),
81 __fd, __path, __buf, __len);
82}
83#endif
84
85__fortify_function __wur char *
86__NTH (getcwd (char *__buf, size_t __size))
87{
88 return __glibc_fortify (getcwd, __size, sizeof (char),
89 __glibc_objsize (__buf),
90 __buf, __size);
91}
92
93#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED
94__fortify_function __nonnull ((1)) __attribute_deprecated__ __wur char *
95__NTH (getwd (char *__buf))
96{
97 if (__glibc_objsize (__buf) != (size_t) -1)
98 return __getwd_chk (__buf, __glibc_objsize (__buf));
99 return __getwd_warn (__buf);
100}
101#endif
102
103__fortify_function size_t
104__NTH (confstr (int __name, char *__buf, size_t __len))
105{
106 return __glibc_fortify (confstr, __len, sizeof (char),
107 __glibc_objsize (__buf),
108 __name, __buf, __len);
109}
110
111
112__fortify_function int
113__NTH (getgroups (int __size, __gid_t __list[]))
114{
115 return __glibc_fortify (getgroups, __size, sizeof (__gid_t),
116 __glibc_objsize (__list),
117 __size, __list);
118}
119
120
121__fortify_function int
122__NTH (ttyname_r (int __fd, char *__buf, size_t __buflen))
123{
124 return __glibc_fortify (ttyname_r, __buflen, sizeof (char),
125 __glibc_objsize (__buf),
126 __fd, __buf, __buflen);
127}
128
129
130#ifdef __USE_POSIX199506
131__fortify_function int
132getlogin_r (char *__buf, size_t __buflen)
133{
134 return __glibc_fortify (getlogin_r, __buflen, sizeof (char),
135 __glibc_objsize (__buf),
136 __buf, __buflen);
137}
138#endif
139
140
141#if defined __USE_MISC || defined __USE_UNIX98
142__fortify_function int
143__NTH (gethostname (char *__buf, size_t __buflen))
144{
145 return __glibc_fortify (gethostname, __buflen, sizeof (char),
146 __glibc_objsize (__buf),
147 __buf, __buflen);
148}
149#endif
150
151
152#if defined __USE_MISC || (defined __USE_XOPEN && !defined __USE_UNIX98)
153__fortify_function int
154__NTH (getdomainname (char *__buf, size_t __buflen))
155{
156 return __glibc_fortify (getdomainname, __buflen, sizeof (char),
157 __glibc_objsize (__buf),
158 __buf, __buflen);
159}
160#endif
161

source code of glibc/posix/bits/unistd.h