shithub: ridefs

Download patch

ref: 062872e1e79275fd20111be57068da7fb631c5fe
parent: 986f732a6fa19360155845eee997e9d863a28b6c
author: B. Wilson <x@wilsonb.com>
date: Wed Jul 16 04:08:20 EDT 2025

Rationalize ride event handling

--- a/ridefs.c
+++ b/ridefs.c
@@ -398,25 +398,21 @@
 		if(readcmd(in, &cmd, &j) < 0)
 			continue;
 
-		s = e = nil;
 		switch(cmd){
 		case RAppendSessionOutput:
 			v = jsonbyname(j, "type");
-			switch(t = v->n){
-			case 14: /* "normal" input line */
-				break;
-			default:
-				v = jsonbyname(j, "result");
-				s = v->s;
-				e = smprint("o %d %ld %lld", t, strlen(s), seek(out->fd, 0, 1));
-				break;
-			}
+			t = v->n;
+			v = jsonbyname(j, "result");
+			s = v->s;
+			e = smprint("o %d %ld %lld", t, strlen(s), seek(out->fd, 0, 1));
 			break;
 		case RSetPromptType:
 			v = jsonbyname(j, "type");
 			switch(t = v->n){
-			case 1: s = "      "; break;      /* normal prompt */
-			case 2: s = "⎕:\n      "; break;  /* ⎕ input */
+			case 1: /* normal prompt */
+			case 2: /* ⎕ input */
+				s = "      ";
+				break;
 			case 0: /* no prompt */
 			case 3: /* line editor */
 			case 4: /* ⍞ input */
@@ -424,7 +420,8 @@
 			default:
 				s = ""; break;
 			}
-			e = smprint("p %d %ld %lld", t, strlen(s), seek(out->fd, 0 ,1));
+			e = smprint("p %d %ld %d %s", t, strlen(s), -1, s);
+			s = nil;
 			break;
 		default: continue;
 		}
@@ -747,7 +744,7 @@
 			f->unlock = wunlock;
 			wlock(f->l);
 
-			r->ofcall.count = write(c->qtext.fd, d, r->ifcall.count);
+			r->ofcall.count = r->ifcall.count;
 			b = ecalloc(r->ifcall.count + 1);
 			memmove(b, d, r->ifcall.count);
 			writecmd(c->tdata.fd, TExecute, b, 0);
--- a/test
+++ b/test
@@ -71,7 +71,7 @@
 		cont=1
 		while(~ $cont 1){
 			ev=`{read}
-			if(~ $ev(1) o){
+			if(~ $ev(1) o && ! ~ $ev(2) 14){
 				rx=`{dd -if text -ibs 1 -skip $ev(4) -count $ev(3) >[2]/dev/null}
 				cont=0
 			}
--