diff options
-rw-r--r-- | ChangeLog | 12 | ||||
-rw-r--r-- | iconv/gconv.h | 2 | ||||
-rw-r--r-- | iconv/skeleton.c | 7 | ||||
-rw-r--r-- | iconvdata/iso-2022-jp.c | 2 | ||||
-rw-r--r-- | iconvdata/iso8859-1.c | 2 | ||||
-rw-r--r-- | misc/sys/cdefs.h | 18 |
6 files changed, 41 insertions, 2 deletions
@@ -1,3 +1,15 @@ +2000-11-27 Ulrich Drepper <drepper@redhat.com> + + * iconv/gconv.h (__gconv_info): Define __data element using __flexarr. + * misc/sys/cdefs.h: Define __flexarr. + Proposed by Joseph S. Myers <jsm28@cam.ac.uk>. + + * iconvdata/iso-2022-jp.c: Add prototypes to avoid warnings. + * iconv/skeleton.c: Likewise. + * iconvdata/iso8859-1.c (BODY to 8859-1): Add const to cast. + * iconv/loop.c (get16): Add const to cast. + (get32): Likewise. + 2000-11-27 Andreas Jaeger <aj@suse.de> * login/programs/pt_chown.c (do_pt_chown): Mark function as static diff --git a/iconv/gconv.h b/iconv/gconv.h index 03574d859e..39567524a8 100644 --- a/iconv/gconv.h +++ b/iconv/gconv.h @@ -168,7 +168,7 @@ typedef struct __gconv_info { size_t __nsteps; struct __gconv_step *__steps; - __extension__ struct __gconv_step_data __data[0]; + __extension__ struct __gconv_step_data __data __flexarr; } *__gconv_t; #endif /* gconv.h */ diff --git a/iconv/skeleton.c b/iconv/skeleton.c index 58f381295f..06e373013d 100644 --- a/iconv/skeleton.c +++ b/iconv/skeleton.c @@ -213,6 +213,7 @@ static int to_object; # error "CHARSET_NAME not defined" # endif +extern int gconv_init (struct __gconv_step *step); int gconv_init (struct __gconv_step *step) { @@ -273,6 +274,12 @@ gconv_init (struct __gconv_step *step) #define SINGLE2(fct) fct##_single +extern int FUNCTION_NAME (struct __gconv_step *step, + struct __gconv_step_data *data, + const unsigned char **inptrp, + const unsigned char *inend, + unsigned char **outbufstart, size_t *irreversible, + int do_flush, int consume_incomplete); int FUNCTION_NAME (struct __gconv_step *step, struct __gconv_step_data *data, const unsigned char **inptrp, const unsigned char *inend, diff --git a/iconvdata/iso-2022-jp.c b/iconvdata/iso-2022-jp.c index bb7cc1831e..1d9164d818 100644 --- a/iconvdata/iso-2022-jp.c +++ b/iconvdata/iso-2022-jp.c @@ -111,6 +111,7 @@ enum }; +extern int gconv_init (struct __gconv_step *step); int gconv_init (struct __gconv_step *step) { @@ -180,6 +181,7 @@ gconv_init (struct __gconv_step *step) } +extern void gconv_end (struct __gconv_step *data); void gconv_end (struct __gconv_step *data) { diff --git a/iconvdata/iso8859-1.c b/iconvdata/iso8859-1.c index bedc425ec3..9e5007f77d 100644 --- a/iconvdata/iso8859-1.c +++ b/iconvdata/iso8859-1.c @@ -45,7 +45,7 @@ #define LOOPFCT TO_LOOP #define BODY \ { \ - uint32_t ch = *((uint32_t *) inptr); \ + uint32_t ch = *((const uint32_t *) inptr); \ if (__builtin_expect (ch, 0) > 0xff) \ { \ /* We have an illegal character. */ \ diff --git a/misc/sys/cdefs.h b/misc/sys/cdefs.h index 3174a8524c..3d6a20bb52 100644 --- a/misc/sys/cdefs.h +++ b/misc/sys/cdefs.h @@ -93,6 +93,24 @@ #endif +/* Support for flexible arrays. */ +#if __GNUC_PREREQ (2,97) +/* GCC 2.97 supports C99 flexible array members. */ +# define __flexarr [] +#else +# ifdef __GNUC__ +# define __flexarr [0] +# else +# ifdef __STDC_VERSION__ && __STDC_VERSION__ >= 199901L +# define __flexarr [] +# else +/* Some other non-C99 compiler. Approximate with [1]. */ +# define __flexarr [1] +# endif +# endif +#endif + + /* __asm__ ("xyz") is used throughout the headers to rename functions at the assembly language level. This is wrapped by the __REDIRECT macro, in order to support compilers that can do this some other |