From d6231bab89d634da5564491196b7c478db038505 Mon Sep 17 00:00:00 2001 From: Hisham Muhammad Date: Sat, 4 Mar 2006 18:16:49 +0000 Subject: Initial import. --- SignalItem.c | 99 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 SignalItem.c (limited to 'SignalItem.c') diff --git a/SignalItem.c b/SignalItem.c new file mode 100644 index 00000000..2cef8775 --- /dev/null +++ b/SignalItem.c @@ -0,0 +1,99 @@ +/* +htop - SignalItem.c +(C) 2004,2005 Hisham H. Muhammad +Released under the GNU GPL, see the COPYING file +in the source distribution for its full text. +*/ + +#include "SignalItem.h" +#include "String.h" +#include "Object.h" +#include "RichString.h" +#include + +#include "debug.h" + +#define SIGNAL_COUNT 34 + +/*{ + +typedef struct Signal_ { + Object super; + char* name; + int number; +} Signal; + +extern char* SIGNAL_CLASS; +}*/ + +/* private property */ +char* SIGNAL_CLASS = "Signal"; + +Signal* Signal_new(char* name, int number) { + Signal* this = malloc(sizeof(Signal)); + ((Object*)this)->class = SIGNAL_CLASS; + ((Object*)this)->display = Signal_display; + ((Object*)this)->delete = Signal_delete; + this->name = name; + this->number = number; + return this; +} + +void Signal_delete(Object* cast) { + Signal* this = (Signal*)cast; + assert (this != NULL); + // names are string constants, so we're not deleting them. + free(this); +} + +void Signal_display(Object* cast, RichString* out) { + Signal* this = (Signal*)cast; + assert (this != NULL); + + char buffer[31]; + snprintf(buffer, 30, "%2d %s", this->number, this->name); + RichString_write(out, CRT_colors[DEFAULT_COLOR], buffer); +} + +int Signal_getSignalCount() { + return SIGNAL_COUNT; +} + +Signal** Signal_getSignalTable() { + Signal** signals = malloc(sizeof(Signal*) * SIGNAL_COUNT); + signals[0] = Signal_new("Cancel", 0); + signals[1] = Signal_new("SIGHUP", 1); + signals[2] = Signal_new("SIGINT", 2); + signals[3] = Signal_new("SIGQUIT", 3); + signals[4] = Signal_new("SIGILL", 4); + signals[5] = Signal_new("SIGTRAP", 5); + signals[6] = Signal_new("SIGABRT", 6); + signals[7] = Signal_new("SIGIOT", 6); + signals[8] = Signal_new("SIGBUS", 7); + signals[9] = Signal_new("SIGFPE", 8); + signals[10] = Signal_new("SIGKILL", 9); + signals[11] = Signal_new("SIGUSR1", 10); + signals[12] = Signal_new("SIGSEGV", 11); + signals[13] = Signal_new("SIGUSR2", 12); + signals[14] = Signal_new("SIGPIPE", 13); + signals[15] = Signal_new("SIGALRM", 14); + signals[16] = Signal_new("SIGTERM", 15); + signals[17] = Signal_new("SIGSTKFLT", 16); + signals[18] = Signal_new("SIGCHLD", 17); + signals[19] = Signal_new("SIGCONT", 18); + signals[20] = Signal_new("SIGSTOP", 19); + signals[21] = Signal_new("SIGTSTP", 20); + signals[22] = Signal_new("SIGTTIN", 21); + signals[23] = Signal_new("SIGTTOU", 22); + signals[24] = Signal_new("SIGURG", 23); + signals[25] = Signal_new("SIGXCPU", 24); + signals[26] = Signal_new("SIGXFSZ", 25); + signals[27] = Signal_new("SIGVTALRM", 26); + signals[28] = Signal_new("SIGPROF", 27); + signals[29] = Signal_new("SIGWINCH", 28); + signals[30] = Signal_new("SIGIO", 29); + signals[31] = Signal_new("SIGPOLL", 29); + signals[32] = Signal_new("SIGPWR", 30); + signals[33] = Signal_new("SIGSYS", 31); + return signals; +} -- cgit v1.2.3