summaryrefslogtreecommitdiffstats
path: root/SignalsPanel.c
diff options
context:
space:
mode:
authorHisham <hisham@gobolinux.org>2016-09-16 13:37:07 -0300
committerHisham <hisham@gobolinux.org>2016-09-16 13:37:07 -0300
commit5df425867cd992ccadbe8b5cf713404fd53db7df (patch)
tree5bc648ee6bf93687e540d9cf79d4143a181b6b71 /SignalsPanel.c
parent46d8f2eef28ef4230cbafa3f8e9a47dd6e8fa090 (diff)
Protect against strange values of SIGRTMIN and SIGRTMAX,
and change alignment of numbers.
Diffstat (limited to 'SignalsPanel.c')
-rw-r--r--SignalsPanel.c19
1 files changed, 5 insertions, 14 deletions
diff --git a/SignalsPanel.c b/SignalsPanel.c
index 22fefa62..34fef4b5 100644
--- a/SignalsPanel.c
+++ b/SignalsPanel.c
@@ -40,25 +40,16 @@ Panel* SignalsPanel_new() {
}
}
#if (defined(SIGRTMIN) && defined(SIGRTMAX))
- // Real-time signals.
- // SIGRTMIN and SIGRTMAX expand to libc internal functions and we have to
- // grab their numbers at runtime.
- static char buf[15]; // 15 == sizeof("xx SIGRTMIN+nn")
- int rtmax;
- for (int sig = SIGRTMIN; sig <= (rtmax = SIGRTMAX); i++, sig++) {
- // Every signal between SIGRTMIN and SIGRTMAX are denoted in "SIGRTMIN+n"
- // notation. This matches glibc's strsignal(3) behavior.
- // We deviate from behaviors of Bash, ksh and Solaris intentionally.
- if (sig == rtmax) {
- snprintf(buf, 15, "%2d SIGRTMAX", sig);
- } else {
+ if (SIGRTMAX - SIGRTMIN <= 100) {
+ static char buf[15];
+ for (int sig = SIGRTMIN; sig <= SIGRTMAX; i++, sig++) {
int n = sig - SIGRTMIN;
- snprintf(buf, 15, "%2d SIGRTMIN%+d", sig, n);
+ snprintf(buf, 15, "%2d SIGRTMIN%-+3d", sig, n);
if (n == 0) {
buf[11] = '\0';
}
+ Panel_set(this, i, (Object*) ListItem_new(buf, sig));
}
- Panel_set(this, i, (Object*) ListItem_new(buf, sig));
}
#endif
Panel_setHeader(this, "Send signal:");

© 2014-2024 Faster IT GmbH | imprint | privacy policy