aboutsummaryrefslogtreecommitdiff
path: root/libgfortran/io/io.h
diff options
context:
space:
mode:
Diffstat (limited to 'libgfortran/io/io.h')
-rw-r--r--libgfortran/io/io.h27
1 files changed, 27 insertions, 0 deletions
diff --git a/libgfortran/io/io.h b/libgfortran/io/io.h
index 1e0d092..a75177f 100644
--- a/libgfortran/io/io.h
+++ b/libgfortran/io/io.h
@@ -32,6 +32,17 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#include <gthr.h>
+
+/* POSIX 2008 specifies that the extended locale stuff is found in
+ locale.h, but some systems have them in xlocale.h. */
+
+#include <locale.h>
+
+#ifdef HAVE_XLOCALE_H
+#include <xlocale.h>
+#endif
+
+
/* Forward declarations. */
struct st_parameter_dt;
typedef struct stream stream;
@@ -40,6 +51,19 @@ struct format_data;
typedef struct fnode fnode;
struct gfc_unit;
+#ifdef HAVE_NEWLOCALE
+/* We have POSIX 2008 extended locale stuff. */
+extern locale_t c_locale;
+internal_proto(c_locale);
+#else
+extern char* old_locale;
+internal_proto(old_locale);
+extern int old_locale_ctr;
+internal_proto(old_locale_ctr);
+extern __gthread_mutex_t old_locale_lock;
+internal_proto(old_locale_lock);
+#endif
+
/* Macros for testing what kinds of I/O we are doing. */
@@ -450,6 +474,9 @@ typedef struct st_parameter_dt
char *line_buffer;
struct format_data *fmt;
namelist_info *ionml;
+#ifdef HAVE_NEWLOCALE
+ locale_t old_locale;
+#endif
/* Current position within the look-ahead line buffer. */
int line_buffer_pos;
/* Storage area for values except for strings. Must be