Sun Sep 21 16:59:46 2008 UTC ()
add missing attributes to the remaining calls, even the ones that gcc has
builtin attributes for (for symmetry and consistency). In the future this
might change to use compiler-neutral macros. On the other hand I don't
know of any other compiler that provides other macros with similar
functionality, so why bother?


(christos)
diff -r1.1 -r1.2 src/include/monetary.h
diff -r1.72 -r1.73 src/include/stdio.h
diff -r1.36 -r1.37 src/include/time.h

cvs diff -r1.1 -r1.2 src/include/monetary.h (switch to unified diff)

--- src/include/monetary.h 2005/04/03 20:09:29 1.1
+++ src/include/monetary.h 2008/09/21 16:59:46 1.2
@@ -1,51 +1,52 @@ @@ -1,51 +1,52 @@
1/* $NetBSD: monetary.h,v 1.1 2005/04/03 20:09:29 christos Exp $ */ 1/* $NetBSD: monetary.h,v 1.2 2008/09/21 16:59:46 christos Exp $ */
2 2
3/*- 3/*-
4 * Copyright (c) 2001 Alexey Zelkin <phantom@FreeBSD.org> 4 * Copyright (c) 2001 Alexey Zelkin <phantom@FreeBSD.org>
5 * All rights reserved. 5 * All rights reserved.
6 * 6 *
7 * Redistribution and use in source and binary forms, with or without 7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions 8 * modification, are permitted provided that the following conditions
9 * are met: 9 * are met:
10 * 1. Redistributions of source code must retain the above copyright 10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer. 11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright 12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the 13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution. 14 * documentation and/or other materials provided with the distribution.
15 * 15 *
16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
17 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 19 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26 * SUCH DAMAGE. 26 * SUCH DAMAGE.
27 * 27 *
28 * $FreeBSD: src/include/monetary.h,v 1.7 2002/09/20 08:22:48 mike Exp $ 28 * $FreeBSD: src/include/monetary.h,v 1.7 2002/09/20 08:22:48 mike Exp $
29 */ 29 */
30 30
31#ifndef _MONETARY_H_ 31#ifndef _MONETARY_H_
32#define _MONETARY_H_ 32#define _MONETARY_H_
33 33
34#include <sys/cdefs.h> 34#include <sys/cdefs.h>
35#include <machine/ansi.h> 35#include <machine/ansi.h>
36 36
37#ifdef _BSD_SIZE_T_ 37#ifdef _BSD_SIZE_T_
38typedef _BSD_SIZE_T_ size_t; 38typedef _BSD_SIZE_T_ size_t;
39#undef _BSD_SIZE_T_ 39#undef _BSD_SIZE_T_
40#endif 40#endif
41 41
42#ifdef _BSD_SSIZE_T_ 42#ifdef _BSD_SSIZE_T_
43typedef _BSD_SSIZE_T_ ssize_t; 43typedef _BSD_SSIZE_T_ ssize_t;
44#undef _BSD_SSIZE_T_ 44#undef _BSD_SSIZE_T_
45#endif 45#endif
46 46
47__BEGIN_DECLS 47__BEGIN_DECLS
48ssize_t strfmon(char * __restrict, size_t, const char * __restrict, ...); 48ssize_t strfmon(char * __restrict, size_t, const char * __restrict, ...)
 49 __attribute__((__format__(__strfmon__, 3, 4)));
49__END_DECLS 50__END_DECLS
50 51
51#endif /* !_MONETARY_H_ */ 52#endif /* !_MONETARY_H_ */

cvs diff -r1.72 -r1.73 src/include/stdio.h (switch to unified diff)

