ELM ME+ 2.5 PLalpha45 announcement

Elm ME+ 2.5 PLalpha45

- Is available with
        <URL: http://www.elmme-mailer.org/elm-ME+2.5/src/elm-ME+2.5.PLalpha45.patch.gz >
  and   <URL: http://www.elmme-mailer.org/elm-ME+2.5/src/elm-ME+2.5.alpha45.tar.gz >
  via WWW.

- Is available on ftp.funet.fi
  via anonymous ftp
    directory  pub/mirrors/elmme-mailer.org/mirror/src/elm-ME+2.5/
           or  pub/unix/mail/elm/elm-ME+2.5/

    files      elm-ME+2.5.PLalpha45.patch.gz
    and        elm-ME+2.5.alpha45.tar.gz

  or is available with
        <URL: http://www.nic.funet.fi/pub/unix/mail/elm/elm-ME+2.5/elm-ME+2.5.PLalpha45.patch.gz >
  and   <URL: http://www.nic.funet.fi/pub/unix/mail/elm/elm-ME+2.5/elm-ME+2.5.alpha45.tar.gz >
  via WWW.

- Is available with
	message-id <elmME+2.5/PLalpha45/1-0@klovni.keh.iki.fi>
  on newsgroups alt.sources and comp.mail.elm

