git: 9front

Download patch

ref: 8e000df0fecad5420eafa65235dd426d37be57b4
parent: 70982eb1a871653e9bce73924222dda81f35839c
author: Jacob Moody <moody@posixcafe.org>
date: Wed Jun 11 22:08:56 EDT 2025

ktrans: use ^' to escape other control characters (thanks B. Wilson)

--- a/sys/src/cmd/ktrans/main.c
+++ b/sys/src/cmd/ktrans/main.c
@@ -726,7 +726,7 @@
 static void
 keythread(void*)
 {
-	int lang;
+	int lang, litmode;
 	char m[Msgsize];
 	char *todict;
 	Map lkup;
@@ -737,6 +737,7 @@
 	Str line;
 
 	peek[0] = lang = deflang;
+	litmode = 0;
 	resetstr(&line, nil);
 	if(lang == LangJP || lang == LangZH)
 		emitutf(dictch, peek, 1);
@@ -758,11 +759,20 @@
 			while(compacting)
 				yield();
 			n = chartorune(&r, p);
+			if(litmode){
+				emitutf(output, p, 1);
+				litmode = 0;
+				continue;
+			}
 			if(checklang(&lang, r)){
 				emitutf(dictch, "", 1);
 				if(lang == LangJP || lang == LangZH)
 					emitutf(dictch, p, 1);
 				resetstr(&line, nil);
+				continue;
+			}
+			if(r == ''){ // ^'
+				litmode = 1;
 				continue;
 			}
 			if(lang == LangEN){
--