summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog12
-rw-r--r--iconv/gconv.h2
-rw-r--r--iconv/skeleton.c7
-rw-r--r--iconvdata/iso-2022-jp.c2
-rw-r--r--iconvdata/iso8859-1.c2
-rw-r--r--misc/sys/cdefs.h18
6 files changed, 41 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index f4a1df280d..d06348d9a6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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