llib-lstdc revision 1.2
11.2Scgd/*	$NetBSD: llib-lstdc,v 1.2 1995/07/03 21:25:11 cgd 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.1Scgdint	(errno);
841.1Scgd
851.1Scgd/*
861.1Scgd * locale.h
871.1Scgd */
881.1Scgdchar *(setlocale)(int category, const char *locale);
891.1Scgdstruct lconv *(localeconv)(void);
901.1Scgd
911.1Scgd/*
921.1Scgd * math.h
931.1Scgd */
941.1Scgddouble	(acos)(double x);
951.1Scgddouble	(asin)(double x);
961.1Scgddouble	(atan)(double x);
971.1Scgddouble	(atan2)(double y, double x);
981.1Scgddouble	(cos)(double x);
991.1Scgddouble	(sin)(double x);
1001.1Scgddouble	(tan)(double x);
1011.1Scgddouble	(cosh)(double x);
1021.1Scgddouble	(sinh)(double x);
1031.1Scgddouble	(tanh)(double x);
1041.1Scgddouble	(exp)(double x);
1051.1Scgddouble	(frexp)(double value, int *exp);
1061.1Scgddouble	(ldexp)(double x, int exp);
1071.1Scgddouble	(log)(double x);
1081.1Scgddouble	(log10)(double x);
1091.1Scgddouble	(modf)(double value, double *iptr);
1101.1Scgddouble	(pow)(double x, double y);
1111.1Scgddouble	(sqrt)(double x);
1121.1Scgddouble	(ceil)(double x);
1131.1Scgddouble	(fabs)(double x);
1141.1Scgddouble	(floor)(double x);
1151.1Scgddouble	(fmod)(double x, double y);
1161.1Scgd
1171.1Scgd/*
1181.1Scgd * setjmp.h
1191.1Scgd */
1201.1Scgdint	(setjmp)(jmp_buf env);
1211.1Scgdvoid	(longjmp)(jmp_buf env, int val);
1221.1Scgd
1231.1Scgd/*
1241.1Scgd * signal.h
1251.1Scgd */
1261.1Scgdvoid	(*(signal)(int sig, void (*func)(int)))(int);
1271.1Scgdint	(raise)(int sig);
1281.1Scgd
1291.1Scgd/*
1301.1Scgd * stdio.h
1311.1Scgd */
1321.1Scgdint	(remove)(const char *filename);
1331.1Scgdint	(rename)(const char *old, const char *new);
1341.1ScgdFILE	*(tmpfile)(void);
1351.1Scgdchar	*(tmpnam)(char *s);
1361.1Scgdint	(fclose)(FILE *stream);
1371.1Scgdint	(fflush)(FILE *stream);
1381.1ScgdFILE	*(fopen)(const char *filename, const char *mode);
1391.1ScgdFILE	*(freopen)(const char *filename, const char *mode, FILE *stream);
1401.1Scgdvoid	(setbuf)(FILE *stream, char *buf);
1411.1Scgdint	(setvbuf)(FILE *stream, char *buf, int mode, size_t size);
1421.1Scgd/* PRINTFLIKE2 */
1431.1Scgdint	(fprintf)(FILE *stream, const char *format, ...);
1441.1Scgd/* SCANFLIKE2 */
1451.1Scgdint	(fscanf)(FILE *stream, const char *format, ...);
1461.1Scgd/* PRINTFLIKE1 */
1471.1Scgdint	(printf)(const char *format, ...);
1481.1Scgd/* SCANFLIKE1 */
1491.1Scgdint	(scanf)(const char *format, ...);
1501.1Scgd/* PRINTFLIKE2 */
1511.1Scgdint	(sprintf)(char *s, const char *format, ...);
1521.1Scgd/* SCANFLIKE2 */
1531.1Scgdint	(sscanf)(const char *s, const char *format, ...);
1541.1Scgdint	(vfprintf)(FILE *stream, const char *format, va_list arg);
1551.1Scgdint	(vprintf)(const char *format, va_list arg);
1561.1Scgdint	(vsprintf)(char *s, const char *format, va_list arg);
1571.1Scgdint	(fgetc)(FILE *stream);
1581.1Scgd#ifdef __NetBSD__
1591.1Scgdchar	*(fgets)(char *s, size_t n, FILE *stream);
1601.1Scgd#else
1611.1Scgdchar	*(fgets)(char *s, int n, FILE *stream);
1621.1Scgd#endif
1631.1Scgdint	(fputc)(int c, FILE *stream);
1641.1Scgdint	(fputs)(const char *s, FILE *stream);
1651.1Scgdint	(getc)(FILE *stream);
1661.1Scgdint	(getchar)(void);
1671.1Scgdchar	*(gets)(char *s);
1681.1Scgdint	(putc)(int c, FILE *stream);
1691.1Scgdint	(putchar)(int c);
1701.1Scgdint	(puts)(const char *s);
1711.1Scgdint	(ungetc)(int c, FILE *stream);
1721.1Scgdsize_t	(fread)(void *ptr, size_t size, size_t nmemb, FILE *stream);
1731.1Scgdsize_t	(fwrite)(const void *ptr, size_t size, size_t nmemb, FILE *stream);
1741.1Scgdint	(fgetpos)(FILE *stream, fpos_t *pos);
1751.1Scgdint	(fseek)(FILE *stream, long offset, int whence);
1761.1Scgdint	(fsetpos)(FILE *stream, const fpos_t *pos);
1771.1Scgd#ifdef __NetBSD__
1781.1Scgdlong	(ftell)(const FILE *stream);
1791.1Scgd#else
1801.1Scgdlong	(ftell)(FILE *stream);
1811.1Scgd#endif
1821.1Scgdvoid	(rewind)(FILE *stream);
1831.1Scgdvoid	(clearerr)(FILE *stream);
1841.1Scgdint	(feof)(FILE *stream);
1851.1Scgdint	(ferror)(FILE *stream);
1861.1Scgdvoid	(perror)(const char *s);
1871.1Scgd
1881.1Scgd/*
1891.1Scgd * stdlib.h
1901.1Scgd */
1911.1Scgddouble	(atof)(const char *nptr);
1921.1Scgdint	(atoi)(const char *nptr);
1931.1Scgdlong	(atol)(const char *nptr);
1941.1Scgddouble	(strtod)(const char *nptr, char **endptr);
1951.1Scgdlong	(strtol)(const char *nptr, char **endptr, int base);
1961.1Scgdunsigned long (strtoul)(const char *nptr, char **endptr, int base);
1971.1Scgdint	(rand)(void);
1981.1Scgdvoid	(srand)(unsigned seed);
1991.1Scgdvoid	*(calloc)(size_t nmemb, size_t size);
2001.1Scgdvoid	(free)(void *ptr);
2011.1Scgdvoid	*(malloc)(size_t size);
2021.1Scgdvoid	*(realloc)(void *ptr, size_t size);
2031.1Scgdvoid	(abort)(void);
2041.1Scgdint	(atexit)(void (*func)(void));
2051.1Scgdvoid	(exit)(int status);
2061.1Scgdchar	*(getenv)(const char *name);
2071.1Scgdint	(system)(const char *string);
2081.1Scgdvoid	*(bsearch)(const void *key, const void *base, size_t nmemb,
2091.1Scgd		   size_t size, int (*compar)(const void *, const void *));
2101.1Scgdvoid	(qsort)(void *base, size_t nmemb, size_t size,
2111.1Scgd		int (*compar)(const void *, const void *));
2121.1Scgdint	(abs)(int j);
2131.1Scgddiv_t	(div)(int numer, int denom);
2141.1Scgdlong	(labs)(long j);
2151.1Scgdldiv_t	(ldiv)(long numer, long denom);
2161.1Scgdint	(mblen)(const char *s, size_t n);
2171.1Scgdint	(mbtowc)(wchar_t *PWC, const char *s, size_t n);
2181.1Scgdint	(wctomb)(char *s, wchar_t wchar);
2191.1Scgdsize_t	(mbstowcs)(wchar_t *pwcs, const char *s, size_t n);
2201.1Scgdsize_t	(wcstombs)(char *s, const wchar_t *pwcs, size_t n);
2211.1Scgd
2221.1Scgd/*
2231.1Scgd * string.h
2241.1Scgd */
2251.1Scgdvoid	*(memcpy)(void *s1, const void *s2, size_t n);
2261.1Scgdvoid	*(memmove)(void *s1, const void *s2, size_t n);
2271.1Scgdchar	*(strcpy)(char *s1, const char *s2);
2281.1Scgdchar	*(strncpy)(char *s1, const char *s2, size_t n);
2291.1Scgdchar	*(strcat)(char *s1, const char *s2);
2301.1Scgdchar	*(strncat)(char *s1, const char *s2, size_t n);
2311.1Scgdint	(memcmp)(const void *s1, const void *s2, size_t n);
2321.1Scgdint	(strcmp)(const char *s1, const char *s2);
2331.1Scgdint	(strcoll)(const char *s1, const char *s2);
2341.1Scgdint	(strncmp)(const char *s1, const char *s2, size_t n);
2351.1Scgdsize_t	(strxfrm)(char *s1, const char *s2, size_t n);
2361.1Scgdvoid	*(memchr)(const void *s, int c, size_t n);
2371.1Scgdchar	*(strchr)(const char *s, int c);
2381.1Scgdsize_t	(strcspn)(const char *s1, const char *s2);
2391.1Scgdchar	*(strpbrk)(const char *s1, const char *s2);
2401.1Scgdchar	*(strrchr)(const char *s1, int c);
2411.1Scgdsize_t	(strspn)(const char *s1, const char *s2);
2421.1Scgdchar	*(strstr)(const char *s1, const char *s2);
2431.1Scgdchar	*(strtok)(char *s1, const char *s2);
2441.1Scgdvoid	*(memset)(void *s, int c, size_t n);
2451.1Scgdchar	*(strerror)(int errnom);
2461.1Scgdsize_t	(strlen)(const char *s);
2471.1Scgd
2481.1Scgd/*
2491.1Scgd * time.h
2501.1Scgd */
2511.1Scgdclock_t (clock)(void);
2521.1Scgddouble	(difftime)(time_t time1, time_t time2);
2531.1Scgdtime_t	(mktime)(struct tm *timeptr);
2541.1Scgdtime_t	(time)(time_t *timer);
2551.1Scgdchar	*(asctime)(const struct tm *timeptr);
2561.1Scgdchar	*(ctime)(const time_t *timer);
2571.1Scgdstruct tm *(gmtime)(const time_t *timer);
2581.1Scgdstruct tm *(localtime)(const time_t *timer);
2591.1Scgdsize_t	(strftime)(char *s, size_t maxsize, const char *format,
2601.1Scgd		   const struct tm *timeptr);
261