--- src/include/stdio.h 2008/08/04 17:08:49 1.72
+++ src/include/stdio.h 2008/09/21 16:59:46 1.73
@@ -1,492 +1,501 @@ @@ -1,492 +1,501 @@
1/* $NetBSD: stdio.h,v 1.72 2008/08/04 17:08:49 matt Exp $ */ 1/* $NetBSD: stdio.h,v 1.73 2008/09/21 16:59:46 christos Exp $ */
2 2
3/*- 3/*-
4 * Copyright (c) 1990, 1993 4 * Copyright (c) 1990, 1993
5 * The Regents of the University of California. All rights reserved. 5 * The Regents of the University of California. All rights reserved.
6 * 6 *
7 * This code is derived from software contributed to Berkeley by 7 * This code is derived from software contributed to Berkeley by
8 * Chris Torek. 8 * Chris Torek.
9 * 9 *
10 * Redistribution and use in source and binary forms, with or without 10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions 11 * modification, are permitted provided that the following conditions
12 * are met: 12 * are met:
13 * 1. Redistributions of source code must retain the above copyright 13 * 1. Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer. 14 * notice, this list of conditions and the following disclaimer.
15 * 2. Redistributions in binary form must reproduce the above copyright 15 * 2. Redistributions in binary form must reproduce the above copyright
16 * notice, this list of conditions and the following disclaimer in the 16 * notice, this list of conditions and the following disclaimer in the
17 * documentation and/or other materials provided with the distribution. 17 * documentation and/or other materials provided with the distribution.
18 * 3. Neither the name of the University nor the names of its contributors 18 * 3. Neither the name of the University nor the names of its contributors
19 * may be used to endorse or promote products derived from this software 19 * may be used to endorse or promote products derived from this software
20 * without specific prior written permission. 20 * without specific prior written permission.
21 * 21 *
22 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 22 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
23 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 25 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
26 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 26 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 27 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 28 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 29 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 30 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 31 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32 * SUCH DAMAGE. 32 * SUCH DAMAGE.
33 * 33 *
34 * @(#)stdio.h 8.5 (Berkeley) 4/29/95 34 * @(#)stdio.h 8.5 (Berkeley) 4/29/95
35 */ 35 */
36 36
37#ifndef _STDIO_H_ 37#ifndef _STDIO_H_
38#define _STDIO_H_ 38#define _STDIO_H_
39 39
40#include <sys/cdefs.h> 40#include <sys/cdefs.h>
41#include <sys/featuretest.h> 41#include <sys/featuretest.h>
42#include <sys/ansi.h> 42#include <sys/ansi.h>
43 43
44#include <machine/ansi.h> 44#include <machine/ansi.h>
45#ifdef _BSD_SIZE_T_ 45#ifdef _BSD_SIZE_T_
46typedef _BSD_SIZE_T_ size_t; 46typedef _BSD_SIZE_T_ size_t;
47#undef _BSD_SIZE_T_ 47#undef _BSD_SIZE_T_
48#endif 48#endif
49 49
50#include <sys/null.h> 50#include <sys/null.h>
51 51
52/*  52/*
53 * This is fairly grotesque, but pure ANSI code must not inspect the 53 * This is fairly grotesque, but pure ANSI code must not inspect the
54 * innards of an fpos_t anyway. The library internally uses off_t, 54 * innards of an fpos_t anyway. The library internally uses off_t,
55 * which we assume is exactly as big as eight chars. 55 * which we assume is exactly as big as eight chars.
56 */ 56 */
57#if (!defined(_ANSI_SOURCE) && !defined(__STRICT_ANSI__)) || defined(_LIBC) 57#if (!defined(_ANSI_SOURCE) && !defined(__STRICT_ANSI__)) || defined(_LIBC)
58typedef __off_t fpos_t; 58typedef __off_t fpos_t;
59#else 59#else
60typedef struct __sfpos { 60typedef struct __sfpos {
61 __off_t _pos; 61 __off_t _pos;
62} fpos_t; 62} fpos_t;
63#endif 63#endif
64 64
65#define _FSTDIO /* Define for new stdio with functions. */ 65#define _FSTDIO /* Define for new stdio with functions. */
66 66
67/* 67/*
68 * NB: to fit things in six character monocase externals, the stdio 68 * NB: to fit things in six character monocase externals, the stdio
69 * code uses the prefix `__s' for stdio objects, typically followed 69 * code uses the prefix `__s' for stdio objects, typically followed
70 * by a three-character attempt at a mnemonic. 70 * by a three-character attempt at a mnemonic.
71 */ 71 */
72 72
73/* stdio buffers */ 73/* stdio buffers */
74struct __sbuf { 74struct __sbuf {
75 unsigned char *_base; 75 unsigned char *_base;
76 int _size; 76 int _size;
77}; 77};
78 78
79/* 79/*
80 * stdio state variables. 80 * stdio state variables.
81 * 81 *
82 * The following always hold: 82 * The following always hold:
83 * 83 *
84 * if (_flags&(__SLBF|__SWR)) == (__SLBF|__SWR), 84 * if (_flags&(__SLBF|__SWR)) == (__SLBF|__SWR),
85 * _lbfsize is -_bf._size, else _lbfsize is 0 85 * _lbfsize is -_bf._size, else _lbfsize is 0
86 * if _flags&__SRD, _w is 0 86 * if _flags&__SRD, _w is 0
87 * if _flags&__SWR, _r is 0 87 * if _flags&__SWR, _r is 0
88 * 88 *
89 * This ensures that the getc and putc macros (or inline functions) never 89 * This ensures that the getc and putc macros (or inline functions) never
90 * try to write or read from a file that is in `read' or `write' mode. 90 * try to write or read from a file that is in `read' or `write' mode.
91 * (Moreover, they can, and do, automatically switch from read mode to 91 * (Moreover, they can, and do, automatically switch from read mode to
92 * write mode, and back, on "r+" and "w+" files.) 92 * write mode, and back, on "r+" and "w+" files.)
93 * 93 *
94 * _lbfsize is used only to make the inline line-buffered output stream 94 * _lbfsize is used only to make the inline line-buffered output stream
95 * code as compact as possible. 95 * code as compact as possible.
96 * 96 *
97 * _ub, _up, and _ur are used when ungetc() pushes back more characters 97 * _ub, _up, and _ur are used when ungetc() pushes back more characters
98 * than fit in the current _bf, or when ungetc() pushes back a character 98 * than fit in the current _bf, or when ungetc() pushes back a character
99 * that does not match the previous one in _bf. When this happens, 99 * that does not match the previous one in _bf. When this happens,
100 * _ub._base becomes non-nil (i.e., a stream has ungetc() data iff 100 * _ub._base becomes non-nil (i.e., a stream has ungetc() data iff
101 * _ub._base!=NULL) and _up and _ur save the current values of _p and _r. 101 * _ub._base!=NULL) and _up and _ur save the current values of _p and _r.
102 * 102 *
103 * NB: see WARNING above before changing the layout of this structure! 103 * NB: see WARNING above before changing the layout of this structure!
104 */ 104 */
105typedef struct __sFILE { 105typedef struct __sFILE {
106 unsigned char *_p; /* current position in (some) buffer */ 106 unsigned char *_p; /* current position in (some) buffer */
107 int _r; /* read space left for getc() */ 107 int _r; /* read space left for getc() */
108 int _w; /* write space left for putc() */ 108 int _w; /* write space left for putc() */
109 unsigned short _flags; /* flags, below; this FILE is free if 0 */ 109 unsigned short _flags; /* flags, below; this FILE is free if 0 */
110 short _file; /* fileno, if Unix descriptor, else -1 */ 110 short _file; /* fileno, if Unix descriptor, else -1 */
111 struct __sbuf _bf; /* the buffer (at least 1 byte, if !NULL) */ 111 struct __sbuf _bf; /* the buffer (at least 1 byte, if !NULL) */
112 int _lbfsize; /* 0 or -_bf._size, for inline putc */ 112 int _lbfsize; /* 0 or -_bf._size, for inline putc */
113 113
114 /* operations */ 114 /* operations */
115 void *_cookie; /* cookie passed to io functions */ 115 void *_cookie; /* cookie passed to io functions */
116 int (*_close)(void *); 116 int (*_close)(void *);
117 int (*_read) (void *, char *, int); 117 int (*_read) (void *, char *, int);
118 fpos_t (*_seek) (void *, fpos_t, int); 118 fpos_t (*_seek) (void *, fpos_t, int);
119 int (*_write)(void *, const char *, int); 119 int (*_write)(void *, const char *, int);
120 120
121 /* file extension */ 121 /* file extension */
122 struct __sbuf _ext; 122 struct __sbuf _ext;
123 123
124 /* separate buffer for long sequences of ungetc() */ 124 /* separate buffer for long sequences of ungetc() */
125 unsigned char *_up; /* saved _p when _p is doing ungetc data */ 125 unsigned char *_up; /* saved _p when _p is doing ungetc data */
126 int _ur; /* saved _r when _r is counting ungetc data */ 126 int _ur; /* saved _r when _r is counting ungetc data */
127 127
128 /* tricks to meet minimum requirements even when malloc() fails */ 128 /* tricks to meet minimum requirements even when malloc() fails */
129 unsigned char _ubuf[3]; /* guarantee an ungetc() buffer */ 129 unsigned char _ubuf[3]; /* guarantee an ungetc() buffer */
130 unsigned char _nbuf[1]; /* guarantee a getc() buffer */ 130 unsigned char _nbuf[1]; /* guarantee a getc() buffer */
131 131
132 /* separate buffer for fgetln() when line crosses buffer boundary */ 132 /* separate buffer for fgetln() when line crosses buffer boundary */
133 struct __sbuf _lb; /* buffer for fgetln() */ 133 struct __sbuf _lb; /* buffer for fgetln() */
134 134
135 /* Unix stdio files get aligned to block boundaries on fseek() */ 135 /* Unix stdio files get aligned to block boundaries on fseek() */
136 int _blksize; /* stat.st_blksize (may be != _bf._size) */ 136 int _blksize; /* stat.st_blksize (may be != _bf._size) */
137 fpos_t _offset; /* current lseek offset */ 137 fpos_t _offset; /* current lseek offset */
138} FILE; 138} FILE;
139 139
140__BEGIN_DECLS 140__BEGIN_DECLS
141extern FILE __sF[]; 141extern FILE __sF[];
142__END_DECLS 142__END_DECLS
143 143
144#define __SLBF 0x0001 /* line buffered */ 144#define __SLBF 0x0001 /* line buffered */
145#define __SNBF 0x0002 /* unbuffered */ 145#define __SNBF 0x0002 /* unbuffered */
146#define __SRD 0x0004 /* OK to read */ 146#define __SRD 0x0004 /* OK to read */
147#define __SWR 0x0008 /* OK to write */ 147#define __SWR 0x0008 /* OK to write */
148 /* RD and WR are never simultaneously asserted */ 148 /* RD and WR are never simultaneously asserted */
149#define __SRW 0x0010 /* open for reading & writing */ 149#define __SRW 0x0010 /* open for reading & writing */
150#define __SEOF 0x0020 /* found EOF */ 150#define __SEOF 0x0020 /* found EOF */
151#define __SERR 0x0040 /* found error */ 151#define __SERR 0x0040 /* found error */
152#define __SMBF 0x0080 /* _buf is from malloc */ 152#define __SMBF 0x0080 /* _buf is from malloc */
153#define __SAPP 0x0100 /* fdopen()ed in append mode */ 153#define __SAPP 0x0100 /* fdopen()ed in append mode */
154#define __SSTR 0x0200 /* this is an sprintf/snprintf string */ 154#define __SSTR 0x0200 /* this is an sprintf/snprintf string */
155#define __SOPT 0x0400 /* do fseek() optimization */ 155#define __SOPT 0x0400 /* do fseek() optimization */
156#define __SNPT 0x0800 /* do not do fseek() optimization */ 156#define __SNPT 0x0800 /* do not do fseek() optimization */
157#define __SOFF 0x1000 /* set iff _offset is in fact correct */ 157#define __SOFF 0x1000 /* set iff _offset is in fact correct */
158#define __SMOD 0x2000 /* true => fgetln modified _p text */ 158#define __SMOD 0x2000 /* true => fgetln modified _p text */
159#define __SALC 0x4000 /* allocate string space dynamically */ 159#define __SALC 0x4000 /* allocate string space dynamically */
160 160
161/* 161/*
162 * The following three definitions are for ANSI C, which took them 162 * The following three definitions are for ANSI C, which took them
163 * from System V, which brilliantly took internal interface macros and 163 * from System V, which brilliantly took internal interface macros and
164 * made them official arguments to setvbuf(), without renaming them. 164 * made them official arguments to setvbuf(), without renaming them.
165 * Hence, these ugly _IOxxx names are *supposed* to appear in user code. 165 * Hence, these ugly _IOxxx names are *supposed* to appear in user code.
166 * 166 *
167 * Although numbered as their counterparts above, the implementation 167 * Although numbered as their counterparts above, the implementation
168 * does not rely on this. 168 * does not rely on this.
169 */ 169 */
170#define _IOFBF 0 /* setvbuf should set fully buffered */ 170#define _IOFBF 0 /* setvbuf should set fully buffered */
171#define _IOLBF 1 /* setvbuf should set line buffered */ 171#define _IOLBF 1 /* setvbuf should set line buffered */
172#define _IONBF 2 /* setvbuf should set unbuffered */ 172#define _IONBF 2 /* setvbuf should set unbuffered */
173 173
174#define BUFSIZ 1024 /* size of buffer used by setbuf */ 174#define BUFSIZ 1024 /* size of buffer used by setbuf */
175#define EOF (-1) 175#define EOF (-1)
176 176
177/* 177/*
178 * FOPEN_MAX is a minimum maximum, and is the number of streams that 178 * FOPEN_MAX is a minimum maximum, and is the number of streams that
179 * stdio can provide without attempting to allocate further resources 179 * stdio can provide without attempting to allocate further resources
180 * (which could fail). Do not use this for anything. 180 * (which could fail). Do not use this for anything.
181 */ 181 */
182 /* must be == _POSIX_STREAM_MAX <limits.h> */ 182 /* must be == _POSIX_STREAM_MAX <limits.h> */
183#define FOPEN_MAX 20 /* must be <= OPEN_MAX <sys/syslimits.h> */ 183#define FOPEN_MAX 20 /* must be <= OPEN_MAX <sys/syslimits.h> */
184#define FILENAME_MAX 1024 /* must be <= PATH_MAX <sys/syslimits.h> */ 184#define FILENAME_MAX 1024 /* must be <= PATH_MAX <sys/syslimits.h> */
185 185
186/* System V/ANSI C; this is the wrong way to do this, do *not* use these. */ 186/* System V/ANSI C; this is the wrong way to do this, do *not* use these. */
187#if defined(_XOPEN_SOURCE) || defined(_NETBSD_SOURCE) 187#if defined(_XOPEN_SOURCE) || defined(_NETBSD_SOURCE)
188#define P_tmpdir "/var/tmp/" 188#define P_tmpdir "/var/tmp/"
189#endif 189#endif
190#define L_tmpnam 1024 /* XXX must be == PATH_MAX */ 190#define L_tmpnam 1024 /* XXX must be == PATH_MAX */
191/* Always ensure that this is consistent with <limits.h> */ 191/* Always ensure that this is consistent with <limits.h> */
192#ifndef TMP_MAX 192#ifndef TMP_MAX
193#define TMP_MAX 308915776 /* Legacy */ 193#define TMP_MAX 308915776 /* Legacy */
194#endif 194#endif
195 195
196/* Always ensure that these are consistent with <fcntl.h> and <unistd.h>! */ 196/* Always ensure that these are consistent with <fcntl.h> and <unistd.h>! */
197#ifndef SEEK_SET 197#ifndef SEEK_SET
198#define SEEK_SET 0 /* set file offset to offset */ 198#define SEEK_SET 0 /* set file offset to offset */
199#endif 199#endif
200#ifndef SEEK_CUR 200#ifndef SEEK_CUR
201#define SEEK_CUR 1 /* set file offset to current plus offset */ 201#define SEEK_CUR 1 /* set file offset to current plus offset */
202#endif 202#endif
203#ifndef SEEK_END 203#ifndef SEEK_END
204#define SEEK_END 2 /* set file offset to EOF plus offset */ 204#define SEEK_END 2 /* set file offset to EOF plus offset */
205#endif 205#endif
206 206
207#define stdin (&__sF[0]) 207#define stdin (&__sF[0])
208#define stdout (&__sF[1]) 208#define stdout (&__sF[1])
209#define stderr (&__sF[2]) 209#define stderr (&__sF[2])
210 210
211/* 211/*
212 * Functions defined in ANSI C standard. 212 * Functions defined in ANSI C standard.
213 */ 213 */
214__BEGIN_DECLS 214__BEGIN_DECLS
215void clearerr(FILE *); 215void clearerr(FILE *);
216int fclose(FILE *); 216int fclose(FILE *);
217int feof(FILE *); 217int feof(FILE *);
218int ferror(FILE *); 218int ferror(FILE *);
219int fflush(FILE *); 219int fflush(FILE *);
220int fgetc(FILE *); 220int fgetc(FILE *);
221int fgetpos(FILE * __restrict, fpos_t * __restrict); 221int fgetpos(FILE * __restrict, fpos_t * __restrict);
222char *fgets(char * __restrict, int, FILE * __restrict); 222char *fgets(char * __restrict, int, FILE * __restrict);
223FILE *fopen(const char * __restrict , const char * __restrict); 223FILE *fopen(const char * __restrict , const char * __restrict);
224int fprintf(FILE * __restrict , const char * __restrict, ...); 224int fprintf(FILE * __restrict , const char * __restrict, ...)
 225 __attribute__((__format__(__printf__, 2, 3)));
