summaryrefslogtreecommitdiff
path: root/src/ccl.c
diff options
context:
space:
mode:
authorKenichi Handa <handa@m17n.org>1999-12-15 00:03:45 +0000
committerKenichi Handa <handa@m17n.org>1999-12-15 00:03:45 +0000
commit6982083b65de7526b4ff88815524addbbbceee80 (patch)
tree119d1e20645f6d6e8c64c1dbe2e1d31548f08657 /src/ccl.c
parent70414a3dac2e1c71ec07cc0cdf7d79008b599a31 (diff)
downloademacs-6982083b65de7526b4ff88815524addbbbceee80.tar.gz
(CCL_WRITE_CHAR): Adjusted for the change of CHAR_STRING.
(ccl_driver): Delete codes for a composite character.
Diffstat (limited to 'src/ccl.c')
-rw-r--r--src/ccl.c82
1 files changed, 15 insertions, 67 deletions
diff --git a/src/ccl.c b/src/ccl.c
index 6a6876df7c8..93cb0873b96 100644
--- a/src/ccl.c
+++ b/src/ccl.c
@@ -666,21 +666,21 @@ static tr_stack *mapping_stack_pointer;
/* Encode one character CH to multibyte form and write to the current
output buffer. If CH is less than 256, CH is written as is. */
-#define CCL_WRITE_CHAR(ch) \
- do { \
- if (!dst) \
- CCL_INVALID_CMD; \
- else \
- { \
- unsigned char work[4], *str; \
- int len = CHAR_STRING (ch, work, str); \
- if (dst + len <= (dst_bytes ? dst_end : src)) \
- { \
- while (len--) *dst++ = *str++; \
- } \
- else \
- CCL_SUSPEND (CCL_STAT_SUSPEND_BY_DST); \
- } \
+#define CCL_WRITE_CHAR(ch) \
+ do { \
+ if (!dst) \
+ CCL_INVALID_CMD; \
+ else \
+ { \
+ unsigned char str[MAX_MULTIBYTE_LENGTH], *p = str; \
+ int len = CHAR_STRING (ch, str); \
+ if (dst + len <= (dst_bytes ? dst_end : src)) \
+ { \
+ while (len--) *dst++ = *p++; \
+ } \
+ else \
+ CCL_SUSPEND (CCL_STAT_SUSPEND_BY_DST); \
+ } \
} while (0)
/* Write a string at ccl_prog[IC] of length LEN to the current output
@@ -1125,46 +1125,6 @@ ccl_driver (ccl, source, destination, src_bytes, dst_bytes, consumed)
}
i = *src++;
- if (i == LEADING_CODE_COMPOSITION)
- {
- if (src >= src_end)
- goto ccl_read_multibyte_character_suspend;
- if (*src == 0xFF)
- {
- ccl->private_state = COMPOSING_WITH_RULE_HEAD;
- src++;
- }
- else
- ccl->private_state = COMPOSING_NO_RULE_HEAD;
-
- continue;
- }
- if (ccl->private_state != COMPOSING_NO)
- {
- /* composite character */
- if (i < 0xA0)
- ccl->private_state = COMPOSING_NO;
- else
- {
- if (COMPOSING_WITH_RULE_RULE == ccl->private_state)
- {
- ccl->private_state = COMPOSING_WITH_RULE_HEAD;
- continue;
- }
- else if (COMPOSING_WITH_RULE_HEAD == ccl->private_state)
- ccl->private_state = COMPOSING_WITH_RULE_RULE;
-
- if (i == 0xA0)
- {
- if (src >= src_end)
- goto ccl_read_multibyte_character_suspend;
- i = *src++ & 0x7F;
- }
- else
- i -= 0x20;
- }
- }
-
if (i < 0x80)
{
/* ASCII */
@@ -1231,8 +1191,6 @@ ccl_driver (ccl, source, destination, src_bytes, dst_bytes, consumed)
i = reg[RRR]; /* charset */
if (i == CHARSET_ASCII)
i = reg[rrr] & 0xFF;
- else if (i == CHARSET_COMPOSITION)
- i = MAKE_COMPOSITE_CHAR (reg[rrr]);
else if (CHARSET_DIMENSION (i) == 1)
i = ((i - 0x70) << 7) | (reg[rrr] & 0x7F);
else if (i < MIN_CHARSET_PRIVATE_DIMENSION2)
@@ -1248,11 +1206,6 @@ ccl_driver (ccl, source, destination, src_bytes, dst_bytes, consumed)
i = reg[RRR]; /* charset */
if (i == CHARSET_ASCII)
i = reg[rrr];
- else if (i == CHARSET_COMPOSITION)
- {
- reg[RRR] = -1;
- break;
- }
else if (CHARSET_DIMENSION (i) == 1)
i = ((i - 0x70) << 7) | (reg[rrr] & 0x7F);
else if (i < MIN_CHARSET_PRIVATE_DIMENSION2)
@@ -1275,11 +1228,6 @@ ccl_driver (ccl, source, destination, src_bytes, dst_bytes, consumed)
i = reg[RRR]; /* charset */
if (i == CHARSET_ASCII)
i = reg[rrr];
- else if (i == CHARSET_COMPOSITION)
- {
- reg[RRR] = -1;
- break;
- }
else if (CHARSET_DIMENSION (i) == 1)
i = ((i - 0x70) << 7) | (reg[rrr] & 0x7F);
else if (i < MIN_CHARSET_PRIVATE_DIMENSION2)