This is quit.c in view mode; [Download] [Up]
static char rcsid[] = "@(#)$Id: quit.c,v 5.4 1992/11/26 00:46:13 syd Exp $"; /******************************************************************************* * The Elm Mail System - $Revision: 5.4 $ $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: quit.c,v $ * Revision 5.4 1992/11/26 00:46:13 syd * changes to first change screen back (Raw off) and then issue final * error message. * From: Syd * * Revision 5.3 1992/10/24 13:35:39 syd * changes found by using codecenter on Elm 2.4.3 * From: Graham Hudspith <gwh@inmos.co.uk> * * Revision 5.2 1992/10/17 22:47:09 syd * adds the function bytemap() and the macros MAPIN and MAPOUT from the file * lib/ndbz.c in the file src/alias.c. * * prevent elm from exiting when resyncing the empty incoming mailbox. * From: vogt@isa.de (Gerald Vogt) * * Revision 5.1 1992/10/03 22:58:40 syd * Initial checkin as of 2.4 Release at PL0 * * ******************************************************************************/ /** quit: leave the current folder and quit the program. **/ #include "headers.h" #include "s_elm.h" #include <errno.h> extern int errno; /* system error number on failure */ long bytes(); char *error_description(); extern void init_helpmsg(); quit(prompt) int prompt; { /* a wonderfully short routine!! */ if (leave_mbox(FALSE, TRUE, prompt) == -1) /* new mail - leave not done - can't change to another file yet * check for change in mailfile_size in main() will do the work * of calling newmbox to add in the new messages to the current * file and fix the sorting sequence that leave_mbox may have * changed for its own purposes */ return; leave(0); } int resync() { /** Resync on the current folder. Leave current and read it back in. Return indicates whether a redraw of the screen is needed. **/ int err; if(leave_mbox(TRUE, FALSE, TRUE) ==-1) /* new mail - leave not done - can't change to another file yet * check for change in mailfile_size in main() will do the work * of calling newmbox to add in the new messages to the current * file and fix the sorting sequence that leave_mbox may have * changed for its own purposes */ return(FALSE); if ((errno = can_access(cur_folder, READ_ACCESS)) != 0) { if (strcmp(cur_folder, defaultfile) != 0 || errno != ENOENT) { err = errno; MoveCursor(LINES, 0); Raw(OFF); dprint(1, (debugfile, "Error: given file %s as folder - unreadable (%s)!\n", cur_folder, error_description(err))); fprintf(stderr, catgets(elm_msg_cat, ElmSet, ElmCantOpenFolderRead, "Can't open folder '%s' for reading!\n"), cur_folder); leave(0); } } newmbox(cur_folder, FALSE); return(TRUE); } char helpmsg[VERY_LONG_STRING]; change_file() { /* Prompt user for name of folder to change to. * If all okay with that folder, leave the current folder. * If leave goes okay (i.e. no new messages in current folder), * change to the folder that the user specified. * * Return value indicates whether a redraw is needed. */ int redraw = FALSE; char newfile[SLEN]; char *nameof(); /* get new file name */ MoveCursor(LINES-3, 30); CleartoEOS(); PutLine0(LINES-3, 38, catgets(elm_msg_cat, ElmSet, ElmUseForHelp, "(Use '?' for help)")); PutLine0(LINES-2,0, catgets(elm_msg_cat, ElmSet, ElmChangeToWhichFolder, "Change to which folder: ")); while(1) { newfile[0] = '\0'; (void) optionally_enter(newfile, LINES-2, 24, FALSE, FALSE); clear_error(); if(*newfile == '\0') { /* if user didn't enter a file name */ MoveCursor(LINES-3, 30); /* abort changing file process */ CleartoEOS(); return(redraw); } if (strcmp(newfile, "?") == 0) { /* user wants to list folders */ if(!*helpmsg) /* format helpmsg if not yet done */ init_helpmsg( helpmsg, change_word, FALSE ); ClearScreen(); printf( helpmsg ) ; PutLine0(LINES-2,0,catgets(elm_msg_cat, ElmSet, ElmChangeToWhichFolder, "Change to which folder: ")); /* reprompt */ redraw = TRUE; /* we'll need to clean the screen */ continue ; } /* if user entered wildcard, list expansions and try again */ if ( has_wildcards( newfile ) ) { list_folders( 4, NULL, newfile ) ; PutLine0(LINES-2,0,catgets(elm_msg_cat, ElmSet, ElmChangeToWhichFolder, "Change to which folder: ")); /* reprompt */ redraw = TRUE ; continue ; } /* user entered a file name - expand it */ if (! expand_filename(newfile, TRUE)) continue; /* prompt again */ /* don't accept the same file as the current */ if (strcmp(newfile, cur_folder) == 0) { error(catgets(elm_msg_cat, ElmSet, ElmAlreadyReadingThatFolder, "Already reading that folder!")); continue; /* prompt again */ } /* Make sure this is a file the user can open, unless it's the * default mailfile, which is openable even if empty */ if ((errno = can_access(newfile, READ_ACCESS)) != 0 ) { if (strcmp(newfile, defaultfile) != 0 || errno != ENOENT) { error1(catgets(elm_msg_cat, ElmSet, ElmCantOpenFolderReadNONL, "Can't open folder '%s' for reading!"), newfile); continue; /* prompt again */ } } break; /* exit loop - we got the name of a good file */ } /* All's clear with the new file to go ahead and leave the current. */ MoveCursor(LINES-3, 30); CleartoEOS(); if(leave_mbox(FALSE, FALSE, TRUE) ==-1) { /* new mail - leave not done - can't change to another file yet * check for change in mailfile_size in main() will do the work * of calling newmbox to add in the new messages to the current * file and fix the sorting sequence that leave_mbox may have * changed for its own purposes */ return(redraw); } redraw = 1; newmbox(newfile, FALSE); return(redraw); }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.