225int fputc(int, FILE *); 226int fputc(int, FILE *);
226int fputs(const char * __restrict, FILE * __restrict); 227int fputs(const char * __restrict, FILE * __restrict);
227size_t fread(void * __restrict, size_t, size_t, FILE * __restrict); 228size_t fread(void * __restrict, size_t, size_t, FILE * __restrict);
228FILE *freopen(const char * __restrict, const char * __restrict, 229FILE *freopen(const char * __restrict, const char * __restrict,
229 FILE * __restrict); 230 FILE * __restrict);
230int fscanf(FILE * __restrict, const char * __restrict, ...); 231int fscanf(FILE * __restrict, const char * __restrict, ...)
 232 __attribute__((__format__(__scanf__, 2, 3)));
231int fseek(FILE *, long, int); 233int fseek(FILE *, long, int);
232int fsetpos(FILE *, const fpos_t *); 234int fsetpos(FILE *, const fpos_t *);
233long ftell(FILE *); 235long ftell(FILE *);
234size_t fwrite(const void * __restrict, size_t, size_t, FILE * __restrict); 236size_t fwrite(const void * __restrict, size_t, size_t, FILE * __restrict);
235int getc(FILE *); 237int getc(FILE *);
236int getchar(void); 238int getchar(void);
237void perror(const char *); 239void perror(const char *);
238int printf(const char * __restrict, ...); 240int printf(const char * __restrict, ...)
 241 __attribute__((__format__(__printf__, 1, 2)));
