/* Common declarations for all of libgfortran.
- Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+ Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
Free Software Foundation, Inc.
Contributed by Paul Brook <paul@nowt.org>, and
Andy Vaught <andy@xena.eas.asu.edu>
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
+This file is part of the GNU Fortran runtime library (libgfortran).
Libgfortran is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#ifndef LIBGFOR_H
#define LIBGFOR_H
+/* Ensure that ANSI conform stdio is used. This needs to be set before
+ any system header file is included. */
+#if defined __MINGW32__
+# define _POSIX 1
+# define gfc_printf gnu_printf
+#else
+# define gfc_printf __printf__
+#endif
+
/* config.h MUST be first because it can affect system headers. */
#include "config.h"
#include <float.h>
#include <stdarg.h>
+#ifdef __MINGW32__
+extern float __strtof (const char *, char **);
+#define gfc_strtof __strtof
+extern double __strtod (const char *, char **);
+#define gfc_strtod __strtod
+extern long double __strtold (const char *, char **);
+#define gfc_strtold __strtold
+#else
+#define gfc_strtof strtof
+#define gfc_strtod strtod
+#define gfc_strtold strtold
+#endif
+
#if HAVE_COMPLEX_H
# include <complex.h>
#else
#if HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
+
+#ifdef __MINGW32__
+typedef off64_t gfc_offset;
+#else
typedef off_t gfc_offset;
+#endif
#ifndef NULL
#define NULL (void *) 0
that were given (-std=, -pedantic) we should issue an error, a warning
or nothing. */
typedef enum
-{ SILENT, WARNING, ERROR }
+{ NOTIFICATION_SILENT, NOTIFICATION_WARNING, NOTIFICATION_ERROR }
notification;
/* This is returned by notify_std and several io functions. */
/* error.c */
+#if defined(HAVE_GFC_REAL_16)
+#define GFC_LARGEST_BUF (sizeof (GFC_REAL_16))
+#elif defined(HAVE_GFC_INTEGER_16)
+#define GFC_LARGEST_BUF (sizeof (GFC_INTEGER_LARGEST))
+#elif defined(HAVE_GFC_REAL_10)
+#define GFC_LARGEST_BUF (sizeof (GFC_REAL_10))
+#else
+#define GFC_LARGEST_BUF (sizeof (GFC_INTEGER_LARGEST))
+#endif
+
#define GFC_ITOA_BUF_SIZE (sizeof (GFC_INTEGER_LARGEST) * 3 + 2)
-#define GFC_XTOA_BUF_SIZE (sizeof (GFC_UINTEGER_LARGEST) * 2 + 1)
-#define GFC_OTOA_BUF_SIZE (sizeof (GFC_INTEGER_LARGEST) * 3 + 1)
-#define GFC_BTOA_BUF_SIZE (sizeof (GFC_INTEGER_LARGEST) * 8 + 1)
+#define GFC_XTOA_BUF_SIZE (GFC_LARGEST_BUF * 2 + 1)
+#define GFC_OTOA_BUF_SIZE (GFC_LARGEST_BUF * 3 + 1)
+#define GFC_BTOA_BUF_SIZE (GFC_LARGEST_BUF * 8 + 1)
extern void sys_exit (int) __attribute__ ((noreturn));
internal_proto(sys_exit);
internal_proto(show_locus);
extern void runtime_error (const char *, ...)
- __attribute__ ((noreturn, format (printf, 1, 2)));
+ __attribute__ ((noreturn, format (gfc_printf, 1, 2)));
iexport_proto(runtime_error);
extern void runtime_error_at (const char *, const char *, ...)
- __attribute__ ((noreturn, format (printf, 2, 3)));
+ __attribute__ ((noreturn, format (gfc_printf, 2, 3)));
iexport_proto(runtime_error_at);
extern void runtime_warning_at (const char *, const char *, ...)
- __attribute__ ((format (printf, 2, 3)));
+ __attribute__ ((format (gfc_printf, 2, 3)));
iexport_proto(runtime_warning_at);
extern void internal_error (st_parameter_common *, const char *)
extern void *get_mem (size_t) __attribute__ ((malloc));
internal_proto(get_mem);
-extern void free_mem (void *);
-internal_proto(free_mem);
-
extern void *internal_malloc_size (size_t) __attribute__ ((malloc));
internal_proto(internal_malloc_size);
internal_proto(unit_to_fd);
extern int st_printf (const char *, ...)
- __attribute__ ((format (printf, 1, 2)));
+ __attribute__ ((format (gfc_printf, 1, 2)));
internal_proto(st_printf);
extern int st_vprintf (const char *, va_list);
/* stop.c */
-extern void stop_numeric (GFC_INTEGER_4) __attribute__ ((noreturn));
-iexport_proto(stop_numeric);
+extern void stop_string (const char *, GFC_INTEGER_4)
+ __attribute__ ((noreturn));
+export_proto(stop_string);
/* reshape_packed.c */