+2010-03-08 Kai TIetz <kai.tietz@onevision.com>
+
+ PR/42950
+ * libgfortran.h (_POSIX): Define if __MINGW32__ is defined.
+ (gfc_printf): Define to gnu_printf for __MINGW32__ case,
+ otherwise to __printf__.
+ (gfc_strtof,gfc_strtod,gfc_strtold): Define for mingw case
+ to POSIX compatible converter functions.
+ (runtime_error): Use instead gfc_printf as formatter
+ attribute name.
+ (runtime_error_at): Likewise.
+ (runtime_warning_at): Likewise.
+ (st_printf): Likewise.
+ * intrinsics/date_and_time.c (localtime_r): Undefine
+ possible defined macro.
+ (gmtime_r): Likewise.
+ * io/read.c (convert_real): Use gfc_strtof, gfc_strtod,
+ and gfc_strtold.
+
2010-02-24 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libfortran/43155
case 4:
*((GFC_REAL_4*) dest) =
#if defined(HAVE_STRTOF)
- strtof (buffer, NULL);
+ gfc_strtof (buffer, NULL);
#else
- (GFC_REAL_4) strtod (buffer, NULL);
+ (GFC_REAL_4) gfc_strtod (buffer, NULL);
#endif
break;
case 8:
- *((GFC_REAL_8*) dest) = strtod (buffer, NULL);
+ *((GFC_REAL_8*) dest) = gfc_strtod (buffer, NULL);
break;
#if defined(HAVE_GFC_REAL_10) && defined (HAVE_STRTOLD)
case 10:
- *((GFC_REAL_10*) dest) = strtold (buffer, NULL);
+ *((GFC_REAL_10*) dest) = gfc_strtold (buffer, NULL);
break;
#endif
#if defined(HAVE_GFC_REAL_16) && defined (HAVE_STRTOLD)
case 16:
- *((GFC_REAL_16*) dest) = strtold (buffer, NULL);
+ *((GFC_REAL_16*) dest) = gfc_strtold (buffer, NULL);
break;
#endif
#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
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 *)
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);