1 #if (!defined(lint) && !defined(SABER))
2 static char rcsid_module_c[] = "$Header$";
5 /* This is the file pobox.c for the SMS Client, which allows a nieve
6 * user to quickly and easily maintain most parts of the SMS database.
7 * It Contains: Functions for handling the poboxes.
10 * By: Chris D. Peterson
16 * Copyright 1988 by the Massachusetts Institute of Technology.
18 * For further information on copyright and distribution
19 * see the file mit-copyright.h
28 #include "mit-copyright.h"
34 #define FOREIGN_BOX ("SMTP")
35 #define LOCAL_BOX ("POP")
37 /* Function Name: PrintPOBox
38 * Description: Yet another specialized print function.
39 * Arguments: info - all info about this PO_box.
49 sprintf(buf, "Address: %-10s Box: %-35s Type: %s", info[PO_NAME],
50 info[PO_BOX], info[PO_TYPE]);
54 /* Function Name: RealPrintPOMachines
55 * Description: Actually does the printing for PrintPOMachines.
56 * Arguments: info, - name of machines in info[1].
61 RealPrintPOMachines(info)
64 Print(1, info + 1, (char *) NULL);
67 /* Function Name: PrintPOMachines
68 * Description: Prints all current post offices.
70 * Returns: SUB_ERROR if the machines could not be printed.
77 static char * args[] = {"pop", NULL};
78 struct qelem * top = NULL;
80 if ( (status = sms_query("get_server_locations", CountArgs(args), args,
81 StoreInfo, (char *)&top)) != SMS_SUCCESS) {
82 com_err(program_name, status, " in get_server_locations.");
87 Loop(top, RealPrintPOMachines);
92 /* Function Name: GetUserPOBox
93 * Description: prints the users POBox information.
94 * Arguments: argc, argv - name of the user in argv[1].
100 GetUserPOBox(argc, argv)
105 struct qelem * top = NULL;
108 if (!ValidName(argv[1]))
111 switch (status = sms_query("get_pobox", 1, argv + 1, StoreInfo,
114 Put_message("This user has no P.O. Box.");
117 sprintf(buf,"Current pobox for user %s: \n", argv[1]);
120 Loop(top, PrintPOBox); /* should only return 1 box. */
124 com_err(program_name, status, "in get_pobox.");
129 /* Function Name: GetNewLocalPOBox
130 * Description: get the machine for a new local pop Box for the user.
131 * Arguments: local_user - name of the local user.
132 * Returns: machine - name of the machine for then new pop box, or NULL.
136 GetNewLocalPOBox(local_user)
139 char temp_buf[BUFSIZ];
141 sprintf(temp_buf, "%s did not have a previous local PO Box.", local_user);
142 Put_message(temp_buf);
143 sprintf(temp_buf,"%s %s", "Pick one of the following",
144 "machines for this user's Post Office.");
145 Put_message(temp_buf);
147 if (PrintPOMachines() == SUB_NORMAL) {
149 Prompt_input("Which Machine? ", temp_buf, BUFSIZ);
150 return( Strsave(temp_buf) );
152 Put_message("Could not get machines to choose from, quitting.");
156 /* Function Name: SetUserPOBox
157 * Description: Addes or Chnages the P.O. Box for a user.
158 * Arguments: argc, argv - the login name of the user in argv[1].
159 * Returns: DM_NORMAL.
163 SetUserPOBox(argc, argv)
168 char *type, temp_buf[BUFSIZ], *local_user, *args[10], box[BUFSIZ];
170 local_user = argv[1];
172 if (!ValidName(local_user))
175 (void) GetUserPOBox(argc, argv); /* print current info. */
177 sprintf(temp_buf, "Assign %s a local PO Box (y/n)", local_user);
178 switch (YesNoQuestion(temp_buf, TRUE)) {
181 switch (YesNoQuestion("Use Previous Local Box (y/n)", TRUE)) {
183 switch (status = sms_query("set_pobox_pop", 1,
184 &local_user, Scream, NULL)) {
188 if ( (temp_box = GetNewLocalPOBox(local_user)) == SUB_NORMAL) {
189 strcpy(box, temp_box);
196 com_err(program_name, status, "in set_pobox_pop.");
200 if ( (temp_box = GetNewLocalPOBox(local_user)) == SUB_NORMAL) {
201 strcpy(box, temp_box);
213 sprintf(temp_buf, "Set up a foreign PO Box for %s (y/n)", local_user);
214 switch( YesNoQuestion(temp_buf, TRUE)) {
216 if (!Prompt_input("Foreign PO Box for this user? ", box, BUFSIZ))
221 return(DM_NORMAL); /* ^C hit. */
224 args[PO_NAME] = local_user;
225 args[PO_TYPE] = type;
228 if ( (status = sms_query("set_pobox", CountArgs(args), args,
229 Scream, NULL)) != SMS_SUCCESS )
230 com_err(program_name, status, " in ChangeUserPOBox");
232 Put_message("PO Box assigned.");
233 default: /* ^C hit. */
239 /* Function Name: RemoveUserPOBox
240 * Description: Removes this users POBox.
241 * Arguments: argc, argv - name of user in argv[1].
242 * Returns: DM_NORMAL.
247 RemoveUserPOBox(argc, argv)
252 char temp_buf[BUFSIZ];
254 if (!ValidName(argv[1]))
258 "Are you sure that you want to remove %s's PO Box (y/n)", argv[1]);
260 if (Confirm(temp_buf)) {
261 if ( (status = sms_query("delete_pobox", 1, argv + 1, Scream, NULL)) !=
263 com_err(program_name, status, "in delete_pobox.");
265 Put_message("PO Box removed.");
274 * c-continued-statement-offset: 4
276 * c-argdecl-indent: 4