Updating link to change in openSUSE:Factory/alpine revision 38.0

OBS-URL: https://build.opensuse.org/package/show/server:mail/alpine?expand=0&rev=0df79cc66d158318ac0ab6fbb1c8a0df
This commit is contained in:
OBS User buildservice-autocommit 2015-03-30 17:33:58 +00:00 committed by Git OBS Bridge
parent 88dc714163
commit 7bdde85c8b
16 changed files with 560 additions and 478 deletions

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:fecc9ca5df03e0f368edec65cd61444325157b5635b5c92380cedf9c4ce8fbf6
size 4403188

3
alpine-2.20.tar.xz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ed639b6e5bb97e6b0645c85262ca6a784316195d461ce8d8411999bf80449227
size 4841816

View File

@ -3,11 +3,11 @@
pith/send.c | 1 +
2 files changed, 13 insertions(+), 2 deletions(-)
Index: alpine-2.11/imap/src/osdep/unix/dummy.c
Index: alpine-2.20/imap/src/osdep/unix/dummy.c
===================================================================
--- alpine-2.11.orig/imap/src/osdep/unix/dummy.c
+++ alpine-2.11/imap/src/osdep/unix/dummy.c
@@ -736,6 +736,17 @@ long dummy_copy (MAILSTREAM *stream,char
--- alpine-2.20.orig/imap/src/osdep/unix/dummy.c
+++ alpine-2.20/imap/src/osdep/unix/dummy.c
@@ -734,6 +734,17 @@ long dummy_copy (MAILSTREAM *stream,char
return NIL;
}
@ -25,7 +25,7 @@ Index: alpine-2.11/imap/src/osdep/unix/dummy.c
/* Dummy append message string
* Accepts: mail stream
@@ -755,8 +766,7 @@ long dummy_append (MAILSTREAM *stream,ch
@@ -753,8 +764,7 @@ long dummy_append (MAILSTREAM *stream,ch
/* append to INBOX? */
if (!compare_cstring (mailbox,"INBOX")) {
/* yes, if no empty proto try creating */
@ -35,12 +35,12 @@ Index: alpine-2.11/imap/src/osdep/unix/dummy.c
}
else if (dummy_file (tmp,mailbox) && ((fd = open (tmp,O_RDONLY,NIL)) < 0)) {
if ((e = errno) == ENOENT) /* failed, was it no such file? */
Index: alpine-2.11/pith/send.c
Index: alpine-2.20/pith/send.c
===================================================================
--- alpine-2.11.orig/pith/send.c
+++ alpine-2.11/pith/send.c
@@ -1570,6 +1570,7 @@ set_priority_header(METAENV *header, cha
pf->textbuf = cpystr(value);
--- alpine-2.20.orig/pith/send.c
+++ alpine-2.20/pith/send.c
@@ -4159,6 +4159,7 @@ set_parameter(PARAMETER **param, char *p
pm->value = cpystr(new_value);
}
}
+ return 0;

View File

@ -1,36 +0,0 @@
--- alpine-2.11/pith/send.c 2013-08-15 06:36:22.000000000 +0200
+++ alpine-2.19.4/pith/send.c 2013-12-27 20:23:54.000000000 +0100
@@ -4419,6 +4423,17 @@
return(1);
}
+char *
+ToLower(char *s, char *t)
+{
+ int i;
+
+ for(i = 0; s != NULL && s[i] != '\0'; i++)
+ t[i] = s[i] + ((s[i] >= 'A' && s[i] <= 'Z') ? ('a' - 'A') : 0);
+ t[i] = '\0';
+
+ return t;
+}
/*
* pine_write_body_header - another c-client clone. This time
@@ -4441,11 +4456,11 @@
if((so = so_get(CharStar, NULL, WRITE_ACCESS)) != NULL){
if(!(so_puts(so, "Content-Type: ")
- && so_puts(so, body_types[body->type])
+ && so_puts(so, ToLower(body_types[body->type], tmp))
&& so_puts(so, "/")
- && so_puts(so, body->subtype
- ? body->subtype
- : rfc822_default_subtype (body->type))))
+ && so_puts(so, ToLower(body->subtype
+ ? body->subtype
+ : rfc822_default_subtype (body->type),tmp))))
return(pwbh_finish(0, so));
if(body->parameter){

View File

@ -1,49 +0,0 @@
---
pith/string.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)
Index: alpine-2.11/pith/string.c
===================================================================
--- alpine-2.11.orig/pith/string.c
+++ alpine-2.11/pith/string.c
@@ -770,6 +770,7 @@ month_abbrev_locale(int month_num)
return("xxx");
else{
static char buf[20];
+ char *utf8buf;
struct tm tm;
memset(&tm, 0, sizeof(tm));
@@ -811,6 +812,12 @@ month_abbrev_locale(int month_num)
buf[0] = ' ';
}
+ utf8buf = convert_to_utf8(buf, NULL, 0);
+ if (utf8buf != NULL) {
+ strncpy(buf, utf8buf, sizeof(buf));
+ buf[sizeof(buf)-1] = '\0';
+ fs_give((void **)&utf8buf);
+ }
return(buf);
}
@@ -842,12 +849,19 @@ month_name_locale(int month_num)
return("");
else{
static char buf[20];
+ char *utf8buf;
struct tm tm;
memset(&tm, 0, sizeof(tm));
tm.tm_year = 107;
tm.tm_mon = month_num-1;
our_strftime(buf, sizeof(buf), "%B", &tm);
+ utf8buf = convert_to_utf8(buf, NULL, 0);
+ if (utf8buf != NULL) {
+ strncpy(buf, utf8buf, sizeof(buf));
+ buf[sizeof(buf)-1] = '\0';
+ fs_give((void **)&utf8buf);
+ }
return(buf);
}
}

View File

@ -1,3 +1,51 @@
-------------------------------------------------------------------
Wed Mar 25 16:59:29 UTC 2015 - jengelh@inai.de
- Update to new upstream release 2.20
* Upgrade UW-IMAP to Panda IMAP from github.com/jonabbey/panda-imap
* S/MIME: Add screen to manage certificates.
* S/MIME: Signatures are validated using the user's certificates
instead of the ones included in the message. Behavior can be
disabled by disabling the option "Validate Using Certificate
Store Only" which is enabled by default.
* S/MIME: add the sender certificate to the list of certificates
in encrypted messages to make it possible for the sender to
decrypt the message they sent.
* S/MIME: Forwarding a message will include the signed part as part
of the text and not as a multipart message, just as the reply
command does.
* Add support to selective expunge through a subcommand of the
select-apply commands.
* Pico: New subcommand of the search command, allows to reverse the
direction of search.
* Add /tls1, /tls1_1, /tls1_2 and /dtls1 to the definition of a
server to use different ways to connect using ssl, for example
{server.com/tls1} will attempt to connect to server.com at the
ssl imap port (port 993) and establish a connection using TLSv1.
These flags can be used in conjunction with the /ssl flag, the
ssl flag is redundant. Conversely, however, the /ssl flag does
not imply any of these flags; the /ssl flag means SSLv3 or, if
not available, SSLv2 in the SSL port.
* Alpine does not attempt to automatically reopen a collection that
was not opened due to cancellation by the user. Instead, the user
must try to open it explicitly.
* Experimental: Write the content-type of a message in lowercase,
as some non-compliant servers do not understand uppercase
content-type.
* Opening a folder updates recent count in maildrops (this
already works for other types of folders)
* Pico: Justification works without need of a predefined quote
string. This allows justification of blocks of text that are
indented with spaces.
* Decode the name of attachment names, so they can be written as
part of the description of the part.
* Replace tabs by spaces in From and Subject fields to control for
size in screen of these fields. Change only in index screen
display.
- Drop alpine-month_name-utf8.patch (solved differently upstream),
drop alpine-mime-type-workaround.patch (merged upstream)
- Add lint.diff to workaround new source code problems
-------------------------------------------------------------------
Mon Mar 3 11:54:13 UTC 2014 - jengelh@inai.de

View File

@ -1,7 +1,7 @@
#
# spec file for package alpine
#
# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@ -22,11 +22,13 @@ Name: alpine
Summary: Mail User Agent
License: Apache-2.0
Group: Productivity/Networking/Email/Clients
Version: 2.11
Version: 2.20
Release: 0
Url: http://patches.freeiz.com/alpine/
Source: http://patches.freeiz.com/alpine/release/src/%name-%version.tar.xz
# direct download does not work for openSUSE:Factory
# Source: http://patches.freeiz.com/alpine/release/src/%name-%version.tar.xz
Source: %name-%version.tar.xz
Source1: %name.png
Source2: %name.desktop
Patch1: pine-nonvoid-function.patch
@ -34,12 +36,11 @@ Patch2: make-use-of-strncat-safer.diff
Patch3: operation-may-be-undefined-warning.diff
Patch4: fix-implicit.patch
Patch5: alpine-gcc44.diff
Patch7: alpine-month_name-utf8.patch
Patch10: pico-fix-spurious-undef-warnings.diff
Patch20: pine-expression-warnings.diff
Patch40: pico-stripwhitespace.diff
Patch60: signal-and-panic-improvements.diff
Patch61: alpine-mime-type-workaround.patch
Patch61: lint.diff
#
# Eduardo Chappa's patches.
# http://patches.freeiz.com/alpine/
@ -64,8 +65,8 @@ BuildRequires: openssl-devel
BuildRequires: pam-devel
BuildRequires: update-desktop-files
BuildRequires: xz
# pgp4pine requires pine:
Provides: pine
# pgp4pine requires pine: (6.20 is what alpine writes to ~/.pinerc)
Provides: pine = 6.20
Obsoletes: pine4
Provides: pine4
@ -134,7 +135,6 @@ fi
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch7 -p1
%patch10 -p1
%patch20 -p1
%patch40 -p1
@ -275,7 +275,7 @@ fi
%doc %{_mandir}/man1/rpload.*
%doc %{_mandir}/man1/mailutil.*
%doc README NOTICE LICENSE
%doc doc/mailcap.unx doc/mime.types doc/tech-notes.txt doc/tech-notes/*.html
%doc doc/mailcap.unx doc/mime.types doc/tech-notes/tech-notes.txt doc/tech-notes/*.html
%{_bindir}/*pine
%{_bindir}/alpinef
%{_bindir}/rp*

View File

@ -8,11 +8,11 @@
pico/search.c | 6 -
7 files changed, 214 insertions(+), 8 deletions(-)
Index: alpine-2.11/pico/basic.c
Index: alpine-2.20/pico/basic.c
===================================================================
--- alpine-2.11.orig/pico/basic.c
+++ alpine-2.11/pico/basic.c
@@ -344,6 +344,189 @@ gotobop(int f, int n)
--- alpine-2.20.orig/pico/basic.c
+++ alpine-2.20/pico/basic.c
@@ -342,6 +342,189 @@ gotobop(int f, int n)
return(TRUE);
}
@ -202,10 +202,10 @@ Index: alpine-2.11/pico/basic.c
/*
* go forword to the end of the current paragraph
Index: alpine-2.11/pico/composer.c
Index: alpine-2.20/pico/composer.c
===================================================================
--- alpine-2.11.orig/pico/composer.c
+++ alpine-2.11/pico/composer.c
--- alpine-2.20.orig/pico/composer.c
+++ alpine-2.20/pico/composer.c
@@ -2015,7 +2015,7 @@ LineEdit(int allowedit, UCS *lastch)
tbufp = &strng[ods.p_len];
@ -229,10 +229,10 @@ Index: alpine-2.11/pico/composer.c
case (CTRL|KEY_LEFT): /* word skip left */
if(ods.p_ind > 0) /* Scoot one char left if possible */
ods.p_ind--;
Index: alpine-2.11/pico/display.c
Index: alpine-2.20/pico/display.c
===================================================================
--- alpine-2.11.orig/pico/display.c
+++ alpine-2.11/pico/display.c
--- alpine-2.20.orig/pico/display.c
+++ alpine-2.20/pico/display.c
@@ -1751,6 +1751,11 @@ mlreplyd(UCS *prompt, UCS *buf, int nbuf
b = &buf[ucs4_strlen(buf)];
continue;
@ -254,10 +254,10 @@ Index: alpine-2.11/pico/display.c
/* look for match in extra_v */
for(i = 0; i < 12; i++)
if(c && c == extra_v[i]){
Index: alpine-2.11/pico/ebind.h
Index: alpine-2.20/pico/ebind.h
===================================================================
--- alpine-2.11.orig/pico/ebind.h
+++ alpine-2.11/pico/ebind.h
--- alpine-2.20.orig/pico/ebind.h
+++ alpine-2.20/pico/ebind.h
@@ -61,7 +61,7 @@ KEYTAB keytab[NBINDS] = {
#ifdef MOUSE
{KEY_MOUSE, mousepress},
@ -287,10 +287,10 @@ Index: alpine-2.11/pico/ebind.h
#endif
#endif
{CTRL|'A', gotobol},
Index: alpine-2.11/pico/efunc.h
Index: alpine-2.20/pico/efunc.h
===================================================================
--- alpine-2.11.orig/pico/efunc.h
+++ alpine-2.11/pico/efunc.h
--- alpine-2.20.orig/pico/efunc.h
+++ alpine-2.20/pico/efunc.h
@@ -54,6 +54,9 @@ extern int forwline(int, int);
extern int backline(int, int);
extern int gotobop(int, int);
@ -301,10 +301,10 @@ Index: alpine-2.11/pico/efunc.h
extern int forwpage(int, int);
extern int backpage(int, int);
extern int scrollupline(int, int);
Index: alpine-2.11/pico/main.c
Index: alpine-2.20/pico/main.c
===================================================================
--- alpine-2.11.orig/pico/main.c
+++ alpine-2.11/pico/main.c
--- alpine-2.20.orig/pico/main.c
+++ alpine-2.20/pico/main.c
@@ -416,6 +416,12 @@ main(int argc, char *argv[])
emlwrite(_("You may possibly have new mail."), NULL);
}
@ -318,21 +318,21 @@ Index: alpine-2.11/pico/main.c
if(km_popped)
switch(c){
case NODATA:
Index: alpine-2.11/pico/search.c
Index: alpine-2.20/pico/search.c
===================================================================
--- alpine-2.11.orig/pico/search.c
+++ alpine-2.11/pico/search.c
@@ -278,7 +278,7 @@ forwsearch(int f, int n)
--- alpine-2.20.orig/pico/search.c
+++ alpine-2.20/pico/search.c
@@ -291,7 +291,7 @@ forwsearch(int f, int n)
}
if(status + curwp->w_doto >= llength(curwp->w_dotp) ||
- !eq(defpat[status],lgetc(curwp->w_dotp, curwp->w_doto + status).c))
+ !eq((unsigned char)defpat[status],lgetc(curwp->w_dotp, curwp->w_doto + status).c))
break; /* do nothing! */
+ !eq((unsigned char) defpat[status],lgetc(curwp->w_dotp, curwp->w_doto + status).c))
break;
status++;
}
@@ -931,7 +931,7 @@ forscan(int *wrapt, /* boolean indicatin
c = lgetc(curline, curoff++).c; /* get the char */
@@ -1096,7 +1096,7 @@ forscan(int *wrapt, /* boolean indicatin
c = lgetc(curline, curoff++).c; /* get the char */
/* test it against first char in pattern */
- if (eq(c, patrn[0]) != FALSE) { /* if we find it..*/
@ -340,7 +340,7 @@ Index: alpine-2.11/pico/search.c
/* setup match pointers */
matchline = curline;
matchoff = curoff;
@@ -952,7 +952,7 @@ forscan(int *wrapt, /* boolean indicatin
@@ -1117,7 +1117,7 @@ forscan(int *wrapt, /* boolean indicatin
return(FALSE);
/* and test it against the pattern */

View File

@ -11,11 +11,11 @@
pith/text.c | 9 ++
10 files changed, 308 insertions(+)
Index: alpine-2.11/alpine/confscroll.c
Index: alpine-2.20/alpine/confscroll.c
===================================================================
--- alpine-2.11.orig/alpine/confscroll.c
+++ alpine-2.11/alpine/confscroll.c
@@ -5183,6 +5183,9 @@ fix_side_effects(struct pine *ps, struct
--- alpine-2.20.orig/alpine/confscroll.c
+++ alpine-2.20/alpine/confscroll.c
@@ -5196,6 +5196,9 @@ fix_side_effects(struct pine *ps, struct
clear_index_cache(ps->mail_stream, 0);
}
@ -25,10 +25,10 @@ Index: alpine-2.11/alpine/confscroll.c
else if(var == &ps->vars[V_INIT_CMD_LIST]){
if(!revert)
q_status_message(SM_ASYNC, 0, 3,
Index: alpine-2.11/pith/conf.c
Index: alpine-2.20/pith/conf.c
===================================================================
--- alpine-2.11.orig/pith/conf.c
+++ alpine-2.11/pith/conf.c
--- alpine-2.20.orig/pith/conf.c
+++ alpine-2.20/pith/conf.c
@@ -228,6 +228,8 @@ CONF_TXT_T cf_text_deadlets[] = "Specif
CONF_TXT_T cf_text_fillcol[] = "Specifies the column of the screen where the composer should wrap.";
@ -38,7 +38,7 @@ Index: alpine-2.11/pith/conf.c
CONF_TXT_T cf_text_replystr[] = "Specifies the string to insert when replying to a message.";
CONF_TXT_T cf_text_quotereplstr[] = "Specifies the string to replace quotes with when viewing a message.";
@@ -560,6 +562,8 @@ static struct variable variables[] = {
@@ -562,6 +564,8 @@ static struct variable variables[] = {
NULL, cf_text_speller},
{"composer-wrap-column", 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0,
NULL, cf_text_fillcol},
@ -47,7 +47,7 @@ Index: alpine-2.11/pith/conf.c
{"reply-indent-string", 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0,
NULL, cf_text_replystr},
{"reply-leadin", 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0,
@@ -817,6 +821,8 @@ static struct variable variables[] = {
@@ -821,6 +825,8 @@ static struct variable variables[] = {
{"incoming-unseen-background-color", 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0},
{"signature-foreground-color", 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0},
{"signature-background-color", 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0},
@ -56,7 +56,7 @@ Index: alpine-2.11/pith/conf.c
{"prompt-foreground-color", 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0},
{"prompt-background-color", 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0},
{"header-general-foreground-color", 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0},
@@ -1985,6 +1991,8 @@ init_vars(struct pine *ps, void (*cmds_f
@@ -1990,6 +1996,8 @@ init_vars(struct pine *ps, void (*cmds_f
set_current_val(&vars[V_FORM_FOLDER], TRUE, TRUE);
set_current_val(&vars[V_EDITOR], TRUE, TRUE);
set_current_val(&vars[V_SPELLER], TRUE, TRUE);
@ -65,7 +65,7 @@ Index: alpine-2.11/pith/conf.c
set_current_val(&vars[V_IMAGE_VIEWER], TRUE, TRUE);
set_current_val(&vars[V_BROWSER], TRUE, TRUE);
set_current_val(&vars[V_SMTP_SERVER], TRUE, TRUE);
@@ -6483,6 +6491,7 @@ set_current_color_vals(struct pine *ps)
@@ -6549,6 +6557,7 @@ set_current_color_vals(struct pine *ps)
set_color_val(&vars[V_IND_OP_FORE_COLOR], 0);
set_color_val(&vars[V_INCUNSEEN_FORE_COLOR], 0);
set_color_val(&vars[V_SIGNATURE_FORE_COLOR], 0);
@ -73,7 +73,7 @@ Index: alpine-2.11/pith/conf.c
set_current_val(&ps->vars[V_INDEX_TOKEN_COLORS], TRUE, TRUE);
set_current_val(&ps->vars[V_VIEW_HDR_COLORS], TRUE, TRUE);
@@ -7664,6 +7673,8 @@ config_help(int var, int feature)
@@ -7732,6 +7741,8 @@ config_help(int var, int feature)
return(h_config_scroll_margin);
case V_DEADLETS :
return(h_config_deadlets);
@ -82,7 +82,7 @@ Index: alpine-2.11/pith/conf.c
case V_FILLCOL :
return(h_config_composer_wrap_column);
case V_TCPOPENTIMEO :
@@ -7829,6 +7840,9 @@ config_help(int var, int feature)
@@ -7897,6 +7908,9 @@ config_help(int var, int feature)
case V_SIGNATURE_FORE_COLOR :
case V_SIGNATURE_BACK_COLOR :
return(h_config_signature_color);
@ -92,10 +92,10 @@ Index: alpine-2.11/pith/conf.c
case V_PROMPT_FORE_COLOR :
case V_PROMPT_BACK_COLOR :
return(h_config_prompt_color);
Index: alpine-2.11/pith/conf.h
Index: alpine-2.20/pith/conf.h
===================================================================
--- alpine-2.11.orig/pith/conf.h
+++ alpine-2.11/pith/conf.h
--- alpine-2.20.orig/pith/conf.h
+++ alpine-2.20/pith/conf.h
@@ -161,6 +161,8 @@
#define GLO_EDITOR vars[V_EDITOR].global_val.l
#define VAR_SPELLER vars[V_SPELLER].current_val.p
@ -105,7 +105,7 @@ Index: alpine-2.11/pith/conf.h
#define VAR_FILLCOL vars[V_FILLCOL].current_val.p
#define GLO_FILLCOL vars[V_FILLCOL].global_val.p
#define VAR_DEADLETS vars[V_DEADLETS].current_val.p
@@ -456,6 +458,8 @@
@@ -458,6 +460,8 @@
#define GLO_SIGNATURE_FORE_COLOR vars[V_SIGNATURE_FORE_COLOR].global_val.p
#define VAR_SIGNATURE_BACK_COLOR vars[V_SIGNATURE_BACK_COLOR].current_val.p
#define GLO_SIGNATURE_BACK_COLOR vars[V_SIGNATURE_BACK_COLOR].global_val.p
@ -114,10 +114,10 @@ Index: alpine-2.11/pith/conf.h
#define VAR_PROMPT_FORE_COLOR vars[V_PROMPT_FORE_COLOR].current_val.p
#define VAR_PROMPT_BACK_COLOR vars[V_PROMPT_BACK_COLOR].current_val.p
#define VAR_VIEW_HDR_COLORS vars[V_VIEW_HDR_COLORS].current_val.l
Index: alpine-2.11/pith/conftype.h
Index: alpine-2.20/pith/conftype.h
===================================================================
--- alpine-2.11.orig/pith/conftype.h
+++ alpine-2.11/pith/conftype.h
--- alpine-2.20.orig/pith/conftype.h
+++ alpine-2.20/pith/conftype.h
@@ -80,6 +80,7 @@ typedef enum { V_PERSONAL_NAME = 0
, V_EDITOR
, V_SPELLER
@ -126,7 +126,7 @@ Index: alpine-2.11/pith/conftype.h
, V_REPLY_STRING
, V_REPLY_INTRO
, V_QUOTE_REPLACE_STRING
@@ -230,6 +231,8 @@ typedef enum { V_PERSONAL_NAME = 0
@@ -231,6 +232,8 @@ typedef enum { V_PERSONAL_NAME = 0
, V_INCUNSEEN_BACK_COLOR
, V_SIGNATURE_FORE_COLOR
, V_SIGNATURE_BACK_COLOR
@ -135,10 +135,10 @@ Index: alpine-2.11/pith/conftype.h
, V_PROMPT_FORE_COLOR
, V_PROMPT_BACK_COLOR
, V_HEADER_GENERAL_FORE_COLOR
Index: alpine-2.11/pith/mailview.c
Index: alpine-2.20/pith/mailview.c
===================================================================
--- alpine-2.11.orig/pith/mailview.c
+++ alpine-2.11/pith/mailview.c
--- alpine-2.20.orig/pith/mailview.c
+++ alpine-2.20/pith/mailview.c
@@ -282,6 +282,14 @@ format_body(long int msgno, BODY *body,
if((flgs & FM_DISPLAY)
&& !(flgs & FM_NOCOLOR)
@ -345,10 +345,10 @@ Index: alpine-2.11/pith/mailview.c
/*
* The argument fieldname is something like "Subject:..." or "Subject".
Index: alpine-2.11/pith/mailview.h
Index: alpine-2.20/pith/mailview.h
===================================================================
--- alpine-2.11.orig/pith/mailview.h
+++ alpine-2.11/pith/mailview.h
--- alpine-2.20.orig/pith/mailview.h
+++ alpine-2.20/pith/mailview.h
@@ -30,6 +30,12 @@
#include "../pith/color.h"
@ -378,11 +378,11 @@ Index: alpine-2.11/pith/mailview.h
/*
* BUG: BELOW IS UNIX/PC ONLY since config'd browser means nothing to webpine
Index: alpine-2.11/pith/pine.hlp
Index: alpine-2.20/pith/pine.hlp
===================================================================
--- alpine-2.11.orig/pith/pine.hlp
+++ alpine-2.11/pith/pine.hlp
@@ -3563,6 +3563,7 @@ There are also additional details on
--- alpine-2.20.orig/pith/pine.hlp
+++ alpine-2.20/pith/pine.hlp
@@ -3833,6 +3833,7 @@ There are also additional details on
<li><a href="h_config_print_cat">OPTION: <!--#echo var="VAR_personal-print-category"--></a>
<li><a href="h_config_print_command">OPTION: <!--#echo var="VAR_personal-print-command"--></a>
<li><a href="h_config_post_char_set">OPTION: <!--#echo var="VAR_posting-character-set"--></a>
@ -390,7 +390,7 @@ Index: alpine-2.11/pith/pine.hlp
<li><a href="h_config_postponed_folder">OPTION: <!--#echo var="VAR_postponed-folder"--></a>
<li><a href="h_config_print_font_char_set">OPTION: Print-Font-Char-Set</a>
<li><a href="h_config_print_font_name">OPTION: Print-Font-Name</a>
@@ -3591,6 +3592,7 @@ There are also additional details on
@@ -3861,6 +3862,7 @@ There are also additional details on
<li><a href="h_config_sending_filter">OPTION: <!--#echo var="VAR_sending-filters"--></a>
<li><a href="h_config_sendmail_path">OPTION: <!--#echo var="VAR_sendmail-path"--></a>
<li><a href="h_config_signature_color">OPTION: Signature Color</a>
@ -398,7 +398,7 @@ Index: alpine-2.11/pith/pine.hlp
<li><a href="h_config_signature_file">OPTION: <!--#echo var="VAR_signature-file"--></a>
<li><a href="h_config_smtp_server">OPTION: <!--#echo var="VAR_smtp-server"--></a>
<li><a href="h_config_sort_key">OPTION: <!--#echo var="VAR_sort-key"--></a>
@@ -22838,6 +22840,43 @@ That won't work because spell works in a
@@ -23234,6 +23236,43 @@ That won't work because spell works in a
&lt;End of help on this topic&gt;
</BODY>
</HTML>
@ -442,7 +442,7 @@ Index: alpine-2.11/pith/pine.hlp
====== h_config_display_filters =====
<HTML>
<HEAD>
@@ -31455,6 +31494,30 @@ the Quote3 Color is black characters on
@@ -31851,6 +31890,30 @@ the Quote3 Color is black characters on
<P>
<A HREF="h_color_setup">Descriptions of the available commands</A>
<P>
@ -473,10 +473,10 @@ Index: alpine-2.11/pith/pine.hlp
Look <A HREF="h_edit_nav_cmds">here</A>
to see the available Editing and Navigation commands.
<P>
Index: alpine-2.11/pith/state.c
Index: alpine-2.20/pith/state.c
===================================================================
--- alpine-2.11.orig/pith/state.c
+++ alpine-2.11/pith/state.c
--- alpine-2.20.orig/pith/state.c
+++ alpine-2.20/pith/state.c
@@ -131,6 +131,9 @@ free_pine_struct(struct pine **pps)
if((*pps)->folders_dir != NULL)
fs_give((void **)&(*pps)->folders_dir);
@ -487,11 +487,11 @@ Index: alpine-2.11/pith/state.c
if((*pps)->ui.homedir)
fs_give((void **)&(*pps)->ui.homedir);
Index: alpine-2.11/pith/state.h
Index: alpine-2.20/pith/state.h
===================================================================
--- alpine-2.11.orig/pith/state.h
+++ alpine-2.11/pith/state.h
@@ -326,6 +326,8 @@ struct pine {
--- alpine-2.20.orig/pith/state.h
+++ alpine-2.20/pith/state.h
@@ -331,6 +331,8 @@ struct pine {
char *display_charmap; /* needs to be freed */
char *keyboard_charmap; /* needs to be freed */
void *input_cs;
@ -500,10 +500,10 @@ Index: alpine-2.11/pith/state.h
char *posting_charmap; /* needs to be freed */
Index: alpine-2.11/pith/text.c
Index: alpine-2.20/pith/text.c
===================================================================
--- alpine-2.11.orig/pith/text.c
+++ alpine-2.11/pith/text.c
--- alpine-2.20.orig/pith/text.c
+++ alpine-2.20/pith/text.c
@@ -171,6 +171,15 @@ decode_text(ATTACH_S *att,
gf_url_hilite_opt(&uh,handlesp,0));
}

View File

@ -28,19 +28,19 @@
web/src/alpined.d/alpined.c | 4
27 files changed, 1870 insertions(+), 155 deletions(-)
Index: alpine-2.11/alpine/arg.c
Index: alpine-2.20/alpine/arg.c
===================================================================
--- alpine-2.11.orig/alpine/arg.c
+++ alpine-2.11/alpine/arg.c
@@ -60,6 +60,7 @@ static char args_err_missing_passfile[]
static char args_err_non_abs_passfile[] = N_("argument to \"-passfile\" should be fully-qualified");
--- alpine-2.20.orig/alpine/arg.c
+++ alpine-2.20/alpine/arg.c
@@ -64,6 +64,7 @@ static char args_err_non_abs_pwdcertdir[
#endif /* SMIME inside PASSFILE */
#endif
static char args_err_missing_sort[] = N_("missing argument for option \"-sort\"");
+static char args_err_missing_thread_sort[] = N_("missing argument for option \"-threadsort\"");
static char args_err_missing_flag_arg[] = N_("missing argument for flag \"%c\"");
static char args_err_missing_flag_num[] = N_("Non numeric argument for flag \"%c\"");
static char args_err_missing_debug_num[] = N_("Non numeric argument for \"%s\"");
@@ -103,6 +104,7 @@ N_(" -k \t\tKeys - Force use of function
@@ -107,6 +108,7 @@ N_(" -k \t\tKeys - Force use of function
N_(" -z \t\tSuspend - allow use of ^Z suspension"),
N_(" -r \t\tRestricted - can only send mail to oneself"),
N_(" -sort <sort>\tSort - Specify sort order of folder:"),
@ -48,7 +48,7 @@ Index: alpine-2.11/alpine/arg.c
N_("\t\t\tarrival, subject, threaded, orderedsubject, date,"),
N_("\t\t\tfrom, size, score, to, cc, /reverse"),
N_(" -i\t\tIndex - Go directly to index, bypassing main menu"),
@@ -192,6 +194,7 @@ pine_args(struct pine *pine_state, int a
@@ -200,6 +202,7 @@ pine_args(struct pine *pine_state, int a
char *cmd_list = NULL;
char *debug_str = NULL;
char *sort = NULL;
@ -56,7 +56,7 @@ Index: alpine-2.11/alpine/arg.c
char *pinerc_file = NULL;
char *lc = NULL;
int do_help = 0;
@@ -363,6 +366,17 @@ Loop: while(--ac > 0)
@@ -396,6 +399,17 @@ Loop: while(--ac > 0)
goto Loop;
}
@ -74,10 +74,10 @@ Index: alpine-2.11/alpine/arg.c
else if(strcmp(*av, "url") == 0){
if(args->action == aaFolder && !args->data.folder){
args->action = aaURL;
Index: alpine-2.11/alpine/confscroll.c
Index: alpine-2.20/alpine/confscroll.c
===================================================================
--- alpine-2.11.orig/alpine/confscroll.c
+++ alpine-2.11/alpine/confscroll.c
--- alpine-2.20.orig/alpine/confscroll.c
+++ alpine-2.20/alpine/confscroll.c
@@ -139,7 +139,7 @@ char *yesno_pretty_value(struct pine
char *radio_pretty_value(struct pine *, CONF_S *);
char *sigfile_pretty_value(struct pine *, CONF_S *);
@ -97,7 +97,7 @@ Index: alpine-2.11/alpine/confscroll.c
standard_radio_var(ps, (*cl)->var) ||
(*cl)->var == startup_ptr)))
return;
@@ -2923,7 +2924,7 @@ radiobutton_tool(struct pine *ps, int cm
@@ -2927,7 +2928,7 @@ radiobutton_tool(struct pine *ps, int cm
}
set_current_val((*cl)->var, TRUE, TRUE);
@ -106,7 +106,7 @@ Index: alpine-2.11/alpine/confscroll.c
ps->def_sort = def_sort;
ps->def_sort_rev = def_sort_rev;
}
@@ -2932,6 +2933,37 @@ radiobutton_tool(struct pine *ps, int cm
@@ -2936,6 +2937,37 @@ radiobutton_tool(struct pine *ps, int cm
ps->mangled_body = 1; /* BUG: redraw it all for now? */
rv = 1;
}
@ -144,7 +144,7 @@ Index: alpine-2.11/alpine/confscroll.c
else
q_status_message(SM_ORDER | SM_DING, 3, 6,
"Programmer botch! Unknown radiobutton type.");
@@ -3794,7 +3826,9 @@ pretty_value(struct pine *ps, CONF_S *cl
@@ -3799,7 +3831,9 @@ pretty_value(struct pine *ps, CONF_S *cl
else if(standard_radio_var(ps, v) || v == startup_ptr)
return(radio_pretty_value(ps, cl));
else if(v == &ps->vars[V_SORT_KEY])
@ -155,7 +155,7 @@ Index: alpine-2.11/alpine/confscroll.c
else if(v == &ps->vars[V_SIGNATURE_FILE])
return(sigfile_pretty_value(ps, cl));
else if(v == &ps->vars[V_USE_ONLY_DOMAIN_NAME])
@@ -4325,14 +4359,14 @@ color_pretty_value(struct pine *ps, CONF
@@ -4330,14 +4364,14 @@ color_pretty_value(struct pine *ps, CONF
char *
@ -173,7 +173,7 @@ Index: alpine-2.11/alpine/confscroll.c
{
char tmp[6*MAXPATH];
char *pvalnorm, *pvalexc, *pval;
@@ -4382,7 +4416,7 @@ generalized_sort_pretty_value(struct pin
@@ -4387,7 +4421,7 @@ generalized_sort_pretty_value(struct pin
}
else if(fixed){
pval = v->fixed_val.p;
@ -182,7 +182,7 @@ Index: alpine-2.11/alpine/confscroll.c
is_the_one = (var_sort_rev == line_sort_rev && var_sort == line_sort);
utf8_snprintf(tmp, sizeof(tmp), "(%c) %s%-*w%*s%s",
@@ -4393,9 +4427,9 @@ generalized_sort_pretty_value(struct pin
@@ -4398,9 +4432,9 @@ generalized_sort_pretty_value(struct pin
is_the_one ? " (value is fixed)" : "");
}
else if(is_set_for_this_level){
@ -194,7 +194,7 @@ Index: alpine-2.11/alpine/confscroll.c
the_exc_one = (editing_normal_which_isnt_except && pvalexc &&
exc_sort_rev == line_sort_rev && exc_sort == line_sort);
utf8_snprintf(tmp, sizeof(tmp), "(%c) %s%-*w%*s%s",
@@ -4413,7 +4447,7 @@ generalized_sort_pretty_value(struct pin
@@ -4418,7 +4452,7 @@ generalized_sort_pretty_value(struct pin
}
else{
if(pvalexc){
@ -203,7 +203,7 @@ Index: alpine-2.11/alpine/confscroll.c
is_the_one = (exc_sort_rev == line_sort_rev &&
exc_sort == line_sort);
utf8_snprintf(tmp, sizeof(tmp), "( ) %s%-*w%*s%s",
@@ -4424,7 +4458,7 @@ generalized_sort_pretty_value(struct pin
@@ -4429,7 +4463,7 @@ generalized_sort_pretty_value(struct pin
}
else{
pval = v->current_val.p;
@ -212,7 +212,7 @@ Index: alpine-2.11/alpine/confscroll.c
is_the_one = ((pval || default_ok) &&
var_sort_rev == line_sort_rev &&
var_sort == line_sort);
@@ -5548,9 +5582,15 @@ fix_side_effects(struct pine *ps, struct
@@ -5571,9 +5605,15 @@ fix_side_effects(struct pine *ps, struct
else if(revert && var == &ps->vars[V_SORT_KEY]){
int def_sort_rev;
@ -229,10 +229,10 @@ Index: alpine-2.11/alpine/confscroll.c
else if(var == &ps->vars[V_THREAD_MORE_CHAR] ||
var == &ps->vars[V_THREAD_EXP_CHAR] ||
var == &ps->vars[V_THREAD_LASTREPLY_CHAR]){
Index: alpine-2.11/alpine/confscroll.h
Index: alpine-2.20/alpine/confscroll.h
===================================================================
--- alpine-2.11.orig/alpine/confscroll.h
+++ alpine-2.11/alpine/confscroll.h
--- alpine-2.20.orig/alpine/confscroll.h
+++ alpine-2.20/alpine/confscroll.h
@@ -95,7 +95,7 @@ int checkbox_tool(struct pine *, int, C
int radiobutton_tool(struct pine *, int, CONF_S **, unsigned);
int yesno_tool(struct pine *, int, CONF_S **, unsigned);
@ -242,10 +242,10 @@ Index: alpine-2.11/alpine/confscroll.h
int exclude_config_var(struct pine *, struct variable *, int);
int config_exit_cmd(unsigned);
int simple_exit_cmd(unsigned);
Index: alpine-2.11/alpine/keymenu.c
Index: alpine-2.20/alpine/keymenu.c
===================================================================
--- alpine-2.11.orig/alpine/keymenu.c
+++ alpine-2.11/alpine/keymenu.c
--- alpine-2.20.orig/alpine/keymenu.c
+++ alpine-2.20/alpine/keymenu.c
@@ -650,10 +650,25 @@ struct key index_keys[] =
RCOMPOSE_MENU,
HOMEKEY_MENU,
@ -319,10 +319,10 @@ Index: alpine-2.11/alpine/keymenu.c
INST_KEY_MENU(view_keymenu, view_keys);
Index: alpine-2.11/alpine/keymenu.h
Index: alpine-2.20/alpine/keymenu.h
===================================================================
--- alpine-2.11.orig/alpine/keymenu.h
+++ alpine-2.11/alpine/keymenu.h
--- alpine-2.20.orig/alpine/keymenu.h
+++ alpine-2.20/alpine/keymenu.h
@@ -215,6 +215,19 @@ struct key_menu {
#define MC_DECRYPT 802
#define MC_QUOTA 803
@ -341,12 +341,12 @@ Index: alpine-2.11/alpine/keymenu.h
+#define MC_CTHREAD 816
+#define MC_OTHREAD 817
/*
* Some standard Key/Command Bindings
Index: alpine-2.11/alpine/mailcmd.c
/* Commands for S/MIME screens */
Index: alpine-2.20/alpine/mailcmd.c
===================================================================
--- alpine-2.11.orig/alpine/mailcmd.c
+++ alpine-2.11/alpine/mailcmd.c
--- alpine-2.20.orig/alpine/mailcmd.c
+++ alpine-2.20/alpine/mailcmd.c
@@ -113,7 +113,7 @@ int select_by_thread(MAILSTREAM *, MSG
char *choose_a_rule(int);
int select_by_keyword(MAILSTREAM *, SEARCHSET **);
@ -355,8 +355,8 @@ Index: alpine-2.11/alpine/mailcmd.c
+int select_sort(struct pine *, int, SortOrder *, int *, int);
int print_index(struct pine *, MSGNO_S *, int);
@@ -1335,7 +1335,7 @@ get_out:
/*
@@ -1371,7 +1371,7 @@ get_out:
if(any_messages(msgmap, NULL, NULL)){
if(any_lflagged(msgmap, MN_SLCT) > 0L){
if(apply_command(state, stream, msgmap, 0,
@ -365,7 +365,7 @@ Index: alpine-2.11/alpine/mailcmd.c
if(F_ON(F_AUTO_UNSELECT, state)){
agg_select_all(stream, msgmap, NULL, 0);
unzoom_index(state, stream, msgmap);
@@ -1353,23 +1353,35 @@ get_out:
@@ -1389,23 +1389,35 @@ get_out:
/*-------- Sort command -------*/
case MC_SORT :
@ -403,7 +403,7 @@ Index: alpine-2.11/alpine/mailcmd.c
}
state->mangled_footer = 1;
@@ -3174,6 +3186,10 @@ cmd_expunge(struct pine *state, MAILSTRE
@@ -3286,6 +3298,10 @@ cmd_expunge(struct pine *state, MAILSTRE
if(SORT_IS_THREADED(msgmap))
refresh_sort(stream, msgmap, SRT_NON);
@ -414,7 +414,7 @@ Index: alpine-2.11/alpine/mailcmd.c
state->mangled_body = 1;
state->mangled_header = 1;
q_status_message2(SM_ORDER, 0, 4,
@@ -3268,6 +3284,9 @@ cmd_expunge(struct pine *state, MAILSTRE
@@ -3387,6 +3403,9 @@ cmd_expunge(struct pine *state, MAILSTRE
*/
if(SORT_IS_THREADED(msgmap))
refresh_sort(stream, msgmap, SRT_NON);
@ -423,8 +423,8 @@ Index: alpine-2.11/alpine/mailcmd.c
+ kolapse_thread(state, stream, msgmap, '[', 0);
}
else{
if(del_count)
@@ -6945,7 +6964,7 @@ select_by_current(struct pine *state, MS
if(del_count){
@@ -7090,7 +7109,7 @@ select_by_current(struct pine *state, MS
* Maybe it makes sense to zoom after a select but not after a colon
* command even though they are very similar.
*/
@ -433,7 +433,7 @@ Index: alpine-2.11/alpine/mailcmd.c
}
else{
if((all_selected =
@@ -7001,7 +7020,7 @@ select_by_current(struct pine *state, MS
@@ -7146,7 +7165,7 @@ select_by_current(struct pine *state, MS
----*/
int
apply_command(struct pine *state, MAILSTREAM *stream, MSGNO_S *msgmap,
@ -442,7 +442,7 @@ Index: alpine-2.11/alpine/mailcmd.c
{
int i = 8, /* number of static entries in sel_opts3 */
rv = 0,
@@ -7153,9 +7172,19 @@ apply_command(struct pine *state, MAILST
@@ -7305,9 +7324,19 @@ apply_command(struct pine *state, MAILST
collapse_or_expand(state, stream, msgmap,
F_ON(F_SLASH_COLL_ENTIRE, ps_global)
? 0L
@ -463,7 +463,7 @@ Index: alpine-2.11/alpine/mailcmd.c
case ':' :
select_thread_stmp(state, stream, msgmap);
break;
@@ -9014,10 +9043,10 @@ Args: state -- pine state pointer
@@ -9171,10 +9200,10 @@ Args: state -- pine state pointer
Returns 0 if it was cancelled, 1 otherwise.
----*/
int
@ -476,7 +476,7 @@ Index: alpine-2.11/alpine/mailcmd.c
int deefault = 'a', retval = 1;
HelpType help;
ESCKEY_S sorts[14];
@@ -9050,17 +9079,26 @@ select_sort(struct pine *state, int ql,
@@ -9207,17 +9236,26 @@ select_sort(struct pine *state, int ql,
strncpy(prompt, _("Choose type of sort, or 'R' to reverse current sort : "),
sizeof(prompt));
@ -514,7 +514,7 @@ Index: alpine-2.11/alpine/mailcmd.c
}
sorts[i].ch = 'r';
@@ -9084,8 +9122,17 @@ select_sort(struct pine *state, int ql,
@@ -9241,8 +9279,17 @@ select_sort(struct pine *state, int ql,
state->mangled_body = 1; /* signal screen's changed */
if(s == 'r')
*rev = !mn_get_revsort(state->msgmap);
@ -533,7 +533,7 @@ Index: alpine-2.11/alpine/mailcmd.c
if(F_ON(F_SHOW_SORT, ps_global))
ps_global->mangled_header = 1;
@@ -9470,3 +9517,378 @@ flag_submenu(mc)
@@ -9627,3 +9674,378 @@ flag_submenu(mc)
}
#endif /* _WINDOWS */
@ -912,11 +912,11 @@ Index: alpine-2.11/alpine/mailcmd.c
+ expand_thread(state, stream, msgmap, 0);
+}
+
Index: alpine-2.11/alpine/mailcmd.h
Index: alpine-2.20/alpine/mailcmd.h
===================================================================
--- alpine-2.11.orig/alpine/mailcmd.h
+++ alpine-2.11/alpine/mailcmd.h
@@ -84,7 +84,7 @@ char *broach_folder(int, int, int *,
--- alpine-2.20.orig/alpine/mailcmd.h
+++ alpine-2.20/alpine/mailcmd.h
@@ -87,7 +87,7 @@ char *broach_folder(int, int, int *,
int ask_mailbox_reopen(struct pine *, int *);
void visit_folder(struct pine *, char *, CONTEXT_S *, MAILSTREAM *, unsigned long);
int select_by_current(struct pine *, MSGNO_S *, CmdWhere);
@ -925,7 +925,7 @@ Index: alpine-2.11/alpine/mailcmd.h
char **choose_list_of_keywords(void);
char *choose_a_charset(int);
char **choose_list_of_charsets(void);
@@ -102,6 +102,15 @@ int any_selected_callback(int, long)
@@ -105,6 +105,15 @@ int any_selected_callback(int, long)
int flag_callback(int, long);
MPopup *flag_submenu(MESSAGECACHE *);
#endif
@ -942,10 +942,10 @@ Index: alpine-2.11/alpine/mailcmd.h
+int expand_this_thread(struct pine *, MAILSTREAM *, MSGNO_S *, int, int);
#endif /* PINE_MAILCMD_INCLUDED */
Index: alpine-2.11/alpine/mailindx.c
Index: alpine-2.20/alpine/mailindx.c
===================================================================
--- alpine-2.11.orig/alpine/mailindx.c
+++ alpine-2.11/alpine/mailindx.c
--- alpine-2.20.orig/alpine/mailindx.c
+++ alpine-2.20/alpine/mailindx.c
@@ -561,6 +561,7 @@ index_lister(struct pine *state, CONTEXT
/*---------- Scroll line up ----------*/
@ -1102,7 +1102,7 @@ Index: alpine-2.11/alpine/mailindx.c
/* increment current */
if(cmd == MC_DELETE){
advance_cur_after_delete(state, stream, msgmap,
@@ -2675,6 +2773,7 @@ top_ent_calc(MAILSTREAM *stream, MSGNO_S
@@ -2673,6 +2771,7 @@ top_ent_calc(MAILSTREAM *stream, MSGNO_S
n = mn_raw2m(msgs, thrd->rawno);
while(thrd){
@ -1110,7 +1110,7 @@ Index: alpine-2.11/alpine/mailindx.c
if(!msgline_hidden(stream, msgs, n, 0)
&& (++m % lines_per_page) == 1L)
t = n;
@@ -2743,11 +2842,12 @@ top_ent_calc(MAILSTREAM *stream, MSGNO_S
@@ -2741,11 +2840,12 @@ top_ent_calc(MAILSTREAM *stream, MSGNO_S
/* n is the end of this thread */
while(thrd){
@ -1127,7 +1127,7 @@ Index: alpine-2.11/alpine/mailindx.c
else
thrd = NULL;
}
@@ -2855,7 +2955,7 @@ warn_other_cmds(void)
@@ -2853,7 +2953,7 @@ warn_other_cmds(void)
void
thread_command(struct pine *state, MAILSTREAM *stream, MSGNO_S *msgmap,
@ -1136,7 +1136,7 @@ Index: alpine-2.11/alpine/mailindx.c
{
PINETHRD_S *thrd = NULL;
unsigned long rawno, save_branch;
@@ -2904,7 +3004,7 @@ thread_command(struct pine *state, MAILS
@@ -2902,7 +3002,7 @@ thread_command(struct pine *state, MAILS
cancel_busy_cue(0);
(void ) apply_command(state, stream, msgmap, preloadkeystroke, flags,
@ -1145,7 +1145,7 @@ Index: alpine-2.11/alpine/mailindx.c
/* restore the original flags */
copy_lflags(stream, msgmap, MN_STMP, MN_SLCT);
@@ -3398,7 +3498,7 @@ index_sort_callback(set, order)
@@ -3396,7 +3496,7 @@ index_sort_callback(set, order)
if(set){
sort_folder(ps_global->mail_stream, ps_global->msgmap,
order & 0x000000ff,
@ -1154,10 +1154,10 @@ Index: alpine-2.11/alpine/mailindx.c
mswin_beginupdate();
update_titlebar_message();
update_titlebar_status();
Index: alpine-2.11/alpine/mailindx.h
Index: alpine-2.20/alpine/mailindx.h
===================================================================
--- alpine-2.11.orig/alpine/mailindx.h
+++ alpine-2.11/alpine/mailindx.h
--- alpine-2.20.orig/alpine/mailindx.h
+++ alpine-2.20/alpine/mailindx.h
@@ -103,7 +103,7 @@ int truncate_subj_and_from_strings(voi
void paint_index_hline(MAILSTREAM *, long, ICE_S *);
void setup_index_state(int);
@ -1167,11 +1167,11 @@ Index: alpine-2.11/alpine/mailindx.h
COLOR_PAIR *apply_rev_color(COLOR_PAIR *, int);
#ifdef _WINDOWS
int index_sort_callback(int, long);
Index: alpine-2.11/alpine/mailview.c
Index: alpine-2.20/alpine/mailview.c
===================================================================
--- alpine-2.11.orig/alpine/mailview.c
+++ alpine-2.11/alpine/mailview.c
@@ -3364,6 +3364,52 @@ scrolltool(SCROLL_S *sparms)
--- alpine-2.20.orig/alpine/mailview.c
+++ alpine-2.20/alpine/mailview.c
@@ -3369,6 +3369,52 @@ scrolltool(SCROLL_S *sparms)
print_to_printer(sparms);
break;
@ -1224,10 +1224,10 @@ Index: alpine-2.11/alpine/mailview.c
/* ------- First handle on Line ------ */
case MC_GOTOBOL :
Index: alpine-2.11/alpine/roleconf.c
Index: alpine-2.20/alpine/roleconf.c
===================================================================
--- alpine-2.11.orig/alpine/roleconf.c
+++ alpine-2.11/alpine/roleconf.c
--- alpine-2.20.orig/alpine/roleconf.c
+++ alpine-2.20/alpine/roleconf.c
@@ -4478,11 +4478,11 @@ role_config_edit_screen(struct pine *ps,
ctmp->tool = role_sort_tool;
ctmp->valoffset = rindent;
@ -1269,10 +1269,10 @@ Index: alpine-2.11/alpine/roleconf.c
(*result)->action->sort_is_set = 1;
(*result)->action->sortorder = def_sort;
(*result)->action->revsort = (def_sort_rev ? 1 : 0);
Index: alpine-2.11/alpine/setup.c
Index: alpine-2.20/alpine/setup.c
===================================================================
--- alpine-2.11.orig/alpine/setup.c
+++ alpine-2.11/alpine/setup.c
--- alpine-2.20.orig/alpine/setup.c
+++ alpine-2.20/alpine/setup.c
@@ -258,7 +258,7 @@ option_screen(struct pine *ps, int edit_
ctmpa->flags |= CF_NOSELECT;
ctmpa->value = cpystr("--- ----------------------");
@ -1338,7 +1338,7 @@ Index: alpine-2.11/alpine/setup.c
else if(vtmp == &ps->vars[V_USE_ONLY_DOMAIN_NAME]){ /* yesno case */
ctmpa->keymenu = &config_yesno_keymenu;
ctmpa->tool = yesno_tool;
@@ -464,6 +513,15 @@ option_screen(struct pine *ps, int edit_
@@ -465,6 +514,15 @@ option_screen(struct pine *ps, int edit_
}
}
@ -1354,10 +1354,10 @@ Index: alpine-2.11/alpine/setup.c
treat_color_vars_as_text = 0;
free_saved_config(ps, &vsave, expose_hidden_config);
#ifdef _WINDOWS
Index: alpine-2.11/pith/conf.c
Index: alpine-2.20/pith/conf.c
===================================================================
--- alpine-2.11.orig/pith/conf.c
+++ alpine-2.11/pith/conf.c
--- alpine-2.20.orig/pith/conf.c
+++ alpine-2.20/pith/conf.c
@@ -206,6 +206,8 @@ CONF_TXT_T cf_text_fcc_name_rule[] = "De
CONF_TXT_T cf_text_sort_key[] = "Sets presentation order of messages in Index. Choices:\n# Subject, From, Arrival, Date, Size, To, Cc, OrderedSubj, Score, and Thread.\n# Order may be reversed by appending /Reverse. Default: \"Arrival\".";
@ -1367,7 +1367,7 @@ Index: alpine-2.11/pith/conf.c
CONF_TXT_T cf_text_addrbook_sort_rule[] = "Sets presentation order of address book entries. Choices: dont-sort,\n# fullname-with-lists-last, fullname, nickname-with-lists-last, nickname\n# Default: \"fullname-with-lists-last\".";
CONF_TXT_T cf_text_folder_sort_rule[] = "Sets presentation order of folder list entries. Choices: alphabetical,\n# alpha-with-dirs-last, alpha-with-dirs-first.\n# Default: \"alpha-with-directories-last\".";
@@ -522,6 +524,8 @@ static struct variable variables[] = {
@@ -524,6 +526,8 @@ static struct variable variables[] = {
NULL, cf_text_fcc_name_rule},
{"sort-key", 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0,
NULL, cf_text_sort_key},
@ -1376,7 +1376,7 @@ Index: alpine-2.11/pith/conf.c
{"addrbook-sort-rule", 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0,
"Address Book Sort Rule", cf_text_addrbook_sort_rule},
{"folder-sort-rule", 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0,
@@ -1572,7 +1576,7 @@ init_vars(struct pine *ps, void (*cmds_f
@@ -1576,7 +1580,7 @@ init_vars(struct pine *ps, void (*cmds_f
register struct variable *vars = ps->vars;
int obs_header_in_reply = 0, /* the obs_ variables are to */
obs_old_style_reply = 0, /* support backwards compatibility */
@ -1385,7 +1385,7 @@ Index: alpine-2.11/pith/conf.c
long rvl;
PINERC_S *fixedprc = NULL;
FeatureLevel obs_feature_level;
@@ -1597,6 +1601,7 @@ init_vars(struct pine *ps, void (*cmds_f
@@ -1601,6 +1605,7 @@ init_vars(struct pine *ps, void (*cmds_f
GLO_FEATURE_LEVEL = cpystr("sappling");
GLO_OLD_STYLE_REPLY = cpystr(DF_OLD_STYLE_REPLY);
GLO_SORT_KEY = cpystr(DF_SORT_KEY);
@ -1393,7 +1393,7 @@ Index: alpine-2.11/pith/conf.c
GLO_SAVED_MSG_NAME_RULE = cpystr(DF_SAVED_MSG_NAME_RULE);
GLO_FCC_RULE = cpystr(DF_FCC_RULE);
GLO_AB_SORT_RULE = cpystr(DF_AB_SORT_RULE);
@@ -2505,7 +2510,7 @@ init_vars(struct pine *ps, void (*cmds_f
@@ -2517,7 +2522,7 @@ init_vars(struct pine *ps, void (*cmds_f
set_current_val(&vars[V_ARCHIVED_FOLDERS], TRUE, TRUE);
set_current_val(&vars[V_INCOMING_FOLDERS], TRUE, TRUE);
set_current_val(&vars[V_SORT_KEY], TRUE, TRUE);
@ -1402,7 +1402,7 @@ Index: alpine-2.11/pith/conf.c
snprintf(tmp_20k_buf, SIZEOF_20KBUF, "Sort type \"%.200s\" is invalid", VAR_SORT_KEY);
init_error(ps, SM_ORDER | SM_DING, 3, 5, tmp_20k_buf);
ps->def_sort = SortArrival;
@@ -2514,6 +2519,17 @@ init_vars(struct pine *ps, void (*cmds_f
@@ -2526,6 +2531,17 @@ init_vars(struct pine *ps, void (*cmds_f
else
ps->def_sort_rev = def_sort_rev;
@ -1420,7 +1420,7 @@ Index: alpine-2.11/pith/conf.c
cur_rule_value(&vars[V_SAVED_MSG_NAME_RULE], TRUE, TRUE);
{NAMEVAL_S *v; int i;
for(i = 0; (v = save_msg_rules(i)); i++)
@@ -2937,6 +2953,8 @@ feature_list(int index)
@@ -2949,6 +2965,8 @@ feature_list(int index)
F_COLOR_LINE_IMPORTANT, h_config_color_thrd_import, PREF_INDX, 0},
{"thread-sorts-by-arrival", "Thread Sorts by Arrival",
F_THREAD_SORTS_BY_ARRIVAL, h_config_thread_sorts_by_arrival, PREF_INDX, 0},
@ -1429,7 +1429,7 @@ Index: alpine-2.11/pith/conf.c
/* Viewer prefs */
{"enable-msg-view-addresses", "Enable Message View Address Links",
@@ -7619,6 +7637,8 @@ config_help(int var, int feature)
@@ -7685,6 +7703,8 @@ config_help(int var, int feature)
return(h_config_fcc_rule);
case V_SORT_KEY :
return(h_config_sort_key);
@ -1438,10 +1438,10 @@ Index: alpine-2.11/pith/conf.c
case V_AB_SORT_RULE :
return(h_config_ab_sort_rule);
case V_FLD_SORT_RULE :
Index: alpine-2.11/pith/conf.h
Index: alpine-2.20/pith/conf.h
===================================================================
--- alpine-2.11.orig/pith/conf.h
+++ alpine-2.11/pith/conf.h
--- alpine-2.20.orig/pith/conf.h
+++ alpine-2.20/pith/conf.h
@@ -144,6 +144,9 @@
#define VAR_SORT_KEY vars[V_SORT_KEY].current_val.p
#define GLO_SORT_KEY vars[V_SORT_KEY].global_val.p
@ -1452,10 +1452,10 @@ Index: alpine-2.11/pith/conf.h
#define VAR_AB_SORT_RULE vars[V_AB_SORT_RULE].current_val.p
#define GLO_AB_SORT_RULE vars[V_AB_SORT_RULE].global_val.p
#define VAR_FLD_SORT_RULE vars[V_FLD_SORT_RULE].current_val.p
Index: alpine-2.11/pith/conftype.h
Index: alpine-2.20/pith/conftype.h
===================================================================
--- alpine-2.11.orig/pith/conftype.h
+++ alpine-2.11/pith/conftype.h
--- alpine-2.20.orig/pith/conftype.h
+++ alpine-2.20/pith/conftype.h
@@ -59,6 +59,7 @@ typedef enum { V_PERSONAL_NAME = 0
, V_SAVED_MSG_NAME_RULE
, V_FCC_RULE
@ -1464,7 +1464,7 @@ Index: alpine-2.11/pith/conftype.h
, V_AB_SORT_RULE
, V_FLD_SORT_RULE
, V_GOTO_DEFAULT_RULE
@@ -509,6 +510,7 @@ typedef enum {
@@ -511,6 +512,7 @@ typedef enum {
F_QUELL_TIMEZONE,
F_QUELL_USERAGENT,
F_COLOR_LINE_IMPORTANT,
@ -1472,17 +1472,17 @@ Index: alpine-2.11/pith/conftype.h
F_SLASH_COLL_ENTIRE,
F_ENABLE_FULL_HDR_AND_TEXT,
F_QUELL_FULL_HDR_RESET,
@@ -716,5 +718,6 @@ typedef struct smime_stuff {
@@ -766,5 +768,6 @@ typedef struct smime_stuff {
/* exported protoypes */
+#define DF_THREAD_SORT_KEY "thread"
#endif /* PITH_CONFTYPE_INCLUDED */
Index: alpine-2.11/pith/flag.c
Index: alpine-2.20/pith/flag.c
===================================================================
--- alpine-2.11.orig/pith/flag.c
+++ alpine-2.11/pith/flag.c
--- alpine-2.20.orig/pith/flag.c
+++ alpine-2.20/pith/flag.c
@@ -594,14 +594,16 @@ set_lflag(MAILSTREAM *stream, MSGNO_S *m
was_invisible = (pelt->hidden || pelt->colhid) ? 1 : 0;
@ -1502,10 +1502,10 @@ Index: alpine-2.11/pith/flag.c
}
if(topthrd){
Index: alpine-2.11/pith/indxtype.h
Index: alpine-2.20/pith/indxtype.h
===================================================================
--- alpine-2.11.orig/pith/indxtype.h
+++ alpine-2.11/pith/indxtype.h
--- alpine-2.20.orig/pith/indxtype.h
+++ alpine-2.20/pith/indxtype.h
@@ -76,7 +76,7 @@ typedef enum {iNothing, iStatus, iFStatu
iKey, iKeyInit,
iPrefDate, iPrefTime, iPrefDateTime,
@ -1515,10 +1515,10 @@ Index: alpine-2.11/pith/indxtype.h
iNewsAndTo, iToAndNews, iNewsAndRecips, iRecipsAndNews,
iFromTo, iFromToNotNews, iFrom, iTo, iSender, iCc, iNews, iRecips,
iCurNews, iArrow,
Index: alpine-2.11/pith/mailindx.c
Index: alpine-2.20/pith/mailindx.c
===================================================================
--- alpine-2.11.orig/pith/mailindx.c
+++ alpine-2.11/pith/mailindx.c
--- alpine-2.20.orig/pith/mailindx.c
+++ alpine-2.20/pith/mailindx.c
@@ -228,6 +228,7 @@ init_index_format(char *format, INDEX_CO
case iSTime:
case iKSize:
@ -1624,7 +1624,7 @@ Index: alpine-2.11/pith/mailindx.c
/* 0 ... 9999 */
if((l = fetch_size(idata)) < 10*1000L)
snprintf(str, sizeof(str), "(%lu)", l);
@@ -5412,10 +5437,8 @@ subj_str(INDEXDATA_S *idata, char *str,
@@ -5413,10 +5438,8 @@ subj_str(INDEXDATA_S *idata, char *str,
if(pith_opt_condense_thread_cue)
width = (*pith_opt_condense_thread_cue)(thd, ice, &str, &strsize, width,
@ -1637,7 +1637,7 @@ Index: alpine-2.11/pith/mailindx.c
/*
* width is < available strsize and
@@ -6043,11 +6066,8 @@ from_str(IndexColType ctype, INDEXDATA_S
@@ -6044,11 +6067,8 @@ from_str(IndexColType ctype, INDEXDATA_S
border = str + width;
if(pith_opt_condense_thread_cue)
width = (*pith_opt_condense_thread_cue)(thd, ice, &str, &strsize, width,
@ -1651,10 +1651,10 @@ Index: alpine-2.11/pith/mailindx.c
fptr = str;
if(thd)
Index: alpine-2.11/pith/pattern.c
Index: alpine-2.20/pith/pattern.c
===================================================================
--- alpine-2.11.orig/pith/pattern.c
+++ alpine-2.11/pith/pattern.c
--- alpine-2.20.orig/pith/pattern.c
+++ alpine-2.20/pith/pattern.c
@@ -1756,7 +1756,7 @@ parse_action_slash(char *str, ACTION_S *
SortOrder def_sort;
int def_sort_rev;
@ -1664,11 +1664,11 @@ Index: alpine-2.11/pith/pattern.c
action->sort_is_set = 1;
action->sortorder = def_sort;
action->revsort = (def_sort_rev ? 1 : 0);
Index: alpine-2.11/pith/pine.hlp
Index: alpine-2.20/pith/pine.hlp
===================================================================
--- alpine-2.11.orig/pith/pine.hlp
+++ alpine-2.11/pith/pine.hlp
@@ -3596,6 +3596,7 @@ There are also additional details on
--- alpine-2.20.orig/pith/pine.hlp
+++ alpine-2.20/pith/pine.hlp
@@ -3866,6 +3866,7 @@ There are also additional details on
<li><a href="h_config_signature_file">OPTION: <!--#echo var="VAR_signature-file"--></a>
<li><a href="h_config_smtp_server">OPTION: <!--#echo var="VAR_smtp-server"--></a>
<li><a href="h_config_sort_key">OPTION: <!--#echo var="VAR_sort-key"--></a>
@ -1676,7 +1676,7 @@ Index: alpine-2.11/pith/pine.hlp
<li><a href="h_config_speller">OPTION: <!--#echo var="VAR_speller"--></a>
<li><a href="h_config_sshcmd">OPTION: <!--#echo var="VAR_ssh-command"--></a>
<li><a href="h_config_ssh_open_timeo">OPTION: <!--#echo var="VAR_ssh-open-timeout"--></a>
@@ -5528,6 +5529,163 @@ the names of the carbon copy addresses o
@@ -5802,6 +5803,163 @@ the names of the carbon copy addresses o
&lt;End of help on this topic&gt;
</BODY>
</HTML>
@ -1840,7 +1840,7 @@ Index: alpine-2.11/pith/pine.hlp
======= h_index_cmd_whereis =======
<HTML>
<HEAD>
@@ -18894,6 +19052,14 @@ The progression of sizes used looks like
@@ -19184,6 +19342,14 @@ The progression of sizes used looks like
<P>
</DD>
@ -1855,7 +1855,7 @@ Index: alpine-2.11/pith/pine.hlp
<DT>SIZENARROW</DT>
<DD>
This token represents the total size, in bytes, of the message.
@@ -22259,6 +22425,45 @@ command, then it will not be re-sorted u
@@ -22655,6 +22821,45 @@ command, then it will not be re-sorted u
&lt;End of help on this topic&gt;
</BODY>
</HTML>
@ -1901,7 +1901,7 @@ Index: alpine-2.11/pith/pine.hlp
====== h_config_other_startup =====
<HTML>
<HEAD>
@@ -30089,6 +30294,23 @@ Reply Use, Forward Use, and Compose Use.
@@ -30485,6 +30690,23 @@ Reply Use, Forward Use, and Compose Use.
&lt;End of help on this topic&gt;
</BODY>
</HTML>
@ -1925,10 +1925,10 @@ Index: alpine-2.11/pith/pine.hlp
====== h_config_news_cross_deletes =====
<HTML>
<HEAD>
Index: alpine-2.11/pith/sort.c
Index: alpine-2.20/pith/sort.c
===================================================================
--- alpine-2.11.orig/pith/sort.c
+++ alpine-2.11/pith/sort.c
--- alpine-2.20.orig/pith/sort.c
+++ alpine-2.20/pith/sort.c
@@ -91,7 +91,7 @@ Args: msgmap --
----*/
void
@ -2016,10 +2016,10 @@ Index: alpine-2.11/pith/sort.c
- the_sort_order, sort_is_rev, flags);
+ the_sort_order, sort_is_rev, flags, 1);
}
Index: alpine-2.11/pith/sort.h
Index: alpine-2.20/pith/sort.h
===================================================================
--- alpine-2.11.orig/pith/sort.h
+++ alpine-2.11/pith/sort.h
--- alpine-2.20.orig/pith/sort.h
+++ alpine-2.20/pith/sort.h
@@ -22,7 +22,7 @@
@ -2040,10 +2040,10 @@ Index: alpine-2.11/pith/sort.h
void reset_sort_order(unsigned);
Index: alpine-2.11/pith/state.c
Index: alpine-2.20/pith/state.c
===================================================================
--- alpine-2.11.orig/pith/state.c
+++ alpine-2.11/pith/state.c
--- alpine-2.20.orig/pith/state.c
+++ alpine-2.20/pith/state.c
@@ -74,6 +74,7 @@ new_pine_struct(void)
p = (struct pine *)fs_get(sizeof (struct pine));
@ -2052,10 +2052,10 @@ Index: alpine-2.11/pith/state.c
p->def_sort = SortArrival;
p->sort_types[0] = SortSubject;
p->sort_types[1] = SortArrival;
Index: alpine-2.11/pith/state.h
Index: alpine-2.20/pith/state.h
===================================================================
--- alpine-2.11.orig/pith/state.h
+++ alpine-2.11/pith/state.h
--- alpine-2.20.orig/pith/state.h
+++ alpine-2.20/pith/state.h
@@ -137,6 +137,8 @@ struct pine {
unsigned unseen_in_view:1;
unsigned start_in_context:1; /* start fldr_scrn in current cntxt */
@ -2065,7 +2065,7 @@ Index: alpine-2.11/pith/state.h
unsigned restricted:1;
unsigned tcptimeout:1; /* a tcp timeout is in progress */
@@ -288,6 +290,9 @@ struct pine {
@@ -291,6 +293,9 @@ struct pine {
EditWhich ew_for_srch_take;
SortOrder def_sort, /* Default sort type */
@ -2075,10 +2075,10 @@ Index: alpine-2.11/pith/state.h
sort_types[22];
int preserve;
Index: alpine-2.11/pith/thread.c
Index: alpine-2.20/pith/thread.c
===================================================================
--- alpine-2.11.orig/pith/thread.c
+++ alpine-2.11/pith/thread.c
--- alpine-2.20.orig/pith/thread.c
+++ alpine-2.20/pith/thread.c
@@ -30,12 +30,18 @@ static char rcsid[] = "$Id: thread.c 942
#include "../pith/mailcmd.h"
#include "../pith/ablookup.h"
@ -3127,10 +3127,10 @@ Index: alpine-2.11/pith/thread.c
+ || sort == SortSize;
+}
+
Index: alpine-2.11/pith/thread.h
Index: alpine-2.20/pith/thread.h
===================================================================
--- alpine-2.11.orig/pith/thread.h
+++ alpine-2.11/pith/thread.h
--- alpine-2.20.orig/pith/thread.h
+++ alpine-2.20/pith/thread.h
@@ -37,6 +37,7 @@ typedef struct pine_thrd {
unsigned long nextthd; /* next thread, only tops have this */
unsigned long prevthd; /* previous thread, only tops have this */
@ -3174,10 +3174,10 @@ Index: alpine-2.11/pith/thread.h
+int allowed_thread_key(SortOrder sort);
#endif /* PITH_THREAD_INCLUDED */
Index: alpine-2.11/web/src/alpined.d/alpined.c
Index: alpine-2.20/web/src/alpined.d/alpined.c
===================================================================
--- alpine-2.11.orig/web/src/alpined.d/alpined.c
+++ alpine-2.11/web/src/alpined.d/alpined.c
--- alpine-2.20.orig/web/src/alpined.d/alpined.c
+++ alpine-2.20/web/src/alpined.d/alpined.c
@@ -2755,7 +2755,7 @@ PEConfigCmd(ClientData clientData, Tcl_I
init_save_defaults();
break;

View File

@ -6,11 +6,11 @@
pith/save.c | 1 +
5 files changed, 42 insertions(+)
Index: alpine-2.11/alpine/mailcmd.c
Index: alpine-2.20/alpine/mailcmd.c
===================================================================
--- alpine-2.11.orig/alpine/mailcmd.c
+++ alpine-2.11/alpine/mailcmd.c
@@ -3368,6 +3368,9 @@ save_size_changed_prompt(long msgno, int
--- alpine-2.20.orig/alpine/mailcmd.c
+++ alpine-2.20/alpine/mailcmd.c
@@ -3491,6 +3491,9 @@ save_size_changed_prompt(long msgno, int
{-1, 0, NULL, NULL}
};
@ -20,11 +20,11 @@ Index: alpine-2.11/alpine/mailcmd.c
if(flags & SSCP_INIT || flags & SSCP_END){
if(flags & SSCP_END && possible_corruption)
q_status_message(SM_ORDER, 3, 3, "There is possible data corruption, check the results");
Index: alpine-2.11/pith/conf.c
Index: alpine-2.20/pith/conf.c
===================================================================
--- alpine-2.11.orig/pith/conf.c
+++ alpine-2.11/pith/conf.c
@@ -3123,6 +3123,8 @@ feature_list(int index)
--- alpine-2.20.orig/pith/conf.c
+++ alpine-2.20/pith/conf.c
@@ -3140,6 +3140,8 @@ feature_list(int index)
F_FULL_AUTO_EXPUNGE, h_config_full_auto_expunge, PREF_MISC, 0},
{"force-arrow-cursor", NULL,
F_FORCE_ARROW, h_config_force_arrow, PREF_MISC, 0},
@ -33,11 +33,11 @@ Index: alpine-2.11/pith/conf.c
{"maildrops-preserve-state", NULL,
F_MAILDROPS_PRESERVE_STATE, h_config_maildrops_preserve_state,
PREF_MISC, 0},
Index: alpine-2.11/pith/conftype.h
Index: alpine-2.20/pith/conftype.h
===================================================================
--- alpine-2.11.orig/pith/conftype.h
+++ alpine-2.11/pith/conftype.h
@@ -346,6 +346,7 @@ typedef enum {
--- alpine-2.20.orig/pith/conftype.h
+++ alpine-2.20/pith/conftype.h
@@ -347,6 +347,7 @@ typedef enum {
F_FORCE_ARROW,
F_PRUNE_USES_ISO,
F_ALT_ED_NOW,
@ -45,11 +45,11 @@ Index: alpine-2.11/pith/conftype.h
F_SHOW_DELAY_CUE,
F_CANCEL_CONFIRM,
F_AUTO_OPEN_NEXT_UNREAD,
Index: alpine-2.11/pith/pine.hlp
Index: alpine-2.20/pith/pine.hlp
===================================================================
--- alpine-2.11.orig/pith/pine.hlp
+++ alpine-2.11/pith/pine.hlp
@@ -3296,6 +3296,7 @@ There are also additional details on
--- alpine-2.20.orig/pith/pine.hlp
+++ alpine-2.20/pith/pine.hlp
@@ -3565,6 +3565,7 @@ There are also additional details on
<li><a href="h_config_full_auto_expunge">FEATURE: <!--#echo var="FEAT_expunge-without-confirm-everywhere"--></a>
<li><a href="h_config_no_fcc_attach">FEATURE: <!--#echo var="FEAT_fcc-without-attachments"--></a>
<li><a href="h_config_force_arrow">FEATURE: <!--#echo var="FEAT_force-arrow-cursor"--></a>
@ -57,7 +57,7 @@ Index: alpine-2.11/pith/pine.hlp
<li><a href="h_config_forward_as_attachment">FEATURE: <!--#echo var="FEAT_forward-as-attachment"--></a>
<li><a href="h_config_preserve_field">FEATURE: <!--#echo var="FEAT_preserve-original-fields"--></a>
<li><a href="h_config_quell_empty_dirs">FEATURE: <!--#echo var="FEAT_quell-empty-directories"--></a>
@@ -30787,6 +30788,40 @@ but that is not implemented.
@@ -31183,6 +31184,40 @@ but that is not implemented.
<P>
&lt;End of help on this topic&gt;
@ -98,10 +98,10 @@ Index: alpine-2.11/pith/pine.hlp
</BODY>
</HTML>
====== h_config_force_low_speed =====
Index: alpine-2.11/pith/save.c
Index: alpine-2.20/pith/save.c
===================================================================
--- alpine-2.11.orig/pith/save.c
+++ alpine-2.11/pith/save.c
--- alpine-2.20.orig/pith/save.c
+++ alpine-2.20/pith/save.c
@@ -1157,6 +1157,7 @@ long save_fetch_append_cb(MAILSTREAM *st
snprintf(buf, sizeof(buf),
"Message to save shrank: source msg # %ld may be saved incorrectly",

View File

@ -3,10 +3,10 @@
pico/search.c | 4 ++++
2 files changed, 16 insertions(+)
Index: alpine-2.11/pico/display.c
Index: alpine-2.20/pico/display.c
===================================================================
--- alpine-2.11.orig/pico/display.c
+++ alpine-2.11/pico/display.c
--- alpine-2.20.orig/pico/display.c
+++ alpine-2.20/pico/display.c
@@ -1760,6 +1760,18 @@ mlreplyd(UCS *prompt, UCS *buf, int nbuf
continue;
@ -26,11 +26,11 @@ Index: alpine-2.11/pico/display.c
case (CTRL|'G') : /* CTRL-G help */
if(term.t_mrow == 0 && km_popped == 0){
movecursor(term.t_nrow-2, 0);
Index: alpine-2.11/pico/search.c
Index: alpine-2.20/pico/search.c
===================================================================
--- alpine-2.11.orig/pico/search.c
+++ alpine-2.11/pico/search.c
@@ -76,6 +76,10 @@ N_(" brackets. This string is th
--- alpine-2.20.orig/pico/search.c
+++ alpine-2.20/pico/search.c
@@ -81,6 +81,10 @@ N_(" brackets. This string is th
N_("~ Hitting only ~R~e~t~u~r~n or at the prompt will cause the"),
N_(" search to be made with the default value."),
" ",

View File

@ -6,22 +6,22 @@
imap/src/c-client/mail.h | 4
imap/src/osdep/unix/Makefile | 8
imap/src/osdep/unix/dummy.c | 48
imap/src/osdep/unix/maildir.c | 2638 ++++++++++++++++++++++++++++++++++++++++++
imap/src/osdep/unix/maildir.c | 2671 ++++++++++++++++++++++++++++++++++++++++++
imap/src/osdep/unix/maildir.h | 226 +++
imap/src/osdep/unix/os_cyg.h | 1
pith/conf.c | 27
pith/conf.c | 30
pith/conf.h | 4
pith/conftype.h | 6
pith/init.c | 3
pith/pattern.c | 26
pith/pattern.c | 30
pith/pine.hlp | 139 ++
pith/send.c | 7
17 files changed, 3293 insertions(+), 15 deletions(-)
pith/send.c | 10
17 files changed, 3334 insertions(+), 17 deletions(-)
Index: alpine-2.11/README.maildir
Index: alpine-2.20/README.maildir
===================================================================
--- /dev/null
+++ alpine-2.11/README.maildir
+++ alpine-2.20/README.maildir
@@ -0,0 +1,149 @@
+---------------------------------------
+
@ -172,27 +172,27 @@ Index: alpine-2.11/README.maildir
+point to the same place.
+
+Last Updated May 28, 2011
Index: alpine-2.11/alpine/alpine.c
Index: alpine-2.20/alpine/alpine.c
===================================================================
--- alpine-2.11.orig/alpine/alpine.c
+++ alpine-2.11/alpine/alpine.c
@@ -558,6 +558,11 @@ main(int argc, char **argv)
--- alpine-2.20.orig/alpine/alpine.c
+++ alpine-2.20/alpine/alpine.c
@@ -560,6 +560,11 @@ main(int argc, char **argv)
if(F_ON(F_MAILDROPS_PRESERVE_STATE, ps_global))
mail_parameters(NULL, SET_SNARFPRESERVE, (void *) TRUE);
+#ifndef _WINDOWS
+ mail_parameters(NULL,SET_COURIERSTYLE,
+ (void *)(F_ON(F_COURIER_FOLDER_LIST, ps_global) ? 1 : 0));
+ rv = F_ON(F_COURIER_FOLDER_LIST, ps_global) ? 1 : 0;
+ mail_parameters(NULL,SET_COURIERSTYLE, (void *) &rv);
+#endif
+
rvl = 0L;
if(pine_state->VAR_NNTPRANGE){
if(!SVAR_NNTPRANGE(pine_state, rvl, tmp_20k_buf, SIZEOF_20KBUF))
Index: alpine-2.11/alpine/confscroll.c
Index: alpine-2.20/alpine/confscroll.c
===================================================================
--- alpine-2.11.orig/alpine/confscroll.c
+++ alpine-2.11/alpine/confscroll.c
@@ -5533,6 +5533,12 @@ fix_side_effects(struct pine *ps, struct
--- alpine-2.20.orig/alpine/confscroll.c
+++ alpine-2.20/alpine/confscroll.c
@@ -5556,6 +5556,12 @@ fix_side_effects(struct pine *ps, struct
(void *)var->current_val.p);
}
#endif
@ -205,11 +205,11 @@ Index: alpine-2.11/alpine/confscroll.c
else if(revert && standard_radio_var(ps, var)){
cur_rule_value(var, TRUE, FALSE);
Index: alpine-2.11/imap/src/c-client/mail.c
Index: alpine-2.20/imap/src/c-client/mail.c
===================================================================
--- alpine-2.11.orig/imap/src/c-client/mail.c
+++ alpine-2.11/imap/src/c-client/mail.c
@@ -991,7 +991,7 @@ long mail_create (MAILSTREAM *stream,cha
--- alpine-2.20.orig/imap/src/c-client/mail.c
+++ alpine-2.20/imap/src/c-client/mail.c
@@ -1011,7 +1011,7 @@ long mail_create (MAILSTREAM *stream,cha
MAILSTREAM *ts;
char *s,*t,tmp[MAILTMPLEN];
size_t i;
@ -218,7 +218,7 @@ Index: alpine-2.11/imap/src/c-client/mail.c
/* never allow names with newlines */
if (s = strpbrk (mailbox,"\015\012")) {
MM_LOG ("Can't create mailbox with such a name",ERROR);
@@ -1015,6 +1015,8 @@ long mail_create (MAILSTREAM *stream,cha
@@ -1035,6 +1035,8 @@ long mail_create (MAILSTREAM *stream,cha
return NIL;
}
@ -227,7 +227,7 @@ Index: alpine-2.11/imap/src/c-client/mail.c
/* see if special driver hack */
if ((mailbox[0] == '#') && ((mailbox[1] == 'd') || (mailbox[1] == 'D')) &&
((mailbox[2] == 'r') || (mailbox[2] == 'R')) &&
@@ -1045,6 +1047,13 @@ long mail_create (MAILSTREAM *stream,cha
@@ -1065,6 +1067,13 @@ long mail_create (MAILSTREAM *stream,cha
(((*mailbox == '{') || (*mailbox == '#')) &&
(stream = mail_open (NIL,mailbox,OP_PROTOTYPE | OP_SILENT))))
d = stream->dtb;
@ -241,11 +241,11 @@ Index: alpine-2.11/imap/src/c-client/mail.c
else if ((*mailbox != '{') && (ts = default_proto (NIL))) d = ts->dtb;
else { /* failed utterly */
sprintf (tmp,"Can't create mailbox %.80s: indeterminate format",mailbox);
Index: alpine-2.11/imap/src/c-client/mail.h
Index: alpine-2.20/imap/src/c-client/mail.h
===================================================================
--- alpine-2.11.orig/imap/src/c-client/mail.h
+++ alpine-2.11/imap/src/c-client/mail.h
@@ -353,6 +353,10 @@
--- alpine-2.20.orig/imap/src/c-client/mail.h
+++ alpine-2.20/imap/src/c-client/mail.h
@@ -354,6 +354,10 @@
#define SET_SCANCONTENTS (long) 573
#define GET_MHALLOWINBOX (long) 574
#define SET_MHALLOWINBOX (long) 575
@ -256,11 +256,11 @@ Index: alpine-2.11/imap/src/c-client/mail.h
/* Driver flags */
Index: alpine-2.11/imap/src/osdep/unix/Makefile
Index: alpine-2.20/imap/src/osdep/unix/Makefile
===================================================================
--- alpine-2.11.orig/imap/src/osdep/unix/Makefile
+++ alpine-2.11/imap/src/osdep/unix/Makefile
@@ -144,7 +144,7 @@ DEFAULTAUTHENTICATORS=ext md5 pla log
--- alpine-2.20.orig/imap/src/osdep/unix/Makefile
+++ alpine-2.20/imap/src/osdep/unix/Makefile
@@ -147,7 +147,7 @@ DEFAULTAUTHENTICATORS=ext md5 pla log
# However, mh needs to be before any sysinbox formats (such as mmdf or unix)
# since otherwise INBOX won't work correctly when mh_allow_inbox is set.
#
@ -269,7 +269,7 @@ Index: alpine-2.11/imap/src/osdep/unix/Makefile
CHUNKSIZE=65536
# Normally no need to change any of these
@@ -153,7 +153,7 @@ ARCHIVE=c-client.a
@@ -156,7 +156,7 @@ ARCHIVE=c-client.a
BINARIES=osdep.o mail.o misc.o newsrc.o smanager.o utf8.o utf8aux.o siglocal.o \
dummy.o pseudo.o netmsg.o flstring.o fdstring.o \
rfc822.o nntp.o smtp.o imap4r1.o pop3.o \
@ -278,7 +278,7 @@ Index: alpine-2.11/imap/src/osdep/unix/Makefile
CFLAGS=-g
CAT=cat
@@ -290,7 +290,7 @@ cvx: # Convex
@@ -293,7 +293,7 @@ cvx: # Convex
cyg: # Cygwin - note that most local file drivers don't work!!
$(BUILD) `$(CAT) SPECIALS` OS=$@ \
@ -287,7 +287,7 @@ Index: alpine-2.11/imap/src/osdep/unix/Makefile
SIGTYPE=psx CHECKPW=cyg LOGINPW=cyg CRXTYPE=std \
SPOOLDIR=/var \
ACTIVEFILE=/usr/local/news/lib/active \
@@ -900,7 +900,7 @@ tenex.o: mail.h misc.h osdep.h dummy.h
@@ -911,7 +911,7 @@ tenex.o: mail.h misc.h osdep.h dummy.h
unix.o: mail.h misc.h osdep.h unix.h pseudo.h dummy.h
utf8.o: mail.h misc.h osdep.h utf8.h tmap.c widths.c
utf8aux.o: mail.h misc.h osdep.h utf8.h
@ -296,11 +296,11 @@ Index: alpine-2.11/imap/src/osdep/unix/Makefile
# OS-dependent
Index: alpine-2.11/imap/src/osdep/unix/dummy.c
Index: alpine-2.20/imap/src/osdep/unix/dummy.c
===================================================================
--- alpine-2.11.orig/imap/src/osdep/unix/dummy.c
+++ alpine-2.11/imap/src/osdep/unix/dummy.c
@@ -106,13 +106,19 @@ MAILSTREAM dummyproto = {&dummydriver};
--- alpine-2.20.orig/imap/src/osdep/unix/dummy.c
+++ alpine-2.20/imap/src/osdep/unix/dummy.c
@@ -103,13 +103,19 @@ MAILSTREAM dummyproto = {&dummydriver};
* Accepts: mailbox name
* Returns: our driver if name is valid, NIL otherwise
*/
@ -323,7 +323,7 @@ Index: alpine-2.11/imap/src/osdep/unix/dummy.c
/* indeterminate clearbox INBOX */
if (!*s) return &dummydriver;
else if (!stat (s,&sbuf)) switch (sbuf.st_mode & S_IFMT) {
@@ -121,8 +127,9 @@ DRIVER *dummy_valid (char *name)
@@ -118,8 +124,9 @@ DRIVER *dummy_valid (char *name)
return &dummydriver;
}
/* blackbox INBOX does not exist yet */
@ -334,7 +334,7 @@ Index: alpine-2.11/imap/src/osdep/unix/dummy.c
return NIL;
}
@@ -454,6 +461,8 @@ long dummy_create (MAILSTREAM *stream,ch
@@ -452,6 +459,8 @@ long dummy_create (MAILSTREAM *stream,ch
{
char *s,tmp[MAILTMPLEN];
long ret = NIL;
@ -343,7 +343,7 @@ Index: alpine-2.11/imap/src/osdep/unix/dummy.c
/* validate name */
if (!(compare_cstring (mailbox,"INBOX") && (s = dummy_file (tmp,mailbox)))) {
sprintf (tmp,"Can't create %.80s: invalid name",mailbox);
@@ -519,6 +528,14 @@ long dummy_delete (MAILSTREAM *stream,ch
@@ -517,6 +526,14 @@ long dummy_delete (MAILSTREAM *stream,ch
{
struct stat sbuf;
char *s,tmp[MAILTMPLEN];
@ -358,7 +358,7 @@ Index: alpine-2.11/imap/src/osdep/unix/dummy.c
if (!(s = dummy_file (tmp,mailbox))) {
sprintf (tmp,"Can't delete - invalid name: %.80s",s);
MM_LOG (tmp,ERROR);
@@ -544,12 +561,23 @@ long dummy_delete (MAILSTREAM *stream,ch
@@ -542,12 +559,23 @@ long dummy_delete (MAILSTREAM *stream,ch
long dummy_rename (MAILSTREAM *stream,char *old,char *newname)
{
struct stat sbuf;
@ -385,7 +385,7 @@ Index: alpine-2.11/imap/src/osdep/unix/dummy.c
MM_LOG (mbx,ERROR);
return NIL;
}
@@ -565,14 +593,16 @@ long dummy_rename (MAILSTREAM *stream,ch
@@ -563,14 +591,16 @@ long dummy_rename (MAILSTREAM *stream,ch
}
}
/* rename of non-ex INBOX creates dest */
@ -404,16 +404,16 @@ Index: alpine-2.11/imap/src/osdep/unix/dummy.c
return T; /* return success */
}
Index: alpine-2.11/imap/src/osdep/unix/maildir.c
Index: alpine-2.20/imap/src/osdep/unix/maildir.c
===================================================================
--- /dev/null
+++ alpine-2.11/imap/src/osdep/unix/maildir.c
@@ -0,0 +1,2638 @@
+++ alpine-2.20/imap/src/osdep/unix/maildir.c
@@ -0,0 +1,2671 @@
+/*
+ * Maildir driver for Alpine 2.00
+ * Maildir driver for Alpine 2.20
+ *
+ * Written by Eduardo Chappa <chappa@gmx.com>
+ * Last Update: May 29, 2011.
+ * Last Update: June 10, 2014
+ *
+ */
+
@ -1589,7 +1589,7 @@ Index: alpine-2.11/imap/src/osdep/unix/maildir.c
+ char *s, c, err[MAILTMPLEN], tmp[MAILTMPLEN], tmp2[MAILTMPLEN], mbx[MAILTMPLEN];
+ int fnlen, create_dir = 0, courier, mv;
+ struct stat sbuf;
+ long style = (long) maildir_parameters(GET_COURIERSTYLE, NIL);
+ long style = *(long *) maildir_parameters(GET_COURIERSTYLE, NIL);
+
+ courier = IS_COURIER(mailbox);
+ strcpy(mbx, mailbox);
@ -1817,7 +1817,7 @@ Index: alpine-2.11/imap/src/osdep/unix/maildir.c
+
+long maildir_append (MAILSTREAM *stream,char *mailbox,append_t af,void *data)
+{
+ int fd, k;
+ int fd, k, done, fail;
+ STRING *message;
+ char c,*s, *flags, *date;
+ char tmp[MAILTMPLEN],file[MAILTMPLEN],path1[MAILTMPLEN],path2[MAILTMPLEN];
@ -1825,6 +1825,7 @@ Index: alpine-2.11/imap/src/osdep/unix/maildir.c
+ long i, size = 0L, ret = LONGT, f;
+ unsigned long uf, ti;
+ static unsigned int transact = 0;
+ struct stat sbuf;
+
+ if (!maildir_valid(mailbox)) {
+ snprintf (tmp, sizeof(tmp), "Not a valid Maildir mailbox: %s", mailbox);
@ -1848,29 +1849,58 @@ Index: alpine-2.11/imap/src/osdep/unix/maildir.c
+ if (!(*af)(stream, data, &flags, &date, &message)) return NIL;
+
+ mm_critical (stream); /* go critical */
+ /* call time(0) only once, use transact to distinguish instead */
+ ti = time(0);
+ do {
+ fail = done = 0; /* we have not determined name of message file yet */
+ if (!SIZE (message)) { /* guard against zero-length */
+ mm_log ("Append of zero-length message",ERROR);
+ mm_log ("Append of zero-length message", ERROR);
+ ret = NIL;
+ break;
+ }
+
+ if (date && !mail_parse_date(&elt,date)){
+ snprintf (tmp, sizeof(tmp), "Bad date in append: %.80s",date);
+ mm_log (tmp,ERROR);
+ ret = NIL;
+ break;
+ snprintf (tmp, sizeof(tmp), "Bad date in append: %.80s", date);
+ mm_log (tmp, ERROR);
+ ret = NIL;
+ break;
+ }
+
+ if(date){
+ struct tm tm;
+
+ tm.tm_sec = elt.seconds;
+ tm.tm_min = elt.minutes;
+ tm.tm_hour = elt.hours;
+ tm.tm_mday = elt.day;
+ tm.tm_mon = elt.month - 1;
+ tm.tm_year = BASEYEAR + elt.year - 1900;
+
+ ti = mktime(&tm);
+ } else ti = time(0);
+
+ f = mail_parse_flags (stream,flags,&uf);
+ do {
+ /* build file name we will use */
+ snprintf (file, sizeof(file), "%lu.%d_%09u.%s%s%s%s%s%s",
+ snprintf (file, sizeof(file), "%lu.%d_%09u.%s%s%s%s%s%s",
+ ti, mypid, transact++, mdlocaldomain, (f ? MDSEP(2) : ""),
+ MDFLAG(Draft, f&fDRAFT), MDFLAG(Flagged, f&fFLAGGED),
+ MDFLAG(Replied, f&fANSWERED), MDFLAG(Seen, f&fSEEN));
+ /* build tmp file name */
+ if (maildir_file_path(mailbox, tmp, sizeof(tmp)))
+ MSGPATH(path1, tmp, file, Tmp);
+ if (maildir_file_path(mailbox, tmp, sizeof(tmp))) /* copy in TMP */
+ MSGPATH(path1, tmp, file, Tmp);
+ /* build final filename to use */
+ if (maildir_file_path(mailbox, tmp, sizeof(tmp)))
+ MSGPATH(path2, tmp, file, New); /* copy in NEW */
+ if(stat(path1, &sbuf) < 0 && errno == ENOENT
+ && stat(path2, &sbuf) < 0 && errno == ENOENT)
+ done++;
+ else
+ fail++;
+ if(fail == 1000){
+ snprintf (tmp, sizeof(tmp), "Failure to create append message name");
+ mm_log (tmp, ERROR);
+ return NIL;
+ }
+ } while (done == 0);
+
+ if ((fd = open (path1,O_WRONLY|O_CREAT|O_EXCL,S_IREAD|S_IWRITE)) < 0) {
+ snprintf (tmp, sizeof(tmp), "Can't open append mailbox: %s", strerror (errno));
@ -1887,15 +1917,18 @@ Index: alpine-2.11/imap/src/osdep/unix/maildir.c
+ }
+ fs_give ((void **) &s); /* flush the buffer */
+ close (fd); /* close the file */
+ /* build final filename to use */
+ if (maildir_file_path(mailbox, tmp, sizeof(tmp)))
+ MSGPATH(path2, tmp, file, New);
+
+ if (rename (path1,path2) < 0) {
+ snprintf (tmp, sizeof(tmp), "Message append failed: %s", strerror (errno));
+ mm_log (tmp, ERROR);
+ ret = NIL;
+ }
+ unlink (path1);
+ if(date){
+ time_t tp[2];
+ tp[0] = tp[1] = ti;
+ utime (path2,tp);
+ }
+
+ if (ret)
+ if (!(*af) (stream,data,&flags,&date,&message)) ret = NIL;
@ -2093,11 +2126,11 @@ Index: alpine-2.11/imap/src/osdep/unix/maildir.c
+void maildir_lsub (MAILSTREAM *stream,char *ref,char *pat)
+{
+ void *sdb = NIL;
+ char *s, test[MAILTMPLEN];
+ char *s, test[MAILTMPLEN], tmp[MAILTMPLEN];
+ /* get canonical form of name */
+ if (maildir_canonicalize (test, ref, pat) && (s = sm_read (&sdb))) {
+ if (maildir_canonicalize (test, ref, pat) && (s = sm_read (tmp, &sdb))) {
+ do if (pmatch_full (s, test, '/')) mm_lsub (stream, '/', s, NIL);
+ while ((s = sm_read (&sdb)) != NULL); /* until no more subscriptions */
+ while ((s = sm_read (tmp, &sdb)) != NULL); /* until no more subscriptions */
+ }
+}
+
@ -2191,7 +2224,7 @@ Index: alpine-2.11/imap/src/osdep/unix/maildir.c
+ char c, curdir[MAILTMPLEN], tmp[MAILTMPLEN];
+ char realname[MAILTMPLEN], realpat[MAILTMPLEN] = {'\0'};
+ int i, found;
+ long style = (long) maildir_parameters(GET_COURIERSTYLE, NIL), j;
+ long style = *(long *) maildir_parameters(GET_COURIERSTYLE, NIL), j;
+ char *maildirpath = mdirpath();
+ COURIER_S *cdir;
+
@ -2780,7 +2813,7 @@ Index: alpine-2.11/imap/src/osdep/unix/maildir.c
+void
+courier_list_info(COURIER_S **cdirp, char *data, int i)
+{
+ long style = (long) maildir_parameters(GET_COURIERSTYLE, NIL);
+ long style = *(long *) maildir_parameters(GET_COURIERSTYLE, NIL);
+ COURIER_S *cdir = *cdirp;
+
+ if(maildir_valid(cdir->data[i]->name)){
@ -3047,10 +3080,10 @@ Index: alpine-2.11/imap/src/osdep/unix/maildir.c
+ LOCAL->uidtempfile = cpystr(tmp);
+ }
+}
Index: alpine-2.11/imap/src/osdep/unix/maildir.h
Index: alpine-2.20/imap/src/osdep/unix/maildir.h
===================================================================
--- /dev/null
+++ alpine-2.11/imap/src/osdep/unix/maildir.h
+++ alpine-2.20/imap/src/osdep/unix/maildir.h
@@ -0,0 +1,226 @@
+/*
+ * A few definitions that try to make this module portable to other
@ -3278,10 +3311,10 @@ Index: alpine-2.11/imap/src/osdep/unix/maildir.h
+void maildir_assign_uid(MAILSTREAM *stream, unsigned long msgno, unsigned long uid);
+void maildir_uid_renew_tempfile(MAILSTREAM *stream);
+
Index: alpine-2.11/imap/src/osdep/unix/os_cyg.h
Index: alpine-2.20/imap/src/osdep/unix/os_cyg.h
===================================================================
--- alpine-2.11.orig/imap/src/osdep/unix/os_cyg.h
+++ alpine-2.11/imap/src/osdep/unix/os_cyg.h
--- alpine-2.20.orig/imap/src/osdep/unix/os_cyg.h
+++ alpine-2.20/imap/src/osdep/unix/os_cyg.h
@@ -47,6 +47,7 @@
#define setpgrp setpgid
@ -3290,11 +3323,11 @@ Index: alpine-2.11/imap/src/osdep/unix/os_cyg.h
#define geteuid Geteuid
uid_t Geteuid (void);
Index: alpine-2.11/pith/conf.c
Index: alpine-2.20/pith/conf.c
===================================================================
--- alpine-2.11.orig/pith/conf.c
+++ alpine-2.11/pith/conf.c
@@ -434,6 +434,9 @@ CONF_TXT_T cf_text_window_position[] = "
--- alpine-2.20.orig/pith/conf.c
+++ alpine-2.20/pith/conf.c
@@ -436,6 +436,9 @@ CONF_TXT_T cf_text_window_position[] = "
CONF_TXT_T cf_text_newsrc_path[] = "Full path and name of NEWSRC file";
@ -3304,7 +3337,7 @@ Index: alpine-2.11/pith/conf.c
/*----------------------------------------------------------------------
These are the variables that control a number of pine functions. They
@@ -638,6 +641,10 @@ static struct variable variables[] = {
@@ -642,6 +645,10 @@ static struct variable variables[] = {
NULL, cf_text_news_active},
{"news-spool-directory", 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0,
NULL, cf_text_news_spooldir},
@ -3315,7 +3348,7 @@ Index: alpine-2.11/pith/conf.c
{"upload-command", 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0,
NULL, cf_text_upload_cmd},
{"upload-command-prefix", 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0,
@@ -2271,6 +2278,12 @@ init_vars(struct pine *ps, void (*cmds_f
@@ -2283,6 +2290,12 @@ init_vars(struct pine *ps, void (*cmds_f
mail_parameters(NULL, SET_NEWSSPOOL,
(void *)VAR_NEWS_SPOOL_DIR);
@ -3328,7 +3361,7 @@ Index: alpine-2.11/pith/conf.c
/* guarantee a save default */
set_current_val(&vars[V_DEFAULT_SAVE_FOLDER], TRUE, TRUE);
if(!VAR_DEFAULT_SAVE_FOLDER || !VAR_DEFAULT_SAVE_FOLDER[0])
@@ -2909,6 +2922,10 @@ feature_list(int index)
@@ -2921,6 +2934,10 @@ feature_list(int index)
F_SORT_DEFAULT_SAVE_ALPHA, h_config_sort_save_alpha, PREF_FLDR, 0},
{"vertical-folder-list", "Use Vertical Folder List",
F_VERTICAL_FOLDER_LIST, h_config_vertical_list, PREF_FLDR, 0},
@ -3339,20 +3372,30 @@ Index: alpine-2.11/pith/conf.c
/* Addr book */
{"combined-addrbook-display", "Combined Address Book Display",
@@ -7034,6 +7051,12 @@ toggle_feature(struct pine *ps, struct v
@@ -7047,7 +7064,7 @@ toggle_feature(struct pine *ps, struct v
int just_flip_value, EditWhich ew)
{
char **vp, *p, **lval, ***alval;
- int og, on_before, was_set;
+ int og, on_before, was_set, i;
char *err;
long l;
@@ -7100,6 +7117,13 @@ toggle_feature(struct pine *ps, struct v
break;
+#ifndef _WINDOWS
+ case F_COURIER_FOLDER_LIST:
+ mail_parameters(NULL,SET_COURIERSTYLE,(void *)(F_ON(f->id ,ps)? 1 : 0));
+ i = F_ON(f->id ,ps) ? 1 : 0;
+ mail_parameters(NULL,SET_COURIERSTYLE, (void *) &i);
+ break; /* COURIER == 1, CCLIENT == 0, see maildir.h */
+#endif
+
case F_COLOR_LINE_IMPORTANT :
case F_DATES_TO_LOCAL :
clear_index_cache(ps->mail_stream, 0);
@@ -7819,6 +7842,10 @@ config_help(int var, int feature)
@@ -7887,6 +7911,10 @@ config_help(int var, int feature)
return(h_config_newmailwidth);
case V_NEWSRC_PATH :
return(h_config_newsrc_path);
@ -3363,11 +3406,11 @@ Index: alpine-2.11/pith/conf.c
case V_BROWSER :
return(h_config_browser);
#if defined(DOS) || defined(OS2)
Index: alpine-2.11/pith/conf.h
Index: alpine-2.20/pith/conf.h
===================================================================
--- alpine-2.11.orig/pith/conf.h
+++ alpine-2.11/pith/conf.h
@@ -255,6 +255,10 @@
--- alpine-2.20.orig/pith/conf.h
+++ alpine-2.20/pith/conf.h
@@ -257,6 +257,10 @@
#define GLO_NEWS_ACTIVE_PATH vars[V_NEWS_ACTIVE_PATH].global_val.p
#define VAR_NEWS_SPOOL_DIR vars[V_NEWS_SPOOL_DIR].current_val.p
#define GLO_NEWS_SPOOL_DIR vars[V_NEWS_SPOOL_DIR].global_val.p
@ -3378,11 +3421,11 @@ Index: alpine-2.11/pith/conf.h
#define VAR_DISABLE_DRIVERS vars[V_DISABLE_DRIVERS].current_val.l
#define VAR_DISABLE_AUTHS vars[V_DISABLE_AUTHS].current_val.l
#define VAR_REMOTE_ABOOK_METADATA vars[V_REMOTE_ABOOK_METADATA].current_val.p
Index: alpine-2.11/pith/conftype.h
Index: alpine-2.20/pith/conftype.h
===================================================================
--- alpine-2.11.orig/pith/conftype.h
+++ alpine-2.11/pith/conftype.h
@@ -117,6 +117,9 @@ typedef enum { V_PERSONAL_NAME = 0
--- alpine-2.20.orig/pith/conftype.h
+++ alpine-2.20/pith/conftype.h
@@ -118,6 +118,9 @@ typedef enum { V_PERSONAL_NAME = 0
, V_NEWSRC_PATH
, V_NEWS_ACTIVE_PATH
, V_NEWS_SPOOL_DIR
@ -3392,7 +3435,7 @@ Index: alpine-2.11/pith/conftype.h
, V_UPLOAD_CMD
, V_UPLOAD_CMD_PREFIX
, V_DOWNLOAD_CMD
@@ -393,6 +396,9 @@ typedef enum {
@@ -395,6 +398,9 @@ typedef enum {
F_PASS_C1_CONTROL_CHARS,
F_SINGLE_FOLDER_LIST,
F_VERTICAL_FOLDER_LIST,
@ -3402,10 +3445,10 @@ Index: alpine-2.11/pith/conftype.h
F_TAB_CHK_RECENT,
F_AUTO_REPLY_TO,
F_VERBOSE_POST,
Index: alpine-2.11/pith/init.c
Index: alpine-2.20/pith/init.c
===================================================================
--- alpine-2.11.orig/pith/init.c
+++ alpine-2.11/pith/init.c
--- alpine-2.20.orig/pith/init.c
+++ alpine-2.20/pith/init.c
@@ -408,6 +408,9 @@ get_mail_list(CONTEXT_S *list_cntxt, cha
&& stricmp(filename, folder_base)){
#else
@ -3416,11 +3459,22 @@ Index: alpine-2.11/pith/init.c
&& strcmp(filename, folder_base)){
#endif
#endif
Index: alpine-2.11/pith/pattern.c
Index: alpine-2.20/pith/pattern.c
===================================================================
--- alpine-2.11.orig/pith/pattern.c
+++ alpine-2.11/pith/pattern.c
@@ -5483,6 +5483,15 @@ match_pattern_folder_specific(PATTERN_S
--- alpine-2.20.orig/pith/pattern.c
+++ alpine-2.20/pith/pattern.c
@@ -49,7 +49,9 @@ static char rcsid[] = "$Id: pattern.c 12
#include "../pith/icache.h"
#include "../pith/ablookup.h"
#include "../pith/keyword.h"
-
+#ifndef _WINDOWS
+int maildir_file_path(char *name, char *tmp, size_t sizeoftmp);
+#endif /* _WINDOWS */
/*
* Internal prototypes
@@ -5485,6 +5487,15 @@ match_pattern_folder_specific(PATTERN_S
break;
case '#':
@ -3428,7 +3482,7 @@ Index: alpine-2.11/pith/pattern.c
+ if(!struncmp(patfolder, "#md/", 4)
+ || !struncmp(patfolder, "#mc/", 4)){
+ maildir_file_path(patfolder, tmp1, sizeof(tmp1));
+ if(!strcmp(patfolder, stream->mailbox))
+ if(!strcmp(tmp1, stream->mailbox))
+ match++;
+ break;
+ }
@ -3436,7 +3490,7 @@ Index: alpine-2.11/pith/pattern.c
if(!strcmp(patfolder, stream->mailbox))
match++;
@@ -7903,7 +7912,7 @@ move_filtered_msgs(MAILSTREAM *stream, M
@@ -7905,7 +7916,7 @@ move_filtered_msgs(MAILSTREAM *stream, M
int we_cancel = 0, width;
CONTEXT_S *save_context = NULL;
char buf[MAX_SCREEN_COLS+1], sbuf[MAX_SCREEN_COLS+1];
@ -3445,7 +3499,7 @@ Index: alpine-2.11/pith/pattern.c
#define FILTMSG_MAX 30
if(!stream)
@@ -7937,6 +7946,16 @@ move_filtered_msgs(MAILSTREAM *stream, M
@@ -7939,6 +7950,16 @@ move_filtered_msgs(MAILSTREAM *stream, M
if(F_OFF(F_QUELL_FILTER_MSGS, ps_global))
we_cancel = busy_cue(buf, NULL, 0);
@ -3462,7 +3516,7 @@ Index: alpine-2.11/pith/pattern.c
if(!is_absolute_path(dstfldr)
&& !(save_context = default_save_context(ps_global->context_list)))
save_context = ps_global->context_list;
@@ -8000,6 +8019,11 @@ move_filtered_msgs(MAILSTREAM *stream, M
@@ -8002,6 +8023,11 @@ move_filtered_msgs(MAILSTREAM *stream, M
if(we_cancel)
cancel_busy_cue(buf[0] ? 0 : -1);
@ -3474,11 +3528,11 @@ Index: alpine-2.11/pith/pattern.c
return(buf[0] != '\0');
}
Index: alpine-2.11/pith/pine.hlp
Index: alpine-2.20/pith/pine.hlp
===================================================================
--- alpine-2.11.orig/pith/pine.hlp
+++ alpine-2.11/pith/pine.hlp
@@ -21664,6 +21664,102 @@ your account's home directory).
--- alpine-2.20.orig/pith/pine.hlp
+++ alpine-2.20/pith/pine.hlp
@@ -22060,6 +22060,102 @@ your account's home directory).
&lt;End of help on this topic&gt;
</BODY>
</HTML>
@ -3581,7 +3635,7 @@ Index: alpine-2.11/pith/pine.hlp
====== h_config_literal_sig =====
<HTML>
<HEAD>
@@ -29690,6 +29786,49 @@ than across the columns as is the defaul
@@ -30086,6 +30182,49 @@ than across the columns as is the defaul
<P>
&lt;End of help on this topic&gt;
</BODY>
@ -3631,11 +3685,21 @@ Index: alpine-2.11/pith/pine.hlp
</HTML>
====== h_config_verbose_post =====
<HTML>
Index: alpine-2.11/pith/send.c
Index: alpine-2.20/pith/send.c
===================================================================
--- alpine-2.11.orig/pith/send.c
+++ alpine-2.11/pith/send.c
@@ -257,6 +257,13 @@ postponed_stream(MAILSTREAM **streamp, c
--- alpine-2.20.orig/pith/send.c
+++ alpine-2.20/pith/send.c
@@ -47,6 +47,9 @@ static char rcsid[] = "$Id: send.c 1204
#include "../c-client/smtp.h"
#include "../c-client/nntp.h"
+#ifndef _WINDOWS
+int maildir_file_path(char *name, char *tmp, size_t sizeoftmp);
+#endif /* _WINDOWS */
/* this is used in pine_send and pine_simple_send */
@@ -257,6 +260,13 @@ postponed_stream(MAILSTREAM **streamp, c
if(exists & FEX_ISFILE){
context_apply(tmp, p_cntxt, mbox, sizeof(tmp));

View File

@ -2,11 +2,11 @@
imap/src/c-client/mail.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
Index: alpine-2.11/imap/src/c-client/mail.c
Index: alpine-2.20/imap/src/c-client/mail.c
===================================================================
--- alpine-2.11.orig/imap/src/c-client/mail.c
+++ alpine-2.11/imap/src/c-client/mail.c
@@ -3361,13 +3361,13 @@ unsigned long mail_filter (char *text,un
--- alpine-2.20.orig/imap/src/c-client/mail.c
+++ alpine-2.20/imap/src/c-client/mail.c
@@ -3400,13 +3400,13 @@ unsigned long mail_filter (char *text,un
long flags)
{
STRINGLIST *hdrs;
@ -22,7 +22,7 @@ Index: alpine-2.11/imap/src/c-client/mail.c
while (src < end) { /* process header */
/* slurp header line name */
for (s = src,e = s + MAILTMPLEN - 1,e = (e < end ? e : end),t = tmp;
@@ -3406,6 +3406,10 @@ unsigned long mail_filter (char *text,un
@@ -3447,6 +3447,10 @@ unsigned long mail_filter (char *text,un
}
}
*dst = '\0'; /* tie off destination */

69
lint.diff Normal file
View File

@ -0,0 +1,69 @@
From: Jan Engelhardt <jengelh@inai.de>
Date: 2015-03-25 18:25:22.663262139 +0100
rpmlint:
W: alpine implicit-pointer-decl dmail.c:160
W: alpine implicit-pointer-decl mlock.c:114
W: alpine implicit-pointer-decl tmail.c:168
E: alpine no-return-in-nonvoid-function imap.c:2790
gcc:
dmail.c:160:5: warning: implicit declaration of function 'isdigit' [-Wimplicit-function-declaration]
mlock.c:114:5: warning: implicit declaration of function 'time' [-Wimplicit-function-declaration]
tmail.c:168:7: warning: implicit declaration of function 'isdigit' [-Wimplicit-function-declaration]
imap.c:2790:1: warning: control reaches end of non-void function [-Wreturn-type]
---
alpine/imap.c | 1 +
imap/src/dmail/dmail.c | 1 +
imap/src/mlock/mlock.c | 1 +
imap/src/tmail/tmail.c | 1 +
4 files changed, 4 insertions(+)
Index: alpine-2.20/alpine/imap.c
===================================================================
--- alpine-2.20.orig/alpine/imap.c
+++ alpine-2.20/alpine/imap.c
@@ -2786,6 +2786,7 @@ if(F_OFF(F_DISABLE_PASSWORD_FILE_SAVING,
return(want_to(_("Preserve password on DISK for next login"),
'y', 'x', NO_HELP, WT_NORM)
== 'y');
+return 0;
#endif /* PASSFILE */
}
Index: alpine-2.20/imap/src/dmail/dmail.c
===================================================================
--- alpine-2.20.orig/imap/src/dmail/dmail.c
+++ alpine-2.20/imap/src/dmail/dmail.c
@@ -24,6 +24,7 @@
*
*/
+#include <ctype.h>
#include <stdio.h>
#include <pwd.h>
#include <errno.h>
Index: alpine-2.20/imap/src/mlock/mlock.c
===================================================================
--- alpine-2.20.orig/imap/src/mlock/mlock.c
+++ alpine-2.20/imap/src/mlock/mlock.c
@@ -32,6 +32,7 @@
#include <stdio.h>
#include <sysexits.h>
#include <syslog.h>
+#include <time.h>
#include <grp.h>
#include <sys/types.h>
#include <sys/file.h>
Index: alpine-2.20/imap/src/tmail/tmail.c
===================================================================
--- alpine-2.20.orig/imap/src/tmail/tmail.c
+++ alpine-2.20/imap/src/tmail/tmail.c
@@ -23,6 +23,7 @@
*
*/
+#include <ctype.h>
#include <stdio.h>
#include <pwd.h>
#include <errno.h>

View File

@ -1,26 +1,12 @@
---
alpine/folder.c | 2 +-
imap/src/c-client/mail.c | 10 ++++++++--
2 files changed, 9 insertions(+), 3 deletions(-)
1 file changed, 8 insertions(+), 2 deletions(-)
Index: alpine-2.11/alpine/folder.c
Index: alpine-2.20/imap/src/c-client/mail.c
===================================================================
--- alpine-2.11.orig/alpine/folder.c
+++ alpine-2.11/alpine/folder.c
@@ -6132,7 +6132,7 @@ folder_select_count(long int *count, int
continue;
case 14 : /* toggle comparison */
- *cmp = ++(*cmp) % 3;
+ *cmp = ((*cmp) + 1) % 3;
continue;
case -1 : /* cancel */
Index: alpine-2.11/imap/src/c-client/mail.c
===================================================================
--- alpine-2.11.orig/imap/src/c-client/mail.c
+++ alpine-2.11/imap/src/c-client/mail.c
@@ -2940,8 +2940,14 @@ long mail_parse_date (MESSAGECACHE *elt,
--- alpine-2.20.orig/imap/src/c-client/mail.c
+++ alpine-2.20/imap/src/c-client/mail.c
@@ -2979,8 +2979,14 @@ long mail_parse_date (MESSAGECACHE *elt,
/* parse time */
d = strtoul (s+1,(char **) &s,10);
if (*s != ':') return NIL;