+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
{
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 */
# error "CHARSET_NAME not defined"
# endif
+extern int gconv_init (struct __gconv_step *step);
int
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,
};
+extern int gconv_init (struct __gconv_step *step);
int
gconv_init (struct __gconv_step *step)
{
}
+extern void gconv_end (struct __gconv_step *data);
void
gconv_end (struct __gconv_step *data)
{
#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. */ \
#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