2 * <stdio.h> wrapper functions.
5 * Jonathan Pryor (jonpryor@vt.edu)
7 * Copyright (C) 2004-2005 Jonathan Pryor
18 #ifndef PLATFORM_WIN32
20 Mono_Posix_Syscall_L_ctermid (void)
26 Mono_Posix_Syscall_L_cuserid (void)
30 #endif /* ndef PLATFORM_WIN32 */
33 Mono_Posix_Stdlib_fread (void *ptr, mph_size_t size, mph_size_t nmemb, void *stream)
35 mph_return_if_size_t_overflow (size);
36 mph_return_if_size_t_overflow (nmemb);
38 return fread (ptr, (size_t) size, (size_t) nmemb, (FILE*) stream);
42 Mono_Posix_Stdlib_fwrite (void *ptr, mph_size_t size, mph_size_t nmemb, void *stream)
44 mph_return_if_size_t_overflow (size);
45 mph_return_if_size_t_overflow (nmemb);
47 return fwrite (ptr, (size_t) size, (size_t) nmemb, (FILE*) stream);
52 Mono_Posix_Stdlib_snprintf (char *s, mph_size_t n, char *format, ...);
54 Mono_Posix_Stdlib_snprintf (char *s, mph_size_t n, char *format, ...)
58 mph_return_if_size_t_overflow (n);
60 va_start (ap, format);
61 r = vsnprintf (s, (size_t) n, format, ap);
66 #endif /* def HAVE_VSNPRINTF */
69 Mono_Posix_Stdlib__IOFBF (void)
75 Mono_Posix_Stdlib__IOLBF (void)
81 Mono_Posix_Stdlib__IONBF (void)
87 Mono_Posix_Stdlib_BUFSIZ (void)
93 Mono_Posix_Stdlib_EOF (void)
99 Mono_Posix_Stdlib_FOPEN_MAX (void)
105 Mono_Posix_Stdlib_FILENAME_MAX (void)
111 Mono_Posix_Stdlib_L_tmpnam (void)
117 Mono_Posix_Stdlib_stdin (void)
123 Mono_Posix_Stdlib_stdout (void)
129 Mono_Posix_Stdlib_stderr (void)
135 Mono_Posix_Stdlib_TMP_MAX (void)
141 Mono_Posix_Stdlib_setvbuf (void* stream, void *buf, int mode, mph_size_t size)
143 mph_return_if_size_t_overflow (size);
144 return setvbuf (stream, (char *) buf, mode, (size_t) size);
148 Mono_Posix_Stdlib_setbuf (void* stream, void* buf)
151 setbuf (stream, buf);
152 return errno == 0 ? 0 : -1;
156 Mono_Posix_Stdlib_fseek (void* stream, gint64 offset, int origin)
158 mph_return_if_long_overflow (offset);
160 return fseek (stream, offset, origin);
164 Mono_Posix_Stdlib_ftell (void* stream)
166 return ftell (stream);
170 Mono_Posix_Stdlib_CreateFilePosition (void)
172 fpos_t* pos = malloc (sizeof(fpos_t));
177 Mono_Posix_Stdlib_fgetpos (void* stream, void *pos)
179 return fgetpos (stream, (fpos_t*) pos);
183 Mono_Posix_Stdlib_fsetpos (void* stream, void *pos)
185 return fsetpos (stream, (fpos_t*) pos);
189 Mono_Posix_Stdlib_rewind (void* stream)
193 return errno == 0 ? 0 : -1;
197 Mono_Posix_Stdlib_clearerr (void* stream)
201 return errno == 0 ? 0 : -1;
205 Mono_Posix_Stdlib_perror (const char* s)
209 return errno == 0 ? 0 : -1;
212 #define MPH_FPOS_LENGTH (sizeof(fpos_t)*2)
215 Mono_Posix_Stdlib_DumpFilePosition (char *dest, void *pos, gint32 len)
218 unsigned char *posp, *pose;
221 return MPH_FPOS_LENGTH;
223 if (pos == NULL || len <= 0) {
228 posp = (unsigned char*) pos;
229 pose = posp + sizeof(fpos_t);
232 for ( ; posp < pose && len > 1; destp += 2, ++posp, len -= 2) {
233 sprintf (destp, "%02X", *posp);
237 dest[MPH_FPOS_LENGTH] = '\0';