11.4Srillig/* $NetBSD: llib-lstdc,v 1.4 2025/03/14 06:40:51 rillig Exp $ */ 21.2Scgd 31.1Scgd/* 41.1Scgd * Copyright (c) 1994, 1995 Jochen Pohl 51.1Scgd * All Rights Reserved. 61.1Scgd * 71.1Scgd * Redistribution and use in source and binary forms, with or without 81.1Scgd * modification, are permitted provided that the following conditions 91.1Scgd * are met: 101.1Scgd * 1. Redistributions of source code must retain the above copyright 111.1Scgd * notice, this list of conditions and the following disclaimer. 121.1Scgd * 2. Redistributions in binary form must reproduce the above copyright 131.1Scgd * notice, this list of conditions and the following disclaimer in the 141.1Scgd * documentation and/or other materials provided with the distribution. 151.1Scgd * 3. All advertising materials mentioning features or use of this software 161.1Scgd * must display the following acknowledgement: 171.1Scgd * This product includes software developed by Jochen Pohl for 181.1Scgd * The NetBSD Project. 191.1Scgd * 4. The name of the author may not be used to endorse or promote products 201.1Scgd * derived from this software without specific prior written permission. 211.1Scgd * 221.1Scgd * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 231.1Scgd * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 241.1Scgd * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 251.1Scgd * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 261.1Scgd * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 271.1Scgd * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 281.1Scgd * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 291.1Scgd * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 301.1Scgd * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 311.1Scgd * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 321.1Scgd */ 331.1Scgd 341.1Scgd/* LINTLIBRARY */ 351.1Scgd 361.1Scgd#define _ANSI_SOURCE 371.1Scgd 381.1Scgd#include <assert.h> 391.1Scgd#include <ctype.h> 401.1Scgd#include <errno.h> 411.1Scgd#include <locale.h> 421.1Scgd#include <math.h> 431.1Scgd#include <setjmp.h> 441.1Scgd#include <signal.h> 451.1Scgd#include <stdarg.h> 461.1Scgd#include <stddef.h> 471.1Scgd#include <stdio.h> 481.1Scgd#include <stdlib.h> 491.1Scgd#include <string.h> 501.1Scgd#include <time.h> 511.1Scgd 521.1Scgd/* PROTOLIB1 */ 531.1Scgd 541.1Scgd/* 551.1Scgd * assert.h 561.1Scgd */ 571.1Scgd#ifdef __NetBSD__ 581.1Scgdvoid (__assert)(const char *expression, int line, const char *file); 591.1Scgd#else 601.1Scgdvoid (assert)(int expression); 611.1Scgd#endif 621.1Scgd 631.1Scgd/* 641.1Scgd * ctype.h 651.1Scgd */ 661.1Scgdint (isalnum)(int c); 671.1Scgdint (isalpha)(int c); 681.1Scgdint (iscntrl)(int c); 691.1Scgdint (isdigit)(int c); 701.1Scgdint (isgraph)(int c); 711.1Scgdint (islower)(int c); 721.1Scgdint (isprint)(int c); 731.1Scgdint (ispunct)(int c); 741.1Scgdint (isspace)(int c); 751.1Scgdint (isupper)(int c); 761.1Scgdint (isxdigit)(int c); 771.1Scgdint (tolower)(int c); 781.1Scgdint (toupper)(int c); 791.1Scgd 801.1Scgd/* 811.1Scgd * errno.h 821.1Scgd */ 831.4Srillig#ifndef errno 841.1Scgdint (errno); 851.4Srillig#endif 861.1Scgd 871.1Scgd/* 881.1Scgd * locale.h 891.1Scgd */ 901.1Scgdchar *(setlocale)(int category, const char *locale); 911.1Scgdstruct lconv *(localeconv)(void); 921.1Scgd 931.1Scgd/* 941.1Scgd * math.h 951.1Scgd */ 961.1Scgddouble (acos)(double x); 971.1Scgddouble (asin)(double x); 981.1Scgddouble (atan)(double x); 991.1Scgddouble (atan2)(double y, double x); 1001.1Scgddouble (cos)(double x); 1011.1Scgddouble (sin)(double x); 1021.1Scgddouble (tan)(double x); 1031.1Scgddouble (cosh)(double x); 1041.1Scgddouble (sinh)(double x); 1051.1Scgddouble (tanh)(double x); 1061.1Scgddouble (exp)(double x); 1071.1Scgddouble (frexp)(double value, int *exp); 1081.1Scgddouble (ldexp)(double x, int exp); 1091.1Scgddouble (log)(double x); 1101.1Scgddouble (log10)(double x); 1111.1Scgddouble (modf)(double value, double *iptr); 1121.1Scgddouble (pow)(double x, double y); 1131.1Scgddouble (sqrt)(double x); 1141.1Scgddouble (ceil)(double x); 1151.1Scgddouble (fabs)(double x); 1161.1Scgddouble (floor)(double x); 1171.1Scgddouble (fmod)(double x, double y); 1181.1Scgd 1191.1Scgd/* 1201.1Scgd * setjmp.h 1211.1Scgd */ 1221.1Scgdint (setjmp)(jmp_buf env); 1231.1Scgdvoid (longjmp)(jmp_buf env, int val); 1241.1Scgd 1251.1Scgd/* 1261.1Scgd * signal.h 1271.1Scgd */ 1281.1Scgdvoid (*(signal)(int sig, void (*func)(int)))(int); 1291.1Scgdint (raise)(int sig); 1301.1Scgd 1311.1Scgd/* 1321.1Scgd * stdio.h 1331.1Scgd */ 1341.1Scgdint (remove)(const char *filename); 1351.1Scgdint (rename)(const char *old, const char *new); 1361.1ScgdFILE *(tmpfile)(void); 1371.1Scgdchar *(tmpnam)(char *s); 1381.1Scgdint (fclose)(FILE *stream); 1391.1Scgdint (fflush)(FILE *stream); 1401.1ScgdFILE *(fopen)(const char *filename, const char *mode); 1411.1ScgdFILE *(freopen)(const char *filename, const char *mode, FILE *stream); 1421.1Scgdvoid (setbuf)(FILE *stream, char *buf); 1431.1Scgdint (setvbuf)(FILE *stream, char *buf, int mode, size_t size); 1441.1Scgd/* PRINTFLIKE2 */ 1451.1Scgdint (fprintf)(FILE *stream, const char *format, ...); 1461.1Scgd/* SCANFLIKE2 */ 1471.1Scgdint (fscanf)(FILE *stream, const char *format, ...); 1481.1Scgd/* PRINTFLIKE1 */ 1491.1Scgdint (printf)(const char *format, ...); 1501.1Scgd/* SCANFLIKE1 */ 1511.1Scgdint (scanf)(const char *format, ...); 1521.1Scgd/* PRINTFLIKE2 */ 1531.1Scgdint (sprintf)(char *s, const char *format, ...); 1541.1Scgd/* SCANFLIKE2 */ 1551.1Scgdint (sscanf)(const char *s, const char *format, ...); 1561.1Scgdint (vfprintf)(FILE *stream, const char *format, va_list arg); 1571.1Scgdint (vprintf)(const char *format, va_list arg); 1581.1Scgdint (vsprintf)(char *s, const char *format, va_list arg); 1591.1Scgdint (fgetc)(FILE *stream); 1601.1Scgdchar *(fgets)(char *s, int n, FILE *stream); 1611.1Scgdint (fputc)(int c, FILE *stream); 1621.1Scgdint (fputs)(const char *s, FILE *stream); 1631.1Scgdint (getc)(FILE *stream); 1641.1Scgdint (getchar)(void); 1651.1Scgdchar *(gets)(char *s); 1661.1Scgdint (putc)(int c, FILE *stream); 1671.1Scgdint (putchar)(int c); 1681.1Scgdint (puts)(const char *s); 1691.1Scgdint (ungetc)(int c, FILE *stream); 1701.1Scgdsize_t (fread)(void *ptr, size_t size, size_t nmemb, FILE *stream); 1711.1Scgdsize_t (fwrite)(const void *ptr, size_t size, size_t nmemb, FILE *stream); 1721.1Scgdint (fgetpos)(FILE *stream, fpos_t *pos); 1731.1Scgdint (fseek)(FILE *stream, long offset, int whence); 1741.1Scgdint (fsetpos)(FILE *stream, const fpos_t *pos); 1751.1Scgdlong (ftell)(FILE *stream); 1761.1Scgdvoid (rewind)(FILE *stream); 1771.1Scgdvoid (clearerr)(FILE *stream); 1781.1Scgdint (feof)(FILE *stream); 1791.1Scgdint (ferror)(FILE *stream); 1801.1Scgdvoid (perror)(const char *s); 1811.1Scgd 1821.1Scgd/* 1831.1Scgd * stdlib.h 1841.1Scgd */ 1851.1Scgddouble (atof)(const char *nptr); 1861.1Scgdint (atoi)(const char *nptr); 1871.1Scgdlong (atol)(const char *nptr); 1881.1Scgddouble (strtod)(const char *nptr, char **endptr); 1891.1Scgdlong (strtol)(const char *nptr, char **endptr, int base); 1901.1Scgdunsigned long (strtoul)(const char *nptr, char **endptr, int base); 1911.1Scgdint (rand)(void); 1921.1Scgdvoid (srand)(unsigned seed); 1931.1Scgdvoid *(calloc)(size_t nmemb, size_t size); 1941.1Scgdvoid (free)(void *ptr); 1951.1Scgdvoid *(malloc)(size_t size); 1961.1Scgdvoid *(realloc)(void *ptr, size_t size); 1971.1Scgdvoid (abort)(void); 1981.1Scgdint (atexit)(void (*func)(void)); 1991.1Scgdvoid (exit)(int status); 2001.1Scgdchar *(getenv)(const char *name); 2011.1Scgdint (system)(const char *string); 2021.1Scgdvoid *(bsearch)(const void *key, const void *base, size_t nmemb, 2031.1Scgd size_t size, int (*compar)(const void *, const void *)); 2041.1Scgdvoid (qsort)(void *base, size_t nmemb, size_t size, 2051.1Scgd int (*compar)(const void *, const void *)); 2061.1Scgdint (abs)(int j); 2071.1Scgddiv_t (div)(int numer, int denom); 2081.1Scgdlong (labs)(long j); 2091.1Scgdldiv_t (ldiv)(long numer, long denom); 2101.1Scgdint (mblen)(const char *s, size_t n); 2111.1Scgdint (mbtowc)(wchar_t *PWC, const char *s, size_t n); 2121.1Scgdint (wctomb)(char *s, wchar_t wchar); 2131.1Scgdsize_t (mbstowcs)(wchar_t *pwcs, const char *s, size_t n); 2141.1Scgdsize_t (wcstombs)(char *s, const wchar_t *pwcs, size_t n); 2151.1Scgd 2161.1Scgd/* 2171.1Scgd * string.h 2181.1Scgd */ 2191.1Scgdvoid *(memcpy)(void *s1, const void *s2, size_t n); 2201.1Scgdvoid *(memmove)(void *s1, const void *s2, size_t n); 2211.1Scgdchar *(strcpy)(char *s1, const char *s2); 2221.1Scgdchar *(strncpy)(char *s1, const char *s2, size_t n); 2231.1Scgdchar *(strcat)(char *s1, const char *s2); 2241.1Scgdchar *(strncat)(char *s1, const char *s2, size_t n); 2251.1Scgdint (memcmp)(const void *s1, const void *s2, size_t n); 2261.1Scgdint (strcmp)(const char *s1, const char *s2); 2271.1Scgdint (strcoll)(const char *s1, const char *s2); 2281.1Scgdint (strncmp)(const char *s1, const char *s2, size_t n); 2291.1Scgdsize_t (strxfrm)(char *s1, const char *s2, size_t n); 2301.1Scgdvoid *(memchr)(const void *s, int c, size_t n); 2311.1Scgdchar *(strchr)(const char *s, int c); 2321.1Scgdsize_t (strcspn)(const char *s1, const char *s2); 2331.1Scgdchar *(strpbrk)(const char *s1, const char *s2); 2341.1Scgdchar *(strrchr)(const char *s1, int c); 2351.1Scgdsize_t (strspn)(const char *s1, const char *s2); 2361.1Scgdchar *(strstr)(const char *s1, const char *s2); 2371.1Scgdchar *(strtok)(char *s1, const char *s2); 2381.1Scgdvoid *(memset)(void *s, int c, size_t n); 2391.1Scgdchar *(strerror)(int errnom); 2401.1Scgdsize_t (strlen)(const char *s); 2411.1Scgd 2421.1Scgd/* 2431.1Scgd * time.h 2441.1Scgd */ 2451.1Scgdclock_t (clock)(void); 2461.1Scgddouble (difftime)(time_t time1, time_t time2); 2471.1Scgdtime_t (mktime)(struct tm *timeptr); 2481.1Scgdtime_t (time)(time_t *timer); 2491.1Scgdchar *(asctime)(const struct tm *timeptr); 2501.1Scgdchar *(ctime)(const time_t *timer); 2511.1Scgdstruct tm *(gmtime)(const time_t *timer); 2521.1Scgdstruct tm *(localtime)(const time_t *timer); 2531.1Scgdsize_t (strftime)(char *s, size_t maxsize, const char *format, 2541.1Scgd const struct tm *timeptr); 255