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)
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';