1) Here's a patch for handling multilingual file names correctly. --- mcpath.c 1995/08/01 09:24:53 1.1 +++ mcpath.c 1995/08/01 09:25:54 @@ -152,7 +152,8 @@ { int len; - len = encode_path_1 (path, strlen (path), encode_buffer, size); + /* encode up to '\0', the end of string. */ + len = encode_path_1 (path, strlen (path) + 1, encode_buffer, size); if (len > 0) path = encode_buffer; #ifdef MSDOS 2) Here's a patch to fix bug of lib-src/m2ps.c. --- /usr/dist/mule/mule-2.3/lib-src/m2ps.c Thu Jun 15 14:01:19 1995 +++ m2ps.c Wed Nov 22 03:03:48 1995 @@ -238,7 +238,7 @@ ps_bot(); ps_bop(); clm = row = 0; current_lc = -1; - /* set_font(0); */ + set_font(0); while ((len = get_line(line, 1024, stdin)) >= 0) { /* 93.6.4 by K.Shibata */ /* We should process line by line to handle r2l direction. */ j = 0; r2l_chars = 0; 3) This fix a bug which occurs when the environement variable USER is not defined (by ). --- ../../mule-2.3/lisp/eggrc-wnn Wed Jul 26 11:00:31 1995 +++ eggrc-wnn Fri Jul 28 19:19:42 1995 @@ -57,8 +57,8 @@ ; (add-wnn-dict "wnncons/tankan3.dic" "" 1 nil nil) (set-wnn-param 5 10 2 45 0 80 5 1 20 0 400 -100 400 80 200 2 200) - (add-wnn-notrans-dict "usr/$USER/katakana" 15 t) - (add-wnn-bmodify-dict "usr/$USER/bunsetsu" 15 t) + (add-wnn-notrans-dict (concat wnn-usr-dic-dir "/katakana") 15 t) + (add-wnn-bmodify-dict (concat wnn-usr-dic-dir "/bunsetsu") 15 t) (set-last-is-first-mode t) (set-complex-conv-mode nil) 4) This fix a bug of learning MUHENKAN dictionary of Wnn. You must apply this patch after 3). --- eggrc-wnn.orig Fri Jul 28 19:19:42 1995 +++ eggrc-wnn Mon Feb 19 20:51:25 1996 @@ -24,7 +24,7 @@ ;;; ;;; modified for Wnn V4 - Use compatible library of Wnn v3 ;;; Copyright 1989 OMRON Tateisi Electronics, Co. -;;; 1989 7/12 by H.Kuribayashi kuri@frf.oron.junet +;;; 1989 7/12 by H.Kuribayashi kuri@frf.omron.junet ;;; 92.5.19 modified for Wnn V4 by T.Shingu ;;; Use non compatible library. @@ -57,7 +57,7 @@ ; (add-wnn-dict "wnncons/tankan3.dic" "" 1 nil nil) (set-wnn-param 5 10 2 45 0 80 5 1 20 0 400 -100 400 80 200 2 200) - (add-wnn-notrans-dict (concat wnn-usr-dic-dir "/katakana") 15 t) + (add-wnn-notrans-dict (concat wnn-usr-dic-dir "/muhenkan") 15 t) (add-wnn-bmodify-dict (concat wnn-usr-dic-dir "/bunsetsu") 15 t) (set-last-is-first-mode t) 5) This fix a bug of handling VIQR for Vietnamese. --- /usr/dist/mule/mule-2.3/lisp/viet.el Fri Oct 21 13:19:24 1994 +++ mule/lisp/viet.el Tue Feb 20 15:20:51 1996 @@ -35,7 +35,7 @@ (save-restriction (narrow-to-region from to) (goto-char (point-min)) - (while (re-search-forward viqr-regexp 0 t) + (while (re-search-forward viqr-regexp nil t) (setq key (buffer-substring (match-beginning 0) (match-end 0))) (setq def (lookup-key map key)) (if (numberp def) @@ -64,7 +64,7 @@ (save-restriction (narrow-to-region from to) (goto-char (point-min)) - (while (re-search-forward "\\cv" 0 t) + (while (re-search-forward "\\cv" nil t) (setq def (preceding-char)) (if (setq key (assq def decode-map)) (progn 6) This fix a bug of displaying multilingual text in mode lines. --- /usr/dist/mule/mule-2.3/src/xdisp.c Fri Jun 9 17:37:14 1995 +++ mule/src/xdisp.c Wed Mar 6 17:08:03 1996 @@ -3973,8 +3973,9 @@ /* 91.10.21 by K.Handa, 92.4.30 by Y.Niibe */ int mc_flag = !NILP(XBUFFER (w->buffer)->mc_flag); - /* 92.3.21, 92.9.7 by K.Handa */ - register unsigned char *endp = string + strlen(string); + /* 92.3.21, 92.9.7, 95.8.31 by K.Handa */ + register unsigned char *endp + = string + (length < 0 ? strlen(string) : length); char *hexa = "0123456789ABCDEF"; /* 92.4.9 by K.Handa */ /* 92.4.9 by K.Handa, 92.4.30 by Y.Niibe */ int ctl_hexa = !NILP (XBUFFER (w->buffer)->ctl_hexa); 7) The fix for a severe bug for writing *viscii* file. --- /usr/dist/mule/mule-2.3/lisp/mule-init.el Tue Jun 27 09:54:49 1995 +++ mule/lisp/mule-init.el Tue Apr 16 11:28:33 1996 @@ -614,14 +614,14 @@ "CCL program to read VISCII 1.1") (define-ccl-program ccl-write-viscii - '(1 + (` (1 ((read r0) (loop (if (r0 < 128) (write-read-repeat r0) - (if (r0 != 154) + (if (r0 != (, lc-prv11)) (write-read-repeat r0) - ((read-if (r0 == 163) + ((read-if (r0 == (, lc-vn-1)) ((read r0) (r0 -= 160) (write-read-repeat @@ -633,7 +633,7 @@ 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 0 ])) - (if (r0 == 164) + (if (r0 == (, lc-vn-2)) ((read r0) (r0 -= 160) (write-read-repeat @@ -645,7 +645,7 @@ 192 193 194 195 196 197 255 6 200 201 202 203 204 205 206 155 208 185 210 211 212 160 153 154 158 217 218 157 156 221 148 0 ])) - (write-read-repeat r0))))))))) + (write-read-repeat r0)))))))))) "CCL program to write VISCII 1.1") (make-coding-system @@ -685,14 +685,14 @@ "CCL program to read VSCII-1.") (define-ccl-program ccl-write-vscii - '(1 + (` (1 ((read r0) (loop (if (r0 < 128) (write-read-repeat r0) - (if (r0 != 154) + (if (r0 != (, lc-prv11)) (write-read-repeat r0) - (read-if (r0 == 163) + (read-if (r0 == (, lc-vn-1)) ((read r0) (r0 -= 160) (write-read-repeat @@ -704,7 +704,7 @@ 181 184 169 183 182 168 247 201 204 208 170 206 215 221 220 216 174 249 223 227 171 226 225 228 244 239 243 242 241 253 238 0 ])) - (if (r0 == 164) + (if (r0 == (, lc-vn-2)) ((read r0) (r0 -= 160) (write-read-repeat @@ -716,7 +716,7 @@ 128 131 162 130 129 161 6 195 135 138 163 136 141 144 143 142 167 0 146 149 164 148 147 150 2 157 1 159 158 22 156 0 ])) - (write-read-repeat r0)))))))) + (write-read-repeat r0))))))))) "CCL program to write VSCII-1.") (make-coding-system 8) Another fix for a severe bug for writing *viscii* file. --- mule/lisp/mule-init.el.old Wed May 8 13:05:30 1996 +++ mule/lisp/mule-init.el Wed May 8 13:04:06 1996 @@ -638,7 +638,7 @@ (r0 -= 160) (write-read-repeat r0 - [ 0 129 130 131 132 165 134 135 136 137 138 139 140 141 142 143 + [ 0 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 0 0 147 150 151 152 0 0 0 0 180 149 0 0 0 0 0 0 0 2 5 0 0 0 0 0 0 0 159 0 186 0 0 0 128 20 187 188 0 0 25 30 0 179 191 9) This patch fixes error for ANSI C compiler. --- /usr/dist/mule/mule-2.3/src/regex19.c Tue Jun 27 20:21:27 1995 +++ mule/src/regex19.c Wed May 8 14:43:27 1996 @@ -3275,7 +3275,7 @@ int offset; /* for charsetm */ #ifdef GENERATE_CHARSETM - offset = ((enum regexpcode) p[-1] == charsetm)? *p++: 0; + offset = ((re_opcode_t) p[-1] == charsetm)? *p++: 0; #else offset = 0; #endif @@ -3327,7 +3327,7 @@ int offset; #ifdef GENERATE_CHARSETM - offset = ((enum regexpcode) p[-1] == charsetm_not)? *p++: 0; + offset = ((re_opcode_t) p[-1] == charsetm_not)? *p++: 0; #else offset = 0; #endif 10) This patch fixes error for process I/O. The original code sometimes sent invalid data because of buffer reallocation. --- process.c 1996/07/18 22:34:12 1.24 +++ process.c 1996/08/15 00:47:23 @@ -2839,13 +2839,24 @@ /* 91.10.29, 92.7.15 by K.Handa, Y.Hirose */ if (CODE_TYPE(mccode) >= AUTOCONV) /* 94.6.22 by K.Handa */ { + int offset; Lisp_Object unwind_args; + + /* Calling xmalloc() might relocate buffers. Arrange to + relocate BUF. Note that it doesn't relocate strings. */ + if (BUFFERP (object)) + offset = BUF_PTR_CHAR_POS (XBUFFER (object), (unsigned char *) buf); + /* 93.2.10 by K.Handa */ /* we can't use shared conversion buffer. because we may call read_process_output during write to process */ buf2 = (char *) xmalloc (DECODE_BUF_SIZE (len, mccode)); + + if (BUFFERP (object)) + buf = (char *) BUF_CHAR_ADDRESS (XBUFFER (object), offset); + len = decode (mccode, buf, buf2, len); buf = buf2; 11) This patch fixes Single Shift 3 handling. --- /usr/dist/mule/mule-2.3/src/coding.c Wed Nov 30 16:45:02 1994 +++ coding.c Sat Sep 28 09:41:51 1996 @@ -1044,7 +1044,7 @@ { \ if (lc != lcg) dp = designate(dp, lcg, lc, 3, form), lcg = lc; \ if (form & CODE_SEVEN) \ - *dp++ = ESC, *dp++ = 'N'; \ + *dp++ = ESC, *dp++ = 'O'; \ else \ *dp++ = SS3; \ cntl = (cntl & ~CC_GRAPHIC_MASK) | CC_IN_G3; \ 12) This patch fixes wrong handling of *iso-2022-lock* by coco. --- /usr/dist/mule/mule-2.3/lib-src/mulelib.c Mon Jul 17 15:03:43 1995 +++ lib-src/mulelib.c Fri Oct 4 21:28:48 1996 @@ -287,13 +287,18 @@ p0 = p1 + 1; if (CODE_TYPE (cs) == ISO2022) { int flags[12]; - for (i = 0; i < 11; i++) { - if (!(flags[i] = atoi(p0))) flags[i] = Qnil; + for (i = 0; i < 4; i++) { + if ((flags[i] = atoi(p0)) == -1) flags[i] = LCASCII; PROCEED_CHAR(','); p0 = p1 + 1; } - flags[i] = atoi(p0); CODE_LC_SET(cs, flags[0], flags[1], flags[2], flags[3]); + for (; i < 11; i++) { + if (!(flags[i] = atoi(p0))) flags[i] = Qnil; + PROCEED_CHAR(','); + p0 = p1 + 1; + } + if (!(flags[i] = atoi(p0))) flags[i] = Qnil; CODE_FORM_SET(cs, (Lisp_Object)flags[4], (Lisp_Object)flags[5], (Lisp_Object)flags[6], (Lisp_Object)flags[7], (Lisp_Object)flags[8], (Lisp_Object)flags[9], 13) This patch fixes a bug of arabic-mode. Since it contains escape sequence, the patch is uuencoded here. begin 644 arabic-patch M+2TM(&%R86)I8RYE; E4:'4@3V-T(#$W(#$U.C Y.C(S(#$Y.38**RLK(&UU M;&4M,BXS+VQI2!486MA:&%S:&D@3BX@/&YT86MA:&%S0&5T;"YG;RYJ M<#X*(#L[.R @(" @87)A8FEC+6ME>6UA<"TR(&AAF$@87,@:68@:70@=V5R92!T>7!E9"!F6)O87)D+B(*(" @ M*&EN=&5R86-T:79E("(J<"(I"BT@("AW:&EL92 H/B!A6)O87)D+6ENF$@ M*&%R9RD*(" @(DEN&ULP71LH0B I M("AV:7-U86PM2!I;G!U="!A;F0@ 205-#24D@:V5Y(&EN<'5T+B(* end