Elliott Hughes | 21b56eb | 2017-10-20 17:57:17 -0700 | [diff] [blame] | 1 | /* |
| 2 | * Copyright (C) 2017 The Android Open Source Project |
| 3 | * All rights reserved. |
| 4 | * |
| 5 | * Redistribution and use in source and binary forms, with or without |
| 6 | * modification, are permitted provided that the following conditions |
| 7 | * are met: |
| 8 | * * Redistributions of source code must retain the above copyright |
| 9 | * notice, this list of conditions and the following disclaimer. |
| 10 | * * Redistributions in binary form must reproduce the above copyright |
| 11 | * notice, this list of conditions and the following disclaimer in |
| 12 | * the documentation and/or other materials provided with the |
| 13 | * distribution. |
| 14 | * |
| 15 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
| 16 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
| 17 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS |
| 18 | * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE |
| 19 | * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, |
| 20 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, |
| 21 | * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS |
| 22 | * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED |
| 23 | * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, |
| 24 | * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT |
| 25 | * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
| 26 | * SUCH DAMAGE. |
| 27 | */ |
| 28 | |
| 29 | #include <unistd.h> |
| 30 | |
| 31 | #include "header_checks.h" |
| 32 | |
| 33 | static void unistd_h() { |
| 34 | MACRO(_POSIX_VERSION); |
| 35 | MACRO(_POSIX2_VERSION); |
| 36 | MACRO(_XOPEN_VERSION); |
| 37 | |
| 38 | MACRO(_POSIX_ADVISORY_INFO); |
| 39 | MACRO(_POSIX_ASYNCHRONOUS_IO); |
| 40 | MACRO(_POSIX_BARRIERS); |
| 41 | MACRO(_POSIX_CHOWN_RESTRICTED); |
| 42 | MACRO(_POSIX_CLOCK_SELECTION); |
| 43 | MACRO(_POSIX_CPUTIME); |
| 44 | MACRO(_POSIX_FSYNC); |
| 45 | MACRO(_POSIX_IPV6); |
| 46 | MACRO(_POSIX_JOB_CONTROL); |
| 47 | MACRO(_POSIX_MAPPED_FILES); |
| 48 | MACRO(_POSIX_MEMLOCK); |
| 49 | MACRO(_POSIX_MEMLOCK_RANGE); |
| 50 | MACRO(_POSIX_MEMORY_PROTECTION); |
| 51 | MACRO(_POSIX_MESSAGE_PASSING); |
| 52 | MACRO(_POSIX_MONOTONIC_CLOCK); |
| 53 | MACRO(_POSIX_NO_TRUNC); |
Colin Cross | b6830ca | 2023-01-18 15:55:48 -0800 | [diff] [blame] | 54 | #if !defined(ANDROID_HOST_MUSL) |
Elliott Hughes | 21b56eb | 2017-10-20 17:57:17 -0700 | [diff] [blame] | 55 | MACRO(_POSIX_PRIORITIZED_IO); |
| 56 | MACRO(_POSIX_PRIORITY_SCHEDULING); |
Colin Cross | b6830ca | 2023-01-18 15:55:48 -0800 | [diff] [blame] | 57 | #endif |
Elliott Hughes | 21b56eb | 2017-10-20 17:57:17 -0700 | [diff] [blame] | 58 | MACRO(_POSIX_RAW_SOCKETS); |
| 59 | MACRO(_POSIX_READER_WRITER_LOCKS); |
| 60 | MACRO(_POSIX_REALTIME_SIGNALS); |
| 61 | MACRO(_POSIX_REGEXP); |
| 62 | MACRO(_POSIX_SAVED_IDS); |
| 63 | MACRO(_POSIX_SEMAPHORES); |
| 64 | MACRO(_POSIX_SHARED_MEMORY_OBJECTS); |
| 65 | MACRO(_POSIX_SHELL); |
| 66 | MACRO(_POSIX_SPAWN); |
| 67 | MACRO(_POSIX_SPIN_LOCKS); |
Colin Cross | b6830ca | 2023-01-18 15:55:48 -0800 | [diff] [blame] | 68 | #if !defined(ANDROID_HOST_MUSL) |
Elliott Hughes | 21b56eb | 2017-10-20 17:57:17 -0700 | [diff] [blame] | 69 | MACRO(_POSIX_SPORADIC_SERVER); |
| 70 | MACRO(_POSIX_SYNCHRONIZED_IO); |
Colin Cross | b6830ca | 2023-01-18 15:55:48 -0800 | [diff] [blame] | 71 | #endif |
Elliott Hughes | 21b56eb | 2017-10-20 17:57:17 -0700 | [diff] [blame] | 72 | MACRO(_POSIX_THREAD_ATTR_STACKADDR); |
| 73 | MACRO(_POSIX_THREAD_ATTR_STACKSIZE); |
| 74 | MACRO(_POSIX_THREAD_CPUTIME); |
Colin Cross | b6830ca | 2023-01-18 15:55:48 -0800 | [diff] [blame] | 75 | #if !defined(ANDROID_HOST_MUSL) |
Elliott Hughes | 21b56eb | 2017-10-20 17:57:17 -0700 | [diff] [blame] | 76 | MACRO(_POSIX_THREAD_PRIO_INHERIT); |
| 77 | MACRO(_POSIX_THREAD_PRIO_PROTECT); |
Colin Cross | b6830ca | 2023-01-18 15:55:48 -0800 | [diff] [blame] | 78 | #endif |
Elliott Hughes | 21b56eb | 2017-10-20 17:57:17 -0700 | [diff] [blame] | 79 | MACRO(_POSIX_THREAD_PRIORITY_SCHEDULING); |
| 80 | MACRO(_POSIX_THREAD_PROCESS_SHARED); |
Colin Cross | b6830ca | 2023-01-18 15:55:48 -0800 | [diff] [blame] | 81 | #if !defined(ANDROID_HOST_MUSL) |
Elliott Hughes | 21b56eb | 2017-10-20 17:57:17 -0700 | [diff] [blame] | 82 | MACRO(_POSIX_THREAD_ROBUST_PRIO_INHERIT); |
| 83 | MACRO(_POSIX_THREAD_ROBUST_PRIO_PROTECT); |
Colin Cross | b6830ca | 2023-01-18 15:55:48 -0800 | [diff] [blame] | 84 | #endif |
Elliott Hughes | 21b56eb | 2017-10-20 17:57:17 -0700 | [diff] [blame] | 85 | MACRO(_POSIX_THREAD_SAFE_FUNCTIONS); |
Colin Cross | b6830ca | 2023-01-18 15:55:48 -0800 | [diff] [blame] | 86 | #if !defined(ANDROID_HOST_MUSL) |
Elliott Hughes | 21b56eb | 2017-10-20 17:57:17 -0700 | [diff] [blame] | 87 | MACRO(_POSIX_THREAD_SPORADIC_SERVER); |
Colin Cross | b6830ca | 2023-01-18 15:55:48 -0800 | [diff] [blame] | 88 | #endif |
Elliott Hughes | 21b56eb | 2017-10-20 17:57:17 -0700 | [diff] [blame] | 89 | MACRO(_POSIX_THREADS); |
| 90 | MACRO(_POSIX_TIMEOUTS); |
| 91 | MACRO(_POSIX_TIMERS); |
Colin Cross | b6830ca | 2023-01-18 15:55:48 -0800 | [diff] [blame] | 92 | #if !defined(ANDROID_HOST_MUSL) |
Elliott Hughes | 21b56eb | 2017-10-20 17:57:17 -0700 | [diff] [blame] | 93 | MACRO(_POSIX_TYPED_MEMORY_OBJECTS); |
Colin Cross | b6830ca | 2023-01-18 15:55:48 -0800 | [diff] [blame] | 94 | #endif |
Elliott Hughes | 21b56eb | 2017-10-20 17:57:17 -0700 | [diff] [blame] | 95 | MACRO(_POSIX2_C_BIND); |
Colin Cross | b6830ca | 2023-01-18 15:55:48 -0800 | [diff] [blame] | 96 | #if !defined(ANDROID_HOST_MUSL) |
Elliott Hughes | 21b56eb | 2017-10-20 17:57:17 -0700 | [diff] [blame] | 97 | MACRO(_POSIX2_CHAR_TERM); |
| 98 | MACRO(_POSIX2_LOCALEDEF); |
| 99 | MACRO(_POSIX2_SW_DEV); |
Colin Cross | b6830ca | 2023-01-18 15:55:48 -0800 | [diff] [blame] | 100 | #endif |
Elliott Hughes | 21b56eb | 2017-10-20 17:57:17 -0700 | [diff] [blame] | 101 | #if 0 // No libc I can find actually has this. |
| 102 | MACRO(_POSIX2_UPE); |
| 103 | #endif |
Colin Cross | b6830ca | 2023-01-18 15:55:48 -0800 | [diff] [blame] | 104 | #if !defined(ANDROID_HOST_MUSL) |
Elliott Hughes | 21b56eb | 2017-10-20 17:57:17 -0700 | [diff] [blame] | 105 | MACRO(_XOPEN_CRYPT); |
Colin Cross | b6830ca | 2023-01-18 15:55:48 -0800 | [diff] [blame] | 106 | #endif |
Elliott Hughes | 21b56eb | 2017-10-20 17:57:17 -0700 | [diff] [blame] | 107 | MACRO(_XOPEN_ENH_I18N); |
Colin Cross | b6830ca | 2023-01-18 15:55:48 -0800 | [diff] [blame] | 108 | #if !defined(ANDROID_HOST_MUSL) |
Elliott Hughes | 21b56eb | 2017-10-20 17:57:17 -0700 | [diff] [blame] | 109 | MACRO(_XOPEN_REALTIME); |
| 110 | MACRO(_XOPEN_REALTIME_THREADS); |
| 111 | MACRO(_XOPEN_SHM); |
Colin Cross | b6830ca | 2023-01-18 15:55:48 -0800 | [diff] [blame] | 112 | #endif |
Elliott Hughes | 21b56eb | 2017-10-20 17:57:17 -0700 | [diff] [blame] | 113 | MACRO(_XOPEN_UNIX); |
| 114 | #if defined(_XOPEN_UUCP) |
| 115 | #if _XOPEN_UUCP != -1 && _XOPEN_UUCP != 0 && _XOPEN_UUCP != 200809L |
| 116 | #error _XOPEN_UUCP |
| 117 | #endif |
| 118 | #endif |
| 119 | |
| 120 | MACRO(NULL); |
| 121 | |
| 122 | MACRO(F_OK); |
| 123 | MACRO(R_OK); |
| 124 | MACRO(W_OK); |
| 125 | MACRO(X_OK); |
| 126 | |
| 127 | #if !defined(__BIONIC__) // No confstr on Android. |
| 128 | MACRO(_CS_PATH); |
| 129 | MACRO(_CS_POSIX_V7_ILP32_OFF32_CFLAGS); |
| 130 | MACRO(_CS_POSIX_V7_ILP32_OFF32_LDFLAGS); |
| 131 | MACRO(_CS_POSIX_V7_ILP32_OFF32_LIBS); |
| 132 | MACRO(_CS_POSIX_V7_ILP32_OFFBIG_CFLAGS); |
| 133 | MACRO(_CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS); |
| 134 | MACRO(_CS_POSIX_V7_ILP32_OFFBIG_LIBS); |
| 135 | MACRO(_CS_POSIX_V7_LP64_OFF64_CFLAGS); |
| 136 | MACRO(_CS_POSIX_V7_LP64_OFF64_LDFLAGS); |
| 137 | MACRO(_CS_POSIX_V7_LP64_OFF64_LIBS); |
| 138 | MACRO(_CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS); |
| 139 | MACRO(_CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS); |
| 140 | MACRO(_CS_POSIX_V7_LPBIG_OFFBIG_LIBS); |
| 141 | MACRO(_CS_POSIX_V7_WIDTH_RESTRICTED_ENVS); |
| 142 | MACRO(_CS_V7_ENV); |
| 143 | #endif |
| 144 | |
| 145 | MACRO(SEEK_CUR); |
| 146 | MACRO(SEEK_END); |
| 147 | MACRO(SEEK_SET); |
| 148 | |
| 149 | MACRO(F_LOCK); |
| 150 | MACRO(F_TEST); |
| 151 | MACRO(F_TLOCK); |
| 152 | MACRO(F_ULOCK); |
| 153 | |
| 154 | MACRO(_PC_2_SYMLINKS); |
| 155 | MACRO(_PC_ALLOC_SIZE_MIN); |
| 156 | MACRO(_PC_ASYNC_IO); |
| 157 | MACRO(_PC_CHOWN_RESTRICTED); |
| 158 | MACRO(_PC_FILESIZEBITS); |
| 159 | MACRO(_PC_LINK_MAX); |
| 160 | MACRO(_PC_MAX_CANON); |
| 161 | MACRO(_PC_MAX_INPUT); |
| 162 | MACRO(_PC_NAME_MAX); |
| 163 | MACRO(_PC_NO_TRUNC); |
| 164 | MACRO(_PC_PATH_MAX); |
| 165 | MACRO(_PC_PIPE_BUF); |
| 166 | MACRO(_PC_PRIO_IO); |
| 167 | MACRO(_PC_REC_INCR_XFER_SIZE); |
| 168 | MACRO(_PC_REC_MAX_XFER_SIZE); |
| 169 | MACRO(_PC_REC_MIN_XFER_SIZE); |
| 170 | MACRO(_PC_REC_XFER_ALIGN); |
| 171 | MACRO(_PC_SYMLINK_MAX); |
| 172 | MACRO(_PC_SYNC_IO); |
| 173 | #if 0 // No libc I can find actually has this. |
| 174 | MACRO(_PC_TIMESTAMP_RESOLUTION); |
| 175 | #endif |
| 176 | MACRO(_PC_VDISABLE); |
| 177 | |
| 178 | MACRO(_SC_2_C_BIND); |
| 179 | MACRO(_SC_2_C_DEV); |
| 180 | MACRO(_SC_2_CHAR_TERM); |
| 181 | MACRO(_SC_2_FORT_DEV); |
| 182 | MACRO(_SC_2_FORT_RUN); |
| 183 | MACRO(_SC_2_LOCALEDEF); |
| 184 | MACRO(_SC_2_SW_DEV); |
| 185 | MACRO(_SC_2_UPE); |
| 186 | MACRO(_SC_2_VERSION); |
| 187 | MACRO(_SC_ADVISORY_INFO); |
| 188 | MACRO(_SC_AIO_LISTIO_MAX); |
| 189 | MACRO(_SC_AIO_MAX); |
| 190 | MACRO(_SC_AIO_PRIO_DELTA_MAX); |
| 191 | MACRO(_SC_ARG_MAX); |
| 192 | MACRO(_SC_ASYNCHRONOUS_IO); |
| 193 | MACRO(_SC_ATEXIT_MAX); |
| 194 | MACRO(_SC_BARRIERS); |
| 195 | MACRO(_SC_BC_BASE_MAX); |
| 196 | MACRO(_SC_BC_DIM_MAX); |
| 197 | MACRO(_SC_BC_SCALE_MAX); |
| 198 | MACRO(_SC_BC_STRING_MAX); |
| 199 | MACRO(_SC_CHILD_MAX); |
| 200 | MACRO(_SC_CLK_TCK); |
| 201 | MACRO(_SC_CLOCK_SELECTION); |
| 202 | MACRO(_SC_COLL_WEIGHTS_MAX); |
| 203 | MACRO(_SC_CPUTIME); |
| 204 | MACRO(_SC_DELAYTIMER_MAX); |
| 205 | MACRO(_SC_EXPR_NEST_MAX); |
| 206 | MACRO(_SC_FSYNC); |
| 207 | MACRO(_SC_GETGR_R_SIZE_MAX); |
| 208 | MACRO(_SC_GETPW_R_SIZE_MAX); |
| 209 | MACRO(_SC_HOST_NAME_MAX); |
| 210 | MACRO(_SC_IOV_MAX); |
| 211 | MACRO(_SC_IPV6); |
| 212 | MACRO(_SC_JOB_CONTROL); |
| 213 | MACRO(_SC_LINE_MAX); |
| 214 | MACRO(_SC_LOGIN_NAME_MAX); |
| 215 | MACRO(_SC_MAPPED_FILES); |
| 216 | MACRO(_SC_MEMLOCK); |
| 217 | MACRO(_SC_MEMLOCK_RANGE); |
| 218 | MACRO(_SC_MEMORY_PROTECTION); |
| 219 | MACRO(_SC_MESSAGE_PASSING); |
| 220 | MACRO(_SC_MONOTONIC_CLOCK); |
| 221 | MACRO(_SC_MQ_OPEN_MAX); |
| 222 | MACRO(_SC_MQ_PRIO_MAX); |
| 223 | MACRO(_SC_NGROUPS_MAX); |
| 224 | MACRO(_SC_OPEN_MAX); |
| 225 | MACRO(_SC_PAGE_SIZE); |
| 226 | MACRO(_SC_PAGESIZE); |
| 227 | MACRO(_SC_PRIORITIZED_IO); |
| 228 | MACRO(_SC_PRIORITY_SCHEDULING); |
| 229 | MACRO(_SC_RAW_SOCKETS); |
| 230 | MACRO(_SC_RE_DUP_MAX); |
| 231 | MACRO(_SC_READER_WRITER_LOCKS); |
| 232 | MACRO(_SC_REALTIME_SIGNALS); |
| 233 | MACRO(_SC_REGEXP); |
| 234 | MACRO(_SC_RTSIG_MAX); |
| 235 | MACRO(_SC_SAVED_IDS); |
| 236 | MACRO(_SC_SEM_NSEMS_MAX); |
| 237 | MACRO(_SC_SEM_VALUE_MAX); |
| 238 | MACRO(_SC_SEMAPHORES); |
| 239 | MACRO(_SC_SHARED_MEMORY_OBJECTS); |
| 240 | MACRO(_SC_SHELL); |
| 241 | MACRO(_SC_SIGQUEUE_MAX); |
| 242 | MACRO(_SC_SPAWN); |
| 243 | MACRO(_SC_SPIN_LOCKS); |
| 244 | MACRO(_SC_SPORADIC_SERVER); |
| 245 | MACRO(_SC_SS_REPL_MAX); |
| 246 | MACRO(_SC_STREAM_MAX); |
| 247 | MACRO(_SC_SYMLOOP_MAX); |
| 248 | MACRO(_SC_SYNCHRONIZED_IO); |
| 249 | MACRO(_SC_THREAD_ATTR_STACKADDR); |
| 250 | MACRO(_SC_THREAD_ATTR_STACKSIZE); |
| 251 | MACRO(_SC_THREAD_CPUTIME); |
| 252 | MACRO(_SC_THREAD_DESTRUCTOR_ITERATIONS); |
| 253 | MACRO(_SC_THREAD_KEYS_MAX); |
| 254 | MACRO(_SC_THREAD_PRIO_INHERIT); |
| 255 | MACRO(_SC_THREAD_PRIO_PROTECT); |
| 256 | MACRO(_SC_THREAD_PRIORITY_SCHEDULING); |
| 257 | MACRO(_SC_THREAD_PROCESS_SHARED); |
| 258 | MACRO(_SC_THREAD_ROBUST_PRIO_INHERIT); |
| 259 | MACRO(_SC_THREAD_ROBUST_PRIO_PROTECT); |
| 260 | MACRO(_SC_THREAD_SAFE_FUNCTIONS); |
| 261 | MACRO(_SC_THREAD_SPORADIC_SERVER); |
| 262 | MACRO(_SC_THREAD_STACK_MIN); |
| 263 | MACRO(_SC_THREAD_THREADS_MAX); |
| 264 | MACRO(_SC_THREADS); |
| 265 | MACRO(_SC_TIMEOUTS); |
| 266 | MACRO(_SC_TIMER_MAX); |
| 267 | MACRO(_SC_TIMERS); |
| 268 | MACRO(_SC_TRACE); |
| 269 | MACRO(_SC_TRACE_EVENT_FILTER); |
| 270 | MACRO(_SC_TRACE_EVENT_NAME_MAX); |
| 271 | MACRO(_SC_TRACE_INHERIT); |
| 272 | MACRO(_SC_TRACE_LOG); |
| 273 | MACRO(_SC_TRACE_NAME_MAX); |
| 274 | MACRO(_SC_TRACE_SYS_MAX); |
| 275 | MACRO(_SC_TRACE_USER_EVENT_MAX); |
| 276 | MACRO(_SC_TYPED_MEMORY_OBJECTS); |
| 277 | MACRO(_SC_TZNAME_MAX); |
| 278 | MACRO(_SC_V7_ILP32_OFF32); |
| 279 | MACRO(_SC_VERSION); |
| 280 | MACRO(_SC_XOPEN_CRYPT); |
| 281 | MACRO(_SC_XOPEN_ENH_I18N); |
| 282 | MACRO(_SC_XOPEN_REALTIME); |
| 283 | MACRO(_SC_XOPEN_REALTIME_THREADS); |
| 284 | MACRO(_SC_XOPEN_SHM); |
| 285 | MACRO(_SC_XOPEN_STREAMS); |
| 286 | MACRO(_SC_XOPEN_UNIX); |
| 287 | #if 0 // No libc I can find actually has this. |
| 288 | MACRO(_SC_XOPEN_UUCP); |
| 289 | #endif |
| 290 | MACRO(_SC_XOPEN_VERSION); |
| 291 | |
| 292 | MACRO_VALUE(STDERR_FILENO, 2); |
| 293 | MACRO_VALUE(STDIN_FILENO, 0); |
| 294 | MACRO_VALUE(STDOUT_FILENO, 1); |
| 295 | |
| 296 | MACRO(_POSIX_VDISABLE); |
| 297 | |
| 298 | TYPE(size_t); |
| 299 | TYPE(ssize_t); |
| 300 | TYPE(uid_t); |
| 301 | TYPE(gid_t); |
| 302 | TYPE(off_t); |
| 303 | TYPE(pid_t); |
| 304 | TYPE(intptr_t); |
| 305 | |
| 306 | FUNCTION(access, int (*f)(const char*, int)); |
| 307 | FUNCTION(alarm, unsigned (*f)(unsigned)); |
| 308 | FUNCTION(chdir, int (*f)(const char*)); |
| 309 | FUNCTION(chown, int (*f)(const char*, uid_t, gid_t)); |
| 310 | FUNCTION(close, int (*f)(int)); |
| 311 | #if !defined(__BIONIC__) |
| 312 | FUNCTION(confstr, size_t (*f)(int, char*, size_t)); |
| 313 | FUNCTION(crypt, char* (*f)(const char*, const char*)); |
| 314 | #endif |
| 315 | FUNCTION(dup, int (*f)(int)); |
| 316 | FUNCTION(dup2, int (*f)(int, int)); |
| 317 | FUNCTION(_exit, void (*f)(int)); |
| 318 | #if !defined(__BIONIC__) |
| 319 | FUNCTION(encrypt, void (*f)(char[64], int)); |
| 320 | #endif |
| 321 | FUNCTION(execl, int (*f)(const char*, const char*, ...)); |
| 322 | FUNCTION(execle, int (*f)(const char*, const char*, ...)); |
| 323 | FUNCTION(execlp, int (*f)(const char*, const char*, ...)); |
| 324 | FUNCTION(execv, int (*f)(const char*, char* const[])); |
| 325 | FUNCTION(execve, int (*f)(const char*, char* const[], char* const[])); |
| 326 | FUNCTION(execvp, int (*f)(const char*, char* const[])); |
| 327 | FUNCTION(faccessat, int (*f)(int, const char*, int, int)); |
| 328 | FUNCTION(fchdir, int (*f)(int)); |
| 329 | FUNCTION(fchown, int (*f)(int, uid_t, gid_t)); |
| 330 | FUNCTION(fchownat, int (*f)(int, const char*, uid_t, gid_t, int)); |
| 331 | FUNCTION(fdatasync, int (*f)(int)); |
| 332 | FUNCTION(fexecve, int (*f)(int, char* const[], char* const[])); |
| 333 | FUNCTION(fork, pid_t (*f)(void)); |
| 334 | FUNCTION(fpathconf, long (*f)(int, int)); |
| 335 | FUNCTION(fsync, int (*f)(int)); |
| 336 | FUNCTION(ftruncate, int (*f)(int, off_t)); |
| 337 | FUNCTION(getcwd, char* (*f)(char*, size_t)); |
| 338 | FUNCTION(getegid, gid_t (*f)(void)); |
| 339 | FUNCTION(geteuid, uid_t (*f)(void)); |
| 340 | FUNCTION(getgid, gid_t (*f)(void)); |
| 341 | FUNCTION(getgroups, int (*f)(int, gid_t[])); |
| 342 | #if !defined(__BIONIC__) |
| 343 | FUNCTION(gethostid, long (*f)(void)); |
| 344 | #endif |
| 345 | FUNCTION(gethostname, int (*f)(char*, size_t)); |
| 346 | FUNCTION(getlogin, char* (*f)(void)); |
| 347 | FUNCTION(getlogin_r, int (*f)(char*, size_t)); |
| 348 | FUNCTION(getopt, int (*f)(int, char* const[], const char*)); |
| 349 | FUNCTION(getpgid, pid_t (*f)(pid_t)); |
| 350 | FUNCTION(getpgrp, pid_t (*f)(void)); |
| 351 | FUNCTION(getpid, pid_t (*f)(void)); |
| 352 | FUNCTION(getppid, pid_t (*f)(void)); |
| 353 | FUNCTION(getsid, pid_t (*f)(pid_t)); |
| 354 | FUNCTION(getuid, uid_t (*f)(void)); |
| 355 | FUNCTION(isatty, int (*f)(int)); |
| 356 | FUNCTION(lchown, int (*f)(const char*, uid_t, gid_t)); |
| 357 | FUNCTION(link, int (*f)(const char*, const char*)); |
| 358 | FUNCTION(linkat, int (*f)(int, const char*, int, const char*, int)); |
| 359 | FUNCTION(lockf, int (*f)(int, int, off_t)); |
| 360 | FUNCTION(lseek, off_t (*f)(int, off_t, int)); |
| 361 | FUNCTION(nice, int (*f)(int)); |
| 362 | FUNCTION(pathconf, long (*f)(const char*, int)); |
| 363 | FUNCTION(pause, int (*f)(void)); |
| 364 | FUNCTION(pipe, int (*f)(int[2])); |
| 365 | FUNCTION(pread, ssize_t (*f)(int, void*, size_t, off_t)); |
| 366 | FUNCTION(pwrite, ssize_t (*f)(int, const void*, size_t, off_t)); |
| 367 | FUNCTION(read, ssize_t (*f)(int, void*, size_t)); |
| 368 | FUNCTION(readlink, ssize_t (*f)(const char*, char*, size_t)); |
| 369 | FUNCTION(readlinkat, ssize_t (*f)(int, const char*, char*, size_t)); |
| 370 | FUNCTION(rmdir, int (*f)(const char*)); |
| 371 | FUNCTION(setegid, int (*f)(gid_t)); |
| 372 | FUNCTION(seteuid, int (*f)(uid_t)); |
| 373 | FUNCTION(setgid, int (*f)(gid_t)); |
| 374 | FUNCTION(setpgid, int (*f)(pid_t, pid_t)); |
| 375 | FUNCTION(setpgrp, pid_t (*f)(void)); |
| 376 | FUNCTION(setregid, int (*f)(gid_t, gid_t)); |
| 377 | FUNCTION(setreuid, int (*f)(uid_t, uid_t)); |
| 378 | FUNCTION(setsid, pid_t (*f)(void)); |
| 379 | FUNCTION(setuid, int (*f)(uid_t)); |
| 380 | FUNCTION(sleep, unsigned (*f)(unsigned)); |
| 381 | FUNCTION(swab, void (*f)(const void*, void*, ssize_t)); |
| 382 | FUNCTION(symlink, int (*f)(const char*, const char*)); |
| 383 | FUNCTION(symlinkat, int (*f)(const char*, int, const char*)); |
| 384 | FUNCTION(sync, void (*f)(void)); |
| 385 | FUNCTION(sysconf, long (*f)(int)); |
| 386 | FUNCTION(tcgetpgrp, pid_t (*f)(int)); |
| 387 | FUNCTION(tcsetpgrp, int (*f)(int, pid_t)); |
| 388 | FUNCTION(truncate, int (*f)(const char*, off_t)); |
| 389 | FUNCTION(ttyname, char* (*f)(int)); |
| 390 | FUNCTION(ttyname_r, int (*f)(int, char*, size_t)); |
| 391 | FUNCTION(unlink, int (*f)(const char*)); |
| 392 | FUNCTION(unlinkat, int (*f)(int, const char*, int)); |
| 393 | FUNCTION(write, ssize_t (*f)(int, const void*, size_t)); |
| 394 | |
| 395 | char* cp; |
| 396 | cp = optarg; |
| 397 | int i; |
| 398 | i = opterr; |
| 399 | i = optind; |
| 400 | i = optopt; |
| 401 | } |