summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Schwab <schwab@issan.informatik.uni-dortmund.de>1998-02-24 20:02:06 +0000
committerJeff Law <law@gcc.gnu.org>1998-02-24 13:02:06 -0700
commit5f8b9c80dfea24581db3c80c87f201b064812383 (patch)
treea321e4ec430d27d2123a796e41e1e632530ff316
parent3ceda776d8ecd50a7900b1a8cf128871d7fee409 (diff)
downloadgcc-5f8b9c80dfea24581db3c80c87f201b064812383.tar.gz
Changes for _G_IO_IO_FILE_VERSION == 0x20001:
* libioP.h (_IO_showmanyc_t, _IO_SHOWMANYC, _IO_imbue_t, _IO_IMBUE): New definitions. (struct _IO_jump_t): Add __showmanyc and __imbue fields. (_IO_file_fopen): Add new fourth argument. * filebuf.cc (filebuf::open): Pass new fourth argument to _IO_file_fopen. * iolibio.h (_IO_freopen): Likewise. * streambuf.cc (streambuf::showmanyc, streambuf::imbue): New functions. * streambuf.h (_IO_wchar_t): Define to _G_wchar_t. (ios::fill): Remove casts. (struct streambuf): Add showmanyc and imbue members. * iostream.cc (ostream::operator<<(double n)) [__GLIBC_MINOR__ >= 1]: Initialize new fields is_char of struct printf_info. (ostream::operator<<(long double n)) [__GLIBC_MINOR__ >= 1]: Likewise. From-SVN: r18221
-rw-r--r--libio/ChangeLog21
-rw-r--r--libio/filebuf.cc4
-rw-r--r--libio/iolibio.h5
-rw-r--r--libio/iostream.cc6
-rw-r--r--libio/libioP.h22
-rw-r--r--libio/streambuf.cc11
-rw-r--r--libio/streambuf.h12
7 files changed, 79 insertions, 2 deletions
diff --git a/libio/ChangeLog b/libio/ChangeLog
index 17385a03e4e..73bf40993bd 100644
--- a/libio/ChangeLog
+++ b/libio/ChangeLog
@@ -1,3 +1,24 @@
+1998-02-24 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ Changes for _G_IO_IO_FILE_VERSION == 0x20001:
+ * libioP.h (_IO_showmanyc_t, _IO_SHOWMANYC, _IO_imbue_t,
+ _IO_IMBUE): New definitions.
+ (struct _IO_jump_t): Add __showmanyc and __imbue fields.
+ (_IO_file_fopen): Add new fourth argument.
+ * filebuf.cc (filebuf::open): Pass new fourth argument to
+ _IO_file_fopen.
+ * iolibio.h (_IO_freopen): Likewise.
+ * streambuf.cc (streambuf::showmanyc, streambuf::imbue): New
+ functions.
+ * streambuf.h (_IO_wchar_t): Define to _G_wchar_t.
+ (ios::fill): Remove casts.
+ (struct streambuf): Add showmanyc and imbue members.
+
+ * iostream.cc (ostream::operator<<(double n)) [__GLIBC_MINOR__ >=
+ 1]: Initialize new fields is_char of struct printf_info.
+ (ostream::operator<<(long double n)) [__GLIBC_MINOR__ >= 1]:
+ Likewise.
+
Tue Feb 24 20:57:39 1998 H.J. Lu (hjl@gnu.org)
* configure.in (topsrcdir): New.
diff --git a/libio/filebuf.cc b/libio/filebuf.cc
index d4af4985d50..e3280bb0df1 100644
--- a/libio/filebuf.cc
+++ b/libio/filebuf.cc
@@ -3,3 +3,7 @@
read_write, 0);
#else
#endif
+#if _G_IO_IO_FILE_VERSION == 0x20001
+ return (filebuf*)_IO_file_fopen(this, filename, mode, 0);
+#else
+#endif
diff --git a/libio/iolibio.h b/libio/iolibio.h
index 63896780fc0..083b198b448 100644
--- a/libio/iolibio.h
+++ b/libio/iolibio.h
@@ -45,8 +45,13 @@ extern int _IO_obstack_printf __P ((struct obstack *, const char *, ...));
(_IO_seekoff(__fp, __offset, __whence, _IOS_INPUT|_IOS_OUTPUT) == _IO_pos_BAD ? EOF : 0)
#define _IO_rewind(FILE) (void)_IO_seekoff(FILE, 0, 0, _IOS_INPUT|_IOS_OUTPUT)
#define _IO_vprintf(FORMAT, ARGS) _IO_vfprintf(_IO_stdout, FORMAT, ARGS)
+#if _G_IO_IO_FILE_VERSION == 0x20001
+#define _IO_freopen(FILENAME, MODE, FP) \
+ (_IO_file_close_it(FP), _IO_file_fopen(FP, FILENAME, MODE, 0))
+#else
#define _IO_freopen(FILENAME, MODE, FP) \
(_IO_file_close_it(FP), _IO_file_fopen(FP, FILENAME, MODE))
+#endif
#define _IO_fileno(FP) ((FP)->_fileno)
extern _IO_FILE* _IO_popen __P((const char*, const char*));
#define _IO_pclose _IO_fclose
diff --git a/libio/iostream.cc b/libio/iostream.cc
index 96ebd6ee57a..921a00c21a9 100644
--- a/libio/iostream.cc
+++ b/libio/iostream.cc
@@ -634,6 +634,9 @@ ostream& ostream::operator<<(double n)
group: 0,
#if defined __GLIBC__ && __GLIBC__ >= 2
extra: 0,
+#if __GLIBC_MINOR__ >= 1
+ is_char: 0,
+#endif
#endif
pad: fill()
};
@@ -737,6 +740,9 @@ ostream& ostream::operator<<(long double n)
group: 0,
#if defined __GLIBC__ && __GLIBC__ >= 2
extra: 0,
+#if __GLIBC_MINOR__ >= 1
+ is_char: 0,
+#endif
#endif
pad: fill()
};
diff --git a/libio/libioP.h b/libio/libioP.h
index 3a138f0c077..8f39e0ef67c 100644
--- a/libio/libioP.h
+++ b/libio/libioP.h
@@ -226,6 +226,19 @@ typedef int (*_IO_close_t) __P ((_IO_FILE *)); /* finalize */
typedef int (*_IO_stat_t) __P ((_IO_FILE *, void *));
#define _IO_SYSSTAT(FP, BUF) JUMP1 (__stat, FP, BUF)
+#if _G_IO_IO_FILE_VERSION == 0x20001
+/* The 'showmany' hook can be used to get an image how much input is
+ available. In many cases the answer will be 0 which means unknown
+ but some cases one can provide real information. */
+typedef int (*_IO_showmanyc_t) __P ((_IO_FILE *));
+#define _IO_SHOWMANYC(FP) JUMP0 (__showmanyc, FP)
+
+/* The 'imbue' hook is used to get information about the currently
+ installed locales. */
+typedef void (*_IO_imbue_t) __P ((_IO_FILE *, void *));
+#define _IO_IMBUE(FP, LOCALE) JUMP1 (__imbue, FP, LOCALE)
+#endif
+
#define _IO_CHAR_TYPE char /* unsigned char ? */
#define _IO_INT_TYPE int
@@ -254,6 +267,10 @@ struct _IO_jump_t
JUMP_FIELD(_IO_seek_t, __seek);
JUMP_FIELD(_IO_close_t, __close);
JUMP_FIELD(_IO_stat_t, __stat);
+#if _G_IO_IO_FILE_VERSION == 0x20001
+ JUMP_FIELD(_IO_showmanyc_t, __showmanyc);
+ JUMP_FIELD(_IO_imbue_t, __imbue);
+#endif
#if 0
get_column;
set_column;
@@ -381,7 +398,12 @@ extern void _IO_file_init __P ((_IO_FILE *));
extern _IO_FILE* _IO_file_attach __P ((_IO_FILE *, int));
extern _IO_FILE* _IO_file_open __P ((_IO_FILE *, const char *, int, int,
int, int));
+#if _G_IO_IO_FILE_VERSION == 0x20001
+extern _IO_FILE* _IO_file_fopen __P ((_IO_FILE *, const char *, const char *,
+ int));
+#else
extern _IO_FILE* _IO_file_fopen __P ((_IO_FILE *, const char *, const char *));
+#endif
extern _IO_ssize_t _IO_file_write __P ((_IO_FILE *, const void *,
_IO_ssize_t));
extern _IO_ssize_t _IO_file_read __P ((_IO_FILE *, void *, _IO_ssize_t));
diff --git a/libio/streambuf.cc b/libio/streambuf.cc
index 4393cf08cfd..6be926b2372 100644
--- a/libio/streambuf.cc
+++ b/libio/streambuf.cc
@@ -301,6 +301,17 @@ streampos streambuf::sys_seek(streamoff, _seek_dir)
int streambuf::sys_close() { return 0; /* Suceess; do nothing */ }
+#if _G_IO_IO_FILE_VERSION == 0x20001
+int streambuf::showmanyc()
+{
+ return -1;
+}
+
+void streambuf::imbue(void *)
+{
+}
+#endif
+
streammarker::streammarker(streambuf *sb)
{
_IO_init_marker(this, sb);
diff --git a/libio/streambuf.h b/libio/streambuf.h
index 9ef47243be6..bc734bc75b0 100644
--- a/libio/streambuf.h
+++ b/libio/streambuf.h
@@ -55,8 +55,12 @@ extern "C" {
#endif
#ifndef _IO_wchar_t
+#if _G_IO_IO_FILE_VERSION == 0x20001
+#define _IO_wchar_t _G_wchar_t
+#else
#define _IO_wchar_t short
#endif
+#endif
extern "C++" {
class istream; /* Work-around for a g++ name mangling bug. Fixed in 2.6. */
@@ -176,9 +180,9 @@ class ios : public _ios_fields {
ostream* tie(ostream* val) { ostream* save=_tie; _tie=val; return save; }
// Methods to change the format state.
- _IO_wchar_t fill() const { return (_IO_wchar_t)_fill; }
+ _IO_wchar_t fill() const { return _fill; }
_IO_wchar_t fill(_IO_wchar_t newf)
- {_IO_wchar_t oldf = (_IO_wchar_t)_fill; _fill = (char)newf; return oldf;}
+ {_IO_wchar_t oldf = _fill; _fill = newf; return oldf;}
fmtflags flags() const { return _flags; }
fmtflags flags(fmtflags new_val) {
fmtflags old_val = _flags; _flags = new_val; return old_val; }
@@ -409,6 +413,10 @@ struct streambuf : public _IO_FILE { // protected??
virtual streampos sys_seek(streamoff, _seek_dir);
virtual int sys_close();
virtual int sys_stat(void*); // Actually, a (struct stat*)
+#if _G_IO_IO_FILE_VERSION == 0x20001
+ virtual int showmanyc();
+ virtual void imbue(void *);
+#endif
};
// A backupbuf is a streambuf with full backup and savepoints on reading.