SUMMARY: This release adds 'macro' functionality
         (as #hashmark) to folder and file browser. A
         #hashmark can refer to userid@server or local 
         directory. This includes new tool "elmhashmarks",
         new elmrc option "editor-hm-propline" and
         new global elm.rc option  "user-map-dir".
         This release changes  "incoming-mailbox", 
         "receivedmail" and "sentmail" elmrc options.
         IMAP connection caching may use UNSELECT command
         on this release.  Folder browser's 
         'remote server' prefix (&) search connections
         from IMAP connection cache on this release.
         Also some other changes and some bug fixes 
         are included.

Changes on Elm ME+ 2.5 PLalpha45 compared with Elm ME+ 2.5 PLalpha44

        SUMMARY: This release adds 'macro' functionality
          (as #hashmark) to folder and file browser. A
          #hashmark can refer to userid@server or local 
          directory. This includes new tool "elmhashmarks",
          new elmrc option "editor-hm-propline" and
          new global elm.rc option  "user-map-dir".
          This release changes  "incoming-mailbox", 
          "receivedmail" and "sentmail" elmrc options.
          IMAP connection caching may use UNSELECT command
          on this release.  Folder browser's 
          'remote server' prefix (&) search connections
          from IMAP connection cache on this release.
          Also some other changes and some bug fixes 
          are included.
        - Changed overflow checking on string_to_long()
        - Fixed a certain case where builtin pager refused
          display rest of (format=flowed) mail when 
          word-wrapping line line which include non-break 
        - Fix case where word-wrapping is not possible
          on (format=flowed) because all the words are
          separated by non-break space and then pager 
          refuses to display rest of (format=flowed) mail.

        - Allowed to refer userid@server or local directory
          with #markname when giving folder or file name.  
          These #markname are defined with [markname] 
          on global elm.hashmarks or user's hash.marks

        See also chapter "Hashmark information"

        - Added "editor-hm-propline" elmrc option.
          This is similar than "editor-elmrc-propline". 
          If set to "emacs", then when on user's 
          hash.marks file, line
             # -*- coding: ... -*-
          is added to top of file. That line is also written
          if "editor-hm-propline" elmrc option is 
          set to "auto" (default) and line detected 
          when file is read. 
          If set to "ignore", then editor property line
             # -*- coding: ... -*-
          on top of file is ignored.    

        - Added "user-map-dir" global elm.rc option.
          This gives default directory location for files 
          referenced with usermap-file: on global elm.hashmarks 

        - Added elmhashmarks -command.

        - Changed that 
          elmrc option is expand same way than 
          and     sentmail
          elmrc options.
        NOTE: Expansion does not support #hashmark
        - commentfile.o is included now in several

        - File and folder browser now complain if given
          name can not be converted to local-fs-charset.

        - Added add_free_rc_hook() to lib/read_rc.c
        - Freed user_aliases_map and system_aliases_map
          via free_rc_hook at lib/mbox/init.c
        - Freed some config via  free_rc_hook
          at lib/misc/init.c

        - Fixed ascii value check on parse_service_entries()
        - Added parse_tokenized_address() and 
          parse_one_tokenized_address() to 
        - Changed parse_string_address() and
          unquote_string() on lib/addr/parsestring.c
        - Added read_charset_tag() to lib/service_list.c
        - Added trim_whitespace_from_end() to lib/service_list.c
        - Added unicode_is_space() to hdrs/elmlib.h
          This is "space" as considered on tokenizer.   
        - Added string_have_prefix() to lib/string.c
        - Added string_have_ascii_sep1() to lib/string.c
        - Added give_service_entry4() to lib/service_list.c 
        - Added  malloc_remote_account() and free_remote_account()
          to lib/remote_mbx.c
        - Added get_connection_state to lib/mbox/connection.c
        - Added set_imap_connection() to lib/mbox/imap.c

        - Replaced browser_from_connection() with

        - Possible fix for rs_folder_from_imap()

        - Removed valid_browser()
        - Changed give_line_dir()
        - Added comment column to Elm 2.5 style file browser

        - Added missing free() to free_terminal_map()
        - Added missing free() to free_interface_info()

        - Possible fix for charmap_copy()

        - Added -r elmrc -option also to elmmailinglists 
        - Added -r elmrc -option also to elmmailservices
        - Added -r elmrc -option also to elmmimetypes
        - Added -r elmrc -option also to elmaliases-write
        - Added -r elmrc -option also to elmbindata

        - Moved  string_need_quote() from 
          melib/mime_param.c to lib/stringtok.c

        - Print long command line options on "elm -h"
        - Documented --mailbox-title command line
          option of Elm.
        - Documented  --have-double-wide-characters line
          option of Elm.

        - Small change to error printing.

        - Use UNSELECT command on IMAP if CLOSE
          command can not used.

        RFC 3691: Internet Message Access Protocol 
                  (IMAP) UNSELECT command

        - Changed that rs_connect_imap() uses IMAP
          connection cache. That is required so that '&'
          does not create IMAP connection when good connection
          is available. 
        - Added locate_from_cache_1() to lib/mbox/connection.c

        - Added value "use-$MAIL" for use as continuation line
          flag on "incoming-mailbox" elmrc option. That flag 
          is set by default , but it is reset when 
          "incoming-mailbox" elmrc option is set.
        - Moved check that $MAIL is not parsed as remote
          mailbox from remote_folder_type() to 
          enter_new_folder() and  defaultfile_expand_func()
        - Changed prototype of enter_new_folder()
        - Added value "local-file" for use as continuation line
          flag on "incoming-mailbox", "receivedmail" and
          "sentmail" elmrc options.
        - Added "unsigned short magic" to 
          struct browser_type
        - Added "unsigned short magic" to 
          struct folder_type and removed valid_magic()
          from lib/mbox/mbox.c
        - Added "unsigned short magic" to 
          struct folder_info  
        - Added "unsigned short magic" to 
          struct private_data
        - Added "unsigned short magic" to 
          struct folder_browser
        - Added "unsigned short magic" to 
          struct info_type
        - Changed 'skipping' on struct read_folder_state 

        - Changed that Configure defaults  both flock 
          and fcntl locking on Linux 4.*
        New tools:

        New files:
        New elmrc options:

Hashmark information

        Files libdir/elm.hashmarks and ~/.elm/hash.marks
        hashmarks for remote servers and local directories.
        Lines on these files are following kind:

        @charset = character-set
        hashtype:       type-name
        description:    Some text
        other parameters

        next haskmark definition

        A [markname] on file defines #markname, which
        can used to refer userid@server or local directory
        on folder and file browser. Hashmark defination
        start with tag where hashmark name is inside of [ ]

        Hashmark types are;

         - For folder browser

           hashtype: remote-mailbox
           hashtype: local-folder-directory

         - For file browser

           hashtype: local-directory

         Remote mailbox have the following kind of definitions
         on libdir/elm.hashmarks file:

         hashtype: remote-mailbox
         description:  Some text
         (either "on-default-menu" or "hide")
         hostname:      hostname
         (or ipaddr:    X.X.X.X)
         servicetype:   (either "imap", "pop", "imaps", "pops")
         require-tls-peer-name: name
         usermap:       local-userid username aaa bbbb <local-part@addr>
         (or usermap-file:      xxx)

         Remote mailbox have following  kind definations
         on ~/.elm/hash.marks

         hashtype: remote-mailbox
         description:  Some text
         hostname:      hostname
         (or ipaddr:    X.X.X.X)
         servicetype:   (either "imap", "pop", "imaps", "pops")
         require-tls-peer-name: name
         userid:        username 
         from-address:  aaa bcc <local-part@addr>
         Local directory have following  kind definations:

         hashtype: local-folder-directory
         (or hashtype: local-directory)
         directory:     /abc


        - Not compiled with MMDF support defined, so probably it doesn't 
          work (or even compile).

        - This has not been tested much so there can be bad bugs. 

          Bug reports to: Kari E. Hurtta <elm@elmme-mailer.org>
                                     (was hurtta+elm@posti.FMI.FI)

        - Internationalized (ie. non-ASCII) domain names are not supported.

        - Support for multipart/signed and multipart/encrypted (specially: 
          support for PGP/MIME) only in reading side. There is no support 
          for attachments with multipart/encrypted.

        - HP's shoftkeys are no longer supported

        - DECNET addresses like host::user may be interpreted as phrase
          of group syntax or as route of source routed address.

        - Header editing screen now uses addresses in form phrase <address>, 
          but because it does not require using of comma (,), multiword 
          phrases must be entered in quotes. 

          For example:  "Kari Hurtta" <hurtta>

        - If address includes <> or comments (), they are not aliased 
          expanded. So aliases must be entered as bare words.

        - Addresses given as arguments to elm command should be given
          as one address per argument. Giving of sevaral addresses per 
          one argument causes that address is misparsed if header is 
          edited on header editing screen.

          That is:

                Use:    elm  '"Kari Hurtta" <hurtta>' 'Admin <root>'

          Don't use:    elm  'Kari Hurtta <hurtta>, Admin <root>'

        - p)rint command acts as P)rint text -command. So it
          is currently quite useless.
          p)rint command does that via readmsg -command. However
          P)rint text does actually same (without readmsg).

        - Some Linux libraries does not follow $LC_CTYPE when program is 
          setgid. Net result is that your locale is always C. That is 
          visible that $LC_CTYPE does not effect to locale printed by 
          'elm -vvvvv':

                Locale (LC_CTYPE):         C
                Display character-set:     US-ASCII
                Sending character-set:     US-ASCII

        - All refrences iso2022 maps are parsed and read to memory. 
          This may cause quite big memory consumption specially because 
          eastern (multibyte) sets tend to be lot of characters. That 
          mapping information should be shared between processes to 
          reduce memory consuption.

        - If display charset is produced by using mapping from locale 
          to charset where charset definition is later invalidated 
          ("removed") by setting explicit compatcharsets on user's 
          .elm/elmrc, that may  cause PANIC on elm's internal pager 
          or other problems. Invalidation happens if display charset 
          is on implicit compatcharsets list (because of charset 
          definition), but does not have explicit compatcharsets list 
          given by user. 

        - Neither Unicode didirectional algorithm nor Right-Left scripts 
          are supported.

        - In some situations two Status headers may be generated two 
          Status headers -- one by IMAP deamon and one from APPENDed 
        - When APPENDing message to IMAP folder (which is normal UNIX 
          mailbox format) original "From " separator line can not be 
          preserved -- specially it is not possible to pass envelope 
          sender address.
        - For UTF-8 charset Elm only knows printable characters from 
          Latin/1 range, if unicode database (see elmrc option "unidata")
          is not loaded.

        - For using of ISO2022 character sets it is required that mapping 
          them to unicode is know -- otherwise Elm ME+ does not know which 
          characters are printable.

        - UTF-16 surrogate pairs (D800-DFFF) are not supported on UTF-7 

        - Mixing of names using IMAP naming convention 
          (imap-naming-convention = yes)
          and names using imap-charset does not work very well...

        - "  Regarding my message (8 Aug 2000) regarding 'newmail' on 
           AIX 4.3.3 in an 'aixterm' window and the 'aixterm' did not 
          close, indeed the problem was NOT related to 'newmail' but an 
          AIX bug.

          IBM has release a patch, and the 'aixterm' in AIX 4.3.3 must
          be update with fileset X11.apps.aixterm. (PTF
          U473920) is solved to problem."
         From: Noam G. Nudelman  <noam@mail.biu.ac.il>

        - File /usr/share/locale/fi/charset gives charset name utf-8 on 
          Linux Mandrake 7.2. This causes that Configure generates 
                fi      utf-8
          to elm.mimecharsets. However that seems to have
          incorrect mapping. You may want change this to
                fi      ISO-8859-1

          ( however nl_langinfo(CODESET) gives charset ISO-8859-15
            but look following entry. )

        - Locale 'fi' seems to have charset ISO-8859-15 according
          of nl_langinfo(CODESET)  on Mandrake Linux 7.2 (and probaly 
          others with same glibc version). However for example gnome 
          terminal uses font 
          and not

          Also KDE's konsole program seems use iso8859-1 character set
          although locale is 'fi' which should have ISO-8859-15 according
          of nl_langinfo (selecting "unicode" from menu seems fix that.)
          Because of mismatch more correct locale is fi_FI.88591, which gives
          ISO-8859-1 character set according of nl_langinfo(CODESET).

          ( Locale seems come from /etc/sysconfig/i18n or $HOME/.i18n )

        > To enable handling of ISO-8859-1 and ISO-8859-15 character sets
          on linux console, read comments from doc/terminal.info file.

        - Mandrake Linux 7.2 seems set LD_PRELOAD to load 
          /usr/lib/libxalflaunch.so.0. That (xalf-0.4-2mdk) causes that 
          elm to crash on startup (actually before main() is reached.)

        - kterm on Mandrake Linux 7.2 seems have (at least on my test
          environment) seems get bad fontlist (*VT100*fontList) which 
          gives bad font for iso8859-1 -- therefore ISO-8859-1 characters 
          do not work.
          ("xrdb -query" seems report resource with name "*fontList"
           -- that probably overrides "*VT100*fontList" which comes
           from /usr/lib/X11/app-defaults/KTerm )

        - Also note that initially kterm does NOT default to
          ISO-8859-1 -- therefore ISO-8859-1 works only when
          elm explicity switch to ISO-8859-1 (for example
          with 'elm -D ISO-8859-1')

        - When assembling message/partial MIME (RFC 2046) 
          requires that all headers except Content-*, Subject, 
          MIME-Version, Message-ID and Encrypted are copied from
          initial enclosing message to assembled message. It also 
          requires that headers except Content-*, Subject,
          MIME-Version,  Message-ID and Encrypted  are ignored and
          dropped from enclosed  message.

          For now we copy only Received: -headers. Dropping extra
          headers from enclosed message makes assembly more 
          complicated  (and dropping of Received: -headers
          from enclosed message do not make sense.)

        - EXIF files are sometimes labeled with content-type
          image/jpeg. They also use .jpg filename extension. They are
          not accepted by Elm ME+ as image/jpeg because magic number 
          (and format) is different. It is unclear what is correct
          treatment. According of specification EXIF files may
          wrap also other file types than jpeg (JFIF).

        - mailer=sendmail; verify=yes works only when sendmail 
          is installed as setuid root. Use mailer=submission instead.
        * Starting from sendmail 8.12 sendmail is normally
          installed as setgid smmsp and not as setuid root.
        - However error message is printed only if 
          verify-local-address=yes is also set

        - IMAP connection is stalled some times. Reason is unknown.

        - From name option (-f) on fastmail is currently broken.

