summaryrefslogtreecommitdiff
path: root/runtime/stdio.h
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/stdio.h')
-rw-r--r--runtime/stdio.h92
1 files changed, 9 insertions, 83 deletions
diff --git a/runtime/stdio.h b/runtime/stdio.h
index 9aa3ae1..daf0198 100644
--- a/runtime/stdio.h
+++ b/runtime/stdio.h
@@ -13,97 +13,23 @@
/* */
/* *********************************************************************/
+/* Thin wrapper around stdio, redefining stdin, stdout and stderr.
+ Needed under MacOS X because of linking issues with dynamic libraries. */
+
#ifndef _COMPCERT_STDIO_H
#define _COMPCERT_STDIO_H
-#ifdef __GNUC__
-#include_next "stdio.h"
-#else
#include "/usr/include/stdio.h"
-#endif
-typedef struct compcert_FILE_ { void * fstr; } compcert_FILE;
+extern FILE * compcert_stdin(void);
+extern FILE * compcert_stdout(void);
+extern FILE * compcert_stderr(void);
-extern compcert_FILE * compcert_stdin;
-extern compcert_FILE * compcert_stdout;
-extern compcert_FILE * compcert_stderr;
-extern void compcert_clearerr(compcert_FILE *);
-extern int compcert_fclose(compcert_FILE *);
-extern int compcert_feof(compcert_FILE *);
-extern int compcert_ferror(compcert_FILE *);
-extern int compcert_fflush(compcert_FILE *);
-extern int compcert_fgetc(compcert_FILE *);
-extern char *compcert_fgets(char * , int, compcert_FILE *);
-extern compcert_FILE *compcert_fopen(const char * , const char * );
-extern int compcert_fprintf(compcert_FILE * , const char * , ...);
-extern int compcert_fputc(int, compcert_FILE *);
-extern int compcert_fputs(const char * , compcert_FILE * );
-extern size_t compcert_fread(void * , size_t, size_t, compcert_FILE * );
-extern compcert_FILE *compcert_freopen(const char * , const char * ,
- compcert_FILE * );
-extern int compcert_fscanf(compcert_FILE * , const char * , ...);
-extern int compcert_fseek(compcert_FILE *, long, int);
-extern long compcert_ftell(compcert_FILE *);
-extern size_t compcert_fwrite(const void * , size_t, size_t, compcert_FILE * );
-extern int compcert_getc(compcert_FILE *);
-extern int compcert_putc(int, compcert_FILE *);
-extern void compcert_rewind(compcert_FILE *);
-extern int compcert_ungetc(int, compcert_FILE *);
-
-#ifndef _INSIDE_COMPCERT_COMPATIBILITY_LIBRARY
-#define FILE compcert_FILE
#undef stdin
-#define stdin compcert_stdin
+#define stdin (compcert_stdin())
#undef stdout
-#define stdout compcert_stdout
+#define stdout (compcert_stdout())
#undef stderr
-#define stderr compcert_stderr
-#undef clearerr
-#define clearerr compcert_clearerr
-#undef fclose
-#define fclose compcert_fclose
-#undef feof
-#define feof compcert_feof
-#undef ferror
-#define ferror compcert_ferror
-#undef fflush
-#define fflush compcert_fflush
-#undef fgetc
-#define fgetc compcert_fgetc
-#undef fgets
-#define fgets compcert_fgets
-#undef fopen
-#define fopen compcert_fopen
-#undef fprintf
-#define fprintf compcert_fprintf
-#undef fputc
-#define fputc compcert_fputc
-#undef fputs
-#define fputs compcert_fputs
-#undef fread
-#define fread compcert_fread
-#undef freopen
-#define freopen compcert_freopen
-#undef fscanf
-#define fscanf compcert_fscanf
-#undef fseek
-#define fseek compcert_fseek
-#undef ftell
-#define ftell compcert_ftell
-#undef fwrite
-#define fwrite compcert_fwrite
-#undef getc
-#define getc compcert_getc
-#undef getchar
-#define getchar() compcert_getc(compcert_stdin)
-#undef putc
-#define putc compcert_putc
-#undef putchar
-#define putchar(c) compcert_putc(c, compcert_stdout)
-#undef rewind
-#define rewind compcert_rewind
-#undef ungetc
-#define ungetc compcert_ungetc
-#endif
+#define stderr (compcert_stderr())
#endif