]> andersk Git - moira.git/commitdiff
add mitdir prefs menu
authordanw <danw>
Thu, 14 Aug 1997 20:22:47 +0000 (20:22 +0000)
committerdanw <danw>
Thu, 14 Aug 1997 20:22:47 +0000 (20:22 +0000)
clients/moira/f_defs.h
clients/moira/menus.c
clients/moira/user.c

index 33a7e9fb13c76a980ed56bb213d0f7140b6c4bd7..886e67662fc14a212c0f8acbf61d8a6858355453 100644 (file)
@@ -144,6 +144,8 @@ int DeleteUserByUid();              /* detete a user by uid. */
 int GetKrbmap();               /* fetch a user->kerberos mapping */
 int AddKrbmap();
 int DeleteKrbmap();
+int GetDirFlags();
+int SetDirFlags();
 
 /* printer.c */
 int AddPcap();
index 22e0587e07e396e87c058068d152979bc5317dcd..3ac4b94b47f2d5efc26b54e007c17f0281a38f10 100644 (file)
@@ -561,6 +561,23 @@ Menu krbmap_menu = {
     }
 };
 
+Menu mitdir_menu = {
+    NULLFUNC,
+    NULLFUNC,
+    "MIT On-line Directory Preferences Menu",
+    2,
+    {
+       { GetDirFlags, NULLMENU, 2, {
+           { "show", "Show Directory Preferences" },
+           { "login", "Login name: " },
+       } },
+       { SetDirFlags, NULLMENU, 2, {
+           { "change", "Change Directory Preference" },
+           { "login", "Login name: " },
+       } },
+    }
+};
+
 /*
  * User Menu
  */
@@ -569,7 +586,7 @@ Menu user_menu = {
   NULLFUNC,
   NULLFUNC,
   "User Menu",
-  11,
+  12,
   {
     {ShowUserByLogin, NULLMENU, 2, {
        {"login", "Show user information by login name"},
@@ -605,6 +622,7 @@ Menu user_menu = {
     } },
     SUBMENU("pobox", "Post Office Box Menu", &pobox_menu),
     SUBMENU("krbmap", "User Kerberos Mappings", &krbmap_menu),
+    SUBMENU("mitdir", "MIT On-line Directory Preferences", &mitdir_menu),
   }
 };
 
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.04305 seconds and 5 git commands to generate.