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