239int putc(int, FILE *); 242int putc(int, FILE *);
240int putchar(int); 243int putchar(int);
241int puts(const char *); 244int puts(const char *);
242int remove(const char *); 245int remove(const char *);
243void rewind(FILE *); 246void rewind(FILE *);
244int scanf(const char * __restrict, ...); 247int scanf(const char * __restrict, ...)
 248 __attribute__((__format__(__scanf__, 1, 2)));
245void setbuf(FILE * __restrict, char * __restrict); 249void setbuf(FILE * __restrict, char * __restrict);
246int setvbuf(FILE * __restrict, char * __restrict, int, size_t); 250int setvbuf(FILE * __restrict, char * __restrict, int, size_t);
247int sscanf(const char * __restrict, const char * __restrict, ...); 251int sscanf(const char * __restrict, const char * __restrict, ...)
 252 __attribute__((__format__(__scanf__, 2, 3)));
248FILE *tmpfile(void); 253FILE *tmpfile(void);
249int ungetc(int, FILE *); 254int ungetc(int, FILE *);
250int vfprintf(FILE * __restrict, const char * __restrict, _BSD_VA_LIST_); 255int vfprintf(FILE * __restrict, const char * __restrict, _BSD_VA_LIST_)
251int vprintf(const char * __restrict, _BSD_VA_LIST_); 256 __attribute__((__format__(__printf__, 2, 0)));
 257int vprintf(const char * __restrict, _BSD_VA_LIST_)
 258 __attribute__((__format__(__printf__, 1, 0)));
252 259
253#ifndef __AUDIT__ 260#ifndef __AUDIT__
254char *gets(char *); 261char *gets(char *);
255int sprintf(char * __restrict, const char * __restrict, ...); 262int sprintf(char * __restrict, const char * __restrict, ...)
 263 __attribute__((__format__(__printf__, 2, 3)));
256char *tmpnam(char *); 264char *tmpnam(char *);
257int vsprintf(char * __restrict, const char * __restrict, 265int vsprintf(char * __restrict, const char * __restrict,
258 _BSD_VA_LIST_); 266 _BSD_VA_LIST_)
 267 __attribute__((__format__(__printf__, 2, 0)));
