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