X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=src%2Fmule-ccl.c;h=ad52fd220059c7820b2db4514ac879a1a423041a;hb=37bdb8647edead5a0e669c6ec27841d470a9e5e6;hp=afd30d61b589f85e22416b6847d42d6f77c213ec;hpb=98a6e4055a1fa624c592ac06f79287d55196ca37;p=chise%2Fxemacs-chise.git diff --git a/src/mule-ccl.c b/src/mule-ccl.c index afd30d6..ad52fd2 100644 --- a/src/mule-ccl.c +++ b/src/mule-ccl.c @@ -31,7 +31,7 @@ Boston, MA 02111-1307, USA. */ #include "lisp.h" #include "buffer.h" -#include "mule-charset.h" +#include "character.h" #include "mule-ccl.h" #include "file-coding.h" @@ -423,7 +423,7 @@ Lisp_Object Vccl_program_table; IC += 2; */ -#define CCL_Extention 0x1F /* Extended CCL code +#define CCL_Extension 0x1F /* Extended CCL code 1:ExtendedCOMMNDRrrRRRrrrXXXXX 2:ARGUMENT 3:... @@ -600,7 +600,7 @@ static tr_stack *mapping_stack_pointer; /* If this variable is non-zero, it indicates the stack_idx of immediately called by CCL_MapMultiple. */ -static int stack_idx_of_map_multiple = 0; +static int stack_idx_of_map_multiple; #define PUSH_MAPPING_STACK(restlen, orig) \ do { \ @@ -634,7 +634,9 @@ static int stack_idx_of_map_multiple = 0; stack_idx++; \ ccl_prog = called_ccl.prog; \ ic = CCL_HEADER_MAIN; \ - goto ccl_repeat; \ + /* The "if (1)" prevents warning \ + "end-of loop code not reached" */ \ + if (1) goto ccl_repeat; \ } while (0) #define CCL_MapSingle 0x12 /* Map by single code conversion map @@ -675,29 +677,35 @@ static int stack_idx_of_map_multiple = 0; r[7] = LOWER_BYTE (SJIS (Y, Z) */ /* Terminate CCL program successfully. */ -#define CCL_SUCCESS \ - do { \ - ccl->status = CCL_STAT_SUCCESS; \ - goto ccl_finish; \ - } while (0) +#define CCL_SUCCESS \ +do { \ + ccl->status = CCL_STAT_SUCCESS; \ + /* The "if (1)" inhibits the warning \ + "end-of loop code not reached" */ \ + if (1) goto ccl_finish; \ +} while (0) /* Suspend CCL program because of reading from empty input buffer or writing to full output buffer. When this program is resumed, the same I/O command is executed. */ -#define CCL_SUSPEND(stat) \ - do { \ - ic--; \ - ccl->status = stat; \ - goto ccl_finish; \ - } while (0) +#define CCL_SUSPEND(stat) \ +do { \ + ic--; \ + ccl->status = (stat); \ + /* The "if (1)" inhibits the warning \ + "end-of loop code not reached" */ \ + if (1) goto ccl_finish; \ +} while (0) /* Terminate CCL program because of invalid command. Should not occur in the normal case. */ -#define CCL_INVALID_CMD \ - do { \ - ccl->status = CCL_STAT_INVALID_CMD; \ - goto ccl_error_handler; \ - } while (0) +#define CCL_INVALID_CMD \ +do { \ + ccl->status = CCL_STAT_INVALID_CMD; \ + /* The "if (1)" inhibits the warning \ + "end-of loop code not reached" */ \ + if (1) goto ccl_error_handler; \ +} while (0) /* Encode one character CH to multibyte form and write to the current output buffer. At encoding time, if CH is less than 256, CH is @@ -709,7 +717,7 @@ static int stack_idx_of_map_multiple = 0; CCL_INVALID_CMD; \ if (conversion_mode == CCL_MODE_ENCODING) \ { \ - if (ch == '\n') \ + if ((ch) == '\n') \ { \ if (ccl->eol_type == CCL_CODING_EOL_CRLF) \ { \ @@ -721,7 +729,7 @@ static int stack_idx_of_map_multiple = 0; else \ Dynarr_add (destination, '\n'); \ } \ - else if (ch < 0x100) \ + else if ((ch) < 0x100) \ { \ Dynarr_add (destination, ch); \ } \ @@ -760,7 +768,7 @@ static int stack_idx_of_map_multiple = 0; CCL_INVALID_CMD; \ else if (conversion_mode == CCL_MODE_ENCODING) \ { \ - for (i = 0; i < len; i++) \ + for (i = 0; i < (len); i++) \ { \ ch = ((XINT (ccl_prog[ic + (i / 3)])) \ >> ((2 - (i % 3)) * 8)) & 0xFF; \ @@ -789,7 +797,7 @@ static int stack_idx_of_map_multiple = 0; } \ else \ { \ - for (i = 0; i < len; i++) \ + for (i = 0; i < (len); i++) \ { \ ch = ((XINT (ccl_prog[ic + (i / 3)])) \ >> ((2 - (i % 3)) * 8)) & 0xFF; \ @@ -812,7 +820,7 @@ static int stack_idx_of_map_multiple = 0; if (!src) \ CCL_INVALID_CMD; \ if (src < src_end) \ - r = *src++; \ + (r) = *src++; \ else \ { \ if (ccl->last_block) \ @@ -837,20 +845,20 @@ static int stack_idx_of_map_multiple = 0; #if 0 #define CCL_MAKE_CHAR(charset, code, c) \ do { \ - if (charset == CHARSET_ASCII) \ - c = code & 0xFF; \ + if ((charset) == CHARSET_ASCII) \ + (c) = (code) & 0xFF; \ else if (CHARSET_DEFINED_P (charset) \ - && (code & 0x7F) >= 32 \ - && (code < 256 || ((code >> 7) & 0x7F) >= 32)) \ + && ((code) & 0x7F) >= 32 \ + && ((code) < 256 || ((code >> 7) & 0x7F) >= 32)) \ { \ - int c1 = code & 0x7F, c2 = 0; \ + int c1 = (code) & 0x7F, c2 = 0; \ \ - if (code >= 256) \ - c2 = c1, c1 = (code >> 7) & 0x7F; \ - c = MAKE_CHAR (charset, c1, c2); \ + if ((code) >= 256) \ + c2 = c1, c1 = ((code) >> 7) & 0x7F; \ + (c) = MAKE_CHAR (charset, c1, c2); \ } \ else \ - c = code & 0xFF; \ + (c) = (code) & 0xFF; \ } while (0) #endif @@ -1268,67 +1276,65 @@ ccl_driver (struct ccl_program *ccl, ic = jump_address; break; - case CCL_Extention: + case CCL_Extension: switch (EXCMD) { +#ifndef UTF2000 case CCL_ReadMultibyteChar2: if (!src) CCL_INVALID_CMD; - do { - if (src >= src_end) - { - src++; - goto ccl_read_multibyte_character_suspend; - } + if (src >= src_end) + { + src++; + goto ccl_read_multibyte_character_suspend; + } - i = *src++; - if (i < 0x80) - { - /* ASCII */ - reg[rrr] = i; - reg[RRR] = LEADING_BYTE_ASCII; - } - else if (i <= MAX_LEADING_BYTE_OFFICIAL_1) - { - if (src >= src_end) - goto ccl_read_multibyte_character_suspend; - reg[RRR] = i; - reg[rrr] = (*src++ & 0x7F); - } - else if (i <= MAX_LEADING_BYTE_OFFICIAL_2) - { - if ((src + 1) >= src_end) - goto ccl_read_multibyte_character_suspend; - reg[RRR] = i; - i = (*src++ & 0x7F); - reg[rrr] = ((i << 7) | (*src & 0x7F)); - src++; - } - else if (i == PRE_LEADING_BYTE_PRIVATE_1) - { - if ((src + 1) >= src_end) - goto ccl_read_multibyte_character_suspend; - reg[RRR] = *src++; - reg[rrr] = (*src++ & 0x7F); - } - else if (i == PRE_LEADING_BYTE_PRIVATE_2) - { - if ((src + 2) >= src_end) - goto ccl_read_multibyte_character_suspend; - reg[RRR] = *src++; - i = (*src++ & 0x7F); - reg[rrr] = ((i << 7) | (*src & 0x7F)); - src++; - } - else - { - /* INVALID CODE. Return a single byte character. */ - reg[RRR] = LEADING_BYTE_ASCII; - reg[rrr] = i; - } - break; - } while (1); + i = *src++; + if (i < 0x80) + { + /* ASCII */ + reg[rrr] = i; + reg[RRR] = LEADING_BYTE_ASCII; + } + else if (i <= MAX_LEADING_BYTE_OFFICIAL_1) + { + if (src >= src_end) + goto ccl_read_multibyte_character_suspend; + reg[RRR] = i; + reg[rrr] = (*src++ & 0x7F); + } + else if (i <= MAX_LEADING_BYTE_OFFICIAL_2) + { + if ((src + 1) >= src_end) + goto ccl_read_multibyte_character_suspend; + reg[RRR] = i; + i = (*src++ & 0x7F); + reg[rrr] = ((i << 7) | (*src & 0x7F)); + src++; + } + else if (i == PRE_LEADING_BYTE_PRIVATE_1) + { + if ((src + 1) >= src_end) + goto ccl_read_multibyte_character_suspend; + reg[RRR] = *src++; + reg[rrr] = (*src++ & 0x7F); + } + else if (i == PRE_LEADING_BYTE_PRIVATE_2) + { + if ((src + 2) >= src_end) + goto ccl_read_multibyte_character_suspend; + reg[RRR] = *src++; + i = (*src++ & 0x7F); + reg[rrr] = ((i << 7) | (*src & 0x7F)); + src++; + } + else + { + /* INVALID CODE. Return a single byte character. */ + reg[RRR] = LEADING_BYTE_ASCII; + reg[rrr] = i; + } break; ccl_read_multibyte_character_suspend: @@ -1342,7 +1348,9 @@ ccl_driver (struct ccl_program *ccl, CCL_SUSPEND (CCL_STAT_SUSPEND_BY_SRC); break; +#endif +#ifndef UTF2000 case CCL_WriteMultibyteChar2: i = reg[RRR]; /* charset */ if (i == LEADING_BYTE_ASCII) @@ -1358,6 +1366,7 @@ ccl_driver (struct ccl_program *ccl, CCL_WRITE_CHAR (i); break; +#endif case CCL_TranslateCharacter: #if 0