* Returns: none.
*/
-static char **AskPrnInfo(char **info)
+static char **AskPrnInfo(char **info, Bool name)
{
char temp_buf[BUFSIZ];
- char *args[3], *lpc_acl;
+ char *args[3], *lpc_acl, *newname;
int status;
Put_message("");
Put_message(temp_buf);
Put_message("");
+ if (name)
+ {
+ while (1)
+ {
+ newname = strdup(info[PRN_NAME]);
+ if (GetValueFromUser("The new name for this printer? ", &newname) ==
+ SUB_ERROR)
+ return NULL;
+ if (ValidName(newname))
+ break;
+ }
+ }
if (GetTypeFromUser("Type of Printer", "printertype", &info[PRN_TYPE]) ==
SUB_ERROR)
return NULL;
FreeAndClear(&info[PRN_MODBY], TRUE);
FreeAndClear(&info[PRN_MODWITH], TRUE);
+ if (name)
+ SlipInNewName(info, newname);
+
return info;
}
return DM_NORMAL;
}
- args = AskPrnInfo(SetDefaults(info, argv[1]));
+ args = AskPrnInfo(SetDefaults(info, argv[1]), FALSE);
if (!args)
{
Put_message("Aborted.");
void ChangePrn(char **info, Bool one_item)
{
int stat;
- char **oldinfo;
- oldinfo = CopyInfo(info);
- if (!AskPrnInfo(info))
- return;
- if ((stat = do_mr_query("delete_printer", 1, &info[PRN_NAME], NULL, NULL)))
+ if (!AskPrnInfo(info, TRUE))
{
- com_err(program_name, stat, " printer not updated.");
+ Put_message("Aborted.");
return;
}
- if ((stat = do_mr_query("add_printer", CountArgs(info), info, NULL, NULL)))
- {
- com_err(program_name, stat, " in ChngPrn");
- if ((stat = do_mr_query("add_printer", CountArgs(oldinfo) - 3,
- oldinfo, NULL, NULL)))
- com_err(program_name, stat, " while attempting to put old info back");
- }
- FreeInfo(oldinfo);
- return;
+ if ((stat = do_mr_query("update_printer", CountArgs(info), info, NULL, NULL)))
+ com_err(program_name, stat, " in ChngPrn");
+ else
+ Put_message("Printer successfully updated.");
}