Archive-name: elmME+2.5/PLalpha-54to60.2
Before applying this patch catenate parts 1 - 13 first.
Also it should be possible to apply parts 1 - 13
individually.
Part 0 does not include patch.
This patch is agaist Elm ME+ 2.5 PLalpha54
====================================== ( part 2/13 ) =========
Index: elmME+.2.5.alpha60/doc/elmregister.1
*** elmME+.2.5.alpha54/doc/elmregister.1 Tue Apr 20 20:32:06 2021
--- elmME+.2.5.alpha60/doc/elmregister.1 Thu May 26 11:16:29 2022
***************
*** 505,508 ****
.SH BUG REPORTS TO
Kari Hurtta elm@elmme-mailer.org
.SH COPYRIGHTS
! \fB\*(ct\fRCopyright 2003-2021 by Kari Hurtta
--- 505,508 ----
.SH BUG REPORTS TO
Kari Hurtta elm@elmme-mailer.org
.SH COPYRIGHTS
! \fB\*(ct\fRCopyright 2003-2022 by Kari Hurtta
Index: elmME+.2.5.alpha60/doc/elmstringconvert.1
*** elmME+.2.5.alpha54/doc/elmstringconvert.1 Tue Apr 20 20:32:06 2021
--- elmME+.2.5.alpha60/doc/elmstringconvert.1 Thu May 26 11:16:29 2022
***************
*** 86,89 ****
.SH BUG REPORTS TO
Kari Hurtta elm@elmme-mailer.org
.SH COPYRIGHTS
! \fB\*(ct\fRCopyright 2002-2021 by Kari Hurtta
--- 86,89 ----
.SH BUG REPORTS TO
Kari Hurtta elm@elmme-mailer.org
.SH COPYRIGHTS
! \fB\*(ct\fRCopyright 2002-2022 by Kari Hurtta
Index: elmME+.2.5.alpha60/doc/elmterminal.1
*** elmME+.2.5.alpha54/doc/elmterminal.1 Tue Apr 20 20:32:06 2021
--- elmME+.2.5.alpha60/doc/elmterminal.1 Thu May 26 11:16:29 2022
***************
*** 79,82 ****
.SH BUG REPORTS TO
Kari Hurtta elm@elmme-mailer.org
.SH COPYRIGHTS
! \fB\*(ct\fRCopyright 2000-2021 by Kari Hurtta
--- 79,82 ----
.SH BUG REPORTS TO
Kari Hurtta elm@elmme-mailer.org
.SH COPYRIGHTS
! \fB\*(ct\fRCopyright 2000-2022 by Kari Hurtta
Index: elmME+.2.5.alpha60/doc/elmunidata.1
*** elmME+.2.5.alpha54/doc/elmunidata.1 Tue Apr 20 20:32:06 2021
--- elmME+.2.5.alpha60/doc/elmunidata.1 Thu May 26 11:16:29 2022
***************
*** 82,85 ****
.SH BUG REPORTS TO
Kari Hurtta elm@elmme-mailer.org
.SH COPYRIGHTS
! \fB\*(ct\fRCopyright 2001-2021 by Kari Hurtta
--- 82,85 ----
.SH BUG REPORTS TO
Kari Hurtta elm@elmme-mailer.org
.SH COPYRIGHTS
! \fB\*(ct\fRCopyright 2001-2022 by Kari Hurtta
Index: elmME+.2.5.alpha60/doc/fastmail.1
*** elmME+.2.5.alpha54/doc/fastmail.1 Tue Apr 20 20:32:06 2021
--- elmME+.2.5.alpha60/doc/fastmail.1 Fri Sep 2 20:38:19 2022
***************
*** 11,17 ****
.B fastmail [
.B \-d
.I "\fIclass\fR=\fIdebugfile\fR:\fIlevel\fR"
! ] [-b bcc-list] [-c cc-list] [-C comments] [-d] [-H] [-f fromname] [-F from-field]
[-i msg-id] [-r replyto] [-R references] [-s subject] filename|- address-list
.br
.SH DESCRIPTION
--- 11,17 ----
.B fastmail [
.B \-d
.I "\fIclass\fR=\fIdebugfile\fR:\fIlevel\fR"
! ] [-b bcc-list] [-c cc-list] [-C comments] [-d] [-H] [-f from-name] [-F from-field]
[-i msg-id] [-r replyto] [-R references] [-s subject] filename|- address-list
.br
.SH DESCRIPTION
***************
*** 49,67 ****
.I fastmail
was compiled with debugging enabled.
.TP
! .B "-f \fIfrom\fR"
This overrides the users name in the From: header field, so that if
the user was x@y, and their name was MrX then the default
From: line would be "From: MrX ". Using "-f Joe" when
invoking this, though, would change it to "From: Joe "
! NOTE: -f \fIfrom\fR does not work if From: header field
! is given on ~/.elm/elmheaders file or when -F option
! is used.
.TP
.B "-F \fIfrom-field\fR"
This specifies From: header field or adds new address to
! From: header field.
.TP
.B -H
If specified, only Return-Path: -header field is read from
--- 49,78 ----
.I fastmail
was compiled with debugging enabled.
.TP
! .B "-f \fIfrom-name\fR"
This overrides the users name in the From: header field, so that if
the user was x@y, and their name was MrX then the default
From: line would be "From: MrX ". Using "-f Joe" when
invoking this, though, would change it to "From: Joe "
! This option can be given only once.
!
! NOTE: "-f \fIfrom-name\fR" does not work if From: header field
! is given on ~/.elm/elmheaders file and it
! includes more than one From: address.
!
! This option can not be used together with "-F \fIfrom-field\fR"
! option.
!
.TP
.B "-F \fIfrom-field\fR"
This specifies From: header field or adds new address to
! From: header field. From: addresses given on ~/.elm/elmheaders
! file are discarded.
!
! This option can not be used together with "-f \fIfrom-name\fR"
! option.
!
.TP
.B -H
If specified, only Return-Path: -header field is read from
***************
*** 161,167 ****
.SH BUG REPORTS TO
Kari Hurtta elm@elmme-mailer.org
.SH COPYRIGHTS
! \fB\*(ct\fRCopyright 1996-2021 by Kari Hurtta
.br
Based on Elm 2.4, \fB\*(ct\fRCopyright 1988-1992 by The USENET Community Trust
.br
--- 172,178 ----
.SH BUG REPORTS TO
Kari Hurtta elm@elmme-mailer.org
.SH COPYRIGHTS
! \fB\*(ct\fRCopyright 1996-2022 by Kari Hurtta
.br
Based on Elm 2.4, \fB\*(ct\fRCopyright 1988-1992 by The USENET Community Trust
.br
Index: elmME+.2.5.alpha60/doc/frm.1
*** elmME+.2.5.alpha54/doc/frm.1 Tue Apr 20 20:32:06 2021
--- elmME+.2.5.alpha60/doc/frm.1 Thu May 26 11:16:29 2022
***************
*** 162,168 ****
.SH BUG REPORTS TO
Kari Hurtta elm@elmme-mailer.org
.SH COPYRIGHTS
! \fB\*(ct\fRCopyright 1996-2021 by Kari Hurtta
.br
Based on Elm 2.5, \fB\*(ct\fRCopyright 1988-1995 by The USENET Community Trust
.br
--- 162,168 ----
.SH BUG REPORTS TO
Kari Hurtta elm@elmme-mailer.org
.SH COPYRIGHTS
! \fB\*(ct\fRCopyright 1996-2022 by Kari Hurtta
.br
Based on Elm 2.5, \fB\*(ct\fRCopyright 1988-1995 by The USENET Community Trust
.br
Index: elmME+.2.5.alpha60/doc/mail.services
*** elmME+.2.5.alpha54/doc/mail.services Sun Nov 15 16:50:39 2015
--- elmME+.2.5.alpha60/doc/mail.services Thu May 26 11:16:29 2022
***************
*** 12,17 ****
--- 12,18 ----
# imaps
# pops
# smtps
+ # submissions
#
# is canonical name for host.
# are in general following forms:
***************
*** 37,42 ****
--- 38,47 ----
# (STARTTLS or similar) and
# certificates's CN must
# match
+ # use-tls-checks With value "no" disables global
+ # verify-tls-certificate
+ # and 'require-tls-peer-name given
+ # on use-tls elmrc option
# : Valid are these
# which are given with
# use-library -elmrc
***************
*** 69,75 ****
# ("smtps" requires explict port=<...> or addr=ip:/
# to be given. Originally port 465 was reserved for smtps, but
# this was revoked and that port is now reserved for
! # "URL Rendesvous Directory for SSM" instead.)
#
# Parameter 'verify-tls-certificate' does not check certificate
# name. CN (common name) of certificate subject can be given with
--- 74,82 ----
# ("smtps" requires explict port=<...> or addr=ip:/
# to be given. Originally port 465 was reserved for smtps, but
# this was revoked and that port is now reserved for
! # "URL Rendesvous Directory for SSM" instead. TCP port 465
! # is later registered for "Message Submission over TLS protocol"
! # or submissions also. )
#
# Parameter 'verify-tls-certificate' does not check certificate
# name. CN (common name) of certificate subject can be given with
***************
*** 83,92 ****
# This also do not check agaist wildcards (*) on certificate
# name -- * on certificate name is treated as regular character.
#
! # There is no advantage for using "imaps" over "imap" or "pops" over "pop".
# Just use "verify-tls-certificate" if regular imap or pop -port is not blocked
# and mail server supports encryption (via imap's STARTTLS or pop's STLS).
imap.example.com imap require-tls-peer-name; verify-tls-certificate
pop3.example.com pop require-tls-peer-name; verify-tls-certificate
!
--- 90,103 ----
# This also do not check agaist wildcards (*) on certificate
# name -- * on certificate name is treated as regular character.
#
! # There is no advantage for using "imaps" over "imap" or "pops" over "pop"
! # or "submissions" over "submission". However with use-tls elmrc option value
! # 'implicit-tls' services "imaps", "pops" or "submissions" is tried before
! # "imap", "pop" or "submission" with same ip address.
! #
# Just use "verify-tls-certificate" if regular imap or pop -port is not blocked
# and mail server supports encryption (via imap's STARTTLS or pop's STLS).
imap.example.com imap require-tls-peer-name; verify-tls-certificate
pop3.example.com pop require-tls-peer-name; verify-tls-certificate
! smtp.example.com submission require-tls-peer-name; verify-tls-certificate
Index: elmME+.2.5.alpha60/doc/newalias.1
*** elmME+.2.5.alpha54/doc/newalias.1 Tue Apr 20 20:32:06 2021
--- elmME+.2.5.alpha60/doc/newalias.1 Thu May 26 11:16:29 2022
***************
*** 103,109 ****
.SH BUG REPORTS TO
Kari Hurtta elm@elmme-mailer.org
.SH COPYRIGHTS
! \fB\*(ct\fRCopyright 1996-2021 by Kari Hurtta
.br
Based on Elm 2.4, \fB\*(ct\fRCopyright 1988-1992 by The USENET Community Trust
.br
--- 103,109 ----
.SH BUG REPORTS TO
Kari Hurtta elm@elmme-mailer.org
.SH COPYRIGHTS
! \fB\*(ct\fRCopyright 1996-2022 by Kari Hurtta
.br
Based on Elm 2.4, \fB\*(ct\fRCopyright 1988-1992 by The USENET Community Trust
.br
Index: elmME+.2.5.alpha60/doc/newmail.1
*** elmME+.2.5.alpha54/doc/newmail.1 Tue Apr 20 20:32:06 2021
--- elmME+.2.5.alpha60/doc/newmail.1 Thu May 26 11:16:29 2022
***************
*** 171,177 ****
.SH BUG REPORTS TO
Kari Hurtta elm@elmme-mailer.org
.SH COPYRIGHTS
! \fB\*(ct\fRCopyright 1996-2021 by Kari Hurtta
.br
Based on Elm 2.4, \fB\*(ct\fRCopyright 1988-1992 by The USENET Community Trust
.br
--- 171,177 ----
.SH BUG REPORTS TO
Kari Hurtta elm@elmme-mailer.org
.SH COPYRIGHTS
! \fB\*(ct\fRCopyright 1996-2022 by Kari Hurtta
.br
Based on Elm 2.4, \fB\*(ct\fRCopyright 1988-1992 by The USENET Community Trust
.br
Index: elmME+.2.5.alpha60/doc/readmsg.1
*** elmME+.2.5.alpha54/doc/readmsg.1 Tue Apr 20 20:32:06 2021
--- elmME+.2.5.alpha60/doc/readmsg.1 Thu May 26 11:16:29 2022
***************
*** 266,272 ****
.SH BUG REPORTS TO
Kari Hurtta elm@elmme-mailer.org
.SH COPYRIGHTS
! \fB\*(ct\fRCopyright 1996-2021 by Kari Hurtta
.br
Based on Elm 2.5, \fB\*(ct\fRCopyright 1988-1995 by The USENET Community Trust
.br
--- 266,272 ----
.SH BUG REPORTS TO
Kari Hurtta elm@elmme-mailer.org
.SH COPYRIGHTS
! \fB\*(ct\fRCopyright 1996-2022 by Kari Hurtta
.br
Based on Elm 2.5, \fB\*(ct\fRCopyright 1988-1995 by The USENET Community Trust
.br
Index: elmME+.2.5.alpha60/hdrs/addrlib.h
*** elmME+.2.5.alpha54/hdrs/addrlib.h Tue Apr 20 20:32:06 2021
--- elmME+.2.5.alpha60/hdrs/addrlib.h Fri Sep 2 20:38:19 2022
***************
*** 1,7 ****
! /* $Id: addrlib.h,v 2.37 2021/01/17 18:53:16 hurtta Exp $ */
/******************************************************************************
! * The Elm (ME+) Mail System - $Revision: 2.37 $ $State: Exp $
*
* Author: Kari Hurtta (was hurtta+elm@posti.FMI.FI)
* or Kari Hurtta
--- 1,7 ----
! /* $Id: addrlib.h,v 2.41 2022/08/06 08:01:51 hurtta Exp $ */
/******************************************************************************
! * The Elm (ME+) Mail System - $Revision: 2.41 $ $State: Exp $
*
* Author: Kari Hurtta (was hurtta+elm@posti.FMI.FI)
* or Kari Hurtta
***************
*** 25,35 ****
/** "exit_disposition" values */
enum exit_disposition {
! UNSET = 0,
! KEEP = 1,
! STORE = 2,
! DELETE = 3,
! HIDE = 4
};
--- 25,38 ----
/** "exit_disposition" values */
enum exit_disposition {
! UNSET = 0,
! KEEP = 1,
! STORE_RECV = 2,
! DELETE = 3,
! HIDE = 4,
! STORE_DSN = 5,
!
! exit_disposition_COUNT
};
***************
*** 37,43 ****
enum {
DISP_INLINE = 0,
DISP_ATTACH = 1,
! DISP_AUTOATTACH = 2
};
enum encoding {
--- 40,48 ----
enum {
DISP_INLINE = 0,
DISP_ATTACH = 1,
! DISP_AUTOATTACH = 2,
!
! DISP_count /* size of array */
};
enum encoding {
***************
*** 63,68 ****
--- 68,74 ----
NOTPLAIN_bit_is_fallback,
NOTPLAIN_bit_metamail_blacklisted,
NOTPLAIN_bit_type_not_found,
+ NOTPLAIN_bit_mailcap_skipped,
NOTPLAIN_bit_count /* Number of bits */
};
***************
*** 73,79 ****
#define NOTPLAIN_is_fallback (1 << NOTPLAIN_bit_is_fallback)
#define NOTPLAIN_metamail_blacklisted (1 << NOTPLAIN_bit_metamail_blacklisted)
#define NOTPLAIN_type_not_found (1 << NOTPLAIN_bit_type_not_found)
!
/* XXX struct mimeinfo is embedded to struct header_rec */
#define MIME_magic 0xFD00
--- 79,85 ----
#define NOTPLAIN_is_fallback (1 << NOTPLAIN_bit_is_fallback)
#define NOTPLAIN_metamail_blacklisted (1 << NOTPLAIN_bit_metamail_blacklisted)
#define NOTPLAIN_type_not_found (1 << NOTPLAIN_bit_type_not_found)
! #define NOTPLAIN_mailcap_skipped (1 << NOTPLAIN_bit_mailcap_skipped)
/* XXX struct mimeinfo is embedded to struct header_rec */
#define MIME_magic 0xFD00
***************
*** 262,267 ****
--- 268,278 ----
const struct string * phrase,
const struct string * comment));
+ /* Rerurn 1 if address have all datat as NULL
+ (Note that <> is not NULL on that case)
+ */
+
+ extern int address_is_empty P_((const struct address * addr));
extern const struct string * address_get_phrase P_((const struct address *
addr));
***************
*** 694,699 ****
--- 705,719 ----
#define ADD_GROUP(x,GRP) add_group_phrase_(&x,GRP)
#define ADD_TEXTUAL(x,TEXTUAL,POS,LEN) add_textual_addr_(&x,TEXTUAL,POS,LEN)
+ #define ADD_EXPANDED_p(x,ADR,FN,COM) add_expanded_addr_(x,ADR,FN,COM)
+ #define ADD_EXPANDED0_p(x,ADR) add_expanded_addr0_(x,ADR,-1)
+ #define ADD_EXPANDED_g_p(x,ADR,G) add_expanded_addr0_(x,ADR,G)
+ #define ADD_EXPANDED_G_p(x,ADR,G) add_expanded_addr_g(x,ADR,G)
+ #define ADD_EXPANDED4_p(x,ADR,FN,COM,GRP) add_expanded_addr_4(x,ADR,FN,COM,GRP)
+ #define ADD_GROUP_p(x,GRP) add_group_phrase_(x,GRP)
+ #define ADD_TEXTUAL_p(x,TEXTUAL,POS,LEN) add_textual_addr_(x,TEXTUAL,POS,LEN)
+
+
extern void zero_expanded_address P_((struct expanded_address *x));
extern void free_expanded_address P_((struct expanded_address *x));
Index: elmME+.2.5.alpha60/hdrs/aliaslib.h
*** elmME+.2.5.alpha54/hdrs/aliaslib.h Fri Dec 21 13:21:42 2018
--- elmME+.2.5.alpha60/hdrs/aliaslib.h Sat Aug 28 14:11:45 2021
***************
*** 1,7 ****
! /* $Id: aliaslib.h,v 2.9 2018/12/21 11:21:42 hurtta Exp $ */
/******************************************************************************
! * The Elm (ME+) Mail System - $Revision: 2.9 $ $State: Exp $
*
* Author: Kari Hurtta (was hurtta+elm@posti.FMI.FI)
* or Kari Hurtta
--- 1,7 ----
! /* $Id: aliaslib.h,v 2.12 2021/07/14 07:19:22 hurtta Exp $ */
/******************************************************************************
! * The Elm (ME+) Mail System - $Revision: 2.12 $ $State: Exp $
*
* Author: Kari Hurtta (was hurtta+elm@posti.FMI.FI)
* or Kari Hurtta
***************
*** 12,17 ****
--- 12,55 ----
struct address_alias;
#endif
+ /* file chnage information ------------------------------------------------- */
+
+ #define FILE_CHANGES_magic 0xF612
+
+ extern const struct file_changes {
+ unsigned short magic; /* FILE_CHANGES_magic */
+
+ size_t self_size; /* Size of struct file_changes */
+
+ /* copy some stat information */
+
+ dev_t dev; /* ID of device containing file */
+ ino_t ino; /* inode number */
+ off_t size; /* total size, in bytes */
+ time_t mtime; /* time of last modification */
+
+ unsigned int valid:1;
+ } NULL_file_changes;
+
+ #define FILE_CHANGES_INIT { \
+ FILE_CHANGES_magic, \
+ sizeof (struct file_changes), \
+ 0, \
+ 0, \
+ 0, \
+ 0, \
+ \
+ 0 /* No valid information */ \
+ }
+
+
+ extern enum file_changes_result {
+ file_changes_error = -1,
+ no_file_changes = 0,
+ have_file_changes } test_file_changes P_((const char *filename,
+ const struct file_changes *old_file,
+ int *errno_res));
+
/* ------------------------------------------------------------------------- */
/* init.c */
***************
*** 23,28 ****
--- 61,69 ----
extern struct aliases_map * user_aliases_map;
extern charset_t user_aliases_cs;
extern struct editor_propline * user_aliases_pl;
+ extern struct file_changes user_aliases_change;
+
+ extern int user_aliases_needwrite;
extern ENUMERATE editor_al_propline; /* 0 = auto
1 = emacs
***************
*** 39,60 ****
/* aliases operations ------------------------------------------------------ */
extern struct aliases_map * load_aliases_map P_((const char *filename,
int *errors,
charset_t *fileset,
struct editor_propline
! **propline));
extern void free_aliases_map P_((struct aliases_map **map));
extern int aliases_map_item_count P_((struct aliases_map *map));
! extern void dump_aliases_map P_((FILE *f, struct aliases_map *map,
! FILE *commentfile,
! const char *actor,
! char *version_buff,
! charset_t fileset,
! const struct editor_propline *propline));
/* Creates empty map */
extern struct aliases_map * new_aliases_map P_((void));
--- 80,117 ----
/* aliases operations ------------------------------------------------------ */
+
extern struct aliases_map * load_aliases_map P_((const char *filename,
int *errors,
charset_t *fileset,
struct editor_propline
! **propline,
! int *suggest_rewrite,
! struct file_changes *file_information));
!
! extern int merge_aliases_map P_((const char * filename,
! FILE * f,
! struct aliases_map * map,
! int * errors,
! charset_t * fileset,
! struct editor_propline ** propline,
! int * suggest_rewrite,
! int * need_update /* sets 1 if map was updated */,
! struct file_changes * file_information
! ));
extern void free_aliases_map P_((struct aliases_map **map));
extern int aliases_map_item_count P_((struct aliases_map *map));
! extern int dump_aliases_map P_((FILE *f, struct aliases_map *map,
! FILE *commentfile,
! const char *actor,
! char *version_buff,
! charset_t fileset,
! const struct editor_propline *propline,
! struct file_changes *file_information,
! int *errno_res));
/* Creates empty map */
extern struct aliases_map * new_aliases_map P_((void));
***************
*** 71,77 ****
int idx, const struct string **key));
extern const struct address_alias *
! aliases_map_lookup_alias P_((const struct aliases_map *map,
const struct string *key,
int *idx));
--- 128,134 ----
int idx, const struct string **key));
extern const struct address_alias *
! aliases_map_lookup_alias P_((struct aliases_map *map,
const struct string *key,
int *idx));
***************
*** 80,85 ****
--- 137,145 ----
const struct string *key,
const struct address_alias *alias));
+ extern int aliases_map_deleted_alias P_((struct aliases_map *map,
+ int idx));
+
extern int aliases_map_remove_alias P_((struct aliases_map *map,
const struct string *key));
***************
*** 87,93 ****
extern void aliases_map_remove_index P_((struct aliases_map *map,
int idx));
-
/* Alias vector operations ------------------------------------------------ */
extern struct alias_vector * new_alias_vector P_((void));
--- 147,152 ----
Index: elmME+.2.5.alpha60/hdrs/conf_writer_imp.h
*** elmME+.2.5.alpha54/hdrs/conf_writer_imp.h Mon Jul 14 18:07:25 2014
--- elmME+.2.5.alpha60/hdrs/conf_writer_imp.h Sat Aug 28 14:11:45 2021
***************
*** 1,10 ****
! /* $Id: conf_writer_imp.h,v 2.3 2014/07/14 15:07:25 hurtta Exp $ */
extern struct config_files {
! char * shortname;
! char *fname;
! dump_conf_map_f * dump_map;
! dump_message_f * write_message;
} * cfiles;
extern int cfiles_num;
--- 1,12 ----
! /* $Id: conf_writer_imp.h,v 2.5 2021/07/13 07:58:36 hurtta Exp $ */
extern struct config_files {
! char * shortname;
! char * fname;
! dump_conf_map_f * dump_map;
! dump_message_f * write_message;
! int * rewrite_flag;
! merge_conf_map_f * merge_map;
} * cfiles;
extern int cfiles_num;
Index: elmME+.2.5.alpha60/hdrs/connection_imp.h
*** elmME+.2.5.alpha54/hdrs/connection_imp.h Tue Apr 20 20:32:06 2021
--- elmME+.2.5.alpha60/hdrs/connection_imp.h Thu May 26 11:16:29 2022
***************
*** 1,7 ****
! /* $Id: connection_imp.h,v 2.40 2021/04/14 17:57:44 hurtta Exp $ */
/******************************************************************************
! * The Elm (ME+) Mail System - $Revision: 2.40 $
*
* Author: Kari Hurtta (was hurtta+elm@posti.FMI.FI)
* or Kari Hurtta
--- 1,7 ----
! /* $Id: connection_imp.h,v 2.42 2022/02/13 18:10:15 hurtta Exp $ */
/******************************************************************************
! * The Elm (ME+) Mail System - $Revision: 2.42 $
*
* Author: Kari Hurtta (was hurtta+elm@posti.FMI.FI)
* or Kari Hurtta
***************
*** 15,23 ****
/* NOTE: no PORT_smtps = 465 because
this registeration is revoked
*/
! PORT_submission = 587,
PORT_imaps = 993, PORT_pop3s = 995
} PORTS;
--- 15,26 ----
/* NOTE: no PORT_smtps = 465 because
this registeration is revoked
+
+ also PORT_submissions replaces this
*/
! PORT_submissions = 465,
! PORT_submission = 587,
PORT_imaps = 993, PORT_pop3s = 995
} PORTS;
***************
*** 116,121 ****
--- 119,125 ----
#define SE_require_tls_name (1<<9)
#define SE_given_name_port (1<<10)
#define SE_rescan_name_port (1<<11)
+ #define SE_nouse_tls_checks (1<<12)
#ifdef ANSI_C
struct SE_option;
***************
*** 241,248 ****
--- 245,287 ----
extern const char * service_type_name P_((const struct service_type *st));
extern const struct service_type * service_type_from_name
P_((const char *ascii_name));
+ extern PORTS service_type_defport P_((const struct service_type *st));
+
+ /* Increments refcount */
+ extern struct service_entry *convert_service_entry P_(( struct service_entry *source,
+ const struct service_type * st));
+ #define ENUM_SERVICE_TYPE_magic 0xF921
+
+ extern const struct enum_service_type {
+ unsigned short magic; /* ENUM_SERVICE_TYPE_magic */
+
+ int idx;
+ enum init_tls_pass {
+ no_init_tls = -1,
+ init_tls_default = 0,
+ try_Implicit_TLS,
+ try_no_init_tls,
+ NUM_init_tls_pass
+ } tls_idx;
+ int mask_idx;
+ int any_mask;
+ const int * mask_list;
+ int require_mask;
+ } NULL_enum_service_type;
+
+ extern void init_enum_service_type P_((struct enum_service_type *est,
+ enum init_tls_pass start_tls_idx,
+ int any_mask,
+ int require_mask));
+ extern void init_enum_service_list P_((struct enum_service_type * est,
+ enum init_tls_pass start_tls_idx,
+ const int * mask_list,
+ int require_mask));
+
+ extern const struct service_type * enumerate_service_type P_((struct enum_service_type *est));
+
enum initial_tls_flag { itls_ignore = -1,
itls_disable = 0,
itls_require = 1 };
***************
*** 492,497 ****
--- 531,552 ----
cancelable */
));
+
+ extern int connect_remote_account_2 P_((struct remote_account * ra,
+ struct service_entry * initial_se,
+ struct cancel_data *main_cancel
+ /* Used if dns lookup was
+ cancelable */ ,
+
+ struct service_entry ** result_se
+ /* Increments refcount */ ,
+ const struct service_type ** got_type,
+ int * got_port,
+
+
+ /* For enumerate_service_type */
+ struct enum_service_type *est));
+
/* -1 == name not found or bad syntax
0 == not a remote address
1 == name found
Index: elmME+.2.5.alpha60/hdrs/cs_imp.h
*** elmME+.2.5.alpha54/hdrs/cs_imp.h Tue May 12 21:18:18 2020
--- elmME+.2.5.alpha60/hdrs/cs_imp.h Sat Aug 28 14:11:45 2021
***************
*** 1,7 ****
! /* $Id: cs_imp.h,v 2.10 2020/05/12 18:18:18 hurtta Exp $ */
/******************************************************************************
! * The Elm (ME+) Mail System - $Revision: 2.10 $ $State: Exp $
*
* Author: Kari Hurtta
* (was hurtta+elm@posti.FMI.FI, hurtta+elm@ozone.FMI.FI)
--- 1,7 ----
! /* $Id: cs_imp.h,v 2.11 2021/07/07 07:56:36 hurtta Exp $ */
/******************************************************************************
! * The Elm (ME+) Mail System - $Revision: 2.11 $ $State: Exp $
*
* Author: Kari Hurtta
* (was hurtta+elm@posti.FMI.FI, hurtta+elm@ozone.FMI.FI)
***************
*** 29,34 ****
--- 29,38 ----
unsigned short magic;
charset_t string_type;
+ int refcount; /* Used by struct string_sort */
+
+
+
/* Can't remove str_private_data, because string_len()
takes constant argument, but string is needed to
be compressed
***************
*** 36,41 ****
--- 40,47 ----
struct str_private_data * p;
};
+ extern void inc_string_refcount P_((struct string *s));
+
/* -------------------------------------------------------- */
typedef void cs_init_string P_((struct string *str));
***************
*** 122,128 ****
typedef unsigned char cs_give_bytecode_from_string P_((const struct string *str,
int pos, int *found));
-
/* Return 1 if supported */
typedef enum digest_feed_mode {
digest_feed_fallback_stream = -1,
--- 128,133 ----
***************
*** 132,137 ****
--- 137,161 ----
const struct string *s));
+ struct string_unicode_vector {
+
+ uint16 * vector;
+ size_t vector_len;
+ size_t first_failure; /* position of first unknwon character,
+ if first_failure == vector_len
+ then alla character are known */
+ };
+
+ typedef enum unicode_vector_mode {
+ unicode_vector_fail = -1, /* Returns fails if there is at least one unknown
+ character */
+ unicode_vector_empty = 0,
+ unicode_vector_done /* Have valid vector but see first_failure */
+ } cs_unicode_vector_from_string P_((struct string_unicode_vector *ret,
+ const struct string *s,
+ int *errcount));
+
+
extern struct charset_type {
const char * type_name;
cs_init_string * cs_init_it;
***************
*** 165,170 ****
--- 189,196 ----
cs_iso2022_info_set * cs_iso2022_info_set_it;
cs_give_bytecode_from_string * cs_give_bytecode_from_it;
cs_digest_feed_from_string * cs_digest_feed_from_s_it;
+ cs_unicode_vector_from_string * cs_unicode_vector_from_it;
+
struct charset_type * next_type;
***************
*** 178,188 ****
#if ANSI_C
extern cs_digest_feed_from_string cs_digest_feed_from_null;
#endif
extern enum digest_feed_mode cs_digest_feed_from_null P_((struct digest_proc * ret,
const struct string *s));
!
!
#if defined(WCHAR) && defined(__STDC_ISO_10646__)
extern void change_system_charset P_((void));
--- 204,222 ----
#if ANSI_C
extern cs_digest_feed_from_string cs_digest_feed_from_null;
+ extern cs_unicode_vector_from_string cs_unicode_vector_from_default;
+ extern cs_unicode_vector_from_string cs_unicode_vector_from_null;
#endif
extern enum digest_feed_mode cs_digest_feed_from_null P_((struct digest_proc * ret,
const struct string *s));
! extern enum unicode_vector_mode cs_unicode_vector_from_default
! P_((struct string_unicode_vector *ret,
! const struct string *s,
! int *errcount));
! extern enum unicode_vector_mode cs_unicode_vector_from_null
! P_((struct string_unicode_vector *ret,
! const struct string *s,
! int *errcount));
#if defined(WCHAR) && defined(__STDC_ISO_10646__)
extern void change_system_charset P_((void));
***************
*** 208,213 ****
--- 242,248 ----
struct str_private_data {
unsigned short magic; /* CS_str_magic */
+
int len;
struct charset_state *state;
int private_flag;
***************
*** 222,227 ****
--- 257,263 ----
char *lang;
};
+
struct state_utf8 {
unsigned char bytes;
unsigned char idx;
Index: elmME+.2.5.alpha60/hdrs/defs_major.h
*** elmME+.2.5.alpha54/hdrs/defs_major.h Fri May 6 19:57:03 2016
--- elmME+.2.5.alpha60/hdrs/defs_major.h Sat Aug 28 14:11:45 2021
***************
*** 1,7 ****
! /* $Id: defs_major.h,v 2.12 2016/05/06 16:57:03 hurtta Exp $ */
/******************************************************************************
! * The Elm (ME+) Mail System - $Revision: 2.12 $ $State: Exp $
*
* Modified by: Kari Hurtta
* (was hurtta+elm@posti.FMI.FI, hurtta+elm@ozone.FMI.FI)
--- 1,7 ----
! /* $Id: defs_major.h,v 2.13 2021/07/13 07:58:36 hurtta Exp $ */
/******************************************************************************
! * The Elm (ME+) Mail System - $Revision: 2.13 $ $State: Exp $
*
* Modified by: Kari Hurtta
* (was hurtta+elm@posti.FMI.FI, hurtta+elm@ozone.FMI.FI)
***************
*** 130,136 ****
#endif
-
/*
* Local Variables:
* mode:c
--- 130,135 ----
Index: elmME+.2.5.alpha60/hdrs/elm_defs.h
*** elmME+.2.5.alpha54/hdrs/elm_defs.h Tue Apr 20 20:32:06 2021
--- elmME+.2.5.alpha60/hdrs/elm_defs.h Thu May 26 11:16:29 2022
***************
*** 1,7 ****
! /* $Id: elm_defs.h,v 2.40 2021/01/06 10:41:07 hurtta Exp $ */
/******************************************************************************
! * The Elm (ME+) Mail System - $Revision: 2.40 $ $State: Exp $
*
* Author: Kari Hurtta (was hurtta+elm@posti.FMI.FI)
* or Kari Hurtta
--- 1,7 ----
! /* $Id: elm_defs.h,v 2.44 2022/01/03 13:20:21 hurtta Exp $ */
/******************************************************************************
! * The Elm (ME+) Mail System - $Revision: 2.44 $ $State: Exp $
*
* Author: Kari Hurtta (was hurtta+elm@posti.FMI.FI)
* or Kari Hurtta
***************
*** 53,58 ****
--- 53,59 ----
#define default_folders "Mail"
#define default_recvdmail "=received"
#define default_sentmail "=sent"
+ #define default_dsnmail "=dsn"
#define DEFAULT_TO_CHARS " TC*L"
#if 0 /* XXX not used yet */
***************
*** 332,357 ****
/* message sorting selections */
#define REVERSE - /* for reverse sorting */
! #define SENT_DATE 1 /* the date message was sent */
! #define RECEIVED_DATE 2 /* the date message was received */
! #define SENDER 3 /* the name/address of sender */
! #define SIZE 4 /* the # of lines of the message */
! #define SUBJECT 5 /* the subject of the message */
! #define STATUS 6 /* the status (deleted, etc) */
! #define MAILBOX_ORDER 7 /* the order it is in the file */
! #define THREAD 8 /* thread order (date sent/subject */
/* alias sorting selections */
! #define ALIAS_SORT 1 /* the name of the alias */
! #define NAME_SORT 2 /* the actual name for the alias */
! #define TEXT_SORT 3 /* the order of aliases.text */
#define LAST_ALIAS_SORT TEXT_SORT
!
! #define NO 0
! #define YES 1
! #define MAYBE 2 /* a definite define, eh? */
#define NO_TITE 2 /* ti/te or in flag */
--- 333,364 ----
/* message sorting selections */
#define REVERSE - /* for reverse sorting */
!
! enum msg_sort_type {
! SENT_DATE = 1 /* the date message was sent */,
! RECEIVED_DATE = 2 /* the date message was received */,
! SENDER = 3 /* the name/address of sender */,
! SIZE = 4 /* the # of lines of the message */,
! SUBJECT = 5 /* the subject of the message */,
! STATUS = 6 /* the status (deleted, etc) */,
! MAILBOX_ORDER = 7 /* the order it is in the file */,
! THREAD = 8 /* thread order (date sent/subject */
! };
/* alias sorting selections */
! enum alias_sort_type {
! ALIAS_SORT = 1 /* the name of the alias */,
! NAME_SORT = 2 /* the actual name for the alias */,
! TEXT_SORT = 3 /* the order of aliases.text */
! };
#define LAST_ALIAS_SORT TEXT_SORT
! enum no_yes {
! NO = 0,
! YES = 1,
! MAYBE = 2 /* a definite define, eh? */
! };
#define NO_TITE 2 /* ti/te or in flag */
***************
*** 380,386 ****
static char copyright[] FORIDENT = "\
@(#) (C) Copyright 1986,1987, Dave Taylor\n\
@(#) (C) Copyright 1988-1995, The Usenet Community Trust\
! @(#) (C) Copyright 1996-2021, Kari Hurtta\n";
#else
# define INIT(X)
--- 387,393 ----
static char copyright[] FORIDENT = "\
@(#) (C) Copyright 1986,1987, Dave Taylor\n\
@(#) (C) Copyright 1988-1995, The Usenet Community Trust\
! @(#) (C) Copyright 1996-2022, Kari Hurtta\n";
#else
# define INIT(X)
***************
*** 486,491 ****
--- 493,522 ----
#include "elmlib.h"
+ /* ------------------------------------------------------------------------ */
+
+ /* hdrs/filelock.h and hdrs/misclib.h */
+
+ enum FLOCKING_status {
+ FLOCKING_FAIL = -1,
+ FLOCKING_OK = 0,
+ FLOCKING_RETRY = 1,
+ FLOCKING_UNSUPPORTED = 2 /* Not locked (dotlock?) */
+ };
+
+ enum FLOCKING_mode {
+ FLOCKING_release = -1,
+ FLOCKING_exclusive = 0 /* excluside or read/write lock */,
+ FLOCKING_shared = 1 /* shared or read-only log */
+ };
+
+ enum FLOCKING_blocking {
+ FLOCKING_interrupt = -1 /* called from interrupt handler */,
+ FLOCKING_non_block = 0,
+ FLOCKING_block = 1
+ };
+
+
/*
* Local Variables:
* mode:c
Index: elmME+.2.5.alpha60/hdrs/elmlib.h
*** elmME+.2.5.alpha54/hdrs/elmlib.h Tue Apr 20 20:32:06 2021
--- elmME+.2.5.alpha60/hdrs/elmlib.h Fri Sep 2 20:38:19 2022
***************
*** 1,7 ****
! /* $Id: elmlib.h,v 2.155 2021/01/23 20:39:30 hurtta Exp $ */
/******************************************************************************
! * The Elm (ME+) Mail System - $Revision: 2.155 $ $State: Exp $
*
* Author: Kari Hurtta
* (was hurtta+elm@posti.FMI.FI, hurtta+elm@ozone.FMI.FI)
--- 1,7 ----
! /* $Id: elmlib.h,v 2.172 2022/08/19 16:13:04 hurtta Exp $ */
/******************************************************************************
! * The Elm (ME+) Mail System - $Revision: 2.172 $ $State: Exp $
*
* Author: Kari Hurtta
* (was hurtta+elm@posti.FMI.FI, hurtta+elm@ozone.FMI.FI)
***************
*** 101,120 ****
extern char *strmcpy P_((char *, const char *));
extern char *strmcat P_((char *, const char *));
! /* safeopen.c */
! extern FILE *safeopen P_((char *));
! extern FILE *safeopen_rdwr P_((char *));
! /* istrcmp.c */
extern int istrcmp P_((const char *, const char *));
! /* add_site.c */
!
! extern int add_site P_((char *, char *, char *, int));
!
! /* atonum.c */
/*
* This is similar to atoi(), but it complains if the string
--- 101,116 ----
extern char *strmcpy P_((char *, const char *));
extern char *strmcat P_((char *, const char *));
! /* lib/safeopen.c */
! extern FILE *safeopen P_((char *name,int *errno_res));
! extern FILE *safeopen_rdwr P_((char *name,int *errno_res));
! /* lib/istrcmp.c */
extern int istrcmp P_((const char *, const char *));
! /* lib/atonum.c */
/*
* This is similar to atoi(), but it complains if the string
***************
*** 125,155 ****
extern int atonum P_((const char *));
- /* aliasdb.c */
-
- /* fetch_alias */
-
- #if ANSI_C
- struct dbz;
- #endif
- extern char *next_addr_in_list P_((char **));
- extern struct alias_rec *fetch_alias P_((struct dbz *db, char *alias));
-
-
- /* can_access.c */
- /* I don't understand this routine! access -system call uses
- * real uid / gid anyway!!!!!!!!!!!!!!
- *
- * - K E H
- */
! extern int can_access P_((char *,int));
!
! /* can_open.c */
extern int can_open P_((const char *, const char *));
! /* chloc.c */
/* Is this really needed? This does same than strchr or index, except
* that return type is different.
--- 121,132 ----
extern int atonum P_((const char *));
! /* lib/can_open.c */
extern int can_open P_((const char *, const char *));
! /* lib/chloc.c */
/* Is this really needed? This does same than strchr or index, except
* that return type is different.
***************
*** 163,169 ****
extern int chloc P_((const char *,int));
extern int qchloc P_((const char *, int));
! /* date_util.c */
extern int cvt_dayname_to_daynum P_((char *,int *));
extern int cvt_monthname_to_monthnum P_((char *,int *));
--- 140,146 ----
extern int chloc P_((const char *,int));
extern int qchloc P_((const char *, int));
! /* lib/date_util.c */
extern int cvt_dayname_to_daynum P_((char *,int *));
extern int cvt_monthname_to_monthnum P_((char *,int *));
***************
*** 175,181 ****
extern long make_gmttime P_((int, int, int, int, int, int));
! /* delay_unlink.c */
extern struct delay_unlink * alloc_delay_unlink P_((const char *name,
int fd,
--- 152,158 ----
extern long make_gmttime P_((int, int, int, int, int, int));
! /* lib/delay_unlink.c */
extern struct delay_unlink * alloc_delay_unlink P_((const char *name,
int fd,
***************
*** 234,252 ****
} digest_proc_equal P_((const struct digest_proc *ptr1,
const struct digest_proc *ptr2));
! /* dynarray.c */
extern void ** DynamicArray P_((void **p, int record_size, int *max, int n));
extern void DestroyDynamicArray P_((void **p));
! /* errno.c */
#ifndef STRERROR
char *strerror P_((int errnumber));
#endif
! /* expand.c */
extern int expand P_((char *, int));
extern int expand_env P_((char *dest, const char *src,unsigned destlen));
--- 211,229 ----
} digest_proc_equal P_((const struct digest_proc *ptr1,
const struct digest_proc *ptr2));
! /* lib/dynarray.c */
extern void ** DynamicArray P_((void **p, int record_size, int *max, int n));
extern void DestroyDynamicArray P_((void **p));
! /* lib/errno.c */
#ifndef STRERROR
char *strerror P_((int errnumber));
#endif
! /* lib/expand.c */
extern int expand P_((char *, int));
extern int expand_env P_((char *dest, const char *src,unsigned destlen));
***************
*** 259,275 ****
*/
extern int expand_path P_((char *dest, const char *src, unsigned destlen));
! /* gcos_name.c */
extern char * gcos_name P_((const char *gcos_field,
const char *logname));
! /* get_tz.c */
extern int get_tz_mins P_((time_t tval));
extern const char *get_tz_name P_((const struct tm *));
! /* getaddr.c */
extern void free_rfc822tokenized P_((char **res));
/* Removes comments from vector: */
--- 236,252 ----
*/
extern int expand_path P_((char *dest, const char *src, unsigned destlen));
! /* lib/gcos_name.c */
extern char * gcos_name P_((const char *gcos_field,
const char *logname));
! /* lib/get_tz.c */
extern int get_tz_mins P_((time_t tval));
extern const char *get_tz_name P_((const struct tm *));
! /* lib/getaddr.c */
extern void free_rfc822tokenized P_((char **res));
/* Removes comments from vector: */
***************
*** 281,287 ****
struct string;
#endif
-
extern void look_special_tokens P_((char **tokenized,
const char *tok_chars,
int start, int *ended,
--- 258,263 ----
***************
*** 291,297 ****
extern struct string * scanned_to_phrase P_((char **scanned,
int demime, charset_t set));
! /* getarpdate.c */
extern char * get_arpa_date P_((void));
--- 267,273 ----
extern struct string * scanned_to_phrase P_((char **scanned,
int demime, charset_t set));
! /* lib/getarpdate.c */
extern char * get_arpa_date P_((void));
***************
*** 306,319 ****
extern char * get_fullname1 P_((struct passwd *P,const char *logname));
extern char * get_full_name P_((char *));
! /* in_string.c */
/* Is that needed? This is almost same as strstr (except return type).
* - K E H
*/
extern int in_string P_((const char *, const char *));
! /* ldstate.c */
struct folder_view {
int mailbox_number;
--- 282,295 ----
extern char * get_fullname1 P_((struct passwd *P,const char *logname));
extern char * get_full_name P_((char *));
! /* lib/in_string.c */
/* Is that needed? This is almost same as strstr (except return type).
* - K E H
*/
extern int in_string P_((const char *, const char *));
! /* lib/ldstate.c */
struct folder_view {
int mailbox_number;
***************
*** 357,367 ****
extern int load_folder_state_file P_((struct folder_state *fst));
! /* len_next.c */
extern int len_next_part P_((const char *));
! /* mail_gets.c */
extern int mail_gets P_((char *buffer,size_t size,FILE *mailfile));
--- 333,343 ----
extern int load_folder_state_file P_((struct folder_state *fst));
! /* lib/len_next.c */
extern int len_next_part P_((const char *));
! /* lib/mail_gets.c */
extern int mail_gets P_((char *buffer,size_t size,FILE *mailfile));
***************
*** 377,389 ****
extern int malloc_gets P_((char **buffer, int limit, FILE *mailfile));
! /* okay_address.c */
extern int compare_helper P_((const char *A, const char *pat,
int ignore_case));
! /* opt_utils.c */
/* Returns -1 on failure! */
extern int gethostdomain P_((char *hostdom,int size, int global_mode));
--- 353,365 ----
extern int malloc_gets P_((char **buffer, int limit, FILE *mailfile));
! /* lib/okay_addr.c */
extern int compare_helper P_((const char *A, const char *pat,
int ignore_case));
! /*lib/opt_utils.c */
/* Returns -1 on failure! */
extern int gethostdomain P_((char *hostdom,int size, int global_mode));
***************
*** 423,429 ****
#define compile_ELM_GETOPT
#endif
! /* posixsig.c */
#ifdef POSIX_SIGNALS
extern SIGHAND_TYPE (*posig_signal P_((int,
--- 399,405 ----
#define compile_ELM_GETOPT
#endif
! /* lib/posixsig.c */
#ifdef POSIX_SIGNALS
extern SIGHAND_TYPE (*posig_signal P_((int,
***************
*** 440,462 ****
extern int my_wait P_((int pid, S__ *statptr));
extern int convert_status P_((S__ status,int *exit_code));
! /* putenv.c */
#ifndef PUTENV
extern int putenv P_((char *));
#endif
! /* qstrings.c */
extern char *qstrpbrk P_((char *, const char *));
extern const char *qstrpbrk_c P_((const char *, const char *));
extern int qstrspn P_((char *, char *));
extern int qstrcspn P_((char *, char *));
! /* reverse.c */
extern void reverse P_((char *));
! /* safemalloc.c */
extern void dflt_safe_malloc_fail_handler P_((char *proc,size_t len));
extern void (*safe_malloc_fail_handler) P_((char *proc,size_t len));
--- 416,438 ----
extern int my_wait P_((int pid, S__ *statptr));
extern int convert_status P_((S__ status,int *exit_code));
! /* lib/putenv.c */
#ifndef PUTENV
extern int putenv P_((char *));
#endif
! /* lib/qstrings.c */
extern char *qstrpbrk P_((char *, const char *));
extern const char *qstrpbrk_c P_((const char *, const char *));
extern int qstrspn P_((char *, char *));
extern int qstrcspn P_((char *, char *));
! /* lib/reverse.c */
extern void reverse P_((char *));
! /* lib/safemalloc.c */
extern void dflt_safe_malloc_fail_handler P_((char *proc,size_t len));
extern void (*safe_malloc_fail_handler) P_((char *proc,size_t len));
***************
*** 487,497 ****
/* Maximun possible value for size_t */
extern const size_t size_MAX; /* SIZE_MAX if defined */
! /* shiftlower.c */
extern char *shift_lower P_((const char *));
! /* strfcpy.c */
extern char *strfcpy P_((char *, const char *, int));
extern char *strfcat P_((char *, const char *, int));
--- 463,580 ----
/* Maximun possible value for size_t */
extern const size_t size_MAX; /* SIZE_MAX if defined */
! /* lib/shiftlower.c */
extern char *shift_lower P_((const char *));
!
! /* lib/sortlist.c */
!
! union sort_item {
! void * dummy;
! struct resolv_cache * resolv;
! struct uidl_entry * uidl;
! struct aliases_map_node * aliases;
! struct thread_name * thread_name;
! };
!
! union sort_key {
! const void * dummy;
! const char * str;
! struct string_sort * string_sort;
!
! };
!
! union sort_item_default {
! void * dummy;
! const struct uidl_entry_def * uidl;
! const struct aliases_node_def * aliases;
! };
!
! typedef void alloc_sort_item_f P_((union sort_item * res,
! const union sort_key key,
! const union sort_item_default def
! ));
! typedef void free_sort_item_f P_((union sort_item * ptr)); /* Decrements refcount */
!
! typedef void inc_sort_item_refcount_f P_((union sort_item item));
!
! /* caller must free string */
! typedef struct string * sort_item_debug_name_f P_((const union sort_item item));
! typedef struct string * sort_key_debug_name_f P_((const union sort_key key));
!
! /* If NULL key is possible, compare_sort_key_to_item_f should support them !! */
!
! typedef int compare_sort_key_to_item_f P_((const union sort_key key,
! const union sort_item item));
!
! #define SORT_OPERATION_magic 0xE600
!
! struct sort_operation {
! unsigned short magic; /* SORT_OPERATION_magic */
!
! alloc_sort_item_f * alloc_item;
! free_sort_item_f * free_item;
! inc_sort_item_refcount_f * inc_item_refcount;
! sort_item_debug_name_f * item_name;
!
! compare_sort_key_to_item_f * cmp_key_item;
!
! /* KEY operations */
! sort_key_debug_name_f * key_name;
!
! };
!
! extern struct sortlist * alloc_sort_list P_((const struct sort_operation * op,
! size_t prealloc));
! extern void free_sort_list P_((struct sortlist ** sortlist));
! extern size_t sort_list_len P_((struct sortlist * sortlist));
!
! enum sort_list_get_op {
! sort_list_get_normal = 0,
! sort_list_get_remove = 2 /* moves indexes when removed */
! };
!
! /* increments refcount */
! extern void get_sort_list_item P_((struct sortlist * sortlist,
! enum sort_list_get_op op,
! size_t idx,
! union sort_item * res));
!
! /* caller must free string */
! extern struct string * get_sort_list_debug_name P_((struct sortlist * sortlist,
! size_t idx));
!
! enum sort_list_search_op {
! sort_list_search_normal = 0,
! sort_list_search_create, /* moves indexes when created */
! sort_list_search_remove = 2, /* removes item from sort list, if found */
! /* moves indexes when removed */
!
! sort_list_insert_hint /* Hive hint *res_idx to where add
! new index -- used when reading
! from ordered file
! */
! };
!
! /* Increments refcount, returns 1 if found */
! extern int search_sort_list_item P_((struct sortlist * sortlist,
! enum sort_list_search_op op,
! const union sort_key key,
! const union sort_item_default def,
! union sort_item * res,
! size_t * res_idx,
! int * append_need_rewrite
! ));
!
! extern void prealloc_sort_list P_((struct sortlist * sortlist,
! size_t prealloc));
!
!
!
!
!
! /* lib/strfcpy.c */
extern char *strfcpy P_((char *, const char *, int));
extern char *strfcat P_((char *, const char *, int));
***************
*** 499,505 ****
int *produced));
! /* strincmp.c */
/* Is this needed? This is same than strncasecmp
* - K E H
--- 582,588 ----
int *produced));
! /* lib/strincmp.c */
/* Is this needed? This is same than strncasecmp
* - K E H
***************
*** 507,518 ****
extern int strincmp P_((const char *, const char *, int));
! /* striparens.c */
extern char *strip_parens P_((const char *s));
extern char *get_parens P_((const char *s));
! /* strstr.c */
/* Why there is both in_string and strstr????
* - K E H
--- 590,601 ----
extern int strincmp P_((const char *, const char *, int));
! /* lib/striparens.c */
extern char *strip_parens P_((const char *s));
extern char *get_parens P_((const char *s));
! /* lib/strstr.c */
/* Why there is both in_string and strstr????
* - K E H
***************
*** 796,801 ****
--- 879,899 ----
extern void digest_feed_string P_((struct digest_proc * ret,
const struct string *s));
+
+ /* lib/string_sort.c */
+
+ extern struct string_sort * new_string_sort P_((struct string *s));
+ extern void free_string_sort P_((struct string_sort **ptr));
+ extern int string_sort_cmp P_((const struct string_sort *ptr1,
+ const struct string_sort *ptr2));
+
+ /* Increments refcount, caller must call free_string() */
+ extern struct string * give_string_from_string_sort P_((struct string_sort *ptr));
+
+
+ extern void inc_string_sort_refcount P_((struct string_sort *ptr));
+
+
/* lib/pager_range.c */
#ifdef ANSI_C
***************
*** 1120,1125 ****
--- 1218,1225 ----
extern const int CHOWN_neg1; /* Set if CHOWN_NEG1 defined */
+ extern const char dsn_mail_tag[]; /* [dsn] */
+
/* *** Read from elmrc: */
extern int add_irt_phrase; /* In-reply-to: Add phare to in-reply-to ?
***************
*** 1219,1226 ****
PGP_NUM };
extern ENUMERATE send_pgp_version; /* preferred pgp version*/
! struct string * attribution_s; /* attribution string for replies */
! struct string * fwdattribution_s; /* attribution string for forwarded mssgs */
enum auto_attachment_v {
auto_attachment_none = 0,
--- 1319,1326 ----
PGP_NUM };
extern ENUMERATE send_pgp_version; /* preferred pgp version*/
! extern struct string * attribution_s; /* attribution string for replies */
! extern struct string * fwdattribution_s; /* attribution string for forwarded mssgs */
enum auto_attachment_v {
auto_attachment_none = 0,
***************
*** 1296,1301 ****
--- 1396,1403 ----
2 = New
*/
+ extern FLAGS conf_merge_locking;
+
extern char config_options[SLEN]; /* which options are in o)ptions */
extern int confirm_append; /* flag: confirm append to folder? */
extern int confirm_create; /* flag: confirm create new folder? */
***************
*** 1313,1318 ****
--- 1415,1423 ----
extern char raw_display_charset[SLEN];
extern charset_t wanted_display_charset; /* name of character set */
extern int DSN_success; /* flag: Ask successfull DSNes */
+
+ extern ESTR dsn_mail_e; /* folder for storing DSN mail */
+
extern char e_editor[SLEN]; /* "~e" editor... */
enum editor_keyword { editor_kw_NO = 0,
***************
*** 1481,1488 ****
extern int mail_permissions; /* int: permissions for mailbox files */
extern PATH mailcap_bl_programs; /* Do not execute program or call metamail */
! extern int mailcap_tempfile_lifetime; /* Time (seconds) to keep mailcap temorary files */
extern int mini_menu_rc; /* flag: display menu? */
enum message_hide_v {
--- 1586,1596 ----
extern int mail_permissions; /* int: permissions for mailbox files */
extern PATH mailcap_bl_programs; /* Do not execute program or call metamail */
+ extern int mailcap_select_other; /* flag: Show o)ther alternative on
+ "Mailcap program selection" ?
+ */
! extern int mailcap_tempfile_lifetime; /* Time (seconds) to keep mailcap temporary files */
extern int mini_menu_rc; /* flag: display menu? */
enum message_hide_v {
***************
*** 1714,1719 ****
--- 1822,1840 ----
*/
extern int use_tite; /* flag: use termcap/terminfo ti/te? */
+
+ /* This requires USE_DLOPEN and REMOTE_MBX */
+ enum use_tls_v {
+ use_tls_implicit,
+ use_tls_starttls,
+ use_tls_verify_cert,
+ use_tls_require_name,
+ use_tls_display_host,
+ NUM_use_tls_v
+ };
+ extern FLAGS use_tls;
+
+
extern int utf7_encode_optional; /* flag: Should utf7 optional direct
characters to be encoded? */
***************
*** 2064,2072 ****
--- 2185,2201 ----
int * err_p
));
+
+
/* Returns 1 if action or timeout occured */
extern enum wait_for_status wait_for_action_or_timeout P_((action_routine * action,
int seconds));
+
+ extern enum wait_for_status wait_for_action_or_timeout_f P_((action_routine * action,
+ int seconds /* -1 no timeout */,
+ int wait_flags,
+ int * err_p));
+
extern enum wait_for_status wait_for_any_action_or_timeout P_((int seconds));
extern enum wait_for_status wait_for_action_c P_((action_routine * action, struct cancel_data *cd));
***************
*** 2270,2285 ****
if (x.active == -1) debug_level_check(&x); \
if (x.active > 0 && !x.header_printed) debug_file_header(&x); \
} while(0)
! #define DEBUG_CHECK(x,level) (x.active >= level)
#define DPRINT(x,level,action) do { \
if (x.active == -1) debug_level_check(&x); \
if (x.active > 0 && !x.header_printed) debug_file_header(&x); \
! if (x.active >= level) debug_action_call action; \
} while(0)
#define SIGDPRINT(x,level,action) do { \
! if (x.active >= level) debug_action_sigcall action; \
} while(0)
void debug_print_buffer P_((struct debug_struct *a, int len, unsigned char *str));
--- 2399,2414 ----
if (x.active == -1) debug_level_check(&x); \
if (x.active > 0 && !x.header_printed) debug_file_header(&x); \
} while(0)
! #define DEBUG_CHECK(x,level) (x.active >= (level))
#define DPRINT(x,level,action) do { \
if (x.active == -1) debug_level_check(&x); \
if (x.active > 0 && !x.header_printed) debug_file_header(&x); \
! if (x.active >= (level)) debug_action_call action; \
} while(0)
#define SIGDPRINT(x,level,action) do { \
! if (x.active >= (level)) debug_action_sigcall action; \
} while(0)
void debug_print_buffer P_((struct debug_struct *a, int len, unsigned char *str));
***************
*** 2287,2293 ****
#define DEBUG_PRINT_BUFFER(x,level,len,str) do { \
if (x.active == -1) debug_level_check(&x); \
if (x.active > 0 && !x.header_printed) debug_file_header(&x); \
! if (x.active >= level) debug_print_buffer(&x,len,str); \
} while(0)
--- 2416,2422 ----
#define DEBUG_PRINT_BUFFER(x,level,len,str) do { \
if (x.active == -1) debug_level_check(&x); \
if (x.active > 0 && !x.header_printed) debug_file_header(&x); \
! if (x.active >= (level)) debug_print_buffer(&x,len,str); \
} while(0)
***************
*** 2310,2319 ****
/* Dummy .... */
#define DEBUG_CHECK_INIT(x) do { } while(0)
! #define DEBUG_CHECK(x,level) ((x.active >= level),0)
! #define DPRINT(x,level,action) do { if (x.active >= level) { } } while(0)
! #define SIGDPRINT(x,level,action) do { if (x.active >= level) { } } while(0)
! #define DEBUG_PRINT_BUFFER(x,level,len,str) do { if (x.active >= level) { } } while(0)
/* Not available !!! */
extern void debug_action_call P_((struct debug_struct *a,
--- 2439,2448 ----
/* Dummy .... */
#define DEBUG_CHECK_INIT(x) do { } while(0)
! #define DEBUG_CHECK(x,level) ((x.active >= (level)),0)
! #define DPRINT(x,level,action) do { if (x.active >= (level)) { } } while(0)
! #define SIGDPRINT(x,level,action) do { if (x.active >= (level)) { } } while(0)
! #define DEBUG_PRINT_BUFFER(x,level,len,str) do { if (x.active >= (level)) { } } while(0)
/* Not available !!! */
extern void debug_action_call P_((struct debug_struct *a,
***************
*** 2619,2624 ****
--- 2748,2758 ----
extern struct string_token {
uint16 special; /* unicode of special or 0 */
struct string *token;
+ enum token_status {
+ token_fail = 0,
+ token_parsed,
+ token_icomplete /* unbalaced quote? */
+ } status;
} * string_tokenize P_((const struct string *line,
int flags));
***************
*** 2692,2705 ****
/* conf_writer.c */
! typedef void dump_conf_map_f P_((FILE *f, const char *actor,
! char *version_buff));
typedef void dump_message_f P_((char *fname));
! extern void register_conf_write P_((char * shorname,
! char *fname,
! dump_conf_map_f * dump_map,
! dump_message_f * write_message ));
/*
--- 2826,2854 ----
/* conf_writer.c */
! typedef int dump_conf_map_f P_((FILE * f,
! const char * actor,
! char * version_buff,
! int * erro_res));
typedef void dump_message_f P_((char *fname));
! /* Return 1 if merge succeed */
! typedef int merge_conf_map_f P_((const char * fname,
! FILE * f));
!
! #ifdef ANSI_C
! extern merge_conf_map_f NO_merge_conf_map;
! #endif
! extern int NO_merge_conf_map P_((const char * fname,
! FILE * f));
!
! extern void register_conf_write P_((char * shorname,
! char * fname,
! dump_conf_map_f * dump_map,
! dump_message_f * write_message,
! int * rewrite_flag,
! merge_conf_map_f * merge_map
! ));
/*
Index: elmME+.2.5.alpha60/hdrs/filelock.h
*** /tmp/31884-very-long-file-name/NULL-31884-comes-in-here--XXXXXXXXX Thu Nov 24 18:32:31 2022
--- elmME+.2.5.alpha60/hdrs/filelock.h Sat Aug 28 14:11:45 2021
***************
*** 0 ****
--- 1,28 ----
+ /* $Id: filelock.h,v 2.1 2021/07/13 07:58:36 hurtta Exp $ */
+
+ /******************************************************************************
+ * The Elm (ME+) Mail System - $Revision: 2.1 $ $State: Exp $
+ *
+ * Author: Kari Hurtta
+ * or Kari Hurtta
+ *****************************************************************************/
+
+ /* lib/misc/filelock.c */
+
+ extern enum FLOCKING_status filelock_fd P_((int fd,
+ enum FLOCKING_mode op,
+ struct dt_flags_info * flags,
+ const char * filename /* may be NULL */,
+ enum FLOCKING_blocking blockit,
+ int * errno_res
+ ));
+
+
+
+ /*
+ * Local Variables:
+ * mode:c
+ * c-basic-offset:4
+ * buffer-file-coding-system: iso-8859-1
+ * End:
+ */
Index: elmME+.2.5.alpha60/hdrs/hashmark.h
*** elmME+.2.5.alpha54/hdrs/hashmark.h Thu May 10 13:39:46 2018
--- elmME+.2.5.alpha60/hdrs/hashmark.h Thu May 26 11:16:29 2022
***************
*** 1,7 ****
! /* $Id: hashmark.h,v 2.5 2018/05/10 10:39:46 hurtta Exp $ */
/******************************************************************************
! * The Elm (ME+) Mail System - $Revision: 2.5 $ $State: Exp $
*
* Author: Kari Hurtta
* or Kari Hurtta
--- 1,7 ----
! /* $Id: hashmark.h,v 2.6 2022/02/12 14:00:06 hurtta Exp $ */
/******************************************************************************
! * The Elm (ME+) Mail System - $Revision: 2.6 $ $State: Exp $
*
* Author: Kari Hurtta
* or Kari Hurtta
***************
*** 67,72 ****
--- 67,86 ----
int give_service_entry_flag,
PORTS force_port));
+ /* Return 1 if succeed,
+ caller does remote_account_init_tls()
+ -1 == use fallback
+ */
+
+ extern int hashmark_passhm_open_ra2 P_((const struct hashmark_item * item,
+ struct browser_passhm * passhm,
+ struct remote_account * ra,
+ int give_service_entry_flag,
+
+ /* For enumerate_service_type */
+ struct enum_service_type *est));
+
+
/* Return 1 if succeed */
extern int hashmark_selectbr_item P_((struct hashmark_item * item,
struct folder_browser * dir,
Index: elmME+.2.5.alpha60/hdrs/hashmark_imp.h
*** elmME+.2.5.alpha54/hdrs/hashmark_imp.h Thu May 10 13:39:46 2018
--- elmME+.2.5.alpha60/hdrs/hashmark_imp.h Thu May 26 11:16:29 2022
***************
*** 1,7 ****
! /* $Id: hashmark_imp.h,v 2.5 2018/05/10 10:39:46 hurtta Exp $ */
/******************************************************************************
! * The Elm (ME+) Mail System - $Revision: 2.5 $ $State: Exp $
*
* Author: Kari Hurtta
* or Kari Hurtta
--- 1,7 ----
! /* $Id: hashmark_imp.h,v 2.6 2022/02/12 14:00:06 hurtta Exp $ */
/******************************************************************************
! * The Elm (ME+) Mail System - $Revision: 2.6 $ $State: Exp $
*
* Author: Kari Hurtta
* or Kari Hurtta
***************
*** 117,122 ****
--- 117,135 ----
int give_service_entry_flag,
PORTS force_port));
+ /* Return 1 if succeed,
+ caller does remote_account_init_tls()
+ */
+ typedef int hashtype_passhm_open_ra2_f P_((const struct hashmark_item * item,
+ struct browser_passhm * passhm,
+ struct remote_account * ra,
+ int give_service_entry_flag,
+
+ /* For enumerate_service_type */
+ struct enum_service_type * est
+ ));
+
+
/* Return 1 if succeed */
typedef int hashtype_selectbr_item_f P_((struct hashmark_item * item,
struct folder_browser * dir,
***************
*** 203,208 ****
--- 216,222 ----
hashtype_valid_on_user_f * valid_on_user;
hashtype_prepare_write_item_f * prepare_write;
hashtype_cat_hashmark_item_f * cat_hashmark;
+ hashtype_passhm_open_ra2_f * passhm_open_ra2;
} hashtype_folder_dir_action, hashtype_local_dir_action;
Index: elmME+.2.5.alpha60/hdrs/mailcap_imp.h
*** /tmp/31884-very-long-file-name/NULL-31884-comes-in-here--XXXXXXXXX Thu Nov 24 18:32:31 2022
--- elmME+.2.5.alpha60/hdrs/mailcap_imp.h Fri Sep 2 20:38:19 2022
***************
*** 0 ****
--- 1,67 ----
+ /* $Id*/
+
+ /******************************************************************************
+ * The Elm (ME+) Mail System - $Revision: 2.1 $ $State: Exp $
+ *
+ * Author: Kari Hurtta
+ * or Kari Hurtta
+ *****************************************************************************/
+
+ #define MAILCAP_PARAM_magic 0xF401
+
+ struct mailcap_vector {
+ unsigned short magic; /* MAILCAP_PARAM_magic */
+
+ struct agv1 {
+ enum arg_type { mv_literal,
+ mv_filename, mv_type, mv_parameter,
+ mv_environ /* Environment variable inside of " */
+ } type;
+
+ struct arg {
+ int arg_len;
+ int alloced;
+ char * arg;
+ } arg;
+
+ char quote_char; /* quote character for printing mailcap entry */
+
+ } * subvector;
+ int subcount;
+ };
+
+ #define MAILCAP_magic 0xF400
+ struct mailcap_entry {
+ unsigned short magic; /* MAILCAP_magic */
+
+ struct mailcap_vector * view_command;
+ int view_command_len;
+
+ struct mailcap_vector * test_command;
+ int test_command_len;
+
+
+ /* TODO commands:
+ compose
+ composetyped
+ edit
+ print
+ */
+
+ unsigned int needsterminal : 1;
+ unsigned int copiousoutput : 1;
+ unsigned int blacklisted : 1;
+
+ char * view_command_ok; /* not blacklisted */
+
+ char * extension;
+
+ };
+
+ /*
+ * Local Variables:
+ * mode:c
+ * c-basic-offset:4
+ * buffer-file-coding-system: iso-8859-1
+ * End:
+ */
Index: elmME+.2.5.alpha60/hdrs/mboxlib.h
*** elmME+.2.5.alpha54/hdrs/mboxlib.h Tue Apr 20 20:32:06 2021
--- elmME+.2.5.alpha60/hdrs/mboxlib.h Sat Aug 28 14:11:45 2021
***************
*** 1,7 ****
! /* $Id: mboxlib.h,v 2.43 2021/01/17 18:53:16 hurtta Exp $ */
/******************************************************************************
! * The Elm (ME+) Mail System - $Revision: 2.43 $ $State: Exp $
*
* Author: Kari Hurtta (was hurtta+elm@posti.FMI.FI)
* or Kari Hurtta
--- 1,7 ----
! /* $Id: mboxlib.h,v 2.45 2021/07/13 07:58:36 hurtta Exp $ */
/******************************************************************************
! * The Elm (ME+) Mail System - $Revision: 2.45 $ $State: Exp $
*
* Author: Kari Hurtta (was hurtta+elm@posti.FMI.FI)
* or Kari Hurtta
***************
*** 105,117 ****
extern int status_2_mailbox P_((struct header_rec *entry, char *buffer,
int size));
- extern int Release_the_file P_((int flock_fd,struct dt_flags_info *flags));
! extern enum FLOCKING_status {
! FLOCKING_FAIL = -1,
! FLOCKING_OK = 0,
! FLOCKING_RETRY = 1
! } Grab_the_file P_((int flock_fd, struct dt_flags_info *flags));
extern int mbx_read_line P_((FILE *fh,char **buffer, int *len, int max_read));
--- 105,116 ----
extern int status_2_mailbox P_((struct header_rec *entry, char *buffer,
int size));
! /* These are wrappers to filelock_fd() */
!
! extern enum FLOCKING_status Release_the_file P_((int flock_fd, struct dt_flags_info *flags));
! extern enum FLOCKING_status Grab_the_file P_((int flock_fd, struct dt_flags_info *flags));
! extern enum FLOCKING_status GrabRead_the_file P_((int flock_fd, struct dt_flags_info *flags));
extern int mbx_read_line P_((FILE *fh,char **buffer, int *len, int max_read));
Index: elmME+.2.5.alpha60/hdrs/mbx_imp.h
*** elmME+.2.5.alpha54/hdrs/mbx_imp.h Tue Apr 20 20:32:06 2021
--- elmME+.2.5.alpha60/hdrs/mbx_imp.h Thu May 26 11:16:29 2022
***************
*** 1,7 ****
! /* $Id: mbx_imp.h,v 2.32 2021/01/10 15:47:31 hurtta Exp $ */
/******************************************************************************
! * The Elm (ME+) Mail System - $Revision: 2.32 $ $State: Exp $
*
* Author: Kari Hurtta
* (was hurtta+elm@posti.FMI.FI, hurtta+elm@ozone.FMI.FI)
--- 1,7 ----
! /* $Id: mbx_imp.h,v 2.34 2022/02/12 14:00:06 hurtta Exp $ */
/******************************************************************************
! * The Elm (ME+) Mail System - $Revision: 2.34 $ $State: Exp $
*
* Author: Kari Hurtta
* (was hurtta+elm@posti.FMI.FI, hurtta+elm@ozone.FMI.FI)
***************
*** 367,373 ****
int stat_size;
int stat_count;
! struct uidl_entry * uidl_root; /* Binary tree -- not balanced! */
int seen_badpid;
--- 367,373 ----
int stat_size;
int stat_count;
! struct sortlist * uidl_list;
int seen_badpid;
***************
*** 818,823 ****
--- 818,832 ----
PORTS force_port));
+ /* -1 == use fallback ;
+ caller does remote_account_init_tls()
+ */
+ extern int browser_passhm_open_ra2 P_((struct browser_passhm * passhm,
+ struct remote_account * ra,
+ int give_service_entry_flag,
+ /* For enumerate_service_type */
+ struct enum_service_type *est));
+
/* -1 == use fallback
0 == lookup failed
1 == ok
Index: elmME+.2.5.alpha60/hdrs/me.h
*** elmME+.2.5.alpha54/hdrs/me.h Tue Apr 20 20:32:06 2021
--- elmME+.2.5.alpha60/hdrs/me.h Fri Sep 2 20:38:19 2022
***************
*** 1,7 ****
! /* $Id: me.h,v 2.110 2021/01/10 15:47:31 hurtta Exp $ */
/******************************************************************************
! * The Elm (ME+) Mail System - $Revision: 2.110 $ $State: Exp $
*
* Modified by: Kari Hurtta
* (was hurtta+elm@posti.FMI.FI, hurtta+elm@ozone.FMI.FI)
--- 1,7 ----
! /* $Id: me.h,v 2.118 2022/08/28 07:58:12 hurtta Exp $ */
/******************************************************************************
! * The Elm (ME+) Mail System - $Revision: 2.118 $ $State: Exp $
*
* Modified by: Kari Hurtta
* (was hurtta+elm@posti.FMI.FI, hurtta+elm@ozone.FMI.FI)
***************
*** 50,56 ****
struct text_block;
#endif
! /* args.c */
extern void set_early_options P_((int argc,char *argv[]));
--- 50,56 ----
struct text_block;
#endif
! /* src/args.c */
extern void set_early_options P_((int argc,char *argv[]));
***************
*** 62,67 ****
--- 62,69 ----
extern char * wanted_charset;
extern int wanted_switchmode;
+ extern char * conf_backup_suffix;
+
extern char * wanted_title_string;
extern char * wanted_icon_string;
extern char * with_title;
***************
*** 81,87 ****
extern void add_Attachments P_((struct Attachments *A,mime_t *x));
extern void free_Attachments P_((struct Attachments *A));
! /* init.c */
extern void initialize P_((struct AliasView **main_alaises,
struct menu_context **page));
--- 83,89 ----
extern void add_Attachments P_((struct Attachments *A,mime_t *x));
extern void free_Attachments P_((struct Attachments *A));
! /* src/init.c */
extern void initialize P_((struct AliasView **main_alaises,
struct menu_context **page));
***************
*** 116,122 ****
struct elm_commands * cmds /* may be NULL */
));
! /* file_util.c */
#if ANSI_C
struct current_storage;
--- 118,124 ----
struct elm_commands * cmds /* may be NULL */
));
! /* src/file_util.c */
#if ANSI_C
struct current_storage;
***************
*** 126,138 ****
int append P_((FILE *fd, char *filename, char *prefix_str,
struct menu_context *page));
! /* find_alias.c */
extern int find_alias P_((char *word, int alias_type,
struct AliasView *aview));
! /* showmsg_c.c */
struct pager_page {
struct menu_context * root; /* Or parent */
--- 128,140 ----
int append P_((FILE *fd, char *filename, char *prefix_str,
struct menu_context *page));
! /* src/find_alias.c */
extern int find_alias P_((char *word, int alias_type,
struct AliasView *aview));
! /* src/showmsg_c.c */
struct pager_page {
struct menu_context * root; /* Or parent */
***************
*** 175,181 ****
struct elm_commands *pager_cmds));
! /* showmsg_1.c */
extern int show_message_with_headers P_((struct MailboxView *mailbox,
showmsg_cmd cmdX,
--- 177,183 ----
struct elm_commands *pager_cmds));
! /* src/showmsg_1.c */
extern int show_message_with_headers P_((struct MailboxView *mailbox,
showmsg_cmd cmdX,
***************
*** 200,206 ****
struct menu_context *header_area,
struct elm_commands *pager_cmds));
! /* movement.c */
typedef void move_message P_((void));
--- 202,208 ----
struct menu_context *header_area,
struct elm_commands *pager_cmds));
! /* src/movement.c */
typedef void move_message P_((void));
***************
*** 214,220 ****
extern int do_movement1 P_((struct menu_context *ptr, int ch, int len,
struct move_messages *m));
! /* motion.c */
/* Return key if unknown */
--- 216,222 ----
extern int do_movement1 P_((struct menu_context *ptr, int ch, int len,
struct move_messages *m));
! /* src/motion.c */
/* Return key if unknown */
***************
*** 242,248 ****
struct string **msg_line));
! /* network.c */
enum mbx_cancel_message {
mbx_closing_con,
--- 244,250 ----
struct string **msg_line));
! /* src/network.c */
enum mbx_cancel_message {
mbx_closing_con,
***************
*** 253,259 ****
extern void setup_mbx_cancel_message P_((struct cancel_data **cancel_info,
enum mbx_cancel_message msg));
! /* elm.c */
extern void mailbox_screen_common P_((struct menu_context *page,
struct screen_parts *LOC,
--- 255,261 ----
extern void setup_mbx_cancel_message P_((struct cancel_data **cancel_info,
enum mbx_cancel_message msg));
! /* src/elm.c */
extern void mailbox_screen_common P_((struct menu_context *page,
struct screen_parts *LOC,
***************
*** 280,286 ****
const char **exit_hint_p));
! /* help.c */
/* Returns EOF if EOF seen */
extern int help_generic P_((struct elm_commands * cmds,
--- 282,288 ----
const char **exit_hint_p));
! /* src/help.c */
/* Returns EOF if EOF seen */
extern int help_generic P_((struct elm_commands * cmds,
***************
*** 289,295 ****
struct menu_context *prompt_area));
! /* in_utils.c */
extern int want_to P_((char *question, int dflt, int where,
int clear_and_center,
--- 291,297 ----
struct menu_context *prompt_area));
! /* src/in_utils.c */
extern int want_to P_((char *question, int dflt, int where,
int clear_and_center,
***************
*** 339,350 ****
int wait_time));
! /* enter_helper.c ------------------------------------------------------- */
#if ANSI_C
struct enter_info;
#endif
enum enter_mode { em_redraw, em_enter, em_prev, em_next, em_wrap,
em_redraw_initial, em_editor_escape, em_tabaction,
em_bs_prev, em_left, em_right,
--- 341,383 ----
int wait_time));
! /* src/enter_helper.c ------------------------------------------------------- */
#if ANSI_C
struct enter_info;
#endif
+ /* Notify buffer changes */
+
+ enum alter_buffer_action { ab_erase, ab_free_buffer, ab_truncated, ab_autocomma };
+
+ typedef void alter_buffer_r P_((struct enter_info *I,
+ struct string **buffer,
+ enum alter_buffer_action action,
+ struct menu_context *base_page));
+
+ enum full_page_action { fp_resized, fp_redraw };
+
+ typedef void full_page_r P_((struct enter_info *I,
+ enum full_page_action action,
+ struct menu_context *base_page));
+
+ #if ANSI_C
+ extern full_page_r default_full_page;
+ #endif
+ extern void default_full_page P_((struct enter_info *I,
+ enum full_page_action action,
+ struct menu_context *base_page));
+
+ #if ANSI_C
+ extern alter_buffer_r default_alter_buffer;
+ #endif
+ extern void default_alter_buffer P_((struct enter_info *I,
+ struct string **buffer,
+ enum alter_buffer_action action,
+ struct menu_context *base_page));
+
+
enum enter_mode { em_redraw, em_enter, em_prev, em_next, em_wrap,
em_redraw_initial, em_editor_escape, em_tabaction,
em_bs_prev, em_left, em_right,
***************
*** 365,391 ****
em_F12_key,
};
typedef struct string **give_buffer_r P_((struct enter_info *I,
enum enter_mode em,
struct menu_context *base_page));
struct enter_info {
! struct string **pvector;
! give_buffer_r *give_buffer;
int flags;
int ch_count;
struct in_utils_edit *in_utils;
struct builtin_edit *builtin;
struct browser_edit *browser;
struct menu_context *current_page; /* give_buffer_r may alloc new */
};
extern int enter_helper P_((struct enter_info *info,
! struct menu_context *base_page));
! /* out_utils.c */
extern void error_wait P_((void)); /* call before exiting */
extern void sleep_message P_((void));
--- 398,455 ----
em_F12_key,
};
+ /* FOr debug */
+
+ extern const char * enter_mode_debug_name P_((enum enter_mode em));
+
+
typedef struct string **give_buffer_r P_((struct enter_info *I,
enum enter_mode em,
struct menu_context *base_page));
+ enum prompt_hint_mode { phm_clear = 0, phm_empty_buffer };
+
+ typedef void prompt_hint_r P_((struct enter_info *I,
+ enum prompt_hint_mode phm,
+ struct menu_context *base_page));
+
+ #if ANSI_C
+ extern prompt_hint_r default_prompt_hint;
+ #endif
+ extern void default_prompt_hint P_((struct enter_info *I,
+ enum prompt_hint_mode phm,
+ struct menu_context *base_page));
+
+
+ #define ENTER_INFO_magic 0xEB23
struct enter_info {
! unsigned short magic; /* ENTER_INFO_magic */
!
! struct string ** pvector;
!
! give_buffer_r * give_buffer;
! alter_buffer_r * alter_buffer;
! full_page_r * full_page;
! prompt_hint_r * prompt_hint;
!
int flags;
int ch_count;
struct in_utils_edit *in_utils;
struct builtin_edit *builtin;
struct browser_edit *browser;
+ struct address_edit *address;
struct menu_context *current_page; /* give_buffer_r may alloc new */
};
+ extern void zero_enter_info P_((struct enter_info *info));
+
extern int enter_helper P_((struct enter_info *info,
! struct menu_context *prompt_area,
! struct menu_context *base_page));
! /* src/out_utils.c */
extern void error_wait P_((void)); /* call before exiting */
extern void sleep_message P_((void));
***************
*** 419,425 ****
extern int open_messages_log P_((const char *filename));
extern void close_messages_log P_((void));
! /* pattern.c */
extern int from_matches P_((struct header_rec *mss, struct string *pat));
extern int to_matches P_((struct header_rec *mss, struct string *pat));
--- 483,489 ----
extern int open_messages_log P_((const char *filename));
extern void close_messages_log P_((void));
! /* src/pattern.c */
extern int from_matches P_((struct header_rec *mss, struct string *pat));
extern int to_matches P_((struct header_rec *mss, struct string *pat));
***************
*** 442,448 ****
struct screen_parts *LOC));
! /* addr_util.c */
extern void free_addr_util P_((void));
--- 506,529 ----
struct screen_parts *LOC));
! /* src/addr_prompt.c */
!
! extern int prompt_expanded_address P_((struct menu_context *page,
! struct expanded_address *expanded,
! struct mailer_info *mailer_info,
! struct string **buffer /* for redraw */,
! struct AliasView *aview /* May be NULL */,
! struct string * title /* Title on full page mode */,
! struct menu_context *prompt_area,
! /* Cordinates use prompt_area */
! int x, int y, int flags,
! const char * format, const char *msg, ...));
!
! /* src/addr_util.c */
!
! #if ANSI_C
! struct aliasview_record;
! #endif
extern void free_addr_util P_((void));
***************
*** 480,490 ****
struct AliasView *aview
));
extern int aliases_to_expanded P_((struct expanded_address *x,
struct AliasView *aview));
! /* alias.c */
#if ANSI_C
--- 561,583 ----
struct AliasView *aview
));
+ /* parses without expanding --- */
+
+ extern void update_textual_from_tokenized P_((const struct expanded_address *expanded,
+ struct expanded_address *result,
+ struct string_token * tokenized,
+ struct AliasView *aview /* Used as flag */,
+ const struct string *buffer /* For error message */
+ ));
+
+
extern int aliases_to_expanded P_((struct expanded_address *x,
struct AliasView *aview));
+ extern void add_one_alias_to_expanded P_((struct expanded_address *x,
+ struct aliasview_record *a));
! /* src/alias.c */
#if ANSI_C
***************
*** 509,531 ****
const struct address * address,
struct AliasView *aview));
! /* a_edit.c */
extern int edit_aliases_text P_((struct AliasView *aview,
struct menu_context *page,
struct screen_parts *LOC));
! /* a_sort.c */
! extern void sort_aliases P_((int entries, int visible, int are_in_aliases,
struct AliasView *aview));
extern char *alias_sort_name P_((int type));
! /* a_screen.c */
!
! #if ANSI_C
! struct aliasview_record;
! #endif
extern struct string *build_alias_line P_((struct aliasview_record *entry,
int message_number, int highlight,
--- 602,626 ----
const struct address * address,
struct AliasView *aview));
! /* src/a_edit.c */
extern int edit_aliases_text P_((struct AliasView *aview,
struct menu_context *page,
struct screen_parts *LOC));
! /* src/a_sort.c */
!
! enum sort_aliases_mode { sa_silent_sort = 0,
! sa_visible_sort /* Shows sort message if
! entries > 30
! */
! };
! extern void sort_aliases P_((int entries, enum sort_aliases_mode show_message,
struct AliasView *aview));
extern char *alias_sort_name P_((int type));
! /* src/a_screen.c */
extern struct string *build_alias_line P_((struct aliasview_record *entry,
int message_number, int highlight,
***************
*** 545,551 ****
extern char *alias_type P_((int type));
! /* a_quit.c */
extern void exit_alias P_((struct AliasView *aview));
extern int delete_aliases P_((int newaliases, int prompt,
--- 640,646 ----
extern char *alias_type P_((int type));
! /* src/a_quit.c */
extern void exit_alias P_((struct AliasView *aview));
extern int delete_aliases P_((int newaliases, int prompt,
***************
*** 553,559 ****
struct menu_context * page,
struct screen_parts *LOC));
! /* exitprog.c */
/* returns:
--- 648,654 ----
struct menu_context * page,
struct screen_parts *LOC));
! /* src/exitprog.c */
/* returns:
***************
*** 567,573 ****
extern int exit_mailbox P_((struct MailboxView *mailbox,
struct menu_context *page));
! /* file.c */
extern int expand_filename P_((char *, int, int));
extern void init_helpmsg P_(( char *, char *, int, int ));
--- 662,668 ----
extern int exit_mailbox P_((struct MailboxView *mailbox,
struct menu_context *page));
! /* src/file.c */
extern int expand_filename P_((char *, int, int));
extern void init_helpmsg P_(( char *, char *, int, int ));
***************
*** 579,589 ****
struct menu_context *header_area));
! /* fileutil.c */
extern FILE *open_end_update P_((char *name));
! /* pgp.c */
extern int pgp_menu P_((char *filename,
struct mailing_headers *headers,
struct menu_context *page));
--- 674,684 ----
struct menu_context *header_area));
! /* src/fileutil.c */
extern FILE *open_end_update P_((char *name));
! /* src/pgp.c */
extern int pgp_menu P_((char *filename,
struct mailing_headers *headers,
struct menu_context *page));
***************
*** 594,600 ****
struct AliasView *aview,
struct menu_context *page,
struct menu_context *prompt_area));
! /* read_rc.c */
extern void directory_check P_((void));
extern void aliases_check P_((struct AliasView *main_aliases));
--- 689,695 ----
struct AliasView *aview,
struct menu_context *page,
struct menu_context *prompt_area));
! /* src/read_rc.c */
extern void directory_check P_((void));
extern void aliases_check P_((struct AliasView *main_aliases));
***************
*** 606,619 ****
prompt_quit_or_return_index
};
! /* builtin++.c */
extern int builtinplusplus P_((struct stringbuffer * bout,
struct pager_page * pager_page,
int is_helper,
struct elm_commands *pager_cmds,
enum pager_prompt have_index));
! /* mime.c */
extern const char * have_metamail P_((void));
extern void clear_mime_send_info P_((mime_send_t *mime_info));
--- 701,714 ----
prompt_quit_or_return_index
};
! /* src/builtin++.c */
extern int builtinplusplus P_((struct stringbuffer * bout,
struct pager_page * pager_page,
int is_helper,
struct elm_commands *pager_cmds,
enum pager_prompt have_index));
! /* src/mime.c */
extern const char * have_metamail P_((void));
extern void clear_mime_send_info P_((mime_send_t *mime_info));
***************
*** 631,637 ****
struct menu_context *prompt_area,
const struct remote_server *remote_server));
! /* strings.c */
extern void Centerline P_((int line,
char *string,
--- 726,732 ----
struct menu_context *prompt_area,
const struct remote_server *remote_server));
! /* src/strings.c */
extern void Centerline P_((int line,
char *string,
***************
*** 643,656 ****
int depth));
! /* string2.c */
/* NOTE: Must be 'int ch', no 'char ch' so that it matches to default promotion
of arguments
*/
extern int occurances_of P_((int ch, char *string));
! /* fileio.c */
extern int copy_message P_((struct folder_info *, struct header_rec *,
char *, FILE *, int, charset_t));
extern int copy_message_f P_((FILE *infile, struct header_rec *current_header,
--- 738,751 ----
int depth));
! /* src/string2.c */
/* NOTE: Must be 'int ch', no 'char ch' so that it matches to default promotion
of arguments
*/
extern int occurances_of P_((int ch, char *string));
! /* src/fileio.c */
extern int copy_message P_((struct folder_info *, struct header_rec *,
char *, FILE *, int, charset_t));
extern int copy_message_f P_((FILE *infile, struct header_rec *current_header,
***************
*** 694,700 ****
typedef copy_decoder *copy_decoder_t;
extern copy_decoder_t select_copy_decoder P_((struct header_rec *));
! /* newmbox.c */
extern enum sessionlock_status open_folder_lock P_((enum lock_direction direction,
struct folder_info *folder));
--- 789,795 ----
typedef copy_decoder *copy_decoder_t;
extern copy_decoder_t select_copy_decoder P_((struct header_rec *));
! /* src/newmbox.c */
extern enum sessionlock_status open_folder_lock P_((enum lock_direction direction,
struct folder_info *folder));
***************
*** 758,764 ****
struct quota_display *quotad
));
! /* reconnect.c */
const char * found_disconnected P_((struct MailboxView *mailbox));
--- 853,859 ----
struct quota_display *quotad
));
! /* src/reconnect.c */
const char * found_disconnected P_((struct MailboxView *mailbox));
***************
*** 771,777 ****
struct menu_context *page,
struct screen_parts *LOC));
! /* openmailbox.c */
/* Opens new mailbox to current mailbox view without closing current mailbox */
/* Return EOF if EOF seen */
--- 866,872 ----
struct menu_context *page,
struct screen_parts *LOC));
! /* src/openmailbox.c */
/* Opens new mailbox to current mailbox view without closing current mailbox */
/* Return EOF if EOF seen */
***************
*** 783,796 ****
struct screen_parts *LOC));
! /* file_util.c */
extern long fsize P_((FILE *));
extern long bytes P_((char *));
extern int copy_to_folder P_((FILE * from, struct folder_info *to));
extern int copy1 P_((FILE *from, char *to, int isspool));
! /* mailmsg1.c */
extern void a_sendmsg P_((int edit_message,
struct MailboxView *mailbox,
--- 878,915 ----
struct screen_parts *LOC));
! /* src/file_util.c */
extern long fsize P_((FILE *));
extern long bytes P_((char *));
extern int copy_to_folder P_((FILE * from, struct folder_info *to));
extern int copy1 P_((FILE *from, char *to, int isspool));
! /* src/mailcap_sel.c */
!
! struct prompt_programs_list {
! struct mimeinfo * structure;
! char * printable_command;
! char * blacklisted_command;
!
! unsigned int selected :1;
! unsigned int need_metamail :1;
! unsigned int type_not_found :1;
!
! int col;
!
! int list_position;
! };
!
! enum prompt_mailcap_other_stat {
! prompt_mailcap_other_EOF = EOF,
! prompt_mailcap_other_none = 0,
! prompt_mailcap_other_navigate
! } prompt_mailcap_other P_((struct prompt_programs_list *pg,
! struct menu_context *parent_page,
! int *ret_ch));
!
! /* src/mailmsg1.c */
extern void a_sendmsg P_((int edit_message,
struct MailboxView *mailbox,
***************
*** 872,878 ****
struct menu_context *prompt_area));
! /* mailmsg2.c -------------- */
#if ANSI_C
struct run_state; /* Needed for prototype */
--- 991,997 ----
struct menu_context *prompt_area));
! /* src/mailmsg2.c -------------- */
#if ANSI_C
struct run_state; /* Needed for prototype */
***************
*** 912,924 ****
extern enum mailer_capab get_mailer_level P_((struct mailer_info
*mailer_info));
! /* canceled.c */
extern char * last_canceled_mail;
extern int view_canceled_mails P_((struct MailboxView * cancel_view,
int *cancel_selection,
struct AliasView *aview));
! /* aliaslib.c */
extern struct addr_list *get_alias_address_expanded P_((
const struct string * name, /* name to expand as an alias */
--- 1031,1043 ----
extern enum mailer_capab get_mailer_level P_((struct mailer_info
*mailer_info));
! /* src/canceled.c */
extern char * last_canceled_mail;
extern int view_canceled_mails P_((struct MailboxView * cancel_view,
int *cancel_selection,
struct AliasView *aview));
! /* src/aliaslib.c */
extern struct addr_list *get_alias_address_expanded P_((
const struct string * name, /* name to expand as an alias */
***************
*** 933,939 ****
! /* syscall.c */
extern int system_call P_((const char *, volatile int,
struct MailboxView *mailbox));
--- 1052,1058 ----
! /* src/syscall.c */
extern int system_call P_((const char *, volatile int,
struct MailboxView *mailbox));
***************
*** 959,969 ****
extern int create_folder_state_file P_((struct MailboxView *mailbox));
extern int remove_folder_state_file P_((void));
! /* lib/errno.c */
!
! extern char *error_description P_((int));
!
! /* savecopy.c */
struct copy_file {
struct string * copy_file;
--- 1078,1084 ----
extern int create_folder_state_file P_((struct MailboxView *mailbox));
extern int remove_folder_state_file P_((void));
! /* src/savecopy.c */
struct copy_file {
struct string * copy_file;
***************
*** 1007,1013 ****
enum cm_across_mode copy,
FILE *conv_file));
! /* mime.c */
#if ANSI_C
struct scan_list;
--- 1122,1128 ----
enum cm_across_mode copy,
FILE *conv_file));
! /* src/mime.c */
#if ANSI_C
struct scan_list;
***************
*** 1018,1024 ****
charset_t from_charset,
const struct remote_server *remote_server));
! /* mime_encode.c */
extern int attach_message P_((mime_t *part, struct out_state *mailer,
--- 1133,1139 ----
charset_t from_charset,
const struct remote_server *remote_server));
! /* src/mime_encode.c */
extern int attach_message P_((mime_t *part, struct out_state *mailer,
***************
*** 1048,1054 ****
enum encoding top_encoding));
! /* attach_menu.c */
extern void attach_menu P_((FILE *F,
mime_t *T,
--- 1163,1169 ----
enum encoding top_encoding));
! /* src/attach_menu.c */
extern void attach_menu P_((FILE *F,
mime_t *T,
***************
*** 1078,1092 ****
extern struct scan_list * init_scanlist P_((const char *ext));
! /* returnadd.c */
extern void kludge P_((char *buffer, int size));
! /* lock.c */
extern int unlock P_((int interrupt, struct folder_info *folder));
extern int lock P_((enum lock_direction direction,struct folder_info *folder));
! /* utils.c */
extern void utils_open_debug P_((void));
extern void emergency_exit P_((int interrupt));
--- 1193,1207 ----
extern struct scan_list * init_scanlist P_((const char *ext));
! /* src/returnadd.c */
extern void kludge P_((char *buffer, int size));
! /* src/lock.c */
extern int unlock P_((int interrupt, struct folder_info *folder));
extern int lock P_((enum lock_direction direction,struct folder_info *folder));
! /* src/utils.c */
extern void utils_open_debug P_((void));
extern void emergency_exit P_((int interrupt));
***************
*** 1101,1107 ****
extern void malloc_failed_exit P_((char *proc,size_t n));
! /* date.c */
#define TODAY_INFO_magic 0xF527
--- 1216,1222 ----
extern void malloc_failed_exit P_((char *proc,size_t n));
! /* src/date.c */
#define TODAY_INFO_magic 0xF527
***************
*** 1152,1158 ****
! /* reply.c */
extern void append_addresses_to_addr_list P_((struct addr_list *target,
const struct addr_list *list));
--- 1267,1273 ----
! /* src/reply.c */
extern void append_addresses_to_addr_list P_((struct addr_list *target,
const struct addr_list *list));
***************
*** 1187,1193 ****
struct menu_context *prompt_area,
struct menu_context *header_area));
! /* leavembox.c */
extern enum sync_mbox_stat {
sync_mbox_EOF = -5,
--- 1302,1308 ----
struct menu_context *prompt_area,
struct menu_context *header_area));
! /* src/leavembox.c */
extern enum sync_mbox_stat {
sync_mbox_EOF = -5,
***************
*** 1209,1215 ****
! /* mkhdrs.c */
extern void generate_reply_to P_((struct header_rec * current_header,
struct mailing_headers *headers));
--- 1324,1330 ----
! /* src/mkhdrs.c */
extern void generate_reply_to P_((struct header_rec * current_header,
struct mailing_headers *headers));
***************
*** 1217,1223 ****
struct mailing_headers *headers));
! /* opt_generic.c */
extern struct optsmenu * malloc_optsmenu P_((void));
extern void free_optsmenu P_((struct optsmenu **ptr));
--- 1332,1338 ----
struct mailing_headers *headers));
! /* src/opt_generic.c */
extern struct optsmenu * malloc_optsmenu P_((void));
extern void free_optsmenu P_((struct optsmenu **ptr));
***************
*** 1283,1289 ****
const char * opt_string,
struct string * menu_text));
! /* options.c */
extern int options P_((struct MailboxView *mailbox,
struct AliasView *aview,
--- 1398,1404 ----
const char * opt_string,
struct string * menu_text));
! /* src/options.c */
extern int options P_((struct MailboxView *mailbox,
struct AliasView *aview,
***************
*** 1296,1302 ****
const struct opts_menu_item * find_cfg_opts P_((int c));
! /* hdrconfig.c */
extern charset_t want_convert_to_utf7 P_((const struct string * text));
--- 1411,1435 ----
const struct opts_menu_item * find_cfg_opts P_((int c));
! /* src/hdrconfig.c */
!
! #define HDRMENU_CONTEXT_magic 0xF613
!
! extern struct hdrmenu_context {
! unsigned short magic; /* HDRMENU_CONTEXT_magic */
!
! struct string * buffer;
! struct expanded_address * exp_buffer; /* on prompt_expanded_address() */
!
! /* Title on full page mode on prompt_expanded_address() */
! struct string * title;
!
! unsigned redrawing:1;
!
! } NULL_hdrmenu_context;
!
! extern void clear_hdrmenu_context P_((struct hdrmenu_context *cnt));
!
extern charset_t want_convert_to_utf7 P_((const struct string * text));
***************
*** 1317,1352 ****
enum show_presend_mode show_prehdr_mode
));
/* returns 0 if command not found
1 if found
REDRAW_MARK is redraw required
*/
! extern int presend_action P_((struct mailing_headers *headers,
! struct mailer_info *mailer_info,
! int c,
! charset_t hdr_charset,
! struct AliasView *aview,
! struct menu_context *page,
! struct menu_context *prompt_area,
! struct header_rec *parent_message,
! enum show_presend_mode show_prehdr_mode));
! extern void edit_headers P_((struct mailing_headers *headers,
! struct mailer_info *mailer_info,
! charset_t hdr_charset,
! int hdr_encondig_supported,
! struct AliasView *aview,
! struct header_rec *parent_message));
extern struct string *hdr_to_expval P_((struct expanded_address addrs));
- extern void hdr_to_buffer P_((struct expanded_address addrs,
- struct string **ptr));
- extern int buffer_to_header P_((struct expanded_address *addrs,
- struct string **ptr,
- int free_only,
- struct mailer_info *mailer_info,
- struct AliasView *aview));
! /* remail.c */
extern void remail P_((struct header_rec *hdr,
FILE *F, struct AliasView *aview,
--- 1450,1482 ----
enum show_presend_mode show_prehdr_mode
));
+
+
+
/* returns 0 if command not found
1 if found
REDRAW_MARK is redraw required
*/
! extern int presend_action P_((struct mailing_headers * headers,
! struct mailer_info * mailer_info,
! int c,
! struct hdrmenu_context * redraw_context,
! charset_t hdr_charset,
! struct AliasView * aview,
! struct menu_context * page,
! struct menu_context * prompt_area,
! struct header_rec * parent_message,
! enum show_presend_mode show_prehdr_mode));
! extern void edit_headers P_((struct mailing_headers * headers,
! struct mailer_info * mailer_info,
! charset_t hdr_charset,
! int hdr_encondig_supported,
! struct AliasView * aview,
! struct header_rec * parent_message));
extern struct string *hdr_to_expval P_((struct expanded_address addrs));
! /* src/remail.c */
extern void remail P_((struct header_rec *hdr,
FILE *F, struct AliasView *aview,
***************
*** 1363,1376 ****
enum encoding * encoding,
const char * sender));
! /* editmsg.c */
extern void edit_headers_on_editor P_((struct mailing_headers *headers,
const char *editor,
int encoding_supported,
struct menu_context *page));
! /* editmsg.c */
extern int have_editor P_((const char *editor));
extern int edit_the_message P_((char *filename,
--- 1493,1506 ----
enum encoding * encoding,
const char * sender));
! /* src/editmsg.c */
extern void edit_headers_on_editor P_((struct mailing_headers *headers,
const char *editor,
int encoding_supported,
struct menu_context *page));
! /* src/editmsg.c */
extern int have_editor P_((const char *editor));
extern int edit_the_message P_((char *filename,
***************
*** 1395,1401 ****
struct AliasView *aview
));
! /* delete.c */
extern void delete_msg P_((int real_del,
struct menu_common *mc,
--- 1525,1531 ----
struct AliasView *aview
));
! /* src/delete.c */
extern void delete_msg P_((int real_del,
struct menu_common *mc,
***************
*** 1413,1424 ****
struct menu_context *header_area));
! /* forms.c */
extern int format_form P_((char *filename));
extern int check_form_file P_((char *filename));
! /* quit.c */
/* returns:
--- 1543,1554 ----
struct menu_context *header_area));
! /* src/forms.c */
extern int format_form P_((char *filename));
extern int check_form_file P_((char *filename));
! /* src/quit.c */
/* returns:
***************
*** 1444,1458 ****
));
! /* save_opts.c */
! extern void save_options P_((void));
extern void save_user_options P_((FILE *elminfo_fd, FILE *newelmrc));
char *str_opt_nam P_((char *s, int f));
! /* screen.c */
extern void showscreen P_((struct menu_context *page));
extern void copy_current P_((struct menu_common *menu,
--- 1574,1591 ----
));
! /* src/save_opts.c */
!
! int check_options_backup_suffix P_((const char * option /* for error message */,
! const char * backup_suffix));
! extern void save_options P_((const char *backup_suffix));
extern void save_user_options P_((FILE *elminfo_fd, FILE *newelmrc));
char *str_opt_nam P_((char *s, int f));
! /* src/screen.c */
extern void showscreen P_((struct menu_context *page));
extern void copy_current P_((struct menu_common *menu,
***************
*** 1502,1508 ****
int is_current));
! /* showmsg.c */
--- 1635,1641 ----
int is_current));
! /* src/showmsg.c */
***************
*** 1524,1533 ****
struct pager_page *pager_page,
struct elm_commands *pager_cmds));
! extern int need_meta P_((struct header_rec *hdr, int current,
int message_count, int *cancel_ret));
! /* sort.c */
extern void sort_mailbox P_((int entries, int visible,
struct MailboxView *mailbox));
--- 1657,1675 ----
struct pager_page *pager_page,
struct elm_commands *pager_cmds));
! extern enum need_meta_state {
! metamail_EOF = -2 /* != EOF */,
! metamail_cancel = -1,
! metamail_none = FALSE,
! metamail_needed = TRUE
!
! } need_meta P_((struct header_rec *hdr, int current,
int message_count, int *cancel_ret));
! extern char * check_mailcap_view_cmd P_((struct mimeinfo *structure,
! int *is_ok));
!
! /* src/sort.c */
extern void sort_mailbox P_((int entries, int visible,
struct MailboxView *mailbox));
***************
*** 1535,1548 ****
extern int time_sent_compare P_((struct header_rec *h1,struct header_rec *h2));
! /* edit.c */
extern void edit_mailbox P_((struct MailboxView **mailbox,
struct menu_context *page));
extern int edit_a_file P_((const char *editfile,
struct menu_context *page));
! /* limit.c */
extern int compute_visible P_((int message, struct menu_common *menu));
extern int next_message P_((int iindex, int skipdel,
--- 1677,1690 ----
extern int time_sent_compare P_((struct header_rec *h1,struct header_rec *h2));
! /* src/edit.c */
extern void edit_mailbox P_((struct MailboxView **mailbox,
struct menu_context *page));
extern int edit_a_file P_((const char *editfile,
struct menu_context *page));
! /* src/limit.c */
extern int compute_visible P_((int message, struct menu_common *menu));
extern int next_message P_((int iindex, int skipdel,
***************
*** 1559,1569 ****
! /* calendar.c */
extern void scan_calendar P_((struct MailboxView *mailbox));
! /* fbrowser.c */
extern struct fbrowser_call * alloc_fbrowser_call P_((struct string * filter,
struct string * prompt,
--- 1701,1711 ----
! /* src/calendar.c */
extern void scan_calendar P_((struct MailboxView *mailbox));
! /* src/fbrowser.c */
extern struct fbrowser_call * alloc_fbrowser_call P_((struct string * filter,
struct string * prompt,
***************
*** 1593,1599 ****
struct fbrowser_call *fc));
! /* browser.c */
extern struct folder_info * folder_browser P_((struct menu_context *page,
struct folder_browser *p,
--- 1735,1741 ----
struct fbrowser_call *fc));
! /* src/browser.c */
extern struct folder_info * folder_browser P_((struct menu_context *page,
struct folder_browser *p,
***************
*** 1635,1641 ****
struct string * default_extension,
const char *format, const char *msg, ...));
! /* metapager.c */
extern struct pager_page * init_pager_page P_((struct menu_common *mptr));
--- 1777,1783 ----
struct string * default_extension,
const char *format, const char *msg, ...));
! /* src/metapager.c */
extern struct pager_page * init_pager_page P_((struct menu_common *mptr));
***************
*** 1659,1665 ****
extern int mime_signature_mismatch P_((mime_t *ptr, int displaying));
! /* signals.c */
extern char * Stopped_Text; /* Initialized by init.c */
extern char * Back_Text; /* Initialized by init.c */
--- 1801,1807 ----
extern int mime_signature_mismatch P_((mime_t *ptr, int displaying));
! /* src/signals.c */
extern char * Stopped_Text; /* Initialized by init.c */
extern char * Back_Text; /* Initialized by init.c */
***************
*** 1898,1904 ****
/* Used for sorting */
struct thread_info {
! struct string * thread_subject;
/* first and last on sent time */
time_t time_sent_first;
--- 2040,2046 ----
/* Used for sorting */
struct thread_info {
! struct string_sort * thread_subject;
/* first and last on sent time */
time_t time_sent_first;
***************
*** 2363,2368 ****
--- 2505,2520 ----
int row, int col));
extern int menu_GetAbsLine P_((struct menu_context *ctx,int row));
+ /* Actual *res_col == col
+ return 1 if *res_row is on area
+ */
+ extern int menu_translate_pos P_((struct menu_context *ctx,
+ int row,
+ int col,
+ struct menu_context *res_ctx,
+ int * res_row,
+ int * res_col));
+
extern void CarriageReturn P_((void));
extern void NewLine P_((void));
***************
*** 2495,2500 ****
--- 2647,2654 ----
extern void delete_alias_from_aview P_((struct AliasView *aview,
int idx));
+ extern int file_changed_aliasview P_((struct AliasView *aview));
+
extern int write_aliasview P_((struct AliasView *aview));
extern int start_edit_aliases P_((struct AliasView *aview,
***************
*** 2625,2630 ****
--- 2779,2785 ----
#define SYSTEM 1
#define USER 2
#define DUPLICATE 16
+ #define EXPUNGED 32
/** 2) some defines to aid in the limiting of alias displays **/
***************
*** 2908,2913 ****
--- 3063,3074 ----
struct AliasView *aview,
struct menu_context *parent_page));
+ extern int compare_threads_1_sentd P_((const struct thread_info *X1,
+ const struct thread_info *X2));
+ extern int compare_threads_1_revsentd P_((const struct thread_info *X1,
+ const struct thread_info *X2));
+
+
/* src/mailbox.c */
Index: elmME+.2.5.alpha60/hdrs/melib.h
*** elmME+.2.5.alpha54/hdrs/melib.h Tue Apr 20 20:32:06 2021
--- elmME+.2.5.alpha60/hdrs/melib.h Fri Sep 2 20:38:19 2022
***************
*** 1,7 ****
! /* $Id: melib.h,v 2.26 2021/01/17 18:53:16 hurtta Exp $ */
/******************************************************************************
! * The Elm (ME+) Mail System - $Revision: 2.26 $ $State: Exp $
*
* Author: Kari Hurtta
* (was hurtta+elm@posti.FMI.FI, hurtta+elm@ozone.FMI.FI)
--- 1,7 ----
! /* $Id: melib.h,v 2.29 2022/08/19 16:13:04 hurtta Exp $ */
/******************************************************************************
! * The Elm (ME+) Mail System - $Revision: 2.29 $ $State: Exp $
*
* Author: Kari Hurtta
* (was hurtta+elm@posti.FMI.FI, hurtta+elm@ozone.FMI.FI)
***************
*** 91,96 ****
--- 91,100 ----
extern void mime_panic P_((char *,int,char *, char *));
extern int check_encoding P_((char *));
+ /* Is mime type multipart/report; report-type=delivery-status; ? */
+ extern int mime_type_is_dsn P_((mime_t *p));
+
+
/* mime_decode.c */
extern int rfc822_header_filter P_((header_list_ptr hdr, int flag, int have_title));
***************
*** 178,184 ****
/* mime_selector.c ---------------------------------------------------- */
! extern int mime_classify_media P_((mime_t *p,struct header_rec * hdr));
/* Returns -1 on failure otherwise same mask than mime_classify_media() */
typedef int mime_run_selector P_((mime_t *p,struct header_rec * hdr));
--- 182,196 ----
/* mime_selector.c ---------------------------------------------------- */
! enum mime_classify_mode {
! mime_classify_all = 1,
! mime_classify_skip_mailcap /* DO not register mailcap yet */
! };
!
! extern int mime_classify_media P_((mime_t *p,struct header_rec * hdr,
! enum mime_classify_mode mode));
!
! extern char * mime_debug_classify_f P_((int c));
/* Returns -1 on failure otherwise same mask than mime_classify_media() */
typedef int mime_run_selector P_((mime_t *p,struct header_rec * hdr));
***************
*** 223,230 ****
unsigned short magic; /* MIME_selector_magic */
struct mt_handle_pager *handler; /* Found internal handler */
struct mailcap_entry *entry; /* Found external handler */
!
EC_decoder_t EC_decoder;
SG_decoder_t SG_decoder;
TXT_decoder_t TXT_decoder;
--- 235,249 ----
unsigned short magic; /* MIME_selector_magic */
struct mt_handle_pager *handler; /* Found internal handler */
+
struct mailcap_entry *entry; /* Found external handler */
!
! struct mailcap_entry ** other_entries; /* Found entries if
! "mailcap-select-other"
! is set (default)
! */
! size_t num_other_entries;
!
EC_decoder_t EC_decoder;
SG_decoder_t SG_decoder;
TXT_decoder_t TXT_decoder;
***************
*** 326,332 ****
/* --- --- */
! #define DISPOSITION(x) (x == DISP_INLINE ? "inline" : "attachment")
#define ENCODING(x) (x >= 0 && x < ENCODING_count && mime_encode_names[x] ?\
mime_encode_names[x] : "")
extern char *mime_encode_names[ENCODING_count]; /* defined in mime.c */
--- 345,354 ----
/* --- --- */
! #define DISPOSITION(x) (x >= 0 && x < DISP_count && mime_disposition_names[x] ?\
! mime_disposition_names[x] : "")
! extern char * mime_disposition_names[DISP_count]; /* defined in mime.c */
!
#define ENCODING(x) (x >= 0 && x < ENCODING_count && mime_encode_names[x] ?\
mime_encode_names[x] : "")
extern char *mime_encode_names[ENCODING_count]; /* defined in mime.c */
Index: elmME+.2.5.alpha60/hdrs/misclib.h
*** elmME+.2.5.alpha54/hdrs/misclib.h Tue May 12 21:18:18 2020
--- elmME+.2.5.alpha60/hdrs/misclib.h Sat Aug 28 14:11:45 2021
***************
*** 1,7 ****
! /* $Id: misclib.h,v 2.23 2020/05/12 18:18:18 hurtta Exp $ */
/******************************************************************************
! * The Elm (ME+) Mail System - $Revision: 2.23 $ $State: Exp $
*
* Author: Kari Hurtta (was hurtta+elm@posti.FMI.FI)
* or Kari Hurtta
--- 1,7 ----
! /* $Id: misclib.h,v 2.27 2021/07/13 07:58:36 hurtta Exp $ */
/******************************************************************************
! * The Elm (ME+) Mail System - $Revision: 2.27 $ $State: Exp $
*
* Author: Kari Hurtta (was hurtta+elm@posti.FMI.FI)
* or Kari Hurtta
***************
*** 113,118 ****
--- 113,119 ----
#define MIME_SIGNED 16
#define MIME_ENCRYPTED 32
#define MIME_PARTIAL 64 /* Message fragment */
+ #define MIME_REPORT 128 /* Maybe DSN */
extern int get_type_flags P_((media_type_t T));
extern const char * get_subtype_name P_((media_type_t T));
***************
*** 270,276 ****
/* lib/misc/conf_writer.c */
! extern void write_conf P_((const char *actor,char *version_buff));
extern struct string * conf_taglist P_((struct string *sep));
--- 271,298 ----
/* lib/misc/conf_writer.c */
! /* Return 1 if suffix is OK */
! extern int check_file_backup_suffix P_((const char * name,
! const char * option /* for error message */,
! const char * backup_suffix));
!
! /* Return 1 if suffix is OK */
! extern int check_conf_backup_suffix P_((const char * option /* for error message */,
! const char * backup_suffix));
!
!
! enum write_conf_rewrite {
! write_conf_full_rewrite = 0,
! write_conf_auto_rewrite
! };
!
! extern void write_conf P_((const char * actor,
! char * version_buff,
! enum write_conf_rewrite rewrite /* Automatic rewrite to
! some files */,
! const char * backup_suffix
!
! ));
extern struct string * conf_taglist P_((struct string *sep));
***************
*** 308,314 ****
struct mail_services_conf *new));
! /* lib/misc/iso2022.c */
extern void change_iso2022_map P_((struct iso2022_map_conf **conf,
struct iso2022_map_conf *new,
--- 330,336 ----
struct mail_services_conf *new));
! /* lib/misc/iso2022.c ------------------------------------------------------------ */
extern void change_iso2022_map P_((struct iso2022_map_conf **conf,
struct iso2022_map_conf *new,
***************
*** 318,324 ****
--- 340,355 ----
FILE *commentfile, const char *actor,
char *version_buff));
+ /* lib/misc/filelock.c ----------------------------------------------------------- */
+
+ extern enum FLOCKING_status filelock_fd P_((int fd,
+ enum FLOCKING_mode op,
+ struct dt_flags_info * flags,
+ const char * filename /* may be NULL */,
+ enum FLOCKING_blocking blockit,
+ int * errno_res
+ ));
/*
* Local Variables:
Index: elmME+.2.5.alpha60/hdrs/readmsg.h
*** elmME+.2.5.alpha54/hdrs/readmsg.h Tue Apr 20 20:32:06 2021
--- elmME+.2.5.alpha60/hdrs/readmsg.h Thu May 26 11:16:29 2022
***************
*** 1,6 ****
/******************************************************************************
! * The Elm (ME+) Mail System - $Revision: 2.13 $ $State: Exp $
*
* Author: Kari Hurtta (was hurtta+elm@posti.FMI.FI)
* or Kari Hurtta
--- 1,6 ----
/******************************************************************************
! * The Elm (ME+) Mail System - $Revision: 2.14 $ $State: Exp $
*
* Author: Kari Hurtta (was hurtta+elm@posti.FMI.FI)
* or Kari Hurtta
***************
*** 27,33 ****
static char copyright[] FORIDENT = {
"@(#) (C) Copyright 1986,1987, Dave Taylor\n@(#)\n\
@(#) (C) Copyright 1988-1992, The Usenet Community Trust\n\
! @(#) (C) Copyright 1996-2021, Kari Hurtta\n" };
/******** global variables accessable by all pieces of the program *******/
--- 27,33 ----
static char copyright[] FORIDENT = {
"@(#) (C) Copyright 1986,1987, Dave Taylor\n@(#)\n\
@(#) (C) Copyright 1988-1992, The Usenet Community Trust\n\
! @(#) (C) Copyright 1996-2022, Kari Hurtta\n" };
/******** global variables accessable by all pieces of the program *******/
Index: elmME+.2.5.alpha60/hdrs/s_aliases.h
*** elmME+.2.5.alpha54/hdrs/s_aliases.h Mon Apr 13 07:34:53 2015
--- elmME+.2.5.alpha60/hdrs/s_aliases.h Sat Aug 28 14:11:45 2021
***************
*** 174,176 ****
--- 174,188 ----
#define AliasesInfoUnknownCommand2 0xfb
#define AliasesEmpty 0xfc
#define AliasesNoValue 0xfd
+ #define AliasesWaitingUpdFail 0xfe
+ #define AliasesMergeFailed 0xff
+ #define AliasesMergeFailed1 0x100
+ #define AliasesWaitingUpdError 0x101
+ #define AliasesWaitingUpdOK 0x102
+ #define AliasesWaitingUpd 0x103
+ #define AliasesMergeFailed2 0x104
+ #define AliasesMergeFailed3 0x105
+ #define AliasesBackupFailed 0x106
+ #define AliasesFileError 0x107
+ #define AliasesInfoAddressNoneRO 0x108
+ #define AliasesInfoAddressNone 0x109
Index: elmME+.2.5.alpha60/hdrs/s_elm.h
*** elmME+.2.5.alpha54/hdrs/s_elm.h Tue Apr 20 20:32:06 2021
--- elmME+.2.5.alpha60/hdrs/s_elm.h Fri Sep 2 20:38:19 2022
***************
*** 884,890 ****
#define ElmMailcapMenu 0x490
#define ElmUseMailcap 0x491
#define ElmMetamail 0x492
- #define ElmMailcapDone 0x493
#define ElmTitleQuit 0x494
#define ElmIconQuit 0x495
#define ElmTitleSusp 0x496
--- 884,889 ----
***************
*** 1156,1162 ****
#define ElmMetamailMailcapBL1 0x5a5
#define ElmMailcapPageB 0x5a6
#define ElmMailcapPageC 0x5a7
- #define ElmMailcapDoneA 0x5a8
#define ElmEX_USAGE 0x5a9
#define ElmEX_DATAERR 0x5aa
#define ElmEX_NOINPUT 0x5ab
--- 1155,1160 ----
***************
*** 1477,1479 ****
--- 1475,1509 ----
#define ElmHdrEditUserAgent 0x6fa
#define ElmBuiltinCommandqi 0x6fb
#define ElmCommandQIToQuitPager 0x6fc
+ #define ElmLeaveReadMsgS 0x6fd
+ #define ElmLeaveReadMsg 0x6fe
+ #define ElmLeaveReadNtfS 0x6ff
+ #define ElmLeaveReadNtf 0x700
+ #define ElmNoThisUseReceived 0x701
+ #define ElmLeaveMoveX 0x702
+ #define ElmLeaveMoveXRec 0x703
+ #define ElmLeaveUnReadMsgS 0x704
+ #define ElmLeaveUnReadMsg 0x705
+ #define ElmLeaveUnReadNtfS 0x706
+ #define ElmLeaveUnReadNtf 0x707
+ #define ElmLeaveKeepX 0x708
+ #define ElmLeaveKeepXName 0x709
+ #define ElmLeaveKeepXCount 0x70a
+ #define ElmCantOpenFileErr 0x70b
+ #define ElmArgsDupBackupOpt 0x70c
+ #define ElmDateYearParen 0x70d
+ #define ElmDateBadParen 0x70e
+ #define ElmCopiesToExp 0x70f
+ #define ElmGetToTitle 0x710
+ #define ElmGetCCTitle 0x711
+ #define ElmMailcapDefault 0x712
+ #define ElmMailcapUseYNOther 0x713
+ #define ElmMailcapUseYN 0x714
+ #define ElmMailcapViewParts 0x715
+ #define ElmMailcapViewDoneTail 0x716
+ #define ElmMailcapUseSpace 0x717
+ #define ElmMailcapUseMetamail 0x718
+ #define ElmMailcapMenu2e 0x719
+ #define ElmMailcapOtherT 0x71a
+ #define ElmHdrmenuHdrAddressSel 0x71b
+ #define ElmHdrmenuHdrAddressSel1 0x71c
--
/ Kari Hurtta
|
|