thandle interrupts - plan9port - [fork] Plan 9 from user space
git clone git://src.adamsgaard.dk/plan9port
Log
Files
Refs
README
LICENSE
---
commit 10ab06a791c2ed5cccd8ab7e24fb435997b7a47a
parent e830a908498c8f0270948fd08c50f6d773315880
Author: rsc 
Date:   Sun,  6 Nov 2005 22:22:54 +0000

handle interrupts

Diffstat:
  M src/cmd/9term/9term.c               |      10 ++++++++++
  M src/cmd/9term/fns.h                 |       1 +
  M src/cmd/9term/wind.c                |      12 ++----------

3 files changed, 13 insertions(+), 10 deletions(-)
---
diff --git a/src/cmd/9term/9term.c b/src/cmd/9term/9term.c
t@@ -419,6 +419,16 @@ rcoutputproc(void *arg)
         }
 }
 
+void
+winterrupt(Window *w)
+{
+        char rubout[1];
+        
+        USED(w);
+        rubout[0] = getintr(sfd);
+        write(rcfd, rubout, 1);
+}
+
 /*
  * Process in-band messages about window title changes.
  * The messages are of the form:
diff --git a/src/cmd/9term/fns.h b/src/cmd/9term/fns.h
t@@ -30,6 +30,7 @@ char* runetobyte(Rune*, int, int*);
 void        timerinit(void);
 int        goodrect(Rectangle);
 int        rawon(void);
+void        winterrupt(Window*);
 
 #define        runemalloc(n)                malloc((n)*sizeof(Rune))
 #define        runerealloc(a, n)        realloc(a, (n)*sizeof(Rune))
diff --git a/src/cmd/9term/wind.c b/src/cmd/9term/wind.c
t@@ -563,7 +563,6 @@ wkeyctl(Window *w, Rune r)
         uint q0 ,q1;
         int n, nb, nr;
         Rune *rp;
-        int *notefd;
 
         if(r == 0)
                 return;
t@@ -665,9 +664,7 @@ wkeyctl(Window *w, Rune r)
         case 0x7F:                /* send interrupt */
                 w->qh = w->nr;
                 wshow(w, w->qh);
-                notefd = emalloc(sizeof(int));
-                *notefd = w->notefd;
-                proccreate(interruptproc, notefd, 4096);
+                winterrupt(w);
                 return;
         case 0x06:        /* ^F: file name completion */
         case Kins:                /* Insert: file name completion */
t@@ -1294,19 +1291,14 @@ void
 wsetpid(Window *w, int pid, int dolabel)
 {
         char buf[128];
-        int fd;
 
         w->pid = pid;
         if(dolabel){
                 sprint(buf, "rc %d", pid);
                 free(w->label);
                 w->label = estrdup(buf);
+                drawsetlabel(w->label);
         }
-        sprint(buf, "/proc/%d/notepg", pid);
-        fd = open(buf, OWRITE|OCEXEC);
-        if(w->notefd > 0)
-                close(w->notefd);
-        w->notefd = fd;
 }
 
 static Rune left1[] =  { '{', '[', '(', '<', 0xAB, 0 };