]> andersk Git - moira.git/blobdiff - clients/mmoira/queries.c
reorder fields in filsys forms; don't try to remove window in tty mode
[moira.git] / clients / mmoira / queries.c
index 797dcca1db58cc12919e7395334fd16d0e4f0116..3585edace8110caf369769af3b4cf71cf58d4c63 100644 (file)
@@ -71,8 +71,23 @@ EntryForm *form;
        count = L_MODTIME;
        break;
     case MM_MOD_FILSYS:
-       fn = "mod_filsys";
-       count = FS_MODTIME;
+       f = GetAndClearForm("mod_filsys");
+       if (f == NULL) {
+           display_error("Unknown form in ModifyCallback!\n");
+           return;
+       }
+       f->extrastuff = form->extrastuff;
+       f->menu = form->menu;
+       StoreField(f, FS_NAME, argv[FS_NAME + offset]);
+       StoreField(f, FS_TYPE, argv[FS_TYPE + offset]);
+       for (i = FS_TYPE+1; i < FS_MODTIME-1; i++)
+         if (f->inputlines[i+1]->type == FT_BOOLEAN)
+           f->inputlines[i+1]->returnvalue.booleanvalue =
+             strcmp(argv[i + offset], "0") ? 1 : 0;
+         else
+           StoreField(f, i+1, argv[i + offset]);
+       StoreField(f, FS_TYPE+1, argv[FS_L_TYPE + offset]);
+       return;
        break;
     case MM_MOD_NFS:
        f = GetAndClearForm("mod_nfs");
@@ -237,9 +252,12 @@ EntryForm *form;
      */
     count = 0;
     for (p = form->inputlines; *p; p++)
-      count++;
+      if (!((*p)->insensitive))
+       count++;
     while (count-- > 1)
       _XmMgrTraversal(form->formpointer, XmTRAVERSE_PREV_TAB_GROUP);
+    MoiraFocusOut(form->inputlines[0]->mywidget,
+                 (XEvent *)NULL, (String *)NULL, 0);
     process_form(form, FALSE);
 }
 
@@ -385,6 +403,7 @@ int remove;
          argv[0] = "*";
        if (!*stringval(form, 1))
          argv[1] = "*";
+       AppendToLog("Kerberos mappings:\n");
        break;
     case MM_SET_POBOX:
        if (!strcmp(argv[1], "POP"))
@@ -393,8 +412,11 @@ int remove;
     case MM_SHOW_ACE_USE:
        if (boolval(form, 2)) {
            sprintf(buf, "R%s", stringval(form, 0));
-           argv[0] = buf;
+           argv[0] = strsave(buf);
        }
+       sprintf(buf, "Objects %s %s can administer\n",
+               stringval(form, 0), stringval(form, 1));
+       AppendToLog(buf);
        break;
     case MM_MOD_LIST:
        if (!strcmp(form->formname, "mod_list")) {
@@ -462,19 +484,24 @@ int remove;
        form->extrastuff = (caddr_t) sq_create();
        break;
     case MM_ADD_FILSYS:
-       StoreHost(form, FS_MACHINE, &argv[FS_MACHINE]);
-       if (!strcmp(stringval(form, FS_TYPE), "AFS") ||
-           !strcmp(stringval(form, FS_TYPE), "FSGROUP") ||
+       for (i = FS_TYPE+1; i < FS_MODTIME-1; i++)
+         argv[i] = StringValue(form, i+1);
+       argv[FS_L_TYPE] = StringValue(form, FS_TYPE+1);
+       StoreHost(form, FS_MACHINE+1, &argv[FS_MACHINE]);
+       if (!strcmp(stringval(form, FS_TYPE), "FSGROUP") ||
            !strcmp(stringval(form, FS_TYPE), "MUL"))
-         argv[FS_MACHINE] = "\\[NONE\\]";
+         argv[FS_MACHINE+1] = "\\[NONE\\]";
        break;
     case MM_MOD_FILSYS:
        if (!strcmp(form->formname, "mod_filsys")) {
            qy = "update_filesys";
-           for (i = 0; i < FS_MODTIME; i++)
-             argv[i + 1] = StringValue(form, i);
-           StoreHost(form, FS_MACHINE, &argv[FS_MACHINE + 1]);
            argv[0] = form->extrastuff;
+           argv[1] = StringValue(form, 0);
+           argv[2] = StringValue(form, 1);
+           argv[FS_L_TYPE+1] = StringValue(form, 2);
+           StoreHost(form, FS_MACHINE+1, &argv[FS_MACHINE + 1]);
+           for (i = FS_MACHINE+1; i < FS_L_TYPE; i++)
+             argv[i] = StringValue(form, i);
            argc = FS_MODTIME + 1;
            break;
        }
@@ -508,7 +535,7 @@ int remove;
         * in the radiobox to find the one selected and the one after
         * it.  The name of the widget is also the member name.
         */
-       { 
+       if (!tty) 
            Widget w, kid;
 
            argv[3] = "";
@@ -530,6 +557,8 @@ int remove;
                    break;
                }
            }
+       } else {
+           printf("Don't know how to do this\007\007!\n");
        }
        if (*argv[3] == 0) argv[3] = "Z";
 #ifdef DEBUG
@@ -672,6 +701,7 @@ int remove;
     case MM_SHOW_CLDATA:
        if (!*stringval(form, 1))
          argv[1] = "*";
