handle interrupts
This commit is contained in:
parent
e830a90849
commit
10ab06a791
3 changed files with 13 additions and 10 deletions
|
|
@ -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.
|
* Process in-band messages about window title changes.
|
||||||
* The messages are of the form:
|
* The messages are of the form:
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,7 @@ char* runetobyte(Rune*, int, int*);
|
||||||
void timerinit(void);
|
void timerinit(void);
|
||||||
int goodrect(Rectangle);
|
int goodrect(Rectangle);
|
||||||
int rawon(void);
|
int rawon(void);
|
||||||
|
void winterrupt(Window*);
|
||||||
|
|
||||||
#define runemalloc(n) malloc((n)*sizeof(Rune))
|
#define runemalloc(n) malloc((n)*sizeof(Rune))
|
||||||
#define runerealloc(a, n) realloc(a, (n)*sizeof(Rune))
|
#define runerealloc(a, n) realloc(a, (n)*sizeof(Rune))
|
||||||
|
|
|
||||||
|
|
@ -563,7 +563,6 @@ wkeyctl(Window *w, Rune r)
|
||||||
uint q0 ,q1;
|
uint q0 ,q1;
|
||||||
int n, nb, nr;
|
int n, nb, nr;
|
||||||
Rune *rp;
|
Rune *rp;
|
||||||
int *notefd;
|
|
||||||
|
|
||||||
if(r == 0)
|
if(r == 0)
|
||||||
return;
|
return;
|
||||||
|
|
@ -665,9 +664,7 @@ wkeyctl(Window *w, Rune r)
|
||||||
case 0x7F: /* send interrupt */
|
case 0x7F: /* send interrupt */
|
||||||
w->qh = w->nr;
|
w->qh = w->nr;
|
||||||
wshow(w, w->qh);
|
wshow(w, w->qh);
|
||||||
notefd = emalloc(sizeof(int));
|
winterrupt(w);
|
||||||
*notefd = w->notefd;
|
|
||||||
proccreate(interruptproc, notefd, 4096);
|
|
||||||
return;
|
return;
|
||||||
case 0x06: /* ^F: file name completion */
|
case 0x06: /* ^F: file name completion */
|
||||||
case Kins: /* Insert: file name completion */
|
case Kins: /* Insert: file name completion */
|
||||||
|
|
@ -1294,19 +1291,14 @@ void
|
||||||
wsetpid(Window *w, int pid, int dolabel)
|
wsetpid(Window *w, int pid, int dolabel)
|
||||||
{
|
{
|
||||||
char buf[128];
|
char buf[128];
|
||||||
int fd;
|
|
||||||
|
|
||||||
w->pid = pid;
|
w->pid = pid;
|
||||||
if(dolabel){
|
if(dolabel){
|
||||||
sprint(buf, "rc %d", pid);
|
sprint(buf, "rc %d", pid);
|
||||||
free(w->label);
|
free(w->label);
|
||||||
w->label = estrdup(buf);
|
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 };
|
static Rune left1[] = { '{', '[', '(', '<', 0xAB, 0 };
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue