updating to the latest module.
[mono.git] / support / stdio.c
1 /*
2  * <stdio.h> wrapper functions.
3  *
4  * Authors:
5  *   Jonathan Pryor (jonpryor@vt.edu)
6  *
7  * Copyright (C) 2004-2005 Jonathan Pryor
8  */
9
10 #include <stdarg.h>
11 #include <stdio.h>
12 #include <stdlib.h>
13
14 #include "mph.h"
15
16 G_BEGIN_DECLS
17
18 #ifndef PLATFORM_WIN32
19 gint32
20 Mono_Posix_Syscall_L_ctermid (void)
21 {
22         return L_ctermid;
23 }
24
25 gint32
26 Mono_Posix_Syscall_L_cuserid (void)
27 {
28         return L_cuserid;
29 }
30 #endif /* ndef PLATFORM_WIN32 */
31
32 mph_size_t
33 Mono_Posix_Stdlib_fread (void *ptr, mph_size_t size, mph_size_t nmemb, FILE *stream)
34 {
35         mph_return_if_size_t_overflow (size);
36         mph_return_if_size_t_overflow (nmemb);
37
38         return fread (ptr, (size_t) size, (size_t) nmemb, stream);
39 }
40
41 mph_size_t
42 Mono_Posix_Stdlib_fwrite (const void *ptr, mph_size_t size, mph_size_t nmemb, FILE *stream)
43 {
44         mph_return_if_size_t_overflow (size);
45         mph_return_if_size_t_overflow (nmemb);
46
47         return fwrite (ptr, (size_t) size, (size_t) nmemb, stream);
48 }
49
50 #ifdef HAVE_VSNPRINTF
51 gint32
52 Mono_Posix_Stdlib_snprintf (char *s, mph_size_t n, char *format, ...)
53 {
54         va_list ap;
55         gint32 r;
56         mph_return_if_size_t_overflow (n);
57
58         va_start (ap, format);
59         r = vsnprintf (s, (size_t) n, format, ap);
60         va_end (ap);
61
62         return r;
63 }
64 #endif /* def HAVE_SNPRINTF */
65
66 gint32
67 Mono_Posix_Stdlib__IOFBF (void)
68 {
69         return _IOFBF;
70 }
71
72 gint32
73 Mono_Posix_Stdlib__IOLBF (void)
74 {
75         return _IOLBF;
76 }
77
78 gint32
79 Mono_Posix_Stdlib__IONBF (void)
80 {
81         return _IONBF;
82 }
83
84 gint32
85 Mono_Posix_Stdlib_BUFSIZ (void)
86 {
87         return BUFSIZ;
88 }
89
90 gint32
91 Mono_Posix_Stdlib_EOF (void)
92 {
93         return EOF;
94 }
95
96 gint32
97 Mono_Posix_Stdlib_FOPEN_MAX (void)
98 {
99         return FOPEN_MAX;
100 }
101
102 gint32
103 Mono_Posix_Stdlib_FILENAME_MAX (void)
104 {
105         return FILENAME_MAX;
106 }
107
108 gint32
109 Mono_Posix_Stdlib_L_tmpnam (void)
110 {
111         return L_tmpnam;
112 }
113
114 FILE*
115 Mono_Posix_Stdlib_stdin (void)
116 {
117         return stdin;
118 }
119
120 FILE*
121 Mono_Posix_Stdlib_stdout (void)
122 {
123         return stdout;
124 }
125
126 FILE*
127 Mono_Posix_Stdlib_stderr (void)
128 {
129         return stderr;
130 }
131
132 gint32
133 Mono_Posix_Stdlib_TMP_MAX (void)
134 {
135         return TMP_MAX;
136 }
137
138 gint32
139 Mono_Posix_Stdlib_setvbuf (FILE *stream, char *buf, int mode, mph_size_t size)
140 {
141         mph_return_if_size_t_overflow (size);
142         return setvbuf (stream, buf, mode, (size_t) size);
143 }
144
145 gint32
146 Mono_Posix_Stdlib_fseek (FILE* stream, gint64 offset, int origin)
147 {
148         mph_return_if_long_overflow (offset);
149
150         return fseek (stream, offset, origin);
151 }
152
153 gint64
154 Mono_Posix_Stdlib_ftell (FILE* stream)
155 {
156         return ftell (stream);
157 }
158
159 fpos_t*
160 Mono_Posix_Stdlib_CreateFilePosition (void)
161 {
162         fpos_t* pos = malloc (sizeof(fpos_t));
163         return pos;
164 }
165
166 gint32
167 Mono_Posix_Stdlib_fgetpos (FILE* stream, fpos_t *pos)
168 {
169         return fgetpos (stream, pos);
170 }
171
172 gint32
173 Mono_Posix_Stdlib_fsetpos (FILE* stream, fpos_t *pos)
174 {
175         return fsetpos (stream, pos);
176 }
177
178 G_END_DECLS
179
180 /*
181  * vim: noexpandtab
182  */