While playing with dc discovered you can't control-c to get out.

Probably not the best way, but here goes.

Index: dc.c
===================================================================
RCS file: /cvs/src/usr.bin/dc/dc.c,v
retrieving revision 1.17
diff -u -p -u -r1.17 dc.c
--- dc.c    3 Nov 2015 04:58:58 -0000    1.17
+++ dc.c    22 Apr 2016 03:07:35 -0000
@@ -19,6 +19,7 @@
 #include <sys/stat.h>
 #include <err.h>
 #include <errno.h>
+#include <signal.h>
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
@@ -37,6 +38,12 @@ usage(void)
     exit(1);
 }

+void
+onintr(int signo)
+{
+    _exit(1);
+}
+
 int
 dc_main(int argc, char *argv[])
 {
@@ -109,6 +116,9 @@ dc_main(int argc, char *argv[])

     if (pledge("stdio", NULL) == -1)
         err(1, "pledge");
+
+    (void)signal(SIGINT, onintr);
+    (void)signal(SIGQUIT, onintr);

     src_setstream(&src, stdin);
     reset_bmachine(&src);
Index: extern.h
===================================================================
RCS file: /cvs/src/usr.bin/dc/extern.h,v
retrieving revision 1.5
diff -u -p -u -r1.5 extern.h
--- extern.h    10 Oct 2015 19:28:54 -0000    1.5
+++ extern.h    22 Apr 2016 03:08:01 -0000
@@ -61,4 +61,6 @@ void        frame_assign(struct stack *, size_
 struct value *    frame_retrieve(const struct stack *, size_t);
 /* void        frame_free(struct stack *); */

+/* dc.c */
 int        dc_main(int, char **);
+void        onintr(int signo);

Reply via email to