2 * <stdio.h> wrapper functions.
5 * Jonathan Pryor (jonpryor@vt.edu)
7 * Copyright (C) 2004-2006 Jonathan Pryor
19 #ifndef PLATFORM_WIN32
21 Mono_Posix_Syscall_L_ctermid (void)
27 Mono_Posix_Syscall_L_cuserid (void)
31 #endif /* ndef PLATFORM_WIN32 */
34 Mono_Posix_Stdlib_fread (unsigned char *ptr
, mph_size_t size
, mph_size_t nmemb
, void *stream
)
36 mph_return_if_size_t_overflow (size
);
37 mph_return_if_size_t_overflow (nmemb
);
39 return fread (ptr
, (size_t) size
, (size_t) nmemb
, (FILE*) stream
);
43 Mono_Posix_Stdlib_fwrite (unsigned char *ptr
, mph_size_t size
, mph_size_t nmemb
, void *stream
)
45 mph_return_if_size_t_overflow (size
);
46 mph_return_if_size_t_overflow (nmemb
);
48 return fwrite (ptr
, (size_t) size
, (size_t) nmemb
, (FILE*) stream
);
53 Mono_Posix_Stdlib_snprintf (char *s
, mph_size_t n
, char *format
, ...);
55 Mono_Posix_Stdlib_snprintf (char *s
, mph_size_t n
, char *format
, ...)
59 mph_return_if_size_t_overflow (n
);
61 va_start (ap
, format
);
62 r
= vsnprintf (s
, (size_t) n
, format
, ap
);
67 #endif /* def HAVE_VSNPRINTF */
70 Mono_Posix_Stdlib__IOFBF (void)
76 Mono_Posix_Stdlib__IOLBF (void)
82 Mono_Posix_Stdlib__IONBF (void)
88 Mono_Posix_Stdlib_BUFSIZ (void)
94 Mono_Posix_Stdlib_EOF (void)
100 Mono_Posix_Stdlib_FOPEN_MAX (void)
106 Mono_Posix_Stdlib_FILENAME_MAX (void)
112 Mono_Posix_Stdlib_L_tmpnam (void)
118 Mono_Posix_Stdlib_stdin (void)
124 Mono_Posix_Stdlib_stdout (void)
130 Mono_Posix_Stdlib_stderr (void)
136 Mono_Posix_Stdlib_TMP_MAX (void)
142 Mono_Posix_Stdlib_setvbuf (void* stream
, void *buf
, int mode
, mph_size_t size
)
144 mph_return_if_size_t_overflow (size
);
145 return setvbuf (stream
, (char *) buf
, mode
, (size_t) size
);
149 Mono_Posix_Stdlib_setbuf (void* stream
, void* buf
)
152 setbuf (stream
, buf
);
153 return errno
== 0 ? 0 : -1;
157 Mono_Posix_Stdlib_fseek (void* stream
, gint64 offset
, int origin
)
159 mph_return_if_long_overflow (offset
);
161 return fseek (stream
, offset
, origin
);
165 Mono_Posix_Stdlib_ftell (void* stream
)
167 return ftell (stream
);
171 Mono_Posix_Stdlib_CreateFilePosition (void)
173 fpos_t* pos
= malloc (sizeof(fpos_t));
178 Mono_Posix_Stdlib_fgetpos (void* stream
, void *pos
)
180 return fgetpos (stream
, (fpos_t*) pos
);
184 Mono_Posix_Stdlib_fsetpos (void* stream
, void *pos
)
186 return fsetpos (stream
, (fpos_t*) pos
);
190 Mono_Posix_Stdlib_rewind (void* stream
)
194 return errno
== 0 ? 0 : -1;
198 Mono_Posix_Stdlib_clearerr (void* stream
)
201 clearerr (((FILE*) stream
));
202 return errno
== 0 ? 0 : -1;
206 Mono_Posix_Stdlib_perror (const char* s
)
210 return errno
== 0 ? 0 : -1;
213 #define MPH_FPOS_LENGTH (sizeof(fpos_t)*2)
216 Mono_Posix_Stdlib_DumpFilePosition (char *dest
, void *pos
, gint32 len
)
219 unsigned char *posp
, *pose
;
222 return MPH_FPOS_LENGTH
;
224 if (pos
== NULL
|| len
<= 0) {
229 posp
= (unsigned char*) pos
;
230 pose
= posp
+ sizeof(fpos_t);
233 for ( ; posp
< pose
&& len
> 1; destp
+= 2, ++posp
, len
-= 2) {
234 sprintf (destp
, "%02X", *posp
);
238 dest
[MPH_FPOS_LENGTH
] = '\0';