]> git.webhop.me Git - shellexec.git/commitdiff
handle file rc.locked and instance at segfault
authorGetAway <get-away@t-online.de>
Fri, 9 Dec 2016 14:50:19 +0000 (15:50 +0100)
committersvenhoefer <svenhoefer@svenhoefer.com>
Fri, 9 Dec 2016 17:52:54 +0000 (18:52 +0100)
shellexec.c

index 08b223b3b93f1b9a09e46b5f06a46f0282464c24..6152cb4517f1e96f442432cb563c3126f6c60667 100644 (file)
@@ -8,7 +8,7 @@
 #include "io.h"
 #include "gfx.h"
 
-#define SH_VERSION 1.35
+#define SH_VERSION 1.36
 
 static char CFG_FILE[128]="/var/tuxbox/config/shellexec.conf";
 
@@ -120,8 +120,20 @@ void put_instance(int pval)
 
 static void quit_signal(int sig)
 {
+       char *txt=NULL;
+       switch (sig)
+       {
+               case SIGINT:  txt=strdup("SIGINT");  break;
+               case SIGTERM: txt=strdup("SIGTERM"); break;
+               case SIGQUIT: txt=strdup("SIGQUIT"); break;
+               case SIGSEGV: txt=strdup("SIGSEGV"); break;
+               default:
+                       txt=strdup("UNKNOWN"); break;
+       }
+
+       printf("%s Version %.2f killed, signal %s(%d)\n", __plugin__, SH_VERSION, txt, sig);
        put_instance(get_instance()-1);
-       printf("%s Version %.2f killed, signal %d\n", __plugin__, SH_VERSION, sig);
+       free(txt);
        exit(1);
 }
 
@@ -1718,6 +1730,11 @@ int main (int argc, char **argv)
        startx = sx + (((ex-sx) - (fix_screeninfo.line_length-200))/2);
        starty = sy + (((ey-sy) - (var_screeninfo.yres-150))/2);
 
+       signal(SIGINT, quit_signal);
+       signal(SIGTERM, quit_signal);
+       signal(SIGQUIT, quit_signal);
+       signal(SIGSEGV, quit_signal);
+
        index=0;
        if(vfd)
        {
@@ -1736,9 +1753,6 @@ int main (int argc, char **argv)
                return -1;
        }
        cindex=0;
-       signal(SIGINT, quit_signal);
-       signal(SIGTERM, quit_signal);
-       signal(SIGQUIT, quit_signal);
 
        put_instance(instance=get_instance()+1);