259#endif 268#endif
260 269
261#if defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE) 270#if defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE)
262int rename (const char *, const char *) __RENAME(__posix_rename); 271int rename (const char *, const char *) __RENAME(__posix_rename);
263#else 272#else
264int rename (const char *, const char *); 273int rename (const char *, const char *);
265#endif 274#endif
266__END_DECLS 275__END_DECLS
267 276
268/* 277/*
269 * IEEE Std 1003.1-90 278 * IEEE Std 1003.1-90
270 */ 279 */
271#if defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE) || \ 280#if defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE) || \
272 defined(_NETBSD_SOURCE) 281 defined(_NETBSD_SOURCE)
273#define L_ctermid 1024 /* size for ctermid(); PATH_MAX */ 282#define L_ctermid 1024 /* size for ctermid(); PATH_MAX */
274#define L_cuserid 9 /* size for cuserid(); UT_NAMESIZE + 1 */ 283#define L_cuserid 9 /* size for cuserid(); UT_NAMESIZE + 1 */
275 284
276__BEGIN_DECLS 285__BEGIN_DECLS
277char *ctermid(char *); 286char *ctermid(char *);
278#ifndef __CUSERID_DECLARED 287#ifndef __CUSERID_DECLARED
279#define __CUSERID_DECLARED 288#define __CUSERID_DECLARED
280/* also declared in unistd.h */ 289/* also declared in unistd.h */
281char *cuserid(char *); 290char *cuserid(char *);
282#endif /* __CUSERID_DECLARED */ 291#endif /* __CUSERID_DECLARED */
283FILE *fdopen(int, const char *); 292FILE *fdopen(int, const char *);
284int fileno(FILE *); 293int fileno(FILE *);
285__END_DECLS 294__END_DECLS
286#endif /* not ANSI */ 295#endif /* not ANSI */
287 296
288/* 297/*
289 * IEEE Std 1003.1c-95, also adopted by X/Open CAE Spec Issue 5 Version 2 298 * IEEE Std 1003.1c-95, also adopted by X/Open CAE Spec Issue 5 Version 2
290 */ 299 */
291#if (_POSIX_C_SOURCE - 0) >= 199506L || (_XOPEN_SOURCE - 0) >= 500 || \ 300#if (_POSIX_C_SOURCE - 0) >= 199506L || (_XOPEN_SOURCE - 0) >= 500 || \
292 defined(_REENTRANT) || defined(_NETBSD_SOURCE) 301 defined(_REENTRANT) || defined(_NETBSD_SOURCE)
293__BEGIN_DECLS 302__BEGIN_DECLS
294void flockfile(FILE *); 303void flockfile(FILE *);
295int ftrylockfile(FILE *); 304int ftrylockfile(FILE *);
296void funlockfile(FILE *); 305void funlockfile(FILE *);
297int getc_unlocked(FILE *); 306int getc_unlocked(FILE *);
298int getchar_unlocked(void); 307int getchar_unlocked(void);
299int putc_unlocked(int, FILE *); 308int putc_unlocked(int, FILE *);
300int putchar_unlocked(int); 309int putchar_unlocked(int);
301__END_DECLS 310__END_DECLS
302#endif /* _POSIX_C_SOURCE >= 1995056 || _XOPEN_SOURCE >= 500 || ... */ 311#endif /* _POSIX_C_SOURCE >= 1995056 || _XOPEN_SOURCE >= 500 || ... */
303 312
304/* 313/*
305 * Functions defined in POSIX 1003.2 and XPG2 or later. 314 * Functions defined in POSIX 1003.2 and XPG2 or later.
306 */ 315 */
307#if (_POSIX_C_SOURCE - 0) >= 2 || (_XOPEN_SOURCE - 0) >= 2 || \ 316#if (_POSIX_C_SOURCE - 0) >= 2 || (_XOPEN_SOURCE - 0) >= 2 || \
308 defined(_NETBSD_SOURCE) 317 defined(_NETBSD_SOURCE)
309__BEGIN_DECLS 318__BEGIN_DECLS
310int pclose(FILE *); 319int pclose(FILE *);
311FILE *popen(const char *, const char *); 320FILE *popen(const char *, const char *);
312__END_DECLS 321__END_DECLS
313#endif 322#endif
314 323
315/* 324/*
316 * Functions defined in ISO XPG4.2, ISO C99, POSIX 1003.1-2001 or later. 325 * Functions defined in ISO XPG4.2, ISO C99, POSIX 1003.1-2001 or later.
317 */ 326 */
318#if ((__STDC_VERSION__ - 0) >= 199901L) || \ 327#if ((__STDC_VERSION__ - 0) >= 199901L) || \
319 ((_POSIX_C_SOURCE - 0) >= 200112L) || \ 328 ((_POSIX_C_SOURCE - 0) >= 200112L) || \
320 (defined(_XOPEN_SOURCE) && defined(_XOPEN_SOURCE_EXTENDED)) || \ 329 (defined(_XOPEN_SOURCE) && defined(_XOPEN_SOURCE_EXTENDED)) || \
321 ((_XOPEN_SOURCE - 0) >= 500) || \ 330 ((_XOPEN_SOURCE - 0) >= 500) || \
322 defined(_ISOC99_SOURCE) || defined(_NETBSD_SOURCE) 331 defined(_ISOC99_SOURCE) || defined(_NETBSD_SOURCE)
323__BEGIN_DECLS 332__BEGIN_DECLS
324int snprintf(char * __restrict, size_t, const char * __restrict, ...) 333int snprintf(char * __restrict, size_t, const char * __restrict, ...)
325 __attribute__((__format__(__printf__, 3, 4))); 334 __attribute__((__format__(__printf__, 3, 4)));
326int vsnprintf(char * __restrict, size_t, const char * __restrict, 335int vsnprintf(char * __restrict, size_t, const char * __restrict,
327 _BSD_VA_LIST_) 336 _BSD_VA_LIST_)
328 __attribute__((__format__(__printf__, 3, 0))); 337 __attribute__((__format__(__printf__, 3, 0)));
329__END_DECLS 338__END_DECLS
330#endif 339#endif
331 340
332/* 341/*
333 * Functions defined in XPG4.2. 342 * Functions defined in XPG4.2.
334 */ 343 */
335#if defined(_XOPEN_SOURCE) || defined(_NETBSD_SOURCE) 344#if defined(_XOPEN_SOURCE) || defined(_NETBSD_SOURCE)
336__BEGIN_DECLS 345__BEGIN_DECLS
337int getw(FILE *); 346int getw(FILE *);
338int putw(int, FILE *); 347int putw(int, FILE *);
339 348
340#ifndef __AUDIT__ 349#ifndef __AUDIT__
341char *tempnam(const char *, const char *); 350char *tempnam(const char *, const char *);
342#endif 351#endif
343__END_DECLS 352__END_DECLS
344#endif 353#endif
345 354
346/* 355/*
347 * X/Open CAE Specification Issue 5 Version 2 356 * X/Open CAE Specification Issue 5 Version 2
348 */ 357 */
349#if (_XOPEN_SOURCE - 0) >= 500 || defined(_LARGEFILE_SOURCE) || \ 358#if (_XOPEN_SOURCE - 0) >= 500 || defined(_LARGEFILE_SOURCE) || \
350 defined(_NETBSD_SOURCE) 359 defined(_NETBSD_SOURCE)
351#ifndef off_t 360#ifndef off_t
352typedef __off_t off_t; 361typedef __off_t off_t;
353#define off_t __off_t 362#define off_t __off_t
354#endif /* off_t */ 363#endif /* off_t */
355 364
356__BEGIN_DECLS 365__BEGIN_DECLS
357int fseeko(FILE *, off_t, int); 366int fseeko(FILE *, off_t, int);
358off_t ftello(FILE *); 367off_t ftello(FILE *);
359__END_DECLS 368__END_DECLS
360#endif /* _XOPEN_SOURCE >= 500 || _LARGEFILE_SOURCE || _NETBSD_SOURCE */ 369#endif /* _XOPEN_SOURCE >= 500 || _LARGEFILE_SOURCE || _NETBSD_SOURCE */
361 370
362/* 371/*
363 * Functions defined in ISO C99. Still put under _NETBSD_SOURCE due to 372 * Functions defined in ISO C99. Still put under _NETBSD_SOURCE due to
364 * backward compatible. 373 * backward compatible.
365 */ 374 */
366#if defined(_ISOC99_SOURCE) || defined(_NETBSD_SOURCE) 375#if defined(_ISOC99_SOURCE) || defined(_NETBSD_SOURCE)
367__BEGIN_DECLS 376__BEGIN_DECLS
368int vscanf(const char * __restrict, _BSD_VA_LIST_) 377int vscanf(const char * __restrict, _BSD_VA_LIST_)
369 __attribute__((__format__(__scanf__, 1, 0))); 378 __attribute__((__format__(__scanf__, 1, 0)));
370int vfscanf(FILE * __restrict, const char * __restrict, _BSD_VA_LIST_) 379int vfscanf(FILE * __restrict, const char * __restrict, _BSD_VA_LIST_)
371 __attribute__((__format__(__scanf__, 2, 0))); 380 __attribute__((__format__(__scanf__, 2, 0)));
372int vsscanf(const char * __restrict, const char * __restrict, 381int vsscanf(const char * __restrict, const char * __restrict,
373 _BSD_VA_LIST_) 382 _BSD_VA_LIST_)
374 __attribute__((__format__(__scanf__, 2, 0))); 383 __attribute__((__format__(__scanf__, 2, 0)));
375__END_DECLS 384__END_DECLS
376#endif /* _ISOC99_SOURCE || _NETBSD_SOURCE */ 385#endif /* _ISOC99_SOURCE || _NETBSD_SOURCE */
377 386
378/* 387/*
379 * Routines that are purely local. 388 * Routines that are purely local.
380 */ 389 */
381#if defined(_NETBSD_SOURCE) 390#if defined(_NETBSD_SOURCE)
382 391
383#define FPARSELN_UNESCESC 0x01 392#define FPARSELN_UNESCESC 0x01
384#define FPARSELN_UNESCCONT 0x02 393#define FPARSELN_UNESCCONT 0x02
385#define FPARSELN_UNESCCOMM 0x04 394#define FPARSELN_UNESCCOMM 0x04
386#define FPARSELN_UNESCREST 0x08 395#define FPARSELN_UNESCREST 0x08
387#define FPARSELN_UNESCALL 0x0f 396#define FPARSELN_UNESCALL 0x0f
388 397
389__BEGIN_DECLS 398__BEGIN_DECLS
390int asprintf(char ** __restrict, const char * __restrict, ...) 399int asprintf(char ** __restrict, const char * __restrict, ...)
391 __attribute__((__format__(__printf__, 2, 3))); 400 __attribute__((__format__(__printf__, 2, 3)));
392char *fgetln(FILE * __restrict, size_t * __restrict); 401char *fgetln(FILE * __restrict, size_t * __restrict);
393char *fparseln(FILE *, size_t *, size_t *, const char[3], int); 402char *fparseln(FILE *, size_t *, size_t *, const char[3], int);
394int fpurge(FILE *); 403int fpurge(FILE *);
395void setbuffer(FILE *, char *, int); 404void setbuffer(FILE *, char *, int);
396int setlinebuf(FILE *); 405int setlinebuf(FILE *);
397int vasprintf(char ** __restrict, const char * __restrict, 406int vasprintf(char ** __restrict, const char * __restrict,
398 _BSD_VA_LIST_) 407 _BSD_VA_LIST_)
399 __attribute__((__format__(__printf__, 2, 0))); 408 __attribute__((__format__(__printf__, 2, 0)));
400const char *fmtcheck(const char *, const char *) 409const char *fmtcheck(const char *, const char *)
401 __attribute__((__format_arg__(2))); 410 __attribute__((__format_arg__(2)));
402__END_DECLS 411__END_DECLS
403 412
404/* 413/*
405 * Stdio function-access interface. 414 * Stdio function-access interface.
406 */ 415 */
407__BEGIN_DECLS 416__BEGIN_DECLS
408FILE *funopen(const void *, 417FILE *funopen(const void *,
409 int (*)(void *, char *, int), 418 int (*)(void *, char *, int),
410 int (*)(void *, const char *, int), 419 int (*)(void *, const char *, int),
411 fpos_t (*)(void *, fpos_t, int), 420 fpos_t (*)(void *, fpos_t, int),
412 int (*)(void *)); 421 int (*)(void *));
413__END_DECLS 422__END_DECLS
414#define fropen(cookie, fn) funopen(cookie, fn, 0, 0, 0) 423#define fropen(cookie, fn) funopen(cookie, fn, 0, 0, 0)
415#define fwopen(cookie, fn) funopen(cookie, 0, fn, 0, 0) 424#define fwopen(cookie, fn) funopen(cookie, 0, fn, 0, 0)
416#endif /* _NETBSD_SOURCE */ 425#endif /* _NETBSD_SOURCE */
417 426
418/* 427/*
419 * Functions internal to the implementation. 428 * Functions internal to the implementation.
420 */ 429 */
421__BEGIN_DECLS 430__BEGIN_DECLS
422int __srget(FILE *); 431int __srget(FILE *);
423int __swbuf(int, FILE *); 432int __swbuf(int, FILE *);
424__END_DECLS 433__END_DECLS
425 434
426/* 435/*
427 * The __sfoo macros are here so that we can  436 * The __sfoo macros are here so that we can
428 * define function versions in the C library. 437 * define function versions in the C library.
429 */ 438 */
430#define __sgetc(p) (--(p)->_r < 0 ? __srget(p) : (int)(*(p)->_p++)) 439#define __sgetc(p) (--(p)->_r < 0 ? __srget(p) : (int)(*(p)->_p++))
431#if defined(__GNUC__) && defined(__STDC__) 440#if defined(__GNUC__) && defined(__STDC__)
432static __inline int __sputc(int _c, FILE *_p) { 441static __inline int __sputc(int _c, FILE *_p) {
433 if (--_p->_w >= 0 || (_p->_w >= _p->_lbfsize && (char)_c != '\n')) 442 if (--_p->_w >= 0 || (_p->_w >= _p->_lbfsize && (char)_c != '\n'))
434 return (*_p->_p++ = _c); 443 return (*_p->_p++ = _c);
435 else 444 else
436 return (__swbuf(_c, _p)); 445 return (__swbuf(_c, _p));
437} 446}
438#else 447#else
439/* 448/*
440 * This has been tuned to generate reasonable code on the vax using pcc. 449 * This has been tuned to generate reasonable code on the vax using pcc.
441 */ 450 */
442#define __sputc(c, p) \ 451#define __sputc(c, p) \
443 (--(p)->_w < 0 ? \ 452 (--(p)->_w < 0 ? \
444 (p)->_w >= (p)->_lbfsize ? \ 453 (p)->_w >= (p)->_lbfsize ? \
445 (*(p)->_p = (c)), *(p)->_p != '\n' ? \ 454 (*(p)->_p = (c)), *(p)->_p != '\n' ? \
446 (int)*(p)->_p++ : \ 455 (int)*(p)->_p++ : \
447 __swbuf('\n', p) : \ 456 __swbuf('\n', p) : \
448 __swbuf((int)(c), p) : \ 457 __swbuf((int)(c), p) : \
449 (*(p)->_p = (c), (int)*(p)->_p++)) 458 (*(p)->_p = (c), (int)*(p)->_p++))
450#endif 459#endif
451 460
452#define __sfeof(p) (((p)->_flags & __SEOF) != 0) 461#define __sfeof(p) (((p)->_flags & __SEOF) != 0)
453#define __sferror(p) (((p)->_flags & __SERR) != 0) 462#define __sferror(p) (((p)->_flags & __SERR) != 0)
454#define __sclearerr(p) ((void)((p)->_flags &= ~(__SERR|__SEOF))) 463#define __sclearerr(p) ((void)((p)->_flags &= ~(__SERR|__SEOF)))
455#define __sfileno(p) \ 464#define __sfileno(p) \
456 ((p)->_file == -1 ? -1 : (int)(unsigned short)(p)->_file) 465 ((p)->_file == -1 ? -1 : (int)(unsigned short)(p)->_file)
457 466
458#ifndef __lint__ 467#ifndef __lint__
459#if !defined(_REENTRANT) && !defined(_PTHREADS) 468#if !defined(_REENTRANT) && !defined(_PTHREADS)
460#define feof(p) __sfeof(p) 469#define feof(p) __sfeof(p)
461#define ferror(p) __sferror(p) 470#define ferror(p) __sferror(p)
462#define clearerr(p) __sclearerr(p) 471#define clearerr(p) __sclearerr(p)
463 472
464#define getc(fp) __sgetc(fp) 473#define getc(fp) __sgetc(fp)
465#define putc(x, fp) __sputc(x, fp) 474#define putc(x, fp) __sputc(x, fp)
466#endif /* !_REENTRANT && !_PTHREADS */ 475#endif /* !_REENTRANT && !_PTHREADS */
467#endif /* __lint__ */ 476#endif /* __lint__ */
468 477
469#define getchar() getc(stdin) 478#define getchar() getc(stdin)
470#define putchar(x) putc(x, stdout) 479#define putchar(x) putc(x, stdout)
471 480
472#if defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE) || \ 481#if defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE) || \
473 defined(_NETBSD_SOURCE) 482 defined(_NETBSD_SOURCE)
474#if !defined(_REENTRANT) && !defined(_PTHREADS) 483#if !defined(_REENTRANT) && !defined(_PTHREADS)
475#define fileno(p) __sfileno(p) 484#define fileno(p) __sfileno(p)
476#endif /* !_REENTRANT && !_PTHREADS */ 485#endif /* !_REENTRANT && !_PTHREADS */
477#endif /* !_ANSI_SOURCE */ 486#endif /* !_ANSI_SOURCE */
478 487
479#if (_POSIX_C_SOURCE - 0) >= 199506L || (_XOPEN_SOURCE - 0) >= 500 || \ 488#if (_POSIX_C_SOURCE - 0) >= 199506L || (_XOPEN_SOURCE - 0) >= 500 || \
480 defined(_REENTRANT) || defined(_NETBSD_SOURCE) 489 defined(_REENTRANT) || defined(_NETBSD_SOURCE)
481#define getc_unlocked(fp) __sgetc(fp) 490#define getc_unlocked(fp) __sgetc(fp)
482#define putc_unlocked(x, fp) __sputc(x, fp) 491#define putc_unlocked(x, fp) __sputc(x, fp)
483 492
484#define getchar_unlocked() getc_unlocked(stdin) 493#define getchar_unlocked() getc_unlocked(stdin)
485#define putchar_unlocked(x) putc_unlocked(x, stdout) 494#define putchar_unlocked(x) putc_unlocked(x, stdout)
486#endif /* _POSIX_C_SOURCE >= 199506 || _XOPEN_SOURCE >= 500 || _REENTRANT... */ 495#endif /* _POSIX_C_SOURCE >= 199506 || _XOPEN_SOURCE >= 500 || _REENTRANT... */
487 496
488#if _FORTIFY_SOURCE > 0 497#if _FORTIFY_SOURCE > 0
489#include <ssp/stdio.h> 498#include <ssp/stdio.h>
490#endif 499#endif
491 500
492#endif /* _STDIO_H_ */ 501#endif /* _STDIO_H_ */

