summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2024-09-18 19:52:36 +0200
committerErich Eckner <git@eckner.net>2024-09-18 20:04:33 +0200
commit01aef74dd7100580b1dd2444f6f41a7beb6b4cf5 (patch)
treea9c3fb5140a9598e5276ebb8beff65f73790d2a5
parentd3e7350df29996a8928804e38eb8599fdc0efdcd (diff)
downloadcrux-ports-01aef74dd7100580b1dd2444f6f41a7beb6b4cf5.tar.xz
alpine: update and fix race condition
-rw-r--r--manualPorts/alpine/.md5sum4
-rw-r--r--manualPorts/alpine/.signature8
-rw-r--r--manualPorts/alpine/Pkgfile4
-rw-r--r--manualPorts/alpine/rules.patch311
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">&quot;<!--#echo var="VAR_index-format"-->&quot;</A> option,
in the <A HREF="h_config_reply_intro">&quot;<!--#echo var="VAR_reply-leadin"-->&quot;</A> option,
in signature files,
@@ -2105,7 +2106,7 @@ index d973a0e..dbe36ca 100644
in template files used in
<A HREF="h_rules_roles">&quot;roles&quot;</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, &quot;mailbox@domain&quot;.
</DD>
@@ -2137,7 +2138,7 @@ index d973a0e..dbe36ca 100644
<DT>MAILBOX</DT>
<DD>
This is the same as the &quot;ADDRESS&quot; 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 &quot;Cc:&quot; 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 &quot;To:&quot; header field and
+@@ -20381,6 +20408,14 @@ message's &quot;To:&quot; header field and
the message's &quot;Cc:&quot; 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 &quot;T&quot; ToCharsets command.
+@@ -24860,6 +24999,897 @@ character sets Alpine knows about by using the &quot;T&quot; ToCharsets command.
&lt;End of help on this topic&gt;
</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
&lt;End of help on this topic&gt;
</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 {