1*d6c493f3Scgd/* $NetBSD: llib-lstdc,v 1.3 1995/07/03 21:39:28 cgd Exp $ */ 2c61d16ddScgd 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 _ANSI_SOURCE 37b14be51dScgd 38b14be51dScgd#include <assert.h> 39b14be51dScgd#include <ctype.h> 40b14be51dScgd#include <errno.h> 41b14be51dScgd#include <locale.h> 42b14be51dScgd#include <math.h> 43b14be51dScgd#include <setjmp.h> 44b14be51dScgd#include <signal.h> 45b14be51dScgd#include <stdarg.h> 46b14be51dScgd#include <stddef.h> 47b14be51dScgd#include <stdio.h> 48b14be51dScgd#include <stdlib.h> 49b14be51dScgd#include <string.h> 50b14be51dScgd#include <time.h> 51b14be51dScgd 52b14be51dScgd/* PROTOLIB1 */ 53b14be51dScgd 54b14be51dScgd/* 55b14be51dScgd * assert.h 56b14be51dScgd */ 57b14be51dScgd#ifdef __NetBSD__ 58b14be51dScgdvoid (__assert)(const char *expression, int line, const char *file); 59b14be51dScgd#else 60b14be51dScgdvoid (assert)(int expression); 61b14be51dScgd#endif 62b14be51dScgd 63b14be51dScgd/* 64b14be51dScgd * ctype.h 65b14be51dScgd */ 66b14be51dScgdint (isalnum)(int c); 67b14be51dScgdint (isalpha)(int c); 68b14be51dScgdint (iscntrl)(int c); 69b14be51dScgdint (isdigit)(int c); 70b14be51dScgdint (isgraph)(int c); 71b14be51dScgdint (islower)(int c); 72b14be51dScgdint (isprint)(int c); 73b14be51dScgdint (ispunct)(int c); 74b14be51dScgdint (isspace)(int c); 75b14be51dScgdint (isupper)(int c); 76b14be51dScgdint (isxdigit)(int c); 77b14be51dScgdint (tolower)(int c); 78b14be51dScgdint (toupper)(int c); 79b14be51dScgd 80b14be51dScgd/* 81b14be51dScgd * errno.h 82b14be51dScgd */ 83b14be51dScgdint (errno); 84b14be51dScgd 85b14be51dScgd/* 86b14be51dScgd * locale.h 87b14be51dScgd */ 88b14be51dScgdchar *(setlocale)(int category, const char *locale); 89b14be51dScgdstruct lconv *(localeconv)(void); 90b14be51dScgd 91b14be51dScgd/* 92b14be51dScgd * math.h 93b14be51dScgd */ 94b14be51dScgddouble (acos)(double x); 95b14be51dScgddouble (asin)(double x); 96b14be51dScgddouble (atan)(double x); 97b14be51dScgddouble (atan2)(double y, double x); 98b14be51dScgddouble (cos)(double x); 99b14be51dScgddouble (sin)(double x); 100b14be51dScgddouble (tan)(double x); 101b14be51dScgddouble (cosh)(double x); 102b14be51dScgddouble (sinh)(double x); 103b14be51dScgddouble (tanh)(double x); 104b14be51dScgddouble (exp)(double x); 105b14be51dScgddouble (frexp)(double value, int *exp); 106b14be51dScgddouble (ldexp)(double x, int exp); 107b14be51dScgddouble (log)(double x); 108b14be51dScgddouble (log10)(double x); 109b14be51dScgddouble (modf)(double value, double *iptr); 110b14be51dScgddouble (pow)(double x, double y); 111b14be51dScgddouble (sqrt)(double x); 112b14be51dScgddouble (ceil)(double x); 113b14be51dScgddouble (fabs)(double x); 114b14be51dScgddouble (floor)(double x); 115b14be51dScgddouble (fmod)(double x, double y); 116b14be51dScgd 117b14be51dScgd/* 118b14be51dScgd * setjmp.h 119b14be51dScgd */ 120b14be51dScgdint (setjmp)(jmp_buf env); 121b14be51dScgdvoid (longjmp)(jmp_buf env, int val); 122b14be51dScgd 123b14be51dScgd/* 124b14be51dScgd * signal.h 125b14be51dScgd */ 126b14be51dScgdvoid (*(signal)(int sig, void (*func)(int)))(int); 127b14be51dScgdint (raise)(int sig); 128b14be51dScgd 129b14be51dScgd/* 130b14be51dScgd * stdio.h 131b14be51dScgd */ 132b14be51dScgdint (remove)(const char *filename); 133b14be51dScgdint (rename)(const char *old, const char *new); 134b14be51dScgdFILE *(tmpfile)(void); 135b14be51dScgdchar *(tmpnam)(char *s); 136b14be51dScgdint (fclose)(FILE *stream); 137b14be51dScgdint (fflush)(FILE *stream); 138b14be51dScgdFILE *(fopen)(const char *filename, const char *mode); 139b14be51dScgdFILE *(freopen)(const char *filename, const char *mode, FILE *stream); 140b14be51dScgdvoid (setbuf)(FILE *stream, char *buf); 141b14be51dScgdint (setvbuf)(FILE *stream, char *buf, int mode, size_t size); 142b14be51dScgd/* PRINTFLIKE2 */ 143b14be51dScgdint (fprintf)(FILE *stream, const char *format, ...); 144b14be51dScgd/* SCANFLIKE2 */ 145b14be51dScgdint (fscanf)(FILE *stream, const char *format, ...); 146b14be51dScgd/* PRINTFLIKE1 */ 147b14be51dScgdint (printf)(const char *format, ...); 148b14be51dScgd/* SCANFLIKE1 */ 149b14be51dScgdint (scanf)(const char *format, ...); 150b14be51dScgd/* PRINTFLIKE2 */ 151b14be51dScgdint (sprintf)(char *s, const char *format, ...); 152b14be51dScgd/* SCANFLIKE2 */ 153b14be51dScgdint (sscanf)(const char *s, const char *format, ...); 154b14be51dScgdint (vfprintf)(FILE *stream, const char *format, va_list arg); 155b14be51dScgdint (vprintf)(const char *format, va_list arg); 156b14be51dScgdint (vsprintf)(char *s, const char *format, va_list arg); 157b14be51dScgdint (fgetc)(FILE *stream); 158b14be51dScgdchar *(fgets)(char *s, int n, FILE *stream); 159b14be51dScgdint (fputc)(int c, FILE *stream); 160b14be51dScgdint (fputs)(const char *s, FILE *stream); 161b14be51dScgdint (getc)(FILE *stream); 162b14be51dScgdint (getchar)(void); 163b14be51dScgdchar *(gets)(char *s); 164b14be51dScgdint (putc)(int c, FILE *stream); 165b14be51dScgdint (putchar)(int c); 166b14be51dScgdint (puts)(const char *s); 167b14be51dScgdint (ungetc)(int c, FILE *stream); 168b14be51dScgdsize_t (fread)(void *ptr, size_t size, size_t nmemb, FILE *stream); 169b14be51dScgdsize_t (fwrite)(const void *ptr, size_t size, size_t nmemb, FILE *stream); 170b14be51dScgdint (fgetpos)(FILE *stream, fpos_t *pos); 171b14be51dScgdint (fseek)(FILE *stream, long offset, int whence); 172b14be51dScgdint (fsetpos)(FILE *stream, const fpos_t *pos); 173b14be51dScgdlong (ftell)(FILE *stream); 174b14be51dScgdvoid (rewind)(FILE *stream); 175b14be51dScgdvoid (clearerr)(FILE *stream); 176b14be51dScgdint (feof)(FILE *stream); 177b14be51dScgdint (ferror)(FILE *stream); 178b14be51dScgdvoid (perror)(const char *s); 179b14be51dScgd 180b14be51dScgd/* 181b14be51dScgd * stdlib.h 182b14be51dScgd */ 183b14be51dScgddouble (atof)(const char *nptr); 184b14be51dScgdint (atoi)(const char *nptr); 185b14be51dScgdlong (atol)(const char *nptr); 186b14be51dScgddouble (strtod)(const char *nptr, char **endptr); 187b14be51dScgdlong (strtol)(const char *nptr, char **endptr, int base); 188b14be51dScgdunsigned long (strtoul)(const char *nptr, char **endptr, int base); 189b14be51dScgdint (rand)(void); 190b14be51dScgdvoid (srand)(unsigned seed); 191b14be51dScgdvoid *(calloc)(size_t nmemb, size_t size); 192b14be51dScgdvoid (free)(void *ptr); 193b14be51dScgdvoid *(malloc)(size_t size); 194b14be51dScgdvoid *(realloc)(void *ptr, size_t size); 195b14be51dScgdvoid (abort)(void); 196b14be51dScgdint (atexit)(void (*func)(void)); 197b14be51dScgdvoid (exit)(int status); 198b14be51dScgdchar *(getenv)(const char *name); 199b14be51dScgdint (system)(const char *string); 200b14be51dScgdvoid *(bsearch)(const void *key, const void *base, size_t nmemb, 201b14be51dScgd size_t size, int (*compar)(const void *, const void *)); 202b14be51dScgdvoid (qsort)(void *base, size_t nmemb, size_t size, 203b14be51dScgd int (*compar)(const void *, const void *)); 204b14be51dScgdint (abs)(int j); 205b14be51dScgddiv_t (div)(int numer, int denom); 206b14be51dScgdlong (labs)(long j); 207b14be51dScgdldiv_t (ldiv)(long numer, long denom); 208b14be51dScgdint (mblen)(const char *s, size_t n); 209b14be51dScgdint (mbtowc)(wchar_t *PWC, const char *s, size_t n); 210b14be51dScgdint (wctomb)(char *s, wchar_t wchar); 211b14be51dScgdsize_t (mbstowcs)(wchar_t *pwcs, const char *s, size_t n); 212b14be51dScgdsize_t (wcstombs)(char *s, const wchar_t *pwcs, size_t n); 213b14be51dScgd 214b14be51dScgd/* 215b14be51dScgd * string.h 216b14be51dScgd */ 217b14be51dScgdvoid *(memcpy)(void *s1, const void *s2, size_t n); 218b14be51dScgdvoid *(memmove)(void *s1, const void *s2, size_t n); 219b14be51dScgdchar *(strcpy)(char *s1, const char *s2); 220b14be51dScgdchar *(strncpy)(char *s1, const char *s2, size_t n); 221b14be51dScgdchar *(strcat)(char *s1, const char *s2); 222b14be51dScgdchar *(strncat)(char *s1, const char *s2, size_t n); 223b14be51dScgdint (memcmp)(const void *s1, const void *s2, size_t n); 224b14be51dScgdint (strcmp)(const char *s1, const char *s2); 225b14be51dScgdint (strcoll)(const char *s1, const char *s2); 226b14be51dScgdint (strncmp)(const char *s1, const char *s2, size_t n); 227b14be51dScgdsize_t (strxfrm)(char *s1, const char *s2, size_t n); 228b14be51dScgdvoid *(memchr)(const void *s, int c, size_t n); 229b14be51dScgdchar *(strchr)(const char *s, int c); 230b14be51dScgdsize_t (strcspn)(const char *s1, const char *s2); 231b14be51dScgdchar *(strpbrk)(const char *s1, const char *s2); 232b14be51dScgdchar *(strrchr)(const char *s1, int c); 233b14be51dScgdsize_t (strspn)(const char *s1, const char *s2); 234b14be51dScgdchar *(strstr)(const char *s1, const char *s2); 235b14be51dScgdchar *(strtok)(char *s1, const char *s2); 236b14be51dScgdvoid *(memset)(void *s, int c, size_t n); 237b14be51dScgdchar *(strerror)(int errnom); 238b14be51dScgdsize_t (strlen)(const char *s); 239b14be51dScgd 240b14be51dScgd/* 241b14be51dScgd * time.h 242b14be51dScgd */ 243b14be51dScgdclock_t (clock)(void); 244b14be51dScgddouble (difftime)(time_t time1, time_t time2); 245b14be51dScgdtime_t (mktime)(struct tm *timeptr); 246b14be51dScgdtime_t (time)(time_t *timer); 247b14be51dScgdchar *(asctime)(const struct tm *timeptr); 248b14be51dScgdchar *(ctime)(const time_t *timer); 249b14be51dScgdstruct tm *(gmtime)(const time_t *timer); 250b14be51dScgdstruct tm *(localtime)(const time_t *timer); 251b14be51dScgdsize_t (strftime)(char *s, size_t maxsize, const char *format, 252b14be51dScgd const struct tm *timeptr); 253