Collector of these patches

        Kari Hurtta <elm@elmme-mailer.org>
        Kari Hurtta <hurtta+elm@siilo.FMI.FI>


 ConfTool/GenHashMarks            |   16 
 Configure                        |   29 
 MANIFEST                         |   14 
 Makefile-1.SH                    |   42 
 README.ME+                       |  409 ++!
 doc/Makefile.SH                  |   29 
 doc/elm.1                        |   63 
 doc/elm.user.map/elm.usermap     |   17 
 doc/elmaliases-write.1           |    7 
 doc/elmbindata.1                 |    9 
 doc/elmhashmarks-info            |   52 
 doc/elmhashmarks.1               |   84 
 doc/elmmailinglists.1            |    7 
 doc/elmmailservices.1            |    7 
 doc/elmmimetypes.1               |    7 
 doc/elmrc-info                   |   57 
 doc/hash.marks                   |   59 
 hdrs/addrlib.h                   |   72 
 hdrs/commentfile.h               |   26 
 hdrs/connection_imp.h            |  108 
 hdrs/elm_defs.h                  |    6 
 hdrs/elmlib.h                    |   83 
 hdrs/hashmark.h                  |  130 +
 hdrs/hashmark_imp.h              |  207 +
 hdrs/mboxlib.h                   |   70 
 hdrs/mbx_imp.h                   |  109 
 hdrs/mbximap_imp.h               |   12 
 hdrs/mbxlocal_imp.h              |    5 
 hdrs/me.h                        |   12 
 hdrs/melib.h                     |    7 
 hdrs/patchlevel.h                |   10 
 hdrs/rc_imp.h                    |   14 
 hdrs/s_elm.h                     |    8 
 hdrs/s_fbrowser.h                |    1 
 hdrs/s_me.h                      |   62 
 hdrs/save_opts.h                 |    9 
 hdrs/shared_imp.h                |   10 
 hdrs/sysdefs.SH                  |   11 
 lib/MAGIC                        |   16 
 lib/addr/dispaddr.c              |   29 
 lib/addr/okay_addr.c             |   25 
 lib/addr/parsestring.c           |  440 +!
 lib/alias/Makefile.SH            |   21 
 lib/alias/aliases.c              |  118 
 lib/alias/init.c                 |   40 
 lib/expand.c                     |   11 
 lib/iso2022_map.c                |   13 
 lib/mailer/init.c                |    5 
 lib/mailer/mailer.c              |    8 
 lib/mbox/Makefile.SH             |   35 
 lib/mbox/common_local.c          |  121 
 lib/mbox/con_imap.c              |  251 
 lib/mbox/connection.c            |  486 ++
 lib/mbox/def_mbox.h              |   86 
 lib/mbox/hashmark.c              | 3123 +++++++++++++++++++++++++
 lib/mbox/hashmark_browser.c      | 1293 ++++++++++
 lib/mbox/hashmark_helper.c       |  266 ++
 lib/mbox/hashmark_local.c        | 1240 ++++++++++
 lib/mbox/hashmark_remote.c       | 4741 +++++++++++++++++++++++++++++++++++++++
 lib/mbox/imap.c                  |  730 ++!!
 lib/mbox/init.c                  |  138 
 lib/mbox/localmbx.c              |  497 +-
 lib/mbox/mbox.c                  |  466 +!!
 lib/mbox/mbox_generic.c          |    5 
 lib/mbox/pop.c                   |  466 +!
 lib/mbox/remote_mbx.c            |  120 
 lib/mbox/remote_server.c         |  673 +-!
 lib/mbox/savefolder.c            | 1751 +++++-!!!!!!!!
 lib/mbox/shared_mbox.c           |   48 
 lib/misc/Makefile.SH             |    4 
 lib/misc/commentfile.c           |    7 
 lib/misc/init.c                  |   37 
 lib/misc/mlist.c                 |   67 
 lib/misc/terminal.c              |    8 
 lib/output.c                     |    8 
 lib/rc_handle.c                  |    6 
 lib/rc_parse.c                   |    6 
 lib/read_rc.c                    |  249 +
 lib/remote_mbx.c                 |  132 
 lib/service_list.c               | 1729 +++++-!!!!!!!
 lib/shared.c                     |    7 
 lib/string.c                     |  278 +
 lib/stringtok.c                  |   53 
 melib/mime_param.c               |   41 
 nls/C/C/C/s_elm.m                |   16 
 nls/C/C/C/s_fbrowser.m           |    2 
 nls/C/C/C/s_me.m                 |  148 +
 shared_libs/smtp/smtp.c          |   10 
 src/alias_display.c              |   34 
 src/aliaslib.c                   |    8 
 src/args.c                       |  360 ++
 src/browser.c                    |  209 +
 src/browser_help.c               |    5 
 src/def_browser.h                |    4 
 src/fbrowser.c                   |  201 !
 src/hdrconfg.c                   |    9 
 src/init.c                       |   19 
 src/list/reply.c                 |   20 
 src/mailmsg2.c                   |   47 
 src/menu_common/message_screen.c |   65 
 src/out_utils.c                  |    7 
 src/pager/span_line.c            |  308 !
 src/reply.c                      |   40 
 src/screen.c                     |    9 
 src/snd_display.c                |    6 
 utils/Makefile.SH                |   68 
 utils/charmapcopy.c              |   24 
 utils/elmaliases-write.c         |   11 
 utils/elmbindata.c               |   25 
 utils/elmcharset.c               |   44 
 utils/elmconfwriter.c            |   20 
 utils/elmhashmarks.c             |  452 +++
 utils/elmmailinglists.c          |   15 
 utils/elmmailservices.c          |   24 
 utils/elmmimetypes.c             |   11 
 utils/from.c                     |   46 
 utils/newmail.c                  |   48 
 utils/readmsg/def_readmsg.h      |   10 
 utils/readmsg/folder.c           |   15 
 utils/readmsg/readmsg.c          |   16 
 120 files changed, 17062 insertions(+), 648 deletions(-), 6420 modifications(!)