Mercurial > hg > xemacs-beta
diff src/mule-ccl.c @ 418:e804706bfb8c r21-2-17
Import from CVS: tag r21-2-17
author | cvs |
---|---|
date | Mon, 13 Aug 2007 11:23:13 +0200 |
parents | da8ed4261e83 |
children | 95016f13131a |
line wrap: on
line diff
--- a/src/mule-ccl.c Mon Aug 13 11:22:24 2007 +0200 +++ b/src/mule-ccl.c Mon Aug 13 11:23:13 2007 +0200 @@ -447,7 +447,8 @@ else \ { \ Bufbyte work[MAX_EMCHAR_LEN]; \ - int len = ( ch < 256 ) ? \ + int len = ( ch < ( conversion_mode == CCL_MODE_ENCODING ? \ + 256 : 128 ) ) ? \ simple_set_charptr_emchar (work, ch) : \ non_ascii_set_charptr_emchar (work, ch); \ Dynarr_add_many (destination, work, len); \ @@ -517,7 +518,7 @@ }; int -ccl_driver (struct ccl_program *ccl, CONST unsigned char *source, unsigned_char_dynarr *destination, int src_bytes, int *consumed) +ccl_driver (struct ccl_program *ccl, CONST unsigned char *source, unsigned_char_dynarr *destination, int src_bytes, int *consumed, int conversion_mode) { int *reg = ccl->reg; int ic = ccl->ic; @@ -978,7 +979,7 @@ : 0); ccl_driver (&ccl, (CONST unsigned char *)0, (unsigned_char_dynarr *)0, - 0, (int *)0); + 0, (int *)0, CCL_MODE_ENCODING); QUIT; if (ccl.status != CCL_STAT_SUCCESS) error ("Error in CCL program at %dth code", ccl.ic); @@ -1035,7 +1036,7 @@ outbuf = Dynarr_new (unsigned_char); ccl.last_block = NILP (contin); produced = ccl_driver (&ccl, XSTRING_DATA (str), outbuf, - XSTRING_LENGTH (str), (int *)0); + XSTRING_LENGTH (str), (int *)0, CCL_MODE_ENCODING); for (i = 0; i < 8; i++) XVECTOR_DATA (status)[i] = make_int(ccl.reg[i]); XSETINT (XVECTOR_DATA (status)[8], ccl.ic);