+       AppendToLog("Cluster data:\n");
        break;
     case MM_ADD_PCAP:
        StoreHost(form, PCAP_SPOOL_HOST, &argv[PCAP_SPOOL_HOST]);
@@ -695,6 +725,18 @@ int remove;
        form->extrastuff = (caddr_t) "mod_service";
        retfunc = ModifyCallback;
        break;
+    case MM_RESET_SERVICE:
+       argv[1] = argv[2] = argv[3] = argv[4] = "0";
+       argv[5] = "";
+       break;
+    case MM_RESET_HOST:
+       StoreHost(form, 1, &argv[1]);
+       argv[2] = argv[3] = argv[4] = argv[5] = argv[7] = argv[8] = "0";
+       argv[6] = "";
+       break;
+    case MM_CLEAR_HOST:
+       StoreHost(form, 1, &argv[1]);
+       break;
     case MM_SHOW_HOST:
        if (!*stringval(form, 0))
          argv[0] = "*";
@@ -714,7 +756,7 @@ int remove;
        retfunc = ModifyCallback;
        break;
     case MM_SAVE_LOG:
-       if (!write_log_to_file(stringval(form, 0)) && remove)
+       if (!write_log_to_file(stringval(form, 0)) && !tty && remove)
          XtUnmanageChild(form->formpointer);
        return;
     case MM_NEW_VALUE:
@@ -724,6 +766,17 @@ int remove;
        for (s = argv[2]; *s; s++)
          if (islower(*s)) *s = toupper(*s);
        break;
+    case MM_TRIGGER_DCM:
+       if (form->inputlines[0]->returnvalue.booleanvalue) {
+           i = mr_do_update();
+           if (i)
+             com_err(program_name, i, " starting DCM");
+           else
+             AppendToLog("DCM started.\n");
+       }
+       if (!tty && remove)
+         XtUnmanageChild(form->formpointer);
+       return;
     }
 
     if (argc == -1) {
@@ -776,10 +829,10 @@ int remove;
        if (f) {
            GetKeywords(f, FS_TYPE, "filesys");
            sprintf(buf, "fs_access_%s", stringval(f, FS_TYPE));
-           GetKeywords(f, FS_ACCESS, buf);
-           GetKeywords(f, FS_L_TYPE, "lockertype");
-           if (!strcmp(stringval(f, FS_MACHINE), "[NONE]"))
-             StoreField(f, FS_MACHINE, "\\[NONE\\]");
+           GetKeywords(f, FS_ACCESS+1, buf);
+           GetKeywords(f, FS_TYPE+1, "lockertype");
+           if (!strcmp(stringval(f, FS_MACHINE+1), "[NONE]"))
+             StoreField(f, FS_MACHINE+1, "\\[NONE\\]");
            f->inputlines[FS_TYPE]->valuechanged = MoiraValueChanged;
        } else
          AppendToLog("Done.\n");         
@@ -834,7 +887,6 @@ int remove;
     case MM_CLEAR_SERVICE:
     case MM_RESET_SERVICE:
     case MM_ENABLE_DCM:
-    case MM_TRIGGER_DCM:
     case MM_ADD_ZEPHYR:
     case MM_DEL_ZEPHYR:
     case MM_ADD_PCAP:
@@ -874,6 +926,15 @@ int remove;
     case MM_RESET_POBOX:
        AppendToLog("Done.\n");
        break;
+    case MM_SHOW_KRBMAP:
+    case MM_SHOW_CLDATA:
+    case MM_SHOW_MCMAP:
+    case MM_SHOW_MEMBERS:
+    case MM_STATS:
+    case MM_CLIENTS:
+    case MM_SHOW_ACE_USE:
+       AppendToLog("\n");
+       break;
     case MM_NEW_VALUE:
        CacheNewValue(GetForm(form->menu->form), (int) form->menu->accel,
                      form->extrastuff, StringValue(form, 0));
@@ -882,8 +943,12 @@ int remove;
     if (remove && form->formpointer)
       XtUnmanageChild(form->formpointer);
 
-    if (f)
-      DisplayForm(f);
+    if (f) {
+       if (tty)
+         TtyForm(f);
+       else
+         DisplayForm(f);
+    }
 }
 
 
@@ -914,13 +979,15 @@ MenuItem *m;
        AppendToLog("Services and Hosts with failed updates:\n");
        argv[0] = argv[2] = "DONTCARE";
        argv[1] = "TRUE";
-       i = MoiraQuery("qualified_get_server", 3, argv, retfunc, NULL);
+       i = MoiraQuery("qualified_get_server", 3, argv, retfunc,
+                      (char *)&dummy);
        if (i && i != MR_NO_MATCH)
          com_err(program_name, i, " executing database query");
        argv[0] = "*";
        argv[1] = argv[2] = argv[3] = argv[5] = "DONTCARE";
        argv[4] = "TRUE";
-       i = MoiraQuery("qualified_get_server_host", 6, argv, retfunc, NULL);
+       i = MoiraQuery("qualified_get_server_host", 6, argv, retfunc,
+                      (char *)&dummy);
        if (i && i != MR_NO_MATCH)
          com_err(program_name, i, " executing database query");
        AppendToLog("\n");
This page took 0.040066 seconds and 4 git commands to generate.