]> andersk Git - moira.git/blobdiff - clients/moira/user.c
add mitdir prefs menu
[moira.git] / clients / moira / user.c
index 41059cb32b66e87666434f1622c05dc93b021eba..d72a04c6bc8059e9e58804caaa99dec0444103c5 100644 (file)
@@ -1044,6 +1044,105 @@ char **argv;
 }
 
 
+/*     Function Name: GetDirFlags
+ *     Description: Shows MITdir listing preferences
+ *     Arguments: argc, argv - argv[1] contains the user login name
+ *     Returns: none.
+ */
+
+/* ARGSUSED */
+int
+GetDirFlags(argc, argv)
+int argc;
+char **argv;
+{
+    int stat, flags;
+    struct qelem *elem = NULL;
+    char buf[BUFSIZ], **info;
+
+    if (!ValidName(argv[1]))
+       return(DM_NORMAL);
+    
+    if ((stat = do_mr_query("get_user_directory_flags", 1, &argv[1],
+                            StoreInfo, (char *)&elem)) != 0) {
+       com_err(program_name, stat, " in GetDirFlags.");
+       return(DM_NORMAL);
+    }
+
+    info = (char **) QueueTop(elem)->q_data;
+    flags = atoi(info[0]);
+    FreeQueue(QueueTop(elem));
+
+    Put_message("");
+    sprintf(buf, "User: %s", argv[1]);
+    Put_message(buf);
+    if (flags & DIRFLAGS_SUPPRESS) {
+       Put_message("Does NOT appear in the on-line directory.");
+    } else {
+       Put_message("Does appear in the on-line directory.");
+       if (flags & DIRFLAGS_NONLOCAL) {
+           Put_message("Is listed with non-MIT.EDU email address (if known)");
+       } else {
+           Put_message("Is listed with MIT.EDU email address.");
+       }
+    }
+
+    return(DM_NORMAL);
+}
+
+/*     Function Name: SetDirFlags
+ *     Description: Update online directory preferences
+ *     Arguments: argc, argv - the login name of the user in argv[1].
+ *     Returns: DM_NORMAL.
+ */
+
+int
+SetDirFlags(argc, argv)
+int argc;
+char **argv;
+{
+    int stat, flags;
+    char **info, buf[BUFSIZ], *args[2];
+    struct qelem *elem = NULL;
+
+    if (!ValidName(argv[1]))
+       return(DM_NORMAL);
+    
+    /* Fetch current prefs */
+    if ((stat = do_mr_query("get_user_directory_flags", 1, &argv[1],
+                            StoreInfo, (char *)&elem)) != 0) {
+       com_err(program_name, stat, " in GetDirFlags.");
+       return(DM_NORMAL);
+    }
+    info = (char **) QueueTop(elem)->q_data;
+    flags = atoi(info[0]);
+    FreeQueue(QueueTop(elem));
+
+    sprintf(buf, "List %s in the on-line directory (y/n)", argv[1]);
+    if (YesNoQuestion(buf, !(flags & DIRFLAGS_SUPPRESS)))
+       flags &= ~DIRFLAGS_SUPPRESS;
+    else
+       flags |= DIRFLAGS_SUPPRESS;
+
+    sprintf(buf, "List MIT.EDU email address even when mail is forwarded elsewhere? (y/n)");
+    if (YesNoQuestion(buf, !(flags & DIRFLAGS_NONLOCAL)))
+       flags &= ~DIRFLAGS_NONLOCAL;
+    else
+       flags |= DIRFLAGS_NONLOCAL;
+
+    args[0] = argv[1];
+    sprintf(buf, "%d", flags);
+    args[1] = buf;
+    if ( (stat = do_mr_query("update_user_directory_flags", 2,
+                              args, Scream, NULL)) != MR_SUCCESS)
+       com_err(program_name, stat, " in SetDirFlags");
+    else
+       Put_message("Directory preferences set.");
+
+    return (DM_NORMAL);
+}
+
+#ifdef DEBUG
 hex_dump(p)
 unsigned  char *p;
 {
@@ -1092,3 +1191,4 @@ unsigned  char *p;
     }
     Put_message(buf);
 }
+#endif
This page took 0.036708 seconds and 4 git commands to generate.