Merge pull request #3373 from marek-safar/net-4.6.2
[mono.git] / support / stdio.c
index 4fe6d26deff6ea027000ef3fc6849d7ce0392cdd..e5b54da47b909f222d3664480c522d34d40ca1f8 100644 (file)
@@ -4,18 +4,19 @@
  * Authors:
  *   Jonathan Pryor (jonpryor@vt.edu)
  *
- * Copyright (C) 2004-2005 Jonathan Pryor
+ * Copyright (C) 2004-2006 Jonathan Pryor
  */
 
 #include <stdarg.h>
 #include <stdio.h>
 #include <stdlib.h>
 
+#include "map.h"
 #include "mph.h"
 
 G_BEGIN_DECLS
 
-#ifndef PLATFORM_WIN32
+#ifndef HOST_WIN32
 gint32
 Mono_Posix_Syscall_L_ctermid (void)
 {
@@ -25,12 +26,16 @@ Mono_Posix_Syscall_L_ctermid (void)
 gint32
 Mono_Posix_Syscall_L_cuserid (void)
 {
+#if defined(__APPLE__) || defined (__OpenBSD__)
+       return -1;
+#else
        return L_cuserid;
+#endif
 }
-#endif /* ndef PLATFORM_WIN32 */
+#endif /* ndef HOST_WIN32 */
 
 mph_size_t
-Mono_Posix_Stdlib_fread (void *ptr, mph_size_t size, mph_size_t nmemb, void *stream)
+Mono_Posix_Stdlib_fread (unsigned char *ptr, mph_size_t size, mph_size_t nmemb, void *stream)
 {
        mph_return_if_size_t_overflow (size);
        mph_return_if_size_t_overflow (nmemb);
@@ -39,7 +44,7 @@ Mono_Posix_Stdlib_fread (void *ptr, mph_size_t size, mph_size_t nmemb, void *str
 }
 
 mph_size_t
-Mono_Posix_Stdlib_fwrite (void *ptr, mph_size_t size, mph_size_t nmemb, void *stream)
+Mono_Posix_Stdlib_fwrite (unsigned char *ptr, mph_size_t size, mph_size_t nmemb, void *stream)
 {
        mph_return_if_size_t_overflow (size);
        mph_return_if_size_t_overflow (nmemb);
@@ -63,7 +68,7 @@ Mono_Posix_Stdlib_snprintf (char *s, mph_size_t n, char *format, ...)
 
        return r;
 }
-#endif /* def HAVE_SNPRINTF */
+#endif /* def HAVE_VSNPRINTF */
 
 gint32
 Mono_Posix_Stdlib__IOFBF (void)
@@ -144,6 +149,13 @@ Mono_Posix_Stdlib_setvbuf (void* stream, void *buf, int mode, mph_size_t size)
        return setvbuf (stream, (char *) buf, mode, (size_t) size);
 }
 
+int 
+Mono_Posix_Stdlib_setbuf (void* stream, void* buf)
+{
+       setbuf (stream, buf);
+       return 0;
+}
+
 gint32
 Mono_Posix_Stdlib_fseek (void* stream, gint64 offset, int origin)
 {
@@ -177,6 +189,32 @@ Mono_Posix_Stdlib_fsetpos (void* stream, void *pos)
        return fsetpos (stream, (fpos_t*) pos);
 }
 
+int
+Mono_Posix_Stdlib_rewind (void* stream)
+{
+       do {
+               rewind (stream);
+       } while (errno == EINTR);
+       mph_return_if_val_in_list5(errno, EAGAIN, EBADF, EFBIG, EINVAL, EIO);
+       mph_return_if_val_in_list5(errno, ENOSPC, ENXIO, EOVERFLOW, EPIPE, ESPIPE);
+       return 0;
+}
+
+int
+Mono_Posix_Stdlib_clearerr (void* stream)
+{
+       clearerr (((FILE*) stream));
+       return 0;
+}
+
+int
+Mono_Posix_Stdlib_perror (const char* s, int err)
+{
+       errno = err;
+       perror (s);
+       return 0;
+}
+
 #define MPH_FPOS_LENGTH (sizeof(fpos_t)*2)
 
 int