1*c61d16ddScgd/* $NetBSD: llib-lposix,v 1.2 1995/07/03 21:25:09 cgd Exp $ */ 2*c61d16ddScgd 3b14be51dScgd/* 4b14be51dScgd * Copyright (c) 1994, 1995 Jochen Pohl 5b14be51dScgd * All Rights Reserved. 6b14be51dScgd * 7b14be51dScgd * Redistribution and use in source and binary forms, with or without 8b14be51dScgd * modification, are permitted provided that the following conditions 9b14be51dScgd * are met: 10b14be51dScgd * 1. Redistributions of source code must retain the above copyright 11b14be51dScgd * notice, this list of conditions and the following disclaimer. 12b14be51dScgd * 2. Redistributions in binary form must reproduce the above copyright 13b14be51dScgd * notice, this list of conditions and the following disclaimer in the 14b14be51dScgd * documentation and/or other materials provided with the distribution. 15b14be51dScgd * 3. All advertising materials mentioning features or use of this software 16b14be51dScgd * must display the following acknowledgement: 17b14be51dScgd * This product includes software developed by Jochen Pohl for 18b14be51dScgd * The NetBSD Project. 19b14be51dScgd * 4. The name of the author may not be used to endorse or promote products 20b14be51dScgd * derived from this software without specific prior written permission. 21b14be51dScgd * 22b14be51dScgd * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 23b14be51dScgd * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 24b14be51dScgd * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 25b14be51dScgd * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 26b14be51dScgd * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 27b14be51dScgd * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 28b14be51dScgd * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 29b14be51dScgd * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 30b14be51dScgd * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 31b14be51dScgd * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32b14be51dScgd */ 33b14be51dScgd 34b14be51dScgd/* LINTLIBRARY */ 35b14be51dScgd 36b14be51dScgd#define _POSIX_SOURCE 37b14be51dScgd 38b14be51dScgd#include <sys/types.h> 39b14be51dScgd#include <sys/stat.h> 40b14be51dScgd#include <sys/utsname.h> 41b14be51dScgd#include <sys/times.h> 42b14be51dScgd#include <stdio.h> 43b14be51dScgd#include <stdarg.h> 44b14be51dScgd#include <stdlib.h> 45b14be51dScgd#include <unistd.h> 46b14be51dScgd#include <math.h> 47b14be51dScgd#include <time.h> 48b14be51dScgd#include <assert.h> 49b14be51dScgd#include <termios.h> 50b14be51dScgd#include <dirent.h> 51b14be51dScgd#include <fcntl.h> 52b14be51dScgd#include <grp.h> 53b14be51dScgd#include <pwd.h> 54b14be51dScgd#include <ctype.h> 55b14be51dScgd#include <signal.h> 56b14be51dScgd#include <locale.h> 57b14be51dScgd#include <setjmp.h> 58b14be51dScgd#include <string.h> 59b14be51dScgd#include <utime.h> 60b14be51dScgd 61b14be51dScgd 62b14be51dScgd/* PROTOLIB1 */ 63b14be51dScgd 64b14be51dScgd 65b14be51dScgdvoid (abort)(void); 66b14be51dScgdint (abs)(int j); 67b14be51dScgdint (access)(const char *path, int amode); 68b14be51dScgddouble (acos)(double x); 69b14be51dScgdunsigned (alarm)(unsigned seconds); 70b14be51dScgdchar *(asctime)(const struct tm *timeptr); 71b14be51dScgddouble (asin)(double x); 72b14be51dScgdvoid (__assert)(const char *expression, int line, const char *file); 73b14be51dScgddouble (atan)(double x); 74b14be51dScgddouble (atan2)(double y, double x); 75b14be51dScgdint (atexit)(void (*func)(void)); 76b14be51dScgddouble (atof)(const char *nptr); 77b14be51dScgdint (atoi)(const char *nptr); 78b14be51dScgdlong (atol)(const char *nptr); 79b14be51dScgdvoid *(bsearch)(const void *key, const void *base, size_t nmemb, 80b14be51dScgd size_t size, int (*compar)(const void *, const void *)); 81b14be51dScgdvoid *(calloc)(size_t nmemb, size_t size); 82b14be51dScgddouble (ceil)(double x); 83b14be51dScgdspeed_t (cfgetispeed)(const struct termios *p); 84b14be51dScgdspeed_t (cfgetospeed)(const struct termios *p); 85b14be51dScgdint (cfsetispeed)(struct termios *p, speed_t speed); 86b14be51dScgdint (cfsetospeed)(struct termios *p, speed_t speed); 87b14be51dScgdint (chdir)(const char *path); 88b14be51dScgdint (chmod)(const char *path, mode_t mode); 89b14be51dScgdint (chown)(const char *path, uid_t owner, gid_t group); 90b14be51dScgdvoid (clearerr)(FILE *stream); 91b14be51dScgdclock_t (clock)(void); 92b14be51dScgdint (close)(int fildes); 93b14be51dScgdint (closedir)(DIR *dirp); 94b14be51dScgddouble (cos)(double x); 95b14be51dScgddouble (cosh)(double x); 96b14be51dScgdint (creat)(const char *path, mode_t mode); 97b14be51dScgdchar *(ctermid)(char *s); 98b14be51dScgdchar *(ctime)(const time_t *timer); 99b14be51dScgdchar *(cuserid)(char *s); 100b14be51dScgddouble (difftime)(time_t time1, time_t time0); 101b14be51dScgddiv_t (div)(int numer, int denom); 102b14be51dScgdint (dup)(int fildes); 103b14be51dScgdint (dup2)(int fildes, int fildes2); 104b14be51dScgdint (errno); 105b14be51dScgdint (execl)(const char *path, const char *arg, ...); 106b14be51dScgdint (execle)(const char *path, const char *arg, ...); 107b14be51dScgdint (execlp)(const char *file, const char *arg, ...); 108b14be51dScgdint (execv)(const char *path, char *const argv[]); 109b14be51dScgdint (execve)(const char *path, char *const argv[], char *const *envp); 110b14be51dScgdint (execvp)(const char *file, char *const argv[]); 111b14be51dScgdvoid (exit)(int status); 112b14be51dScgdvoid (_exit)(int status); 113b14be51dScgddouble (exp)(double x); 114b14be51dScgddouble (fabs)(double x); 115b14be51dScgdint (fclose)(FILE *stream); 116b14be51dScgdint (fcntl)(int fildes, int cmd, ...); 117b14be51dScgdFILE *(fdopen)(int fildes, const char *type); 118b14be51dScgdint (feof)(FILE *stream); 119b14be51dScgdint (ferror)(FILE *stream); 120b14be51dScgdint (fflush)(FILE *stream); 121b14be51dScgdint (fgetc)(FILE *stream); 122b14be51dScgdint (fgetpos)(FILE *stream, fpos_t *pos); 123b14be51dScgdchar *(fgets)(char *s, int n, FILE *stream); 124b14be51dScgdint (fileno)(FILE *stream); 125b14be51dScgddouble (floor)(double x); 126b14be51dScgddouble (fmod)(double x, double y); 127b14be51dScgdFILE *(fopen)(const char *filename, const char *mode); 128b14be51dScgdpid_t (fork)(void); 129b14be51dScgdlong (fpathconf)(int fildes, int name); 130b14be51dScgd/* PRINTFLIKE2 */ 131b14be51dScgdint (fprintf)(FILE *stream, const char *format, ...); 132b14be51dScgdint (fputc)(int c, FILE *stream); 133b14be51dScgdint (fputs)(const char *s, FILE *stream); 134b14be51dScgdsize_t (fread)(void *ptr, size_t size, size_t nmemb, FILE *stream); 135b14be51dScgdvoid (free)(void *ptr); 136b14be51dScgdFILE *(freopen)(const char *filename, const char *mode, FILE *stream); 137b14be51dScgddouble (frepx)(double value, int *exp); 138b14be51dScgd/* SCANFLIKE2 */ 139b14be51dScgdint (fscanf)(FILE *stream, const char *format, ...); 140b14be51dScgdint (fseek)(FILE *stream, long int offset, int whence); 141b14be51dScgdint (fsetpos)(FILE *stream, const fpos_t *pos); 142b14be51dScgdint (fstat)(int fildes, struct stat *buf); 143b14be51dScgdlong (ftell)(FILE *stream); 144b14be51dScgdsize_t (fwrite)(const void *ptr, size_t size, size_t nmemb, FILE *stream); 145b14be51dScgdint (getc)(FILE *stream); 146b14be51dScgdint (getchar)(void); 147b14be51dScgdchar *(getcwd)(char *buf, size_t size); 148b14be51dScgdgid_t (getegid)(void); 149b14be51dScgdchar *(getenv)(const char *name); 150b14be51dScgduid_t (geteuid)(void); 151b14be51dScgdgid_t (getgid)(void); 152b14be51dScgdstruct group *(getgrgid)(gid_t gid); 153b14be51dScgdstruct group *(getgrnam)(const char *name); 154b14be51dScgdint (getgroups)(int gidsetsize, gid_t grouplist[]); 155b14be51dScgdchar *(getlogin)(void); 156b14be51dScgdpid_t (getpgrp)(void); 157b14be51dScgdpid_t (getpid)(void); 158b14be51dScgdpid_t (getppid)(void); 159b14be51dScgdstruct passwd *(getpwnam)(const char *name); 160b14be51dScgdstruct passwd *(getpwuid)(uid_t uid); 161b14be51dScgdchar *(gets)(char *s); 162b14be51dScgduid_t (getuid)(void); 163b14be51dScgdstruct tm *(gmtime)(const time_t *timer); 164b14be51dScgdint (isalnum)(int c); 165b14be51dScgdint (isalpha)(int c); 166b14be51dScgdint (isatty)(int fildes); 167b14be51dScgdint (iscntrl)(int c); 168b14be51dScgdint (isdigit)(int c); 169b14be51dScgdint (isgraph)(int c); 170b14be51dScgdint (islower)(int c); 171b14be51dScgdint (isprint)(int c); 172b14be51dScgdint (ispunct)(int c); 173b14be51dScgdint (isspace)(int c); 174b14be51dScgdint (isupper)(int c); 175b14be51dScgdint (isxdigit)(int c); 176b14be51dScgdint (kill)(pid_t pid, int sig); 177b14be51dScgdlong (labs)(long j); 178b14be51dScgddouble (ldexp)(double x, int exp); 179b14be51dScgdldiv_t (ldiv)(long numer, long denom); 180b14be51dScgdint (link)(const char *existing, const char *new); 181b14be51dScgdstruct lconv *(localeconv)(void); 182b14be51dScgdstruct tm *(localtime)(const time_t *timer); 183b14be51dScgddouble (log)(double x); 184b14be51dScgddouble (log10)(double x); 185b14be51dScgdvoid (longjmp)(jmp_buf env, int val); 186b14be51dScgdoff_t (lseek)(int fildes, off_t offset, int whence); 187b14be51dScgdvoid *(malloc)(size_t size); 188b14be51dScgdint (mblen)(const char *s, size_t n); 189b14be51dScgdsize_t (mbstowcs)(wchar_t *pwcs, const char *s, size_t n); 190b14be51dScgdint (mbtowc)(wchar_t *pwc, const char *s, size_t n); 191b14be51dScgdvoid *(memchr)(const void *s, int c, size_t n); 192b14be51dScgdint (memcmp)(const void *s1, const void *s2, size_t n); 193b14be51dScgdvoid *(memcpy)(void *s1, const void *s2, size_t n); 194b14be51dScgdvoid *(memmove)(void *s1, const void *s2, size_t n); 195b14be51dScgdvoid *(memset)(void *s, int c, size_t n); 196b14be51dScgdint (mkdir)(const char *path, mode_t mode); 197b14be51dScgdint (mkfifo)(const char *path, mode_t mode); 198b14be51dScgdtime_t (mktime)(struct tm *timeptr); 199b14be51dScgddouble (modf)(double value, double *iptr); 200b14be51dScgdint (open)(const char *path, int oflag, ...); 201b14be51dScgdDIR *(opendir)(const char *dirname); 202b14be51dScgdlong (pathconf)(const char *path, int name); 203b14be51dScgdint (pause)(void); 204b14be51dScgdvoid (perror)(const char *s); 205b14be51dScgdint (pipe)(int fildes[2]); 206b14be51dScgddouble (pow)(double x, double y); 207b14be51dScgd/* PRINTFLIKE1 */ 208b14be51dScgdint (printf)(const char *format, ...); 209b14be51dScgdint (putc)(int c, FILE *stream); 210b14be51dScgdint (putchar)(int c); 211b14be51dScgdint (puts)(const char *s); 212b14be51dScgdvoid (qsort)(void *base, size_t nmemb, size_t size, 213b14be51dScgd int (*compar)(const void *, const void *)); 214b14be51dScgdint (raise)(int sig); 215b14be51dScgdint (rand)(void); 216b14be51dScgdssize_t (read)(int fildes, void *buf, size_t nbyte); 217b14be51dScgdstruct dirent *(readdir)(DIR *dirp); 218b14be51dScgdvoid *(realloc)(void *ptr, size_t size); 219b14be51dScgdint (remove)(const char *filename); 220b14be51dScgdint (rename)(const char *old, const char *new); 221b14be51dScgdvoid (rewind)(FILE *stream); 222b14be51dScgdvoid (rewinddir)(DIR *dirp); 223b14be51dScgdint (rmdir)(const char *path); 224b14be51dScgd/* SCANFLIKE1 */ 225b14be51dScgdint (scanf)(const char *format, ...); 226b14be51dScgdvoid (setbuf)(FILE *stream, char *buf); 227b14be51dScgdint (setgid)(gid_t gid); 228b14be51dScgdint (setjmp)(jmp_buf env); 229b14be51dScgdchar *(setlocale)(int category, const char *locale); 230b14be51dScgdint (setpgid)(pid_t pid, pid_t pgid); 231b14be51dScgdpid_t (setsid)(void); 232b14be51dScgdint (setuid)(uid_t uid); 233b14be51dScgdint (setvbuf)(FILE *stream, char *buf, int mode, size_t size); 234b14be51dScgdint (sigaction)(int sig, const struct sigaction *act, 235b14be51dScgd struct sigaction *oact); 236b14be51dScgdint (sigaddset)(sigset_t *set, int signo); 237b14be51dScgdint (sigdelset)(sigset_t *set, int signo); 238b14be51dScgdint (sigemptyset)(sigset_t *set); 239b14be51dScgdint (sigfillset)(sigset_t *set); 240b14be51dScgdint (sigismember)(const sigset_t *set, int signo); 241b14be51dScgdvoid (siglongjmp)(sigjmp_buf env, int val); 242b14be51dScgdvoid (*(signal)(int sig, void (*func)(int)))(int); 243b14be51dScgdint (sigpending)(sigset_t *set); 244b14be51dScgdint (sigprocmask)(int how, const sigset_t *set, sigset_t *oset); 245b14be51dScgdint (sigsetjmp)(sigjmp_buf env, int savemask); 246b14be51dScgdint (sigsuspend)(const sigset_t *sigmask); 247b14be51dScgddouble (sin)(double x); 248b14be51dScgddouble (sinh)(double x); 249b14be51dScgdunsigned (sleep)(unsigned seconds); 250b14be51dScgd/* PRINTFLIKE2 */ 251b14be51dScgdint (sprintf)(char *s, const char *format, ...); 252b14be51dScgddouble (sqrt)(double x); 253b14be51dScgdvoid (srand)(unsigned seed); 254b14be51dScgd/* SCANFLIKE2 */ 255b14be51dScgdint (sscanf)(const char *s, const char *format, ...); 256b14be51dScgdint (stat)(const char *path, struct stat *buf); 257b14be51dScgdchar *(strcat)(char *s1, const char *s2); 258b14be51dScgdchar *(strchr)(const char *s, int c); 259b14be51dScgdint (strcmp)(const char *s1, const char *s2); 260b14be51dScgdint (strcoll)(const char *s1, const char *s2); 261b14be51dScgdchar *(strcpy)(char *s1, const char *s2); 262b14be51dScgdsize_t (strcspn)(const char *s1, const char *s2); 263b14be51dScgdchar *(strerror)(int errnum); 264b14be51dScgdsize_t (strftime)(char *s, size_t maxsize, const char *format, 265b14be51dScgd const struct tm *timeptr); 266b14be51dScgdsize_t (strlen)(const char *s); 267b14be51dScgdchar *(strncat)(char *s1, const char *s2, size_t n); 268b14be51dScgdint (strncmp)(const char *s1, const char *s2, size_t n); 269b14be51dScgdchar *(strncpy)(char *s1, const char *s2, size_t n); 270b14be51dScgdchar *(strpbrk)(const char *s1, const char *s2); 271b14be51dScgdchar *(strrchr)(const char *s, int c); 272b14be51dScgdsize_t (strspn)(const char *s1, const char *s2); 273b14be51dScgdchar *(strstr)(const char *s1, const char *s2); 274b14be51dScgddouble (strtod)(const char *nptr, char **endptr); 275b14be51dScgdchar *(strtok)(char *s1, const char *s2); 276b14be51dScgdlong (strtol)(const char *nptr, char **endptr, int base); 277b14be51dScgdunsigned long (strtoul)(const char *nptr, char **endptr, int base); 278b14be51dScgdsize_t (strxfrm)(char *s1, const char *s2, size_t n); 279b14be51dScgdlong (sysconf)(int name); 280b14be51dScgdint (system)(const char *string); 281b14be51dScgddouble (tan)(double x); 282b14be51dScgddouble (tanh)(double x); 283b14be51dScgdint (tcdrain)(int fildes); 284b14be51dScgdint (tcflow)(int fildes, int action); 285b14be51dScgdint (tcflush)(int fildes, int queue_selector); 286b14be51dScgdint (tcgetattr)(int fildes, struct termios *tp); 287b14be51dScgdpid_t (tcgetpgrp)(int fildes); 288b14be51dScgdint (tcsendbreak)(int fildes, int duration); 289b14be51dScgdint (tcsetattr)(int fildes, int options, const struct termios *tp); 290b14be51dScgdint (tcsetpgrp)(int fildes, pid_t pgrpid); 291b14be51dScgdtime_t (time)(time_t *timer); 292b14be51dScgdclock_t (times)(struct tms *buffer); 293b14be51dScgdFILE *(tmpfile)(void); 294b14be51dScgdchar *(tmpnam)(char *s); 295b14be51dScgdint (tolower)(int c); 296b14be51dScgdint (toupper)(int c); 297b14be51dScgdchar *(ttyname)(int filedes); 298b14be51dScgdvoid (tzset)(void); 299b14be51dScgdmode_t (umask)(mode_t cmask); 300b14be51dScgdint (uname)(struct utsname *name); 301b14be51dScgdint (ungetc)(int c, FILE *stream); 302b14be51dScgdint (unlink)(const char *path); 303b14be51dScgdint (utime)(const char *path, const struct utimbuf *times); 304b14be51dScgdint (vfprintf)(FILE *stream, const char *format, va_list arg); 305b14be51dScgdint (vprintf)(const char *format, va_list arg); 306b14be51dScgdint (vsprintf)(char *s, const char *format, va_list arg); 307b14be51dScgdpid_t (wait)(int *statloc); 308b14be51dScgdpid_t (waitpid)(pid_t pid, int *stat_loc, int options); 309b14be51dScgdsize_t (wcstombs)(char *s, const wchar_t *pwcs, size_t n); 310b14be51dScgdint (wctomb)(char *s, wchar_t wchar); 311b14be51dScgdssize_t (write)(int fildes, const void *buf, size_t nbyte); 312