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
}
--
⑨