+
+#ifdef HAVE_POSIX_SIGNALS
+static void SetHandlers(void)
+{
+ struct sigaction act;
+
+ sigemptyset(&act.sa_mask);
+ act.sa_flags = 0;
+ act.sa_handler = Signal_Handler;
+ sigaction(SIGHUP, &act, NULL);
+ sigaction(SIGQUIT, &act, NULL);
+#ifdef HAVE_CURSES
+ if (use_menu)
+ sigaction(SIGINT, &act, NULL);
+ else
+#endif
+ {
+ act.sa_handler = CatchInterrupt;
+ sigaction(SIGINT, &act, NULL);
+ }
+}
+#else
+static void SetHandlers(void)
+{
+ signal(SIGTERM, Signal_Handler);
+#ifdef HAVE_CURSES
+ if (use_menu)
+ signal(SIGINT, Signal_Handler);
+ else
+#endif
+ signal(SIGINT, CatchInterrupt);
+}
+#endif
+
+#ifdef _WIN32
+static char* get_program_name(char *arg)
+{
+ char* prog;
+ char* ext;
+ prog = max(max(strrchr(arg, '/'), strrchr(arg, '\\')) + 1, arg);
+ prog = _strlwr(prog);
+ prog = strdup(prog);
+ ext = strrchr(prog, '.');
+ if (ext && !strcmp(ext, ".exe"))
+ *ext = 0;
+ return prog;
+}
+#else
+static char* get_program_name(char *arg)
+{
+ char* prog;
+ if (!(prog = strrchr(arg, '/')))
+ prog = arg;
+ else
+ prog++;
+ return strdup(prog);
+}
+#endif