1 1.4 rillig /* $NetBSD: llib-lstdc,v 1.4 2025/03/14 06:40:51 rillig Exp $ */ 2 1.2 cgd 3 1.1 cgd /* 4 1.1 cgd * Copyright (c) 1994, 1995 Jochen Pohl 5 1.1 cgd * All Rights Reserved. 6 1.1 cgd * 7 1.1 cgd * Redistribution and use in source and binary forms, with or without 8 1.1 cgd * modification, are permitted provided that the following conditions 9 1.1 cgd * are met: 10 1.1 cgd * 1. Redistributions of source code must retain the above copyright 11 1.1 cgd * notice, this list of conditions and the following disclaimer. 12 1.1 cgd * 2. Redistributions in binary form must reproduce the above copyright 13 1.1 cgd * notice, this list of conditions and the following disclaimer in the 14 1.1 cgd * documentation and/or other materials provided with the distribution. 15 1.1 cgd * 3. All advertising materials mentioning features or use of this software 16 1.1 cgd * must display the following acknowledgement: 17 1.1 cgd * This product includes software developed by Jochen Pohl for 18 1.1 cgd * The NetBSD Project. 19 1.1 cgd * 4. The name of the author may not be used to endorse or promote products 20 1.1 cgd * derived from this software without specific prior written permission. 21 1.1 cgd * 22 1.1 cgd * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 23 1.1 cgd * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 24 1.1 cgd * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 25 1.1 cgd * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 26 1.1 cgd * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 27 1.1 cgd * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 28 1.1 cgd * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 29 1.1 cgd * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 30 1.1 cgd * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 31 1.1 cgd * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32 1.1 cgd */ 33 1.1 cgd 34 1.1 cgd /* LINTLIBRARY */ 35 1.1 cgd 36 1.1 cgd #define _ANSI_SOURCE 37 1.1 cgd 38 1.1 cgd #include <assert.h> 39 1.1 cgd #include <ctype.h> 40 1.1 cgd #include <errno.h> 41 1.1 cgd #include <locale.h> 42 1.1 cgd #include <math.h> 43 1.1 cgd #include <setjmp.h> 44 1.1 cgd #include <signal.h> 45 1.1 cgd #include <stdarg.h> 46 1.1 cgd #include <stddef.h> 47 1.1 cgd #include <stdio.h> 48 1.1 cgd #include <stdlib.h> 49 1.1 cgd #include <string.h> 50 1.1 cgd #include <time.h> 51 1.1 cgd 52 1.1 cgd /* PROTOLIB1 */ 53 1.1 cgd 54 1.1 cgd /* 55 1.1 cgd * assert.h 56 1.1 cgd */ 57 1.1 cgd #ifdef __NetBSD__ 58 1.1 cgd void (__assert)(const char *expression, int line, const char *file); 59 1.1 cgd #else 60 1.1 cgd void (assert)(int expression); 61 1.1 cgd #endif 62 1.1 cgd 63 1.1 cgd /* 64 1.1 cgd * ctype.h 65 1.1 cgd */ 66 1.1 cgd int (isalnum)(int c); 67 1.1 cgd int (isalpha)(int c); 68 1.1 cgd int (iscntrl)(int c); 69 1.1 cgd int (isdigit)(int c); 70 1.1 cgd int (isgraph)(int c); 71 1.1 cgd int (islower)(int c); 72 1.1 cgd int (isprint)(int c); 73 1.1 cgd int (ispunct)(int c); 74 1.1 cgd int (isspace)(int c); 75 1.1 cgd int (isupper)(int c); 76 1.1 cgd int (isxdigit)(int c); 77 1.1 cgd int (tolower)(int c); 78 1.1 cgd int (toupper)(int c); 79 1.1 cgd 80 1.1 cgd /* 81 1.1 cgd * errno.h 82 1.1 cgd */ 83 1.4 rillig #ifndef errno 84 1.1 cgd int (errno); 85 1.4 rillig #endif 86 1.1 cgd 87 1.1 cgd /* 88 1.1 cgd * locale.h 89 1.1 cgd */ 90 1.1 cgd char *(setlocale)(int category, const char *locale); 91 1.1 cgd struct lconv *(localeconv)(void); 92 1.1 cgd 93 1.1 cgd /* 94 1.1 cgd * math.h 95 1.1 cgd */ 96 1.1 cgd double (acos)(double x); 97 1.1 cgd double (asin)(double x); 98 1.1 cgd double (atan)(double x); 99 1.1 cgd double (atan2)(double y, double x); 100 1.1 cgd double (cos)(double x); 101 1.1 cgd double (sin)(double x); 102 1.1 cgd double (tan)(double x); 103 1.1 cgd double (cosh)(double x); 104 1.1 cgd double (sinh)(double x); 105 1.1 cgd double (tanh)(double x); 106 1.1 cgd double (exp)(double x); 107 1.1 cgd double (frexp)(double value, int *exp); 108 1.1 cgd double (ldexp)(double x, int exp); 109 1.1 cgd double (log)(double x); 110 1.1 cgd double (log10)(double x); 111 1.1 cgd double (modf)(double value, double *iptr); 112 1.1 cgd double (pow)(double x, double y); 113 1.1 cgd double (sqrt)(double x); 114 1.1 cgd double (ceil)(double x); 115 1.1 cgd double (fabs)(double x); 116 1.1 cgd double (floor)(double x); 117 1.1 cgd double (fmod)(double x, double y); 118 1.1 cgd 119 1.1 cgd /* 120 1.1 cgd * setjmp.h 121 1.1 cgd */ 122 1.1 cgd int (setjmp)(jmp_buf env); 123 1.1 cgd void (longjmp)(jmp_buf env, int val); 124 1.1 cgd 125 1.1 cgd /* 126 1.1 cgd * signal.h 127 1.1 cgd */ 128 1.1 cgd void (*(signal)(int sig, void (*func)(int)))(int); 129 1.1 cgd int (raise)(int sig); 130 1.1 cgd 131 1.1 cgd /* 132 1.1 cgd * stdio.h 133 1.1 cgd */ 134 1.1 cgd int (remove)(const char *filename); 135 1.1 cgd int (rename)(const char *old, const char *new); 136 1.1 cgd FILE *(tmpfile)(void); 137 1.1 cgd char *(tmpnam)(char *s); 138 1.1 cgd int (fclose)(FILE *stream); 139 1.1 cgd int (fflush)(FILE *stream); 140 1.1 cgd FILE *(fopen)(const char *filename, const char *mode); 141 1.1 cgd FILE *(freopen)(const char *filename, const char *mode, FILE *stream); 142 1.1 cgd void (setbuf)(FILE *stream, char *buf); 143 1.1 cgd int (setvbuf)(FILE *stream, char *buf, int mode, size_t size); 144 1.1 cgd /* PRINTFLIKE2 */ 145 1.1 cgd int (fprintf)(FILE *stream, const char *format, ...); 146 1.1 cgd /* SCANFLIKE2 */ 147 1.1 cgd int (fscanf)(FILE *stream, const char *format, ...); 148 1.1 cgd /* PRINTFLIKE1 */ 149 1.1 cgd int (printf)(const char *format, ...); 150 1.1 cgd /* SCANFLIKE1 */ 151 1.1 cgd int (scanf)(const char *format, ...); 152 1.1 cgd /* PRINTFLIKE2 */ 153 1.1 cgd int (sprintf)(char *s, const char *format, ...); 154 1.1 cgd /* SCANFLIKE2 */ 155 1.1 cgd int (sscanf)(const char *s, const char *format, ...); 156 1.1 cgd int (vfprintf)(FILE *stream, const char *format, va_list arg); 157 1.1 cgd int (vprintf)(const char *format, va_list arg); 158 1.1 cgd int (vsprintf)(char *s, const char *format, va_list arg); 159 1.1 cgd int (fgetc)(FILE *stream); 160 1.1 cgd char *(fgets)(char *s, int n, FILE *stream); 161 1.1 cgd int (fputc)(int c, FILE *stream); 162 1.1 cgd int (fputs)(const char *s, FILE *stream); 163 1.1 cgd int (getc)(FILE *stream); 164 1.1 cgd int (getchar)(void); 165 1.1 cgd char *(gets)(char *s); 166 1.1 cgd int (putc)(int c, FILE *stream); 167 1.1 cgd int (putchar)(int c); 168 1.1 cgd int (puts)(const char *s); 169 1.1 cgd int (ungetc)(int c, FILE *stream); 170 1.1 cgd size_t (fread)(void *ptr, size_t size, size_t nmemb, FILE *stream); 171 1.1 cgd size_t (fwrite)(const void *ptr, size_t size, size_t nmemb, FILE *stream); 172 1.1 cgd int (fgetpos)(FILE *stream, fpos_t *pos); 173 1.1 cgd int (fseek)(FILE *stream, long offset, int whence); 174 1.1 cgd int (fsetpos)(FILE *stream, const fpos_t *pos); 175 1.1 cgd long (ftell)(FILE *stream); 176 1.1 cgd void (rewind)(FILE *stream); 177 1.1 cgd void (clearerr)(FILE *stream); 178 1.1 cgd int (feof)(FILE *stream); 179 1.1 cgd int (ferror)(FILE *stream); 180 1.1 cgd void (perror)(const char *s); 181 1.1 cgd 182 1.1 cgd /* 183 1.1 cgd * stdlib.h 184 1.1 cgd */ 185 1.1 cgd double (atof)(const char *nptr); 186 1.1 cgd int (atoi)(const char *nptr); 187 1.1 cgd long (atol)(const char *nptr); 188 1.1 cgd double (strtod)(const char *nptr, char **endptr); 189 1.1 cgd long (strtol)(const char *nptr, char **endptr, int base); 190 1.1 cgd unsigned long (strtoul)(const char *nptr, char **endptr, int base); 191 1.1 cgd int (rand)(void); 192 1.1 cgd void (srand)(unsigned seed); 193 1.1 cgd void *(calloc)(size_t nmemb, size_t size); 194 1.1 cgd void (free)(void *ptr); 195 1.1 cgd void *(malloc)(size_t size); 196 1.1 cgd void *(realloc)(void *ptr, size_t size); 197 1.1 cgd void (abort)(void); 198 1.1 cgd int (atexit)(void (*func)(void)); 199 1.1 cgd void (exit)(int status); 200 1.1 cgd char *(getenv)(const char *name); 201 1.1 cgd int (system)(const char *string); 202 1.1 cgd void *(bsearch)(const void *key, const void *base, size_t nmemb, 203 1.1 cgd size_t size, int (*compar)(const void *, const void *)); 204 1.1 cgd void (qsort)(void *base, size_t nmemb, size_t size, 205 1.1 cgd int (*compar)(const void *, const void *)); 206 1.1 cgd int (abs)(int j); 207 1.1 cgd div_t (div)(int numer, int denom); 208 1.1 cgd long (labs)(long j); 209 1.1 cgd ldiv_t (ldiv)(long numer, long denom); 210 1.1 cgd int (mblen)(const char *s, size_t n); 211 1.1 cgd int (mbtowc)(wchar_t *PWC, const char *s, size_t n); 212 1.1 cgd int (wctomb)(char *s, wchar_t wchar); 213 1.1 cgd size_t (mbstowcs)(wchar_t *pwcs, const char *s, size_t n); 214 1.1 cgd size_t (wcstombs)(char *s, const wchar_t *pwcs, size_t n); 215 1.1 cgd 216 1.1 cgd /* 217 1.1 cgd * string.h 218 1.1 cgd */ 219 1.1 cgd void *(memcpy)(void *s1, const void *s2, size_t n); 220 1.1 cgd void *(memmove)(void *s1, const void *s2, size_t n); 221 1.1 cgd char *(strcpy)(char *s1, const char *s2); 222 1.1 cgd char *(strncpy)(char *s1, const char *s2, size_t n); 223 1.1 cgd char *(strcat)(char *s1, const char *s2); 224 1.1 cgd char *(strncat)(char *s1, const char *s2, size_t n); 225 1.1 cgd int (memcmp)(const void *s1, const void *s2, size_t n); 226 1.1 cgd int (strcmp)(const char *s1, const char *s2); 227 1.1 cgd int (strcoll)(const char *s1, const char *s2); 228 1.1 cgd int (strncmp)(const char *s1, const char *s2, size_t n); 229 1.1 cgd size_t (strxfrm)(char *s1, const char *s2, size_t n); 230 1.1 cgd void *(memchr)(const void *s, int c, size_t n); 231 1.1 cgd char *(strchr)(const char *s, int c); 232 1.1 cgd size_t (strcspn)(const char *s1, const char *s2); 233 1.1 cgd char *(strpbrk)(const char *s1, const char *s2); 234 1.1 cgd char *(strrchr)(const char *s1, int c); 235 1.1 cgd size_t (strspn)(const char *s1, const char *s2); 236 1.1 cgd char *(strstr)(const char *s1, const char *s2); 237 1.1 cgd char *(strtok)(char *s1, const char *s2); 238 1.1 cgd void *(memset)(void *s, int c, size_t n); 239 1.1 cgd char *(strerror)(int errnom); 240 1.1 cgd size_t (strlen)(const char *s); 241 1.1 cgd 242 1.1 cgd /* 243 1.1 cgd * time.h 244 1.1 cgd */ 245 1.1 cgd clock_t (clock)(void); 246 1.1 cgd double (difftime)(time_t time1, time_t time2); 247 1.1 cgd time_t (mktime)(struct tm *timeptr); 248 1.1 cgd time_t (time)(time_t *timer); 249 1.1 cgd char *(asctime)(const struct tm *timeptr); 250 1.1 cgd char *(ctime)(const time_t *timer); 251 1.1 cgd struct tm *(gmtime)(const time_t *timer); 252 1.1 cgd struct tm *(localtime)(const time_t *timer); 253 1.1 cgd size_t (strftime)(char *s, size_t maxsize, const char *format, 254 1.1 cgd const struct tm *timeptr); 255