cvs diff -r1.36 -r1.37 src/include/time.h (switch to unified diff)

--- src/include/time.h 2008/04/01 19:23:28 1.36
+++ src/include/time.h 2008/09/21 16:59:46 1.37
@@ -1,167 +1,168 @@ @@ -1,167 +1,168 @@
1/* $NetBSD: time.h,v 1.36 2008/04/01 19:23:28 drochner Exp $ */ 1/* $NetBSD: time.h,v 1.37 2008/09/21 16:59:46 christos Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 1989, 1993 4 * Copyright (c) 1989, 1993
5 * The Regents of the University of California. All rights reserved. 5 * The Regents of the University of California. All rights reserved.
6 * (c) UNIX System Laboratories, Inc. 6 * (c) UNIX System Laboratories, Inc.
7 * All or some portions of this file are derived from material licensed 7 * All or some portions of this file are derived from material licensed
8 * to the University of California by American Telephone and Telegraph 8 * to the University of California by American Telephone and Telegraph
9 * Co. or Unix System Laboratories, Inc. and are reproduced herein with 9 * Co. or Unix System Laboratories, Inc. and are reproduced herein with
10 * the permission of UNIX System Laboratories, Inc. 10 * the permission of UNIX System Laboratories, Inc.
11 * 11 *
12 * Redistribution and use in source and binary forms, with or without 12 * Redistribution and use in source and binary forms, with or without
13 * modification, are permitted provided that the following conditions 13 * modification, are permitted provided that the following conditions
14 * are met: 14 * are met:
15 * 1. Redistributions of source code must retain the above copyright 15 * 1. Redistributions of source code must retain the above copyright
16 * notice, this list of conditions and the following disclaimer. 16 * notice, this list of conditions and the following disclaimer.
17 * 2. Redistributions in binary form must reproduce the above copyright 17 * 2. Redistributions in binary form must reproduce the above copyright
18 * notice, this list of conditions and the following disclaimer in the 18 * notice, this list of conditions and the following disclaimer in the
19 * documentation and/or other materials provided with the distribution. 19 * documentation and/or other materials provided with the distribution.
20 * 3. Neither the name of the University nor the names of its contributors 20 * 3. Neither the name of the University nor the names of its contributors
21 * may be used to endorse or promote products derived from this software 21 * may be used to endorse or promote products derived from this software
22 * without specific prior written permission. 22 * without specific prior written permission.
23 * 23 *
24 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 24 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
25 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 25 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 27 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
30 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 30 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
31 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 31 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 32 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
33 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 33 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34 * SUCH DAMAGE. 34 * SUCH DAMAGE.
35 * 35 *
36 * @(#)time.h 8.3 (Berkeley) 1/21/94 36 * @(#)time.h 8.3 (Berkeley) 1/21/94
37 */ 37 */
38 38
39#ifndef _TIME_H_ 39#ifndef _TIME_H_
40#define _TIME_H_ 40#define _TIME_H_
41 41
42#include <sys/cdefs.h> 42#include <sys/cdefs.h>
43#include <sys/featuretest.h> 43#include <sys/featuretest.h>
44#include <machine/ansi.h> 44#include <machine/ansi.h>
45 45
46#include <sys/null.h> 46#include <sys/null.h>
47 47
48#ifdef _BSD_CLOCK_T_ 48#ifdef _BSD_CLOCK_T_
49typedef _BSD_CLOCK_T_ clock_t; 49typedef _BSD_CLOCK_T_ clock_t;
50#undef _BSD_CLOCK_T_ 50#undef _BSD_CLOCK_T_
51#endif 51#endif
52 52
53#ifdef _BSD_TIME_T_ 53#ifdef _BSD_TIME_T_
54typedef _BSD_TIME_T_ time_t; 54typedef _BSD_TIME_T_ time_t;
55#undef _BSD_TIME_T_ 55#undef _BSD_TIME_T_
56#endif 56#endif
57 57
58#ifdef _BSD_SIZE_T_ 58#ifdef _BSD_SIZE_T_
59typedef _BSD_SIZE_T_ size_t; 59typedef _BSD_SIZE_T_ size_t;
60#undef _BSD_SIZE_T_ 60#undef _BSD_SIZE_T_
61#endif 61#endif
62 62
63#ifdef _BSD_CLOCKID_T_ 63#ifdef _BSD_CLOCKID_T_
64typedef _BSD_CLOCKID_T_ clockid_t; 64typedef _BSD_CLOCKID_T_ clockid_t;
65#undef _BSD_CLOCKID_T_ 65#undef _BSD_CLOCKID_T_
66#endif 66#endif
67 67
68#ifdef _BSD_TIMER_T_ 68#ifdef _BSD_TIMER_T_
69typedef _BSD_TIMER_T_ timer_t; 69typedef _BSD_TIMER_T_ timer_t;
70#undef _BSD_TIMER_T_ 70#undef _BSD_TIMER_T_
71#endif 71#endif
72 72
73#define CLOCKS_PER_SEC 100 73#define CLOCKS_PER_SEC 100
74 74
75struct tm { 75struct tm {
76 int tm_sec; /* seconds after the minute [0-61] */ 76 int tm_sec; /* seconds after the minute [0-61] */
77 int tm_min; /* minutes after the hour [0-59] */ 77 int tm_min; /* minutes after the hour [0-59] */
78 int tm_hour; /* hours since midnight [0-23] */ 78 int tm_hour; /* hours since midnight [0-23] */
79 int tm_mday; /* day of the month [1-31] */ 79 int tm_mday; /* day of the month [1-31] */
80 int tm_mon; /* months since January [0-11] */ 80 int tm_mon; /* months since January [0-11] */
81 int tm_year; /* years since 1900 */ 81 int tm_year; /* years since 1900 */
82 int tm_wday; /* days since Sunday [0-6] */ 82 int tm_wday; /* days since Sunday [0-6] */
83 int tm_yday; /* days since January 1 [0-365] */ 83 int tm_yday; /* days since January 1 [0-365] */
84 int tm_isdst; /* Daylight Savings Time flag */ 84 int tm_isdst; /* Daylight Savings Time flag */
85 long tm_gmtoff; /* offset from UTC in seconds */ 85 long tm_gmtoff; /* offset from UTC in seconds */
86 __aconst char *tm_zone; /* timezone abbreviation */ 86 __aconst char *tm_zone; /* timezone abbreviation */
87}; 87};
88 88
89__BEGIN_DECLS 89__BEGIN_DECLS
90char *asctime(const struct tm *); 90char *asctime(const struct tm *);
91clock_t clock(void); 91clock_t clock(void);
92char *ctime(const time_t *); 92char *ctime(const time_t *);
93double difftime(time_t, time_t); 93double difftime(time_t, time_t);
94struct tm *gmtime(const time_t *); 94struct tm *gmtime(const time_t *);
95struct tm *localtime(const time_t *); 95struct tm *localtime(const time_t *);
96time_t mktime(struct tm *); 96time_t mktime(struct tm *);
97size_t strftime(char * __restrict, size_t, const char * __restrict, 97size_t strftime(char * __restrict, size_t, const char * __restrict,
98 const struct tm * __restrict); 98 const struct tm * __restrict)
 99 __attribute__((__format__(__strftime__, 3, 0)));
