diff options
author | Erich Eckner <git@eckner.net> | 2024-09-18 19:52:36 +0200 |
---|---|---|
committer | Erich Eckner <git@eckner.net> | 2024-09-18 20:04:33 +0200 |
commit | 01aef74dd7100580b1dd2444f6f41a7beb6b4cf5 (patch) | |
tree | a9c3fb5140a9598e5276ebb8beff65f73790d2a5 | |
parent | d3e7350df29996a8928804e38eb8599fdc0efdcd (diff) | |
download | crux-ports-01aef74dd7100580b1dd2444f6f41a7beb6b4cf5.tar.xz |
alpine: update and fix race condition
-rw-r--r-- | manualPorts/alpine/.md5sum | 4 | ||||
-rw-r--r-- | manualPorts/alpine/.signature | 8 | ||||
-rw-r--r-- | manualPorts/alpine/Pkgfile | 4 | ||||
-rw-r--r-- | manualPorts/alpine/rules.patch | 311 |
4 files changed, 164 insertions, 163 deletions
diff --git a/manualPorts/alpine/.md5sum b/manualPorts/alpine/.md5sum index 3f37e09..1aa4b95 100644 --- a/manualPorts/alpine/.md5sum +++ b/manualPorts/alpine/.md5sum @@ -1,3 +1,3 @@ -a2db85fa1d32a6082d319126a5550743 15f0c31.tar.gz 539f4fbc914a5cc8faed4d5fe7c50bdb default-pipe.patch -779c295cff0d45ee7a1a64d96d2bcd25 rules.patch +c8c8618e5a9fca4e7bf61f7e0bdd58d5 fb3f153.tar.gz +500a5c4fa4ccd27e409669ef50fecfa6 rules.patch diff --git a/manualPorts/alpine/.signature b/manualPorts/alpine/.signature index 2858821..66b1235 100644 --- a/manualPorts/alpine/.signature +++ b/manualPorts/alpine/.signature @@ -1,7 +1,7 @@ untrusted comment: verify with /etc/ports/deepthought.pub -RWQxCptPusLGGuoh7B6kZKbqjy5iWSTFPZ2fmEi/6juJWhCXHJ88k0PpZROVFgt6nnhQt6He2yXhfUctvX/9cXa13kuZG3j4nAI= -SHA256 (Pkgfile) = fc67c867e7336796539eddde2496300ea58d6580e237a4176246544f3132c0f4 +RWQxCptPusLGGiJqoS3qJPw7GJSPI8ynEp5Imfz+5CBRBhBG1Xml4UFMc0hFa64epdYfuXjXgo11v7M3ojKGoyiAweCuTvmvRwg= +SHA256 (Pkgfile) = bce74bc6a86c3c0e726a190bf8baa6be45921bf5d62e3750886fc71be4915b4b SHA256 (.footprint) = dd67d2fc4470f569897d32b8ecd5d740c59592de8ead67668be423dd89456871 -SHA256 (15f0c31.tar.gz) = 8f63fcbd11af072fbe7f87c84d33929c7d7c7ad42e7b29e80c779e4bd793dd8a +SHA256 (fb3f153.tar.gz) = 35bc45c1b4d22ed1c87d21776adc262009dd3402dffdef9a83f360330e50f83c SHA256 (default-pipe.patch) = 44fa0e8a163a9b968a65c754338076ab9d491f67fe5be70456cef40780fac006 -SHA256 (rules.patch) = 5efd1f5317d73608cf6357e8a046ea683ce5e831fe08b2654dadc39d74f4c3bc +SHA256 (rules.patch) = 0e9e131205a7944a26236cfce4be4c8c2a1c9af0180c34d4f1273060bd9523b1 diff --git a/manualPorts/alpine/Pkgfile b/manualPorts/alpine/Pkgfile index 4a49bec..4ce1ecc 100644 --- a/manualPorts/alpine/Pkgfile +++ b/manualPorts/alpine/Pkgfile @@ -4,7 +4,7 @@ # Depends on: libldap krb5 gettext procmail name=alpine -version=2.26.r17.15f0c31 +version=2.26.r30.fb3f153 _commit=${version##*.} release=1 source=("http://repo.or.cz/alpine.git/snapshot/${_commit}.tar.gz" @@ -22,7 +22,7 @@ build() { --with-passfile=.pine-passfile \ --with-system-pinerc=/etc/${name}.d/pine.conf \ --with-system-fixed-pinerc=/etc/${name}.d/pine.conf.fixed - make + make -j1 make DESTDIR=$PKG install } diff --git a/manualPorts/alpine/rules.patch b/manualPorts/alpine/rules.patch index 336d035..e8805ef 100644 --- a/manualPorts/alpine/rules.patch +++ b/manualPorts/alpine/rules.patch @@ -1,8 +1,8 @@ diff --git a/alpine/adrbkcmd.c b/alpine/adrbkcmd.c -index 94d9077..5c8a02a 100644 +index f36b695..5bd6f33 100644 --- a/alpine/adrbkcmd.c +++ b/alpine/adrbkcmd.c -@@ -4129,6 +4129,8 @@ ab_compose_internal(BuildTo bldto, int allow_role) +@@ -4126,6 +4126,8 @@ ab_compose_internal(BuildTo bldto, int allow_role) * won't do anything, but will cause compose_mail to think there's * already a role so that it won't try to confirm the default. */ @@ -11,7 +11,7 @@ index 94d9077..5c8a02a 100644 if(role) role = copy_action(role); else{ -@@ -4136,6 +4138,7 @@ ab_compose_internal(BuildTo bldto, int allow_role) +@@ -4133,6 +4135,7 @@ ab_compose_internal(BuildTo bldto, int allow_role) memset((void *)role, 0, sizeof(*role)); role->nick = cpystr("Default Role"); } @@ -20,10 +20,10 @@ index 94d9077..5c8a02a 100644 compose_mail(addr, fcc, role, NULL, NULL); diff --git a/alpine/alpine.c b/alpine/alpine.c -index cb75260..b707692 100644 +index 1b96d7b..35381c5 100644 --- a/alpine/alpine.c +++ b/alpine/alpine.c -@@ -506,6 +506,7 @@ main(int argc, char **argv) +@@ -502,6 +502,7 @@ main(int argc, char **argv) /* Set up optional for user-defined display filtering */ pine_state->tools.display_filter = dfilter; pine_state->tools.display_filter_trigger = dfilter_trigger; @@ -31,7 +31,7 @@ index cb75260..b707692 100644 #ifdef _WINDOWS if(ps_global->install_flag){ -@@ -3273,6 +3274,9 @@ goodnight_gracey(struct pine *pine_state, int exit_val) +@@ -3285,6 +3286,9 @@ goodnight_gracey(struct pine *pine_state, int exit_val) extern KBESC_T *kbesc; dprint((2, "goodnight_gracey:\n")); @@ -42,10 +42,10 @@ index cb75260..b707692 100644 /* We want to do this here before we close up the streams */ trim_remote_adrbks(); diff --git a/alpine/confscroll.c b/alpine/confscroll.c -index 50f578f..4c0e47e 100644 +index 1b5fb76..5307a8e 100644 --- a/alpine/confscroll.c +++ b/alpine/confscroll.c -@@ -52,6 +52,7 @@ static char rcsid[] = "$Id: confscroll.c 1169 2008-08-27 06:42:06Z hubert@u.wash +@@ -48,6 +48,7 @@ #include "../pith/tempfile.h" #include "../pith/pattern.h" #include "../pith/charconv/utf8.h" @@ -53,7 +53,7 @@ index 50f578f..4c0e47e 100644 #define CONFIG_SCREEN_HELP_TITLE _("HELP FOR SETUP CONFIGURATION") -@@ -2462,6 +2463,9 @@ delete: +@@ -2460,6 +2461,9 @@ delete: * Now go and set the current_val based on user_val changes * above. Turn off command line settings... */ @@ -63,7 +63,7 @@ index 50f578f..4c0e47e 100644 set_current_val((*cl)->var, TRUE, FALSE); fix_side_effects(ps, (*cl)->var, 0); -@@ -5226,6 +5230,30 @@ fix_side_effects(struct pine *ps, struct variable *var, int revert) +@@ -5224,6 +5228,30 @@ fix_side_effects(struct pine *ps, struct variable *var, int revert) var == &ps->vars[V_ABOOK_FORMATS]){ addrbook_reset(); } @@ -95,16 +95,16 @@ index 50f578f..4c0e47e 100644 reset_index_format(); clear_index_cache(ps->mail_stream, 0); diff --git a/alpine/dispfilt.c b/alpine/dispfilt.c -index ec20825..acf5fbe 100644 +index 58dc03d..4c41575 100644 --- a/alpine/dispfilt.c +++ b/alpine/dispfilt.c -@@ -461,3 +461,63 @@ df_valid_test(struct mail_bodystruct *body, char *test) +@@ -458,3 +458,64 @@ df_valid_test(struct mail_bodystruct *body, char *test) return(passed); } + +char * -+exec_function_rule(char *rawcmd, gf_io_t input_gc, gf_io_t output_pc) ++exec_function_rule(char *rawcmd, gf_i_t input_gc, gf_o_t output_pc) +{ + char *status = NULL, *cmd, *tmpfile = NULL; + @@ -114,7 +114,8 @@ index ec20825..acf5fbe 100644 + if(tmpfile){ + PIPE_S *filter_pipe; + FILE *fp; -+ gf_io_t gc, pc; ++ gf_i_t gc; ++ gf_o_t pc; + STORE_S *tmpf_so; + + /* write the tmp file */ @@ -163,7 +164,7 @@ index ec20825..acf5fbe 100644 + return(status); +} diff --git a/alpine/dispfilt.h b/alpine/dispfilt.h -index b8f37b8..9d7908b 100644 +index 3960751..465b8e9 100644 --- a/alpine/dispfilt.h +++ b/alpine/dispfilt.h @@ -25,7 +25,7 @@ char *dfilter_trigger(BODY *, char *, size_t); @@ -171,15 +172,15 @@ index b8f37b8..9d7908b 100644 char *filter_session_key(void); char *filter_data_file(int); - -+char *exec_function_rule(char *, gf_io_t, gf_io_t); ++char *exec_function_rule(char *, gf_i_t, gf_o_t); #endif /* PINE_DISPFILT_INCLUDED */ diff --git a/alpine/folder.c b/alpine/folder.c -index c39b80a..c82d0ee 100644 +index 48b6e81..43e0b83 100644 --- a/alpine/folder.c +++ b/alpine/folder.c -@@ -248,7 +248,7 @@ folder_screen(struct pine *ps) +@@ -244,7 +244,7 @@ folder_screen(struct pine *ps) dprint((1, "=== folder_screen called ====\n")); mailcap_free(); /* free resources we won't be using for a while */ ps->next_screen = SCREEN_FUN_NULL; @@ -188,7 +189,7 @@ index c39b80a..c82d0ee 100644 /* Initialize folder state and dispatches */ memset(&fs, 0, sizeof(FSTATE_S)); fs.context = cntxt; -@@ -345,6 +345,7 @@ folder_screen(struct pine *ps) +@@ -341,6 +341,7 @@ folder_screen(struct pine *ps) pine_mail_close(*fs.cache_streamp); ps->prev_screen = folder_screen; @@ -197,10 +198,10 @@ index c39b80a..c82d0ee 100644 diff --git a/alpine/mailcmd.c b/alpine/mailcmd.c -index 6285e6e..6fe9019 100644 +index a144b2d..2a827f3 100644 --- a/alpine/mailcmd.c +++ b/alpine/mailcmd.c -@@ -73,6 +73,7 @@ static char rcsid[] = "$Id: mailcmd.c 1266 2009-07-14 18:39:12Z hubert@u.washing +@@ -69,6 +69,7 @@ #include "../pith/tempfile.h" #include "../pith/search.h" #include "../pith/margin.h" @@ -208,7 +209,7 @@ index 6285e6e..6fe9019 100644 #ifdef _WINDOWS #include "../pico/osdep/mswin.h" #endif -@@ -2710,6 +2711,9 @@ role_compose(struct pine *state) +@@ -2719,6 +2720,9 @@ role_compose(struct pine *state) role->nick = cpystr("Default Role"); } @@ -218,7 +219,7 @@ index 6285e6e..6fe9019 100644 state->redrawer = NULL; switch(action){ case 'c': -@@ -2760,12 +2764,12 @@ save_prompt(struct pine *state, CONTEXT_S **cntxt, char *nfldr, size_t len_nfldr +@@ -2769,12 +2773,12 @@ save_prompt(struct pine *state, CONTEXT_S **cntxt, char *nfldr, size_t len_nfldr char *nmsgs, ENVELOPE *env, long int rawmsgno, char *section, SaveDel *dela, SavePreserveOrder *prea) { @@ -233,7 +234,7 @@ index 6285e6e..6fe9019 100644 HelpType help; SaveDel del = DontAsk; SavePreserveOrder pre = DontAskPreserve; -@@ -2773,6 +2777,7 @@ save_prompt(struct pine *state, CONTEXT_S **cntxt, char *nfldr, size_t len_nfldr +@@ -2782,6 +2786,7 @@ save_prompt(struct pine *state, CONTEXT_S **cntxt, char *nfldr, size_t len_nfldr static HISTORY_S *history = NULL; CONTEXT_S *tc; ESCKEY_S ekey[10]; @@ -241,7 +242,7 @@ index 6285e6e..6fe9019 100644 if(!cntxt) alpine_panic("no context ptr in save_prompt"); -@@ -2782,6 +2787,15 @@ save_prompt(struct pine *state, CONTEXT_S **cntxt, char *nfldr, size_t len_nfldr +@@ -2791,6 +2796,15 @@ save_prompt(struct pine *state, CONTEXT_S **cntxt, char *nfldr, size_t len_nfldr if(!(folder = save_get_default(state, env, rawmsgno, section, cntxt))) return(0); /* message expunged! */ @@ -258,10 +259,10 @@ index 6285e6e..6fe9019 100644 for(tc = state->context_list; tc; tc = tc->next) if(!NEWS_TEST(tc)) diff --git a/alpine/mailindx.c b/alpine/mailindx.c -index 1dbb1b4..e9bdd5f 100644 +index 61f6418..d7a5c1a 100644 --- a/alpine/mailindx.c +++ b/alpine/mailindx.c -@@ -229,6 +229,8 @@ mail_index_screen(struct pine *state) +@@ -225,6 +225,8 @@ mail_index_screen(struct pine *state) state->prev_screen = mail_index_screen; state->next_screen = SCREEN_FUN_NULL; @@ -270,7 +271,7 @@ index 1dbb1b4..e9bdd5f 100644 if(THRD_AUTO_VIEW() && sp_viewing_a_thread(state->mail_stream) && state->view_skipped_index -@@ -240,10 +242,14 @@ mail_index_screen(struct pine *state) +@@ -236,10 +238,14 @@ mail_index_screen(struct pine *state) adjust_cur_to_visible(state->mail_stream, state->msgmap); @@ -286,10 +287,10 @@ index 1dbb1b4..e9bdd5f 100644 diff --git a/alpine/mailview.c b/alpine/mailview.c -index 11ca4af..0e19490 100644 +index b4a6c0d..2a7fd46 100644 --- a/alpine/mailview.c +++ b/alpine/mailview.c -@@ -244,6 +244,8 @@ mail_view_screen(struct pine *ps) +@@ -242,6 +242,8 @@ mail_view_screen(struct pine *ps) ps->prev_screen = mail_view_screen; ps->force_prefer_plain = ps->force_no_prefer_plain = 0; @@ -298,7 +299,7 @@ index 11ca4af..0e19490 100644 if(ps->ttyo->screen_rows - HEADER_ROWS(ps) - FOOTER_ROWS(ps) < 1){ q_status_message(SM_ORDER | SM_DING, 0, 3, _("Screen too small to view message")); -@@ -480,6 +482,8 @@ mail_view_screen(struct pine *ps) +@@ -478,6 +480,8 @@ mail_view_screen(struct pine *ps) } while(ps->next_screen == SCREEN_FUN_NULL); @@ -308,10 +309,10 @@ index 11ca4af..0e19490 100644 cancel_busy_cue(-1); diff --git a/alpine/osdep/termin.gen.c b/alpine/osdep/termin.gen.c -index b8d01b1..033ce9a 100644 +index c120758..ec8c6ba 100644 --- a/alpine/osdep/termin.gen.c +++ b/alpine/osdep/termin.gen.c -@@ -33,6 +33,8 @@ static char rcsid[] = "$Id: termin.gen.c 1025 2008-04-08 22:59:38Z hubert@u.wash +@@ -29,6 +29,8 @@ #include "../../pith/newmail.h" #include "../../pith/conf.h" #include "../../pith/busy.h" @@ -320,7 +321,7 @@ index b8d01b1..033ce9a 100644 #include "../../pico/estruct.h" #include "../../pico/pico.h" -@@ -72,7 +74,8 @@ int pcpine_oe_cursor(int, long); +@@ -68,7 +70,8 @@ int pcpine_oe_cursor(int, long); * Generic tty input routines */ @@ -330,7 +331,7 @@ index b8d01b1..033ce9a 100644 /*---------------------------------------------------------------------- Read a character from keyboard with timeout Input: none -@@ -114,6 +117,41 @@ read_command(char **utf8str) +@@ -110,6 +113,41 @@ read_command(char **utf8str) *utf8str = NULL; ucs = read_char(tm); @@ -372,7 +373,7 @@ index b8d01b1..033ce9a 100644 if(ucs != NO_OP_COMMAND && ucs != NO_OP_IDLE && ucs != KEY_RESIZE) zero_new_mail_count(); -@@ -1160,6 +1198,7 @@ process_config_input(UCS *ch) +@@ -1155,6 +1193,7 @@ process_config_input(UCS *ch) if(ps_global->initial_cmds && !*ps_global->initial_cmds && ps_global->free_initial_cmds){ fs_give((void **) &ps_global->free_initial_cmds); ps_global->initial_cmds = NULL; @@ -381,10 +382,10 @@ index b8d01b1..033ce9a 100644 return(ret); diff --git a/alpine/reply.c b/alpine/reply.c -index 42f5131..42aab88 100644 +index bb3a72c..569f802 100644 --- a/alpine/reply.c +++ b/alpine/reply.c -@@ -62,7 +62,8 @@ The evolution continues... +@@ -58,7 +58,8 @@ The evolution continues... #include "../pith/tempfile.h" #include "../pith/busy.h" #include "../pith/ablookup.h" @@ -394,13 +395,13 @@ index 42f5131..42aab88 100644 /* * Internal Prototypes -@@ -109,11 +110,12 @@ reply(struct pine *pine_state, ACTION_S *role_arg) +@@ -105,11 +106,12 @@ reply(struct pine *pine_state, ACTION_S *role_arg) long msgno, j, totalm, rflags, *seq = NULL; int i, include_text = 0, times = -1, warned = 0, rv = 0, flags = RSF_QUERY_REPLY_ALL, reply_raw_body = 0; - int rolemsg = 0, copytomsg = 0; + int rolemsg = 0, copytomsg = 0, do_role_early = 0; - gf_io_t pc; + gf_o_t pc; PAT_STATE dummy; REDRAFT_POS_S *redraft_pos = NULL; ACTION_S *role = NULL, *nrole; @@ -408,7 +409,7 @@ index 42f5131..42aab88 100644 #if defined(DOS) && !defined(_WINDOWS) char *reserve; #endif -@@ -139,6 +141,69 @@ reply(struct pine *pine_state, ACTION_S *role_arg) +@@ -135,6 +137,69 @@ reply(struct pine *pine_state, ACTION_S *role_arg) && F_ON(F_ENABLE_FULL_HDR_AND_TEXT, ps_global)) reply_raw_body = 1; @@ -478,7 +479,7 @@ index 42f5131..42aab88 100644 /* * We may have to loop through first to figure out what default * reply-indent-string to offer... -@@ -287,8 +352,18 @@ reply(struct pine *pine_state, ACTION_S *role_arg) +@@ -283,8 +348,18 @@ reply(struct pine *pine_state, ACTION_S *role_arg) outgoing->subject = cpystr("Re: several messages"); } } @@ -499,7 +500,7 @@ index 42f5131..42aab88 100644 } /* fill reply header */ -@@ -307,13 +382,7 @@ reply(struct pine *pine_state, ACTION_S *role_arg) +@@ -303,13 +378,7 @@ reply(struct pine *pine_state, ACTION_S *role_arg) if(sp_expunge_count(pine_state->mail_stream)) /* cur msg expunged */ goto done_early; @@ -514,7 +515,7 @@ index 42f5131..42aab88 100644 rflags = ROLE_REPLY; if(!ps_global->reply.role_chosen && nonempty_patterns(rflags, &dummy)){ /* setup default role */ -@@ -724,6 +793,9 @@ reply(struct pine *pine_state, ACTION_S *role_arg) +@@ -720,6 +789,9 @@ reply(struct pine *pine_state, ACTION_S *role_arg) if(prefix) fs_give((void **)&prefix); @@ -524,7 +525,7 @@ index 42f5131..42aab88 100644 if(fcc) fs_give((void **) &fcc); -@@ -1594,9 +1666,14 @@ forward(struct pine *ps, ACTION_S *role_arg) +@@ -1591,9 +1663,14 @@ forward(struct pine *ps, ACTION_S *role_arg) } } @@ -540,7 +541,7 @@ index 42f5131..42aab88 100644 outgoing->message_id = generate_message_id(role); -@@ -1830,6 +1907,7 @@ forward(struct pine *ps, ACTION_S *role_arg) +@@ -1827,6 +1904,7 @@ forward(struct pine *ps, ACTION_S *role_arg) #if defined(DOS) && !defined(_WINDOWS) free((void *)reserve); #endif @@ -549,10 +550,10 @@ index 42f5131..42aab88 100644 role, NULL, &reply, redraft_pos, NULL, NULL, 0); diff --git a/alpine/roleconf.c b/alpine/roleconf.c -index 0ee3ec8..378baa8 100644 +index d3cc207..7e1cc77 100644 --- a/alpine/roleconf.c +++ b/alpine/roleconf.c -@@ -7707,6 +7707,11 @@ role_text_tool_inick(struct pine *ps, int cmd, CONF_S **cl, unsigned int flags) +@@ -7702,6 +7702,11 @@ role_text_tool_inick(struct pine *ps, int cmd, CONF_S **cl, unsigned int flags) if(apval) *apval = (role && role->nick) ? cpystr(role->nick) : NULL; @@ -565,10 +566,10 @@ index 0ee3ec8..378baa8 100644 fs_give((void **)&((*cl)->value)); diff --git a/alpine/send.c b/alpine/send.c -index 6209d64..eadc963 100644 +index ad74e38..9f7c515 100644 --- a/alpine/send.c +++ b/alpine/send.c -@@ -63,7 +63,7 @@ static char rcsid[] = "$Id: send.c 1142 2008-08-13 17:22:21Z hubert@u.washington +@@ -59,7 +59,7 @@ #include "../pith/mimetype.h" #include "../pith/send.h" #include "../pith/smime.h" @@ -577,7 +578,7 @@ index 6209d64..eadc963 100644 typedef struct body_particulars { unsigned short type, encoding, had_csp; -@@ -236,6 +236,11 @@ alt_compose_screen(struct pine *pine_state) +@@ -232,6 +232,11 @@ alt_compose_screen(struct pine *pine_state) role->nick = cpystr("Default Role"); } @@ -589,7 +590,7 @@ index 6209d64..eadc963 100644 pine_state->redrawer = NULL; compose_mail(NULL, NULL, role, NULL, NULL); free_action(&role); -@@ -445,8 +450,12 @@ compose_mail(char *given_to, char *fcc_arg, ACTION_S *role_arg, +@@ -441,8 +446,12 @@ compose_mail(char *given_to, char *fcc_arg, ACTION_S *role_arg, ps_global->next_screen = prev_screen; ps_global->redrawer = redraw; @@ -603,7 +604,7 @@ index 6209d64..eadc963 100644 } break; -@@ -639,9 +648,14 @@ compose_mail(char *given_to, char *fcc_arg, ACTION_S *role_arg, +@@ -638,9 +647,14 @@ compose_mail(char *given_to, char *fcc_arg, ACTION_S *role_arg, } } @@ -619,7 +620,7 @@ index 6209d64..eadc963 100644 outgoing->message_id = generate_message_id(role); /* -@@ -2481,6 +2495,26 @@ pine_send(ENVELOPE *outgoing, struct mail_bodystruct **body, +@@ -2480,6 +2494,26 @@ pine_send(ENVELOPE *outgoing, struct mail_bodystruct **body, removing_trailing_white_space(pf->textbuf); (void)removing_double_quotes(pf->textbuf); build_address(pf->textbuf, &addr, NULL, NULL, NULL); @@ -660,10 +661,10 @@ index 748b9ec..ccbc3ed 100644 thread.c adjtime.c url.c util.c helptext.c smkeys.c smime.c diff --git a/pith/Makefile.in b/pith/Makefile.in -index ee87d63..8952f4d 100644 +index e97b5fa..982c363 100644 --- a/pith/Makefile.in +++ b/pith/Makefile.in -@@ -142,7 +142,7 @@ am_libpith_a_OBJECTS = ablookup.$(OBJEXT) abdlc.$(OBJEXT) \ +@@ -143,7 +143,7 @@ am_libpith_a_OBJECTS = ablookup.$(OBJEXT) abdlc.$(OBJEXT) \ mimedesc.$(OBJEXT) mimetype.$(OBJEXT) msgno.$(OBJEXT) \ newmail.$(OBJEXT) news.$(OBJEXT) pattern.$(OBJEXT) \ pipe.$(OBJEXT) readfile.$(OBJEXT) remote.$(OBJEXT) \ @@ -672,7 +673,7 @@ index ee87d63..8952f4d 100644 search.$(OBJEXT) sequence.$(OBJEXT) send.$(OBJEXT) \ sort.$(OBJEXT) state.$(OBJEXT) status.$(OBJEXT) \ store.$(OBJEXT) stream.$(OBJEXT) string.$(OBJEXT) \ -@@ -441,7 +441,7 @@ libpith_a_SOURCES = ablookup.c abdlc.c addrbook.c addrstring.c adrbklib.c bldadd +@@ -450,7 +450,7 @@ libpith_a_SOURCES = ablookup.c abdlc.c addrbook.c addrstring.c adrbklib.c bldadd filter.c flag.c folder.c handle.c help.c helpindx.c hist.c icache.c ical.c imap.c init.c \ keyword.c ldap.c list.c mailcap.c mailcmd.c mailindx.c maillist.c mailview.c \ margin.c mimedesc.c mimetype.c msgno.c newmail.c news.c pattern.c pipe.c \ @@ -681,7 +682,7 @@ index ee87d63..8952f4d 100644 state.c status.c store.c stream.c string.c strlst.c takeaddr.c tempfile.c text.c \ thread.c adjtime.c url.c util.c helptext.c smkeys.c smime.c -@@ -575,6 +575,7 @@ distclean-compile: +@@ -584,6 +584,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/thread.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/url.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/util.Po@am__quote@ @@ -690,10 +691,10 @@ index ee87d63..8952f4d 100644 .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< diff --git a/pith/adrbklib.c b/pith/adrbklib.c -index c743ae8..8c39247 100644 +index 578cb0d..abb2b3e 100644 --- a/pith/adrbklib.c +++ b/pith/adrbklib.c -@@ -5138,8 +5138,14 @@ init_addrbooks(OpenStatus want_status, int reset_to_top, int open_if_only_one, i +@@ -5134,8 +5134,14 @@ init_addrbooks(OpenStatus want_status, int reset_to_top, int open_if_only_one, i if(as.cur >= as.how_many_personals) pab->type |= GLOBAL; @@ -711,10 +712,10 @@ index c743ae8..8c39247 100644 if(pab->type & GLOBAL && pab->access != NoAccess) pab->access = ReadOnly; diff --git a/pith/conf.c b/pith/conf.c -index 8de5427..69708ac 100644 +index d25bf14..5b7266e 100644 --- a/pith/conf.c +++ b/pith/conf.c -@@ -29,6 +29,7 @@ static char rcsid[] = "$Id: conf.c 1266 2009-07-14 18:39:12Z hubert@u.washington +@@ -25,6 +25,7 @@ #include "../pith/remote.h" #include "../pith/keyword.h" #include "../pith/mailview.h" @@ -722,7 +723,7 @@ index 8de5427..69708ac 100644 #include "../pith/list.h" #include "../pith/status.h" #include "../pith/ldap.h" -@@ -223,6 +224,36 @@ CONF_TXT_T cf_text_unk_character_set[] = "Defaults to nothing, which is equivale +@@ -219,6 +220,36 @@ CONF_TXT_T cf_text_unk_character_set[] = "Defaults to nothing, which is equivale CONF_TXT_T cf_text_editor[] = "Specifies the program invoked by ^_ in the Composer,\n# or the \"enable-alternate-editor-implicitly\" feature."; @@ -759,7 +760,7 @@ index 8de5427..69708ac 100644 CONF_TXT_T cf_text_speller[] = "Specifies the program invoked by ^T in the Composer."; #ifdef _WINDOWS -@@ -567,6 +598,34 @@ static struct variable variables[] = { +@@ -563,6 +594,34 @@ static struct variable variables[] = { NULL, cf_text_thread_exp_char}, {"threading-lastreply-character", 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, "Threading Last Reply Character", cf_text_thread_lastreply_char}, @@ -794,7 +795,7 @@ index 8de5427..69708ac 100644 #ifndef _WINDOWS {"display-character-set", 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, NULL, cf_text_disp_char_set}, -@@ -2740,6 +2799,7 @@ init_vars(struct pine *ps, void (*cmds_f) (struct pine *, char **)) +@@ -2742,6 +2801,7 @@ init_vars(struct pine *ps, void (*cmds_f) (struct pine *, char **)) if(cmds_f) (*cmds_f)(ps, VAR_INIT_CMD_LIST); @@ -802,7 +803,7 @@ index 8de5427..69708ac 100644 #ifdef _WINDOWS mswin_set_quit_confirm (F_OFF(F_QUIT_WO_CONFIRM, ps_global)); #endif /* _WINDOWS */ -@@ -3188,6 +3248,8 @@ feature_list(int index) +@@ -3190,6 +3250,8 @@ feature_list(int index) F_FORCE_LOW_SPEED, h_config_force_low_speed, PREF_OS_LWSD, 0}, {"auto-move-read-msgs", "Auto Move Read Messages", F_AUTO_READ_MSGS, h_config_auto_read_msgs, PREF_MISC, 0}, @@ -811,7 +812,7 @@ index 8de5427..69708ac 100644 {"auto-unselect-after-apply", NULL, F_AUTO_UNSELECT, h_config_auto_unselect, PREF_MISC, 0}, {"auto-unzoom-after-apply", NULL, -@@ -7879,6 +7941,34 @@ config_help(int var, int feature) +@@ -7880,6 +7942,34 @@ config_help(int var, int feature) return(h_config_ab_sort_rule); case V_FLD_SORT_RULE : return(h_config_fld_sort_rule); @@ -847,7 +848,7 @@ index 8de5427..69708ac 100644 return(h_config_post_char_set); case V_UNK_CHAR_SET : diff --git a/pith/conf.h b/pith/conf.h -index 739b015..a4a7fd7 100644 +index c8225fe..f15c0ea 100644 --- a/pith/conf.h +++ b/pith/conf.h @@ -159,6 +159,46 @@ @@ -898,7 +899,7 @@ index 739b015..a4a7fd7 100644 #define VAR_CHAR_SET vars[V_CHAR_SET].current_val.p #define GLO_CHAR_SET vars[V_CHAR_SET].global_val.p diff --git a/pith/conftype.h b/pith/conftype.h -index 5f2dd50..96b54e3 100644 +index 0bfa892..6dcec63 100644 --- a/pith/conftype.h +++ b/pith/conftype.h @@ -70,6 +70,20 @@ typedef enum { V_PERSONAL_NAME = 0 @@ -922,7 +923,7 @@ index 5f2dd50..96b54e3 100644 #ifndef _WINDOWS , V_CHAR_SET , V_OLD_CHAR_SET -@@ -342,6 +356,7 @@ typedef enum { +@@ -344,6 +358,7 @@ typedef enum { F_FULL_AUTO_EXPUNGE, F_EXPUNGE_MANUALLY, F_AUTO_READ_MSGS, @@ -931,10 +932,10 @@ index 5f2dd50..96b54e3 100644 F_READ_IN_NEWSRC_ORDER, F_SELECT_WO_CONFIRM, diff --git a/pith/detoken.c b/pith/detoken.c -index cb4fc5f..bc902e3 100644 +index 6f4c4cc..d494b1f 100644 --- a/pith/detoken.c +++ b/pith/detoken.c -@@ -25,7 +25,7 @@ static char rcsid[] = "$Id: detoken.c 769 2007-10-24 00:15:40Z hubert@u.washingt +@@ -21,7 +21,7 @@ #include "../pith/reply.h" #include "../pith/mailindx.h" #include "../pith/options.h" @@ -943,7 +944,7 @@ index cb4fc5f..bc902e3 100644 /* * Hook to read signature from local file -@@ -91,6 +91,8 @@ detoken(ACTION_S *role, ENVELOPE *env, int prenewlines, int postnewlines, +@@ -87,6 +87,8 @@ detoken(ACTION_S *role, ENVELOPE *env, int prenewlines, int postnewlines, if(is_sig){ /* @@ -952,7 +953,7 @@ index cb4fc5f..bc902e3 100644 * If role->litsig is set, we use it; * Else, if VAR_LITERAL_SIG is set, we use that; * Else, if role->sig is set, we use that; -@@ -104,14 +106,25 @@ detoken(ACTION_S *role, ENVELOPE *env, int prenewlines, int postnewlines, +@@ -100,14 +102,25 @@ detoken(ACTION_S *role, ENVELOPE *env, int prenewlines, int postnewlines, * there is no reason to mix them, so we don't provide support to * do so. */ @@ -986,7 +987,7 @@ index cb4fc5f..bc902e3 100644 } else if(role && role->template) sigfile = role->template; -@@ -302,7 +315,7 @@ top: +@@ -298,7 +311,7 @@ top: } } } @@ -996,7 +997,7 @@ index cb4fc5f..bc902e3 100644 subbuf, sizeof(subbuf)-1); diff --git a/pith/indxtype.h b/pith/indxtype.h -index cf435b8..3ba65c5 100644 +index bb6ac75..73c504a 100644 --- a/pith/indxtype.h +++ b/pith/indxtype.h @@ -84,6 +84,11 @@ typedef enum {iNothing, iStatus, iFStatus, iIStatus, iSIStatus, @@ -1048,10 +1049,10 @@ index cf435b8..3ba65c5 100644 #define DEFAULT_REPLY_INTRO "default" diff --git a/pith/mailcmd.c b/pith/mailcmd.c -index 2c2b07d..185633a 100644 +index f1f3418..62948e8 100644 --- a/pith/mailcmd.c +++ b/pith/mailcmd.c -@@ -39,6 +39,7 @@ static char rcsid[] = "$Id: mailcmd.c 1142 2008-08-13 17:22:21Z hubert@u.washing +@@ -35,6 +35,7 @@ #include "../pith/ablookup.h" #include "../pith/search.h" #include "../pith/charconv/utf8.h" @@ -1059,7 +1060,7 @@ index 2c2b07d..185633a 100644 #ifdef _WINDOWS #include "../pico/osdep/mswin.h" -@@ -665,6 +666,7 @@ do_broach_folder(char *newfolder, CONTEXT_S *new_context, MAILSTREAM **streamp, +@@ -661,6 +662,7 @@ do_broach_folder(char *newfolder, CONTEXT_S *new_context, MAILSTREAM **streamp, strncpy(ps_global->cur_folder, p, sizeof(ps_global->cur_folder)-1); ps_global->cur_folder[sizeof(ps_global->cur_folder)-1] = '\0'; ps_global->context_current = ps_global->context_list; @@ -1067,7 +1068,7 @@ index 2c2b07d..185633a 100644 reset_index_format(); clear_index_cache(ps_global->mail_stream, 0); /* MUST sort before restoring msgno! */ -@@ -991,6 +993,7 @@ do_broach_folder(char *newfolder, CONTEXT_S *new_context, MAILSTREAM **streamp, +@@ -1001,6 +1003,7 @@ do_broach_folder(char *newfolder, CONTEXT_S *new_context, MAILSTREAM **streamp, clear_index_cache(ps_global->mail_stream, 0); reset_index_format(); @@ -1075,7 +1076,7 @@ index 2c2b07d..185633a 100644 /* * Start news reading with messages the user's marked deleted -@@ -1114,7 +1117,10 @@ do_broach_folder(char *newfolder, CONTEXT_S *new_context, MAILSTREAM **streamp, +@@ -1124,7 +1127,10 @@ do_broach_folder(char *newfolder, CONTEXT_S *new_context, MAILSTREAM **streamp, if(!cur_already_set && mn_get_total(ps_global->msgmap) > 0L){ @@ -1087,7 +1088,7 @@ index 2c2b07d..185633a 100644 if(ps_global->start_entry > 0){ mn_set_cur(ps_global->msgmap, mn_get_revsort(ps_global->msgmap) -@@ -1136,124 +1142,7 @@ do_broach_folder(char *newfolder, CONTEXT_S *new_context, MAILSTREAM **streamp, +@@ -1146,124 +1152,7 @@ do_broach_folder(char *newfolder, CONTEXT_S *new_context, MAILSTREAM **streamp, else use_this_startup_rule = ps_global->inc_startup_rule; @@ -1213,7 +1214,7 @@ index 2c2b07d..185633a 100644 } else if(IS_NEWS(ps_global->mail_stream)){ /* -@@ -1431,9 +1320,11 @@ expunge_and_close(MAILSTREAM *stream, char **final_msg, long unsigned int flags) +@@ -1441,9 +1330,11 @@ expunge_and_close(MAILSTREAM *stream, char **final_msg, long unsigned int flags) /* Save read messages? */ if(VAR_READ_MESSAGE_FOLDER && VAR_READ_MESSAGE_FOLDER[0] && sp_flagged(stream, SP_INBOX) @@ -1226,7 +1227,7 @@ index 2c2b07d..185633a 100644 || (pith_opt_read_msg_prompt && (*pith_opt_read_msg_prompt)(seen_not_del, VAR_READ_MESSAGE_FOLDER))) /* move inbox's read messages */ -@@ -1716,6 +1607,9 @@ move_read_msgs(MAILSTREAM *stream, char *dstfldr, char *buf, size_t buflen, long +@@ -1726,6 +1617,9 @@ move_read_msgs(MAILSTREAM *stream, char *dstfldr, char *buf, size_t buflen, long char *bufp = NULL; MESSAGECACHE *mc; @@ -1236,7 +1237,7 @@ index 2c2b07d..185633a 100644 if(!is_absolute_path(dstfldr) && !(save_context = default_save_context(ps_global->context_list))) save_context = ps_global->context_list; -@@ -1755,8 +1649,9 @@ move_read_msgs(MAILSTREAM *stream, char *dstfldr, char *buf, size_t buflen, long +@@ -1765,8 +1659,9 @@ move_read_msgs(MAILSTREAM *stream, char *dstfldr, char *buf, size_t buflen, long snprintf(buf, buflen, "Moving %s read message%s to \"%s\"", comatose(searched), plural(searched), dstfldr); we_cancel = busy_cue(buf, NULL, 0); @@ -1248,7 +1249,7 @@ index 2c2b07d..185633a 100644 strncpy(bufp = buf + 1, "Moved", MIN(5,buflen)); /* change Moving to Moved */ buf[buflen-1] = '\0'; -@@ -1794,7 +1689,9 @@ move_read_incoming(MAILSTREAM *stream, CONTEXT_S *context, char *folder, +@@ -1804,7 +1699,9 @@ move_read_incoming(MAILSTREAM *stream, CONTEXT_S *context, char *folder, && ((context_isambig(folder) && folder_is_nick(folder, FOLDERS(context), 0)) || folder_index(folder, context, FI_FOLDER) > 0) @@ -1259,7 +1260,7 @@ index 2c2b07d..185633a 100644 for(; f && *archive; archive++){ char *p; -@@ -2760,3 +2657,295 @@ get_uname(char *mailbox, char *target, int len) +@@ -2770,3 +2667,295 @@ get_uname(char *mailbox, char *target, int len) return(*target ? target : NULL); } @@ -1556,7 +1557,7 @@ index 2c2b07d..185633a 100644 + } +} diff --git a/pith/mailcmd.h b/pith/mailcmd.h -index 7e0d344..4cc744b 100644 +index b816c8d..70d2963 100644 --- a/pith/mailcmd.h +++ b/pith/mailcmd.h @@ -42,6 +42,8 @@ @@ -1583,10 +1584,10 @@ index 7e0d344..4cc744b 100644 long zoom_index(struct pine *, MAILSTREAM *, MSGNO_S *, int); int unzoom_index(struct pine *, MAILSTREAM *, MSGNO_S *); diff --git a/pith/mailindx.c b/pith/mailindx.c -index 87cab26..48ac2ea 100644 +index 2e19a60..01bccf3 100644 --- a/pith/mailindx.c +++ b/pith/mailindx.c -@@ -41,6 +41,7 @@ static char rcsid[] = "$Id: mailindx.c 1266 2009-07-14 18:39:12Z hubert@u.washin +@@ -37,6 +37,7 @@ #include "../pith/send.h" #include "../pith/options.h" #include "../pith/ablookup.h" @@ -1594,7 +1595,7 @@ index 87cab26..48ac2ea 100644 #ifdef _WINDOWS #include "../pico/osdep/mswin.h" #endif -@@ -378,6 +379,13 @@ reset_index_format(void) +@@ -374,6 +375,13 @@ reset_index_format(void) PAT_STATE pstate; PAT_S *pat; int we_set_it = 0; @@ -1608,7 +1609,7 @@ index 87cab26..48ac2ea 100644 if(ps_global->mail_stream && nonempty_patterns(rflags, &pstate)){ for(pat = first_pattern(&pstate); pat; pat = next_pattern(&pstate)){ -@@ -451,14 +459,14 @@ free_hdrtok(HEADER_TOK_S **hdrtok) +@@ -447,14 +455,14 @@ free_hdrtok(HEADER_TOK_S **hdrtok) static INDEX_PARSE_T itokens[] = { {"STATUS", iStatus, FOR_INDEX}, {"MSGNO", iMessNo, FOR_INDEX}, @@ -1625,7 +1626,7 @@ index 87cab26..48ac2ea 100644 {"SHORTSUBJECT", iShortSubject, FOR_INDEX|FOR_REPLY_INTRO|FOR_TEMPLATE}, {"FULLSTATUS", iFStatus, FOR_INDEX}, {"IMAPSTATUS", iIStatus, FOR_INDEX}, -@@ -470,56 +478,60 @@ static INDEX_PARSE_T itokens[] = { +@@ -466,56 +474,60 @@ static INDEX_PARSE_T itokens[] = { {"SUBJECTTEXT", iSubjectText, FOR_INDEX}, {"SUBJKEYTEXT", iSubjKeyText, FOR_INDEX}, {"SUBJKEYINITTEXT", iSubjKeyInitText, FOR_INDEX}, @@ -1730,7 +1731,7 @@ index 87cab26..48ac2ea 100644 {"RECIPS", iRecips, FOR_INDEX|FOR_REPLY_INTRO|FOR_TEMPLATE}, {"NEWS", iNews, FOR_INDEX|FOR_REPLY_INTRO|FOR_TEMPLATE}, {"TOANDNEWS", iToAndNews, FOR_INDEX|FOR_REPLY_INTRO|FOR_TEMPLATE}, -@@ -528,56 +540,71 @@ static INDEX_PARSE_T itokens[] = { +@@ -524,56 +536,71 @@ static INDEX_PARSE_T itokens[] = { {"NEWSANDRECIPS", iNewsAndRecips, FOR_INDEX|FOR_REPLY_INTRO|FOR_TEMPLATE}, {"MSGID", iMsgID, FOR_REPLY_INTRO|FOR_TEMPLATE}, {"CURNEWS", iCurNews, FOR_REPLY_INTRO|FOR_TEMPLATE}, @@ -1841,7 +1842,7 @@ index 87cab26..48ac2ea 100644 {NULL, iNothing, FOR_NOTHING} }; -@@ -2484,6 +2511,24 @@ format_index_index_line(INDEXDATA_S *idata) +@@ -2480,6 +2507,24 @@ format_index_index_line(INDEXDATA_S *idata) from_str(cdesc->ctype, idata, str, sizeof(str), ice); break; @@ -1866,7 +1867,7 @@ index 87cab26..48ac2ea 100644 case iTo: if(((field = ((addr = fetch_to(idata)) ? "To" -@@ -3855,7 +3900,17 @@ try_again: +@@ -3851,7 +3896,17 @@ try_again: if(p > buf){ size_t l; @@ -1885,7 +1886,7 @@ index 87cab26..48ac2ea 100644 l = strlen(buf); l += 100; firsttext = fs_get((l+1) * sizeof(char)); -@@ -5434,10 +5489,10 @@ subj_str(INDEXDATA_S *idata, char *str, size_t strsize, SubjKW kwtype, int openi +@@ -5430,10 +5485,10 @@ subj_str(INDEXDATA_S *idata, char *str, size_t strsize, SubjKW kwtype, int openi { char *subject, *origsubj, *origstr, *rawsubj, *sptr = NULL; char *p, *border, *q = NULL, *free_subj = NULL; @@ -1898,7 +1899,7 @@ index 87cab26..48ac2ea 100644 int save; int do_subj = 0, truncated_tree = 0; PINETHRD_S *thd, *thdorig; -@@ -5493,6 +5548,14 @@ subj_str(INDEXDATA_S *idata, char *str, size_t strsize, SubjKW kwtype, int openi +@@ -5489,6 +5544,14 @@ subj_str(INDEXDATA_S *idata, char *str, size_t strsize, SubjKW kwtype, int openi * to free it at the end of this routine. */ @@ -1913,7 +1914,7 @@ index 87cab26..48ac2ea 100644 if(shorten) shorten_subject(origsubj); -@@ -5933,6 +5996,9 @@ subj_str(INDEXDATA_S *idata, char *str, size_t strsize, SubjKW kwtype, int openi +@@ -5929,6 +5992,9 @@ subj_str(INDEXDATA_S *idata, char *str, size_t strsize, SubjKW kwtype, int openi if(free_subj) fs_give((void **) &free_subj); @@ -1923,7 +1924,7 @@ index 87cab26..48ac2ea 100644 } -@@ -6301,16 +6367,33 @@ from_str(IndexColType ctype, INDEXDATA_S *idata, char *str, size_t strsize, ICE_ +@@ -6297,16 +6363,33 @@ from_str(IndexColType ctype, INDEXDATA_S *idata, char *str, size_t strsize, ICE_ ? "To" : (addr = fetch_cc(idata)) ? "Cc" @@ -1963,7 +1964,7 @@ index 87cab26..48ac2ea 100644 break; } -@@ -6323,7 +6406,15 @@ from_str(IndexColType ctype, INDEXDATA_S *idata, char *str, size_t strsize, ICE_ +@@ -6319,7 +6402,15 @@ from_str(IndexColType ctype, INDEXDATA_S *idata, char *str, size_t strsize, ICE_ break; case iFrom: @@ -1980,7 +1981,7 @@ index 87cab26..48ac2ea 100644 break; case iAddress: -@@ -6621,3 +6712,64 @@ set_print_format(IELEM_S *ielem, int width, int leftadj) +@@ -6617,3 +6708,64 @@ set_print_format(IELEM_S *ielem, int width, int leftadj) } } } @@ -2046,7 +2047,7 @@ index 87cab26..48ac2ea 100644 + return rule_result; +} diff --git a/pith/mailindx.h b/pith/mailindx.h -index a9b25e6..6cb267d 100644 +index d73f0ba..36fcb6a 100644 --- a/pith/mailindx.h +++ b/pith/mailindx.h @@ -30,6 +30,9 @@ extern void (*setup_header_widths)(MAILSTREAM *); @@ -2086,10 +2087,10 @@ index 6c1973f..ffbfeb6 100644 all: libpith.lib diff --git a/pith/pine.hlp b/pith/pine.hlp -index d973a0e..dbe36ca 100644 +index ec91b50..2e22b49 100644 --- a/pith/pine.hlp +++ b/pith/pine.hlp -@@ -4672,6 +4672,7 @@ There are also additional details on +@@ -4950,6 +4950,7 @@ There are also additional details on <li><a href="h_config_alt_reply_menu">FEATURE: <!--#echo var="FEAT_alternate-reply-menu"--></a> <li><a href="h_config_force_low_speed">FEATURE: <!--#echo var="FEAT_assume-slow-link"--></a> <li><a href="h_config_auto_read_msgs">FEATURE: <!--#echo var="FEAT_auto-move-read-msgs"--></a> @@ -2097,7 +2098,7 @@ index d973a0e..dbe36ca 100644 <li><a href="h_config_auto_open_unread">FEATURE: <!--#echo var="FEAT_auto-open-next-unread"--></a> <li><a href="h_config_auto_unselect">FEATURE: <!--#echo var="FEAT_auto-unselect-after-apply"--></a> <li><a href="h_config_auto_unzoom">FEATURE: <!--#echo var="FEAT_auto-unzoom-after-apply"--></a> -@@ -20004,6 +20005,7 @@ This set of special tokens may be used in the +@@ -20280,6 +20281,7 @@ This set of special tokens may be used in the <A HREF="h_config_index_format">"<!--#echo var="VAR_index-format"-->"</A> option, in the <A HREF="h_config_reply_intro">"<!--#echo var="VAR_reply-leadin"-->"</A> option, in signature files, @@ -2105,7 +2106,7 @@ index d973a0e..dbe36ca 100644 in template files used in <A HREF="h_rules_roles">"roles"</A>, and in the folder name that is the target of a Filter Rule. -@@ -20016,7 +20018,7 @@ and in the target of Filter Rules. +@@ -20292,7 +20294,7 @@ and in the target of Filter Rules. <P> <P> @@ -2114,7 +2115,7 @@ index d973a0e..dbe36ca 100644 <DL> <DT>SUBJECT</DT> -@@ -20050,6 +20052,22 @@ email address, never the personal name. +@@ -20326,6 +20328,22 @@ email address, never the personal name. For example, "mailbox@domain". </DD> @@ -2137,7 +2138,7 @@ index d973a0e..dbe36ca 100644 <DT>MAILBOX</DT> <DD> This is the same as the "ADDRESS" except that the -@@ -20097,6 +20115,15 @@ are unavailable) of the persons specified in the +@@ -20373,6 +20391,15 @@ are unavailable) of the persons specified in the message's "Cc:" header field. </DD> @@ -2153,7 +2154,7 @@ index d973a0e..dbe36ca 100644 <DT>RECIPS</DT> <DD> This token represents the personal names (or email addresses if the names -@@ -20105,6 +20132,14 @@ message's "To:" header field and +@@ -20381,6 +20408,14 @@ message's "To:" header field and the message's "Cc:" header field. </DD> @@ -2168,7 +2169,7 @@ index d973a0e..dbe36ca 100644 <DT>NEWSANDRECIPS</DT> <DD> This token represents the newsgroups from the -@@ -21228,6 +21263,110 @@ This is an end of line marker. +@@ -21504,6 +21539,110 @@ This is an end of line marker. </DD> </DL> @@ -2279,7 +2280,7 @@ index d973a0e..dbe36ca 100644 <P> <H1><EM>Token Available Only for Templates and Signatures</EM></H1> -@@ -24584,6 +24723,897 @@ character sets Alpine knows about by using the "T" ToCharsets command. +@@ -24860,6 +24999,897 @@ character sets Alpine knows about by using the "T" ToCharsets command. <End of help on this topic> </BODY> </HTML> @@ -3177,7 +3178,7 @@ index d973a0e..dbe36ca 100644 ====== h_config_char_set ===== <HTML> <HEAD> -@@ -28199,6 +29229,76 @@ MESSAGE TEXT screen. +@@ -28475,6 +29505,76 @@ MESSAGE TEXT screen. </DL> @@ -3254,7 +3255,7 @@ index d973a0e..dbe36ca 100644 <P> <UL> <LI><A HREF="h_finding_help">Finding more information and requesting help</A> -@@ -31928,6 +33028,29 @@ them as deleted in the INBOX. Messages in the INBOX marked with an +@@ -32189,6 +33289,29 @@ them as deleted in the INBOX. Messages in the INBOX marked with an <End of help on this topic> </BODY> </HTML> @@ -3285,10 +3286,10 @@ index d973a0e..dbe36ca 100644 <HTML> <HEAD> diff --git a/pith/reply.c b/pith/reply.c -index 636afa4..666d3e1 100644 +index 07f4b9a..24655f8 100644 --- a/pith/reply.c +++ b/pith/reply.c -@@ -47,6 +47,8 @@ static char rcsid[] = "$Id: reply.c 1074 2008-06-04 00:08:43Z hubert@u.washingto +@@ -43,6 +43,8 @@ #include "../pith/mailcmd.h" #include "../pith/margin.h" #include "../pith/smime.h" @@ -3297,7 +3298,7 @@ index 636afa4..666d3e1 100644 /* -@@ -864,8 +866,27 @@ char * +@@ -860,8 +862,27 @@ char * reply_quote_str(ENVELOPE *env) { char *prefix, *repl, *p, buf[MAX_PREFIX+1], pbf[MAX_SUBSTITUTION+1]; @@ -3326,7 +3327,7 @@ index 636afa4..666d3e1 100644 buf[sizeof(buf)-1] = '\0'; /* set up the prefix to quote included text */ -@@ -917,10 +938,29 @@ reply_quote_str(ENVELOPE *env) +@@ -913,10 +934,29 @@ reply_quote_str(ENVELOPE *env) int reply_quote_str_contains_tokens(void) { @@ -3360,7 +3361,7 @@ index 636afa4..666d3e1 100644 } -@@ -1486,6 +1526,10 @@ get_addr_data(ENVELOPE *env, IndexColType type, char *buf, size_t maxlen) +@@ -1482,6 +1522,10 @@ get_addr_data(ENVELOPE *env, IndexColType type, char *buf, size_t maxlen) buf[0] = '\0'; switch(type){ @@ -3371,7 +3372,7 @@ index 636afa4..666d3e1 100644 case iFrom: addr = env ? env->from : NULL; break; -@@ -1898,21 +1942,193 @@ get_reply_data(ENVELOPE *env, ACTION_S *role, IndexColType type, char *buf, size +@@ -1894,21 +1938,193 @@ get_reply_data(ENVELOPE *env, ACTION_S *role, IndexColType type, char *buf, size break; @@ -3569,7 +3570,7 @@ index 636afa4..666d3e1 100644 case iNewLine: if(maxlen >= strlen(NEWLINE)){ -@@ -1941,6 +2157,11 @@ get_reply_data(ENVELOPE *env, ACTION_S *role, IndexColType type, char *buf, size +@@ -1937,6 +2153,11 @@ get_reply_data(ENVELOPE *env, ACTION_S *role, IndexColType type, char *buf, size break; @@ -3581,7 +3582,7 @@ index 636afa4..666d3e1 100644 case iNews: case iCurNews: get_news_data(env, type, buf, maxlen); -@@ -1990,6 +2211,14 @@ get_reply_data(ENVELOPE *env, ACTION_S *role, IndexColType type, char *buf, size +@@ -1986,6 +2207,14 @@ get_reply_data(ENVELOPE *env, ACTION_S *role, IndexColType type, char *buf, size break; @@ -3596,7 +3597,7 @@ index 636afa4..666d3e1 100644 case iSubject: case iShortSubject: if(env && env->subject){ -@@ -2052,7 +2281,18 @@ reply_delimiter(ENVELOPE *env, ACTION_S *role, gf_io_t pc) +@@ -2048,7 +2277,18 @@ reply_delimiter(ENVELOPE *env, ACTION_S *role, gf_o_t pc) if(!env) return; @@ -3616,7 +3617,7 @@ index 636afa4..666d3e1 100644 buf[MAX_DELIM] = '\0'; /* preserve exact default behavior from before */ if(!strcmp(buf, DEFAULT_REPLY_INTRO)){ -@@ -2311,6 +2551,7 @@ forward_subject(ENVELOPE *env, int flags) +@@ -2307,6 +2547,7 @@ forward_subject(ENVELOPE *env, int flags) { size_t l; char *p, buftmp[MAILTMPLEN]; @@ -3624,7 +3625,7 @@ index 636afa4..666d3e1 100644 if(!env) return(NULL); -@@ -2318,9 +2559,19 @@ forward_subject(ENVELOPE *env, int flags) +@@ -2314,9 +2555,19 @@ forward_subject(ENVELOPE *env, int flags) dprint((9, "checking subject: \"%s\"\n", env->subject ? env->subject : "NULL")); @@ -3649,10 +3650,10 @@ index 636afa4..666d3e1 100644 SIZEOF_20KBUF, buftmp) == (unsigned char *) buftmp) diff --git a/pith/rules.c b/pith/rules.c new file mode 100644 -index 0000000..3ab373e +index 0000000..9792ed8 --- /dev/null +++ b/pith/rules.c -@@ -0,0 +1,1416 @@ +@@ -0,0 +1,1417 @@ +/* This module was written by + * + * Eduardo Chappa (chappa@washington.edu) @@ -5020,7 +5021,8 @@ index 0000000..3ab373e +exec_fcn (RULEACTION_S *action, int ctxt, ENVELOPE *env) +{ + STORE_S *output_so; -+ gf_io_t gc, pc; ++ gf_i_t gc; ++ gf_o_t pc; + char *status, *rv, *cmd, *test; + + if(!(action->context & ctxt)) @@ -5318,10 +5320,10 @@ index 0000000..8e7ddd9 + +#endif /* PITH_RULESTYPE_INCLUDED */ diff --git a/pith/save.c b/pith/save.c -index 5f2c14d..850be45 100644 +index e12eb9a..a65f82c 100644 --- a/pith/save.c +++ b/pith/save.c -@@ -955,7 +955,7 @@ save(struct pine *state, MAILSTREAM *stream, CONTEXT_S *context, char *folder, +@@ -951,7 +951,7 @@ save(struct pine *state, MAILSTREAM *stream, CONTEXT_S *context, char *folder, *date = '\0'; rv = save_fetch_append(stream, mn_m2raw(msgmap, i), @@ -5331,10 +5333,10 @@ index 5f2c14d..850be45 100644 if(flags) diff --git a/pith/send.c b/pith/send.c -index 1ce74fd..55350e9 100644 +index e33545e..b884194 100644 --- a/pith/send.c +++ b/pith/send.c -@@ -44,6 +44,7 @@ static char rcsid[] = "$Id: send.c 1204 2009-02-02 19:54:23Z hubert@u.washington +@@ -40,6 +40,7 @@ #include "../pith/ablookup.h" #include "../pith/sort.h" #include "../pith/smime.h" @@ -5342,7 +5344,7 @@ index 1ce74fd..55350e9 100644 #include "../c-client/smtp.h" #include "../c-client/nntp.h" -@@ -1685,9 +1686,9 @@ call_mailer(METAENV *header, struct mail_bodystruct *body, char **alt_smtp_serve +@@ -1681,9 +1682,9 @@ call_mailer(METAENV *header, struct mail_bodystruct *body, char **alt_smtp_serve char error_buf[200], *error_mess = NULL, *postcmd; ADDRESS *a; ENVELOPE *fake_env = NULL; @@ -5354,7 +5356,7 @@ index 1ce74fd..55350e9 100644 BODY *bp = NULL; PINEFIELD *pf; BODY *origBody = body; -@@ -1842,20 +1843,49 @@ call_mailer(METAENV *header, struct mail_bodystruct *body, char **alt_smtp_serve +@@ -1838,20 +1839,49 @@ call_mailer(METAENV *header, struct mail_bodystruct *body, char **alt_smtp_serve * OK, who posts what? We tried an mta_handoff above, but there * was either none specified or we decided not to use it. So, * if there's an smtp-server defined anywhere, @@ -5417,10 +5419,10 @@ index 1ce74fd..55350e9 100644 else if((postcmd = smtp_command(ps_global->c_client_error, sizeof(ps_global->c_client_error))) != NULL){ char *cmdlist[2]; diff --git a/pith/sort.c b/pith/sort.c -index 8ac6aa2..6727361 100644 +index c539998..2d0621f 100644 --- a/pith/sort.c +++ b/pith/sort.c -@@ -30,7 +30,7 @@ static char rcsid[] = "$Id: sort.c 1142 2008-08-13 17:22:21Z hubert@u.washington +@@ -26,7 +26,7 @@ #include "../pith/signal.h" #include "../pith/busy.h" #include "../pith/icache.h" @@ -5429,7 +5431,7 @@ index 8ac6aa2..6727361 100644 /* * global place to store mail_sort and mail_thread results -@@ -686,7 +686,21 @@ reset_sort_order(unsigned int flags) +@@ -682,7 +682,21 @@ reset_sort_order(unsigned int flags) PAT_S *pat; SortOrder the_sort_order; int sort_is_rev; @@ -5452,7 +5454,7 @@ index 8ac6aa2..6727361 100644 /* set default order */ the_sort_order = ps_global->def_sort; sort_is_rev = ps_global->def_sort_rev; -@@ -704,7 +718,43 @@ reset_sort_order(unsigned int flags) +@@ -700,7 +714,43 @@ reset_sort_order(unsigned int flags) sort_is_rev = pat->action->revsort; } } @@ -5498,7 +5500,7 @@ index 8ac6aa2..6727361 100644 + return EndofList; +} diff --git a/pith/sort.h b/pith/sort.h -index 7ea5932..8d4cb5e 100644 +index 4c93698..91eac2f 100644 --- a/pith/sort.h +++ b/pith/sort.h @@ -45,6 +45,6 @@ char *sort_name(SortOrder); @@ -5510,10 +5512,10 @@ index 7ea5932..8d4cb5e 100644 #endif /* PITH_SORT_INCLUDED */ diff --git a/pith/state.c b/pith/state.c -index 2918116..dd79768 100644 +index 0c687d6..1067284 100644 --- a/pith/state.c +++ b/pith/state.c -@@ -35,6 +35,7 @@ static char rcsid[] = "$Id: state.c 1074 2008-06-04 00:08:43Z hubert@u.washingto +@@ -31,6 +31,7 @@ #include "../pith/smime.h" #include "../pith/ical.h" #include "../pith/bldaddr.h" @@ -5521,7 +5523,7 @@ index 2918116..dd79768 100644 /* * Globals referenced throughout pine... -@@ -252,6 +253,9 @@ free_pine_struct(struct pine **pps) +@@ -248,6 +249,9 @@ free_pine_struct(struct pine **pps) if((*pps)->id) free_id(&(*pps)->id); @@ -5532,7 +5534,7 @@ index 2918116..dd79768 100644 fs_give((void **) pps); diff --git a/pith/state.h b/pith/state.h -index 9c6e66d..a3fd87e 100644 +index 9f63d46..188f392 100644 --- a/pith/state.h +++ b/pith/state.h @@ -33,7 +33,7 @@ @@ -5556,15 +5558,15 @@ index 9c6e66d..a3fd87e 100644 unsigned read_predicted:1; char cur_folder[MAXPATH+1]; -@@ -360,6 +365,7 @@ struct pine { +@@ -362,6 +367,7 @@ struct pine { struct { - char *(*display_filter)(char *, STORE_S *, gf_io_t, FILTLIST_S *); + char *(*display_filter)(char *, STORE_S *, gf_o_t, FILTLIST_S *); char *(*display_filter_trigger)(BODY *, char *, size_t); -+ char *(*exec_rule)(char *, gf_io_t, gf_io_t); ++ char *(*exec_rule)(char *, gf_i_t, gf_o_t); } tools; KEYWORD_S *keywords; -@@ -370,6 +376,9 @@ struct pine { +@@ -372,6 +378,9 @@ struct pine { char last_error[500]; INIT_ERR_S *init_errs; @@ -5575,10 +5577,10 @@ index 9c6e66d..a3fd87e 100644 #ifdef SMIME diff --git a/pith/string.c b/pith/string.c -index d2d0d75..a349c3f 100644 +index 2ee82be..b48da8b 100644 --- a/pith/string.c +++ b/pith/string.c -@@ -20,6 +20,7 @@ static char rcsid[] = "$Id: string.c 910 2008-01-14 22:28:38Z hubert@u.washingto +@@ -16,6 +16,7 @@ string.c Misc extra and useful string functions - rplstr replace a substring with another string @@ -5586,7 +5588,7 @@ index d2d0d75..a349c3f 100644 - sqzspaces Squeeze out the extra blanks in a string - sqznewlines Squeeze out \n and \r. - removing_trailing_white_space -@@ -131,6 +132,31 @@ rplstr(char *os, size_t oslen, int dl, char *is) +@@ -127,6 +128,31 @@ rplstr(char *os, size_t oslen, int dl, char *is) return(x3); } @@ -5618,12 +5620,11 @@ index d2d0d75..a349c3f 100644 /*---------------------------------------------------------------------- -@@ -2997,3 +3023,35 @@ convert_decimal_to_alpha (char *rn, size_t len, long n, char l) - if(i < len) rn[i] = '\0'; - rn[len-1] = '\0'; +@@ -3041,3 +3067,34 @@ remove_quotes(unsigned char *name) + } + } } + -+ +void +removing_extra_stuff(string) + char *string; @@ -5655,7 +5656,7 @@ index d2d0d75..a349c3f 100644 +} + diff --git a/pith/string.h b/pith/string.h -index 36440ea..d4c433e 100644 +index f9fc85c..6f0a481 100644 --- a/pith/string.h +++ b/pith/string.h @@ -87,6 +87,7 @@ struct date { |