This is the mail archive of the
libstdc++@sources.redhat.com
mailing list for the libstdc++ project.
Re: changes for approval, part three (solaris)
Benjamin asked me to make some minor changes in the second patch and
repost. So, here it is.
2000-10-21 Phil Edwards <pme@sources.redhat.com>
* configure.in: Check for gconv.h.
* libio/wfileops.c: Wrap gconv.h in HAVE_GCONV_H.
* config/c_io_libio_codecvt.c: Change __mbstate_t to __c_mbstate_t.
* libio/_G_config.h: And here.
* libio/iofwide.c: And here.
* libio/libio.h: And here.
* config/os/solaris/solaris2.7/bits/ctype_noninline.h: Remove
exception specification to match declaration.
* config/os/solaris/solaris2.7/bits/os_defines.h: Add the typedefs
and definitions necessary to build with glibc/libio.
* include/bits/locale_facets.tcc: Include bits/std_clocale.h.
* libio/Makefile.am (LIBIO_WSRCS): Add iofwide.c (needed when
wide characters are in use). Leave entry in LIBIO_XTRASRCS for now.
Index: configure.in
===================================================================
RCS file: /cvs/gcc/egcs/libstdc++-v3/configure.in,v
retrieving revision 1.24
diff -u -3 -r1.24 configure.in
--- configure.in 2000/10/21 19:40:17 1.24
+++ configure.in 2000/10/22 02:57:50
@@ -134,6 +135,7 @@
GLIBCPP_CHECK_CTYPE
AC_FUNC_MMAP
+ AC_CHECK_HEADERS(gconv.h)
fi
AM_CONDITIONAL(CANADIAN, test "$CANADIAN" = yes)
Index: config/c_io_libio_codecvt.c
===================================================================
RCS file: /cvs/gcc/egcs/libstdc++-v3/config/c_io_libio_codecvt.c,v
retrieving revision 1.1
diff -u -3 -r1.1 c_io_libio_codecvt.c
--- c_io_libio_codecvt.c 2000/08/09 07:31:26 1.1
+++ c_io_libio_codecvt.c 2000/10/22 02:57:50
@@ -30,17 +30,17 @@
/* Prototypes of libio's codecvt functions. */
static enum __codecvt_result
-do_out(struct _IO_codecvt *codecvt, __mbstate_t *statep,
+do_out(struct _IO_codecvt *codecvt, __c_mbstate_t *statep,
const wchar_t *from_start, const wchar_t *from_end,
const wchar_t **from_stop, char *to_start, char *to_end,
char **to_stop);
static enum __codecvt_result
-do_unshift(struct _IO_codecvt *codecvt, __mbstate_t *statep, char *to_start,
+do_unshift(struct _IO_codecvt *codecvt, __c_mbstate_t *statep, char *to_start,
char *to_end, char **to_stop);
static enum __codecvt_result
-do_in(struct _IO_codecvt *codecvt, __mbstate_t *statep,
+do_in(struct _IO_codecvt *codecvt, __c_mbstate_t *statep,
const char *from_start, const char *from_end, const char **from_stop,
wchar_t *to_start, wchar_t *to_end, wchar_t **to_stop);
@@ -48,7 +48,7 @@
do_encoding(struct _IO_codecvt *codecvt);
static int
-do_length(struct _IO_codecvt *codecvt, __mbstate_t *statep,
+do_length(struct _IO_codecvt *codecvt, __c_mbstate_t *statep,
const char *from_start, const char *from_end, _IO_size_t max);
static int
@@ -72,7 +72,7 @@
};
static enum __codecvt_result
-do_out(struct _IO_codecvt *codecvt, __mbstate_t *statep,
+do_out(struct _IO_codecvt *codecvt, __c_mbstate_t *statep,
const wchar_t *from_start, const wchar_t *from_end,
const wchar_t **from_stop, char *to_start, char *to_end,
char **to_stop)
@@ -97,7 +97,7 @@
static enum __codecvt_result
-do_unshift(struct _IO_codecvt *codecvt, __mbstate_t *statep,
+do_unshift(struct _IO_codecvt *codecvt, __c_mbstate_t *statep,
char *to_start, char *to_end, char **to_stop)
{
*to_stop = to_start;
@@ -106,7 +106,7 @@
static enum __codecvt_result
-do_in(struct _IO_codecvt *codecvt, __mbstate_t *statep,
+do_in(struct _IO_codecvt *codecvt, __c_mbstate_t *statep,
const char *from_start, const char *from_end, const char **from_stop,
wchar_t *to_start, wchar_t *to_end, wchar_t **to_stop)
{
@@ -140,7 +140,7 @@
static int
-do_length(struct _IO_codecvt *codecvt, __mbstate_t *statep,
+do_length(struct _IO_codecvt *codecvt, __c_mbstate_t *statep,
const char *from_start, const char *from_end, _IO_size_t max)
{ return from_end - from_start; }
Index: config/os/solaris/solaris2.7/bits/ctype_noninline.h
===================================================================
RCS file: /cvs/gcc/egcs/libstdc++-v3/config/os/solaris/solaris2.7/bits/ctype_noninline.h,v
retrieving revision 1.1
diff -u -3 -r1.1 ctype_noninline.h
--- ctype_noninline.h 2000/10/07 18:39:06 1.1
+++ ctype_noninline.h 2000/10/22 02:57:50
@@ -34,7 +34,7 @@
// Information as gleaned from /usr/include/ctype.h
ctype<char>::ctype(const mask* __table = 0, bool __del = false,
- size_t __refs = 0) throw()
+ size_t __refs = 0)
: _Ctype_nois<char>(__refs), _M_del(__table != 0 && __del),
_M_toupper(__trans_upper), _M_tolower(__trans_lower),
_M_ctable(__ctype_mask), _M_table(__table == 0 ? _M_ctable: __table)
Index: config/os/solaris/solaris2.7/bits/os_defines.h
===================================================================
RCS file: /cvs/gcc/egcs/libstdc++-v3/config/os/solaris/solaris2.7/bits/os_defines.h,v
retrieving revision 1.2
diff -u -3 -r1.2 os_defines.h
--- os_defines.h 2000/10/09 03:35:36 1.2
+++ os_defines.h 2000/10/22 02:57:50
@@ -28,9 +28,41 @@
// the GNU General Public License.
-#ifndef __P
-# define __P(p) p
-# define __PMT(p) p
-#endif
+#ifndef _GLIBCPP_OS_DEFINES
+# define _GLIBCPP_OS_DEFINES
+
+// Need these to get sane definitions, esp. of 64-bit types and typedefs.
+#define _XOPEN_SOURCE 500
+#define _LARGEFILE64_SOURCE 1
+
+// These are typedefs which libio assumes are already in place (because
+// they really are, under Linux).
+// HACK HACK HACK LOOK AT THE HAIR GROW
+#define __off_t off_t
+#define __off64_t off64_t
+#define __ssize_t ssize_t
+
+#undef __P
+// This chunk here is pulled verbatim out of a fairly-recent Linux
+// system's sys/cdefs.h.
+/* GCC can always grok prototypes. For C++ programs we add throw()
+ to help it optimize the function calls. But this works only with
+ gcc 2.8.x and egcs. */
+# if defined __cplusplus && (__GNUC__ >= 3 || __GNUC_MINOR__ >= 8)
+# define __THROW throw ()
+# else
+# define __THROW
+# endif
+# define __P(args) args __THROW
+/* This macro will be used for functions which might take C++ callback
+ functions. */
+# define __PMT(args) args
+# define __DOTS , ...
+// End chunk from sys/cdefs.h.
+
+//#define _MBSTATET_H
+
+
+#endif
Index: include/bits/locale_facets.tcc
===================================================================
RCS file: /cvs/gcc/egcs/libstdc++-v3/include/bits/locale_facets.tcc,v
retrieving revision 1.2
diff -u -3 -r1.2 locale_facets.tcc
--- locale_facets.tcc 2000/10/18 23:26:22 1.2
+++ locale_facets.tcc 2000/10/22 02:57:50
@@ -33,6 +33,7 @@
#define _CPP_BITS_LOCFACETS_TCC 1
#include <bits/std_cerrno.h>
+#include <bits/std_clocale.h> // For localeconv
#include <bits/std_cstdlib.h> // For strof, strtold
#include <bits/std_limits.h> // For numeric_limits
#include <bits/std_memory.h> // For auto_ptr
Index: libio/Makefile.am
===================================================================
RCS file: /cvs/gcc/egcs/libstdc++-v3/libio/Makefile.am,v
retrieving revision 1.15
diff -u -3 -r1.15 Makefile.am
--- Makefile.am 2000/10/12 11:45:22 1.15
+++ Makefile.am 2000/10/22 02:57:50
@@ -51,7 +51,7 @@
if GLIBCPP_NEED_WLIBIO
LIBIO_WSRCS = \
- wfiledoalloc.c wfileops.c wgenops.c
+ wfiledoalloc.c wfileops.c wgenops.c iofwide.c
else
LIBIO_WSRCS =
endif
Index: libio/_G_config.h
===================================================================
RCS file: /cvs/gcc/egcs/libstdc++-v3/libio/_G_config.h,v
retrieving revision 1.8
diff -u -3 -r1.8 _G_config.h
--- _G_config.h 2000/10/10 23:50:38 1.8
+++ _G_config.h 2000/10/22 02:57:50
@@ -35,15 +37,15 @@
/* For use as part of glibc (native) or as part of libstdc++ (maybe
not glibc) */
-#ifndef __mbstate_t_defined
-# define __mbstate_t_defined 1
-# ifdef _GLIBCPP_USE_WCHAR_T
+#ifndef __c_mbstate_t_defined
+# define __c_mbstate_t_defined 1
+/*# ifdef _GLIBCPP_USE_WCHAR_T*/
typedef struct
{
int count;
wint_t value;
-}__mbstate_t;
-# endif
+}__c_mbstate_t;
+/*# endif*/
#endif
#undef __need_mbstate_t
@@ -54,13 +56,13 @@
typedef struct
{
__off_t __pos;
- __mbstate_t __state;
+ __c_mbstate_t __state;
} _G_fpos_t;
typedef struct
{
__off64_t __pos;
- __mbstate_t __state;
+ __c_mbstate_t __state;
} _G_fpos64_t;
#else
typedef __off_t _G_fpos_t;
Index: libio/iofwide.c
===================================================================
RCS file: /cvs/gcc/egcs/libstdc++-v3/libio/iofwide.c,v
retrieving revision 1.6
diff -u -3 -r1.6 iofwide.c
--- iofwide.c 2000/08/29 07:57:10 1.6
+++ iofwide.c 2000/10/22 02:57:50
@@ -41,22 +41,22 @@
/* Prototypes of libio's codecvt functions. */
static enum __codecvt_result do_out (struct _IO_codecvt *codecvt,
- __mbstate_t *statep,
+ __c_mbstate_t *statep,
const wchar_t *from_start,
const wchar_t *from_end,
const wchar_t **from_stop, char *to_start,
char *to_end, char **to_stop);
static enum __codecvt_result do_unshift (struct _IO_codecvt *codecvt,
- __mbstate_t *statep, char *to_start,
+ __c_mbstate_t *statep, char *to_start,
char *to_end, char **to_stop);
static enum __codecvt_result do_in (struct _IO_codecvt *codecvt,
- __mbstate_t *statep,
+ __c_mbstate_t *statep,
const char *from_start,
const char *from_end,
const char **from_stop, wchar_t *to_start,
wchar_t *to_end, wchar_t **to_stop);
static int do_encoding (struct _IO_codecvt *codecvt);
-static int do_length (struct _IO_codecvt *codecvt, __mbstate_t *statep,
+static int do_length (struct _IO_codecvt *codecvt, __c_mbstate_t *statep,
const char *from_start,
const char *from_end, _IO_size_t max);
static int do_max_length (struct _IO_codecvt *codecvt);
@@ -116,8 +116,8 @@
struct gconv_fcts fcts;
/* Clear the state. We start all over again. */
- memset (&fp->_wide_data->_IO_state, '\0', sizeof (__mbstate_t));
- memset (&fp->_wide_data->_IO_last_state, '\0', sizeof (__mbstate_t));
+ memset (&fp->_wide_data->_IO_state, '\0', sizeof (__c_mbstate_t));
+ memset (&fp->_wide_data->_IO_last_state, '\0', sizeof (__c_mbstate_t));
__wcsmbs_clone_conv (&fcts);
@@ -188,7 +188,7 @@
static enum __codecvt_result
-do_out (struct _IO_codecvt *codecvt, __mbstate_t *statep,
+do_out (struct _IO_codecvt *codecvt, __c_mbstate_t *statep,
const wchar_t *from_start, const wchar_t *from_end,
const wchar_t **from_stop, char *to_start, char *to_end,
char **to_stop)
@@ -257,7 +257,7 @@
static enum __codecvt_result
-do_unshift (struct _IO_codecvt *codecvt, __mbstate_t *statep,
+do_unshift (struct _IO_codecvt *codecvt, __c_mbstate_t *statep,
char *to_start, char *to_end, char **to_stop)
{
enum __codecvt_result result;
@@ -318,7 +318,7 @@
static enum __codecvt_result
-do_in (struct _IO_codecvt *codecvt, __mbstate_t *statep,
+do_in (struct _IO_codecvt *codecvt, __c_mbstate_t *statep,
const char *from_start, const char *from_end, const char **from_stop,
wchar_t *to_start, wchar_t *to_end, wchar_t **to_stop)
{
@@ -416,7 +416,7 @@
static int
-do_length (struct _IO_codecvt *codecvt, __mbstate_t *statep,
+do_length (struct _IO_codecvt *codecvt, __c_mbstate_t *statep,
const char *from_start, const char *from_end, _IO_size_t max)
{
int result;
Index: libio/libio.h
===================================================================
RCS file: /cvs/gcc/egcs/libstdc++-v3/libio/libio.h,v
retrieving revision 1.8
diff -u -3 -r1.8 libio.h
--- libio.h 2000/10/18 23:29:30 1.8
+++ libio.h 2000/10/22 02:57:50
@@ -206,22 +206,22 @@
{
void (*__codecvt_destr) (struct _IO_codecvt *);
enum __codecvt_result (*__codecvt_do_out) (struct _IO_codecvt *,
- __mbstate_t *,
+ __c_mbstate_t *,
const wchar_t *,
const wchar_t *,
const wchar_t **, char *,
char *, char **);
enum __codecvt_result (*__codecvt_do_unshift) (struct _IO_codecvt *,
- __mbstate_t *, char *,
+ __c_mbstate_t *, char *,
char *, char **);
enum __codecvt_result (*__codecvt_do_in) (struct _IO_codecvt *,
- __mbstate_t *,
+ __c_mbstate_t *,
const char *, const char *,
const char **, wchar_t *,
wchar_t *, wchar_t **);
int (*__codecvt_do_encoding) (struct _IO_codecvt *);
int (*__codecvt_do_always_noconv) (struct _IO_codecvt *);
- int (*__codecvt_do_length) (struct _IO_codecvt *, __mbstate_t *,
+ int (*__codecvt_do_length) (struct _IO_codecvt *, __c_mbstate_t *,
const char *, const char *, _IO_size_t);
int (*__codecvt_do_max_length) (struct _IO_codecvt *);
@@ -247,8 +247,8 @@
wchar_t *_IO_save_end; /* Pointer to end of non-current get area. */
#if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
- __mbstate_t _IO_state;
- __mbstate_t _IO_last_state;
+ __c_mbstate_t _IO_state;
+ __c_mbstate_t _IO_last_state;
#endif
struct _IO_codecvt _codecvt;
Index: libio/wfileops.c
===================================================================
RCS file: /cvs/gcc/egcs/libstdc++-v3/libio/wfileops.c,v
retrieving revision 1.3
diff -u -3 -r1.3 wfileops.c
--- wfileops.c 2000/08/15 07:33:00 1.3
+++ wfileops.c 2000/10/22 02:57:50
@@ -28,7 +28,9 @@
#include <assert.h>
#include <libioP.h>
#include <wchar.h>
-#include <gconv.h>
+#ifdef HAVE_GCONV_H
+# include <gconv.h>
+#endif
#include <stdlib.h>
#include <string.h>