mirror of https://github.com/xzeldon/htop.git
91 lines
2.8 KiB
C
91 lines
2.8 KiB
C
|
|
#include "SignalsPanel.h"
|
|
#include "Panel.h"
|
|
#include "ListItem.h"
|
|
#include "RichString.h"
|
|
|
|
#include "debug.h"
|
|
#include <assert.h>
|
|
|
|
#include <ctype.h>
|
|
|
|
/*{
|
|
|
|
typedef struct SignalsPanel_ {
|
|
Panel super;
|
|
ListItem** signals;
|
|
} SignalsPanel;
|
|
|
|
}*/
|
|
|
|
#ifndef SIGNAL_COUNT
|
|
#define SIGNAL_COUNT 34
|
|
#endif
|
|
|
|
static void SignalsPanel_delete(Object* object) {
|
|
Panel* super = (Panel*) object;
|
|
SignalsPanel* this = (SignalsPanel*) object;
|
|
Panel_done(super);
|
|
free(this->signals);
|
|
free(this);
|
|
}
|
|
|
|
static ListItem** Signal_getSignalTable() {
|
|
ListItem** signals = malloc(sizeof(ListItem*) * SIGNAL_COUNT);
|
|
signals[0] = ListItem_new(" 0 Cancel", 0);
|
|
signals[1] = ListItem_new(" 1 SIGHUP", 1);
|
|
signals[2] = ListItem_new(" 2 SIGINT", 2);
|
|
signals[3] = ListItem_new(" 3 SIGQUIT", 3);
|
|
signals[4] = ListItem_new(" 4 SIGILL", 4);
|
|
signals[5] = ListItem_new(" 5 SIGTRAP", 5);
|
|
signals[6] = ListItem_new(" 6 SIGABRT", 6);
|
|
signals[7] = ListItem_new(" 6 SIGIOT", 6);
|
|
signals[8] = ListItem_new(" 7 SIGBUS", 7);
|
|
signals[9] = ListItem_new(" 8 SIGFPE", 8);
|
|
signals[10] = ListItem_new(" 9 SIGKILL", 9);
|
|
signals[11] = ListItem_new("10 SIGUSR1", 10);
|
|
signals[12] = ListItem_new("11 SIGSEGV", 11);
|
|
signals[13] = ListItem_new("12 SIGUSR2", 12);
|
|
signals[14] = ListItem_new("13 SIGPIPE", 13);
|
|
signals[15] = ListItem_new("14 SIGALRM", 14);
|
|
signals[16] = ListItem_new("15 SIGTERM", 15);
|
|
signals[17] = ListItem_new("16 SIGSTKFLT", 16);
|
|
signals[18] = ListItem_new("17 SIGCHLD", 17);
|
|
signals[19] = ListItem_new("18 SIGCONT", 18);
|
|
signals[20] = ListItem_new("19 SIGSTOP", 19);
|
|
signals[21] = ListItem_new("20 SIGTSTP", 20);
|
|
signals[22] = ListItem_new("21 SIGTTIN", 21);
|
|
signals[23] = ListItem_new("22 SIGTTOU", 22);
|
|
signals[24] = ListItem_new("23 SIGURG", 23);
|
|
signals[25] = ListItem_new("24 SIGXCPU", 24);
|
|
signals[26] = ListItem_new("25 SIGXFSZ", 25);
|
|
signals[27] = ListItem_new("26 SIGVTALRM", 26);
|
|
signals[28] = ListItem_new("27 SIGPROF", 27);
|
|
signals[29] = ListItem_new("28 SIGWINCH", 28);
|
|
signals[30] = ListItem_new("29 SIGIO", 29);
|
|
signals[31] = ListItem_new("29 SIGPOLL", 29);
|
|
signals[32] = ListItem_new("30 SIGPWR", 30);
|
|
signals[33] = ListItem_new("31 SIGSYS", 31);
|
|
return signals;
|
|
}
|
|
|
|
SignalsPanel* SignalsPanel_new(int x, int y, int w, int h) {
|
|
SignalsPanel* this = (SignalsPanel*) malloc(sizeof(SignalsPanel));
|
|
Panel* super = (Panel*) this;
|
|
Panel_init(super, x, y, w, h, LISTITEM_CLASS, true);
|
|
((Object*)this)->delete = SignalsPanel_delete;
|
|
|
|
this->signals = Signal_getSignalTable();
|
|
for(int i = 0; i < SIGNAL_COUNT; i++)
|
|
Panel_set(super, i, (Object*) this->signals[i]);
|
|
SignalsPanel_reset(this);
|
|
return this;
|
|
}
|
|
|
|
void SignalsPanel_reset(SignalsPanel* this) {
|
|
Panel* super = (Panel*) this;
|
|
|
|
Panel_setHeader(super, "Send signal:");
|
|
Panel_setSelected(super, 16); // 16th item is SIGTERM
|
|
}
|