]> andersk Git - moira.git/blobdiff - clients/moira/dcmmaint.c
Handle ^C during input
[moira.git] / clients / moira / dcmmaint.c
index b8acafb6f17cd7b601aad225ba541fcb5c0417ef..64574032d2b6be9f3e1b5b255e0ef0035549282b 100644 (file)
@@ -43,7 +43,8 @@ char **argv;
     info[0] = "dcm_enable";
     if (status = do_mr_query("get_value", 1, info, genable, info))
       com_err(whoami, status, " while getting value of dcm_enable");
-    GetValueFromUser("Enable value", &info[1]);
+    if (GetValueFromUser("Enable value", &info[1]) == SUB_ERROR)
+      return(DM_NORMAL);
     if (status = do_mr_query("update_value", 2, info, Scream, NULL))
       com_err(whoami, status, " while updating value of dcm_enable");
     FreeAndClear(&info[0], FALSE);
@@ -113,27 +114,39 @@ int argc;
 char **argv;
 {
     int status;
-    char *info[8];
+    char *info[SC_END], **askserv();
 
     initserv(argv[1], info);
-    askserv(info);
-    if (status = do_mr_query("add_server_info", 8, info, Scream, NULL))
+    if (askserv(info) == NULL) {
+       Put_message("Aborted.");
+       return(DM_NORMAL);
+    }
+    if (status = do_mr_query("add_server_info", SC_END, info, Scream, NULL))
       com_err(whoami, status, " while updating server info");
     FreeInfo(info);
     return(DM_NORMAL);
 }
 
-askserv(info)
+char **askserv(info)
 char **info;
 {
-    GetValueFromUser("Interval", &info[SC_INTERVAL]);
-    GetValueFromUser("Target", &info[SC_TARGET]);
-    GetValueFromUser("Script", &info[SC_SCRIPT]);
-    GetTypeFromUser("Service type", "service", &info[SC_TYPE]);
-    GetValueFromUser("Enable", &info[SC_ENABLE]);
-    GetTypeFromUser("ACE type", "ace_type", &info[SC_ACE_TYPE]);
+    if (GetValueFromUser("Interval", &info[SC_INTERVAL]) == SUB_ERROR)
+      return(NULL);
+    if (GetValueFromUser("Target", &info[SC_TARGET]) == SUB_ERROR)
+      return(NULL);
+    if (GetValueFromUser("Script", &info[SC_SCRIPT]) == SUB_ERROR)
+      return(NULL);
+    if (GetTypeFromUser("Service type", "service", &info[SC_TYPE]) == SUB_ERROR)
+      return(NULL);
+    if (GetValueFromUser("Enable", &info[SC_ENABLE]) == SUB_ERROR)
+      return(NULL);
+    if (GetTypeFromUser("ACE type", "ace_type", &info[SC_ACE_TYPE]) ==
+       SUB_ERROR)
+      return(NULL);
     if (strcasecmp("none", info[SC_ACE_TYPE]))
-      GetValueFromUser("Ace name", &info[SC_ACE_NAME]);
+      if (GetValueFromUser("Ace name", &info[SC_ACE_NAME]) == SUB_ERROR)
+       return(NULL);
+    return(info);
 }
 
 
@@ -178,7 +191,7 @@ updateserv(argc, argv)
 int argc;
 char **argv;
 {
-    char *qargv[9];
+    char *qargv[SC_END];
     int status;
 
     qargv[0] = (char *)argv[1];
@@ -187,8 +200,11 @@ char **argv;
        com_err(whoami, status, " while getting server info");
        return(DM_NORMAL);
     }
-    askserv(qargv);
-    if (status = do_mr_query("update_server_info", 8, qargv, Scream, NULL))
+    if (askserv(qargv) == NULL) {
+       Put_message("Aborted.");
+       return(DM_NORMAL);
+    }
+    if (status = do_mr_query("update_server_info", SC_END, qargv, Scream, NULL))
       com_err(whoami, status, " while updating server info");
     return(DM_NORMAL);
 }
@@ -256,7 +272,7 @@ int argc;
 char **argv;
 {
     int status;
-    char *qargv[5], buf[BUFSIZ];
+    char *qargv[6], buf[BUFSIZ];
 
     sprintf(buf, "Reset state for service %s (Y/N)", argv[1]);
     if (!Confirm(buf))
@@ -357,13 +373,18 @@ char **info;
 }
 
 
-askhost(info)
+char **askhost(info)
 char **info;
 {
-    GetValueFromUser("Enable", &info[SHI_ENABLE]);
-    GetValueFromUser("Value 1", &info[SHI_VALUE1]);
-    GetValueFromUser("Value 2", &info[SHI_VALUE2]);
-    GetValueFromUser("Value 3", &info[SHI_VALUE3]);
+    if (GetValueFromUser("Enable", &info[SHI_ENABLE]) == SUB_ERROR)
+      return(NULL);
+    if (GetValueFromUser("Value 1", &info[SHI_VALUE1]) == SUB_ERROR)
+      return(NULL);
+    if (GetValueFromUser("Value 2", &info[SHI_VALUE2]) == SUB_ERROR)
+      return(NULL);
+    if (GetValueFromUser("Value 3", &info[SHI_VALUE3]) == SUB_ERROR)
+      return(NULL);
+    return(info);
 }
 
 
@@ -371,7 +392,7 @@ updatehost(argc, argv)
 int argc;
 char **argv;
 {
-    char *info[SHI_END+1];
+    char *info[SHI_END];
     int status;
 
     info[SHI_SERVICE] = strsave(argv[1]);
@@ -381,7 +402,10 @@ char **argv;
        com_err(whoami, status, " while getting server/host info");
        return(DM_NORMAL);
     }
-    askhost(info);
+    if (askhost(info) == NULL) {
+       Put_message("Aborted.");
+       return(DM_NORMAL);
+    }
     if (status = do_mr_query("update_server_host_info", SHI_END, info,
                              Scream, NULL))
       com_err(whoami, status, " while updating server/host info");
@@ -394,14 +418,18 @@ addhost(argc, argv)
 int argc;
 char **argv;
 {
-    char *info[SHI_END+1];
+    char *info[SHI_END];
     int status;
 
     info[SHI_SERVICE] = strsave(argv[1]);
     info[SHI_MACHINE] = strsave(canonicalize_hostname(argv[2]));
     inithost(info);
-    askhost(info);
-    if (status = do_mr_query("add_server_host_info", 6, info, Scream, NULL))
+    if (askhost(info) == NULL) {
+       Put_message("Aborted.");
+       return(DM_NORMAL);
+    }
+    if (status = do_mr_query("add_server_host_info", SHI_END, info,
+                            Scream, NULL))
       com_err(whoami, status, " while adding server/host info");
     FreeInfo(info);
     return(DM_NORMAL);
This page took 0.10718 seconds and 4 git commands to generate.