taylor@hpldat.UUCP (Dave Taylor) (05/03/87)
This is Elm Patch Kit #5 of 8 and contains patches for:
src/mailmsg2.c src/savecopy.c src/mailmsg1.c src/connect_to.c
src/remail.c src/signals.c src/edit.c src/sort.c
src/showmsg_cmd.c src/options.c
Please feed this directly to 'patch'.
Index: src/mailmsg2.c
***************
*** 58,61
! dprint2(4,"\nMailing to '%s'(with%s editing)\n",
! expanded_to, edit_message? "" : "out");
--- 58,61 -----
! dprint(4, (debugfile, "\nMailing to '%s'(with%s editing)\n",
! expanded_to, edit_message? "" : "out"));
***************
*** 75,77
if ((reply = fopen(filename,"w")) == NULL) {
! dprint2(1,
"Attempt to write to temp file %s failed with error %s (mail)\n",
--- 75,77 -----
if ((reply = fopen(filename,"w")) == NULL) {
! dprint(1, (debugfile,
"Attempt to write to temp file %s failed with error %s (mail)\n",
***************
*** 77,79
"Attempt to write to temp file %s failed with error %s (mail)\n",
! filename, error_name(errno));
error2("Could not create file %s (%s)",filename,
--- 77,79 -----
"Attempt to write to temp file %s failed with error %s (mail)\n",
! filename, error_name(errno)));
error2("Could not create file %s (%s)",filename,
***************
*** 109,112
unlink(filename);
! dprint2(4, "-- linking existing file %s to file %s --\n",
! fname, filename);
link(fname, filename);
--- 109,112 -----
unlink(filename);
! dprint(4, (debugfile, "-- linking existing file %s to file %s --\n",
! fname, filename));
link(fname, filename);
***************
*** 181,183
if ((reply = fopen(filename,"r")) == NULL) {
! dprint2(1,
"Attempt to open file %s for reading failed with error %s (mail)\n",
--- 181,183 -----
if ((reply = fopen(filename,"r")) == NULL) {
! dprint(1, (debugfile,
"Attempt to open file %s for reading failed with error %s (mail)\n",
***************
*** 183,185
"Attempt to open file %s for reading failed with error %s (mail)\n",
! filename, error_name(errno));
error1("Could not open reply file (%s)", error_name(errno));
--- 183,185 -----
"Attempt to open file %s for reading failed with error %s (mail)\n",
! filename, error_name(errno)));
error1("Could not open reply file (%s)", error_name(errno));
***************
*** 189,191
else if ((reply = fopen(filename,"r")) == NULL) {
! dprint2(1,
"Attempt to open file %s for reading failed with error %s (mail)\n",
--- 189,191 -----
else if ((reply = fopen(filename,"r")) == NULL) {
! dprint(1, (debugfile,
"Attempt to open file %s for reading failed with error %s (mail)\n",
***************
*** 191,193
"Attempt to open file %s for reading failed with error %s (mail)\n",
! filename, error_name(errno));
error1("Could not open reply file (%s)", error_name(errno));
--- 191,193 -----
"Attempt to open file %s for reading failed with error %s (mail)\n",
! filename, error_name(errno)));
error1("Could not open reply file (%s)", error_name(errno));
***************
*** 217,220
! dprint2(6, "Composition file='%s' and mail buffer='%s'\n",
! filename, filename2);
--- 217,220 -----
! dprint(6, (debugfile, "Composition file='%s' and mail buffer='%s'\n",
! filename, filename2));
***************
*** 228,230
! dprint1(3,"** write_header failed: %s\n", error_name(errno));
--- 228,231 -----
! dprint(3, (debugfile, "** write_header failed: %s\n",
! error_name(errno)));
***************
*** 371,373
if ((deadfd = fopen(fname,"a")) == NULL) {
! dprint2(1,
"\nAttempt to append to deadletter file '%s' failed: %s\n\r",
--- 372,374 -----
if ((deadfd = fopen(fname,"a")) == NULL) {
! dprint(1, (debugfile,
"\nAttempt to append to deadletter file '%s' failed: %s\n\r",
***************
*** 373,375
"\nAttempt to append to deadletter file '%s' failed: %s\n\r",
! fname, error_name(errno));
printf("Message not saved, Sorry.\n\r\n\r");
--- 374,376 -----
"\nAttempt to append to deadletter file '%s' failed: %s\n\r",
! fname, error_name(errno)));
printf("Message not saved, Sorry.\n\r\n\r");
***************
*** 378,381
else if ((messagefd = fopen(filename, "r")) == NULL) {
! dprint2(1,"\nAttempt to read reply file '%s' failed: %s\n\r",
! filename, error_name(errno));
printf("Message not saved, Sorry.\n\r\n\r");
--- 379,383 -----
else if ((messagefd = fopen(filename, "r")) == NULL) {
! dprint(1, (debugfile,
! "\nAttempt to read reply file '%s' failed: %s\n\r",
! filename, error_name(errno)));
printf("Message not saved, Sorry.\n\r\n\r");
***************
*** 522,524
if ((filedesc = fopen(filename, "w")) == NULL) {
! dprint1(1,
"Attempt to open file %s for writing failed! (write_header_info)\n",
--- 524,526 -----
if ((filedesc = fopen(filename, "w")) == NULL) {
! dprint(1, (debugfile,
"Attempt to open file %s for writing failed! (write_header_info)\n",
***************
*** 524,528
"Attempt to open file %s for writing failed! (write_header_info)\n",
! filename);
! dprint2(1,"** %s - %s **\n\n", error_name(errno),
! error_description(errno));
error2("Error %s encountered trying to write to %s",
--- 526,530 -----
"Attempt to open file %s for writing failed! (write_header_info)\n",
! filename));
! dprint(1, (debugfile, "** %s - %s **\n\n", error_name(errno),
! error_description(errno)));
error2("Error %s encountered trying to write to %s",
***************
*** 539,541
fprintf(filedesc, "%s", buffer);
! dprint1(1,"\nadded: %s", buffer);
/** so is this perverted or what? **/
--- 541,543 -----
fprintf(filedesc, "%s", buffer);
! dprint(1,(debugfile, "\nadded: %s", buffer));
/** so is this perverted or what? **/
Index: src/savecopy.c
***************
*** 20,21
char *format_long(), *get_arpa_date();
--- 20,23 -----
+ #define metachar(c) (c == '+' || c == '%' || c == '+')
+
char *format_long(), *get_arpa_date();
***************
*** 53,55
if (strlen(buffer) == 0) {
! dprint1(3,"Warning: get_return_name couldn't break down %s\n", to);
savename[0] = '\0';
--- 55,58 -----
if (strlen(buffer) == 0) {
! dprint(3, (debugfile,
! "Warning: get_return_name couldn't break down %s\n", to));
savename[0] = '\0';
***************
*** 66,70
if (strlen(savename) == 0) {
! if (strlen(savefile) == 0)
! return(error("variable 'SAVEFILE' not defined!"));
! strcpy(savename, savefile);
}
--- 69,80 -----
if (strlen(savename) == 0) {
! if (strlen(savefile) == 0) {
! error("variable 'SAVEFILE' not defined!");
! return;
! }
! if (metachar(savefile[0])) {
! sprintf(savename, "%s%s%s", folders,
! lastch(folders) == '/' ? "" : "/", savefile+1);
! }
! else
! strcpy(savename, savefile);
}
***************
*** 71,77
! if ((errno = can_access(savename, WRITE_ACCESS))) {
! dprint0(2,"Error: attempt to autosave to a file that can't...\n");
! dprint1(2,"\tbe appended to: %s (save_copy)\n", savename);
! dprint2(2,"** %s - %s **\n", error_name(errno),
! error_description(errno));
error1("permission to append to %s denied!", savename);
--- 81,88 -----
! if ((errno = can_open(savename, WRITE_ACCESS))) {
! dprint(2, (debugfile,
! "Error: attempt to autosave to a file that can't be appended to!\n"));
! dprint(2, (debugfile, "\tfilename = \"%s\"\n", savename));
! dprint(2, (debugfile, "** %s - %s **\n", error_name(errno),
! error_description(errno)));
error1("permission to append to %s denied!", savename);
***************
*** 82,87
if ((save = fopen(savename, "a")) == NULL) {
! dprint2(1,"Error: Couldn't append message to file %s (%s)\n",
! savename, "save_copy");
! dprint2(1,"** %s - %s **\n", error_name(errno),
! error_description(errno));
error1("couldn't append to %s", savename);
--- 93,99 -----
if ((save = fopen(savename, "a")) == NULL) {
! dprint(1, (debugfile,
! "Error: Couldn't append message to file %s (%s)\n",
! savename, "save_copy"));
! dprint(1, (debugfile,"** %s - %s **\n", error_name(errno),
! error_description(errno)));
error1("couldn't append to %s", savename);
***************
*** 93,97
fclose(save);
! dprint1(1,"Error: Couldn't read file %s (save_copy)\n", filename);
! dprint2(1,"** %s - %s **\n", error_name(errno),
! error_description(errno));
error1("couldn't read file %s!", filename);
--- 105,110 -----
fclose(save);
! dprint(1, (debugfile,
! "Error: Couldn't read file %s (save_copy)\n", filename));
! dprint(1, (debugfile, "** %s - %s **\n", error_name(errno),
! error_description(errno)));
error1("couldn't read file %s!", filename);
***************
*** 110,112
! fprintf(save,"\nFrom To:%s %s", buffer, ctime(&thetime));
--- 123,125 -----
! fprintf(save,"From To:%s %s", buffer, ctime(&thetime));
***************
*** 134,136
crypted = 0;
! else if (strncmp(buffer, DONT_SAVE, strlen(DONT_SAVE)) == 0) {
fclose(message);
--- 147,154 -----
crypted = 0;
! else if (strncmp(buffer, DONT_SAVE, strlen(DONT_SAVE)) == 0 ||
! strncmp(buffer, DONT_SAVE2, strlen(DONT_SAVE2)) == 0) {
!
! /* second test added due to an imcompatability between the
! documentation and the software! (Thanks Bill!) */
!
fclose(message);
***************
*** 146,148
}
! fputs(buffer, save);
}
--- 164,169 -----
}
! if (strncmp(buffer, "From ", 5) == 0)
! fprintf(save, ">%s", buffer);
! else
! fputs(buffer, save);
}
***************
*** 148,149
}
--- 169,172 -----
}
+
+ fprintf(save, "\n"); /* ensure a blank line at the end */
Index: src/mailmsg1.c
***************
*** 24,27
int
! send(given_to, given_subject, edit_message, form_letter)
! char *given_to, *given_subject;
int edit_message, form_letter;
--- 24,27 -----
int
! send(given_to, given_cc, given_subject, edit_message, form_letter)
! char *given_to, *given_cc, *given_subject;
int edit_message, form_letter;
***************
*** 46,47
strcpy(to, given_to); /* copy given to: */
--- 46,48 -----
strcpy(to, given_to); /* copy given to: */
+ strcpy(cc, given_cc); /* and so on.. */
***************
*** 71,73
! dprint1(3,"\nMailing to %s\n", expanded_to);
--- 72,74 -----
! dprint(3, (debugfile, "\nMailing to %s\n", expanded_to));
***************
*** 76,78
! dprint1(4,"Subject is %s\n", subject);
--- 77,79 -----
! dprint(4, (debugfile, "Subject is %s\n", subject));
***************
*** 82,84
if (strlen(cc) > 0)
! dprint1(4,"Copies to %s\n", expanded_cc);
--- 83,85 -----
if (strlen(cc) > 0)
! dprint(4, (debugfile, "Copies to %s\n", expanded_cc));
***************
*** 220,223
if (strlen(address) + strlen(addressII) > VERY_LONG_STRING) {
! dprint0(2,
! "String length of \"To:\" + \"Cc\" too long! (get_copies)\n");
error("Too many people. Copies ignored");
--- 221,224 -----
if (strlen(address) + strlen(addressII) > VERY_LONG_STRING) {
! dprint(2, (debugfile,
! "String length of \"To:\" + \"Cc\" too long! (get_copies)\n"));
error("Too many people. Copies ignored");
Index: src/connect_to.c
***************
*** 32,34
if ((lsysfile = fopen(Lsys,"r")) == NULL) {
! dprint1(1, "Warning: Can't open L.sys file %s (read_lsys)\n", Lsys);
#endif
--- 32,35 -----
if ((lsysfile = fopen(Lsys,"r")) == NULL) {
! dprint(1, (debugfile,
! "Warning: Can't open L.sys file %s (read_lsys)\n", Lsys));
#endif
***************
*** 49,51
if (previous_record == NULL) {
! dprint1(2, "L.sys\tdirect connection to %s, ", sysname);
loc_on_line = 30 + strlen(sysname);
--- 50,53 -----
if (previous_record == NULL) {
! dprint(2, (debugfile,
! "L.sys\tdirect connection to %s, ", sysname));
loc_on_line = 30 + strlen(sysname);
***************
*** 59,61
if (loc_on_line + strlen(sysname) > 80) {
! dprint0(2, "\n\t");
loc_on_line = 8;
--- 61,63 -----
if (loc_on_line + strlen(sysname) > 80) {
! dprint(2, (debugfile, "\n\t"));
loc_on_line = 8;
***************
*** 62,64
}
! dprint1(2, "%s, ", sysname);
loc_on_line += (strlen(sysname) + 2);
--- 64,66 -----
}
! dprint(2, (debugfile, "%s, ", sysname));
loc_on_line += (strlen(sysname) + 2);
***************
*** 76,78
if (loc_on_line != 8)
! dprint0(2, "\n");
--- 78,80 -----
if (loc_on_line != 8)
! dprint(2, (debugfile, "\n"));
***************
*** 78,80
! dprint0(2, "\n"); /* for a nice format! Yeah! */
#endif
--- 80,82 -----
! dprint(2, (debugfile, "\n")); /* for an even nicer format... */
#endif
***************
*** 99,101
if (system_call(buffer, SH) != 0) {
! dprint0(1, "Can't get uuname info - system call failed!\n");
unlink(filename); /* insurance */
--- 101,103 -----
if (system_call(buffer, SH) != 0) {
! dprint(1, (debugfile, "Can't get uuname info - system() failed!\n"));
unlink(filename); /* insurance */
***************
*** 105,108
if ((fd = fopen(filename, "r")) == NULL) {
! dprint1(1, "Can't get uuname info - can't open file %s for reading\n",
! filename);
unlink(filename); /* insurance */
--- 107,111 -----
if ((fd = fopen(filename, "r")) == NULL) {
! dprint(1, (debugfile,
! "Can't get uuname info - can't open file %s for reading\n",
! filename));
unlink(filename); /* insurance */
***************
*** 116,118
if (previous_record == NULL) {
! dprint1(2, "uuname\tdirect connection to %s, ", buffer);
loc_on_line = 30 + strlen(buffer);
--- 119,121 -----
if (previous_record == NULL) {
! dprint(2, (debugfile, "uuname\tdirect connection to %s, ", buffer));
loc_on_line = 30 + strlen(buffer);
***************
*** 126,128
if (loc_on_line + strlen(buffer) > 80) {
! dprint0(2, "\n\t");
loc_on_line = 8;
--- 129,131 -----
if (loc_on_line + strlen(buffer) > 80) {
! dprint(2, (debugfile, "\n\t"));
loc_on_line = 8;
***************
*** 129,131
}
! dprint1(2, "%s, ", buffer);
loc_on_line += (strlen(buffer) + 2);
--- 132,134 -----
}
! dprint(2, (debugfile, "%s, ", buffer));
loc_on_line += (strlen(buffer) + 2);
***************
*** 144,146
! dprint0(2, "\n"); /* for a nice format! Yeah! */
--- 147,149 -----
! dprint(2, (debugfile, "\n")); /* for a nice format! Yeah! */
Index: src/remail.c
***************
*** 39,43
if ((mailfd = fopen(filename, "w")) == NULL) {
! dprint1(1,"couldn't open temp file %s! (remail)\n", filename);
! dprint2(1,"** %s - %s **\n", error_name(errno),
! error_description(errno));
sprintf(buffer, "Sorry - couldn't open file %s for writing (%s)",
--- 39,44 -----
if ((mailfd = fopen(filename, "w")) == NULL) {
! dprint(1, (debugfile, "couldn't open temp file %s! (remail)\n",
! filename));
! dprint(1, (debugfile, "** %s - %s **\n", error_name(errno),
! error_description(errno)));
sprintf(buffer, "Sorry - couldn't open file %s for writing (%s)",
***************
*** 72,74
! sprintf(buffer, "%s %s < %s", mailer, expanded, filename);
--- 73,75 -----
! sprintf(buffer, "%s %s < %s", mailer, strip_parens(expanded), filename);
Index: src/signals.c
***************
*** 16,18
{
! dprint0(2,"\n\n** Received SIGQUIT **\n\n\n\n");
leave();
--- 16,18 -----
{
! dprint(2, (debugfile, "\n\n** Received SIGQUIT **\n\n\n\n"));
leave();
***************
*** 22,24
{
! dprint0(2,"\n\n** Received SIGTERM **\n\n\n\n");
leave();
--- 22,24 -----
{
! dprint(2, (debugfile, "\n\n** Received SIGTERM **\n\n\n\n"));
leave();
***************
*** 28,30
{
! dprint0(1,"\n\n** Received SIGILL **\n\n\n\n");
PutLine0(LINES, 0, "\n\nIllegal Instruction signal!\n\n");
--- 28,30 -----
{
! dprint(1, (debugfile, "\n\n** Received SIGILL **\n\n\n\n"));
PutLine0(LINES, 0, "\n\nIllegal Instruction signal!\n\n");
***************
*** 35,37
{
! dprint0(1,"\n\n** Received SIGFPE **\n\n\n\n");
PutLine0(LINES, 0,"\n\nFloating Point Exception signal!\n\n");
--- 35,37 -----
{
! dprint(1, (debugfile, "\n\n** Received SIGFPE **\n\n\n\n"));
PutLine0(LINES, 0,"\n\nFloating Point Exception signal!\n\n");
***************
*** 42,44
{
! dprint0(1,"\n\n** Received SIGBUS **\n\n\n\n");
PutLine0(LINES, 0,"\n\nBus Error signal!\n\n");
--- 42,44 -----
{
! dprint(1, (debugfile, "\n\n** Received SIGBUS **\n\n\n\n"));
PutLine0(LINES, 0,"\n\nBus Error signal!\n\n");
***************
*** 49,51
{
! dprint0(1,"\n\n** Received SIGSEGV **\n\n\n\n");
PutLine0(LINES, 0,"\n\nSegment Violation signal!\n\n");
--- 49,51 -----
{
! dprint(1, (debugfile,"\n\n** Received SIGSEGV **\n\n\n\n"));
PutLine0(LINES, 0,"\n\nSegment Violation signal!\n\n");
***************
*** 69,71
! dprint0(2,"*** received SIGPIPE ***\n\n");
--- 69,71 -----
! dprint(2, (debugfile, "*** received SIGPIPE ***\n\n"));
***************
*** 75,75
}
--- 75,112 -----
}
+
+ #ifdef BSD
+ int was_in_raw_state;
+
+ sig_user_stop()
+ {
+ /* This is called when the user presses a ^Z to stop the
+ process within BSD
+ */
+ int sig_user_stop;
+
+ was_in_raw_state = RawState();
+
+ Raw(OFF); /* turn it off regardless */
+
+ printf("\n\nStopped. Use \"fg\" to return to Elm\n\n");
+
+ signal(SIGTSTP, sig_user_stop);
+
+ kill(getpid(), SIGSTOP);
+ }
+
+ sig_return_from_user_stop()
+ {
+ /** this is called when returning from a ^Z stop **/
+
+ int sig_return_from_user_stop();
+
+ printf(
+ "\nBack in Elm. (you might need to explicitly request a redraw)\n\n");
+
+ if (was_in_raw_state)
+ Raw(ON);
+
+ signal(SIGCONT, sig_return_from_user_stop);
+ }
+ #endif
Index: src/edit.c
***************
*** 85,88
if ((temp_mailbox = fopen(filename, "a")) == NULL) {
! dprint2(1, "Attempt to open %s to append failed! (%s)\n",
! filename, "edit_mailbox");
set_error("Couldn't reopen tempfile. Edit LOST!");
--- 85,89 -----
if ((temp_mailbox = fopen(filename, "a")) == NULL) {
! dprint(1, (debugfile,
! "Attempt to open \"%s\" to append failed in %s\n",
! filename, "edit_mailbox"));
set_error("Couldn't reopen tempfile. Edit LOST!");
***************
*** 95,99
if ((real_mailbox = fopen(infile, "r")) == NULL) {
! dprint2(1,
! "Attempt to open %s for reading new mail failed! (%s)\n",
! infile, "edit_mailbox");
sprintf(buffer, "Couldn't open %s for reading! Edit LOST!",
--- 96,100 -----
if ((real_mailbox = fopen(infile, "r")) == NULL) {
! dprint(1, (debugfile,
! "Attempt to open \"%s\" for reading new mail failed in %s\n",
! infile, "edit_mailbox"));
sprintf(buffer, "Couldn't open %s for reading! Edit LOST!",
***************
*** 105,108
if (fseek(real_mailbox, mailfile_size, 0) != 0) {
! dprint2(1, "Couldn't seek to end of infile (offset %ld) (%s)\n",
! mailfile_size, "edit_mailbox");
set_error("Couldn't seek to end of mailbox. Edit LOST!");
--- 106,110 -----
if (fseek(real_mailbox, mailfile_size, 0) != 0) {
! dprint(1, (debugfile,
! "Couldn't seek to end of infile (offset %ld) (%s)\n",
! mailfile_size, "edit_mailbox"));
set_error("Couldn't seek to end of mailbox. Edit LOST!");
Index: src/sort.c
***************
*** 24,26
! dprint1(2,"\n** sorting mailbox by %s **\n\n", sort_name(FULL));
--- 24,27 -----
! dprint(2, (debugfile, "\n** sorting mailbox by %s **\n\n",
! sort_name(FULL)));
***************
*** 73,74
case SUBJECT : /* need some extra work 'cause of STATIC buffers */
--- 74,78 -----
+ case MAILBOX_ORDER : return( sign*
+ (first->index_number - second->index_number));
+
case SUBJECT : /* need some extra work 'cause of STATIC buffers */
***************
*** 103,105
abr? "Reverse-Received":
! "Reverse Date Mail Rec'vd");
case SENDER : return(
--- 107,115 -----
abr? "Reverse-Received":
! "Reverse Date Mail Rec'vd" );
!
! case MAILBOX_ORDER: return(
! pad? "Reverse Mailbox Order " :
! abr? "Reverse-Mailbox":
! "Reverse Mailbox Order");
!
case SENDER : return(
***************
*** 130,132
abr? "Received" :
! "Date Mail Rec'vd");
case SENDER : return(
--- 140,146 -----
abr? "Received" :
! "Date Mail Sent");
! case MAILBOX_ORDER: return(
! pad? "Mailbox Order " :
! abr? "Mailbox" :
! "Mailbox Order");
case SENDER : return(
***************
*** 162,164
! dprint1(2,"find-old-current(%d)\n", index);
--- 176,178 -----
! dprint(4, (debugfile, "find-old-current(%d)\n", index));
***************
*** 167,169
current = i+1;
! dprint1(2,"\tset current to %d!\n", current);
return;
--- 181,183 -----
current = i+1;
! dprint(4, (debugfile, "\tset current to %d!\n", current));
return;
***************
*** 171,174
! dprint1(2,"\tcouldn't find current index. Current left as %d\n",
! current);
return; /* can't be found. Leave it alone, then */
--- 185,189 -----
! dprint(4, (debugfile,
! "\tcouldn't find current index. Current left as %d\n",
! current));
return; /* can't be found. Leave it alone, then */
Index: src/showmsg_cmd.c
***************
*** 12,14
d = mark message for deletion
- e = edit entire mailbox
f = forward message
--- 12,13 -----
d = mark message for deletion
f = forward message
***************
*** 15,16
g = group reply
j,n = move to body of next message
--- 14,17 -----
g = group reply
+ h = redisplay this message from line #1, showing headers
+ i = move back to the index page (simply returns from function)
j,n = move to body of next message
***************
*** 17,18
k = move to body of previous message
p = print this (all tagged) message
--- 18,20 -----
k = move to body of previous message
+ m = mail a message out to someone
p = print this (all tagged) message
***************
*** 21,23
t = tag this message
! x = Exit Elm NOW
--- 23,26 -----
t = tag this message
! u = undelete message
! x = Exit Elm NOW
***************
*** 23,26
! all commands not explicitly listed here are returned as unprocessed
! to be dealt with at the main command level.
--- 26,29 -----
! all commands not explicitly listed here are beeped at. Use I)ndex
! to get back to the main index page, please.
***************
*** 26,29
! This function returns 0 if it dealt with the command, or the command
! otherwise.
**/
--- 29,32 -----
! This function returns when it is ready to go back to the index
! page.
**/
***************
*** 32,35
! process_showmsg_command(command)
! char command;
{
--- 35,41 -----
! int screen_mangled = 0;
!
! int
! process_showmsg_cmd(command)
! int command;
{
***************
*** 35,43
{
! switch (command) {
! case '|' : clear_bottom_of_screen();
! PutLine0(LINES-3,0,"Command: pipe");
! softkeys_off();
! (void) pipe(); /* do pipe regardless */
! softkeys_on();
! return(0); /* must have new screen */
--- 41,44 -----
{
! int intbuf; /* for dummy parameters...etc */
! char error_line[SLEN]; /* for stat line messsages */
***************
*** 43,50
! case '!' : clear_bottom_of_screen();
! PutLine0(LINES-3,0,"Command: system call");
! softkeys_off();
! (void) subshell(); /* do shell regardless */
! softkeys_on();
! return(0); /* must have new screen */
--- 44,46 -----
! Raw(ON);
***************
*** 50,52
! case '<' :
#ifdef ENABLE_CALENDAR
--- 46,61 -----
! while (TRUE) {
! error_line[0] = '\0';
! switch (command) {
! case '|' : clear_bottom_of_screen();
! PutLine0(LINES-3,0,"Command: pipe");
! (void) do_pipe(); /* do pipe - ignore return val */
! break;
!
! case '!' : clear_bottom_of_screen();
! PutLine0(LINES-3,0,"Command: system call");
! (void) subshell(); /* do shell regardless */
! break;
!
! case '<' :
#ifdef ENABLE_CALENDAR
***************
*** 52,54
#ifdef ENABLE_CALENDAR
! scan_calendar();
#else
--- 61,63 -----
#ifdef ENABLE_CALENDAR
! scan_calendar();
#else
***************
*** 54,56
#else
! error("can't scan for calendar entries!");
#endif
--- 63,65 -----
#else
! strcpy(,error_line, "can't scan for calendar entries!");
#endif
***************
*** 56,58
#endif
! break;
--- 65,67 -----
#endif
! break;
***************
*** 58,63
! case 'b' : clear_bottom_of_screen();
! PutLine0(LINES-3,0,"Command: bounce message");
! remail();
! return(0); /* must have new screen */
--- 67,85 -----
! case 'b' : clear_bottom_of_screen();
! PutLine0(LINES-3,0,"Command: bounce message");
! remail();
! break;
!
! case 'd' : delete_msg(TRUE, FALSE); /* really delete it, silent */
! if (! resolve_mode) {
! if (screen_mangled)
! strcpy(error_line,"message marked for deletion");
! else {
! ClearLine(LINES-1);
! PutLine0(LINES-1, 0,
! "Message marked for deletion. Command ? ");
! CleartoEOLN();
! }
! } else goto move_to_next_message;
! break;
***************
*** 63,66
! case 'd' : delete(TRUE);
! break;
--- 85,90 -----
! case 'f' : clear_bottom_of_screen();
! PutLine0(LINES-3,0,"Command: forward message");
! (void) forward();
! break;
***************
*** 66,69
! case 'e' : edit_mailbox();
! return(0); /* must have new screen */
--- 90,95 -----
! case 'g' : clear_bottom_of_screen();
! PutLine0(LINES-3,0,"Command: group reply");
! (void) reply_to_everyone();
! break;
***************
*** 69,74
! case 'f' : clear_bottom_of_screen();
! PutLine0(LINES-3,0,"Command: forward message");
! (void) forward();
! return(0); /* must have new screen */
--- 95,107 -----
! case 'h' : screen_mangled = 0;
! if (filter) {
! filter = 0;
! intbuf = show_msg(current);
! filter = 1;
! return(intbuf);
! }
! else
! return(show_msg(current));
!
! move_to_next_message : /* a target for resolve mode actions */
***************
*** 74,79
! case 'g' : clear_bottom_of_screen();
! PutLine0(LINES-3,0,"Command: group reply");
! (void) reply_to_everyone();
! return(0); /* must have new screen */
--- 107,115 -----
! case 'j' :
! case 'n' : if (current < message_count) {
! screen_mangled = 0;
! return(show_msg(++current));
! }
! else putchar(007);
! fflush(stdout); break;
***************
*** 79,84
! case 'j' :
! case 'n' : if (current < message_count)
! show_msg(++current);
! return(0);
--- 115,127 -----
! case 'k' : if (current > 0) {
! screen_mangled = 0;
! return(show_msg(--current));
! }
! else putchar(007);
! fflush(stdout); break;
!
! case 'm' : clear_bottom_of_screen();
! PutLine0(LINES-3,0,"Command: Mail message");
! (void) send("","","", TRUE, allow_forms);
! break;
***************
*** 84,88
! case 'k' : if (current > 0)
! show_msg(--current);
! return(0);
--- 127,138 -----
! case 'p' : print_msg();
! if (screen_mangled)
! strcpy(error_line, "queued for printing");
! else {
! ClearLine(LINES-1);
! PutLine0(LINES-1, 0,
! "Queued for printing. Command ? ");
! CleartoEOLN();
! }
! break;
***************
*** 88,89
--- 138,143 -----
+ case 'r' : clear_bottom_of_screen();
+ PutLine0(LINES-3,0,"Command: reply to message");
+ (void) reply();
+ break;
***************
*** 89,92
! case 'p' : printmsg();
! break;
--- 143,149 -----
! case 's' : clear_bottom_of_screen();
! PutLine0(LINES-3,0,"Command: save message");
! (void) save(&intbuf);
! if (resolve_mode) goto move_to_next_message;
! break;
***************
*** 92,97
! case 'r' : clear_bottom_of_screen();
! PutLine0(LINES-3,0,"Command: reply to message");
! (void) reply();
! return(0); /* must have new screen */
--- 149,160 -----
! case 't' : tag_message();
! if (screen_mangled)
! strcpy(error_line, "message tagged");
! else {
! ClearLine(LINES-1);
! PutLine0(LINES-1, 0,
! "Message tagged. Command ? ");
! CleartoEOLN();
! }
! break;
***************
*** 97,102
! case 's' : clear_bottom_of_screen();
! PutLine0(LINES-3,0,"Command: save message");
! (void) save();
! break;
--- 160,175 -----
! case 'u' : undelete_msg(FALSE); /* undelete it, silently */
! if (! resolve_mode) {
! if (screen_mangled)
! strcpy(error_line, "message undeleted");
! else {
! ClearLine(LINES-1);
! PutLine0(LINES-1, 0,
! "Message undeleted. Command ? ");
! CleartoEOLN();
! }
! }
! else
! goto move_to_next_message;
! break;
***************
*** 102,105
! case 't' : tag_message();
! break;
--- 175,177 -----
! case 'x' : fflush(stdout); leave();
***************
*** 105,107
! case 'x' : leave();
--- 177,184 -----
! case 'i' :
! case ' ' :
! case '\n':
! case '\r': (void) get_page(current);
! set_error(""); /* zero out pending msg */
! return(0); /* avoid <return> looping */
***************
*** 107,110
! case '\n':
! case '\r': return(0); /* avoid <return> looping */
--- 184,187 -----
! case ctrl('L') : screen_mangled = 0;
! return(show_msg(current));
***************
*** 110,113
! default : return(command); /* couldn't deal with it! */
! }
--- 187,191 -----
! default : putchar((char) 007); /* BEEP! */
! fflush(stdout);
! }
***************
*** 113,115
! return(1); /* done with it! */
}
--- 191,201 -----
! if (screen_mangled) {
! clear_bottom_of_screen();
! PutLine0(LINES-3, 0, "Request (return to I)ndex page) ? ");
! if (error_line[0] != '\0')
! error(error_line);
! }
!
! command = tolower(ReadCh());
! }
}
***************
*** 120,121
MoveCursor(LINES-4, 0);
--- 206,209 -----
+ screen_mangled = 1;
+
MoveCursor(LINES-4, 0);
***************
*** 122,123
CleartoEOS();
}
--- 210,215 -----
CleartoEOS();
+ PutLine0(LINES-4, 0,
+ "--------------------------------------------------------------------------\n");
+
+ show_last_error();
}
Index: src/options.c
***************
*** 57,59
case 'c' : optionally_enter(calendar_file, 2, 23, FALSE); break;
! case 'd' : optionally_enter(pager, 3, 23, FALSE); break;
case 'e' : optionally_enter(editor, 4, 23, FALSE); break;
--- 57,61 -----
case 'c' : optionally_enter(calendar_file, 2, 23, FALSE); break;
! case 'd' : optionally_enter(pager, 3, 23, FALSE);
! clear_pages = (equal(pager, "builtin+") ||
! equal(pager, "internal+")); break;
case 'e' : optionally_enter(editor, 4, 23, FALSE); break;
***************
*** 180,182
else sign = 1; /* insurance! */
! sortby = sign * ((sortby + 1) % (STATUS+1));
if (sortby == 0) sortby = sign; /* snicker */
--- 182,184 -----
else sign = 1; /* insurance! */
! sortby = sign * ((sortby + 1) % (STATUS+2));
if (sortby == 0) sortby = sign; /* snicker */
***************
*** 227,228
break;
case -SENDER : Centerline(LINES-2,
--- 229,233 -----
break;
+ case -MAILBOX_ORDER : Centerline(LINES-2,
+ "This sort will order most-recently-added-to-mailbox to least-recently");
+ break;
case -SENDER : Centerline(LINES-2,
***************
*** 241,242
break;
case SENDER : Centerline(LINES-2,
--- 246,250 -----
break;
+ case MAILBOX_ORDER : Centerline(LINES-2,
+ "This sort will order least-recently-added-to-mailbox to most-recently");
+ break;
case SENDER : Centerline(LINES-2,
End of Patch Kit #5