This is a_quit.c in view mode; [Download] [Up]
static char rcsid[] = "@(#)$Id: a_quit.c,v 5.2 1992/12/11 02:09:06 syd Exp $";
/*******************************************************************************
* The Elm Mail System - $Revision: 5.2 $ $State: Exp $
*
* Copyright (c) 1988-1992 USENET Community Trust
* Copyright (c) 1986,1987 Dave Taylor
*******************************************************************************
* Bug reports, patches, comments, suggestions should be sent to:
*
* Syd Weinstein, Elm Coordinator
* elm@DSI.COM dsinc!elm
*
*******************************************************************************
* $Log: a_quit.c,v $
* Revision 5.2 1992/12/11 02:09:06 syd
* Fix where the user creates a first new alias, then deletes it, the
* alias stays on screen, but the file really will be empty if it was the
* last alias, so the retry to delete gives 'cannot open ...file' messages
* From: "Robert L. Howard" <robert.howard@matd.gatech.edu>
*
* Revision 5.1 1992/10/03 22:58:40 syd
* Initial checkin as of 2.4 Release at PL0
*
*
******************************************************************************/
/** a_quit: leave the aliases menu and return to the main menu.
**/
#include "headers.h"
#include "s_aliases.h"
#include <errno.h>
extern int errno; /* system error number on failure */
int
delete_aliases(newaliases, prompt)
int newaliases, prompt;
{
/*
* Update aliases by processing deletions. Prompting is
* done as directed by user input and elmrc options.
*
* If "prompt" is false, then no prompting is done.
* Otherwise prompting is dependent upon the variable
* question_me, as set by an elmrc option. This behavior
* makes the 'q' command prompt just like '$', while
* retaining the 'Q' command for a quick exit that never
* prompts.
*
* Return 1 Aliases were deleted
* newalias Aliases were not deleted
*
* The return allows the caller to determine if the "newalias"
* routine should be run.
*/
char buffer[SLEN];
char **list;
register int to_delete = 0, to_keep = 0, i,
marked_deleted = 0,
ask_questions;
char answer;
dprint(1, (debugfile, "\n\n-- leaving aliases --\n\n"));
if (message_count == 0)
return(newaliases); /* nothing changed */
ask_questions = ((!prompt) ? FALSE : question_me);
/* YES or NO on softkeys */
if (hp_softkeys && ask_questions) {
define_softkeys(YESNO);
softkeys_on();
}
/* Determine if deleted messages are really to be deleted */
/* we need to know how many there are to delete */
for (i=0; i<message_count; i++)
if (ison(aliases[i]->status, DELETED))
marked_deleted++;
dprint(6, (debugfile, "Number of aliases marked deleted = %d\n",
marked_deleted));
if(marked_deleted) {
answer = (always_del ? *def_ans_yes : *def_ans_no); /* default answer */
if(ask_questions) {
if (marked_deleted == 1)
MCsprintf(buffer, catgets(elm_msg_cat, AliasesSet, AliasesDelete,
"Delete 1 alias? (%c/%c) "), *def_ans_yes, *def_ans_no);
else
MCsprintf(buffer, catgets(elm_msg_cat, AliasesSet, AliasesDeletePlural,
"Delete %d aliases? (%c/%c) "),
marked_deleted, *def_ans_yes, *def_ans_no);
answer = want_to(buffer, answer);
}
if(answer == *def_ans_yes) {
list = (char **) malloc(marked_deleted*sizeof(*list));
for (i = 0; i < message_count; i++) {
if (ison(aliases[i]->status, DELETED)) {
list[to_delete] = aliases[i]->alias;
dprint(8,(debugfile, "Alias number %d, %s is deletion %d\n",
i, list[to_delete], to_delete));
to_delete++;
}
else {
to_keep++;
}
}
/*
* Formulate message as to number of keeps and deletes.
* This is only complex so that the message is good English.
*/
if (to_keep > 0) {
current = 1; /* Reset current alias */
if (to_keep == 1)
sprintf(buffer, catgets(elm_msg_cat, AliasesSet, AliasesKeepDelete,
"[Keeping 1 alias and deleting %d.]"), to_delete);
else
MCsprintf(buffer, catgets(elm_msg_cat, AliasesSet, AliasesKeepDeletePlural,
"[Keeping %d aliases and deleting %d.]"), to_keep, to_delete);
}
else {
current = 0; /* No aliases left */
sprintf(buffer, catgets(elm_msg_cat, AliasesSet, AliasesDeleteAll,
"[Deleting all aliases.]"));
}
dprint(2, (debugfile, "Action: %s\n", buffer));
error(buffer);
delete_from_alias_text(list, to_delete);
free((char *) list);
}
}
dprint(3, (debugfile, "Aliases deleted: %d\n", to_delete));
/* If all aliases are to be kept we don't need to do anything
* (like run newalias for the deleted messages).
*/
if(to_delete == 0) {
dprint(3, (debugfile, "Aliases kept as is!\n"));
return(newaliases);
}
return(1);
}
exit_alias()
{
register int i;
/* Clear the deletes from all aliases. */
for(i = 0; i < message_count; i++)
if (ison(aliases[i]->status, DELETED))
clearit(aliases[i]->status, DELETED);
dprint(6, (debugfile, "\nexit_alias: Done clearing deletes.\n"));
}
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.