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