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);