]> andersk Git - moira.git/commitdiff
handle ^C's in -nomenu mode
authormar <mar>
Fri, 11 Jan 1991 11:58:05 +0000 (11:58 +0000)
committermar <mar>
Fri, 11 Jan 1991 11:58:05 +0000 (11:58 +0000)
clients/moira/main.c
clients/moira/menu.c
clients/moira/namespace.c

index d9597b07c802df8ce18f1cd28480db6e07e4b254..7099c62205ee47ec0b0e94ff0b1af854d831e2a0 100644 (file)
 
 char * whoami;                 /* used by menu.c ugh!!! */
 char * moira_server;
+int interrupt = 0;
 
 extern Menu moira_top_menu, list_menu, user_menu, dcm_menu;
 
 #ifndef DEBUG
-static void SignalHandler();
+static void SignalHandler(), CatchInterrupt();
 #endif DEBUG
 
 static void ErrorExit(), Usage();
@@ -126,8 +127,11 @@ main(argc, argv)
 
 #ifndef DEBUG
     (void) signal(SIGHUP, SignalHandler);
-    (void) signal(SIGINT, SignalHandler); 
     (void) signal(SIGQUIT, SignalHandler);
+    if (use_menu)
+      (void) signal(SIGINT, SignalHandler); 
+    else
+      (void) signal(SIGINT, CatchInterrupt); 
 #endif DEBUG
 
     if (!strcmp(program_name, "listmaint"))
@@ -197,4 +201,12 @@ SignalHandler()
     mr_disconnect();
     exit(1);
 }
+
+
+static void
+CatchInterrupt()
+{
+    Put_message("Interrupt! Press RETURN to continue");
+    interrupt = 1;
+}
 #endif DEBUG
index 774c02c82df8d3bc90bafda45c27301235c6ee0a..b44d4241e6ea013ab124644e90cf2304fbaa9fd7 100644 (file)
@@ -47,6 +47,7 @@ static char rcsid_menu_c[] = "$Header$";
 
 #define MIN_INPUT 2            /* Minimum number of lines for input window */
 
+extern int interrupt;          /* will be set if ^C is received */
 extern FILE *fdopen();
 extern int getpid();
 extern char *calloc();
@@ -514,6 +515,10 @@ int Prompt_input(prompt, buf, buflen)
        printf("%s", prompt);
        if (gets(buf) == NULL)
            return 0;
+       if (interrupt) {
+           interrupt = 0;
+           return 0;
+       }
        Start_paging();
        goto gotit;
     }
index c244af6dfbfdf9d8c8a103e89df78fa0a1f6fc6b..c63660113734f7192328281bbc3da10ab25a9587 100644 (file)
@@ -36,6 +36,7 @@
 
 char * whoami;                 /* used by menu.c ugh!!! */
 char * moira_server;
+int interrupt = 0;
 int NewListHelp();
 
 /*
@@ -167,7 +168,7 @@ Menu namespace_menu = {
 
 
 #ifndef DEBUG
-static void SignalHandler();
+static void SignalHandler(), CatchInterrupt();
 #endif DEBUG
 
 static void ErrorExit(), Usage();
@@ -257,8 +258,11 @@ main(argc, argv)
 
 #ifndef DEBUG
     (void) signal(SIGHUP, SignalHandler);
-    (void) signal(SIGINT, SignalHandler); 
     (void) signal(SIGQUIT, SignalHandler);
+    if (use_menu)
+      (void) signal(SIGINT, SignalHandler); 
+    else
+      (void) signal(SIGINT, CatchInterrupt); 
 #endif DEBUG
 
     menu = &namespace_menu;
@@ -321,6 +325,14 @@ SignalHandler()
     mr_disconnect();
     exit(1);
 }
+
+
+static void
+CatchInterrupt()
+{
+    Put_message("Interrupt! Press RETURN to continue");
+    interrupt = 1;
+}
 #endif DEBUG
 
 
This page took 0.23752 seconds and 5 git commands to generate.