Continue the pthreads torture.
diff --git a/src/cmd/9term/rcstart.c b/src/cmd/9term/rcstart.c
index 7ee4935..ddaadb5 100644
--- a/src/cmd/9term/rcstart.c
+++ b/src/cmd/9term/rcstart.c
@@ -3,6 +3,25 @@
#include <libc.h>
#include "term.h"
+static void
+sys(char *buf)
+{
+ char buf2[100];
+ char *f[20];
+ int nf, pid;
+
+ strcpy(buf2, buf);
+ nf = tokenize(buf2, f, nelem(f));
+ f[nf] = nil;
+ switch(pid = fork()){
+ case 0:
+ execvp(f[0], f);
+ _exits("oops");
+ default:
+ waitpid();
+ }
+}
+
int
rcstart(int argc, char **argv, int *pfd, int *tfd)
{
@@ -33,11 +52,14 @@
dup(sfd, 0);
dup(sfd, 1);
dup(sfd, 2);
- system("stty tabs -onlcr onocr icanon echo erase '^h' intr '^?'");
+ sys("stty tabs -onlcr onocr icanon echo erase '^h' intr '^?'");
if(noecho)
- system("stty -echo");
+ sys("stty -echo");
for(i=3; i<100; i++)
close(i);
+ signal(SIGINT, SIG_DFL);
+ signal(SIGHUP, SIG_DFL);
+ signal(SIGTERM, SIG_DFL);
execvp(argv[0], argv);
fprint(2, "exec %s failed: %r\n", argv[0]);
_exits("oops");