Subject: elm 2.4 Patch #24c Date: Fri Sep 23 21:43:13 EDT 1994 Summary: This is an official patch for elm 2.4 system. Please apply it. Priority: LOW Fix: From rn, say "| patch -p -N -d DIR", where DIR is your elm source directory. Outside of rn, say "cd DIR; patch -p -N + * + * Revision 5.5 1994/03/11 21:25:24 syd + * Fix Elm looping if an EOF is received. + * From: Gregory Neil Shapiro + * * Revision 5.4 1993/08/03 19:28:39 syd * Elm tries to replace the system toupper() and tolower() on current * BSD systems, which is unnecessary. Even worse, the replacements *************** *** 58,64 **** if pager_help is FALSE (index screen) **/ ! char ch; /* character buffer for input */ char *s; /* string pointer... */ int prompt_line, info_line; static char *help_message = NULL; --- 66,72 ---- if pager_help is FALSE (index screen) **/ ! int ch; /* character buffer for input */ char *s; /* string pointer... */ int prompt_line, info_line; static char *help_message = NULL; *************** *** 331,336 **** --- 339,347 ---- s = catgets(elm_msg_cat, ElmSet, ElmHelpExitQuickly, "Exit the mail system quickly."); break; + + case EOF: leave(0); + break; default : if (isdigit(ch) && !pager_help) s = catgets(elm_msg_cat, ElmSet, ElmHelpMakeMessageCurrent, Index: src/in_utils.c Prereq: 5.13 *** ../elm2.4/src/in_utils.c Sun Sep 26 22:15:00 1993 --- src/in_utils.c Thu Sep 1 15:42:41 1994 *************** *** 1,8 **** ! static char rcsid[] = "@(#)$Id: in_utils.c,v 5.13 1993/08/03 19:28:39 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 5.13 $ $State: Exp $ * * Copyright (c) 1988-1992 USENET Community Trust * Copyright (c) 1986,1987 Dave Taylor --- 1,8 ---- ! static char rcsid[] = "@(#)$Id: in_utils.c,v 5.16 1994/09/01 19:42:39 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 5.16 $ $State: Exp $ * * Copyright (c) 1988-1992 USENET Community Trust * Copyright (c) 1986,1987 Dave Taylor *************** *** 14,19 **** --- 14,33 ---- * ******************************************************************************* * $Log: in_utils.c,v $ + * Revision 5.16 1994/09/01 19:42:39 syd + * Moved #defines for SETJMP & LONGJMP from src/editmsg.c to hdrs/defs.h and + * used them instead of (set|long)jmp directly. This makes the usage consistent + * and Solaris 2.3 behaves correctly w.r.t stop/continue. + * From: Jan.Djarv@sa.erisoft.se (Jan Djarv) + * + * Revision 5.15 1994/08/30 18:16:05 syd + * Fix up Solaris and SVR4 signal handling for timeout + * From: Syd + * + * Revision 5.14 1994/03/11 21:25:24 syd + * Fix Elm looping if an EOF is received. + * From: Gregory Neil Shapiro + * * Revision 5.13 1993/08/03 19:28:39 syd * Elm tries to replace the system toupper() and tolower() on current * BSD systems, which is unnecessary. Even worse, the replacements *************** *** 140,149 **** --- 154,167 ---- fflush(stdin); ch = ReadCh(); + if (ch == EOF) + leave(0); ch = tolower(ch); while (!( ch == *def_ans_yes || ch == *def_ans_no || ch == '\n' || ch == '\r')) { ch = ReadCh(); + if (ch == EOF) + leave(0); ch = tolower(ch); } if(ch == '\n' || ch == '\r') *************** *** 561,571 **** GetPrompt() { /** This routine does a read/timeout for a single character. ! The way that this is determined is that the routine to read a character is called, then the "errno" is checked against EINTR (interrupted call). If they match, this returns NO_OP_COMMAND otherwise it returns the normal ! command. On BSD systems, the EINTR will never be returned so we instead longjmp from the signal handler. **/ --- 579,589 ---- GetPrompt() { /** This routine does a read/timeout for a single character. ! The way that this was determined is that the routine to read a character is called, then the "errno" is checked against EINTR (interrupted call). If they match, this returns NO_OP_COMMAND otherwise it returns the normal ! command. On many systems, the EINTR will never be returned so we instead longjmp from the signal handler. **/ *************** *** 573,580 **** if (timeout > 0) { alarm((unsigned) timeout); ! #ifdef BSD ! if (setjmp(GetPromptBuf)) { InGetPrompt = 0; ch = NO_OP_COMMAND; alarm((unsigned) 0); --- 591,597 ---- if (timeout > 0) { alarm((unsigned) timeout); ! if (SETJMP(GetPromptBuf)) { InGetPrompt = 0; ch = NO_OP_COMMAND; alarm((unsigned) 0); *************** *** 587,608 **** } } else { ch = ReadCh(); if (errno == EINTR) ch = NO_OP_COMMAND; } - #else - errno = 0; /* we actually have to do this. *sigh* */ - ch = ReadCh(); - if (errno == EINTR) ch = NO_OP_COMMAND; - alarm((unsigned) 0); - } - else { - errno = 0; - ch = ReadCh(); - if (errno == EINTR) ch = NO_OP_COMMAND; - } - #endif - return(ch); } - --- 604,612 ---- } } else { + errno = 0; ch = ReadCh(); if (errno == EINTR) ch = NO_OP_COMMAND; } return(ch); } Index: src/init.c Prereq: 5.19 *** ../elm2.4/src/init.c Sun Sep 26 22:15:00 1993 --- src/init.c Mon May 30 12:31:57 1994 *************** *** 1,8 **** ! static char rcsid[] = "@(#)$Id: init.c,v 5.19 1993/09/27 01:51:38 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 5.19 $ $State: Exp $ * * Copyright (c) 1988-1992 USENET Community Trust * Copyright (c) 1986,1987 Dave Taylor --- 1,8 ---- ! static char rcsid[] = "@(#)$Id: init.c,v 5.20 1994/05/30 16:31:40 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 5.20 $ $State: Exp $ * * Copyright (c) 1988-1992 USENET Community Trust * Copyright (c) 1986,1987 Dave Taylor *************** *** 14,19 **** --- 14,23 ---- * ******************************************************************************* * $Log: init.c,v $ + * Revision 5.20 1994/05/30 16:31:40 syd + * make getpwuid dependent on ANSI_C not posix flag + * From: Syd + * * Revision 5.19 1993/09/27 01:51:38 syd * Add elm_chown to consolidate for Xenix not allowing -1 * From: Syd *************** *** 159,169 **** #ifndef ANSI_C /* items are in unistd.h which is included if __STDC__ */ char *getlogin(); unsigned short getgid(), getuid(); - #endif - - #ifndef _POSIX_SOURCE struct passwd *getpwuid(); #endif char *get_full_name(); SIGHAND_TYPE --- 163,171 ---- #ifndef ANSI_C /* items are in unistd.h which is included if __STDC__ */ char *getlogin(); unsigned short getgid(), getuid(); struct passwd *getpwuid(); #endif + char *get_full_name(); SIGHAND_TYPE Index: src/leavembox.c Prereq: 5.20 *** ../elm2.4/src/leavembox.c Sun Sep 26 22:15:00 1993 --- src/leavembox.c Fri Jun 3 13:12:44 1994 *************** *** 1,8 **** ! static char rcsid[] = "@(#)$Id: leavembox.c,v 5.20 1993/09/27 01:51:38 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 5.20 $ $State: Exp $ * * Copyright (c) 1988-1992 USENET Community Trust * Copyright (c) 1986,1987 Dave Taylor --- 1,8 ---- ! static char rcsid[] = "@(#)$Id: leavembox.c,v 5.24 1994/06/03 17:05:17 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 5.24 $ $State: Exp $ * * Copyright (c) 1988-1992 USENET Community Trust * Copyright (c) 1986,1987 Dave Taylor *************** *** 14,19 **** --- 14,36 ---- * ******************************************************************************* * $Log: leavembox.c,v $ + * Revision 5.24 1994/06/03 17:05:17 syd + * try and prevent copy from calling elm_chown unless needed + * From: Syd + * + * Revision 5.23 1994/05/14 18:42:57 syd + * Here are some more of fixes to correctly call fflush() and unlock() in sequence. + * From: Jukka Ukkonen + * + * Revision 5.22 1994/05/14 17:31:56 syd + * try and use copying to remove SVR4 inability to chgrp file + * properly + * + * Revision 5.21 1994/03/12 15:20:01 syd + * The latest Linux shared library (4.5.8) "catches" a double fclose() + * by generating a SIGSEGV. :-/ + * From: fin!chip@dg-rtp.dg.com (Chip Salzenberg) + * * Revision 5.20 1993/09/27 01:51:38 syd * Add elm_chown to consolidate for Xenix not allowing -1 * From: Syd *************** *** 205,211 **** register int to_delete = 0, to_store = 0, to_keep = 0, i, marked_deleted, marked_read, marked_unread, last_sortby, ask_questions, asked_storage_q, ! num_chgd_status, need_to_copy, no_restore = FALSE; char answer; int err; long bytes(); --- 222,228 ---- register int to_delete = 0, to_store = 0, to_keep = 0, i, marked_deleted, marked_read, marked_unread, last_sortby, ask_questions, asked_storage_q, ! num_chgd_status, need_to_copy; char answer; int err; long bytes(); *************** *** 506,516 **** if (folder_type == SPOOL) lock(OUTGOING); if (mailfile_size != bytes(cur_folder)) { ! unlock(); ! error(catgets(elm_msg_cat, ElmSet, ElmLeaveNewMailArrived, ! "New mail has just arrived. Resynchronizing...")); ! return(-1); } /* Everything's GO - so ouput that user message and go to it. */ --- 523,535 ---- if (folder_type == SPOOL) lock(OUTGOING); + fflush (mailfile); + if (mailfile_size != bytes(cur_folder)) { ! unlock(); ! error(catgets(elm_msg_cat, ElmSet, ElmLeaveNewMailArrived, ! "New mail has just arrived. Resynchronizing...")); ! return(-1); } /* Everything's GO - so ouput that user message and go to it. */ *************** *** 530,542 **** --- 549,567 ---- "Error: Permission to append to folder %s denied!! (%s)\n", recvd_mail, "leavembox")); dprint(1, (debugfile, "** %s **\n", error_description(err))); + + fflush (mailfile); unlock(); + unblock_signals(); return(0); } if ((temp = fopen(recvd_mail,"a")) == NULL) { err = errno; + + fflush (mailfile); unlock(); + MoveCursor(LINES, 0); Raw(OFF); dprint(1, (debugfile, "Error: could not append to file %s\n", *************** *** 572,584 **** --- 597,615 ---- "Error: Permission to create temp file %s denied!! (%s)\n", temp_keep_file, "leavembox")); dprint(1, (debugfile, "** %s **\n", error_description(err))); + + fflush (mailfile); unlock(); + unblock_signals(); return(0); } if ((temp = fopen(temp_keep_file,"w")) == NULL) { err = errno; + + fflush (mailfile); unlock(); + MoveCursor(LINES, 0); Raw(OFF); dprint(1, (debugfile, "Error: could not create file %s\n", *************** *** 676,722 **** */ fflush(mailfile); - if(to_keep) { #ifdef SYSCALL_LOCKING ! need_to_copy = (folder_type == SPOOL ? TRUE : FALSE); #else ! need_to_copy = FALSE; #endif /* SYSCALL_LOCKING */ ! if (buf.st_nlink > 1) ! need_to_copy = TRUE; ! ! if (buf.st_mode & 0x7000) { /* copy if special modes set */ ! need_to_copy = TRUE; /* such as enforcement lock */ ! no_restore = TRUE; ! } #ifdef SYMLINK #ifdef S_ISLNK ! if (S_ISLNK(lbuf.st_mode)) #else ! if ((lbuf.st_mode & S_IFMT) == S_IFLNK) #endif ! { ! need_to_copy = TRUE; ! no_restore = TRUE; ! } #endif #ifdef _PC_CHOWN_RESTRICTED ! if (!need_to_copy) { /* * Chown may or may not be restricted to root in SVR4, if it is, * then need to copy must be true, and no restore of permissions * should be performed. */ ! if (pathconf(cur_folder, _PC_CHOWN_RESTRICTED)) { ! need_to_copy = TRUE; ! no_restore = TRUE; ! } ! } #endif /* _PC_CHOWN_RESTRICTED */ #ifdef SAVE_GROUP_MAILBOX_ID if (folder_type == SPOOL) setgid(mailgroupid); --- 707,750 ---- */ fflush(mailfile); #ifdef SYSCALL_LOCKING ! need_to_copy = (folder_type == SPOOL ? TRUE : FALSE); #else ! need_to_copy = FALSE; #endif /* SYSCALL_LOCKING */ + if (buf.st_nlink > 1) + need_to_copy = TRUE; ! if (buf.st_mode & 0x7000) { /* copy if special modes set */ ! need_to_copy = TRUE; /* such as enforcement lock */ ! } #ifdef SYMLINK #ifdef S_ISLNK ! if (S_ISLNK(lbuf.st_mode)) { #else ! if ((lbuf.st_mode & S_IFMT) == S_IFLNK) { #endif ! need_to_copy = TRUE; ! } #endif #ifdef _PC_CHOWN_RESTRICTED ! if (!need_to_copy) { /* * Chown may or may not be restricted to root in SVR4, if it is, * then need to copy must be true, and no restore of permissions * should be performed. */ ! if (pathconf(cur_folder, _PC_CHOWN_RESTRICTED)) { ! need_to_copy = TRUE; ! } ! } #endif /* _PC_CHOWN_RESTRICTED */ + + if(to_keep) { + #ifdef SAVE_GROUP_MAILBOX_ID if (folder_type == SPOOL) setgid(mailgroupid); *************** *** 741,746 **** --- 769,775 ---- if (folder_type == SPOOL) setgid(groupid); #endif + fflush (mailfile); unlock(); fclose(mailfile); emergency_exit(); *************** *** 750,756 **** if(need_to_copy) { ! if (copy(temp_keep_file, cur_folder) != 0) { /* copy to cur_folder failed - try to copy to special file */ err = errno; --- 779,785 ---- if(need_to_copy) { ! if (copy(temp_keep_file, cur_folder, TRUE) != 0) { /* copy to cur_folder failed - try to copy to special file */ err = errno; *************** *** 762,768 **** if (sleepmsg > 0) sleep((sleepmsg + 1) / 2); sprintf(cur_folder,"%s/%s", home, unedited_mail); ! if (copy(temp_keep_file, cur_folder) != 0) { /* couldn't copy to special file either */ err = errno; --- 791,797 ---- if (sleepmsg > 0) sleep((sleepmsg + 1) / 2); sprintf(cur_folder,"%s/%s", home, unedited_mail); ! if (copy(temp_keep_file, cur_folder, FALSE) != 0) { /* couldn't copy to special file either */ err = errno; *************** *** 778,783 **** --- 807,813 ---- if (folder_type == SPOOL) setgid(groupid); #endif + fflush (mailfile); unlock(); fclose(mailfile); emergency_exit(); *************** *** 815,821 **** * tracking down what it points to. */ ! if (!no_restore) { if(restore_file_stats(cur_folder) != 1) { error1(catgets(elm_msg_cat, ElmSet, ElmLeaveProblemsRestoringPerms, "Problems restoring permissions of folder %s!"), cur_folder); --- 845,851 ---- * tracking down what it points to. */ ! if (!need_to_copy) { if(restore_file_stats(cur_folder) != 1) { error1(catgets(elm_msg_cat, ElmSet, ElmLeaveProblemsRestoringPerms, "Problems restoring permissions of folder %s!"), cur_folder); *************** *** 851,860 **** setgid(groupid); #endif ! mailfile_size = bytes(cur_folder); unlock(); /* remove the lock on the file ASAP! */ fclose(mailfile); unblock_signals(); return(1); } --- 881,891 ---- setgid(groupid); #endif ! fflush (mailfile); mailfile_size = bytes(cur_folder); unlock(); /* remove the lock on the file ASAP! */ fclose(mailfile); + mailfile = NULL; unblock_signals(); return(1); } Index: src/limit.c Prereq: 5.3 *** ../elm2.4/src/limit.c Mon May 31 15:17:02 1993 --- src/limit.c Sun May 15 19:10:11 1994 *************** *** 1,8 **** ! static char rcsid[] = "@(#)$Id: limit.c,v 5.3 1993/05/31 19:17:02 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 5.3 $ $State: Exp $ * * Copyright (c) 1988-1992 USENET Community Trust * Copyright (c) 1986,1987 Dave Taylor --- 1,8 ---- ! static char rcsid[] = "@(#)$Id: limit.c,v 5.4 1994/05/15 23:10:08 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 5.4 $ $State: Exp $ * * Copyright (c) 1988-1992 USENET Community Trust * Copyright (c) 1986,1987 Dave Taylor *************** *** 14,19 **** --- 14,24 ---- * ******************************************************************************* * $Log: limit.c,v $ + * Revision 5.4 1994/05/15 23:10:08 syd + * Below are the changes required to compile/link elm 2.4 pl23 under + * QNX 4.2 with the Watcom 9.5 compiler (very picky). + * From: "Brian Campbell" + * * Revision 5.3 1993/05/31 19:17:02 syd * While looking into the feasibility of adding `limit sender' as requested * on Usenet, I noticed that the limit code was replicated for each of *************** *** 85,91 **** } while(1) { ! PutLine1(LINES-2, 0, prompt); CleartoEOLN(); criteria[0] = '\0'; --- 90,96 ---- } while(1) { ! PutLine0(LINES-2, 0, prompt); CleartoEOLN(); criteria[0] = '\0'; Index: src/lock.c Prereq: 5.15 *** ../elm2.4/src/lock.c Mon May 31 15:16:24 1993 --- src/lock.c Sun May 15 19:02:12 1994 *************** *** 1,8 **** ! static char rcsid[] = "@(#)$Id: lock.c,v 5.15 1993/05/31 19:16:24 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 5.15 $ $State: Exp $ * * Copyright (c) 1988-1992 USENET Community Trust * Copyright (c) 1986,1987 Dave Taylor --- 1,8 ---- ! static char rcsid[] = "@(#)$Id: lock.c,v 5.16 1994/05/15 23:02:12 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 5.16 $ $State: Exp $ * * Copyright (c) 1988-1992 USENET Community Trust * Copyright (c) 1986,1987 Dave Taylor *************** *** 14,19 **** --- 14,23 ---- * ******************************************************************************* * $Log: lock.c,v $ + * Revision 5.16 1994/05/15 23:02:12 syd + * Solaris 2.3 can return EACCES or EEXIST for lockfile already existing. + * From: xcea@uxa.ecn.bgu.edu (Chad Adams) + * * Revision 5.15 1993/05/31 19:16:24 syd * It looks like there was some earlier patch that re-introduced * some lock problems from the past time of 2.4beta. *************** *** 301,308 **** if((create_fd=open(lockfile,O_WRONLY | O_CREAT | O_EXCL,0444)) != -1) break; else { ! if(errno != EEXIST) { /* Creation of lock failed NOT because it already exists!!! */ MoveCursor(LINES, 0); Raw(OFF); --- 305,314 ---- if((create_fd=open(lockfile,O_WRONLY | O_CREAT | O_EXCL,0444)) != -1) break; else { ! if(errno != EEXIST && errno != EACCES) { /* Creation of lock failed NOT because it already exists!!! */ + /* If /var/mail nfs mounted on Solaris 2.3 at least you can */ + /* get EACCES. Treat it like EEXIST. */ MoveCursor(LINES, 0); Raw(OFF); Index: src/mailmsg2.c Prereq: 5.35 *** ../elm2.4/src/mailmsg2.c Sun Sep 26 22:15:01 1993 --- src/mailmsg2.c Mon May 30 13:24:48 1994 *************** *** 1,8 **** ! static char rcsid[] = "@(#)$Id: mailmsg2.c,v 5.35 1993/09/27 01:51:38 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 5.35 $ $State: Exp $ * * Copyright (c) 1988-1992 USENET Community Trust * Copyright (c) 1986,1987 Dave Taylor --- 1,8 ---- ! static char rcsid[] = "@(#)$Id: mailmsg2.c,v 5.39 1994/05/30 17:24:38 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 5.39 $ $State: Exp $ * * Copyright (c) 1988-1992 USENET Community Trust * Copyright (c) 1986,1987 Dave Taylor *************** *** 14,19 **** --- 14,43 ---- * ******************************************************************************* * $Log: mailmsg2.c,v $ + * Revision 5.39 1994/05/30 17:24:38 syd + * use Elm routine instead of strcasecmp for portability + * From: Syd + * + * Revision 5.38 1994/05/30 16:43:14 syd + * I found a few months old patch I have not sent you before (I guess). + * It avoids unknowingly confusing some too rigidly and simple mindedly + * coded mailers with weird settings like + * + * charset=us-ascii and textencoding=8bit + * + * This patch will force 7bit encoding with charset=us-ascii. + * E.g. older versions of pine will dump core on 8bit & us-ascii. + * From: Jukka Ukkonen + * + * Revision 5.37 1994/05/15 23:10:08 syd + * Below are the changes required to compile/link elm 2.4 pl23 under + * QNX 4.2 with the Watcom 9.5 compiler (very picky). + * From: "Brian Campbell" + * + * Revision 5.36 1994/03/11 21:25:24 syd + * Fix Elm looping if an EOF is received. + * From: Gregory Neil Shapiro + * * Revision 5.35 1993/09/27 01:51:38 syd * Add elm_chown to consolidate for Xenix not allowing -1 * From: Syd *************** *** 370,376 **** dprint(1, (debugfile, "Can't open included file %s. Failed with error %s (mail)\n", included_file, error_description(errno))); ! error2(catgets(elm_msg_cat, ElmSet, ElmCouldNotOpenFile, "Could not open file %s."), included_file); return(need_redraw); } --- 394,400 ---- dprint(1, (debugfile, "Can't open included file %s. Failed with error %s (mail)\n", included_file, error_description(errno))); ! error1(catgets(elm_msg_cat, ElmSet, ElmCouldNotOpenFile, "Could not open file %s."), included_file); return(need_redraw); } *************** *** 845,850 **** --- 869,876 ---- Raw(ON); /* double check... testing only... */ MoveCursor(x_coord, y_coord); cmd = ReadCh(); + if (cmd == EOF) + leave(0); cmd = tolower(cmd); did_prompt = TRUE; } *************** *** 1170,1177 **** else { #ifdef MIME fprintf(filedesc, "%s\n", MIME_HEADER); ! fprintf(filedesc, "%s text/plain; charset=%s\n",MIME_CONTENTTYPE, charset); ! fprintf(filedesc, "Content-Transfer-Encoding: %s\n", text_encoding); #else fprintf(filedesc, "Content-Type: text\n"); #endif /* MIME */ --- 1196,1207 ---- else { #ifdef MIME fprintf(filedesc, "%s\n", MIME_HEADER); ! fprintf(filedesc, "%s text/plain; charset=%s\n", ! MIME_CONTENTTYPE, charset); ! fprintf(filedesc, "Content-Transfer-Encoding: %s\n", ! (!strincmp ("us-ascii", charset) ! && strincmp ("7bit", text_encoding)) ! ? "7bit" : text_encoding); #else fprintf(filedesc, "Content-Type: text\n"); #endif /* MIME */ *************** *** 1269,1275 **** } fprintf(dest, "%s text/plain; charset=%s\n", MIME_CONTENTTYPE, charset); ! fprintf(dest, "Content-Transfer-Encoding: %s\n", text_encoding); fprintf(dest, "Content-Length: "); C_L_Position[1] = ftell(dest); fprintf(dest, " \n"); /* Print Placeholders */ --- 1299,1308 ---- } fprintf(dest, "%s text/plain; charset=%s\n", MIME_CONTENTTYPE, charset); ! fprintf(dest, "Content-Transfer-Encoding: %s\n", ! (!strincmp ("us-ascii", charset) ! && strincmp ("7bit", text_encoding)) ! ? "7bit" : text_encoding); fprintf(dest, "Content-Length: "); C_L_Position[1] = ftell(dest); fprintf(dest, " \n"); /* Print Placeholders */ Index: src/newmbox.c Prereq: 5.34 *** ../elm2.4/src/newmbox.c Sun Sep 26 22:15:02 1993 --- src/newmbox.c Sat May 14 14:42:59 1994 *************** *** 1,8 **** ! static char rcsid[] = "@(#)$Id: newmbox.c,v 5.34 1993/09/27 01:51:38 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 5.34 $ $State: Exp $ * * Copyright (c) 1988-1992 USENET Community Trust * Copyright (c) 1986,1987 Dave Taylor --- 1,8 ---- ! static char rcsid[] = "@(#)$Id: newmbox.c,v 5.36 1994/05/14 18:42:57 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 5.36 $ $State: Exp $ * * Copyright (c) 1988-1992 USENET Community Trust * Copyright (c) 1986,1987 Dave Taylor *************** *** 14,19 **** --- 14,27 ---- * ******************************************************************************* * $Log: newmbox.c,v $ + * Revision 5.36 1994/05/14 18:42:57 syd + * Here are some more of fixes to correctly call fflush() and unlock() in sequence. + * From: Jukka Ukkonen + * + * Revision 5.35 1994/03/11 21:01:35 syd + * detect whether atol() is a macro + * From: Mitch DSouza + * * Revision 5.34 1993/09/27 01:51:38 syd * Add elm_chown to consolidate for Xenix not allowing -1 * From: Syd *************** *** 205,211 **** char *error_description(); long bytes(); ! #ifndef ANSI_C /* avoid problems with systems that declare atol as a macro */ extern void rewind(); extern long atol(); #endif --- 213,219 ---- char *error_description(); long bytes(); ! #if !defined(ANSI_C) && !defined(atol) /* avoid problems with systems that declare atol as a macro */ extern void rewind(); extern long atol(); #endif *************** *** 421,426 **** --- 429,437 ---- if (access(cur_tempfolder, ACCESS_EXISTS) != -1) { /* Hey! What the hell is this? The temp file already exists? */ /* Looks like a potential clash of processes on the same file! */ + + fflush (mailfile); + unlock(); /* so remove lock file! */ error(catgets(elm_msg_cat, ElmSet, ElmWhatsThisTempExists, "What's this? The temp folder already exists??")); *************** *** 431,436 **** --- 442,450 ---- silently_exit(); /* leave without tampering with it! */ } if ((temp = fopen(cur_tempfolder,"w")) == NULL) { + + fflush (mailfile); + err = errno; unlock(); /* remove lock file! */ MoveCursor(LINES, 0); *************** *** 461,466 **** --- 475,483 ---- */ if ((temp = fopen(cur_tempfolder,"r+")) == NULL) { err = errno; + + fflush (mailfile); + unlock(); /* remove lock file! */ MoveCursor(LINES,0); Raw(OFF); *************** *** 475,480 **** --- 492,500 ---- } if (fseek(temp, 0, 2) == -1) { err = errno; + + fflush (mailfile); + unlock(); /* remove lock file! */ fclose(temp); MoveCursor(LINES,0); *************** *** 530,535 **** --- 550,556 ---- /** find the size of the folder then unlock the file **/ + fflush (mailfile); mailfile_size = bytes(cur_folder); unlock(); *************** *** 695,700 **** --- 716,722 ---- */ if ((count) && (!add_new_only || count > message_count)) { headers[count-1]->lines = line; + if (headers[count-1]->content_length < 0) headers[count-1]->content_length = fbytes - content_start; } *************** *** 988,1006 **** } if (folder_type == SPOOL) { unlock(); /* remove lock file! */ if ((ferror(mailfile)) || (fclose(mailfile) == EOF)) { ! err = errno; ! MoveCursor(LINES, 0); ! Raw(OFF); ! printf(catgets(elm_msg_cat, ElmSet, ElmCloseOnFolderFailed, ! "\nClose on folder %s failed!!\n"), ! cur_folder); ! printf("** %s. **\n", error_description(err)); ! dprint(1, (debugfile, "Can't close on folder %s!!\n", ! cur_folder)); ! rm_temps_exit(); } if ((ferror(temp)) || (fclose(temp) == EOF)) { err = errno; MoveCursor(LINES, 0); --- 1010,1030 ---- } if (folder_type == SPOOL) { + fflush (mailfile); unlock(); /* remove lock file! */ if ((ferror(mailfile)) || (fclose(mailfile) == EOF)) { ! err = errno; ! MoveCursor(LINES, 0); ! Raw(OFF); ! printf(catgets(elm_msg_cat, ElmSet, ElmCloseOnFolderFailed, ! "\nClose on folder %s failed!!\n"), ! cur_folder); ! printf("** %s. **\n", error_description(err)); ! dprint(1, (debugfile, "Can't close on folder %s!!\n", ! cur_folder)); ! rm_temps_exit(); } + if ((ferror(temp)) || (fclose(temp) == EOF)) { err = errno; MoveCursor(LINES, 0); *************** *** 1013,1018 **** --- 1037,1043 ---- cur_tempfolder)); rm_temps_exit(); } + /* sanity check on append - is resulting temp file longer??? */ if ( bytes(cur_tempfolder) != mailfile_size) { MoveCursor(LINES, 0); *************** *** 1022,1027 **** --- 1047,1053 ---- dprint(1, (debugfile, "newmbox - mbox. != spool mail length")); rm_temps_exit(); } + if ((mailfile = fopen(cur_tempfolder,"r")) == NULL) { err = errno; MoveCursor(LINES,0); Index: src/options.c Prereq: 5.16 *** ../elm2.4/src/options.c Sun Sep 26 22:15:03 1993 --- src/options.c Mon May 30 12:42:50 1994 *************** *** 1,8 **** ! static char rcsid[] = "@(#)$Id: options.c,v 5.16 1993/08/03 19:28:39 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 5.16 $ $State: Exp $ * * Copyright (c) 1986,1987 Dave Taylor * Copyright (c) 1988-1992 USENET Community Trust --- 1,8 ---- ! static char rcsid[] = "@(#)$Id: options.c,v 5.18 1994/05/30 16:42:48 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 5.18 $ $State: Exp $ * * Copyright (c) 1986,1987 Dave Taylor * Copyright (c) 1988-1992 USENET Community Trust *************** *** 14,19 **** --- 14,27 ---- * ******************************************************************************* * $Log: options.c,v $ + * Revision 5.18 1994/05/30 16:42:48 syd + * Just a minor fix to an impossible character comparison. + * From: Jukka Ukkonen + * + * Revision 5.17 1994/03/11 21:25:24 syd + * Fix Elm looping if an EOF is received. + * From: Gregory Neil Shapiro + * * Revision 5.16 1993/08/03 19:28:39 syd * Elm tries to replace the system toupper() and tolower() on current * BSD systems, which is unnecessary. Even worse, the replacements *************** *** 394,400 **** { /** help menu for the options screen... **/ ! char c, *ptr, *prompt; ClearLine(LINES-2); /* clear option prompt message */ Centerline(LINES-3, catgets(elm_msg_cat, ElmSet, ElmPressKeyHelp, --- 402,409 ---- { /** help menu for the options screen... **/ ! char *ptr, *prompt; ! int c; ClearLine(LINES-2); /* clear option prompt message */ Centerline(LINES-3, catgets(elm_msg_cat, ElmSet, ElmPressKeyHelp, *************** *** 403,414 **** --- 412,428 ---- lower_prompt(prompt = catgets(elm_msg_cat, ElmSet, ElmKeyPrompt, "Key : ")); while ((c = ReadCh()) != '.') { + if (c == EOF) + leave(0); + c = tolower(c); + if (c == '?') { display_helpfile(OPTIONS_HELP); display_options(); return; } + if ((ptr = one_liner_for(c)) != NULL) error2("%c = %s", c, ptr); else *************** *** 499,504 **** --- 513,520 ---- PutLine0(LINES-2, 0, prompt); ch = ReadCh(); + if (ch == EOF) + leave(0); ch = tolower(ch); clear_error(); /* remove possible "sorting" message etc... */ Index: src/pattern.c Prereq: 5.10 *** ../elm2.4/src/pattern.c Sun Sep 26 22:15:03 1993 --- src/pattern.c Sun May 15 19:05:20 1994 *************** *** 1,8 **** ! static char rcsid[] = "@(#)$Id: pattern.c,v 5.10 1993/09/19 23:15:28 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 5.10 $ $State: Exp $ * * Copyright (c) 1988-1992 USENET Community Trust * Copyright (c) 1986,1987 Dave Taylor --- 1,8 ---- ! static char rcsid[] = "@(#)$Id: pattern.c,v 5.11 1994/05/15 23:04:48 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 5.11 $ $State: Exp $ * * Copyright (c) 1988-1992 USENET Community Trust * Copyright (c) 1986,1987 Dave Taylor *************** *** 14,19 **** --- 14,23 ---- * ******************************************************************************* * $Log: pattern.c,v $ + * Revision 5.11 1994/05/15 23:04:48 syd + * Fix segv where in_string didnot like searching NULL + * From: Stuart Kemp (via syd) + * * Revision 5.10 1993/09/19 23:15:28 syd * Changed a few buffers from LONG_STRING (512) to VERY_LONG_STRING * to avoid long header lines overflowing the allocated space. At *************** *** 381,394 **** { char *get_alias_address(); int dummy; /** Returns true iff the pattern occurs in it's entirety in the fully expanded address of the indicated alias **/ ! return( in_string(shift_lower( ! get_alias_address(aliases[message_number]->alias,TRUE,&dummy)), ! pat) ); } match_in_message(pat) --- 385,400 ---- { char *get_alias_address(); + char *result; int dummy; /** Returns true iff the pattern occurs in it's entirety in the fully expanded address of the indicated alias **/ ! result = get_alias_address(aliases[message_number]->alias,TRUE,&dummy); ! if (result != NULL) ! return(in_string(shift_lower(result), pat) ); ! return(NULL); } match_in_message(pat) Index: src/pmalloc.c Prereq: 5.3 *** ../elm2.4/src/pmalloc.c Sun Dec 6 23:28:14 1992 --- src/pmalloc.c Fri Mar 11 15:59:02 1994 *************** *** 1,8 **** ! static char rcsid[] = "@(#)$Id: pmalloc.c,v 5.3 1992/12/07 04:28:03 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 5.3 $ $State: Exp $ * * Copyright (c) 1988-1992 USENET Community Trust * Copyright (c) 1986,1987 Dave Taylor --- 1,8 ---- ! static char rcsid[] = "@(#)$Id: pmalloc.c,v 5.4 1994/03/11 20:59:02 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 5.4 $ $State: Exp $ * * Copyright (c) 1988-1992 USENET Community Trust * Copyright (c) 1986,1987 Dave Taylor *************** *** 14,19 **** --- 14,28 ---- * ******************************************************************************* * $Log: pmalloc.c,v $ + * Revision 5.4 1994/03/11 20:59:02 syd + * I made the following changes to elm 2.4pl23 module pmalloc.c after testing on + * a DEC Alpha running OSF1 v1.3. The difficulty is that the Alpha hardware + * requires certain alignment for some operations which was not supplied by + * pmalloc (8 byte for addresses instead of 4 byte). I made a simple minded + * change to pmalloc.c to force alignment of the allocated data block to be + * adequate on DEC Alpha OSF1. + * From: jim@lime.rsmas.miami.edu (Jim Brown) + * * Revision 5.3 1992/12/07 04:28:03 syd * change include from defs to headers as now needs LINES * From: Syd *************** *** 44,49 **** --- 53,60 ---- extern nl_catd elm_msg_cat; /* message catalog */ /*VARARGS0*/ + #define MIN_BOUNDARY 8 /* power to 2 */ + char *pmalloc(size) int size; { *************** *** 61,66 **** --- 72,79 ---- /** if bigger than available space, get more, tossing what's left **/ + size = ((size+3+4)/4)*4; /* Go to quad byte boundary, fill */ + if (size > free_mem) { if ((our_block = (char *) malloc(PMALLOC_BUFFER_SIZE)) == NULL) { MoveCursor(LINES,0); *************** *** 73,81 **** our_block += 4; /* just for safety, don't give back true address */ free_mem = PMALLOC_BUFFER_SIZE-4; } ! return_value = our_block; /* get the memory */ - size = ((size+3)/4)*4; /* Go to quad byte boundary */ our_block += size; /* use it up */ free_mem -= size; /* and decrement */ --- 86,101 ---- our_block += 4; /* just for safety, don't give back true address */ free_mem = PMALLOC_BUFFER_SIZE-4; } ! ! if (((long)our_block&(MIN_BOUNDARY-1)) != 0) { ! int drek; ! ! drek = ((long)our_block&(MIN_BOUNDARY-1)); /* round to minimum */ ! our_block += (MIN_BOUNDARY-drek); ! free_mem -= (MIN_BOUNDARY-drek); ! } ! return_value = our_block; /* get the memory */ our_block += size; /* use it up */ free_mem -= size; /* and decrement */ Index: src/save_opts.c Prereq: 5.7 *** ../elm2.4/src/save_opts.c Sun Sep 26 22:15:13 1993 --- src/save_opts.c Fri Mar 11 16:19:26 1994 *************** *** 1,8 **** ! static char rcsid[] = "@(#)$Id: save_opts.c,v 5.7 1993/09/27 01:51:38 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 5.7 $ $State: Exp $ * * Copyright (c) 1988-1992 USENET Community Trust * Copyright (c) 1986,1987 Dave Taylor --- 1,8 ---- ! static char rcsid[] = "@(#)$Id: save_opts.c,v 5.8 1994/03/11 21:19:26 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 5.8 $ $State: Exp $ * * Copyright (c) 1988-1992 USENET Community Trust * Copyright (c) 1986,1987 Dave Taylor *************** *** 14,19 **** --- 14,25 ---- * ******************************************************************************* * $Log: save_opts.c,v $ + * Revision 5.8 1994/03/11 21:19:26 syd + * Recognize the "#$HDR" magic cookie as the header to place in the + * user's elmrc file rather than hardwiring a minimally helpful + * string into the binary. + * From: chip@chinacat.unicom.com (Chip Rosenthal) + * * Revision 5.7 1993/09/27 01:51:38 syd * Add elm_chown to consolidate for Xenix not allowing -1 * From: Syd *************** *** 233,238 **** --- 239,245 ---- { register int x, local_value; register char *s; + char buf[SLEN]; /** save the information in the file. If elminfo_fd == NULL don't look for comments! *************** *** 252,262 **** fprintf(newelmrc, catgets(elm_msg_cat, ElmrcSet, ElmrcSavedAuto, "# Saved automatically by ELM %s\n#\n\n"), version_buff); ! fprintf(newelmrc, catgets(elm_msg_cat, ElmrcSet, ElmrcYesNoMeans, ! "# For yes/no settings with ?, ON means yes, OFF means no\n")); for (x = 0; x < NUMBER_OF_SAVEABLE_OPTIONS; x++) { - char buf[SLEN]; /** skip system-only options **/ if (save_info[x].flags & FL_SYS) --- 259,279 ---- fprintf(newelmrc, catgets(elm_msg_cat, ElmrcSet, ElmrcSavedAuto, "# Saved automatically by ELM %s\n#\n\n"), version_buff); ! if (elminfo_fd != NULL) { ! x = FALSE; ! rewind(elminfo_fd); ! while (!x && fgets(buf, sizeof(buf), elminfo_fd) != NULL) ! x = (strncmp(buf, "#$HDR", 5) == 0); ! if (x) { ! while (fgets(buf, sizeof(buf), elminfo_fd) != NULL) { ! if (buf[0] != '#') ! break; ! fputs(buf, newelmrc); ! } ! } ! } for (x = 0; x < NUMBER_OF_SAVEABLE_OPTIONS; x++) { /** skip system-only options **/ if (save_info[x].flags & FL_SYS) Index: src/savecopy.c Prereq: 5.12 *** ../elm2.4/src/savecopy.c Mon May 31 15:35:25 1993 --- src/savecopy.c Sun May 15 19:10:12 1994 *************** *** 1,8 **** ! static char rcsid[] = "@(#)$Id: savecopy.c,v 5.12 1993/05/31 19:35:24 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 5.12 $ $State: Exp $ * * Copyright (c) 1988-1992 USENET Community Trust * Copyright (c) 1986,1987 Dave Taylor --- 1,8 ---- ! static char rcsid[] = "@(#)$Id: savecopy.c,v 5.13 1994/05/15 23:10:08 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 5.13 $ $State: Exp $ * * Copyright (c) 1988-1992 USENET Community Trust * Copyright (c) 1986,1987 Dave Taylor *************** *** 14,19 **** --- 14,24 ---- * ******************************************************************************* * $Log: savecopy.c,v $ + * Revision 5.13 1994/05/15 23:10:08 syd + * Below are the changes required to compile/link elm 2.4 pl23 under + * QNX 4.2 with the Watcom 9.5 compiler (very picky). + * From: "Brian Campbell" + * * Revision 5.12 1993/05/31 19:35:24 syd * Move the actual file saving code out of "save_copy()" into a seperate * routine called "append_copy_to_file()" to make it globally available. *************** *** 342,348 **** /* else user presumably left our English expansion - no change in fn */ /* display English expansion of new user input a while */ ! PutLine1(LINES-2, strlen(ncf_prompt), cf_english(fn)); MoveCursor(LINES, 0); if (sleepmsg > 0) sleep((sleepmsg + 1) / 2); --- 347,353 ---- /* else user presumably left our English expansion - no change in fn */ /* display English expansion of new user input a while */ ! PutLine0(LINES-2, strlen(ncf_prompt), cf_english(fn)); MoveCursor(LINES, 0); if (sleepmsg > 0) sleep((sleepmsg + 1) / 2); Index: src/showmsg.c Prereq: 5.15 *** ../elm2.4/src/showmsg.c Sun Sep 26 22:15:05 1993 --- src/showmsg.c Tue Aug 30 11:09:44 1994 *************** *** 1,8 **** ! static char rcsid[] = "@(#)$Id: showmsg.c,v 5.15 1993/08/23 02:46:07 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 5.15 $ $State: Exp $ * * Copyright (c) 1988-1992 USENET Community Trust * Copyright (c) 1986,1987 Dave Taylor --- 1,8 ---- ! static char rcsid[] = "@(#)$Id: showmsg.c,v 5.16 1994/08/30 15:09:43 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 5.16 $ $State: Exp $ * * Copyright (c) 1988-1992 USENET Community Trust * Copyright (c) 1986,1987 Dave Taylor *************** *** 14,19 **** --- 14,23 ---- * ******************************************************************************* * $Log: showmsg.c,v $ + * Revision 5.16 1994/08/30 15:09:43 syd + * Block sigwinch when in the external pager. + * From: jwa@yog-sothoth.dcrt.nih.gov (James W. Adams) + * * Revision 5.15 1993/08/23 02:46:07 syd * Don't declare _exit() if already did it. * From: decwrl!uunet.UU.NET!fin!chip (Chip Salzenberg) *************** *** 163,168 **** --- 167,175 ---- #ifdef SIGTSTP SIGHAND_TYPE (*oldstop)(), (*oldcont)(); #endif + #ifdef SIGWINCH + SIGHAND_TYPE (*oldwinch)(); + #endif lines = current_header->lines; *************** *** 343,348 **** --- 350,358 ---- oldstop = signal(SIGTSTP,SIG_DFL); oldcont = signal(SIGCONT,SIG_DFL); #endif + #ifdef SIGWINCH + oldwinch = signal(SIGWINCH,SIG_DFL); + #endif } ClearScreen(); *************** *** 565,570 **** --- 575,583 ---- #ifdef SIGTSTP (void)signal(SIGTSTP,oldstop); (void)signal(SIGCONT,oldcont); + #endif + #ifdef SIGWINCH + (void)signal(SIGWINCH,oldwinch); #endif } Index: src/showmsg_c.c Prereq: 5.3 *** ../elm2.4/src/showmsg_c.c Sun Apr 11 23:14:20 1993 --- src/showmsg_c.c Fri Mar 11 16:25:27 1994 *************** *** 1,8 **** ! static char rcsid[] = "@(#)$Id: showmsg_c.c,v 5.3 1992/11/26 00:46:13 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 5.3 $ $State: Exp $ * * Copyright (c) 1988-1992 USENET Community Trust * Copyright (c) 1986,1987 Dave Taylor --- 1,8 ---- ! static char rcsid[] = "@(#)$Id: showmsg_c.c,v 5.4 1994/03/11 21:25:24 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 5.4 $ $State: Exp $ * * Copyright (c) 1988-1992 USENET Community Trust * Copyright (c) 1986,1987 Dave Taylor *************** *** 14,19 **** --- 14,23 ---- * ******************************************************************************* * $Log: showmsg_c.c,v $ + * Revision 5.4 1994/03/11 21:25:24 syd + * Fix Elm looping if an EOF is received. + * From: Gregory Neil Shapiro + * * Revision 5.3 1992/11/26 00:46:13 syd * changes to first change screen back (Raw off) and then issue final * error message. *************** *** 221,231 **** goto next_undel_msg; break; - case 'T' : case 't' : istagged=tag_message(FALSE); ! if (command == 'T') ! goto next_undel_msg; ! else if (istagged) store_msg(catgets(elm_msg_cat, ElmSet, ElmMessageTagged, "Message tagged.")); else --- 225,232 ---- goto next_undel_msg; break; case 't' : istagged=tag_message(FALSE); ! if(istagged) store_msg(catgets(elm_msg_cat, ElmSet, ElmMessageTagged, "Message tagged.")); else *************** *** 262,267 **** --- 263,270 ---- case ctrl('M'): screen_mangled = 0; return(show_msg(current)); + case EOF : leave(0); + break; case ESCAPE : if (cursor_control) { Index: src/signals.c Prereq: 5.9 *** ../elm2.4/src/signals.c Sun Sep 26 22:15:06 1993 --- src/signals.c Thu Sep 1 15:42:41 1994 *************** *** 1,8 **** ! static char rcsid[] = "@(#)$Id: signals.c,v 5.9 1993/08/03 19:10:50 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 5.9 $ $State: Exp $ * * Copyright (c) 1988-1992 USENET Community Trust * Copyright (c) 1986,1987 Dave Taylor --- 1,8 ---- ! static char rcsid[] = "@(#)$Id: signals.c,v 5.13 1994/09/01 19:42:39 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 5.13 $ $State: Exp $ * * Copyright (c) 1988-1992 USENET Community Trust * Copyright (c) 1986,1987 Dave Taylor *************** *** 14,19 **** --- 14,35 ---- * ******************************************************************************* * $Log: signals.c,v $ + * Revision 5.13 1994/09/01 19:42:39 syd + * Moved #defines for SETJMP & LONGJMP from src/editmsg.c to hdrs/defs.h and + * used them instead of (set|long)jmp directly. This makes the usage consistent + * and Solaris 2.3 behaves correctly w.r.t stop/continue. + * From: Jan.Djarv@sa.erisoft.se (Jan Djarv) + * + * Revision 5.12 1994/08/30 18:59:38 syd + * add sigcont to release list + * + * Revision 5.11 1994/08/30 18:27:47 syd + * fix typo + * + * Revision 5.10 1994/08/30 18:16:05 syd + * Fix up Solaris and SVR4 signal handling for timeout + * From: Syd + * * Revision 5.9 1993/08/03 19:10:50 syd * Patch for Elm 2.4 PL22 to correct handling of SIGWINCH signals on * DecStations with Ultrix 4.2. *************** *** 137,149 **** SIGHAND_TYPE alarm_signal(sig) { /** silently process alarm signal for timeouts... **/ - #ifdef BSD if (InGetPrompt) ! longjmp(GetPromptBuf, 1); ! #else ! signal(SIGALRM, alarm_signal); #endif } SIGHAND_TYPE --- 153,168 ---- SIGHAND_TYPE alarm_signal(sig) { + signal(SIGALRM, alarm_signal); + /** silently process alarm signal for timeouts... **/ if (InGetPrompt) ! { ! #ifdef HASSIGHOLD ! sigrelse(SIGALRM); #endif + LONGJMP(GetPromptBuf, 1); + } } SIGHAND_TYPE *************** *** 186,194 **** /** this is called when returning from a ^Z stop **/ dprint(1, (debugfile,"\n\n** Received SIGCONT **\n\n\n\n", sig)); - #ifndef BSD signal(SIGCONT, sig_return_from_user_stop); - #endif signal(SIGTSTP, sig_user_stop); printf(catgets(elm_msg_cat, ElmSet, ElmBackInElmRedraw, --- 205,211 ---- *************** *** 197,206 **** if (was_in_raw_state) Raw(ON); - #ifdef BSD if (InGetPrompt) ! longjmp(GetPromptBuf, 1); #endif } #endif --- 214,227 ---- if (was_in_raw_state) Raw(ON); if (InGetPrompt) ! { ! #ifdef HASSIGHOLD ! sigrelse(SIGTSTP); ! sigrelse(SIGCONT); #endif + LONGJMP(GetPromptBuf, 1); + } } #endif *************** *** 209,220 **** winch_signal(sig) { resize_screen = 1; - #ifndef BSD signal(SIGWINCH, winch_signal); ! #else if (InGetPrompt) ! longjmp(GetPromptBuf, 1); #endif } #endif --- 230,244 ---- winch_signal(sig) { resize_screen = 1; signal(SIGWINCH, winch_signal); ! if (InGetPrompt) ! { ! #ifdef HASSIGHOLD ! sigrelse(SIGWINCH); #endif + LONGJMP(GetPromptBuf, 1); + } } #endif Index: src/syscall.c Prereq: 5.8 *** ../elm2.4/src/syscall.c Sun Sep 26 22:15:06 1993 --- src/syscall.c Tue Aug 30 11:09:43 1994 *************** *** 1,8 **** ! static char rcsid[] = "@(#)$Id: syscall.c,v 5.8 1993/08/23 02:46:07 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 5.8 $ $State: Exp $ * * Copyright (c) 1988-1992 USENET Community Trust * Copyright (c) 1986,1987 Dave Taylor --- 1,8 ---- ! static char rcsid[] = "@(#)$Id: syscall.c,v 5.9 1994/08/30 15:09:43 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 5.9 $ $State: Exp $ * * Copyright (c) 1988-1992 USENET Community Trust * Copyright (c) 1986,1987 Dave Taylor *************** *** 14,19 **** --- 14,23 ---- * ******************************************************************************* * $Log: syscall.c,v $ + * Revision 5.9 1994/08/30 15:09:43 syd + * Block sigwinch when in the external pager. + * From: jwa@yog-sothoth.dcrt.nih.gov (James W. Adams) + * * Revision 5.8 1993/08/23 02:46:07 syd * Don't declare _exit() if already did it. * From: decwrl!uunet.UU.NET!fin!chip (Chip Salzenberg) *************** *** 184,190 **** #else int status; #endif ! register SIGHAND_TYPE (*istat)(), (*qstat)(); #ifdef SIGTSTP register SIGHAND_TYPE (*oldstop)(), (*oldstart)(); #endif --- 188,194 ---- #else int status; #endif ! register SIGHAND_TYPE (*istat)(), (*qstat)(), (*wstat)(); #ifdef SIGTSTP register SIGHAND_TYPE (*oldstop)(), (*oldstart)(); #endif *************** *** 224,229 **** --- 228,236 ---- istat = signal(SIGINT, SIG_IGN); qstat = signal(SIGQUIT, SIG_IGN); + #ifdef SIGWINCH + wstat = signal(SIGWINCH, SIG_DFL); + #endif #ifdef SIGTSTP oldstop = signal(SIGTSTP, SIG_DFL); oldstart = signal(SIGCONT, SIG_DFL); *************** *** 323,328 **** --- 330,338 ---- (void) signal(SIGINT, istat); (void) signal(SIGQUIT, qstat); + #ifdef SIGWINCH + (void) signal(SIGWINCH, wstat); + #endif #ifdef SIGTSTP (void) signal(SIGTSTP, oldstop); (void) signal(SIGCONT, oldstart); Index: src/utils.c Prereq: 5.15 *** ../elm2.4/src/utils.c Sun Sep 26 22:15:07 1993 --- src/utils.c Fri Jun 3 13:05:33 1994 *************** *** 1,8 **** ! static char rcsid[] = "@(#)$Id: utils.c,v 5.15 1993/09/27 01:51:38 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 5.15 $ $State: Exp $ * * Copyright (c) 1988-1992 USENET Community Trust * Copyright (c) 1986,1987 Dave Taylor --- 1,8 ---- ! static char rcsid[] = "@(#)$Id: utils.c,v 5.17 1994/06/03 17:05:17 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 5.17 $ $State: Exp $ * * Copyright (c) 1988-1992 USENET Community Trust * Copyright (c) 1986,1987 Dave Taylor *************** *** 14,19 **** --- 14,27 ---- * ******************************************************************************* * $Log: utils.c,v $ + * Revision 5.17 1994/06/03 17:05:17 syd + * try and prevent copy from calling elm_chown unless needed + * From: Syd + * + * Revision 5.16 1994/05/14 18:42:57 syd + * Here are some more of fixes to correctly call fflush() and unlock() in sequence. + * From: Jukka Ukkonen + * * Revision 5.15 1993/09/27 01:51:38 syd * Add elm_chown to consolidate for Xenix not allowing -1 * From: Syd *************** *** 179,185 **** MCprintf(catgets(elm_msg_cat, ElmSet, ElmCopyingFromCopyingTo, "\n\rCopying from: %s\n\rCopying to: %s\n\r"), source, dest); ! copy(source, dest); } sprintf(source, "%s/.elmrc", home); --- 187,193 ---- MCprintf(catgets(elm_msg_cat, ElmSet, ElmCopyingFromCopyingTo, "\n\rCopying from: %s\n\rCopying to: %s\n\r"), source, dest); ! copy(source, dest, FALSE); } sprintf(source, "%s/.elmrc", home); *************** *** 188,194 **** MCprintf(catgets(elm_msg_cat, ElmSet, ElmCopyingFromCopyingTo, "\n\rCopying from: %s\n\rCopying to: %s\n\r"), source, dest); ! copy(source, dest); } printf(catgets(elm_msg_cat, ElmSet, ElmWelcomeToNewElm, --- 196,202 ---- MCprintf(catgets(elm_msg_cat, ElmSet, ElmCopyingFromCopyingTo, "\n\rCopying from: %s\n\rCopying to: %s\n\r"), source, dest); ! copy(source, dest, FALSE); } printf(catgets(elm_msg_cat, ElmSet, ElmWelcomeToNewElm, *************** *** 291,296 **** --- 299,306 ---- (void) unlink(cur_tempfolder); } + if (mailfile) + fflush (mailfile); unlock(); /* remove lock file if any */ if(do_cursor) { Index: utils/Makefile.SH Prereq: 5.5 *** ../elm2.4/utils/Makefile.SH Mon May 31 15:17:28 1993 --- utils/Makefile.SH Thu Mar 10 12:20:29 1994 *************** *** 16,22 **** echo "Extracting utils/Makefile (with variable substitutions)" cat >Makefile <Makefile <> LINT.OUT - $(BIN)/arepdaemon: $(AREPDAEMON_OBJ) ../lib/libutil.a - $(CC) $(LFLAGS) -o $@ $(AREPDAEMON_OBJ) ../lib/libutil.a $(LIB2) - - arepdaemon_lint: $(AREPDAEMON_SRC) - $(LINT) $(LINTFLAGS) $(AREPDAEMON_SRC) >> LINT.OUT - - $(BIN)/autoreply: $(AUTOREPLY_OBJ) ../lib/libutil.a - $(CC) $(LFLAGS) -o $@ $(AUTOREPLY_OBJ) ../lib/libutil.a $(LIB2) - - autoreply_lint: $(AUTOREPLY_SRC) - $(LINT) $(LINTFLAGS) $(AUTOREPLY_SRC) >> LINT.OUT - $(BIN)/elmalias: $(ELMALIAS_OBJ) ../lib/libutil.a $(CC) $(LFLAGS) -o $@ $(ELMALIAS_OBJ) ../lib/libutil.a $(LIB2) --- 252,257 ---- *************** *** 353,360 **** # Dependencies of C object files answer.o: $(INCLDIR)/ndbz.h $(INCLDIR)/elmutil.h $(INCLDIR)/s_answer.h - arepdaem.o: $(INCLDIR)/elmutil.h - autoreply.o: $(INCLDIR)/elmutil.h elmalias.o: $(INCLDIR)/elmutil.h $(INCLDIR)/s_elmalias.h fastmail.o: $(INCLDIR)/patchlevel.h $(INCLDIR)/elmutil.h $(INCLDIR)/s_fastmail.h from.o: $(INCLDIR)/elmutil.h $(INCLDIR)/s_from.h --- 327,332 ---- *************** *** 369,387 **** -$(RM) $@.old $(CP) $? $@ $(CHMOD) a+x $@ - - $(DEST)/arepdaemon: $(BIN)/arepdaemon - -$(MV) $@ $@.old - -$(RM) $@.old - $(CP) $? $@ - $(CHMOD) a+x $@ - - $(DEST)/autoreply: $(BIN)/autoreply - -$(MV) $@ $@.old - -$(RM) $@.old - $(CP) $? $@ - $(CHMOD) a+x $@ - $(CHMOD) u+s $@ $(DEST)/checkalias: $(BIN)/checkalias -$(MV) $@ $@.old --- 341,346 ---- Index: utils/elmalias.c Prereq: 5.8 *** ../elm2.4/utils/elmalias.c Sun Sep 26 22:15:08 1993 --- utils/elmalias.c Mon May 30 12:31:58 1994 *************** *** 1,8 **** ! static char rcsid[] = "@(#)$Id: elmalias.c,v 5.8 1993/09/27 01:05:37 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 5.8 $ * * Copyright (c) 1988-1992 USENET Community Trust * Copyright (c) 1986,1987 Dave Taylor --- 1,8 ---- ! static char rcsid[] = "@(#)$Id: elmalias.c,v 5.9 1994/05/30 16:31:40 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 5.9 $ * * Copyright (c) 1988-1992 USENET Community Trust * Copyright (c) 1986,1987 Dave Taylor *************** *** 14,19 **** --- 14,23 ---- * ******************************************************************************* * $Log: elmalias.c,v $ + * Revision 5.9 1994/05/30 16:31:40 syd + * make getpwuid dependent on ANSI_C not posix flag + * From: Syd + * * Revision 5.8 1993/09/27 01:05:37 syd * Eliminate warning about redeclaring getpwuid(). * From: riacs!rutgers!tscs.tscs.com!fin!chip (Chip Salzenberg) *************** *** 108,114 **** #include char *getenv(); ! #ifndef _POSIX_SOURCE struct passwd *getpwuid(); #endif --- 112,118 ---- #include char *getenv(); ! #ifndef ANSI_C struct passwd *getpwuid(); #endif Index: utils/fastmail.c Prereq: 5.8 *** ../elm2.4/utils/fastmail.c Sun Sep 26 22:15:08 1993 --- utils/fastmail.c Fri Mar 11 15:55:25 1994 *************** *** 1,8 **** ! static char rcsid[] = "@(#)$Id: fastmail.c,v 5.8 1993/07/20 02:46:36 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 5.8 $ $State: Exp $ * * Copyright (c) 1988-1992 USENET Community Trust * Copyright (c) 1986,1987 Dave Taylor --- 1,8 ---- ! static char rcsid[] = "@(#)$Id: fastmail.c,v 5.9 1994/03/11 20:55:23 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 5.9 $ $State: Exp $ * * Copyright (c) 1988-1992 USENET Community Trust * Copyright (c) 1986,1987 Dave Taylor *************** *** 14,19 **** --- 14,33 ---- * ******************************************************************************* * $Log: fastmail.c,v $ + * Revision 5.9 1994/03/11 20:55:23 syd + * Replaced the get_tz_mins() routine in lib/get_tz.c with a portable + * version that requires no configuration. Rewrote the test case in + * lib/get_tz.c, and also wrote in support to simplify configuration + * tests. Dropped TZMINS_USE_XXXX configuration parameter. Simplified + * timezone determination in Configure. The new get_tz_mins() introduces + * two side effects. First it steps on the static data returned by + * localtime(). Second, it uses a routine in lib/date_util.c, which + * requires debug initializations. Rewrote get_arpa_date() to work around + * the first issue. Rather than doing the same for lib/strftime.c, just + * removed the timezone stuff with a conditional compile. Elm does not + * use it. Added debugging initializations to util/fastmail.c. + * From: chip@chinacat.unicom.com (Chip Rosenthal) + * * Revision 5.8 1993/07/20 02:46:36 syd * In fastmail, if environment variable $REPLYTO is set, use it as * default Reply-To. Also, eliminate unnecessary strlen() calls. *************** *** 90,95 **** --- 104,112 ---- char *get_arpa_date(); static void usage(); + int debug = 0; + FILE *debugfile = stderr; + main(argc, argv) int argc; *************** *** 105,111 **** char from_addr[SLEN], comments[SLEN], inreplyto[NLEN]; char references[SLEN]; char *p; ! int c, sendmail_available, debug = 0; elm_msg_cat = catopen("elm2.4", 0); --- 122,128 ---- char from_addr[SLEN], comments[SLEN], inreplyto[NLEN]; char references[SLEN]; char *p; ! int c, sendmail_available; elm_msg_cat = catopen("elm2.4", 0); Index: utils/from.c Prereq: 5.14 *** ../elm2.4/utils/from.c Mon May 31 15:36:09 1993 --- utils/from.c Mon May 30 12:27:00 1994 *************** *** 1,8 **** ! static char rcsid[] = "@(#)$Id: from.c,v 5.14 1993/05/31 19:36:07 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 5.14 $ $State: Exp $ * * Copyright (c) 1988-1992 USENET Community Trust * Copyright (c) 1986,1987 Dave Taylor --- 1,8 ---- ! static char rcsid[] = "@(#)$Id: from.c,v 5.15 1994/05/30 16:27:00 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 5.15 $ $State: Exp $ * * Copyright (c) 1988-1992 USENET Community Trust * Copyright (c) 1986,1987 Dave Taylor *************** *** 14,19 **** --- 14,25 ---- * ******************************************************************************* * $Log: from.c,v $ + * Revision 5.15 1994/05/30 16:27:00 syd + * In utils/from.c there was a conditionalized declaration of + * getpwuid() which was triggered by the environment being non- + * POSIX instead of non-STDC. + * From: Jukka Antero Ukkonen + * * Revision 5.14 1993/05/31 19:36:07 syd * Dave Thomas forgot to update the NLS message file when he added the tidy * option to frm. While I was at it, I did a little cleanup to keep things *************** *** 157,163 **** int multiple_files = FALSE, output_files = FALSE; int user_mailbox = FALSE, no_files, c; struct passwd *pass; ! #ifndef _POSIX_SOURCE struct passwd *getpwuid(); #endif int hostlen, domlen; --- 163,169 ---- int multiple_files = FALSE, output_files = FALSE; int user_mailbox = FALSE, no_files, c; struct passwd *pass; ! #ifndef ANSI_C struct passwd *getpwuid(); #endif int hostlen, domlen; Index: utils/newmail.c Prereq: 5.19 *** ../elm2.4/utils/newmail.c Sun Sep 26 22:15:09 1993 --- utils/newmail.c Mon May 30 12:32:01 1994 *************** *** 1,8 **** ! static char rcsid[] = "@(#)$Id: newmail.c,v 5.19 1993/08/03 19:28:39 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 5.19 $ $State: Exp $ * * Copyright (c) 1988-1992 USENET Community Trust * Copyright (c) 1986,1987 Dave Taylor --- 1,8 ---- ! static char rcsid[] = "@(#)$Id: newmail.c,v 5.20 1994/05/30 16:31:40 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 5.20 $ $State: Exp $ * * Copyright (c) 1988-1992 USENET Community Trust * Copyright (c) 1986,1987 Dave Taylor *************** *** 14,19 **** --- 14,23 ---- * ******************************************************************************* * $Log: newmail.c,v $ + * Revision 5.20 1994/05/30 16:31:40 syd + * make getpwuid dependent on ANSI_C not posix flag + * From: Syd + * * Revision 5.19 1993/08/03 19:28:39 syd * Elm tries to replace the system toupper() and tolower() on current * BSD systems, which is unnecessary. Even worse, the replacements *************** *** 270,276 **** register struct folder_struct *cur_folder; int hostlen, domlen; struct passwd *pass; ! #ifndef _POSIX_SOURCE struct passwd *getpwuid(); #endif --- 274,280 ---- register struct folder_struct *cur_folder; int hostlen, domlen; struct passwd *pass; ! #ifndef ANSI_C struct passwd *getpwuid(); #endif Index: utils/prlong.c Prereq: 5.3 *** ../elm2.4/utils/prlong.c Sun Sep 26 22:15:09 1993 --- utils/prlong.c Mon May 30 19:59:38 1994 *************** *** 1,8 **** ! static char rcsid[] = "@(#)$Id: prlong.c,v 5.3 1993/08/03 19:28:39 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 5.3 $ * * Copyright (c) 1988-1992 USENET Community Trust * Copyright (c) 1986,1987 Dave Taylor --- 1,8 ---- ! static char rcsid[] = "@(#)$Id: prlong.c,v 5.4 1994/05/30 23:59:24 syd Exp $"; /******************************************************************************* ! * The Elm Mail System - $Revision: 5.4 $ * * Copyright (c) 1988-1992 USENET Community Trust * Copyright (c) 1986,1987 Dave Taylor *************** *** 14,19 **** --- 14,23 ---- * ******************************************************************************* * $Log: prlong.c,v $ + * Revision 5.4 1994/05/30 23:59:24 syd + * fix those that need getopt, getopt calls elm_msg_cat + * From: Syd + * * Revision 5.3 1993/08/03 19:28:39 syd * Elm tries to replace the system toupper() and tolower() on current * BSD systems, which is unnecessary. Even worse, the replacements *************** *** 73,79 **** #include ! #include "defs.h" #define MAXWID 78 /* default maximum line width */ #define ONE_LDR "" /* default leader for first line */ --- 77,87 ---- #include ! #ifndef GETOPT ! # include "elmutil.h" ! #else ! # include "defs.h" ! #endif #define MAXWID 78 /* default maximum line width */ #define ONE_LDR "" /* default leader for first line */ *************** *** 112,117 **** --- 120,129 ---- #ifdef I_LOCALE setlocale(LC_ALL, ""); + #endif + + #ifndef GETOPT + elm_msg_cat = catopen("elm2.4", 0); #endif /*