diff options
author | Ulrich Drepper <drepper@redhat.com> | 2002-12-02 22:39:58 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2002-12-02 22:39:58 +0000 |
commit | f9ad060c7acbfd46d0a207c2da40999f8e6d4420 (patch) | |
tree | 6806c7540ab407d418a0d6d9650c9b818b24e32f /iconvdata/ibm932.c | |
parent | bfa934e76ae3cac505610447071984b4bc4c49f5 (diff) | |
download | glibc-f9ad060c7acbfd46d0a207c2da40999f8e6d4420.tar.gz |
Update.
2002-11-30 Bruno Haible <bruno@clisp.org>
* iconv/gconv.h (__gconv_btowc_fct): New typedef.
(struct __gconv_step): New field __btowc_fct.
* wcsmbs/btowc.c (__btowc): Use the __btowc_fct shortcut if possible.
* iconv/gconv_int.h (__BUILTIN_TRANSFORM): Renamed from
__BUILTIN_TRANS.
(__gconv_btwoc_ascii): New declaration.
* iconv/gconv_simple.c (BUILTIN_TRANSFORMATION): Add BtowcFct argument.
(__gconv_btwoc_ascii): New function.
* iconv/gconv_builtin.h: Add BtowcFct argument to all
BUILTIN_TRANSFORMATION invocations.
* iconv/gconv_conf.c (BUILTIN_TRANSFORMATION): Add BtowcFct argument.
* iconv/iconvconfig.c (BUILTIN_TRANSFORMATION): Likewise.
* iconv/gconv_builtin.c (map): New field btowc_fct.
(BUILTIN_TRANSFORMATION): Add BtowcFct argument. Use it to initialize
btowc_fct field.
(__gconv_get_builtin_trans): Initialize __btowc_fct field.
* iconv/gconv_cache.c (find_module): Initialize __btowc_fct field.
* iconv/gconv_db.c (gen_steps, increment_counter): Likewise.
* wcsmbs/wcsmbsload.c (to_wc, to_mb): Likewise.
* iconv/skeleton.c: Document STORE_REST and FROM_ONEBYTE.
(gconv_init): Initialize __btowc_fct field.
Undefine EXTRA_LOOP_ARGS and FROM_ONEBYTE at the end.
* iconv/loop.c: Document ONEBYTE_BODY.
(gconv_btowc, FROM_ONEBYTE): Define if ONEBYTE_BODY is defined.
Undefine ONEBYTE_BODY at the end.
* iconvdata/8bit-generic.c (ONEBYTE_BODY): New macro.
* iconvdata/8bit-gap.c (NONNUL): New macro.
(BODY for FROM_LOOP): Use it.
(ONEBYTE_BODY): New macro.
* iconvdata/isiri-3342.c (HAS_HOLES): Set to 1.
(NONNUL): New macro.
* iconvdata/ansi_x3.110.c (ONEBYTE_BODY): New macro.
* iconvdata/armscii-8.c (ONEBYTE_BODY): New macro.
* iconvdata/cp1255.c (ONEBYTE_BODY): New macro.
* iconvdata/cp1258.c (ONEBYTE_BODY): New macro.
* iconvdata/tcvn5712-1.c (ONEBYTE_BODY): New macro.
* iconvdata/big5.c (ONEBYTE_BODY): New macro.
* iconvdata/big5hkscs.c (ONEBYTE_BODY): New macro.
* iconvdata/euc-cn.c (ONEBYTE_BODY): New macro.
* iconvdata/euc-jp.c (ONEBYTE_BODY): New macro.
* iconvdata/euc-jisx0213.c (ONEBYTE_BODY): New macro.
* iconvdata/euc-kr.c (ONEBYTE_BODY): New macro.
* iconvdata/euc-tw.c (ONEBYTE_BODY): New macro.
* iconvdata/gbk.c (ONEBYTE_BODY): New macro.
* iconvdata/gb18030.c (ONEBYTE_BODY): New macro.
* iconvdata/ibm932.c: Include <stdbool.h>.
(TRUE, FALSE): Remove macros.
(BODY for FROM_LOOP): Remove unused variable rp1.
(ONEBYTE_BODY): New macro.
(BODY for TO_LOOP): Use bool.
* iconvdata/ibm932.h (__ibm932sb_to_ucs4_idx): Remove array.
* iconvdata/ibm943.c: Include <stdbool.h>.
(TRUE, FALSE): Remove macros.
(BODY for FROM_LOOP): Remove unused variable rp1.
(ONEBYTE_BODY): New macro.
(BODY for TO_LOOP): Use bool.
* iconvdata/ibm943.h (__ibm943sb_to_ucs4_idx): Remove array.
* iconvdata/iso8859-1.c (ONEBYTE_BODY): New macro.
* iconvdata/iso_6937-2.c (ONEBYTE_BODY): New macro.
* iconvdata/iso_6937.c (ONEBYTE_BODY): New macro.
* iconvdata/johab.c (ONEBYTE_BODY): New macro.
* iconvdata/sjis.c (ONEBYTE_BODY): New macro.
* iconvdata/shift_jisx0213.c (ONEBYTE_BODY): New macro.
* iconvdata/t.61.c (ONEBYTE_BODY): New macro.
* iconvdata/uhc.c (ONEBYTE_BODY): New macro.
* iconvdata/gbbig5.c: Tweak comment.
Diffstat (limited to 'iconvdata/ibm932.c')
-rw-r--r-- | iconvdata/ibm932.c | 59 |
1 files changed, 30 insertions, 29 deletions
diff --git a/iconvdata/ibm932.c b/iconvdata/ibm932.c index 1e87067fef..420b19ab80 100644 --- a/iconvdata/ibm932.c +++ b/iconvdata/ibm932.c @@ -20,13 +20,9 @@ #include <dlfcn.h> #include <stdint.h> +#include <stdbool.h> #include "ibm932.h" -#ifndef TRUE -#define TRUE 1 -#define FALSE 0 -#endif - #define FROM 0 #define TO 1 @@ -50,38 +46,24 @@ #define LOOPFCT FROM_LOOP #define BODY \ { \ - const struct gap *rp1 = __ibm932sb_to_ucs4_idx; \ const struct gap *rp2 = __ibm932db_to_ucs4_idx; \ uint32_t ch = *inptr; \ uint32_t res; \ \ - if (__builtin_expect (ch >= 0xffff, 0)) \ - { \ - rp1 = NULL; \ - rp2 = NULL; \ - } \ - else if (__builtin_expect (ch, 0) == 0x80 \ - || __builtin_expect (ch, 0) == 0xa0 \ - || __builtin_expect (ch, 0) == 0xfd \ - || __builtin_expect (ch, 0) == 0xfe \ - || __builtin_expect (ch, 0) == 0xff) \ + if (__builtin_expect (ch == 0x80, 0) \ + || __builtin_expect (ch == 0xa0, 0) \ + || __builtin_expect (ch == 0xfd, 0) \ + || __builtin_expect (ch == 0xfe, 0) \ + || __builtin_expect (ch == 0xff, 0)) \ { \ /* This is an illegal character. */ \ STANDARD_FROM_LOOP_ERR_HANDLER (1); \ } \ - else \ - { \ - while (ch > rp1->end) \ - ++rp1; \ - } \ \ /* Use the IBM932 table for single byte. */ \ - if (__builtin_expect (rp1 == NULL, 0) \ - || __builtin_expect (ch < rp1->start, 0) \ - || (res = __ibm932sb_to_ucs4[ch + rp1->idx], \ - __builtin_expect (res, '\1') == 0 && ch != 0)) \ + res = __ibm932sb_to_ucs4[ch]; \ + if (__builtin_expect (res == 0, 0) && ch != 0) \ { \ - \ /* Use the IBM932 table for double byte. */ \ if (__builtin_expect (inptr + 1 >= inend, 0)) \ { \ @@ -128,6 +110,25 @@ } \ } #define LOOP_NEED_FLAGS +#define ONEBYTE_BODY \ + { \ + if (c == 0x80 || c == 0xa0 || c >= 0xfd) \ + return WEOF; \ + uint32_t res = __ibm932sb_to_ucs4[c]; \ + if (res == 0 && c != 0) \ + return WEOF; \ + if (res == 0x1c) \ + res = 0x1a; \ + else if (res == 0x7f) \ + res = 0x1c; \ + else if (res == 0xa5) \ + res = 0x5c; \ + else if (res == 0x203e) \ + res = 0x7e; \ + else if (res == 0x1a) \ + res = 0x7f; \ + return res; \ + } #include <iconv/loop.c> /* Next, define the other direction. */ @@ -140,7 +141,7 @@ const struct gap *rp = __ucs4_to_ibm932sb_idx; \ unsigned char sc; \ uint32_t ch = get32 (inptr); \ - uint16_t found = TRUE; \ + bool found = true; \ uint32_t i; \ uint32_t low; \ uint32_t high; \ @@ -163,7 +164,7 @@ { \ \ /* Use the UCS4 table for double byte. */ \ - found = FALSE; \ + found = false; \ low = 0; \ high = (sizeof (__ucs4_to_ibm932db) >> 1) \ / sizeof (__ucs4_to_ibm932db[0][FROM]); \ @@ -178,7 +179,7 @@ else \ { \ pccode = __ucs4_to_ibm932db[i][TO]; \ - found = TRUE; \ + found = true; \ break; \ } \ } \ |