taylor@hpldat.UUCP (Dave Taylor) (05/03/87)
This is Elm Patch Kit #2 of 8 and contains patches for: src/delete.c src/aliasdb.c src/file.c src/read_rc.c src/help.c src/initialize.c src/args.c src/forms.c src/showmsg.c src/mkhdrs.c Please feed this directly to the 'patch' program. Index: src/delete.c *************** *** 10,13 ! delete_msg(real_del) ! int real_del; { --- 10,13 ----- ! delete_msg(real_del, update_screen) ! int real_del, update_screen; { *************** *** 24,26 ! show_msg_status(current-1); } --- 24,27 ----- ! if (update_screen) ! show_msg_status(current-1); } *************** *** 27,29 ! undelete_msg() { --- 28,31 ----- ! undelete_msg(update_screen) ! int update_screen; { *************** *** 33,35 ! show_msg_status(current-1); } --- 35,38 ----- ! if (update_screen) ! show_msg_status(current-1); } Index: src/aliasdb.c *************** *** 62,65 if (display_error && name[0] != '!') { ! dprint2(2,"Couldn't expand host %s in address. (%s)\n", ! name, "findnode"); if (! check_only && warnings) { /* be silent if just checking */ --- 62,65 ----- if (display_error && name[0] != '!') { ! dprint(2, (debugfile, "Couldn't expand host %s in address.\n", ! name)); if (! check_only && warnings) { /* be silent if just checking */ *************** *** 161,164 ! dprint3(5,"\nBroke address into '%s' @ '%s' '%s'\n\n", ! name, sitename, comment); --- 161,164 ----- ! dprint(5, (debugfile, "\nBroke address into '%s' @ '%s' '%s'\n\n", ! name, sitename, comment)); *************** *** 282,285 if (stat(pathfile, &buffer) == -1) { ! dprint2(1, "Warning: No pathalias file [filename %s] found! (%s)\n", ! pathfile, "init_findnode"); size_of_pathfd = 0; --- 282,286 ----- if (stat(pathfile, &buffer) == -1) { ! dprint(1, (debugfile, ! "Warning: pathalias file \"%s\" wasn't found by %s\n", ! pathfile, "init_findnode")); size_of_pathfd = 0; *************** *** 293,298 if (dbminit(pathfile) != 0) { ! dprint1(1, "Warning: couldn't initialize DBM database %s\n", ! pathfile); ! dprint2(1, "** %s - %s **\n\n", error_name(errno), ! error_description(errno)); size_of_pathfd = 0; /* error flag, in this case */ --- 294,300 ----- if (dbminit(pathfile) != 0) { ! dprint(1, (debugfile, ! "Warning: couldn't initialize DBM database %s\n", ! pathfile)); ! dprint(1, (debugfile, "** %s - %s **\n\n", error_name(errno), ! error_description(errno))); size_of_pathfd = 0; /* error flag, in this case */ *************** *** 305,308 if ((pathfd = fopen(pathfile,"r")) == NULL) { ! dprint2(1, "Warning: Can't read pathalias file [filename %s] (%s)\n", ! pathfile, "init_findnode"); size_of_pathfd = 0; --- 307,311 ----- if ((pathfd = fopen(pathfile,"r")) == NULL) { ! dprint(1, (debugfile, ! "Warning: Can't read pathalias file \"%s\" within %s\n", ! pathfile, "init_findnode")); size_of_pathfd = 0; *************** *** 310,313 else ! dprint2(2, "\nOpened file '%s' as path alias database. (%s)\n\n", ! pathfile, "init_findnode"); #endif --- 313,316 ----- else ! dprint(2, (debugfile, "\nOpened '%s' as pathalias database.\n\n", ! pathfile)); #endif Index: src/file.c *************** *** 47,50 ! dprint2(4,"%d message%s tagged for saving (save)\n", tagged, ! plural(tagged)); --- 47,50 ----- ! dprint(4, (debugfile, "%d message%s tagged for saving (save)\n", tagged, ! plural(tagged))); *************** *** 90,91 *redraw = TRUE; /* set the flag so we know what to do later */ list_folders(); --- 90,92 ----- *redraw = TRUE; /* set the flag so we know what to do later */ + Raw(OFF); list_folders(); *************** *** 91,92 list_folders(); continue_looping++; --- 92,94 ----- list_folders(); + Raw(ON); continue_looping++; *************** *** 96,99 if (! expand_filename(filename)) { ! dprint1(2,"Error: Failed on expansion of filename %s (save)\n", ! filename); header_table[current-1].status = oldstat; /* BACK! */ --- 98,102 ----- if (! expand_filename(filename)) { ! dprint(2, (debugfile, ! "Error: Failed on expansion of filename %s (save)\n", ! filename)); header_table[current-1].status = oldstat; /* BACK! */ *************** *** 111,114 error1("Wrong permissions to save message to file %s!", filename); ! dprint2(2,"Error: access permission on file %s denied (%s)! (save)\n", ! filename, error_name(errno)); header_table[current-1].status = oldstat; /* BACK! */ --- 114,118 ----- error1("Wrong permissions to save message to file %s!", filename); ! dprint(2, (debugfile, ! "Error: access permission on file %s denied (%s)! (save)\n", ! filename, error_name(errno))); header_table[current-1].status = oldstat; /* BACK! */ *************** *** 117,119 ! dprint1(4,"Saving mail to file '%s'...\n", filename); --- 121,123 ----- ! dprint(4,(debugfile, "Saving mail to file '%s'...\n", filename)); *************** *** 120,123 if ((save_file = fopen(filename,"a")) == NULL) { ! dprint1(2, "Error: couldn't append to specified file %s (save)\n", ! filename); error1("Couldn't append to file %s!", filename); --- 124,128 ----- if ((save_file = fopen(filename,"a")) == NULL) { ! dprint(2, (debugfile, ! "Error: couldn't append to specified file %s (save)\n", ! filename)); error1("Couldn't append to file %s!", filename); *************** *** 155,157 ! dprint1(4, "\tSaving message %d to file...\n", number); --- 160,162 ----- ! dprint(4, (debugfile, "\tSaving message %d to file...\n", number)); *************** *** 207,210 if (strlen(folders) == 0) { ! dprint2(3,"Error: maildir not defined - can't expand '%c' (%s)\n", ! filename[0], "expand_filename"); error1("MAILDIR not defined. Can't expand '%c'", filename[0]); --- 212,216 ----- if (strlen(folders) == 0) { ! dprint(3, (debugfile, ! "Error: maildir not defined - can't expand '%c' (%s)\n", ! filename[0], "expand_filename")); error1("MAILDIR not defined. Can't expand '%c'", filename[0]); *************** *** 227,230 if (strlen(env_value) == 0) { ! dprint2(3,"Error: Can't expand environment variable $%s (%s)\n", ! varname, "expand_filename"); error1("Don't know what the value of $%s is!", varname); --- 233,237 ----- if (strlen(env_value) == 0) { ! dprint(3,(debugfile, ! "Error: Can't expand environment variable $%s (%s)\n", ! varname, "expand_filename")); error1("Don't know what the value of $%s is!", varname); Index: src/read_rc.c *************** *** 18,19 pager = <command to use for displaying messages> --- 18,21 ----- pager = <command to use for displaying messages> + + escape = <single character escape, default = '~' > *************** *** 30,32 ! sortby = <sent, received, from, size, subject> --- 32,34 ----- ! sortby = <sent, received, from, size, subject, mailbox> *************** *** 101,103 if ((file = fopen(filename, "r")) == NULL) { ! dprint0(2,"Warning: User has no \".elmrc\" file (read_rc_file)\n"); return; /* we're done! */ --- 103,106 ----- if ((file = fopen(filename, "r")) == NULL) { ! dprint(2, (debugfile, ! "** Warning: User has no \".elmrc\" file **\n\n")); return; /* we're done! */ *************** *** 122,125 if (word2[0] == 0 && (last != WEEDOUT || last != ALTERNATIVES)) { ! dprint1(2,"Error: Bad .elmrc entry in users file;\n-> \"%s\"\n", ! buffer); fprintf(stderr, --- 125,129 ----- if (word2[0] == 0 && (last != WEEDOUT || last != ALTERNATIVES)) { ! dprint(2, (debugfile, ! "Error: Bad .elmrc entry in users file;\n-> \"%s\"\n", ! buffer)); fprintf(stderr, *************** *** 163,164 sortby = SUBJECT; else if (equal(word2, "reverse-sent") || equal(word2,"rev-sent")) --- 167,170 ----- sortby = SUBJECT; + else if (equal(word2, "mailbox") || equal(word2, "folder")) + sortby = MAILBOX_ORDER; else if (equal(word2, "reverse-sent") || equal(word2,"rev-sent")) *************** *** 177,178 sortby = - SUBJECT; else { --- 183,189 ----- sortby = - SUBJECT; + else if (equal(word2, "reverse-mailbox") || + equal(word2, "rev-mailbox") || + equal(word2, "reverse-folder") || + equal(word2, "rev-folder")) + sortby = - MAILBOX_ORDER; else { *************** *** 208,209 expand_env(pager, word2); last = NOTWEEDOUT; --- 219,225 ----- expand_env(pager, word2); + if (equal(pager,"builtin+") || equal(pager,"internal+")) { + dprint(1,(debugfile, "pager set to %s: clear_pages = ON\n", + pager)); + clear_pages++; + } last = NOTWEEDOUT; *************** *** 216,218 fprintf(stderr, ! "\t(signature should specify the filename to use rather than on/off)\n\r"); } --- 232,234 ----- fprintf(stderr, ! "\t(signature should specify the filename to use rather than on/off)\n\r\n"); } *************** *** 235,236 } else if (equal(word1, "autocopy")) { --- 251,256 ----- } + else if (equal(word1, "escape")) { + escape_char = word2[0]; + last = NOTWEEDOUT; + } else if (equal(word1, "autocopy")) { *************** *** 578,579 fprintf(debugfile, "\n"); fprintf(debugfile, "mini_menu = %s\n", on_off(mini_menu)); --- 598,601 ----- fprintf(debugfile, "\n"); + fprintf(debugfile, "escape = %c\n", escape_char); + fprintf(debugfile, "\n"); fprintf(debugfile, "mini_menu = %s\n", on_off(mini_menu)); *************** *** 603,605 ! fprintf(debugfile, "\n** userlevel = %s **\n\n", user_level); --- 625,627 ----- ! fprintf(debugfile, "\n** userlevel = %d **\n\n", user_level); Index: src/help.c *************** *** 183,184 sprintf(buffer, "%s/%s.%d", helphome, helpfile, section); if ((hfile = fopen(buffer,"r")) == NULL) { --- 183,185 ----- sprintf(buffer, "%s/%s.%d", helphome, helpfile, section); + if ((hfile = fopen(buffer,"r")) == NULL) { *************** *** 184,186 if ((hfile = fopen(buffer,"r")) == NULL) { ! dprint1(1,"Error: Couldn't open helpfile %s (help)\n", buffer); error1("couldn't open helpfile %s",buffer); --- 185,188 ----- if ((hfile = fopen(buffer,"r")) == NULL) { ! dprint(1, (debugfile, ! "Error: Couldn't open helpfile %s (help)\n", buffer)); error1("couldn't open helpfile %s",buffer); Index: src/initialize.c *************** *** 55,57 - userid = getuid(); --- 55,56 ----- userid = getuid(); *************** *** 59,62 ! strcpy(home,((cp = getenv("HOME")) == NULL)? "" : cp); ! strcpy(shell,((cp = getenv("SHELL")) == NULL)? "" : cp); strcpy(pager,((cp = getenv("PAGER")) == NULL)? default_pager : cp); --- 58,61 ----- ! strcpy(home, ((cp = getenv("HOME")) == NULL)? "" : cp); ! strcpy(shell,((cp = getenv("SHELL")) == NULL)? default_shell : cp); strcpy(pager,((cp = getenv("PAGER")) == NULL)? default_pager : cp); *************** *** 63,65 ! if (debug) { /* setup for dprintf statements! */ char newfname[SLEN], filename[SLEN]; --- 62,65 ----- ! #ifdef DEBUG ! if (debug) { /* setup for dprint() statements! */ char newfname[SLEN], filename[SLEN]; *************** *** 66,68 ! sprintf(filename, "%s/%s", home, DEBUG); if (access(filename, ACCESS_EXISTS) == 0) { /* already one! */ --- 66,68 ----- ! sprintf(filename, "%s/%s", home, DEBUGFILE); if (access(filename, ACCESS_EXISTS) == 0) { /* already one! */ *************** *** 70,71 (void) link(filename, newfname); } --- 70,72 ----- (void) link(filename, newfname); + (void) unlink(filename); } *************** *** 88,89 } --- 89,91 ----- } + #endif *************** *** 162,165 if ((errno = can_access(infile, READ_ACCESS))) { ! dprint2(1,"Error: given file %s as mailbox - unreadable (%s)!\n", ! infile, error_name(errno)); fprintf(stderr,"Can't open mailbox '%s' for reading!\n", infile); --- 164,168 ----- if ((errno = can_access(infile, READ_ACCESS))) { ! dprint(1, (debugfile, ! "Error: given file %s as mailbox - unreadable (%s)!\n", ! infile, error_name(errno))); fprintf(stderr,"Can't open mailbox '%s' for reading!\n", infile); *************** *** 229,231 ! if ((header_table = malloc(KLICK*sizeof(struct header_rec))) == NULL) { fprintf(stderr,"\n\r\n\rCouldn't allocate initial headers!\n\r\n"); --- 232,235 ----- ! if ((header_table = (struct header_rec *) malloc(KLICK * ! sizeof(struct header_rec))) == NULL) { fprintf(stderr,"\n\r\n\rCouldn't allocate initial headers!\n\r\n"); *************** *** 246,248 ! dprint0(2,"\n-- end of initialization phase --\n"); --- 250,254 ----- ! #ifdef DEBUG ! if (debug >= 2) { ! fprintf(debugfile,"\n-- end of initialization phase --\n"); *************** *** 248,250 ! dprint3(2,"\thostname = %s\n\tusername = %s\n\tfull_username = \"%s\"\n", hostname, username, full_username); --- 254,257 ----- ! fprintf(debugfile, ! "\thostname = %s\n\tusername = %s\n\tfull_username = \"%s\"\n", hostname, username, full_username); *************** *** 251,253 ! dprint3(2,"\thome = %s\n\teditor = %s\n\tmailbox = %s\n", home, editor, mailbox); --- 258,260 ----- ! fprintf(debugfile,"\thome = %s\n\teditor = %s\n\tmailbox = %s\n", home, editor, mailbox); *************** *** 254,256 ! dprint3(2,"\tinfile = %s\n\tfolder-dir = %s\n\tprintout = \"%s\"\n", infile, folders, printout); --- 261,264 ----- ! fprintf(debugfile, ! "\tinfile = %s\n\tfolder-dir = %s\n\tprintout = \"%s\"\n", infile, folders, printout); *************** *** 257,259 ! dprint3(2,"\tsavefile = %s\n\tprefix = \"%s\"\n\tshell = %s\n", savefile, prefixchars, shell); --- 265,268 ----- ! fprintf(debugfile, ! "\tsavefile = %s\n\tprefix = \"%s\"\n\tshell = %s\n", savefile, prefixchars, shell); *************** *** 260,263 ! if (signature) ! dprint2(2,"\tlocal-signature = %s\n\tremote-signature = %s\n", local_signature, remote_signature); --- 269,273 ----- ! if (signature) ! fprintf(debugfile, ! "\tlocal-signature = %s\n\tremote-signature = %s\n", local_signature, remote_signature); *************** *** 263,264 local_signature, remote_signature); --- 273,275 ----- local_signature, remote_signature); + } *************** *** 264,266 ! dprint0(1,"-- beginning execution phase --\n\n"); } --- 275,278 ----- ! dprint(1, (debugfile, "-- beginning execution phase --\n\n")); ! #endif } *************** *** 283,286 if (ioctl(STANDARD_INPUT, TCGETA, &term_buffer) == -1) { ! dprint1(1,"Error: %s encountered on ioctl call (get_term_chars)\n", ! error_name(errno)); /* set to defaults for terminal driver */ --- 295,299 ----- if (ioctl(STANDARD_INPUT, TCGETA, &term_buffer) == -1) { ! dprint(1, (debugfile, ! "Error: %s encountered on ioctl call (get_term_chars)\n", ! error_name(errno))); /* set to defaults for terminal driver */ Index: src/args.c *************** *** 57,58 if (opt_index < argc) { --- 57,65 ----- + #ifndef DEBUG + if (debug) + printf( + "Warning: system created without debugging enabled - request ignored\n"); + debug = 0; + #endif + if (opt_index < argc) { Index: src/forms.c *************** *** 74,76 ! dprint1(4, "Formatting form file '%s'\n", filename); --- 74,76 ----- ! dprint(4, (debugfile, "Formatting form file '%s'\n", filename)); *************** *** 80,82 error("Can't read the message to validate the form!"); ! dprint2(1, "** Error encountered opening file \"%s\" - %s (check_form) **\n", --- 80,82 ----- error("Can't read the message to validate the form!"); ! dprint(1, (debugfile, "** Error encountered opening file \"%s\" - %s (check_form) **\n", *************** *** 82,84 "** Error encountered opening file \"%s\" - %s (check_form) **\n", ! filename, error_name(errno)); return(-1); --- 82,84 ----- "** Error encountered opening file \"%s\" - %s (check_form) **\n", ! filename, error_name(errno))); return(-1); *************** *** 90,92 error("Couldn't open newform file for form output!"); ! dprint2(1, "** Error encountered opening file \"%s\" - %s (check_form) **\n", --- 90,92 ----- error("Couldn't open newform file for form output!"); ! dprint(1, (debugfile, "** Error encountered opening file \"%s\" - %s (check_form) **\n", *************** *** 92,94 "** Error encountered opening file \"%s\" - %s (check_form) **\n", ! newfname, error_name(errno)); return(-1); --- 92,94 ----- "** Error encountered opening file \"%s\" - %s (check_form) **\n", ! newfname, error_name(errno))); return(-1); *************** *** 147,150 ! dprint2(4, "replying to form with;\n\taddress=%s and\n\t subject=%s\n", ! address, subject); --- 147,151 ----- ! dprint(4, (debugfile, ! "replying to form with;\n\taddress=%s and\n\t subject=%s\n", ! address, subject)); *************** *** 151,153 if (fseek(mailfile, header_table[current-1].offset, 0) == -1) { ! dprint3(1,"Error: seek %ld resulted in errno %s (%s)\n", header_table[current-1].offset, error_name(errno), --- 152,155 ----- if (fseek(mailfile, header_table[current-1].offset, 0) == -1) { ! dprint(1, (debugfile, ! "Error: seek %ld resulted in errno %s (%s)\n", header_table[current-1].offset, error_name(errno), *************** *** 153,155 header_table[current-1].offset, error_name(errno), ! "mail_filled_in_form"); error2("ELM [seek] couldn't read %d bytes into file (%s)", --- 155,157 ----- header_table[current-1].offset, error_name(errno), ! "mail_filled_in_form")); error2("ELM [seek] couldn't read %d bytes into file (%s)", *************** *** 175,177 ! dprint0(6,"- past header of form message -\n"); --- 177,179 ----- ! dprint(6, (debugfile, "- past header of form message -\n")); *************** *** 196,198 ! dprint0(6,"- skipped the non-forms-image stuff -\n"); --- 198,200 ----- ! dprint(6, (debugfile, "- skipped the non-forms-image stuff -\n")); *************** *** 202,204 ! dprint1(2,"-- forms sending using file %s --\n", buffer); --- 204,206 ----- ! dprint(2, (debugfile,"-- forms sending using file %s --\n", buffer)); *************** *** 207,210 error_name(errno)); ! dprint2(1,"** Error %s encountered trying to open temp file %s;\n", ! error_name(errno), buffer); return(0); --- 209,213 ----- error_name(errno)); ! dprint(1, (debugfile, ! "** Error %s encountered trying to open temp file %s;\n", ! error_name(errno), buffer)); return(0); *************** *** 218,220 while ((ptr = fgets(buffer, SLEN, mailfile)) != NULL) { ! dprint1(9,"- read %s", buffer); if (strcmp(buffer, "***\n") == 0) /* end of form! */ --- 221,223 ----- while ((ptr = fgets(buffer, SLEN, mailfile)) != NULL) { ! dprint(9, (debugfile, "- read %s", buffer)); if (strcmp(buffer, "***\n") == 0) /* end of form! */ *************** *** 236,238 else ! prompt_for_entry(buffer, fd); break; --- 239,241 ----- else ! prompt_for_entry(buffer, fd); break; *************** *** 265,267 ! dprint1(7, "prompt-for-entry \"%s\"\n", buffer); --- 268,270 ----- ! dprint(7, (debugfile, "prompt-for-entry \"%s\"\n", buffer)); *************** *** 271,273 ! fprintf(fd, "%s: %s", buffer, mybuffer); } --- 274,276 ----- ! fprintf(fd, "%s: %s\n", buffer, mybuffer); } *************** *** 288,291 ! dprint2(7, "prompt-for-multiple [%d] -entries \"%s\"\n", entries, ! buffer); --- 291,295 ----- ! dprint(7, (debugfile, ! "prompt-for-multiple [%d] -entries \"%s\"\n", entries, ! buffer)); *************** *** 342,345 ! dprint2(7, "prompt-for-sized-entry \"%s\" %d chars\n", ! prompt, field_size); --- 346,349 ----- ! dprint(7, (debugfile, "prompt-for-sized-entry \"%s\" %d chars\n", ! prompt, field_size)); Index: src/showmsg.c *************** *** 37,40 two! ! Returns non-zero iff screen was changed ! ***/ --- 37,43 ----- two! ! Returns non-zero iff the screen was changed, or the ! character pressed at the 'end-of-screen' prompt (to be ! processed via process_showmsg_cmd()). ! ***/ ! register int i; *************** *** 40,42 ! dprint0(8, "show_msg called\n"); --- 43,45 ----- ! dprint(8, (debugfile, "show_msg called\n")); *************** *** 55,57 ! /* some explaination for that last one - We COULD use memory locking to speed up the paging, but the action of "ClearScreen" on a screen --- 58,60 ----- ! /* some explanation for that last one - We COULD use memory locking to speed up the paging, but the action of "ClearScreen" on a screen *************** *** 74,76 for message 'msgnumber' by using 'display' ! Returns non-zero iff screen was altered. ***/ --- 77,80 ----- for message 'msgnumber' by using 'display' ! Returns non-zero iff screen was altered, or the char ! pressed (see previous routine header comment). ***/ *************** *** 76,77 ***/ --- 80,82 ----- ***/ + int retval, builtin; *************** *** 77,79 ! dprint3(9,"show_message(%d,%ld,%d)\n", lines, file_loc, msgnumber); --- 82,85 ----- ! dprint(9, (debugfile, "show_message(%d,%ld,%d)\n", ! lines, file_loc, msgnumber)); *************** *** 80,83 if (fseek(mailfile, file_loc, 0) != 0) { ! dprint2(1,"Error: seek %d bytes into file, errno %s (show_message)\n", ! file_loc, error_name(errno)); error2("ELM failed seeking %d bytes into file (%s)", --- 86,90 ----- if (fseek(mailfile, file_loc, 0) != 0) { ! dprint(1, (debugfile, ! "Error: seek %d bytes into file, errno %s (show_message)\n", ! file_loc, error_name(errno))); error2("ELM failed seeking %d bytes into file (%s)", *************** *** 88,90 if (feof(mailfile)) ! dprint0(1,"\n*** seek put us at END OF FILE!!! ***\n"); --- 95,97 ----- if (feof(mailfile)) ! dprint(1, (debugfile, "\n*** seek put us at END OF FILE!!! ***\n")); *************** *** 90,91 /* next read will get 'this' line so must be at end of previous */ --- 97,99 ----- + /* next read will get 'this' line so must be at end of previous */ *************** *** 93,98 Raw(OFF); ! if (strcmp(pager,"builtin") == 0 || strcmp(pager,"internal") == 0) ! display(lines, msgnumber); ! else ! secure_display(lines, msgnumber); Raw(ON); --- 101,107 ----- Raw(OFF); ! if (first_word(pager,"builtin") || first_word(pager,"internal")) ! retval = display(lines, msgnumber); ! else ! retval = secure_display(lines, msgnumber); ! Raw(ON); *************** *** 100,102 ! return(1); /* we did it boss! */ } --- 109,111 ----- ! return(retval == 0? 1 : retval); /* we did it boss! */ } *************** *** 119,121 ! char from_buffer[LONG_STRING], buffer[VERY_LONG_STRING], *full_month(); --- 128,131 ----- ! char title1[SLEN], title2[SLEN], *full_month(), *p; ! char from_buffer[LONG_STRING], buffer[VERY_LONG_STRING]; *************** *** 127,129 form_letter_section = 0, /* section */ ! builtin = FALSE; /* our pager? */ --- 137,141 ----- form_letter_section = 0, /* section */ ! padding = 0, /* counter */ ! builtin = FALSE, /* our pager? */ ! val = 0; /* return val */ *************** *** 129,132 ! dprint3(4,"displaying %d lines from message %d using %s\n", ! lines, msgnum, pager); --- 141,144 ----- ! dprint(4, (debugfile,"displaying %d lines from message %d using %s\n", ! lines, msgnum, pager)); *************** *** 138,141 ! builtin = (strcmp(pager, "builtin") == 0 || ! strcmp(pager,"internal") == 0); --- 150,152 ----- ! builtin =(first_word(pager,"builtin") || first_word(pager,"internal")); *************** *** 146,148 ! if (builtin) start_builtin(lines); --- 157,159 ----- ! if (builtin) start_builtin(lines); *************** *** 152,155 error_name(errno)); ! dprint2(1,"\n*** Can't create pipe to %s - error %s ***\n\n", ! pager, error_name(errno)); return(0); --- 163,167 ----- error_name(errno)); ! dprint(1, (debugfile, ! "\n*** Can't create pipe to %s - error %s ***\n\n", ! pager, error_name(errno))); return(0); *************** *** 156,158 } ! dprint1(4,"Opened a write-only pipe to routine %s \n", pager); } --- 168,171 ----- } ! dprint(4, (debugfile, ! "Opened a write-only pipe to pager %s \n", pager)); } *************** *** 159,161 ! if (title_messages) { --- 172,174 ----- ! if (title_messages && filter) { *************** *** 165,168 ! sprintf(buffer, "\r%s #%d %s %s%s\t %s %s %s, %d at %s%s\n\r", ! form_letter? "Form": "Message", msgnum, mail_sent? "to" : "from", from_buffer, --- 178,182 ----- ! sprintf(title1, "%s #%d %s %s%s", ! header_table[msgnum-1].status & DELETED ? "[deleted]" : ! form_letter? "Form": "Message", msgnum, mail_sent? "to" : "from", from_buffer, *************** *** 168,172 msgnum, mail_sent? "to" : "from", from_buffer, ! (strlen(from_buffer) > 24? "\n\r": ! (strlen(from_buffer) > 16 ? "" : "\t")), ! "Mailed", full_month(header_table[msgnum-1].month), --- 182,186 ----- msgnum, mail_sent? "to" : "from", from_buffer, ! strlen(from_buffer) > 24? "\n": ""); ! ! sprintf(title2, "Mailed %s %s, %d at %s%s\n", full_month(header_table[msgnum-1].month), *************** *** 174,177 atoi(header_table[msgnum-1].year) + 1900, ! header_table[msgnum-1].time, ! filter? "": "\n\r\n\r"); --- 188,190 ----- atoi(header_table[msgnum-1].year) + 1900, ! header_table[msgnum-1].time); *************** *** 177,178 if (builtin) --- 190,210 ----- + /** and now let's add some spaces between the two parts, please **/ + + if (strlen(from_buffer) > 24) { + if (builtin) + display_line(title1); + else + fprintf(output_pipe, "%s", title1); + title1[0] = '\0'; + padding = COLUMNS - strlen(title2) - 1; + } + else + padding = COLUMNS - strlen(title1) - strlen(title2) - 1; + + p = title1 + strlen(title1); + while (padding-- > 0) + *p++ = ' '; + *p = '\0'; + strcat(title1, title2); + if (builtin) *************** *** 178,179 if (builtin) display_line(buffer); --- 210,231 ----- if (builtin) + display_line(title1); + else + fprintf(output_pipe, "%s", title1); + + /** if there's a subject, let's next output it, centered. **/ + + if (strlen(header_table[current-1].subject) > 0 && + matches_weedlist("Subject:")) { + padding = (COLUMNS - strlen(header_table[current-1].subject)) / 2; + p = buffer; + while (padding-- > 0) + *p++ = ' '; + *p = '\0'; + strcat(buffer, header_table[current-1].subject); + strcat(buffer, "\n"); + } + else + strcpy(buffer, "\n"); + + if (builtin) display_line(buffer); *************** *** 181,182 fprintf(output_pipe, "%s", buffer); --- 233,236 ----- fprintf(output_pipe, "%s", buffer); + + /** was this message address to us? if not, then to whom? **/ *************** *** 185,187 strlen(header_table[current-1].to) > 0) { ! sprintf(buffer, "\n\r(message addressed to %s)\n\r", header_table[current-1].to); --- 239,242 ----- strlen(header_table[current-1].to) > 0) { ! sprintf(buffer, "%s(message addressed to %s)\n", ! strlen(header_table[current-1].subject) > 0 ? "\n" : "", header_table[current-1].to); *************** *** 202,204 "(message addressed to )" which will just clutter up the ! display!). --- 257,259 ----- "(message addressed to )" which will just clutter up the ! screen!). *************** *** 206,207 **/ } --- 261,268 ----- **/ + + if (builtin) /* this is for a one-line blank */ + display_line("\n"); /* separator between the title */ + else /* stuff and the actual message */ + fprintf(output_pipe, "\n"); /* we're trying to display */ + } *************** *** 217,221 ! dprint0(1, ! "\n\n** Out of Sync!! EOF with nothing read (display) **\n"); ! dprint0(1,"** closing and reopening mailfile... **\n\n"); --- 278,283 ----- ! dprint(1, (debugfile, ! "\n\n** Out of Sync!! EOF with nothing read (display) **\n")); ! dprint(1, (debugfile, ! "** closing and reopening mailfile... **\n\n")); *************** *** 238,243 if (lines == 0 && pipe_abort == FALSE) { /* displayed it all */ ! if (!builtin) ! PutLine0(LINES,0,"\rPress <return> to return to Elm: "); ! else ! printf("\n\r\n\rPress <return> to return to Elm: "); fflush(stdout); --- 300,302 ----- if (lines == 0 && pipe_abort == FALSE) { /* displayed it all */ ! PutLine0(LINES-1,0,"Press any key to return to Elm: "); fflush(stdout); *************** *** 244,246 Raw(ON); ! (void) ReadCh(); Raw(OFF); --- 303,305 ----- Raw(ON); ! val = tolower(ReadCh()); Raw(OFF); *************** *** 247,249 } ! return(TRUE); } --- 306,308 ----- } ! return(val); } *************** *** 272,274 encode(buffer); ! show_line(buffer, builtin); } --- 331,333 ----- encode(buffer); ! val = show_line(buffer, builtin); } *************** *** 275,277 else ! show_line(buffer, builtin); } --- 334,336 ----- else ! val = show_line(buffer, builtin); } *************** *** 280,282 encode(buffer); ! show_line(buffer, builtin); } --- 339,341 ----- encode(buffer); ! val = show_line(buffer, builtin); } *************** *** 285,287 if (! weeding_out) /* just turned on! */ ! show_line(buffer, builtin); } --- 344,346 ----- if (! weeding_out) /* just turned on! */ ! val = show_line(buffer, builtin); } *************** *** 290,292 "\n------------------------------------------------------------------------------\n"); ! show_line(buffer, builtin); /* hide '***' */ form_letter_section++; --- 349,351 ----- "\n------------------------------------------------------------------------------\n"); ! val = show_line(buffer, builtin); /* hide '***' */ form_letter_section++; *************** *** 296,298 else ! show_line(buffer, builtin); } --- 355,363 ----- else ! val = show_line(buffer, builtin); ! ! if (val != 0) { /* let's get back to the top level ... */ ! if (! builtin) pclose(output_pipe); ! return(val); ! } ! } *************** *** 304,309 if (lines == 0 && pipe_abort == FALSE) { /* displayed it all! */ ! if (! builtin) ! PutLine0(LINES,0,"\rPress <return> to return to Elm: "); ! else ! printf("\n\r\n\rPress <return> to return to Elm: "); fflush(stdout); --- 369,371 ----- if (lines == 0 && pipe_abort == FALSE) { /* displayed it all! */ ! PutLine0(LINES-1,0,"Press any key to return to Elm : "); fflush(stdout); *************** *** 310,312 Raw(ON); ! (void) ReadCh(); Raw(OFF); --- 372,374 ----- Raw(ON); ! val = tolower(ReadCh()); Raw(OFF); *************** *** 313,315 } ! return(TRUE); } --- 375,378 ----- } ! ! return(val); } *************** *** 316,317 show_line(buffer, builtin) --- 379,381 ----- + int show_line(buffer, builtin) *************** *** 321,323 /** Hands the given line to the output pipe. 'builtin' is true if ! we're using the builtin pager. **/ --- 385,391 ----- /** Hands the given line to the output pipe. 'builtin' is true if ! we're using the builtin pager. We will return 'val' as the ! intermediate value from the builtin pager if the user chooses ! to do something else at the end-of-page prompt! **/ ! ! register int val; *************** *** 324,327 if (builtin) { ! strcat(buffer, "\n\r"); ! pipe_abort = display_line(buffer); } --- 392,400 ----- if (builtin) { ! strcat(buffer, "\n"); ! if ((val = display_line(buffer)) > 1) { ! return(val); ! } ! else ! pipe_abort = val; ! } *************** *** 332,334 if (errno != 0) ! dprint1(1,"\terror %s hit!\n", error_name(errno)); } --- 405,407 ----- if (errno != 0) ! dprint(1, (debugfile, "\terror %s hit!\n", error_name(errno))); } *************** *** 334,335 } } --- 407,410 ----- } + + return(0); } *************** *** 359,360 #else if ((pid = vfork()) == 0) { --- 434,438 ----- #else + # ifdef hp9000s500 /* done this way for portability */ + if ((pid = fork()) == 0) { + # else if ((pid = vfork()) == 0) { *************** *** 360,361 if ((pid = vfork()) == 0) { #endif --- 438,440 ----- if ((pid = vfork()) == 0) { + # endif #endif *************** *** 377,383 ! #ifdef BSD ! return(status.w_retcode); ! #else ! return(status); ! #endif } --- 456,460 ----- ! /** used to return status, but who cares? Just get BACK! **/ ! ! return(0); } Index: src/mkhdrs.c *************** *** 55,58 if (strlen(buffer) < 2) { ! dprint0(2, ! "Strlen of line from .elmheaders is < 2 (write_header_info)"); if (mail_only) --- 55,58 ----- if (strlen(buffer) < 2) { ! dprint(2, (debugfile, ! "Strlen of line from .elmheaders is < 2 (write_header_info)")); if (mail_only) End of Patch Kit #2