patch-sigcont-and-sigtstp.patch - pkgsrc-localpatches - leot's pkgsrc LOCALPATCHES
(HTM) hg clone https://bitbucket.org/iamleot/pkgsrc-localpatches
(DIR) Log
(DIR) Files
(DIR) Refs
---
patch-sigcont-and-sigtstp.patch
---
1 Add initial and incomplete support for SIG{CONT,TSTP}
2
3 This is probably still not completely correct, e.g. can we gracefully
4 handle the case where `/' is pressed and some input for the search
5 was entered?
6
7 Apart that, signals are properly not handled correctly when in
8 PAGER and the screen is messed up there too.
9
10 --- common.h.orig
11 +++ common.h
12 @@ -35,4 +35,6 @@ char *uiprompt(char *fmt, ...);
13 Item *uiselectitem(Item *entry);
14 void uisetup(void);
15 void uisigwinch(int signal);
16 +void uisigcont(int signal);
17 +void uisigtstp(int signal);
18 void uistatus(char *fmt, ...);
19 diff --git a/sacc.c b/sacc.c
20 index 1ed1d1c..60e62ca 100644
21 --- sacc.c.orig
22 +++ sacc.c
23 @@ -965,6 +965,10 @@ setup(void)
24 uisetup();
25 sa.sa_handler = uisigwinch;
26 sigaction(SIGWINCH, &sa, NULL);
27 + sa.sa_handler = uisigcont;
28 + sigaction(SIGCONT, &sa, NULL);
29 + sa.sa_handler = uisigtstp;
30 + sigaction(SIGTSTP, &sa, NULL);
31 }
32 }
33
34 diff --git a/ui_ti.c b/ui_ti.c
35 index ae11338..c324043 100644
36 --- ui_ti.c.orig
37 +++ ui_ti.c
38 @@ -1,3 +1,4 @@
39 +#include <signal.h>
40 #include <stdarg.h>
41 #include <stdio.h>
42 #include <stdlib.h>
43 @@ -554,8 +555,7 @@ uisigwinch(int signal)
44 {
45 Dir *dir;
46
47 - setupterm(NULL, 1, NULL);
48 - putp(tparm(change_scroll_region, 0, lines-2, 0, 0, 0, 0, 0, 0, 0));
49 + uisetup();
50
51 if (!curentry || !(dir = curentry->dat))
52 return;
53 @@ -565,3 +565,19 @@ uisigwinch(int signal)
54
55 uidisplay(curentry);
56 }
57 +
58 +void
59 +uisigcont(int signal)
60 +{
61 +
62 + uicleanup();
63 + uisigwinch(signal);
64 +}
65 +
66 +void
67 +uisigtstp(int signal)
68 +{
69 +
70 + uicleanup();
71 + kill(getpid(), SIGSTOP);
72 +}
73 diff --git a/ui_txt.c b/ui_txt.c
74 index 3b9d964..d7d868f 100644
75 --- ui_txt.c.orig
76 +++ ui_txt.c
77 @@ -1,10 +1,12 @@
78 #include <ctype.h>
79 #include <errno.h>
80 +#include <signal.h>
81 #include <stdarg.h>
82 #include <stdio.h>
83 #include <stdlib.h>
84 #include <string.h>
85 #include <termios.h>
86 +#include <unistd.h>
87 #include <sys/ioctl.h>
88 #include <sys/types.h>
89
90 @@ -336,3 +338,17 @@ uisigwinch(int signal)
91 printstatus(curentry, cmd);
92 fflush(stdout);
93 }
94 +
95 +void
96 +uisigcont(int signal)
97 +{
98 +
99 + uisigwinch(signal);
100 +}
101 +
102 +void
103 +uisigtstp(int signal)
104 +{
105 +
106 + kill(getpid(), SIGSTOP);
107 +}