]> andersk Git - moira.git/commitdiff
Add user reservations menu and support for aurv, durv, gurv, and gubr.
authorzacheiss <zacheiss>
Thu, 10 Aug 2000 02:29:43 +0000 (02:29 +0000)
committerzacheiss <zacheiss>
Thu, 10 Aug 2000 02:29:43 +0000 (02:29 +0000)
clients/moira/f_defs.h
clients/moira/menus.c
clients/moira/user.c

index 13a3cce34d95cc3d75e87cacbcfcb5e41b73967c..08a0d342c10063ce2cad7069041f58c6faac31fe 100644 (file)
@@ -148,6 +148,11 @@ int AddKrbmap(int argc, char **argv);
 int DeleteKrbmap(int argc, char **argv);
 int GetDirFlags(int argc, char **argv);
 int SetDirFlags(int argc, char **argv);
+int GetUserReservations(int argc, char **argv);
+int AddUserReservation(int argc, char **argv);
+int DelUserReservation(int argc, char **argv);
+int GetUserByReservation(int argc, char **argv);
+void PrintReservationTypes(void);
 
 /* printer.c */
 int GetPrn(int argc, char **argv);
index 38cc92372aa2fc1464f36b47b97b5e0f76f12b44..0733dc0730bbf3e0c4c2866464a775a8c1ee21e0 100644 (file)
@@ -308,6 +308,34 @@ Menu host_menu = {
   }
 };
 
+/* User Reservations Menu */
+Menu reservations_menu = {
+  NULLFUNC,
+  NULLFUNC,
+  "User Reservations Menu",
+  4,
+  {
+    { GetUserReservations, NULLMENU, 2, {
+      { "get", "Get User Reservations" },
+      { "login name", "User login name: " },
+    } },
+    { AddUserReservation, NULLMENU, 3, {
+      { "add", "Add User Reservation" },
+      { "login name", "User login name: " },
+      { "reservation", "Reservation: " },
+    } },
+    { DelUserReservation, NULLMENU, 3, {
+      { "delete", "Delete User Reservation" },
+      { "login name", "User login name: " },
+      { "reservation", "Reservation: " },
+    } },
+    { GetUserByReservation, NULLMENU, 2, {
+      { "getres", "Get Users by Reservation" },
+      { "reservation", "Reservation: " },
+    } },
+  }
+};
+
 /* ------------------------- First Tier Menus ------------------------- */
 
 /*
@@ -586,7 +614,7 @@ Menu user_menu = {
   NULLFUNC,
   NULLFUNC,
   "User Menu",
-  11,
+  12,
   {
     {ShowUserByLogin, NULLMENU, 2, {
        {"login", "Show user information by login name"},
@@ -622,6 +650,7 @@ Menu user_menu = {
     } },
     SUBMENU("pobox", "Post Office Box Menu", &pobox_menu),
     SUBMENU("krbmap", "User Kerberos Mappings", &krbmap_menu),
+    SUBMENU("reservations", "User Reservations Menu", &reservations_menu),
   }
 };
 
index 61973a406cdf7ee55188d1726540c8df5b14f9c0..91ff7407d1889caf3fe18fc755cc40cad563e441 100644 (file)
@@ -996,3 +996,135 @@ int DeleteKrbmap(int argc, char **argv)
     com_err(program_name, stat, " in DeleteKrbMap.");
   return DM_NORMAL;
 }
+
+int GetUserReservations(int argc, char **argv)
+{
+  int stat;
+  struct mqelem *elem = NULL, *top;
+  char buf[BUFSIZ];
+
+  if ((stat = do_mr_query("get_user_reservations", 1, &argv[1],
+                         StoreInfo, &elem)))
+    {
+      com_err(program_name, stat, " in GetUserReservations.");
+      return DM_NORMAL;
+    }
+
+  top = elem = QueueTop(elem);
+  Put_message("");
+  if (!elem)
+    Put_message("No reservations for that user.");
+  while (elem)
+    {
+      char **info = elem->q_data;
+      sprintf(buf, "Reservation: %s", info[0]);
+      Put_message(buf);
+      elem = elem->q_forw;
+    }
+
+  FreeQueue(QueueTop(top));
+  return DM_NORMAL;  
+}
+
+int AddUserReservation(int argc, char **argv)
+{
+  int stat;
+  char buf[BUFSIZ];
+  
+  stat = do_mr_query("add_user_reservation", 2, &argv[1],
+                    NULL, NULL);
+    if (stat == MR_STRING)
+      {
+       sprintf(buf, "The reservation %s is not valid.", argv[2]);
+       Put_message(buf);
+       PrintReservationTypes();
+      }
+    else
+      com_err(program_name, stat, " in AddUserReservation.");
+  
+  return DM_NORMAL;
+}
+
+int DelUserReservation(int argc, char **argv)
+{
+  int stat;
+  char buf[BUFSIZ];
+
+  stat = do_mr_query("delete_user_reservation", 2, &argv[1],
+                    NULL, NULL);
+  if (stat == MR_STRING)
+    {
+      sprintf(buf, "The reservation %s is not valid.", argv[2]);
+      Put_message(buf);
+      PrintReservationTypes();
+    }
+  else
+    com_err(program_name, stat, " in DelUserReservation.");
+  
+  return DM_NORMAL;
+}
+
+int GetUserByReservation(int argc, char **argv)
+{
+  int stat;
+  struct mqelem *elem = NULL, *top;
+  char buf[BUFSIZ];
+
+  stat = do_mr_query("get_user_by_reservation", 1, &argv[1],
+                    StoreInfo, &elem);
+  if (stat == MR_STRING)
+    {
+      sprintf(buf, "The reservation %s is not valid.", argv[1]);
+      Put_message(buf);
+      PrintReservationTypes();
+      return DM_NORMAL;
+    }
+  else
+    {
+      com_err(program_name, stat, " in GetUserByReservation.");
+      return DM_NORMAL;
+    }
+  
+  top = elem = QueueTop(elem);
+  Put_message("");
+  while (elem)
+    {
+      char **info = elem->q_data;
+      sprintf(buf, "User: %s", info[0]);
+      Put_message(buf);
+      elem = elem->q_forw;
+    }
+
+  FreeQueue(QueueTop(top));
+  return DM_NORMAL;  
+}
+
+void PrintReservationTypes(void)
+{
+  int stat;
+  struct mqelem *elem = NULL, *top;
+  char buf[BUFSIZ];
+  char *qargs[2];
+
+  Put_message("Valid types of reservations are: ");
+  Put_message("");
+  qargs[0] = "*";
+  qargs[1] = "RESERVE";
+  qargs[2] = "*";
+  if ((stat = do_mr_query("get_alias", 3, &qargs[0],
+                         StoreInfo, &elem)))
+    {
+      com_err(program_name, stat, "in PrintReservationTypes.");
+    }
+  top = elem = QueueTop(elem);
+  while (elem)
+    {
+      char **info = elem->q_data;
+      sprintf(buf, "%s", info[2]);
+      Put_message(buf);
+      elem = elem->q_forw;
+    }
+
+  FreeQueue(QueueTop(top));  
+}
+
This page took 0.071856 seconds and 5 git commands to generate.