99time_t time(time_t *); 100time_t time(time_t *);
100 101
101#if defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE) || \ 102#if defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE) || \
102 defined(_NETBSD_SOURCE) 103 defined(_NETBSD_SOURCE)
103#ifndef __LIBC12_SOURCE__ 104#ifndef __LIBC12_SOURCE__
104/* 105/*
105 * CLK_TCK uses libc's internal __sysconf() to retrieve the machine's 106 * CLK_TCK uses libc's internal __sysconf() to retrieve the machine's
106 * HZ. The value of _SC_CLK_TCK is 39 -- we hard code it so we do not 107 * HZ. The value of _SC_CLK_TCK is 39 -- we hard code it so we do not
107 * need to include unistd.h 108 * need to include unistd.h
108 */ 109 */
109long __sysconf(int); 110long __sysconf(int);
110#define CLK_TCK (__sysconf(39)) 111#define CLK_TCK (__sysconf(39))
111#endif 112#endif
112#endif 113#endif
113 114
114extern __aconst char *tzname[2]; 115extern __aconst char *tzname[2];
115void tzset(void); 116void tzset(void);
116 117
117/* 118/*
118 * X/Open Portability Guide >= Issue 4 119 * X/Open Portability Guide >= Issue 4
119 */ 120 */
120#if defined(_XOPEN_SOURCE) || defined(_NETBSD_SOURCE) 121#if defined(_XOPEN_SOURCE) || defined(_NETBSD_SOURCE)
121extern int daylight; 122extern int daylight;
122#ifndef __LIBC12_SOURCE__ 123#ifndef __LIBC12_SOURCE__
123extern long int timezone __RENAME(__timezone13); 124extern long int timezone __RENAME(__timezone13);
124#endif 125#endif
125char *strptime(const char * __restrict, const char * __restrict, 126char *strptime(const char * __restrict, const char * __restrict,
126 struct tm * __restrict); 127 struct tm * __restrict);
127#endif 128#endif
128 129
129#if (_POSIX_C_SOURCE - 0) >= 199309L || (_XOPEN_SOURCE - 0) >= 500 || \ 130#if (_POSIX_C_SOURCE - 0) >= 199309L || (_XOPEN_SOURCE - 0) >= 500 || \
130 defined(_NETBSD_SOURCE) 131 defined(_NETBSD_SOURCE)
131#include <sys/time.h> /* XXX for struct timespec */ 132#include <sys/time.h> /* XXX for struct timespec */
132struct sigevent; 133struct sigevent;
133struct itimerspec; 134struct itimerspec;
134int clock_getres(clockid_t, struct timespec *); 135int clock_getres(clockid_t, struct timespec *);
135int clock_gettime(clockid_t, struct timespec *); 136int clock_gettime(clockid_t, struct timespec *);
136int clock_settime(clockid_t, const struct timespec *); 137int clock_settime(clockid_t, const struct timespec *);
137int nanosleep(const struct timespec *, struct timespec *); 138int nanosleep(const struct timespec *, struct timespec *);
138int timer_create(clockid_t, struct sigevent * __restrict, 139int timer_create(clockid_t, struct sigevent * __restrict,
139 timer_t * __restrict); 140 timer_t * __restrict);
140int timer_delete(timer_t); 141int timer_delete(timer_t);
141int timer_getoverrun(timer_t); 142int timer_getoverrun(timer_t);
142int timer_gettime(timer_t, struct itimerspec *); 143int timer_gettime(timer_t, struct itimerspec *);
143int timer_settime(timer_t, int, const struct itimerspec * __restrict,  144int timer_settime(timer_t, int, const struct itimerspec * __restrict,
144 struct itimerspec * __restrict); 145 struct itimerspec * __restrict);
145#endif /* _POSIX_C_SOURCE >= 199309 || _XOPEN_SOURCE >= 500 || ... */ 146#endif /* _POSIX_C_SOURCE >= 199309 || _XOPEN_SOURCE >= 500 || ... */
146 147
147#if (_POSIX_C_SOURCE - 0) >= 199506L || (_XOPEN_SOURCE - 0) >= 500 || \ 148#if (_POSIX_C_SOURCE - 0) >= 199506L || (_XOPEN_SOURCE - 0) >= 500 || \
148 defined(_REENTRANT) || defined(_NETBSD_SOURCE) 149 defined(_REENTRANT) || defined(_NETBSD_SOURCE)
149char *asctime_r(const struct tm * __restrict, char * __restrict); 150char *asctime_r(const struct tm * __restrict, char * __restrict);
150char *ctime_r(const time_t *, char *); 151char *ctime_r(const time_t *, char *);
151struct tm *gmtime_r(const time_t * __restrict, struct tm * __restrict); 152struct tm *gmtime_r(const time_t * __restrict, struct tm * __restrict);
152struct tm *localtime_r(const time_t * __restrict, struct tm * __restrict); 153struct tm *localtime_r(const time_t * __restrict, struct tm * __restrict);
153#endif 154#endif
154 155
155#if defined(_NETBSD_SOURCE) 156#if defined(_NETBSD_SOURCE)
156time_t time2posix(time_t); 157time_t time2posix(time_t);
157time_t posix2time(time_t); 158time_t posix2time(time_t);
158time_t timegm(struct tm *); 159time_t timegm(struct tm *);
159time_t timeoff(struct tm *, long); 160time_t timeoff(struct tm *, long);
160time_t timelocal(struct tm *); 161time_t timelocal(struct tm *);
161void tzsetwall(void); 162void tzsetwall(void);
162struct tm *offtime(const time_t *, long); 163struct tm *offtime(const time_t *, long);
163#endif /* _NETBSD_SOURCE */ 164#endif /* _NETBSD_SOURCE */
164 165
165__END_DECLS 166__END_DECLS
166 167
167#endif /* !_TIME_H_ */ 168#endif /* !_TIME_H_ */