$Header: /data/cvsroot/mail/elmme+/README.ME+,v 1.501 2002/06/06 15:08:17 hurtta Exp $

Version Elm2.4ME+ PL0 (25) is based on version Elm2.4 PL24 ME8b+.
Version Elm2.4 PL24 ME8b+ is based on version Elm2.4 PL24 ME8b.

Version Elm2.4 PL24 ME8b is done by Michael Elkins <elkins.aero.org>.
For details, check file ANNOUNCE.ME

[ Michael Elkins posted the equivalent of MIME code in Elm2.4 PL24 ME8b 
  to Elm Development Coordinator. Later changes are not posted to
  Elm Development Coordinator. ]
   
Version Elm2.4 PL24 ME8b is based on version Elm2.4 PL24.
Version Elm2.4ME+ PLx (25) includes patch of version Elm2.4 PL25.

Changes of Elm2.4ME+ PL99 (25) compared with Elm2.4ME+ PL98 (25)
----------------------------------------------------------------

        Undo Elm2.4ME+ PL98a (25), Elm2.4ME+ PL98b (25)
        Elm2.4ME+ PL98c (25) patches before applying 
        this patch.  

        WARNING: Changes on address and terminal MIME handling. So 
                 please report new bugs which you observe...

        SUMMARY: This release adds users to possibility to specify
                 envelope sender address (aka Return-Path). There
                 is suboption allow-set-sender=yes on global elm.rc's
                 mailer option for that. Envelope sender address
                 can be given on .elm/elmheaders file as Return-Path
                 header. Another new elmrc option is convert-utf-header. 
                 This release also adds (some) support for ISO 2022 as 
                 MIME charsets. This includes multibyte and double wide 
                 ISO 2022 chracters. This release fixs also some bugs.

        - On elm.rc mailer variable option allow-set-sender=yes 
          for mailer type 'sendmail' allows user to set
          envelope sender address (aka Return Path). This
          is passed to sendmail via -f command line option.
        - On elm.rc mailer variable option allow-set-sender=yes 
          for mailer types 'sendmail-bs' and 'submission' 
          allows user to change envelope sender address 
          (aka Return-Path). These mailers use envelope sender
          address on MAIL FROM:<xxxx> smtp command. 
        - pre-send menu have now title "Mail Pre-Send Screen".
          Also screen is cleared before showing menu.
        - To header is now visible on "Mail Pre-Send Screen"
        - Envelope sender (aka MAIL FROM) is visible
          on "Mail Pre-Send Screen" as Return-path.
          Return-path is shown is envelope sender is
          changeable. 
        - If mailer (for example 'submission' and
          'sendmail-bs') passes MAIL FROM always it
          is printed (as Return-path) on "Mail Pre-Send Screen"
          anyway.
        - Envelope sender is written as Return-path: -header to
          saved copy of mail (and also to "From " separator of mails).
        - Envelope sender address can be given on .elm/elmheaders
          as Return-path: -header.
        - If global elm.rc option add-sender is set (default),
          Elm adds Sender: -header if user changes envelope
          sender address (aka Return-Path).

        - For b)ounce command .elm/elmheaders is now readed
          to get envelope sender address (aka Return-Path).
          Note however that content of .elm/elmheaders is NOT put
          to b)ounced mail.

        NOTE: Is is not possible currently to use elm
              aliases to Return-Path: query on Mail Pre-Send Screen
              (altough elm aliases work on To: query on same screen)

        - fastmail command now reads .elm/elmheaders and append these 
          headers to mail. Also  envelope sender address
          (aka Return-Path) is updated.

        - Configure -DDEBUG -S
          can now used to enable debugging (in other
          words reconfiguration is not needed)

        - Moved from_addr_literal() from src/addr_util.c
          to lib/outheaders.c
        - Moved make_from_addr() from src/addr_util.c
          to lib/outheaders.c
        - Moved write_addr_header() and write_text_header()
          from src/addr_util.c to lib/write_hdr.c
        - Moved print_EOLN() from src/mime_encode.c to
          lib/write_hdr.c
        - Moved write_id_phrase_header() and write_string_header()
          from src/id_phrace.c to lib/id_phrace.c
        - Moved dump_expanded_address() from  src/addr_util.c
          to lib/outheaders.c
        - Moved argv_from_headers() from  src/addr_util.c 
          to lib/mailer.c
        - Moved eval_backquote() from src/mkhdrs.c to lib/outheaders.c
        - Moved read_header_line() and state_read_hdr_line() from 
          melib/parse_util.c to lib/headers.
          
        - fastmail also recognices $BCC environment variable
        - fastmail now does mime encoding for some headers
          (but otherwise fastmail still does not support MIME)    
          
        - "since a number of releases frm doesn't detect status 
           new correctly for me (Linux 2.4.18, elm2.4.ME+.98)."
         Problem noted by: Jan Willamowius <jan@willamowius.de>
        > Changed utils/from.c logic same than src/newbox.c       

        NOTE: Fastmail is still broken.

        - Be consistent and use everywhere #ifndef ANSI_C
          around of extern int errno;

        - Added walk parameter to mime_parse_content_opts()

        - Our non-standard headers was ignored:
          * X-ELM-OSV: hdr-charset=xxxx    was ignored
          * Content-Length: xxxx           was ignored

        - fastmail did not read standard input when -
          was specified as filename.

        - Elm ME+ failed to read IMAP mail when Return-Path included 
          (unquoted) space  on address.
         Problem noted by: graham@cplane.com

        - copy_message_2() lost header name when folding happeded
          immediately after header name (that specially was visible
          on copy of sent message when phrase was long.)

        - optionally_enter() was using wrong charset on
          some situation (ie. 'keyboard charset' instead of
          display charset)

        - Do not split UTF-8 to mime encoded words on middle of
          multi-byte UTF-8 character

        - Textual form ('surfcase form') of entered address
          is now "struct string" instead of "char *" -- that
          implies quite much changed on header editing screen
          and elsewhere.
        
        NOTE: Now if addressess are edited, phrases and comments
              on addresses to text-charset (if mapping of text-charset
              is known)
        
              If there is non-ascii parts on addresses (which is
              illegal) they may be presendted with UTF-8 charset.

        - open_mapname(), set_charmap_copy_callback() moved 
          from lib/cs_binary.c to lib/iso2022_map.c
        - parser for Unicode Format A maps is moved to
          lib/iso2022_map.c
        - Added support for ISO-2022 charsets (lib/cs_iso2022.c).
        - Added support for new config files {libdir}/elm.iso2022sets 
          and ~/.elm/iso2022.sets. See chapter  "ISO2022 maps information"
          for details.

        - New elmrc option convert-utf-header specifies if set (default) 
          that UTF-7 charset should be favored instead of UTF-8 on headers.
          That avoid ridiculous per character expansion of encoding when
          UTF-8 is used on MIME encoded words. 
        - Do not =xx encode + character on MIME encoded words.
        - Clear screen before calling external pager
        - Fix bogus message (which occured on some cases)
                [ Charset US-ASCII unsupported, converting... ]

        - Configure can now add new terminal definations to exiting 
          elm.terminalinfo from doc/terminal.info

        - Delay stat()ing directory entries on file browser to
          situation where flags are needed.
        - Directory browser was using / on end of directory names
          and therefore did not found names from listing
          - effectely local-fast-lookup = OFF was not working.

        Following character sets are redefined on 
        lib/precompiled.c sets:
        
                ISO-2022-KR     type=iso2022
                ISO-2022-KR     type=iso2022
                ISO646-JP       type=iso646
                ISO-2022-JP-2   type=iso2022
                ISO-2022-CN     type=iso2022            (1)
                ISO-2022-CN-EXT type=iso2022            (1) (2)
                                                
                (1) NOTE: Does not use single shifts!
                (2) NOTE: ISO-2022-CN-EXT includes several sets
                          which final designation byte is unknown
                          GB 12345, GB 7589, GB 13131, GB 7590,
                          GB 13132
        
        Note that charset type=iso2022 requires that mapping for unicode
        is available. Otherwise it does not know which characters
        are printable. On builtin defination there is only mapping
        for US-ASCII part and ISO-8859-1 upper part (on ISO-2022-JP-2)
        defined. See chapter "ISO2022 maps information" for examples
        for other mappings.
        
        WARNING: There is no support for input of these scripts.
                 Seems that locales use EUC charsets. These are not
                 supported.

        New elmrc options:
                convert-utf-header


        New tools:
                elmstringconvert

        New files:
                lib/write_hdr.c
                lib/cs_iso2022.c
                lib/iso2022_map.c
                hdrs/cs_terminal.h
                lib/stringtok.c
                utils/elmstringconvert.c
                doc/elmstringconvert.1
                ConfTool/GenTerminalinfo

        Removed files:
                src/id_phrase.c

Changes of Elm2.4ME+ PL98c (25) compared with Elm2.4ME+ PL98b (25)
------------------------------------------------------------------

        [ This is out of branch patch. ]

        - copy_message_2() lost header name when folding happeded
          immediately after header name (that specially was visible
          on copy of sent message when phrase was long.)

        - Elm ME+ failed to read IMAP mail when Return-Path included
          (unquoted) space  on address.
         Problem noted by: graham@cplane.com

        - fastmail did not read standard input when -
          was specified as filename.

        - optionally_enter() was using wrong charset on
          some siutation (ie. 'keyboard charset' instead of
          display charset) -- this specially effects -Dutf-8 option.

        - Do not split UTF-8 to mime encoded words on middle of
          multi-byte UTF-8 character

Changes of Elm2.4ME+ PL98b (25) compared with Elm2.4ME+ PL98a (25)
------------------------------------------------------------------

        [ This is out of branch patch. ]

        - Our non-standard headers was ignored:
          * X-ELM-OSV: hdr-charset=xxxx    was ignored
          * Content-Length: xxxx           was ignored

Changes of Elm2.4ME+ PL98a (25) compared with Elm2.4ME+ PL98 (25)
----------------------------------------------------------------

        [ This is out of branch patch. ]
 
       - "since a number of releases frm doesn't detect status
          new correctly for me (Linux 2.4.18, elm2.4.ME+.98)."
        Problem noted by: Jan Willamowius <jan@willamowius.de>
       > Changed  utils/from.c logic same than on src/newbox.c       

Changes of Elm2.4ME+ PL98 (25) compared with Elm2.4ME+ PL97 (25)
----------------------------------------------------------------

        Undo Elm2.4ME+ PL97a (25), Elm2.4ME+ PL97b (25)
        Elm2.4ME+ PL97c (25) and Elm2.4ME+ PL97d (25)
        patches before applying this patch.             

        WARNING: Quite lot of changes on MIME handling. So 
                 please report new bugs which you observe...

        * "What would be practical is that elmrc would set the usual
           address, but the user could override it by setting a user
           defined header when ie. posting to a mailing list."
         Requested by: Jernej Zajc <nejc@rubisco.com>
        - now .elm/mailheaders is read before mail is composed!
          .mailheaders now supports only X- headers and
          From: -header. X- header is shown on header
          editing screen as user defined header (and if you
          change it, it replaces headers given on .elm/mailheaders.)
        - If user gives From: -header on .mailheaders (or on
          header editing screen), Elm does not add it's own
          From: -header
        - 8-bit X- headers on .elm/mailheaders is now mime encoded.
        - Mime encoding on .elm/mailheaders is also regognized
        - If nohdrencoding is set on elmrc, MIME encoding is not
          done and not regognized on .elm/mailheaders. Also
            X-ELM-OSV: no-hdr-encoding=1
          is added to mail.
        - Added global elm.rc option add-sender. If set (default),
          Elm adds Sender: -header if user specifies From: -header.
          If there is more than one address on From: -header,
          Sender: -header is always added.
        - With 'f' command it is possible to change or set From:
          header on header editing screen. However header editing
          screen shows From -header only when it is set.
        
        - Moved some routines from src/id_phrase.c to lib/id_phrase.c 
        - Moved some routines from src/addr_util.c to lib/outheaders.c

        - binary flag was incorrectly set true (result on change
          on Elm2.4ME+ PL97 (25)). That caused that EOLN mail headers
          was always encoded with  CRLF (and not LF) when
          mail was saved (or C)opied.)

        - Truncate long folder names on Reading ... message so
          that there is space left for "skipped" text.
          ( Small potential fix for "Reading in ..., message: xxx" 
            counter. )

        - Configure now ask option for position independent code.
          Decision is half automatic.

        - Added elmrc variable type rc_DT_PATH.
        - Added elmrc variable metamail-mailcaps. List of mailcaps 
          for metamail. List may be space or ':' seperated. Separate 
          values may be quoted. When metamail is called values are 
          put to variable $MAILCAPS (as ':' -separated list).
          metamail-mailcaps may include variables (for example 
          $MAILCAPS). Value of variables is splitted only from ':' 
          (quotes and spaces are not treated specially.)

        - binary flag was incorrectly set true (result on change
          on Elm2.4ME+ PL97 (25)). That caused that EOLN mail headers
          was always encoded with  CRLF (ant not LF) when
          mail was saved (or C)opied.)
 
        - Truncate long folder names on Reading ... message so
          that there is space left for "skipped" text.                  

        - "I cannot get PL97 to compile on OpenBSD. "
          "service_list.o: Undefined symbol `_get_option_type' 
           referenced from text segment"
         Reported by: Jernej Zajc <nejc@rubisco.com>
        - "the new release of elm2.4.ME+.97 has a
           compilation problem on AIX 4.3.3"
          "ld: 0711-317 ERROR: Undefined symbol: .get_option_type"
         Reported by: Noam G. Nudelman <noam@mail.biu.ac.il>
        > Make sure that get_option_type is inside of #ifdef USE_DLOPEN

        - Wrong answer to question "Any additional libraries"      
          causes failure on "Trying locate terminfo routines"
          part.
         Problem noted by: "Noam G. Nudelman" <noam@mail.biu.ac.il>
        > Detect failure with libraries earlier.

        - Wrong default was used for question "Both <term.h> and 
          <curses.h>  found. Which one I should include for prototypes
          of tgetent() like functions when using $termlib." on
          IRIX 64.
         "To determine 'uname_os' you use 'uname -s' and on my host,
          the value returned is 'IRIX64' and not 'IRIX'.  Accordingly,
          I get the default, [t] !!!!"
         Problem noted by: "Noam G. Nudelman" <noam@mail.biu.ac.il>
        > Use IRIX* instead of IRIX on case switch

        - In IRIX Configure pics non-existing or unworking
          additional libraries.
         Problem noted by: "Noam G. Nudelman" <noam@mail.biu.ac.il>
        > Use compilation on test -- hopefully this does
          not break on some OSes because interdepency of libs.

        - RPATH was not set for answer, elmalias, fastmail, frm,
          newalias, newmail, readmsg, prlong, elmcharset, elmrc-write,
          elmterminal, elmunidata. (Normally that that did not
          caused problem because to soname was compiled full path
          of shared library.)
         Problem noted by: "Noam G. Nudelman" <noam@mail.biu.ac.il>

        - "As indicated in my mail from the 11th of February, when 
           both <curses.h> and <term.h> are included for 
           "prototypes of tgetent() like functions when using
           -ltermlib", I receive an error.  When selecting option 'c' 
          (Include only <curses.h>), it compiles without error."
         Reported by: "Noam G. Nudelman" <noam@mail.biu.ac.il>
        > Changed default from b)oth to c)urses.h only for
          IRIX.

        - Allow "none"  as value of roff

        - Possible shared library generation fix for
          OpenBSD. This is not tested, so quite probably it 
          does not work.
         Problem noted by:  Jernej Zajc <nejc@rubisco.com> 

        - If there libintl.so (from GNU gettext) installed 
          to /usr/local/lib on IRIX 6.5, Elm tries link
          agaist that. That causes problems.
        Problem noted by: "Noam G. Nudelman" <noam@mail.biu.ac.il>
        > Set libswanted list to empty for IRIX 6.x
          (Configure later adds -lc_s to list but hopefully that
           does not matter.)

        - "Oh, yeah, the install program ask about if a call to the 'GNU' 
           ispell spelling checker should be added, but the ispell program 
           is not GNU, even though they do make it available for FTP as well 
           as other sites."
         Problem noted by: Brian Waters <jbw@InnovaSystems.com>

        - "Ah.. ok.. great,  would it make any sense to make the 
           p)rint be the same as P)rint for now as a build option.
           The users here are used to just hitting 'p', and almost 
           always do not mean to print the mime as text. "
         Requested by: Brian Waters <jbw@InnovaSystems.com>
        > Disable p)rint command (try P)rint text instead.)
          p)rint command does something like "readmsg | {print-command}".
          readmsg is quite broken.

        - readmsg didn't handle folders with CRLF as EOLN
          (Notice that readmsg is still several ways broken.)
         Problem noted by: Konstantinides, Konstantinos <k.konstantinides@cirrus.com>

        - Added lib/mediatype.c 
        - Support for message/X-delivery-status-* type dropped
          (use message/delivery-status instead.)

        - Added melib/mparser.c, melib/mpar_rfc822.c,
          melib/mpar_multipart.c, melib/mpar_leaf.c,
          hdrs/mpar_imp.h      

        - "Parsing MIME structure..." is now printed for all mail
          -- not only for multipart (and message/rfc822) mails.
        - Attachment Menu now show structure of mail when
          viewing mail -- It's title is now: MIME structure Menu        

        - When sending mail do not use 7bit/8bit to determine is
          type text orienteed
        - Added warning "7bit/8bit is allowed only for line orienteed types -- 
          check encoding" to attachment modifying

        New elmrc options:
                add-sender
                metamail-mailcaps

        New files:
                lib/outheaders.c
                lib/id_phrase.c
                lib/mediatype.c
                melib/mparser.c
                melib/mpar_rfc822.c
                melib/mpar_multipart.c
                melib/mpar_leaf.c
                hdrs/mpar_imp.h

Changes of Elm2.4ME+ PL97d (25) compared with Elm2.4ME+ PL97c (25)
------------------------------------------------------------------

        [ This is out of branch patch. ]


        - If there libintl.so (from GNU gettext) installed 
          to /usr/local/lib on IRIX 6.5, Elm tries link
          agaist that. That causes problems.
        Problem noted by: "Noam G. Nudelman" <noam@mail.biu.ac.il>
        > Set libswanted list to empty for IRIX 6.x
          (Configure later adds -lc_s to list but hopefully that
           does not matter.)

        - "Oh, yeah, the install program ask about if a call to the 'GNU' 
           ispell spelling checker should be added, but the ispell program 
           is not GNU, even though they do make it available for FTP as well 
           as other sites."
         Problem noted by: Brian Waters <jbw@InnovaSystems.com>

        - "Ah.. ok.. great,  would it make any sense to make the 
           p)rint be the same as P)rint for now as a build option.
           The users here are used to just hitting 'p', and almost 
           always do not mean to print the mime as text. "
         Requested by: Brian Waters <jbw@InnovaSystems.com>
        > Disable p)rint command (try P)rint text instead.)
          p)rint command does something like "readmsg | {print-command}".
          readmsg is quite broken.

        - readmsg didn't handle folders with CRLF as EOLN
          (Notice that readmsg is still several ways broken.)
         Problem noted by: Konstantinides, Konstantinos <k.konstantinides@cirrus.com>
                  
Changes of Elm2.4ME+ PL97c (25) compared with Elm2.4ME+ PL97b (25)
----------------------------------------------------------------

        [ This is out of branch patch. ]

        - Wrong answer to question "Any additional libraries"      
          causes failure on "Trying locate terminfo routines"
          part.
         Problem noted by: "Noam G. Nudelman" <noam@mail.biu.ac.il>
        > Detect failure with libraries earlier.

        - Wrong default was used for question "Both <term.h> and 
          <curses.h>  found. Which one I should include for prototypes
          of tgetent() like functions when using $termlib." on
          IRIX 64.
         "To determine 'uname_os' you use 'uname -s' and on my host,
          the value returned is 'IRIX64' and not 'IRIX'.  Accordingly,
          I get the default, [t] !!!!"
         Problem noted by: "Noam G. Nudelman" <noam@mail.biu.ac.il>
        > Use IRIX* instead of IRIX on case switch

        - In IRIX Configure pics non-existing or unworking
          additional libraries.
         Problem noted by: "Noam G. Nudelman" <noam@mail.biu.ac.il>
        > Use compilation on test -- hopefully this does
          not break on some OSes because interdepency of libs.

        - RPATH was not set for answer, elmalias, fastmail, frm,
          newalias, newmail, readmsg, prlong, elmcharset, elmrc-write,
          elmterminal, elmunidata. (Normally that that did not
          caused problem because to soname was compiled full path
          of shared library.)
         Problem noted by: "Noam G. Nudelman" <noam@mail.biu.ac.il>

        - "As indicated in my mail from the 11th of February, when 
           both <curses.h> and <term.h> are included for 
           "prototypes of tgetent() like functions when using
           -ltermlib", I receive an error.  When selecting option 'c' 
          (Include only <curses.h>), it compiles without error."
         Reported by: "Noam G. Nudelman" <noam@mail.biu.ac.il>
        > Changed default from b)oth to c)urses.h only for
          IRIX.

        - Allow "none"  as value of roff

        - Possible shared library generation fix for
          OpenBSD. This is not tested, so quite probably it 
          does not work.
         Problem noted by:  Jernej Zajc <nejc@rubisco.com> 
     
Changes of Elm2.4ME+ PL97b (25) compared with Elm2.4ME+ PL97a (25)
----------------------------------------------------------------
 
        [ This is out of branch patch. ]
 
        - binary flag was incorrectly set true (result on change
          on Elm2.4ME+ PL97 (25)). That caused that EOLN mail headers
          was always encoded with  CRLF (ant not LF) when
          mail was saved (or C)opied.)
 
        - Truncate long folder names on Reading ... message so
          that there is space left for "skipped" text.                  

Changes of Elm2.4ME+ PL97a (25) compared with Elm2.4ME+ PL97 (25)
----------------------------------------------------------------

        - Fix state_printf panic "Embedded newlines are not supported"
          on case when there is on ~/.elm/elmheaders
          `backticked` command which produces output which does not
          fit to 80 characters.

        - "I cannot get PL97 to compile on OpenBSD. "
          "service_list.o: Undefined symbol `_get_option_type' 
           referenced from text segment"
         Reported by: Jernej Zajc <nejc@rubisco.com>
        - "the new release of elm2.4.ME+.97 has a
           compilation problem on AIX 4.3.3"
          "ld: 0711-317 ERROR: Undefined symbol: .get_option_type"
         Reported by: Noam G. Nudelman <noam@mail.biu.ac.il>
        > Make sure that get_option_type is inside of #ifdef USE_DLOPEN

        - Error on X-ELM-OSV: header output.

Changes of Elm2.4ME+ PL97 (25) compared with Elm2.4ME+ PL96 (25)
----------------------------------------------------------------

        Undo Elm2.4ME+ PL96a (25) and Elm2.4ME+ PL96b (25)
        patches before applying this patch.

        - If several entries on .elm/mail.services or on
          elm.mailservices matches for connection request, merge
          them (before use).

          If conflicting connection types are specified, then only
          later entry on file is used. For example on

                cyrus   IMAP    port=143
                cyrus   POP

          only POP entry is used (ie. connection to server "cyrus"
          is done with POP).

        - Split show_status() to two routine:
          show_message_status() and show_alias_status();
        - Added prepare_message_access() routine
        - Added elmrc option imap-max-download-size (default 4 KB).
          IMAP messages bigger than this are not downloaded when
          mailbox is read. Value -1 for imap-max-download-size
          causes that all messages are downloaded. 
        - Added elmrc option pop-max-download-size (default 4 KB).
          POP messages bigger than this are not downloaded when
          mailbox is read. This requires that POP server supports
          TOP command. Value -1 for pop-max-download-size
          causes that all messages are downloaded. 
        - ! character as second letter on message status indicates 
          that message is not downloaded.
        - Note that for readmsg only tagged messages and current 
          message is downloaded before starting program.

        - Test whatever make sets $(MAKE)

        - If elm's shared library directory is on /etc/ld.so.conf
          file ldconfig prints warnings like

          "ldconfig: warning: can't link /usr/local/elmtest/lib//usr/local/elmtest/lib/libelmme-iconv.so.1.0.96x.Test to libelmme-iconv.so.1.0.96x.Test (No such file or directory)"
        > Now Configure prints following kind warning on that situation:

        "WARNING: Directory /usr/local/elmtest/lib is listed on file /etc/ld.so.conf
                  Linux ldconfig gives errors when soname include pathnames.
         Select
              c) Change elm2.4me+ shared library location
              o) Omit pathname from soname
              i) ignore ldconfig warnings and include path on soname
         Your selection? [i]"

        - Install (link) manual page for nfrm

        - Set default attachment type to application/octet-stream instead of 
          text/plain, if file looks like binary.
         Requested by: Volker Englisch <envo01@stupsi.org>
        > Move adding of charset to same function (attach_info).
        - m)odify command on attachment menu allowed to set
          content-transfer-encoding to bad values.

        - Metamail can not cope with CRLF
         Problem noted by: Konstantinos Konstantinides <kk@corp.cirrus.com>

        - When using b)ounce command, mailer = submission 
          did not issued EHLO/HELO command to server.

        - Do not use state_printf to print prefix on src/fileio.c
          (instead use state_puts).
        - C)opy command failed copy Subject: header which
          included 8-bit characters when display charset was UTF-8
        > Also use state_nlputs (and not state_printf) to print
          end of header so that conversions via display charset
          does not occur...
        - Some places use state_nlputs so that potential LF -> CRLF 
          conversions occur

        - Fix typo on "elm -vv" output when SYSCALL_LOCKING is
          not defined: "in" => "is"

        - Added elmrc variable default-mime-text-charset,
          which specifies default charset for text/plain if
          charset parameter is not specified. Default is 
          "US-ASCII".
         Prompted by: Tommi Nieminen <Tommi.Nieminen@sonera.com>        

        - "I wonder is there a command like <TAB> in mutt that 
           would make current next unread message? "n" only changes 
           to next message, regardless whether it has been read or 
           not. If I have missed it and is indeed not available, 
           would you consider adding such a feature? It would really 
           have been awfully nice."
          Prompted by: Jernej Zajc <nejc@rubisco.com>
        > Added Ctrl-N as next unread message

        - CHARTYPE_Sk was incorrect on hdrs/unidata.h (should be
          0x4003, was 0x3003). Regeneration of 
          {libdir}/elm.map.bin/unidata.bin is required. This caused
          (for example) that ^ was not treated as valid character.

        - If Configure does not figure how to resolve mail program (ie. main) 
          symbols from dynamic library, do not compile libelmme-smtp.so

        New elmrc options:
                imap-max-download-size  
                pop-max-download-size
                default-mime-text-charset

Changes of Elm2.4ME+ PL96b (25) compared with Elm2.4ME+ PL96a (25)
------------------------------------------------------------------

        [ This is out of branch patch. ]

        - Test whatever make sets $(MAKE)

        - If elm's shared library directory is on /etc/ld.so.conf
          file ldconfig prints warnings like

          "ldconfig: warning: can't link /usr/local/elmtest/lib//usr/local/elmtest/lib/libelmme-iconv.so.1.0.96x.Test to libelmme-iconv.so.1.0.96x.Test (No such file or directory)"
        > Now Configure print following kind warning on that situation:

        "WARNING: Directory /usr/local/elmtest/lib is listed on file /etc/ld.so.conf
                  Linux ldconfig gives errors when soname include pathnames.
         Select
              c) Change elm2.4me+ shared library location
              o) Omit pathname from soname
              i) ignore ldconfig warnings and include path on soname
         Your selection? [i]"

        - Install (link) manual page for nfrm

        - Set default attachment type to application/octet-stream instead of 
          text/plain, if file looks like binary.
         Requested by: Volker Englisch <envo01@stupsi.org>
        > Move adding of charset to same function (attach_info).
        - m)odify command on attachment menu allowed to set
          content-transfer-encoding to bad values.

Changes of Elm2.4ME+ PL96a (25) compared with Elm2.4ME+ PL96 (25)
-----------------------------------------------------------------

        [ This is out of branch patch. ]

        - Metamail can not cope with CRLF
         Problem noted by: Konstantinos Konstantinides <kk@corp.cirrus.com>

        - When using b)ounce command, mailer = submission 
          did not issued EHLO/HELO command to server.

        - Do not use state_printf to print prefix on src/fileio.c
          (instead use state_puts).
        - C)opy command failed copy Subject: header which
          included 8-bit characters when display charset was UTF-8
        > Also use state_nlputs (and not state_printf) to print
          end of header so that conversions via display charset
          does not occur...
        - Some places use state_nlputs so that potential LF -> CRLF 
          conversions occur

        - Fix typo on "elm -vv" output when SYSCALL_LOCKING is
          not defined: "in" => "is"

Changes of Elm2.4ME+ PL96 (25) compared with Elm2.4ME+ PL95 (25)
----------------------------------------------------------------

        You need create directories
                charset/MAPPINGS
                charset/MAPPINGS/ISO8859
                shared_libs/smtp
        befre applying this patch.

        Undo Elm2.4ME+ PL95a (25), Elm2.4ME+ PL95b (25)
        and Elm2.4ME+ PL95c (25) patches before applying this patch.

        - Do not use commands "mail" or "mailx" as mailer.
        - Allow specify "none" as mailer on configuration time
          (that requires that mailer is given on global elm.rc
           on run time.)

        - Configure failed to locate terminfo routines (ie. termlib) 
          on Linux Mandrake 7.2. Test rewritten.

        - Added -b (batchmode) option to Configure 
          -- avoids all prompting of user

        - "Using PL95 with the two patches you send me, I encountered the 
           following problem when searching for a string in a mail message:

           Search: Noam

           Couldn't malloc 0 bytes!!"
          Reported by: Noam G. Nudelman <noam@mail.biu.ac.il>
        > Avoid mallocing 0 legth buffer on find_pattern_from_string()

        - Some documentation fixes.
        - Remove d_savegrpmboxid variable from Configure 
          (is is not set and is not used)

        - "Following please find the error when trying to 
           compile elm2.4.ME+.95 on AIX 4.3.3 (maintenance level 09):
           <...>
           ld: 0711-317 ERROR: Undefined symbol: .cs_auto_charset"
          Reported by: Noam G. Nudelman <noam@mail.biu.ac.il>
        > Protect call of cs_auto_charset() on lib/charset.c
          with #ifdef USE_DLOPEN

        - Elm dies with Out of memory -messae on AIX.
          Reported by: Noam G. Nudelman <noam@mail.biu.ac.il>
        > Avoid mallocing 0 length string on convert_string()

        - P)rint Text command did not correctly print non-ascii
          header data.
        > Reimplement fix on Elm2.4ME+ PL95 (25) /
                             Elm2.4ME+ PL94a (25): 
          When sending mail, saving copy of mail to folder
          failed when
                displaycharset = UTF-8
                text-charset = ISO-8859-1
        > Also set buffer.filter for state_write_header()
          on copy_message_2() ( similar than on metapager() )

        > Do conversion on state_printf if buffers
          displayed charset (displaycharset) is different than 
          (apparent) real one

        - Detect on Configure if nl_langinfo(CODESET) is
          supported
        - By default Configure does not generate locale charset
          mappings to elm.mimecharsets file if nl_langinfo(CODESET) is
          supported. That is because value given by nl_langinfo(CODESET)
          is more likely to be correct than guess given by Configure
          (specially if user does not manually fix these guesses)
        - Generating of elm.mimecharsets is moved to end of Configure
        - Option -N to Configure tells that it can generate elm.mimecharsets
          from scratch

        - Added builtin mapping for ISO-8859-15 character set.
        - Added value ISO-8859-15 for map parameter for type ascii-set.
        - Added ISO-8859-16 to builting character set list of ElmME+
        - Added ISO-8859-16 to ConfTool/GenCharmap 
        - Added 8859-15.TXT and 8859-16.TXT to  ConfTool/mapfiles
        - ConfTool/GenCharmap generates now map=$file definations
          also files which are on charset/MAPPINGS/ISO8859 directory
        - elmcharset takes -S option which specifies source directory
          for map files (so they can be copeid to elm.map.txt directory
          -- actually directory given on map-text-dir elm.rc option.)
        - Added -S ../charset/MAPPINGS/ISO8859 option to elmcharset
          invocation so misisng map files are copied.

        - Added codeset and MIBenum fields to struct charcode_info
        - Added chararacter sets from http://www.iana.org/assignments/character-sets
          to precompiled_sets[] on lib/charset.c. Most of them are added
          as cs_unknown indicating that Elm ME+ knows nothing about them.
        - Moved precompiled_sets[] to lib/precompiled_sets.c
        - elmcharset -M lists character sets on MIBenum order

        - "When you quit or when you change folders, there are usually
           questions like "Move read messages to "received" folder? (y/n)". Pressing y
           or n would generate "Yes" or "No" strings at the "answer" spot. Since there
           is usually some delay after that you may want to press some key again
           expecting those Yes/No strings and causing Elm behave unexpectedly (you
           would expect that Yes/No show up and then do what you asked it to)."
         Reported by: Peter <pehasys@PeHaSys.dnsalias.net>
        > Added FlushBuffer() to want_to()

        - Now "make installs" installs also elm.terminalinfo file to
          elm's library directory. During Configure file goes to bin/elm.terminalinfo.
          As on Elm2.4ME+ PL79 (25) file elm.terminalinfo specifes instructions
          to Elm ME+ how to change charset of terminal. For more information
          see chapter "Additional terminal information".
        > For now just file doc/terminal.info is used (without processing).
          That may cause some error messages because of unkown
          character sets, but you should abel to ignore them.
        > Installation of elm.terminalinfo means that Elm ME+ will
          try change terminal character set during operation. If that
          does bad thing to you, please check correctness of elm.terminalinfo
          file.
        - To really take advantege of that add following to global elm.rc
                allow-charset-switching = ON

        - connection for mailbox server failed when thre was several IP addresses 
          for server.
        - Debugging (of POP) caused crash.

        - When IMAP server returns mail where last line is incomplete,
          Elm ME+ goes to infinite loop.
         Problem noted by: Werner Guenther <Werner.Guenther@urz.uni-heidelberg.de>
        > Changed *_got_*_line() routines. Also made similar change on POP code 
          (although probably this can not occur on POP code.)

        - Added support to specify conditions (for environment variables)
          on .elm/terminal.info or on elm.terminalinfo. That allows lines like

                linux   PRIVATE ISO-8859-15     [ $SYSFONTACM="iso15" ] 1/11 2/8 4/11 0/15

          on terminal.info (that line does not actually work because $SYSFONTACM
          is not exported.)
        > Added these to doc/terminal.info so they are also copied to to
          elm.terminalinfo

        - Output routine on panic() was inccorect
        - ~/elm/mail.services was not overriding global elm.mailservices
        - Moved kludge_addr() from src/addr_util.c to lib/mailer.c

        - Added shared library libelmme-smtp.so (shared_libs/smtp/)
          which implements message submission protocol (RFC 2476).
          To use that library add smtp to use-library -elmrc variable, 
          for example
                use-library = iconv
          And specify mailer type with mailer -elmrc variable,
          for example
                mailer = submission

         See also: shared_libs/smtp/README.ME+

        New files:
                charset/MAPPINGS/ISO8859/8859-2.TXT
                charset/MAPPINGS/ISO8859/8859-3.TXT
                charset/MAPPINGS/ISO8859/8859-4.TXT
                charset/MAPPINGS/ISO8859/8859-5.TXT
                charset/MAPPINGS/ISO8859/8859-6.TXT 
                charset/MAPPINGS/ISO8859/8859-7.TXT 
                charset/MAPPINGS/ISO8859/8859-8.TXT 
                charset/MAPPINGS/ISO8859/8859-9.TXT 
                charset/MAPPINGS/ISO8859/8859-10.TXT
                charset/MAPPINGS/ISO8859/8859-13.TXT
                charset/MAPPINGS/ISO8859/8859-14.TXT
                charset/MAPPINGS/ISO8859/8859-16.TXT 
                ConfTool/validcharset.c
                ConfTool/Makefile
                lib/precompiled_sets.c
                shared_libs/smtp/Makefile.SH
                shared_libs/smtp/config
                shared_libs/smtp/elmsmtp.h
                shared_libs/smtp/smtp.c
                shared_libs/smtp/README.ME+

Changes of Elm2.4ME+ PL95c (25) compared with Elm2.4ME+ PL95b (25)
------------------------------------------------------------------

        - Do not use commands "mail" or "mailx" as mailer.
        - Allow specify "none" as mailer on configuration time
          (that requires that mailer is given on global elm.rc
           on run time.)

        - Configure failed to locate terminfo routines (ie. termlib) 
          on Linux Mandrake 7.2. Test rewritten.

        - Added -b (batchmode) option to Configure 
          -- avoids all prompting of user

Changes of Elm2.4ME+ PL95b (25) compared with Elm2.4ME+ PL95a (25)
------------------------------------------------------------------

        [ This is out of branch patch. ]

        - "Using PL95 with the two patches you send me, I encountered the 
           following problem when searching for a string in a mail message:

           Search: Noam

           Couldn't malloc 0 bytes!!"
          Reported by: Noam G. Nudelman <noam@mail.biu.ac.il>
        > Avoid mallocing 0 legth buffer on find_pattern_from_string()

        - Some documentation fixes.
        - Remove d_savegrpmboxid variable from Configure 
          (is is not set and is not used)

Changes of Elm2.4ME+ PL95a (25) compared with Elm2.4ME+ PL95 (25)
-----------------------------------------------------------------

        [ This is out of branch patch. ]

        - "Following please find the error when trying to 
           compile elm2.4.ME+.95 on AIX 4.3.3 (maintenance level 09):
           <...>
           ld: 0711-317 ERROR: Undefined symbol: .cs_auto_charset"
          Reported by: Noam G. Nudelman <noam@mail.biu.ac.il>
        > Protect call of cs_auto_charset() on lib/charset.c
          with #ifdef USE_DLOPEN

        - Elm dies with Out of memory -messae on AIX.
          Reported by: Noam G. Nudelman <noam@mail.biu.ac.il>
        > Avoid mallocing 0 length string on convert_string()

        - P)rint Text command did not correctly print non-ascii
          header data.
        > Reimplement fix on Elm2.4ME+ PL95 (25) /
                             Elm2.4ME+ PL94a (25): 
          When sending mail, saving copy of mail to folder
          failed when
                displaycharset = UTF-8
                text-charset = ISO-8859-1
        > Also set buffer.filter for state_write_header()
          on copy_message_2() ( similar than on metapager() )

        > Do conversion on state_printf if buffers
          displayed charset (displaycharset) is different than 
          (apparent) real one

Changes of Elm2.4ME+ PL95 (25) compared with Elm2.4ME+ PL94 (25)
----------------------------------------------------------------

        - When sending mail, saving copy of mail to folder
          failed when
                displaycharset = UTF-8
                text-charset = ISO-8859-1

        - Segmentation fault on probe_imap_capa_lib()
          caused by unloading of libelmme-tls.so.
        - Segmentation fault on probe_pop_capa_lib()
          caused by unloading of libelmme-tls.so.

        - Guess multipart boundary if boundary parameter is
          missing.

        - Set status_chgd = TRUE on undelete_msg() and
          on unread_msg() so that flags are updated
          on exit. Specially on IMAP.
        - Also set status_chgd = TRUE tag_message()
          so that \Flagged on IMAP is updated on exit. 
          (Tag flag '+' is only saved on IMAP so perhaps
           '+' should not be mapped to IMAP's \Flagged ?)
        - Remove IMAP \flags from imap_flags bitmask which 
          do not have corresponding Elm status flags set or 
          unset so that 'U' (unread) and 't' (tag / untag) 
          commands work correctly. 
        > Side effect is that \flags changes made by other 
          IMAP clients (on same time) are undone.

        - If there was set \Deleted on IMAP beforehand, 
          and user answered 'n' delete messages
          questions, that message was still deleted on
          'mailbox unchanged."
        > Do not set IMAP_can_CLOSE on mbx_sessionlock_imap()
          (set only on mbx_end_keep_imap()) -- this can effect
          connection caching.

        - Cyrus imapd 2.0.14 fails [*] to parse command
               nnnn STORE xxx FLAGS () 
          Example from log (got via -X log option):

          3600 [9] 21:53:20 >>> [len   27]  
                "A00928 STORE 306 FLAGS ()" 0D 0A
          3600 [9] 21:53:20 <<< [len   48]  
                "A00928 BAD Invalid flag name  in Store command" 0D 0A
        > Therefore if flags was empty, calculate negative
          delta (if that is empty do not issue STORE command.)
        [*] That is Bug #941, see
              http://bugzilla.andrew.cmu.edu/show_bug.cgi?id=941
            fixed on 31 Aug 2001

        - remove unused charset_ok() from melib/mime.c
        - Split MIME_name_to_charset's create flag to bit mask:
           CHARSET_create and CHARSET_noautodef
        > That should allow using
            iconv:
            auto-charset = ON
          on global elm.rc without that it conflicts with
          existing alias definitions on global elm.mimecharsets file.

        - Fix generation of nls/gencat and remove dependency from
          libutil.a (aka libelme-base)

        - Elm 2.4 treated messages without status headers
          on folders as Read; From Elm 2.4 PL24ME8a to
          Elm2.4ME+ PL66 (25) treated messages without status 
          headers as New; From Elm2.4ME+ PL67 (25) messages
          without status headers are treated as Old.
        * "As there are clearly different opinions on how to 
           treat such messages in folders, what about having 
           a configuration option (and/or elmrc option) to 
           specify this?  For example:

           In folders, should messages without Status header
           be marked (O)ld, (N)ew, or (R)ead?

           The former would then correspond to Elm2.4ME+ PL94, 
           the second to Elm2.4ME+ PL66 (and what I prefer), 
           the latter to Elm 2.4."
         Suggested by: Dirk Craeynest <Dirk.Craeynest@cs.kuleuven.ac.be>
        > Only elmrc option default-folder-status implemented.

        - Add missing declaration of process_expiration_date()
          hdrs/elmlib.h 
        - lib/read_rc.c needs include unidata.h so that
          default_unidata()) is declared
        - shared_libs/tls/elmtls.h needs include <openssl/rand.h>
          RAND_file_name() and so on is declared
        - Add missing declaration of str_opt_nam() to hdrs/me.h

        - Moved syscall.c from melib/ to lib/
        - Moved state.c from melib/ to lib/
        - Changed WS_magic
        - Added lib/MAGIC which lists magic defines.
          That file is checked during compilation.

        - Mailer specific code moved to lib/mailer.c
        - src/mailmsg2.c and src/remail.c calls now 
          lib/mailer.c routines
        - utils/fastmail.c calls now lib/mailer.c
          routines (WARNING: fastmail is currently 
          broken in many ways)
        - Added new elmrc option mailer which specifies
          type and path and other properties of mailer
          (during compile time only default is given)
          Option "mailer" is available only on global elm.rc        

          Possible mailer types are: 
                unknown, sendmail, submitmail, execmail
                (NOTE: only type sendmail tested)

          Macros are changed in the following way:

  Configure     old macro      parameter for             new default
  variable                     mailer option             macro
  ============= ============== ========================= =====================
  $mailer       mailer         path=                     DEFAULT_MAILER_PATH
  $sendmail     sendmail                                 SENDMAIL_MAILER_PATH
  $submit       submitmail                               SUBMITMAIL_MAILER_PATH
  $execmail     execmail                                 EXECMAIL_MAILER_PATH
  $d_noaddfrom  DONT_ADD_FROM  add-from="dont"           DEFAULT_DONT_ADD_FROM
  $d_usedomain  USE_DOMAIN     use-domain="yes"          DEFAULT_USE_DOMAIN
  $d_8bitmime   USE_8BITMIME   supported-bodytype="8bit" DEFAULT_8BITMIME
  $d_binarymime USE_BINARYMIME supported-bodytype="binary" DEFAULT_BINARYMIME
  $d_dsn        USE_DSN        supports-dsn = "yes"      DEFAULT_DSN

        See chapter "Mailer definition" below in this file.

        - sendmail -bv address can be used for elm's
          internal verification. However that is not activated by default
          (advantages from this is quite little.) To enable this use
        mailer = sendmail; verify=yes

        - Changed shared library interface:
                provides_shared_RCT_f
                provides_shared_SEOT_f
                provides_shared_ST_f
                provides_shared_FT_f
                provides_shared_CT_f

        - Removed struct IMAP_CON from inside of
          struct connection_cache (on union). Instead 
          there is pointer to struct IMAP_CON (mbx_imp.h).
          Moved struct IMAP_CON from mbx_imp.h to imap.c

        - Added utility (elmrc-write) to write (or create) 
          global elm.rc file (utility can be used also to 
          write user's .elm/rlmrc file).
        - Global elm.rc is now rewritten during installation

        - Added elmrc option "auto-attachment", possible values
          are: "none", "application" (default) and "non-text".
          This affect how mime-parts, which have not Content-Disposition
          header, are treated. 
          * If auto-attachment is none, missing Content-Disposition is 
            treated as "Content-Disposition: inline". 
            That is what MIME requires. 
          * If auto-attachment is application, type is subtype of
            application and Elm can not handle type without calling 
            of metamail, missing Content-Disposition 
            is treated as "Content-Disposition: attachment".
          * If auto-attachment is non-text, type is not subtype
            of text or multipart, type is not message/rfc822
            and Elm can not handle type without calling
            of metamail, missing Content-Disposition
            is treated as "Content-Disposition: attachment". 
          * However is Content-Disposition is missing on top level
            that is treated as "Content-Disposition: inline".
          * If Elm can handle type, missing Content-Disposition
            is treated as "Content-Disposition: inline".
        - That changes Elm's behaviour so that in some situations 
          when Elm normally calls metamail, it does not but instead 
          the bodypart of the message is treated as an attachment. 
          If you have have some type of mailcap and therefore you 
          want metamail handle these types, set 
          auto-attachment = none
        * NOTE: On many situations similar treatment than
                with option
                    auto-attachment = non-text
                can reached with combination of options
                    auto-attachment = none
                    pagemultipart = on
         In other words there is situations where setting of option
         pagemultipart is sufficient (without new treatment which is
         implemented with option auto-attachment by default.)

        New elmrc options:
                auto-attachment
                default-folder-status
                mailer

        New tools:
                elmrc-write

        New files:
                lib/mailer.c
                lib/MAGIC
                hdrs/mailer_imp.h
                utils/elmrc-write.c
                doc/elmrc-write.1
 
        Moved files:
                melib/syscall.c => lib/syscall.c
                melib/state.c   => lib/state.c

        Removed files:
                lib/in_list.c
                lib/validname.c
                doc/Filter.guid
                lib/getrealname.c
                lib/remfirstwd.c

Changes of Elm2.4ME+ PL94c (25) compared with Elm2.4ME+ PL94b (25)
------------------------------------------------------------------

        - STORE FLAGS changes on Elm2.4ME+ PL94b (25)
          was always clearing \Seen flags -- It did always mark 
          all messages as unread!

         (Cyrus imapd bug #941 is fixed on 31 Aug 2001, see
          http://bugzilla.andrew.cmu.edu/show_bug.cgi?id=941 )

Changes of Elm2.4ME+ PL94b (25) compared with Elm2.4ME+ PL94a (25)
------------------------------------------------------------------

        - Segmentation fault on probe_imap_capa_lib()
          caused by unloading of libelmme-tls.so.
        - Segmentation fault on probe_pop_capa_lib()
          caused by unloading of libelmme-tls.so.

        - Guess multipart boundary if boundary parameter is
          missing.

        - Set status_chgd = TRUE on undelete_msg() and
          on unread_msg() so that flags are updated
          on exit. Specially on IMAP.
        - Also set status_chgd = TRUE tag_message()
          so that \Flagged on IMAP is updated on exit. 
          (Tag flag '+' is only saved on IMAP so perhaps
           '+' should not be mapped to IMAP's \Flagged ?)
        - Remove IMAP \flags from imap_flags bitmask which 
          do not have correspond Elm status flags set or 
          unset so that 'U' (unread) and 't' (tag / untag) 
          commands works correctly. 
        > Side effect is that \flags changes made by other 
          IMAP clients (on same time) are undone.

        - If there was set \Deleted on IMAP beforehand, 
          and user answered 'n' delete messages
          questions, that message was still deleted on
          'mailbox unchanged."
        > Do not set IMAP_can_CLOSE on mbx_sessionlock_imap()
          (set only on mbx_end_keep_imap()) -- this can effect
          connection caching.

        - Cyrus imapd 2.0.14 fails to parse command
               nnnn STORE xxx FLAGS () 
          Example from log (got via -X log option):

          3600 [9] 21:53:20 >>> [len   27]  
                "A00928 STORE 306 FLAGS ()" 0D 0A
          3600 [9] 21:53:20 <<< [len   48]  
                "A00928 BAD Invalid flag name  in Store command" 0D 0A
        > Therefore if flags was empty, calculate negative
          delta (if that is empty do not issue STORE command.)

        - remove unused charset_ok() from melib/mime.c
        - Split MIME_name_to_charset's create flag to bit mask:
           CHARSET_create and CHARSET_noautodef
        > That should allow using
            iconv:
            auto-charset = ON
          on global elm.rc without that it conflicts with
          existing alias definitions on global elm.mimecharsets file.

Changes of Elm2.4ME+ PL94a (25) compared with Elm2.4ME+ PL94 (25)
-----------------------------------------------------------------

        [ This is out of branch patch. ]

        - When sending mail, saving copy of mail to folder
          failed when
                displaycharset = UTF-8
                text-charset = ISO-8859-1
 
Changes of Elm2.4ME+ PL94 (25) compared with Elm2.4ME+ PL93 (25)
----------------------------------------------------------------

        Note: You must create directory
                        shared_libs/iconv
              before applying this patch!

        - As per RFC 2046, autocreate ISO-8859-X charset
          as superset of US-ASCII (where X is posititive 
          integer) if not defined.
          This can be turned off with setting elmrc variable
          auto-iso-8859 to false.
        - Elmrc option auto-iso-8859 overrides compatcharsets
          (ie. removing ISO-8859-X charsets from compatcharsets
           effectively reappear to list.)

        - Unicode (UTF-7 or UTF-8) strings are now compressed /
          canonified.

        - Fix incorrect clip on cs_utf.c code.

        - Added shared library libelmme-iconv.so (shared_libs/iconv/)
          which provides interface to GNU LIBICONV (character set 
          conversion library) or to correspond fuctions on system 
          library. To use that library add iconv to use-library
          -elmrc variable, for example
                use-library = iconv

        See also: shared_libs/iconv/README.ME+

        - Do not call MoveCursor() if interrupt
          that uses tgoto() which may malloc memory.
          Instead use ClearScreen() which hopefully
          is safer.

        - Make terminal_switch_to() safe to called from signal
          handler (was mallocing results).      
 
          Signal handlers call Raw(), which call switch_display_charset()
          which calls terminal_switch_to().

          Following routines made more safe to called from signal
          handler (is using static storage instead of malloc):
              terminal_switch_to()          [lib/terminal.c]
              helper_1                      [lib/terminal.c]
              debug_charset_sets()          [lib/terminal.c]
              lock_shift()                  [lib/iso2022.c]
              iso2022_setid_stream()        [lib/iso2022.c]

        - Do not use display_charset on terminal_switch_to()
          -- instead use *terminal_info data...

        - stream_from_string(), streamclip_from_string() was catenating 
          terminal initialization strings in wrong order ?

        - When using -D utf-8 command line option of elm 
          message to be replied was not copied to edit buffer 
          with correct charset.

        - Fix 'Value of "xx" ' error message on dt_FUNC_parse_line()
          on lib/rc_parse.c (elmrc parsing).

        - Added (new) flag CS_universal_set to UTF-8 (and UTF-7) so 
          that messages like "[ Charset US-ASCII unsupported, 
          converting... ]" are avoided when replying message with 
          -D utf-8 is effect (utf-8 is not on compatcharsets.)
          (instead message "[ Charset US-ASCII converted... ]"
           is given.) Setting charset-convert-ok avoids that message.

        WARNING: If external editor (ie. default) is used editing
                 buffer is converted from display charset to system
                 charset (locale charset) silently (ie. that 
                 does not cause 'unsupported' warning although 
                 that conversion may lose characters). After editing
                 text is converted back from system charset to
                 display charset. That is quite non-optimal. If
                 external editor is used, editor buffer should be
                 stored with system charset (instead of display charset)
                 so that conversions are avoided.

        New elmrc options:
                auto-iso-8859
                charset-convert-ok

        New files:
                shared_libs/iconv/config
                shared_libs/iconv/Makefile.SH
                shared_libs/iconv/elmiconv.h
                shared_libs/iconv/iconv.c
                shared_libs/iconv/README.ME+

Changes of Elm2.4ME+ PL93 (25) compared with Elm2.4ME+ PL92 (25)
----------------------------------------------------------------

        Undo Elm2.4ME+ PL92a (25) and Elm2.4ME+ PL92b (25)
        patches before applying this patch.

        - state_nlputs was not printing whole string of
          it was not ending to \n

        - Added global flag wait_can_signal indication that 
          signal handler is called from middle of wait
          (which is safe). Earlier flag InGetPrompt was
          not accurate.

        - Remove catgets calls from signal handlers on src/signal.c

        - parse_format_args() to lib/output.c 

        - state_printable() was not using unicode information
          (uses now unicode_ch())

        - Changed debug output routines. General format of debug option is
              -d {class}={debugfile}:{level}
          Option can be given several times.
        - Now debug output is not printed to stderr on startup.
          Instead debug output is spooled until debug files are opened.
        - Also utilities print debug to debug files instead of stderr.

        See chapter "Debug output" below in this file.

        - It is no longer possible to enable debugging code by just
          uncommenting line
                #DEBUG          =       -DDEBUG
          on Makefiles.
          Instead Configure must be re-run. It is now also possible to 
          specify -DDEBUG to command line of Configure.
        - Updated some manual pages.

        - unicode_ch on lib/unicode.c interpreted unidata
          information wrongly.

        - "I got a mail that completely crashes elms parser. 
           I'll append a folder that elm PL 90 can't open. Maybe 
           you can use it to find a bug in elm."
          Reported by: Jan Willamowius <jan@willamowius.de>
        > Discard map definition of charset if compactcharsets
          or iso646-charsets redefine charset (to be incompatible
          with map definition of charset)
        
        NOTE: elmrc options compactcharsets or iso646-charsets
              should newer be set explicit. If you need to redefine
              some charset, give definition on file .elm/mime.charsets.

        - Quoted username if it contains some special characters.

        - "Until I did this I could not get it to build correctly on 
           solaris 8 (even if I didn't want to use the sharedlibs -- 
           it will not build now without them, which is probably a 
           larger problem but I could not figure out how to remove 
           the dependency)."
         Reported by:  Christopher Gori <cgori@yahoo.com>
        > Make code compile when USE_DLOPEN is not defined

        - elm -vv now reports is USE_DLOPEN defined.
        
        - unicode_ch on lib/unicode.c did lowercasing 
          using unidata data wrongly. Therefore (l)imit
          with "thread" failed to remove "Re: " prefix from
          subject.

        - Do some pseudo random generator seeding based on 
          schedule.c events and keyboard input.

        - Warn if EGD socket socket given with
          tls: rand-egd does not work.
        - Reduce minimal amout of bytes read from egd to 10

        New files:
                lib/debug.c

        Removed files:
                doc/wnewmail.1

Changes of Elm2.4ME+ PL92b (25) compared with Elm2.4ME+ PL92a (25)
------------------------------------------------------------------

        - unicode_ch on lib/unicode.c interpreted unidata
          information wrongly.

        - "I got a mail that completely crashes elms parser. 
           I'll append a folder that elm PL 90 can't open. Maybe 
           you can use it to find a bug in elm."
          Reported by: Jan Willamowius <jan@willamowius.de>
        > Discard map definition of charset if compactcharsets
          or iso646-charsets redefine charset (to be incompatible
          with map definition of charset)
        
        NOTE: elmrc options compactcharsets or iso646-charsets
              should never be set explicit. If you need redefine
              some charset, give definition on file .elm/mime.charsets.

        - Quoted username if it contains some special characters.

Changes of Elm2.4ME+ PL92a (25) compared with Elm2.4ME+ PL92 (25)
-----------------------------------------------------------------

        [ This is out of branch patch. ]

        - "Until I did this I could not get it to build correctly on 
           solaris 8 (even if I didn't want to use the sharedlibs -- 
           it will not build now without them, which is probably a 
           larger problem but I could not figure out how to remove 
           the dependency)."
         Reported by:  Christopher Gori <cgori@yahoo.com>
        > Make code compile when USE_DLOPEN is not defined

Changes of Elm2.4ME+ PL92 (25) compared with Elm2.4ME+ PL91 (25)
----------------------------------------------------------------

        - Do some CRLF -> LF or LF -> CRLF conversions
          so that IMAP gets end of lines as CRLF
        - However when mail is binary there must not be
          CRLF <-> LF conversions!! (however binary messages
          have CRLF ended lines in first place)

          Now when APPENDing message to IMAP folder, message 
          lines are CRLF terminated.

          When using 'S' (save text) message is not CR
          stripped (as normally) if target file is IMAP 
          folder.
          
          These changes should fix error "Message contains bare 
          newlines" from Curys Imapd when copying
          mail from local mailbox to Cyrus IMAP folder
          or when S)aving text of message to Cyrus IMAP folder.

        - Do not add phrase to In-Reply-To -header.
          RFC 2822 (obsoletes RFC 822) does not allow 
          phrase to be added to In-Reply-To -header.
          Added add-in-reply-to-phrase elmrc option.
          Set this if you want phrase to be added.

        - "I noticed that "frm user" doesn't work anymore. 
           (Last version I tried was PL60 - that worked fine). 
           On my Linux box it always tries to read a folder."
         Reported by: Jan Willamowius <jan@willamowius.de>
        > Assignment of no_files was rewrited to wrong
          way on some day.

        - Gives error message
             ../hdrs/rc_imp.h:53: warning: `DT_CHR' redefined
             /usr/include/dirent.h:105: warning: this is the location of 
             the previous definition
          on certain linux systems.
        > Removed DT_CHR define.

        - Fix for Solaris 8 compilation.

          "I think the patch keeps -shared when it is necessary for the 
           build. The problem was that the Configure script was assuming 
           _all_ platforms would need -shared, but Solaris (for example) 
           does not, in fact compiling fails if it is present.  I just moved 
           -shared into the $soname_opt when it was necessary."
         From: Christopher Gori <cgori@yahoo.com>
        > Made correspond change also to shared_libs/tls/Makefile.SH

        - (as Elm 2.4ME+ PL91) Does not compile on AIX 4.3.3.
         Reported by: Noam G. Nudelman <noam@mail.biu.ac.il>
        > Guessed fix (completely untested)

        New elmrc options:
           add-in-reply-to-phrase

Changes of Elm2.4ME+ PL91 (25) compared with Elm2.4ME+ PL90 (25)
----------------------------------------------------------------

        Note: You must create directories 
                        charset 
                        charset/UNIDATA 
                        shared_libs
                        shared_libs/include                     
                        shared_libs/tls
              before applying this patch!

        Undo Elm2.4ME+ PL90a (25) patch before applying this patch.

        WARNING: Quite lot of changes in many areas. So 
                 please report new bugs which you observe...

        See also: shared_libs/tls/README.ME+
                  charset/UNIDATA/README.TXT

        - Added support for unicode database (UNIDATA2.TXT).
          That is compiled to binary form (unidata.bin) which
          is mmaped or read. Name of file is given with
          elmrc option "unidata" -- default directory is given on
          elmrc option "map-bin-dir".
        - Binary form can be generated ("make install" does)
          with elmunidata -tool.
        - Elmrc option "unidata" value is checked (and data
          preloaded) only when it is likely that it is needed.
          That happens usually if elmrc options "allow-charset-switching" 
          or "displaycharset" is used.

        - MMAP code currently does not compile on Digital Unix 4.0F.
          That is detected by Configure.          

        - If unicode database is not available, then
          printable, lower and uppercase characters are known
          only from Latin/1 part (0000-00FF) of Unicode.
        - Note that still neither Unicode didirectional algorithm 
          nor Right-Left scripts are supported (although unicode
          database includes directionality information.)
        - Also character composition / decomposition information
          is not currently used.

        - Implemented POP and IMAP connection as stack of streams.
          So there can be different layers of connection.
          (files lib/streamsched.c and hdrs/ss_imp.h)

        - Now POP client code issues CAPA command to server.

        - Default shared library localtion for IRIX is changed
          (now lib32 is used for n32 ABI instead of lib).

        - "Running Elm 2.4ME+86, if I displayed the first 80% of 
           a message using the built-in text browser, pressing 
           <Ctl>-D to display the remaining part of the message 
           results in tildes ("~") replacing the first (leftmost) 
           character of the newly-displayed lines. "
         Problem noted by: Andrew Piziali <andy@verisity.com>
        > Make sure that lines text is cleared from previous 
          text when printing.
        > Scroll screen when printing ~ characters (ie. print 
          newlines also)

        - " I had to fix config.h, which had:

           #define I_LOCALE    /**/  
                   I_NL_TYPES  /**/
           /*#undef    MSGCAT      */

          The second line was in error."
         Reported by: Bruce Momjian <root@candle.pha.pa.us>

        - "If you look at lib/Makefile.SH, you will see:

            *)      msgcatsrc= msgcat.c
                    msgcatobj= msgcat.o

           This is a problem.  Try this:

                X= ls

           and notice that X is not assigned 'ls', but the ls command is run."
          Reported by: Bruce Momjian <root@candle.pha.pa.us>

        - Added config files $HOME/.elm/mail.services and 
          {libdir}/elm.mailservices. These can be used specify
          should IMAP or POP used to given mailbox (folder browser
          however uses IMAP, because POP does not provide several 
          folders). It also can be used to give some connection 
          parameters.

          See chapter "Mail services config" below in this file.

        - Added ability to load shared libraries on run time.
          Libraries are given with tags on use-library -elmrc
          option. Note that curretly necessary hooks are missing 
          from data structures and routines so in general
          these shared libraries can not (yet?) be used to extend
          capability of Elm ME+ (except on some rare cases.)

          See chapter "Dynamic libraries" below in this file.

        - Config file (elm.rc, ~/.elm/elmrc) parsing and
          saving implementation is changed. Hopefully 
          functionality is still same.
        - Removed alwaysleave -> alwaysstore kludge
          (now negations are possible.)
        - Config files (elm.rc, ~/.elm/elmrc) can now
          include shared library specifix sections (on
          end of config file). See chapter "Dynamic libraries" 
          below in this file. 

        - Added shared library libelmme-tls.so (shared_libs/tls/) 
          which provides POP's STLS and IMAPs STARTTLS command.
          To use that library add tls to use-library
          -elmrc variable, for example
                use-library = tls

          Source of shared library libelmme-tls.so does not contain 
          any cryptography itself. Compiling that library requires 
          that OpenSSL 0.9.6 is installed.

          Do not expect libelmme-tls.so library to provide any security.
          It does not fulfill requirements of RFC 2595 (Using TLS with 
          IMAP, POP3 and ACAP.)

          See file shared_libs/tls/README.ME+ for details.

          Remember to setup EGD (entropy gathering daemon),
          if on your system does not provide /dev/urandom
          device (see warning on shared_libs/tls/README.ME+ 
          file.)
        
        New elmrc options:
                map-bin-dir
                unidata

        New files:
                lib/unidata.c
                charset/UNIDATA/README.TXT
                charset/UNIDATA/UNIDATA2.TXT
                utils/elmunidata.c
                doc/elmunidata.1
                hdrs/unidata.h
                shared_libs/Makefile.SH
                lib/shared.c
                shared_libs/include/shared.h
                hdrs/shared_imp.h
                shared_libs/tls/config
                shared_libs/tls/Makefile.SH
                hdrs/ss_imp.h
                lib/streamsched.c
                shared_libs/tls/pop.c
                shared_libs/include/elmshared.h
                shared_libs/tls/tls.c
                shared_libs/tls/elmtls.h
                shared_libs/tls/imap.c
                lib/service_list.c
                hdrs/rc_imp.h
                lib/rc_handle.c
                shared_libs/tls/README.ME+

        New tools:
                elmunidata

Changes of Elm2.4ME+ PL90a (25) compared with Elm2.4ME+ PL90
------------------------------------------------------------

        [ This is out of branch patch. ]

        - "Running Elm 2.4ME+86, if I displayed the first 80% of 
           a message using the built-in text browser, pressing 
           <Ctl>-D to display the remaining part of the message 
           results in tildes ("~") replacing the first (leftmost) 
           character of the newly-displayed lines. "
         Problem noted by: Andrew Piziali <andy@verisity.com>
        > Make sure that lines from the previous texts are cleared 
          when printing.
        > Scroll screen when printing ~ characters (ie. print 
          newlines also)

        - " I had to fix config.h, which had:

           #define I_LOCALE    /**/  
                   I_NL_TYPES  /**/
           /*#undef    MSGCAT      */

          The second line was in error."
         Reported by: Bruce Momjian <root@candle.pha.pa.us>

        - "If you look at lib/Makefile.SH, you will see:

            *)      msgcatsrc= msgcat.c
                    msgcatobj= msgcat.o

           This is a problem.  Try this:

                X= ls

           and notice that X is not assigned 'ls', but the ls command is run."
          Reported by: Bruce Momjian <root@candle.pha.pa.us>

Changes of Elm2.4ME+ PL90 (25) compared with Elm2.4ME+ PL89 (25)
----------------------------------------------------------------

         - "I found another locking problem which did not occur 
            for me in ELM 2.4ME+ PL79.  Assume that there is at 
            least one message in =received. If you read a new message 
            from the regular incoming mailbox (not POP), and then c)hange 
            to ">", you get a message that =received is temporarily 
            unavailable.  Then elm switches to =received but without
            saving the message from the incoming mailbox.  It acts like 
            elm is opening and locking =received before trying to save 
            the new incoming message.  Again, this is Linux (Slackware-7.1) 
            with a 2.4.1 kernel. "
          Reported by: Jay Rouman <jsr@dexter.mi.org>
         [ That propably happens with USE_FLOCK_LOCKING --
           with USE_FCNTL_LOCKING problems are different. ]
         > Close just opened new folder (=received) before 
           trying to open it for storing mails and afterwards 
           reopen that new folder. That helps if closing it causes 
           the locks to it to be lost (as folder).

        - "Assume that you have changed to the mailbox of someone from 
           whom you have already gotten messages.  While you are in this 
           mailbox, you send a new message to this person.  With PL79, elm 
           would save a copy back to this mailbox and do a screen refresh 
           to show that the new copy had landed in the mailbox.

           With PL89, elm complains that it can't lock the mailbox and then 
           saves to =sent instead of dropping it.  Then you have to change to 
           =sent and manually save back to the mailbox of the person you sent 
           to."
         [ That propably happens with USE_FLOCK_LOCKING --
           with USE_FCNTL_LOCKING problems are different. ]
          Reported by: Jay Rouman <jsr@dexter.mi.org>
         > Close current folder temporary during copy
           and reopen after that.

        - Remove question "Can your system use setgid() to switch 
          between the real and effective gid values?" from Configure.
          That question was asked only if there was "yes" answered
          to question "Am I going to be running as a setgid program?".
          Also macro SAVE_GROUP_MAILBOX_ID is removed. Instead now
          Elm ME+ uses sysconf(_SC_SAVED_IDS) on run time (use
          "elm -vvv" to determine result.)

          That way binaries of setgid Elm ME+ and non-setgid Elm ME+ 
          are identical.

        - "I can't make elm (a few last versions) on HP-UX 10.20 
           and 11.0. I tried with cc and gcc and the result is the 
           same:

           /usr/ccs/bin/ld: Unsatisfied symbols:
                setlinebuf (code)"
         Reported by: Witold Witkowski <yawitkow@cyf-kr.edu.pl>
        > Added test for setlinebuf() to Configure

        - Added support for shared libraries. Now libutil.a
          is compiled as shared library (with name libelmme-base.so)
          if possible.

Changes of Elm2.4ME+ PL89 (25) compared with Elm2.4ME+ PL88 (25)
----------------------------------------------------------------

        - "Being perfectly happy with the wildcard filename selection 
           feature as of last elm me+ PL 87, my wish would be now that 
           the same wildcard expansion could take place also for attached 
           file names."
         Requested by: Emmanuel BIGLER <bigler@ens2m.fr>
       > Modified gb_filebrowser() -- now elmrc option 
         browser-wildcard-matching apply also when browsing files (instead
         of mailboxes / folders).

        - header_charset was not set on attach_menu.c,
          or newmail.c and from.c utilities.         

        - "While compiling (gcc-2.95.2 on HP-UX 10.20) the latest 
          (88) version of Elm I got the following error:

          imap.c: In function `cache_open_imap':
          imap.c:2541: `h_errno' undeclared (first use in this function)"

         "There is no:

          #ifndef h_errno
          extern int h_errno;

          declaration in imap.c and this may cause the error."
         Reported by: Witold Witkowski <yawitkow@cyf-kr.edu.pl>

        - "If you retrieve mail from a POP server and then q)uit, 
           you always get "OOPS! Storing of mail failed!" from 
           leavembox.c.  This appears to have started in elm-2.4ME+83."
         Reported by: Jay Rouman <jsr@dexter.mi.org>
        > pop.c code added extra \n after mailbox separator
          (one \n was already added by ctime())

Changes of Elm2.4ME+ PL88b (25) compared with Elm2.4ME+ PL88a (25)
------------------------------------------------------------------

        - In attach_menu.c header_charset was not set.


Changes of Elm2.4ME+ PL88a (25) compared with Elm2.4ME+ PL88 (25)
-----------------------------------------------------------------

        [ This is out of branch patch. ]

        - In newmail.c and from.c utilities header_charset
          was not set.

        - "While compiling (gcc-2.95.2 on HP-UX 10.20) the latest 
          (88) version of Elm I got the following error:

          imap.c: In function `cache_open_imap':
          imap.c:2541: `h_errno' undeclared (first use in this function)"

         "There is no:

          #ifndef h_errno
          extern int h_errno;

          declaration in imap.c and this may cause the error."
         Reported by: Witold Witkowski <yawitkow@cyf-kr.edu.pl>

        - Fix some Tru64 (aka Digital Unix, aka OSF1) compilation 
          warnings.

Changes of Elm2.4ME+ PL88 (25) compared with Elm2.4ME+ PL87 (25)
----------------------------------------------------------------

        Warning: Changes on header processing of copy_message_2() 
                 routine. Report if there are problems in mailbox 
                 update.

        - Accept Mime-Version: -headers like
                Mime-Version: 1.0 (NeXT Mail 4.2mach_patches v148.2)

        - USE_DOMAIN did not added domain to address
          when recipient was not not 'valid' local recipeint
          (ie. recipient was something other than user
           from passwd.)
         Problem noted by: Andrew Piziali <andy@verisity.com>

        - 'Simplify' metapager() -- use state_write_headers()
        - Added MIME header decoding routine give_decoded_header()
          to lib/headers.c
        - Use give_decoded_header() on state_write_headers()
          (actually on new routine state_write_header())
        > Now displaying of =?...?= and "..." quotation is
          consistent on pager -- in both case quotation is 
          undone (not just =?...?= case).
        > WARNING: Comments (ie. (...)) on addresses when paging 
          mail no longer show in the original place
        - Added header_charset -field to 'struct header_rec'
          (that is passed as defcharset for MIME routines.)
        - Rewritten copy_message_2 to use give_decoded_header()
          (via state_write_header()) when decoding
        > Headers copied via copy_message*() routine
          when docode set is similarly processed as
          when paging paging mail.
        - Use give_decoded_header() on rfc822_decode()
        - Removed rfc822_header_converter(), rfc1522_decode_structured(),
                rfc1522_decode_comment(), rfc1522_decode(),
                rfc1522_decode_real(), decode_encoded_atom(),
                rfc1522_decode_word()
          from melib/mime_decode.c

        - "The domain name expansion code works for addresses 
           such as:

             ltanner

           However, if I use the address:

             ltanner (Larry Tanner)

           the domain name is not appended to the username so the 
           message bounces."
         Reported by: Andrew Piziali <andy@verisity.com>

        - Added new elmrc variable header-phrase-display-mode.
          Value "plain" tells that phrases should be showd as is
          and value "quoted" tells that phrases should be shown in
          quoted mode. This effects phrases on paged message headers
          and on message editing screen. Phrases on address headers
          and others (such as in-reply-to) are affected.

        - "The attached patch adds the KOI8-U charset support  
           to elm+ME."
          From: Mikhail Teterin <mi@aldan.algebra.com>
        > Done some modifications to patch (original
          ptach did not initialized reverse mapping correctly.)

        New charsets listed: 
                KOI8-U                  From RFC2319 (b)

                (b) On builtin charset list of ELM-ME+

        New elmrc options:
                header-phrase-display-mode

Changes of Elm2.4ME+ PL87 (25) compared with Elm2.4ME+ PL86 (25)
----------------------------------------------------------------

        - src/aliaslib.c didn't compile when USE_DOMAIN
          was defined.

        - Allow user always select on Configure is
          noaddfrom and usedomain set or unset.

        - "   Running Elm 2.4ME+82 with mailbox editing enabled, 
           if I press "e" to edit my default mailbox, 
           /var/spool/mail/andy, which contains a single PGP-encrypted 
           and signed message, change something in a message header
           or body using my editor (vi), save the editing buffer, and 
           exit the editor, Elm displays:

             Resynchronizing with new version of folder...

           and then redisplays the folder index screen with the folder 
           reverted to its pre-edit state."
         Problem noted by: Andrew Piziali <andy@verisity.com>
        > mbx_end_edit_spool() was not really returning
          changes to default mailbox.

Changes of Elm2.4ME+ PL86 (25) compared with Elm2.4ME+ PL85 (25)
----------------------------------------------------------------

        - Handle exceptions case on select() as
          errors case on poll()

        - Converted folder parsing on utils/from.c to use 
          read_folder_headers() 

        - Converted folder parsing on utils/newmail.c to 
          use read_folder_headers() 

        - Undo change (done on PL84) of default answer of 
          question "Should <curses.h> included also when using 
          $termlib and <term.h> ?" for AIX.

        - "  In addition to the problem mentioned above, no matter 
           what I answer to the question in Configure:

           Termlib routines in '-ltermcap' from prior Configure run
           <term.h> found
           Should <curses.h> included also when using -ltermcap and <term.h> ?

           like 35 in src/curses.c, there appears "#include <term.h>".  
           This produces the error included as an attachment.  When 
           commenting this line out, elm2.4.ME+.85 compiles well."
         Reported by: Noam G. Nudelman <noam@mail.biu.ac.il>
        > Added possibility to add only curses.h. That is default for
          AIX.
        - Both <curses.h> and <term.h> are included by default on Linux
          and IRIX.

        - "  I would like to ask/suggest that just as /usr/local is used 
           as the path for the "public executables" directory and "public 
           libraries", why not by default use /usr/local as the prefix path 
           for the man pages (/usr/local/man/mann and /usr/local/man/catn) ?"
         Requested by: Noam G. Nudelman <noam@mail.biu.ac.il>
        > Use directory which is "near" to given bin directory 
          as first candinate for manual pages location.

        - Now it is possible to give installation prefix directory
          to Configure. By giving installation prefix directory
          Configure selects directories as following:
                PREFIX/bin              for public executables
                PREFIX/man/man1         for unformatted manual pages
                PREFIX/man/cat1         for formatted manual pages
                PREFIX/lib              for public config files
          Is is also possible to asnwer "none" to question about
          installation prefix directory. In that case directories
          are prompted separately.
        - Installation prefix directory can be given also with
          -P option to Configure

        - "I am seeing the follwing compile errors with elm2.4.ME+.85.  
           I can't find the definition of catgets()."
          "I am on BSD/OS 4.01."
          Reported by: Bruce Momjian <root@candle.pha.pa.us>
        > Include msgcat.c to library if msgcat is not available.
          [ Was dropped from compilation on Elm2.4ME+ PL83 ]

        - Added elmrc option default-nomime-charset to specify
          charset of non-MIME messages. Default is "SYSTEM".
          In other words non-MIME messages are assumed to use
          system charset. Note that old implicit default was
          that non-MIME messages uses display charset.

          Note that using of display charset for non-MIME
          messages does not work well, when display charset is
          switched to some other than system charset.

        - Call FlushBuffer() after writing of "Quick quit" 
          so that the user gets immediately feedback.

        Moved files:
                src/expires.c => lib/expires.c

        New elmrc options:
                default-nomime-charset

Changes of Elm2.4ME+ PL85 (25) compared with Elm2.4ME+ PL84 (25)
----------------------------------------------------------------

        - Moved find_header(), classify_header() and
          locate_header() from melib/parse_util.c to 
          lib/headers.c

        - moved delete_headers from melib/parse_util.c to 
          lib/headers.c and changed calling convention.

        - moved headers structure building from state_read_headers()
          (melib/parse_util.c) to update_header_list()
          (lib/headers.c).

        - Added read_folder_headers() to lib/headers.c
          (using update_header_list()) and implemented folder
          parsing on src/newmbox.c with it.

        - Parsing of top level MIME headers uses now the same routine 
          than parsing other MIME headers.
        - Added elmrc option show-header-errors. Setting
          this to false disables some error messages about
          duplicate (MIME) headers.

        - Changed description field to struct string * on mime 
          structure.

        - 'struct string * ret' was incorrectly static on 
           browser_descend_imap(). That caused Elm to crash, 
           when login to the IMAP server failed.

        - IMAP flags given in LIST response were no correctly 
          processed.

        - "I have a user wish for developers : I appreciate 
           the new file selection feature with the "TAB" key 
           however I am missing the wildcard selection feature 
           (may be I do not use the new interface properly?) .
           In my "mail" directory I have several hundreds of files. 
           So browsing page after page to find the one I need is much 
           slower than before with the wildcard selection feature. 
           They do not seem to be listed alphabetically either."
         Requested by: Emmanuel BIGLER <bigler@ens2m.fr>
       > Implemented a subset of the old wildcard feature for folder
         browser. Characters '*' and '?' are treated as wildcards. 
         Typing name with wildcard and pressing ENTER or TAB gives 
         directory listing limited with that wildcard specification. 
         That is limited to one directory -- directory paths can not
         include wildcards. Note also that it prevents selecting 
         folder names that include '?' or '*' characters.
       - Added elmrc variable browser-wildcard-matching. Setting 
         this variable OFF disables wildcard feature and therefore 
         allows selecting filenames that include '?' or '*' characters.
        
        New files:
                lib/headers.c
                hdrs/hdr_imp.h

        Removed files:
                src/wildcards.c

        New elmrc options:
                show-header-errors
                browser-wildcard-matching

         [ Undo Elm2.4ME+ PL84a patch before installing this patch. ]

Changes of Elm2.4ME+ PL84a (25) compared with Elm2.4ME+ PL84 (25)
-----------------------------------------------------------------
          [ This is out of branch patch. ] 

        - 'struct string * ret' was incorrectly static on 
           browser_descend_imap(). That caused Elm to crash, 
           when login to IMAP server failed.

        - IMAP flags given in LIST response were no correctly 
          processed.


Changes of Elm2.4ME+ PL84 (25) compared with Elm2.4ME+ PL83 (25)
----------------------------------------------------------------

        - Elm does not detect that the user is trying to move 
          to the same folder that she is on already.
         Problem noted by: Laura Kataja
        > Use selection_is_folder() instead of comparing
          current selection's name against folder name with 
          strcmp()

        - Configure was using $i_stdlib on test for return
          type of malloc(). Hovever $i_stdlib is not longer
          set.

        - Delay the reading of local directory when needed

        - Added undocument "-X transcript_file" option
          to elm, newmail and frm (from.c). Note that
          transcript file will include passwords!

        - Change default answer of question "Should <curses.h> 
          be included also when using $termlib and <term.h> ?"
          to 'y' for AIX (just a guess).
          [ Change dropped on PL86 ]

        - Drop gethostname() routine from opt_utils.
          Instead call uname() on lib/read_rc.c if needed.
          This means that /etc/systemid is no longer read.

        - elm -vv gives now information of gethostname() or
          uname() in use

        - Call FlushBuffer() after writing of "Send" so that 
          the user gets immediately feedback (it may 
          take time to encode big attachments)

Changes of Elm2.4ME+ PL83 (25) compared with Elm2.4ME+ PL82 (25)
----------------------------------------------------------------

        [ WARNING:  There are quite large changes on file and 
          folder I/O. Especially saving mail to folders has 
          changed much. There are also quite many changes in 
          the remote mailbox (especially IMAP) code. So please 
          report new bugs which you observe...   ]
                 
        - Moved local mailbox handling routines from lib/mbox.c 
          to lib/localmbx.c.
        - Implemented some kind of connection caching for imap 
          connections. This can be disabled by setting
          elmrc option imap-connection-cache to false.
        - These cached (unused) connections are closed when 
          Elm checks new mail after "timeout" (elmrc value).
        - Cached connections are also closed with Ctrl-F
          (Forget passphrase)
        - By default Elm ME+ shows IMAP server greeting. Also 
          other untagged OK messages, which do not have machine 
          readable response codes, are shown. This can be turned 
          off with setting elmrc variable imap-show-greeting 
          to false.
        - By default Elm ME+ shows IMAP server's untagged NO 
          messages. This can be turned of by setting elmrc
          variable imap-show-warning to false.
        - By default Elm ME+ shows IMAP server's untagged BAD
          messages. This can be turned of by setting elmrc
          variable imap-show-error to false.

        - By default POP server greeting is shown. This can
          be turned off with setting elmrc variable 
          pop-show-greeting to false.
        - Show pop server closing message (however this
          is not show when resyncronizing ($))

        - "Due to increased Micro$oft occupation some Russian 
           messages tends to have Windows standard Russian 
           encoding CP1251 and not KOI8-R as before. This
           patch required to view "windows-1251" marked messages 
           on KOI8-R Unix display (via charset converting)."
         From: Andrey A. Chernov <ache@nagual.pp.ru>
        > Map name is changed to be CP1251 for consistency 
          of others. 
        * SIDE NOTE: This patch just adds internal conversion table. 
          Actually you can do same also by using elm.mimecharsets 
          file and external conversion table.

        - #include <sys/stat.h> on headers.h (instead of individual 
          files)

        - When saving tagged messages now default filename is
          based on first tagged message (as was old behauviour;
          in some point that behauviour was lost).

        - Initialization of screen now happens a little earlier
          than before.
        
        - Remove copy_write_error_exit() from fileio.c

        - remove #ifdef SITE_HIDING code -- (not used and
          assumes UUCP world.)
        - Generation of "From ... remote from site" removed
          (assumes UUCP world.)
        - ">From " extra mailbox separator lines are no longer
          copied.
        - Old $HOME/dead.letter will be renamed before new is 
          mail is written to $HOME/dead.letter. $HOME/dead.letter
          is used on some failures. Renaming is not not if there
          are enough old dead.letter files. In that case dead.letter
          is lost. But it may be that writing to $HOME/dead.letter 
          never occurs!

        - Add '%p' support to elm_smessage()  and elm_vmessage()

        - Use timezone offset of given time not current time
          (get_tz_mins())

        - Implemented new folder browser. Hit TAB when the folder 
          name is asked to get directory listing.
        - Added elmrc options local-fast-lookup (default: false)
          and local-fs-charset (default: SYSTEM) to control 
          local folder and file browsing.
        - If there are problems to expand name given with -f option
          folder browser is started. Specially 'elm -f ""' or
          'elm -f .' can be used for starting of yhe browser.
        
        - Browsing of IMAP folders is also possible
        - Saving to Imap folder ('s', 'S', 'C' commands) is also
          possible
        - When copying message, additional ">From " mailbox separator 
          lines after "From " separator line are no longer copied.
          (This ">From " may indicate old UUCP.)
        - Elmrc variable "imap-charset" (default: SYSTEM) specifies
          charset used with IMAP
        - Supports IMAP's international naming convention. This can
          be disabled by setting elmrc variable imap-naming-convention
          to false. If imap folder name does not match IMAP's 
          international naming convention, imap-charset is used
          instead. Note however that mixing of components of
          IMAP's international naming convention and components
          with imap-charset in same directory path does not work.
        - Added elmrc options imap-fast-lookup (default: false)
          to control IMAP folder browsing. Variable is similar than
          local-fast-lookup. If both imap-fast-lookup and
          imap-naming-convention are set, most of folders using 
          imap-charset (and not imap naming convention) are NOT 
          accessible!
        * WARNING: If creating new folder and imap-naming-convention
          is set, folder (including path) is created with imap naming 
          convention, even if original directory was using imap-charset !
          Net result is that you have two directories with same name
          (one with using imap naming convention and another using
          imap-charset). That may cause strange things!

                    
        NOTE: When appending message to folder, lines would probably
              be CRLF terminated -- currently that is not done.

        - Default "copy = ON"
         Requested by : Laura Kataja
        [ internal variable name changed from auto_cc to auto_copy_sent,
          original variable name and it's comment were misleading ]

        - mime_decode.c was losing some file descriptors.

        - Added some messages to the message catalog.

        - Implemented new file browser. Hit TAB when file name is asked to 
          get directory listing. Normally system charset is assumed
          for filename, but that can be changed with local-fs-charset
          elmrc option.                    
        - Attachment saving now asks permission to overwrite a file.

        See chapter "Folder and file browser" below in this file.

        - Added prototypes for some functions
        - #include <term.h> on src/curses.c (and perhaps <curses.h>)

        - "   I discovered Elm 2.4ME+ PL82 (25) forgets an attachment 
           if the body of the message is PGP-signed. "
         Reported by: Andrew Piziali <andy@verisity.com>
        > Note that only main body will be PGP signed or encrypted.

        - Make selection of PGP little better when decoding 
          PGP signed application/pgp messages and when decoding
          PGP signed non-MIME messages.

        - Terminal IO on src/curses.c is done via /dev/tty (not stdin and 
          stdout)
        - Do not use stdio when printing from signal handlers
          (sig_user_stop and sig_return_from_user_stop on src/curses.c)
        - Avoid passing of message catalog texts (catgets) as format
          strings for printf like functions. Instead use CATGETS
          macro and lib/output.c routines. These routines (via CATGETS 
          macro) does not use message catalog data for determining of 
          parameter types or arguments.

        - If end of lines on quoted-printable text are encoded
          with CRLF instead of LF, quoted-printable decoding
          was not removing CR from end of lines when replying.
          That happened specially with POP and IMAP, because 
          POP and IMAP mails are stored by Elm ME+ just using 
          CRLF as end of line.

        - If on IMAP folder both \Recent (= NEW) and \Seen 
          (= not UNREAD) are set, ignore \Recent (NEW), because 
          mail is already read. That happens when IMAP folder
          is resyncronized ($) (ie. mail arrives during that 
          IMAP session).

        - Renamed some charsets CPxxxx -> Windows-xxxx
          (they are registered with that name in IANA).
          Added file ConfTool/killsets which lists these
          charsets. Old definitions are removed during Configure.
          Also added option -I to utils/elmcharset.c. This
          gives charsets which should be ignored when reading
          global charset charset definition. 

        - Added support for UTF-7 charset (lib/cs_utf.c). Note
          that it is not useful as display or system charset.
          It should be used only as mail charset. See also chapter
          "Charset definition". 
        - However UTF-16 Surrogate pairs (D800-DFFF) are not
          supported on UTF-7.
        - Elmrc option utf7-encode-optional control should 'optional 
          direct characters' utf-7 encoded (default: yes). These 
          characters are (from RFC 2152):

               Character   ASCII & Unicode Value (decimal)
                  !           33
                  "           34
                  #           35
                  $           36
                  %           37
                  &           38
                  *           42
                  ;           59
                  <           60
                  =           61
                  >           62
                  @           64
                  [           91
                  ]           93
                  ^           94
                  _           95
                  '           96
                  {           123
                  |           124
                  }           125

        - Added builtin table for CP1252 (windows-1252 charset),
          so that users don't need to download CP1252.TXT from 
          Unicode.org. Builtin map name is "CP1252" and charset name 
          is "windows-1252".

        - Does not require MIME-headers (especially charset information) 
          for forwarded non-MIME message which is inside of 
          message/rfc822. In other words assume current display charset.

        - For Tru64 (aka Digital Unix, aka OSF1) prefer strings.h over 
          string.h
        - On Tru64 (aka Digital Unix, aka OSF1) full name is first thing
          in GCOS field

        - Added "Copyright 1996-2000 Kari Hurtta" texts to elm/args.c,
          doc/elm.1 and hdrs/elm.h

        - Read charset value for locale from LOCALE_DIR/LOCALE/charset
          file on ConfTool/GenCharmap, if possible.
        - Added ISO-8859-13, ISO-8859-14 and ISO-8859-4 to 
          ConfTool/GenCharmap
        - Use doc/mime.charsets also for locales in form *.* on
          ConfTool/GenCharmap

        New charsets listed: (*)

                UTF-7                   Builtin support           (U) (b)
                Big5-HKSCS              "Big5-HKSCS" is registered
                IBM00858                "IBM00858" is registered
                IBM00924                "IBM00924" is registered  (!)
                IBM01140                "IBM01140" is registered  (!)
                IBM01141                "IBM01141" is registered  (!)
                IBM01142                "IBM01142" is registered  (!)
                IBM01143                "IBM01143" is registered  (!)
                IBM01144                "IBM01144" is registered  (!)
                IBM01145                "IBM01145" is registered  (!)
                IBM01146                "IBM01146" is registered  (!)
                IBM01147                "IBM01147" is registered  (!)
                IBM01148                "IBM01148" is registered  (!)
                IBM01149                "IBM01149" is registered  (!)
                SCSU                    "SCSU" is registered      (!) (U)
                UTF-16                  "UTF-16" is registered    (!) (U)
                UTF-16BE                "UTF-16BE" is registered  (!) (U)
                UTF-16LE                "UTF-16LE" is registered  (!) (U)
                IBM775                  "IBM775" is registered
                IBM866                  "IBM866" is registered
                ISO-8859-13             "iso-8859-13" is registered     (b)
                TIS-620                 "TIS-620" is registered

        Renamed charsets:
                Windows-1250            "Windows-1250" is registered
                Windows-1251            "Windows-1251" is registered (b)
                windows-1252            "windows-1252" is registered (b)
                Windows-1253            "Windows-1253" is registered
                Windows-1254            "Windows-1254" is registered
                Windows-1255            "Windows-1255" is registered
                Windows-1256            "Windows-1256" is registered
                Windows-1257            "Windows-1257" is registered
                Windows-1258            "Windows-1258" is registered

        Charsets aliases modified:
                ISO-8859-14             "iso-8859-14" is registered     (b)

                (!) Not suitable as Mime charset
                (*) Notice that these charsets may be unsupported 
                    by Elm ME+
                (U) Encoding of Unicode
                (b) On builtin charset list of ELM-ME+

        New files:
                lib/savefolder.c
                lib/localmbx.c
                src/browser.c
                ConfTool/killsets

        Renamed files:
                hdrs/curses.h => hdrs/elm_curses.h

        Removed files:
                hdrs/mcprt.h
                hdrs/mcprtlib.h
                lib/mcprt.c
                lib/mcprtlib.c

        New elmrc options:
                utf7-encode-optional
                local-fs-charset
                imap-fast-lookup
                imap-charset
                pop-show-greeting
                imap-show-error
                imap-show-warning
                imap-show-greeting
                imap-connection-cache

Changes of Elm2.4ME+ PL82 (25) compared with Elm2.4ME+ PL81 (25)
----------------------------------------------------------------

        - Do not incorrectly detect [ in the middle of long lines.
 
        * "In attempting to add additional recipients to
           the CC: line of an outgoing message (using Elm 2.4ME+
           PL81 (25)), Elm keeps adding commas when it should not."
         Reported by: Andrew Piziali <andy@verisity.com>
        - Don't autoadd comma (',') if there is
          already space or comma (',') on header editing screen.
        - Delay adding of comma (',') to the point where we see 
          that the next character is '('  or '<' on header editing
          screen.
        - Autoadd comma (',') after '>' and ')'
        - Only autoadd comma (',') on beginning of editing
          (ie when we start typing new address to buffer
           when there is already address on buffer).

        - '\' escaping was broken on header editing screen

Changes of Elm2.4ME+ PL81 (25) compared with Elm2.4ME+ PL80 (25)
----------------------------------------------------------------

        [ WARNING:  IMAP code is little tested and has a quite 
          limited functiolnality -- only a little more functionality 
          than POP code. ]
                     
        - Avoid sequence /* ... /**/ on config.h

        - Define NEED_REOPEN_AFTER_FAILED_CONNECT if socket
          needs to be closed and reopend after failed connect() 
          before retrying. Notice that if connect() returns 
          EINVAL Elm ME+ automatically closes and reopens socket 
          and then retries same connect(). 

        - New elmrc variable "menu-display-host"
        - Center ELm version string to second line if first line 
          has no space left.

        - lib/imap.c provides IMAp type folders (but only about same
          functionality that POP folders -- currently saving or
          copying of mail to IMAp folders is not implemented.)
        - lib/remote_mbx.c includes common routines for POP and IMPA code.
        - IMAP mailboxes can be accessed by giving username@hostname
          as folder name (tries first IMAP and then POP if connection
          to IMAP port gives Connection refused.)
        - IMAP folder can be accessed by giving username@hostname:folder
          as folder name. 
        > Note however that:
                - Temporary file is used same way
                  than is used in case of unix mailbox.
                - It is not possible to e)dit IMAP mailbox
                - It is not possible to s)ave or C)opy to
                  to IMAP mailbox (NOT IMPLEMENTED YET)
                - It is not possible to browse folder list
                  from IMAP server (NOT IMPLEMENTED YET)
                - Messages are kept on IMAP mailbox until you D)elete
                  them and then resync ($) or quit.
                  However note that some other mail client may
                  may same time access IMAP mailbox and mark messages
                  to be deleted and actually delete (EXPUNGE) them.
                - If some other mail clients change status of messages
                  at the same time when ELM had IMAP mailbox open, those
                  changes are not displayed on Elm mailbox/message
                  display (even when messages are EXPUNGEd).
                - However Elm should survive when messages are 
                  EXPUNGEd when mailbox is open (that is not tested.)
                - Sending of mail still happens via calling
                  of local mailer -- SMTP or Message
                  Submission protocol is not supported.
                - IMAP code uses TCP port 143 (IMAP4rev1)
                - Messages from IMAP mailboxes are saved to folders
                  with IMAP's (= Internet's) EOLN convention. That
                  is CRLF. In other wordsthey are not converted to 
                  the unix's EOLN convention which is LF only. Elm
                  should able to handle that (and that is more
                  'binary' mail friendly.) If you need mail
                  text without extra CRes, use 'S' (save text)
                  command.
                - IMAP international mailbox name convention is
                  not supported

        - util/newmail.c doesn't close non-local folders when
          waiting new mail
        - util/newmail.c writes now debug output to file
          $HOME/NEWMAIL:debug.info
        - New elmrc variable "imap-use-examine". When this is
          set "frm" and "newmail" opens IMAP mailbox read-only
          (with "EXAMINE") -- this causes that mails do not lose 
          \Recent flag -- however seems that (some?) IMAP
          servers does not report new mail when mailbox is opened
          read-only.

        - Replaced %X with %p on debug format strings

        - Some OSF1/Dunix/Tru64 fixes

        - "Environment: Digital UNIX V4.0E, cc

           Problem: Elm dumps core after reading the folder, 
           before displaying messages.

           Debug session:

           tru64> bin/elm -f test/test.mail
             Read-only folder is 'test/test.mail' with 8 messages 
               [ELM 2.4ME+ PL79 (25)]
           SIGNAL PANIC in signals.c:99:segv_signal"
         Reported by: Bernhard Simon <bs@bsws.zid.tuwien.ac.at>
        > Fix erronous sizeof on elm_smessage (lib/output.c)

        - "The keywords "encode", "clear", etc. are useful, but some users
           don't like the feature (they think the message body should be 
           only scanned on request).

           Attached to this message there is a patch that allows to disable
           the feature using the configuration parameter "mimebodykeywords"."
         From: Jose A. Rodriguez <Jose.Rodriguez@ac.upc.es>
        > Default of "mimebodykeywords" is TRUE (ie. parse keywords)

        New files:
                lib/remote_mbx.c
                lib/imap.c

        New elmrc options:
                imap-use-examine
                menu-display-host

Changes of Elm2.4ME+ PL80 (25) compared with Elm2.4ME+ PL79 (25)
----------------------------------------------------------------

        - "Problem: There is no strdup on old ULTRIX"
         Reported by: Bernhard Simon <bs@bsws.zid.tuwien.ac.at>
        > There should be not any strdup call on ELM ME+.
          Replaced one strdup() call on src/mbox.c with
          safe_strdup() call.

        - "Problem0: After asking whether to create directory .elm, 
           messages are written beginning at the top of the screen 
           without clearing it before. This problem semms to be platform 
           independent."
         Reported by: Bernhard Simon <bs@bsws.zid.tuwien.ac.at>
        > Be sure that the messages are written to the end of the screen.

        - "I am using ELM 2.4ME+ PL77 (25) on HP-UX 10.20 and 
           from time to time I get the following error when 
           calling frm:

           Couldn't seek 1604 bytes into folder.
           ** Error 0. **
           You have no mail.

           I have tracked down the problem to lib/mbox.c:3007, 
           where fseek is called with folder->p->fh_temp being NULL."
         Reported by: Lutz Jaenicke <Lutz.Jaenicke@aet.TU-Cottbus.DE>
        > Don't call fseek() if folder->p->fh_temp is NULL.

        - "Problem1: In Configure line 1836 (cat libc.tmp |egrep ...)
           produces empty libc.list, so Configure gets confused about
           existing functions (e.g. gethostname)" (on AIX 3)
         From: Bernhard Simon <bs@bsws.zid.tuwien.ac.at>

        - "Problem3: Undeclared identifier fd_set in schedule.c
           Solution: edit lib/schedule.c and add
              #include <sys/select.h>   (line 11)" (on AIX 3)
         Reported by: Bernhard Simon <bs@bsws.zid.tuwien.ac.at>
        > Detect sys/select.h on Configure on and include it on
          hdrs/defs.h

        - "AIX Problemz: If the file for incoming mail does not exist, 
           v79 exits with
                 Can't open folder '/usr/spool/mail/root' for reading!
                On v60 it displays (as expected?) a screen with no messages.
               This problem semms to be platform independent."
         Reported by: Bernhard Simon <bs@bsws.zid.tuwien.ac.at>
        > Do do treate ENOENT error from can_open() on 
          mbx_sessionlock_filehandle() as error (case SESSIONLOCK_CHECK).

Changes of Elm2.4ME+ PL79 (25) compared with Elm2.4ME+ PL78 (25)
----------------------------------------------------------------

        [ WARNING: There are quite large changes on character 
                   set handling of terminal, and changes in the 
                   builtin editor. Specially builtin editor 
                   has changed almost totally. Also keyboard
                   input routines have changed much. So please 
                   report new bugs which you observe...  
                 
                   Elmrc option displaycharset has changed
                   meaning, so if you have set that, you need
                   to remove setting and use elm.mimecharsets
                   or .elm/mime.charsets file instead. ]

        - Implemented support for multibyte characters as
          keyboard input (lib/charset_input.c). And
          reimplemnted Reach (as ReadCh2) and optionally_enter
          (as optionally_enter2) with that support.
        - Menus are still using one byte characters and it is
          assumed that input character set is equivalent of
          code character set (practically equivalent of US-ASCII).

        - Added ability to specify on mime.charsets and elm.mimecharsets
          on ISO2022 codes for terminal character set change.
          New keywords are:
                other-set,
                bank-94, bank-96, bank-94x94, bank-94x94, bank-96x96,
                bank-G0-94, bank-G0-94x94,
                bank-G1-94, bank-G1-96, bank-G1-94x94, bank-G1-96x96,
                bank-G2-94, bank-G2-96, bank-G2-94x94, bank-G2-96x96,
                bank-G3-94, bank-G3-96, bank-G3-94x94, bank-G3-96x96
          Value of these kaywords are space separated (usually empty)
          list of intermediate bytes and final byte given on form d/d.
          If there is several bytes, list must be given on quoted form.

          NOTE: These *94x94 and *96x96 keywords are usefull only
                with "type=iso2022" character sets.

        - Added files libdir/elm.terminalinfo and ~/.elm/terminal.info
          for storing additional terminal information. Specially 
          information about charset switching. See chapter
          "Additional terminal information".
          
        - Now elm -w saves also ~/.elm/terminal.info file.

        - Added option -D charset to elm. That specifies the 
          display charset used. For external programs (including pager
          and editor) however system charset (is locale charset)
          is used however, because -D does now change locale
          and programs get charset information from locale.
          Therefore -D option is in practise effective only for
          the internal pager. Files libdir/elm.terminalinfo and
          ~/.elm/terminal.info tell the switching method for terminal
          (and that is effective only for output charset.) For 
          (external) editor buffers content is converted between
          display charset and system charset.
        - Added elmrec option allow-charset-switching (defualt unset).
          When this is set, Elm ME+ may use any charset that the terminal
          supports when needed (for example paging of message which
          uses some other charset which is given in
          libdir/elm.terminalinfo or ~/.elm/terminal.info). Note that
          this also is effective only with internal pager (and
          possible on some other space where Elm ME+ itself may
          display text with foreign charset.)

          [ NOTICE that Elm ME+ needs information for printable
            characters of display charsets. Currently there is no such
            information (except for characters which maps to UNICODE
            range 0-256, which Elm ME+ know). For system charset
            (locale charset) Elm ME+ gets information about printable
            characters from system. ]
            
        - Elm option -D 'charset' also turns on allow-charset-switching. 
        - Elm option -D NOSWITCH turns off allow-charset-switching.
        - To change display charset and allow switching only
          between system charset (locale charset) and given
          system charset use option -D =charset
        - elmrc option displaycharset now specifies charset
          to which elm should switch terminal. Default charset
          (system charset) may be specied with elm.mimecharsets
          or .elm/mime.charsets file instead.

        - builtin editor is someway rewritten (it is now perhaps
          little more 'full screen'). Most of old ~ commands
          should still work. Does NOT handle well lines which 
          are longer that screen width. Also you can not add
          lines between text even that you can edit (someway)
          existing lines of text. Builtin editor keeps message
          on memory when editing it.

        - Now when is asked optionally new value (cursor on beginning
          of old value)
                - cursor rigth key accepts old value and moves
                  cursor end of value for editing
                - enter accepts old value
                - typing of value erases old value (so that
                  only typed characters are preserved)
          In other words on header editing screen when editing Subject
          pressing cursor rigth key causes that subject can be preserved
          and new text added to end of it.

        - Added support for UTF-8 charset (lib/cs_utf.c). Note that 
          it is not very useful, because currently Elm only knows
          printable characters from Latin/1 range. See also chapter
          "Charset definition".

        - Removed Configure question about Default Text Charset
          for outgoing messages. Result of that question was not
          actually used by Elm ME+. Elmrc option text-charset
          should be used instead.

        - Generate elm.mimecharsets file also for systems, which does not
          support locale.

        - Option "alteditor" was broken (not used actually).
        - Changed option "alteditor" that it have always used when
          when replied mail (with including text).
        - Special value EDITOR means that use current (primary) editor.
          This is new default.
          
        - Header editing screen was not displaying address when
          fullname of address was with unknown character set
        - Header editing screen was potentially using wrong character
          set when printing address

        - Support gpg on viewing of multipart/signed messages.
         Requested by: Steven Pritchard <steve@silug.org>

        - Default of "page-known-charsets" elm.rc variable changed
          to ON.

        - Be consistent on definition of macros P_ and ANSI_C
         Problem noted by: Mariah Geiger <geiger@rge.com>

        - Charset type "ascii-set" now read same maps than
          charset type "one-byte-map", excepts that ASCII
          range on maps needs not be defined (and if is defined
          must be identity mapping.)

        - Check return value of setuid/setgid calls.

        New files:
                lib/charset_input.c
                lib/iso2022.c
                lib/terminal.c
                lib/unicode.c
                lib/cs_utf.c
                doc/terminal.info
                doc/elmterminal.1
                utils/elmterminal.c

        Removed files:
                src/wordwrap.c
                src/softkeys.c

        New tools:
                elmterminal

Changes of Elm2.4ME+ PL78 (25) compared with Elm2.4ME+ PL77 (25)
----------------------------------------------------------------

         - "  The executable 'newmail' that comes with 
            Elm 2.4ME+ PL77, occasionally reports the following 
            error message:

              STRING PANIC in string.c:484:convert_string
              >>Bad magic number (string type)"
          Reported by: Noam G. Nudelman <noam@mail.biu.ac.il>
         > elm_fprintf was called with wrong arguments on newmail.c

        - Fix incorrect *_clip_* on lib/cs_binary()

Changes of Elm2.4ME+ PL77 (25) compared with Elm2.4ME+ PL76 (25)
----------------------------------------------------------------

         - On PL73 [encode] was producing (by mistake)
           text/X-ELM-encode instead of application/X-ELM-encode as
           earlier versions. Return old behauviour.
         - Generation of "encoded" data (application/X-ELM-encode)
           was broken on PL73.                   

         - "It has for quite some time now bugged me 
            that Elm expands "&" in the passwd GCOS field 
            to all uppercase.  This is not the correct 
            expansion. The string should merely be capitalized.  
            Both the BSD finger and sendmail capitalize rather 
            than uppercase.

            Just consider entries like this:

                kim:*:10167:20:&mo Suominen:/u/kim:/bin/tcsh

            This should *NOT* be displayed as "KIMmo Suominen".

            I'm attaching a patch for lib/gcos_name.c that fixes 
            this.  I have also committed this into the NetBSD 
            pkgsrc system for third-party software."
          From: Kimmo Suominen <kim@tac.nyc.ny.us>
  
         - "version elm2.4.ME+.76a has a little memory bug: when 
            reading a mbox, and if a line has less than 5 characters, 
            the program reads out of bounds.

            Attached to this message there is a patch that fixes 
            the problem."
          From: Jose A. Rodriguez <Jose.Rodriguez@ac.upc.es>

         [ Undo Elm2.4ME+ PL76a patch before installing this patch. ]
  
Changes of Elm2.4ME+ PL76a (25) compared with Elm2.4ME+ PL76 (25)
-----------------------------------------------------------------
          [ This is out of branch patch. ] 

        - On PL73 [encode] was producing (by mistake)
          text/X-ELM-encode instead of application/X-ELM-encode as
          earlier versions. Return old behauviour.
        - Generation of "encoded" data (application/X-ELM-encode)
          was broken on PL73.                                                                                          

Change on Elm2.4ME+ PL76 (25) or Elm2.4ME+ PL73 (25)
----------------------------------------------------

        - Elm no longer assume that address is user's address
          if fullname matchess to fulllname of address. Give
          alternative addresses on alternatives elmrc option.

Changes of Elm2.4ME+ PL76 (25) compared with Elm2.4ME+ PL75 (25)
----------------------------------------------------------------

         - Always generate subject string to header
           structure to avoid crash.

         - Added elmrc variable env-from-source. It
           tells which information to use for envelope from 
           address. Possible values include:

            forward-from   (0)  Use:  "From "         separator line
                                      ">From "        forwarded indicator
                                      "Return-Path:"  header
            from           (1)  Use:  "From "         separator line
                                      "Return-Path:"  header
            return-path    (2)  Use:  "Return-Path:"  header

           Setting this to value return-path requires that on 
           every mail have Return-Path: -header.

        - "Please update the source of
           http://www.ozone.fmi.fi/KEH/elm-2.4ME+.README
           to also rflect the URL for filter, not just the 
           email address:

             http://www.bolthole.com/filter/"
         Requested by: Philip Brown <phil@bolthole.com>

        - "When replying to, in the last elm me pl75, this "name" is 
           suggested :
 
             ð?(ù?"
         Reported by: Emmanuel BIGLER <bigler@lpmo.univ-fcomte.fr> 
        > Changed one %s to %S on mailmsg1.c

        - Elm no longer assume that mail is from user, if username
          part (only) on envelope address matches. Addresses from 
          elmrc option alternatives is now matches also agaist 
          envelope address. Use elmrc option alternatives 
          to specify your address if Elm now shows your name instead of 
          To on list.

        - "Actually, no version of FreeBSD comes with intl libraries, 
           at least none that would make 'intl' be a valid library on 
           the compiler command line. Please change the Configure script 
           to omit intl from libswanted for any version of FreeBSD, not 
           just 3.2."
         From: Mike Brown <mike@skew.org>

        Removed files:
                lib/tail_of.c
                lib/addrmchusr.c
  
        New elmrc options:
                env-from-source

Changes of Elm2.4ME+ PL75 (25) compared with Elm2.4ME+ PL74 (25)
----------------------------------------------------------------

        - Metapager generated sender address for top line
          incorrectly if From: header did not existed.

        - Don't put builtin definitions to elm.mimecharsets
          (doc/mime.chatsets).

        - Add charset type iso646-set and elmrc option
          iso646-charsets.

        - Configure -M updates bin/elm.mimecharsets only.
        - Make output of ConfTool/GenCharmap (ie. Configure -M)
          prettier.

        - "  I just tried to compile elm2.4.ME+.74, and I see that you 
           fixed the 'h_errno' problem in the 'lib/pop.c' file but didn't 
           in the 'lib/read_rc.c' file.

           When I fixed it also in the 'lib/read_rc.c' it compiles with 
           no problems."
         Reported by: Noam G. Nudelman <noam@mail.biu.ac.il>

        - "This is a strange error message I get when I try to read my 
           mail:

           STATE PANIC in state.c:770:state_printf
           >>Embedded newlines are not supported

           Emergency exit taken! All temp files intact!

           I have no idea what's the problem. Ih the attachment is the 
           mail massage that causes it to crash. "
         Reported by: Bojan Bistrovic <bojanb@python.physics.odu.edu>
        > Fixed format string of state_printf call. 

        - "  It just seems to be my month for bugfinding. ;-)

           My "options => sort => Subject" no longer sorts by 
           message subject, as far as I can tell. "
         Reported by: Isaac Stoddard <u177k@gsde.hso.link.com>
        > Fixed incorrect condition on subject_compare()

        - Giving "something>" as address on header editing screen
          caused infinite loop on Elm ME+.

        - frm was giving odd error messages if mailfile pointed by 
          MAIL environment variable does not exists.

        - Missing of subject was causing segmentation fault on
          frm.

        - Update percent of loaded mails when updating counter
          of loaded mails. In other words now both
          readdatapercentinc and readmsginc elmrc options causes
          update of both numbers (counter and percent).

        - Make difference on return of string_cmp() [lib/string.c] 
          on cases 'values equal' and 'values not comparable'.

        - 'elm -w' now writes also .elm/mime.charsets file.
        - Some parse errors on .elm/mime.charsets are now 
          considered fatal same way than errors on .elm/elmrc
          file.

        - "This is what happens: when I try to read the mail defined as

           MIME-Version: 1.0
           Content-Type: text/plain;
                 charset="Windows-1252"


           it seems to work fine (first screen displays properly) but 
           when elm reaches the part which is supposed to be in 
           Windows-1252 charset and tries to convert it to ascii, 
           it crashes producing the error:

            STRINGBUFFER PANIC in sb_file.c:200:sb_get_line_from_file
            >>Bad charset readed from file"
         Reported by: Bojan Bistrovic <bojanb@python.physics.odu.edu>
        > Ignore charset alias when charset alias points
          to stale definition of charset. That charset 
          definition may be undefined ("removed") by setting 
          explicit compatcharsets on user's .elm/elmrc.

        - Warn if charset alias is tried to redefine as charset.

        - Refresh updating counter line if it is overwritten
          by error message.

        - Update frm.1 manual page and generate actual patchnames for 
          files to FILES section.

        New files:
                ConfTool/iso646maps

Changes of Elm2.4ME+ PL74 (25) compared with Elm2.4ME+ PL73 (25)
----------------------------------------------------------------

         - If end of lines on quoted-printable text is encoded
           with CRLF instead of LF, quote-printable decoding
           was adding CR before every character. That happened
           specially with POP, because POP mails is stored by
           Elm ME+ just using CRLF as end of line.
          Reported by: Laura Kataja

         - "  I patched my PL72 tree to PL73, and reconfigured to 
            my previous config as default. When I typed "make", I got:

            cd lib; /bin/make  - all
            cc -I../hdrs  -O    -c charset.c
             cfe: Error: charset.c, line 614: Unacceptable operand of 
             relational operator.
                     if (val < 0 &&
                 ------------^
            *** Error code 1 (bu21)
            make: *** [all] Error 1"
          Reported by: Isaac Stoddard <u177k@gsde.hso.link.com>
         > Wrong variable was used.

         - Don't call metamail, if top level type disposition
           is attachment (metamail ignores disposition).
           That kind messages are marked with 'a' on mailbox
           menu.

        - Complain about unsupported locales (locale is
          unsupported if not mapping information for correspond
          charset exist). 
        - Locales marked with (unsupported) are added now
          with nameless charset.
        - If display character set's type is unknown (ie. locale
          is unsupported), then assume that display character
          set's invariant part is on same position than on character
          set used by code (ie compiler). Note however that invariant
          part does not include '@' character!

        - Replace (unsupported) with character set name
          on tables, if mime name for locale charset is
          known. Unsupported status is now indicated by
          missing of mapping information. Message will
          be  

            WARNING: Locale xx_XX (charset XXXXXX) is unsupported, 
            will cause problems!

        - "  When compiling Elm 2.4.ME+ PL73 (or any version above PL67), 
           on AIX 4.3.2 (with gcc version 2.95.2) I receive the following 
           error message:

           cd lib; /bin/make  - all
                   gcc -I../hdrs -fpcc-struct-return  -O    -c pop.c
           pop.c:15: parse error before `int'"
         Reported by: Noam G. Nudelman <noam@mail.biu.ac.il>
        > Seems that h_errno is macro on AIX.

        New files:
                lib/cs_fallback.c

Changes of Elm2.4ME+ PL73 (25) compared with Elm2.4ME+ PL72 (25)
----------------------------------------------------------------

        [ WARNING: There are quite large changes on character set
                   set handling, on builtin pager and sending
                   messages. So please report new bugs which 
                   you observe... 

                   Also there is several fixes, which are just
                   guess (for foreign platforms: vaxult4, hpix 9.05). 
                   They of course are totally untested. So it is 
                   possible that they do not even compile... 

                   This is so much changes (and some are 
                   incomplete) so this this quite sure more buggy than
                   PL72. ]

        - "Last known compile on our vaxult4 machine was 2.4.ME+.38. 
           I tried compiling 2.4.ME+.72, but then I got this error:

           cc -I../hdrs  -O      -c parse_util.c
           "../hdrs/melib.h", line 60: syntax error"
         From: Geir Johannessen <joge@stud.ntnu.no>
        > Guess the fix [ perhaps it does not work and is definately
          untested... ]
 
        - Added facility to convert character set of incoming
          messages to display character set. 
        - Added facility to convert character set of new message
          to outgoing character set (text-charset) when sending mail.
        - Changed semantic of charset -option. Now just not give
          charset -label for outgoing messages to Content-Type -line.
          Now character set is converted to that character set
          (if message is pgp signed conversion is not done and 
           charset label is not changed either.)
        - charset option is renamed to text-charset (old name is alias).
        * Use text-charset=DISPLAY if conversion is not wanted.
        - If after conversion text is 7-bit only and 
          text-charset is superset of US-ASCII (as given on 
          compatcharset or MIME-subset -parameter on mime.charsets 
          -file), US-ASCII used as charset -labeled on Content-Type -line
          instead.
        > So if mapping information of text-charset is incomplete
          and it is only konw that text-charset (or displaycharset)
          is superset of US-ASCII, then conversion produces only US-ASCII
          characters and that causes also that mail is labeled to be
          US-ASCII
        > That also mean that on compatcharset or via MIME-subset -parameter 
          on mime.charsets should not specify character sets to be
          supersets of US-ASCII if it is not compatible with ascii
          on byte-to-byte level. ( In other words for example utf7 
          is NOT superset of US-ASCII on that sense. )

          Read chapter "Charset definition" from later of that file.

        [ In practice there is no any builting charset mappings
          which are usefull (make sense) with text-charset, so use

              text-charset=DISPLAY

          if you do not use external mapping files. 

          Currently there is NO support for utf7 or any other 
          multibyte character set (low level routines are missed).
          In other words there is no charset types (paramater type)
          for multibyte character sets. ]

        - From: -header for outgoing mail is now printed same way 
          than other address headers (ie. To, CC, Reply-To and Bcc)

        - Builtin pager now always use temporary file (or memory buffer).
          For simplify it does not longer read directly from folder.
        - Builtin pager now enligth matching line when searching with /
          (TABulators are not enligthed)
          
        - Parsed headers (fullname and comments) now carry character-set
          information (they are not always just filtered to 
          Display Character set during parsing -- also this includes
          facility to character set conversion. ]
        - Same basically also apply for outgoing mail headers
        > On outgoing mail <message@id> on in-reply-to -header is 
          handled only if it is on beginning of header.

        [ Note however missing low-level routines... ]

        - Added generic panic routine to elmlib.

        - Added elmrc option page-known-charsets. If it is TRUE,
          do not call metamail to charset for which we have some 
          information (even that we can't show all characters with 
          displaycharset). Default is FALSE (old behauviour).

        - Flag as error if user gives something like [keyword 
          on beginning of line and keyword is not detected.
          That is that user does not send mail where keyword
          accidentally mistyped (and does not work as intended).
          For example

                [inlcude some.file text/plain 7bit]

          on beginning of line.
          If user wants enter that kind line to mail which really
          start with [, then [ can be doubled as [[ on beginning of 
          line. That produces one [ character to outgoing mail.
          Elm's own messages now start [ followed by space.
          That is not flagged as error.
        - Do not longer produce empty bodypart (or part with length
          of -1 as seen on Elm) if there is [include ...] directive
          on last line.

        - "Can we add this patch to the Configure script?  This 
           should help detect Solaris systems which need -lsocket 
           -lnsl."
         From: Hon-Yin Kok <hkok@yoda.unl.edu>
         [ I little modified that patch, I hope that this did not 
           broken it. ]

        - "FreeBSD 3.2 cannot have library intl in the libswanted 
          list. It gets included in the final compile sentence for 
          elm even though there is no such library."
         From: Geir Johannessen <joge@stud.ntnu.no>

        - Move expand_env() to lib/expand.c from lib/read_rc.c
        - Let expand() to expand only if string start with metachar
          (so that it is not needed to check is string starting with
           metachar, before calling expand().)
        - Added expand_meta() to lib/expand.c.
        > Meta expand provides:
                +filename       ==  file on mail folder directory
                =filename       ==  file on mail folder directory
                %filename       ==  file on mail folder directory
                {rc}/filename   ==  file on .elm subdirectory of home
                {lib}/filename  ==  file on Elm's global library directory
          And also same epansions than expand_env():
                ~/filename      ==  file on home direccory
                Environment variable components

        - do_expand_path() to lib/read_rc.c, strnfcpy() to lib/strfcpy.c

        - Elm no longer assume that mail is from user, if fullname
          matches to sender's name. Now only addresses are used to 
          determine if To address should be displayed instead of From 
          address. Addresses from elmrc option alternatives is now
          matches also agaist From: -header. Use elmrc option alternatives 
          to specify your address if Elm now shows your name instead of 
          To on list.

        - "Now it compiles under hpix 9.05 + gcc 2.7.2.
           There is just a single warning left:

           gcc -I../hdrs -fpcc-struct-return  -O      \
                -c schedule.c -o schedule.o
           schedule.c: In function `real_wait':
           schedule.c:195: warning: passing arg 2 of `select' 
               from incompatible pointer type
           schedule.c:195: warning: passing arg 3 of `select' 
               from incompatible pointer type"
         Reported by: Emmanuel BIGLER <bigler@lpmo.univ-fcomte.fr>
        > Guess the fix for HPUX [ perhaps it does not work and is 
          definately untested... ]
 
        - Add support read-only folders (but not mailboxes -- they 
          can not be opened read-only). If lock_folders is set,
          lock them with shared (or read lock) and not with exclusive 
          lock.
         Promted by: Gertjan van Oosten <gertjan@West.NL>,
                     Hon-Yin Kok <hkok@yoda.unl.edu>
        * "Please find attached a patch that makes ELM work with 
           read-only mail folders (archived mail folders are read-only 
           in our environment)."
         From: Gertjan van Oosten <gertjan@West.NL>
         [ Actually that patch is not used... ]

        - "We are using elm on (the rather old platform) SunOS4.1.3_U1.
           I tried the latest two versions -71 and -72, which do not 
           compile with gcc-2.8.1 (and -2.7.2) due to some (for this 
           platform) strange definition in hdrs/mbx_imp.h. There "FILE" 
           is used as a struct name, but this is (on this platform) a 
           define in stdio.h "#define FILE    struct _iobuf" and therefore 
           crashes the compile."
         From: Jan Weerts <weerts@pu.informatik.tu-darmstadt.de>

        - "This is not really an elm bug, but it helps; under Linux 
           with libc version glibc-2.1 (RedHat 6.1 for example) elm 
           fails to compile since some header files have been changed. 
           Older versions exist in the directory 
           /usr/i386-glibc20-linux/include so it's necesary to add the 
           '-I' flags to the compiler. There's a patch in attachment 
           to the Configure script that checks if the directory exists 
           and if it does adds it to the list of c-flags."
          From: Bojan Bistrovic <bojanb@physics.odu.edu>
          [ I heavy modified that patch, I hope that I did not
            broke it... ]

        - Generate actual patchnames for files to FILES section
          of elm.1 and elmcharset.1 manual pages (instead of using 
          /usr/local/lib always.)

        - Let Configure script automatically suggest -woff 1009
          to cflags on IRIX 6.5

        - If Configure does not be able to generate mapping
          from locale to MIME charset, mark locale as '(unknow)'
          on elm.mimecharsets instead of defaulting to display 
          charset.
        - Fix ConfTool/LocaleMap
        - Configure -S now updates bin/elm.mimecharsets also.
        - Mark EBCDIC as '(unsupported)'

        - Fix unfolding of header on src/newmbox.c, add
          unfold_header() to lib/mbox.c

        - New elmrc option extra-mailbox-dir, which gives directory 
          on where folders are considered to be mailboxes (ie. to
          they can arrive new mail when they are open.)
         Prompted by: Geir Johannessen <joge@stud.ntnu.no>

        New files:
                hdrs/cs_imp.h
                lib/string.c
                lib/cs_binary.c
                lib/panic.c
                lib/hdrdecode.c
                lib/hdrencode.c
                src/id_phrase.c
                lib/stringbuffer.c
                hdrs/sb_imp.h
                lib/sb_mem.c
                lib/sb_file.c
                ConfTool/charaliases.map
                ConfTool/mapfiles
                ConfTool/GenCharmap

        Removed files:
                lib/parsarpwho.c
                src/returnadd.c

        New elmrc options:
                page-known-charsets
                extra-mailbox-dir

Changes of Elm2.4ME+ PL72 (25) compared with Elm2.4ME+ PL71 (25)
----------------------------------------------------------------

        - Elm dies (exits) after sending mail sometimes.
         Reported by: Laura Kataja

        - "We've had some trouble with the pgp5 support with 
           regards to signing messages using elm-2.4ME+70.  When 
           trying to sign messages the error message

             Pgp returned error status 7

           appears and the message isn't signed.  This appears to 
           be because a couple of pgp2 flags have made their way into 
           the pgp5 support.  The following patch fixes things 
           (for me at least):"
         Reported by: Greg Lewis <glewis@trc.adelaide.edu.au>
          [ patch not used ]
          "Ok, I see what you're saying (I didn't understand which 
           PGP executable was being called in the first case obviously :).  
           pgps, which does only signing, doesn't have the -s flag though 
           and neither pgpe nor pgps take a -w flag."
         Reported by: Greg Lewis <glewis@trc.adelaide.edu.au>
        > Dropped ws -flags from PGP_SIGNED_MESSAGE case.
          [ rename() will wipe the original file (that what -w flag did.) ]

        - Dropped RENAME and rename() from lib/opt_utils.c
          In other words rename() is now required to be provided 
          by system.

        - "There's a bizzare bug in last four versions of elm 
           (ELM 2.4ME+ PL67 - 70). It's related to the ispell:
           when you use ispell, every other character I type gets 
           "swallowed" somehow, meaning that the ispell doesn't see 
           it but elm does.  The effect is that you have to type every
           letter twice while running ispell, and then after you're
           finished all those letters get feeded to elm's menu:

   Please choose one of the following options by parenthesized letter: s
               e)dit message, edit h)eaders, s)end it, or f)orget it.

           This isn't usually a problem since most of the time you use 
           space-character to skip word so it doesn't produce any erros, 
           but it's still a waste of time. "
         Reported by: Bojan Bistrovic <bojanb@physics.odu.edu>
        > Added Raw(OFF), Raw(ON) -pair around ispell.

        - Reset buffer of background_read() on curses.c when
          turning raw mode OFF.

Changes of Elm2.4ME+ PL71 (25) compared with Elm2.4ME+ PL70 (25)
----------------------------------------------------------------

        - Seems that is is not allowed try another connect() after 
          unsuccesfully one with same socket.
        > If error was EINVAL, close and reopen socket.

        - Autoadd comma (',') after old addresses when adding new
          address on header editing screen.
          Promted by: Tom Haynes <thomas@netapp.com>,
             Siegfried Schmitt <Siegfried.Schmitt@rz.uni-karlsruhe.de>

        - Use on util/newmail.c same kind utime usage on lib/mbox.c

        - Filter was dropped from installation and compilation
          on Elm 2.4ME+ PL0 (25). Drop sources also from distribution.
          Filter is maintained separately by 
                Philip Brown <filter@bolthole.com>

          <URL: http://www.bolthole.com/filter/ >

Changes of Elm2.4ME+ PL70 (25) compared with Elm2.4ME+ PL69 (25)
----------------------------------------------------------------

        - Header was not properly terminated on newmbox.c
          after unfolding resulting duplicate last character
          of header.

        - add OpenBSD to a couple checks (utils/newmail.c)
        - correct a time_t cast that was missed (src/mailmsg2.c)
        - check for fork returning -1 in the one fork() that doesn't 
          do that yet
        - pipes should be closed if the fork() fails (src/syscall.c)  
          This isn't tested, but it makes sense to me.
         From: Paul Janzen <pjanzen@foatdi.harvard.edu>

        - "Under HP-UX 10.20, read_rc.c needs:
           extern int h_errno;"
          Reported by: Zube <Zube@CS.ColoState.EDU>

        - "Please find attached a patch to make newmail.c compile on 
           Solaris 2.x."
         From: Gertjan van Oosten <gertjan@West.NL>

        - "Please find attached a patch to fix an external pager bug; 
           if a folder has for example an incorrect Content-Length header, 
           ELM would screw up."
         From: Gertjan van Oosten <gertjan@West.NL>
        > [ Actually patch was not used. ]

        - "Also, under Solaris 2.6/7, HP-UX 10.20 and
           FreeBSD 3.1, if the mailbox does not exist 
           (i.e. /var/mail/user), elm will dump core.  
           If the file exists but is zero length, there 
           is no problem. This problem does not occur on linux 
           (Redhat 6.0 in my tests)."
         Reported by: Zube <Zube@CS.ColoState.EDU>
        - Also happened on IRIX

Changes of Elm2.4ME+ PL69 (25) compared with Elm2.4ME+ PL68 (25)
----------------------------------------------------------------

        - bin/from.c and bin/newmail.c was trying to create
          dotlock file $MAIL.lock
        > Changed prepare_read_folder second argument to be
          enum prepare_mode { PREPARE_NORMAL = 0, 
          PREPARE_NEW_ONLY = 1, PREPARE_NOLOCK = 2, 
          PREPARE_NEW_ONLY_NOLOCK = 3 };

        - POP code now uses UIDL and remembers which messages 
          are really read. UIDL's of read messages
          together which status is stored files with
          name .username@hostname to folder (usually ~/Mail)
          directory.

        - "Further testing also reveals that excluding (changing 
           to 'undef') dotlock in the pre-configure script breaks 
           the build:

           cc -I../hdrs     -c mbox.c
           mbox.c: In function `mbx_free_spool':
           mbox.c:972: structure has no member named `lockfile'

           Since the lockfile member is excluded from the struct in 
           mbx_imp.h based on the define for USE_DOTLOCK_LOCKING, and 
           the mbox.c file does not use ifdefs around
           the various code where the lockfile member is used."
         Reported by: Keith Ward <kward@panther.net> 

Changes of Elm2.4ME+ PL68 (25) compared with Elm2.4ME+ PL67 (25)
--------------------------------------------------------------

        - Fix "Would you like the domain name appended?" query.
          [Broken on PL46]

        - Dropped HOSTCOMPILED
        - Dropped xenix special case from Configure (about uuname)
        - If gethostname() and uuname() are not supported on
          system, hostname must be given on system elm.rc file.
        - On some systems try also use gethostbyname() to
          get hostfullname and hostdomain from hostname.
          If that succees, getdomainname() is not used anyway.
        * Note that host's domain name is still compiled in.
        -> These changes make it closer that some time in future 
          it is possible to do binary distributions of elm.
          Notice however that there is still too much compiled in
          configuration for binary distribution.

        - Try use dnsdomainname (that is on Linux) to get domainname
          on Configure.
         "Third, I don't know if this is supposed to work this way, 
          but the default domain name offered is always .UUCP ; it 
          would be nice if the Configure shell could get the domain 
          name correctly (via 'dnsdomainname' for example)."
         Suggested by: Bojan Bistrovic <bojanb@physics.odu.edu>

        - "I've had some problems when trying to compile 
           ELM 2.4ME+ PL66 (25) under Linux (RedHat 6.0, 
           egcs-2.91.66, with "-fpcc-struct-return").

            in read_rc.c, the compilation would fail with the error:

            read_rc.c:79: initializer element is not constant"
         Patch from: Bojan Bistrovic <bojanb@physics.odu.edu>   
        > Added init_debugfile() also to utils/answer.c,
          utils/elmalias.c, utils/fastmail.c, utils/from.c,
          utils/newalias.c,  utils/newmail.c, utils/prlong.c,
          utils/readmsg.c, utils/elmcharset.c
        * Also reported:
          "I have the following compilation error in elm-me pl66

            platform : linux redhat 6.1
            This bug did not sho up in pl 62 used routinely.

            read_rc.c:79: initializer element is not constant"
         Reported by: Emmanuel BIGLER <bigler@lpmo.univ-fcomte.fr>
          "I've had this bit of a problem compiling elm-2.4+ME62. 
           Actually, the error has been around since the elm-2.4+ME57 
           stage, and probably even before then. The error involves 
           anyone using GNU libc 2.0 or higher. I'm using glibc-2.1.2 
           on my linux box, kernel 2.1.12 and 2.3.18. Compilation and 
           error follow:

             cc -I../hdrs  -O      -c read_rc.c -o read_rc.o
             read_rc.c:78: initializer element is not constant

           line 78 in read_rc.c, has:
 
            FILE *debugfile = stderr;  /* file for debug output            */

            According to the Glibc FAQ, at http://sourceware.cygnus.com/glibc, 

            3.9. I get compiler messages "Initializer element not constant" 
                with stdin/stdout/stderr. Why?

            {RM,AJ} Constructs like:
            static FILE *InPtr = stdin;

            lead to this message. This is correct behaviour with glibc since 
            stdin is not a constant expression. Please note that a strict 
            reading of ISO C does not allow above constructs.

            One of the advantages of this is that you can assign to stdin, 
            stdout, and stderr just like any other global variable (e.g. 
            `stdout =my_stream;'), which can be very useful with custom 
            streams that you can write with libio (but beware this is not 
            necessarily portable). The reason to implement it this way were 
            versioning problems with the size of the FILE structure.

            To fix those programs you've got to initialize the variable at run
            time. This can be done, e.g. in main, like:

             static FILE *InPtr;
             int main(void)
             {
               InPtr = stdin;
             }

            or by constructors (beware this is gcc specific):
 
            static FILE *InPtr;
            static void inPtr_construct (void) __attribute__((constructor));
            static void inPtr_construct (void) { InPtr = stdin; }

            I've tried a number of changes like this, in the read_rc.c 
            program,  which all gave me errors. I'm open to trying to find 
            the right place to make the correction, but seeing that just 
            about every file in the src directory uses debugfile, I'm a bit 
            baffled on where to add this in. If you have any ideas on how to 
            resolve this, I'd love to know how.  Thanks in advance!"
         Reported by: Brad Littlejohn <tyketto@zip.omnilinx.net>

        - Added information to output of 'elm -vv' about compiled in 
          host's domain name and is domain part (@hostname) added to 
          address of From: -header (and other).

        - SECURITY: print_msg() on src/syscall.c was using popen()
          (without resetting egid).
        - Added to start_run() (melib/src/syscall.c) ability to make
          output (and error) pipe.
        > Converted print_msg() on src/syscall.c to use start_run()
        - Let print command to print output to screen (do not
          redirect to /dev/bull -- was broken on some earlier version)

        - Added new command Print text -command (P). This
          prints decoded content of message.

        - SECURITY: read_in_messages() on src/editmsg.c was using 
          popen() (without resetting egid).
        > Converted read_in_messages() in src/editmsg.c to use 
          start_run()

        [ If SAVE_GROUP_MAILBOX_ID is defined, these popen's
          most likely do not cause any problem. In that situation
          Elm run's on most of time with resetted egid. ]

Changes of Elm2.4ME+ PL67 (25) compared with Elm2.4ME+ PL66 (25)
--------------------------------------------------------------

        [ Warning: This have quite much changes on folder 
                   handling, so please report new bugs which 
                   you observe. Also POP code is little
                   tested. ]
        
        > Moved most of code from bytes() on src/file_util.c to
          lib/file_util.c
        > Moved save_file_stats() from src/fileio.c to lib/file_util.c
        > Moved open_or_create() from src/file_util.c to lib/file_util.c
        > Moved copy_to_folder() from src/file_util.c to lib/file_util.c
        > Moved copy1() from src/file_util.c to lib/file_util.c
        > Moved elm_chown() from src/util.c to lib/file_util.c
        > Side effect is that incoming mailbox is keep locked
          during reading of mails -- not just looking new size
          of it
        - Added lib_prompt() and lib_transient() to lib/output.c
        - lib/schedule.c does I/O multiplexing with select() or poll().
        > NOTE: Code using poll() is NOT TESTED
        - lib/mbox.c provides access routines for folders.
          Also it provodes SPOOL (mailbox) and NON_SPOOL (normal folders)
          type folders.
        - lib/pop.c provides POP type folders.

        - POP mailboxes can be accessed by giving username@hostname
          as folder name. Note however that:
                - Offline reading is not supported.
                  In other words this code does not follow
                  'download and delete' -method.
                  However temporary file is used same way
                  than is used in case of unix mailbox.
                - It is not possible to e)dir POP mailbox
                - Automatic notification of new mails seems not
                  work. You need resync ($) folder instead.
                - It is not possible to s)ave or C)opy to
                  to POP mailbox (POP does not have STORe command.)
                - Elm does not remember which messages are 
                  read and which are new (UIDL command should be
                  used.) However POP server may perhaps provide
                  artifcial Status: -header -- on some situations
                  information of that may be misleading (for
                  example in resyncing ($)).
                - Messages are keep on POP mailbox until you D)elete
                  them and then resync ($) or quit.
                - On resync ($) POP connection is closed and
                  reopened. Because password is not stored to
                  memory, it will be reasked.
                - POP code is very little tested and quite sure
                  there may be some bugs...               
                - Sending of mail still happens via calling
                  of local mailer -- SMTP or Message
                  Submission protocol is not supported.
                - POP code uses TCP port 110 (POP3)
                - Messages from POP mailboxes are saved to folders
                  with POP's (= Internet's) EOLN convention. That
                  is CRLF. In other words thet are not converted
                  unix's EOLN convention which is LF only. Elm
                  should able to handle that (and that is more
                  'binary' mail firendly.) If you need mail
                  text without extra CRes, use 'S' (save text)
                  command.
                 
        - Note that it is currently explicite disallowed
          $MAIL variable to be interpreted as POP mailbox
          even if you put it to form username@hostname.         
          Also saving to '!' may end to file name username@hostname
          if you have put that to elmrc variable incoming-mailbox.

        - Note that elmrc variable 'mailbox' was synonym
          for variable 'receivedmail' which teels to which
          folder to store receiced mails (normally =received)
          Now elmrc variable 'mailbox' is removed.
        - New elmrc variable 'incoming-mailbox' can be
          used to tell location of POP mailbox

        - If you c)hange folder, opening of new folder is done
          before old is leaved (so do not change from local
          mailbox ($MAIL) from POP mailbox $USER@localhost
          -- bad things may happen.)

        - C)opy and s)ave does not use lib/mbox.c routines,
          so if you try save to user@hostname, you ended to
          save to file with that name!

        - Lock file (.dot) is removed is removed if if it more that 10 
          minutes old (and mailbox is not accessed). That test is done
          after when lock is tried to create to X times, where X is
          given on Configure -time.
        > In other words question "Should it REMOVE the lock file after 
          X checks? " is removed from Configure.

        - Converted utils/from.c to use lib/mbox.c.
        - Converted utils/newmail.c to use lib/mbox.c
        - Note that utils/readmsg.c still does not use mailbox 
          (lib/mbox.c) routines!

        - error() on src/out_utils.c auto sleeps if needed
          (sleep is skipped if there is keyboard input (on some OSes))
          -- transient() (via lib_transient()) may be used if wait is
              not wanted.

        - "I have always felt a need for an unread function in Elm. 
           Specifically, sometimes I want to mark a message as unread 
           even though I have read it in order to make it stand out the 
           next time I open the folder.

           So when I finally had some time free I decided to make an unread 
           function tied to the 'U' key. The work is based on a similare 
           solution by bruceb@locus.com (Bruce M. Binder) way back in 1995 
           for the last official version of Elm.

           I would be happy if you could apply the patch to elm-2.4ME+PL67. 
           The patch is enclosed at the end of the mail."
         From: Geir Johannessen <joge@stud.ntnu.no>

        - Removed unused (and broken) leapyear macro from src/date.c
        - Removed extra 
               extern char *strpbrk();
          utils/answer.c -- already defined on header files.

        - Added new command Save text -command (S). This
          saves or copies decoded content of message to file
          or folder.

        [ Undo Elm2.4ME+ PL66s patch before installing
          this patch. Security fix of PL66s is included
          on PL68. ]

        New files:
                lib/mbox.c
                lib/file_util.c
                lib/pop.c
                hdrs/mbx_imp.h
                lib/schedule.c

        New elmrc options:
                incoming-mailbox

Changes of Elm2.4ME+ PL66s (25) compared with Elm2.4ME+ PL66 (25)
---------------------------------------------------------------

        - SECURITY: print_msg() on src/syscall.c was using popen()
          (without resetting egid).
        - Added to start_run() (melib/src/syscall.c) ability to make
          output (and error) pipe.
        > Converted print_msg() on src/syscall.c to use start_run()
        - Let print command to print output to screen (do not
          redirect to /dev/null -- was broken on some earlier version)

        - SECURITY: read_in_messages() on src/editmsg.c was using 
          popen() (without resetting egid).
        > Converted read_in_messages() in src/editmsg.c to use 
          start_run()

        [ If SAVE_GROUP_MAILBOX_ID is defined, these popen's
          most likely do not cause any problem. In that situation
          Elm run's on most of time with resetted egid. ]

Changes of Elm2.4ME+ PL66 (25) compared with Elm2.4ME+ PL65 (25)
--------------------------------------------------------------

        - Extra NotKnowPrint (875) and MailNotSaved (876)
          removed from nls/C/C/C/s_elm.m.
         Problem boted by: Oota Toshiya <oota@ppd.fc.nec.co.jp>

        - Added utils/elmcharset.c
                lib/charset.c
                doc/elmcharset.1
        > MIME character set (and others) can be now presented with
          pointer of type charset_t. Changed charset and display_charset
          to be type charset_t.
        > Moved get_charset_map_info() to lib/charset.c from
          lib/read_rc.c
        [ Added load_charset_map_info() and implemented
          get_charset_map_info() with load_charset_map_info() ]
        * load_charset_map_info() now parses additional information
        > Moved mime_parse_content_opts() to lib/charset.c from
          melib/mime_parse.c

        - On .elm/mime.charsets and {lib}/elm.mimecharsets there may
          be lines like
                -               ISO-8859-1;MIME-subset=US-ASCII
          That kind definition may be used instead of compatcharsets
          elmrc option. 

        - Added new elmrc -variable type DT_FUNC (call function for
          value). Now compatcharsets -option is that kind
          (function charset_compatfunc).

        - Removed rmt-install target from Makefiles

        New tools:
                elmcharset

Changes of Elm2.4ME+ PL65 (25) compared with Elm2.4ME+ PL64 (25)
--------------------------------------------------------------

        - Result of have_pgp() was not checked on copy_pgp
          (on fileio.c)

Changes of Elm2.4ME+ PL64 (25) compared with Elm2.4ME+ PL63 (25)
--------------------------------------------------------------

        - Default to PGP 5 only if pgp5-dir is given.
          Otherwise use pgp-version when reading PGP 5 mail.

Changes of Elm2.4ME+ PL63 (25) compared with Elm2.4ME+ PL62 (25)
--------------------------------------------------------------

        - Some support for different PGP versions.
          New elmrc options:    
                pgp2            (Gives path of PGP 2 binary)
                pgp5-dir        (Gives path of directory for PGP 5 bianries)
                gpg             (Gives path og Gnu PG binary)
                pgp-version     Gives what program to use when signing
                                or encrypting mail. One of 'pgp2', 'pgp5'
                                or 'gpg'.
          Elmrc option pgp is now obsolete.
        - Default action for messages which includes PGP keys is 
          now extract keys
        - Ctrl-E still extract keys. Difference is that 
          uses version which is given on pgp-version
          elmrc option and do not take account MIME.

        - When sending encrypted mail and PGP key not found
          for recipient, menu
                e)dit recipient list, s)kip recipient, q)uit
          is provided.
        - Also if you visit pgp menu and do nothing (or fail).
          Default is changed to 'p' (go again pgp menu). 
        > That try prevents sending mail accidentally without
          encrypted if you tried to send it on encrypted form

        > Added DT_LONG for elm_timeout (DT_NUM was wrong)
        > Added DT_PGPVER

        - Some support for multipart/encrypted on reading side.
        - Support for application/pgp-encrypted protocol.
        > Attachments on application/pgp-encrypted are not supported.

Changes of Elm2.4ME+ PL62 (25) compared with Elm2.4ME+ PL61 (25)
--------------------------------------------------------------

        - If compiled with REMOVE_AT_LAST defined, there is
          error 'lock.c:286: `lockfile' undeclared' error.
         Reported by: bigler@jsbach.univ-fcomte.fr

        - Some code moved from src/syscall.c to hdrs/syscall.c
        
        - Some support for multipart/signed on reading side.
        - Added elmrc variable "pagesigned". If set
          parts with unknown protocolls are paged.
        - Support for application/pgp-signature protocol.

        - Use %Q on add_parameter()

        New elmrc options:
                pagesigned

Changes of Elm2.4ME+ PL61 (25) compared with Elm2.4ME+ PL60 (25)
--------------------------------------------------------------

        - "Elm fails to remove the /tmp/print.xxxx file after 
           sending a message to the print spooler.

           After a "print " command, a copy of the message is left in 
          /tmp as /tmp/print.xxx"
         Problem noted by: Konstantinos Konstantinides <kk@StreamMachine.COM> 

        - Some fixes so that this compiles more cleanly on
          IRIX 6.5. You still want use -woff 1009 however.

        - Add support for ISO-8859-15 locales (*.ISO8859-15) 
          of IRIX 6.5

        - Added special conversion type 'Q' (mean to quoted string)
          to elm_vmessage() [lib/output.c]

        - "In Configure, when testing for the sendmail version,
           something (even an empty string) should be supplied on
           STDIN to the $mailer. Otherwise, if $mailer is actually a
           wrapper script that expects something on STDIN, it could
           wait forever for input."
          From: mike@hyperreal.org
        > Redirected $mailer's input to /dev/null on test.
 
Changes of Elm2.4ME+ PL60 (25) compared with Elm2.4ME+ PL59 (25)
--------------------------------------------------------------

        - "elm_vmessage()" wasn't correctly converting numbers 
           with "%d", "%x", or "%X" - there was an extra "6" in 
           all the format strings, so the digits 7, 8, and 9 got 
           converted to 6, 7, and 8.  One of the few places where
           software would work *better* in 2000.... :-)"
          From: Guy Harris <guy@netapp.com>

        - "Use "$echo" rather than "echo" in the "Configure" script, 
           so if it had to explicitly use "/bin/echo", it does so in 
           all places where it is echoing a string that's not supposed 
           to have an NL at the end (otherwise, you may end up with

             [Type carriage return to continue] \c

           with the extra "\c" at the end)."
          From: Guy Harris <guy@netapp.com>

Changes of Elm2.4ME+ PL59 (25) compared with Elm2.4ME+ PL58 (25)
--------------------------------------------------------------

        - Undo AFS patch of PL58 -- it seems cause crash...

Changes of Elm2.4ME+ PL58 (25) compared with Elm2.4ME+ PL57 (25)
--------------------------------------------------------------

        - Added %x and %X formats to elm_vmessage (lib/output.c)

        - Although doc/mime.charsets is based on IRIX 6.2,
          added to it following locales from GNU locales (Linux):
          cs_CZ, eu_ES, ga_IE, no@nynorsk, sr_YU
          (eu_ES, ga_IE, no@nynorsk, sr_YU marked as unsupported)

        - Added ConfTool/LocaleMap, ConfTool/GrepValue
        - Little more intelligent generation of elm.mimecharsets

        - "We are using the "fastmail" program to send mass mailings on
           our internal network. For some reasons I was looking for the
           possibility to set the "Precedence:"-header. But I did not find
           any. Therefore I have added another option to the fastmail 
           program to aspecify a "Precedence:"-header." 
        From: Norbert Gruener <nog@MPA-Garching.MPG.DE>

        - Removed I_STDLIB
          now if ANSI_C is defined stdlib.h is used,
          otherwise not

        - Changed const keywords to CONST macros

        - Close mailbox after in is read -- keeping it open
          prevents mail to arirve when AFS is used.
         Patch from: Norbert Gruener <nog@MPA-Garching.MPG.DE>
        [ Undone in PL59 ]

        - Put forward structure definitions inside of
          #ifdef ANSI_C

        - HP-UX gives warning
          "../hdrs/elmlib.h", line 123: warning 617: Redeclaration of tag "tm" ignored.
         Problem noted by: oota toshiya <oota@pes.com1.fc.nec.co.jp>
        > Removed definition and changed replaced #include "elmlib.h"
          with #include "headers.h" (to avoid opposite error) on:
          lib/atonum.h, lib/expand.c, lib/get_tz.c, lib/getword.c,
          lib/ldstate.h, lib/len_next.c, lib/mail_gets.c, lib/msgcat.c,
          lib/qstrings.h, lib/safemalloc.h, lib/headers.h, lib/strmcpy.c,
          lib/validname.h

Changes of Elm2.4ME+ PL57 (25) compared with Elm2.4ME+ PL56 (25)
--------------------------------------------------------------

        - Add missing 'return 0' to buffer_to_text() on 
          src/hdrconfig.c

        - Certain aliases expansions was causing Elm ME+
          to crash on aliaslib.c
         Problem noted by: Bruce Momjian <root@candle.pha.pa.us>

Changes of Elm2.4ME+ PL56 (25) compared with Elm2.4ME+ PL55 (25)
--------------------------------------------------------------

        - Add elmrc option "convert-comment-to-fullname".
          When this is set address
                        address (comment)
          is parsed as
                        address (fullname)
          instead. That is for compatibility to older versions
          of Elm. Option "convert-comment-to-fullname" is
          set by default.

        - Fix compile time error if USE_DOMAIN is defined
        - Fix compile time error if MMDF is defined
        - Some MMDF fixes from Bob Broughton <bob.broughton@zadall.com>
          for PL37. They are little modified (and untested).
        * MMDF sure still do not work

        New elmrc options:
                convert-comment-to-fullname

Changes of Elm2.4ME+ PL55 (25) compared with Elm2.4ME+ PL54 (25)
--------------------------------------------------------------

        WARNING: That patch is biggest so far, so there is
                 much changes. So expect bugs. Specially
                 address handling and aliases expansions
                 are rewritten.

        NOTE: Check locale setting by running:
                elm -vvvvv

        - Drop translate_return() from src/addr_util.c 
          (not longer used)
        - Drop fix_arpa_address() from src/addr_util.c
          (not longer used)

        - handle_reply_to() on src/reply.c was not decoding 
          MIME -encoding (decode_who_none was used instead of
          rfc1522_decode_structured)

        - Add get_alias_address_l(), do_expand_group_l(), do_get_alias_()
          (and helper function _add()) to src/aliaslib.c
        - Implement get_alias_address() (*) in terms of
          get_alias_address_l() in src/aliaslib.c
        - Drop do_expand_group(), add_name_to_list(), do_get_alias()
          from src/aliaslib.c
        - Moved expand_list() (*) to aliaslib.c  (only used
          on aliaslib.c now) from mailmsg1.c and simplified
        - (*) Actually get_alias_address(), expand_list() on aliaslib.c
              and build_address() on src/addr_util.c is not used any
              more -- them are put inside of #if 0 ... #endif
         [ get_alias_address,  expand_list and build_address 
           is removed on PL67 ]

        - Don't ask First and Last names for group aliases.

        - Add build_address_l(), argv_to_expanded(),
          expanded_to_edit_buffer() and
          update_expanded_from_edit_buffer() to src/addr_util.c
        - Add add_expanded_(), add_textual_(), zero_expanded_address()
          make_surface(), free_expanded_address() helper functions
          to src/addr_util.c
        - Add struct mailing_headers and zero_mailing_headers()
          and free_mailing_headers() functions to src/mailmsg1.c
          [hdrs/me.h]
        - Dropped remove_hostbang() from src/mailmsg2.c

        - src/hdrcnfg.c uses now struct mailing_headers. 
        > Added inpval_to, expval_to, hdrproc_to,
          inpval_cc, expval_cc, hdrproc_cc, inpval_bcc,
          expval_bcc, hdrproc_bcc, inpval_subject,
          expval_subject, hdrproc_subject, inpval_reply_to,
          expval_reply_to, hdrproc_reply_to, inpval_action,
          expval_action, hdrproc_action, inpval_expires,
          expval_expires, inpval_priority, expval_priority,
          hdrproc_priority, inpval_precedence, expval_precedence,
          inpval_in_reply_to, expval_in_reply_to, 
          hdrproc_in_reply_to, inpval_userhdr, expval_userhdr
        > Modified hdrproc_expires, hdrproc_precedence,
          hdrproc_userhdr
        > Added hdr_to_buffer, hdr_to_expval, buffer_to_header,
          text_to_buffer, text_to_expval, buffer_to_text,
        * NOTE: Now addresses are show as
                fullname <address>
        - address (comment) kind usage is preserved if it
          is used.
        
        - editmsg.c uses now struct mailing_headers. 
        > get_with_expansion() replaced with
          get_addr_with_expansion() and get_text()
        > Common part of these moved to new procedure get_it()
        - Added have_editor() to editmsg.c
        - edit_the_message() takes now arguments editor
          and headers (struct mailing_headers)

        - send_msg_middle() and send_msg_argv() to src/mailmsg1.c.
        - Dropped send_msg() from src/mailmsg1.c
          
        - Common part of mail() (src/mailmsg2.c) and remail() 
          (src/remail.c) moved to new mail_backend() (mailmsg2.c).

        - Added comment field to struct addr_item. Now
          addresses are parsed (lib/getaddr.c) as: 
                fullname <address> (comment)

        - Although doc/mime.charsets is based on IRIX 6.2,
          added to it following locales from GNU localdb (Linux):
          de_BE, de_CH, de_LU, en_DK, en_GB, en_IE,
          et_EE, fo_FO, fr_LU, gr_GR, kl_GL, nl_NO, bt-br,
          ru_RU, sl_SI, lt_LT, lv_LV
          (I think that bt-br is typo on GNU localdb -- should be
           bt_BR I suppose. lt_LT and lv_LV I marked as unsupported
           because it is uncertaing what is charset associated to them.)
        - Now configure tries to do 'locale -m'  for list of mapping
          tables (GNU locale/localdef) and put result to elm.mimecharsets 
          with key like *.tablename. I hope I have understand that
          'locale -m' correctly.                
        - Now is possible to generate $lib/elm.mimecharsets
          from scratch even when it exists already.

        - If I_LOCALE is defined (Elm will call setlocale()) and
          message catalog routines are found, then Elm will
          use system's message catalog routines without asking.

        - If I_LOCALE is defined (Elm will call setlocale()),
          assume that isprint() is not ASCII only (do not
          ask from user if isprint() is broken).

        - If I_LOCALE is defined (Elm will call setlocale()),
          assume that tolower() and toupper() works without 
          testing, because ELm's replacement routines are
          ASCII only.

        - Elm -vv now prints dedination of I_LOCALE, ASCII_CTYPE
          and BROKE_CTYPE also.

        - If ctype routines are ASCII only, set MIME charsets to
          US-ASCII without asking from user.

        - Checking that isprint(), toupper(), tolower(), 
          [isupper(), islower()]
          are called with unsigned char -values.

        - Added elmrc -variable sort-thread-max-time. This controls
          how long can be time (on days) between mails with can
          be considered to be same thread when using threaded
          sort.

        - Dropped remailer stuff (and USE_REMAILER), src/remailer.c
        - Dropped src/returnadd.c, removed kludge()

        - Added have_printout() to src/syscall.c

        - Added test to Configure to see if shared libc.so is
          actually is GNU ld script (for Debian Linux 2.1).
        - Added test to Configure to look look EWOULDBLOCK from 
          /usr/include/asm/errno.h on Linux
        - Added test to Configure to look look F_SETLK from 
          /usr/include/asm/fcntl.h on Linux
        - Changed texts and defualts about locking on Configure
        - Now Configure defaults Linux 2.0 with flock locking.
          On Linux 2.1 and 2.2 both flock anf fcntl locking.
          On Linux 1.* Configure defaults fcntl locking.
        - On sysv systems (or non-BSD systems) Configure defaults 
          no flock locking.
        - Change default of COnfigure to not use getdomainname()
          for mail domain. It gives NIS domain.
        - Accept none as printer spooler name on Configure.
          Note that on this case printing command must be set on
          global elm.rc
        - Search /var/spool/mail one candinate for mail spool directory
          on Configure (for Debian Linux 2.1)

        - Removed memory models question form Configure. It is
          not used.
        - Removed PDP11 from Configure.

        New elmrc options:
                sort-thread-max-time

Changes of Elm2.4ME+ PL54 (25) compared with Elm2.4ME+ PL53 (25)
--------------------------------------------------------------

        [ Before applying this patch, undo Elm2.4ME+ PL53Y -patch. ]

        * "Kari, the following headers, cause with 'g'roup reply 
           two instances of the same adress the reply is sent to."
          Problem noted by: Roeland Th. Jansen <bengel@grobbebol.xs4all.nl>
        - Added okay_address_l() to lib/okay_addr.c 
        - Added current_header argument to send_msg().
        - Changed handle_reply_to() and get_and_expand_everyone()
          to return struct addr_item array.
        - Changed optimize_and_add to process struct addr_item 
          array.
        - Added current_header argument to src/send_msg()
        - Added send_msg_l() and expand_list() to src/mailmsg1.c
        - Dropped get_return() call from src/alias.c
        - Dropped get_return() call from src/file.c
        - Dropped '%' command (get_return() call) from src/elm.c
        - Dropped '%' command (get_return() call) from src/showmsg_c.c
        - Removed get_return() function from src/returnadd.c
        - Use okay_address_l() in lib/displaddr.c
        - Removed figure_out_addressee() and  lib/figadrssee.c
        - Removed okay_address() from lib/okay_addr.c

        -Remove uneeded initialization from utils/from.c (frm).
         Already done on inet_defaults().

        - Call abort() if emergency_exit() is called with
          interrupt -set (for helping of debugging)

        - Test that year >= 0 instead of year > 0 on 
          cvt_yearstr_to_yearnum(). That affects if
          year 2000 is given as 00.
         Year 2000 fix from: Ed Symanzik <zik@msu.edu>

        - Interpret years 100 - 199 as year + 1900
          (that is 2000 - 2099) in cvt_yearstr_to_yearnum(). 

        - Closing folder twise causes error message:
          Sorry, can't unlink the temp file /usr/tmp/mbox.$USER 
          [No such file or directory]!
         Problem noted by: Jussi Kaurola <kaurola@oxygen.FMI.FI>

        - Add one more buffer bounding check for gcos_name().

        - Fix incorrect match on map_display_charset() 
          (lib/read_rc.c). May causes that display_charset
          is mapped to "" string.

        - Allow -A (Attach) option to work on batch mode.

        - "I've put together a patch which implements a threaded 
           sort order for elm2.4.ME+43, which I'd like to see get 
           committed to the main distribution.  The sort is very 
           similar to the existing SUBJECT sort except that the 
           threads appear in chronological order based on the time 
           sent of the first message of the thread."
          From: Brian Dean <brdean@unx.sas.com>
       > Sorting of REVERSE THREAD was completely broken on given
         patch. I hope that I managed to fix it.

        - If =received is treated as mailbox (for example because
          of protection mask of folder), user if promted for
          "Move read messages to "received" folder? (y/n)"
          altough user is already on =received -folder.
          Hitting of 'y' can cause lost of folder.
         Problem noted by: Isaac Stoddard <u177k@gsde.hso.link.com>
        - Added same_file() to me.h and maked it non-static on
          newmbox.c

Changes of Elm2.4ME+ PL53Y (25) compared with Elm2.4ME+ PL53 (25)
---------------------------------------------------------------

        [ This is out of branch patch. ]

        - Test that year >= 0 instead of year > 0 on 
          cvt_yearstr_to_yearnum(). That affects if
          year 2000 is given as 00.
          Year 2000 fix from: Ed Symanzik <zik@msu.edu>
 
        - Interpret years 100 - 199 as year + 1900
          (that is 2000 - 2099) in cvt_yearstr_to_yearnum(). 
 
        - Closing folder twise causes error message:
          Sorry, can't unlink the temp file /usr/tmp/mbox.$USER 
          [No such file or directory]!
          Problem noted by: Jussi Kaurola <kaurola@oxygen.FMI.FI>
        
Changes of Elm2.4ME+ PL53 (25) compared with Elm2.4ME+ PL52 (25)
--------------------------------------------------------------

        - "I used to get 'emergency' errors when syncing a mail 
           folder (via shortcut '$') and sometimes when quitting.  
           The function file_util.c: copy_to_fh did not have a 
           'return(0);' at the end to catch the case when nothing 
           went wrong.  It was returning a random value instead.  
           This random return value was passed back up as a fatal 
           error.  Adding a return at the end seems to have solved 
           the problem."
         From: Marc Pawliger <pawliger@Adobe.COM>

        - "I am still experiencing a crash when composing a message 
           using Elm and I hit the '~p' shortcut to print out the 
           message in progress.  There is a NULL dereference happening 
           and elm crashes."
         Problem noted by: Marc Pawliger <pawliger@Adobe.COM>
        > Missing format string for Write_to_screen on editmsg.c.

        - Removed MIME configuartion option. Now MIME support
          is always compiled in.
        - Added elmrc option send-mime-plain-text. When this is not
          set, text/plain US-ASCII messages with encoding 7bit
          are sent without MIME headers. Default is that 
          send-mime-plain-text set.
        - Add print_EOLN(filedesc,mime_info->encoding_top) to some places.

        - Do append_sig() before needs_encoding() on mailmsg.c
          (case editor == builtin)

        - Move writing of Content-Length -value to copy_message_across()
        - cl_start, cl_end and cl_offsett moved to mime_send_t
          (not a mime informatuion actually) and no longer global
          information.
        - Only write content-length to copy of mail (do not send it)

        New elmrc options:
                send-mime-plain-text

Changes of Elm2.4ME+ PL52 (25) compared with Elm2.4ME+ PL51 (25)
--------------------------------------------------------------

        [ There is reported some problems on folder handling 
          on PL51. It is unclear if this fixes them. ]

        - Add possibility to specify on Configure what directory 
          check first for programs.
         Prompted by: Marc G. Fournier <marc.fournier@acadiau.ca>

        - Look /usr/share/locale also from locale directory
          (not only /usr/lib/locale)
         Prompted by: Mike Brown <mike@hyperreal.org>

        - Use more, if available (and only if Configure is 
          not run with -d option), to page bin/elm.mimecharsets
          
        - MMDF support patch 
         From: Konstantin Kuznetsov <cvs@florin.ru>
        
        - map_display_charset: use best match from file instead of
          first match

        - Reopen folder after unlink so that copy does not
          go nowhere!
         Problem noted by: Jacek Uminski <jaceku@tch.com.pl>

        - If folder locking is used, do not unlink and link
          folder, instead copy to it on leavembox.

        - skip_space was uninitialized on  rfc1522_decode_structured

Changes of Elm2.4ME+ PL51 (25) compared with Elm2.4ME+ PL50 (25)
--------------------------------------------------------------

        [ Warning: This have quite much changes on folder 
                   handling and locking, so please report 
                   new bugs which you observe. 
               
                   Before applying this patch, undo 
                   Elm2.4ME+ PL50s -patch.
        ]

        - Added struct folder_info and moved some variables
          to it (cur_folder, cur_tempfolder, folder_type,
          equivalent of mailfile, mailfile_size, lock_state,
          lockfile, create_fd)
        > Now copy of mailbox to /tmp is created little earlier. 
        > Mailbox is not opened second time for syscal locking.

        - Added pgp-sign-type elmrc -variable. Possible values are
          application/pgp, text/plain and text/x-pgp.
         Inspired by:  Will Day <willday@rom.oit.gatech.edu>


        - Added elmrc option readdatapercentinc (default 5).
          This tells how owten show percentage of read mailbox
          in "Reading message" -text.
        > Changed readmsginc elmrc options default to 100.
        > Notice that actual update frequence is determined
          by combination of both of these (readdatapercentinc
          and readmsginc)

        - Fix incorrect bound checking on putc_so_string()
          (state.c)

        - base64_decode was passing wrong buffer size to
          state_getl
         Problem noted by: Yury Yaroshevsky <yk@info.dgtu.donetsk.ua>

        - Move definition of SYSCALL_LOCKING to defs.h from lock.c
        - Add indication  of SYSCALL_LOCKING to elm -vv output
        - Remove lock-in-copy option if SYSCALL_LOCKING  is
          not compiled (so that elmrc is not filled with irrelevant
          options)
        - Added lock-folder elmrc option (available if SYSCALL_LOCKING
          is compiled). Default: on

        - For forward compatibility: strip text after ; on
          charset= and display= -charset lines and on mime.charsets
          -file (function get_charset_map_info).

        - attach_save (on src/attach.c) was saving one byte too
          less data when saving of attachment which do not require
          decoding.

        - Generation of elm.mimecharsets was not very smart.
         Problem noted by: Mike Brown <mike@hyperreal.org>

        New elmrc options:
                pgp-sign-type
                readdatapercentinc
                lock-folder

Changes of Elm2.4ME+ PL50s (25) compared with Elm2.4ME+ PL50 (25)
--------------------------------------------------------------

        [ This is out of branch patch. ]

        - Fix incorrect bound checking on putc_so_string()
          (state.c)

        - SECURITY: base64_decode was passing wrong buffer size 
          to state_getl
         Problem noted by: Yury Yaroshevsky <yk@info.dgtu.donetsk.ua>

Changes of Elm2.4ME+ PL50 (25) compared with Elm2.4ME+ PL49 (25)
--------------------------------------------------------------

        - elm -vvvv now print names of some configuration files
        - elm -vvvvv prints some configuration data (mainly
          locale dependent data)

        - "When I use the keys '+' or '-' in an empty attachment 
           list elm exits with a segmentation violation. This seems 
           to occur because the variable 'ptrs' points to NULL (and 
           'ptr_max' is equal to 0) which is not checked.

          The following patch fixes this bug."
         From: Henrik Pletat <pletat@informatik.hu-berlin.de>

        - Added locale_init() to lib/read_rc.c and moved to
         catopen and setlocale to it.

        - Added mapping from LC_CTYPE locale to display_charset.
         Mapping is done on file $lib/elm.mimecharsets or on 
         .elm/mime.charsets

       - Special value DISPLAY on elmrc variable charset
         means that use display_charset.

        - Moved variable substitution from Configure to
          ConfTool/Substitute (called automatically)

        - Ctrl-U and Ctrl-D on builtin++ pager was working
          inconsistently.
         Problem reported by: Andrew J. Piziali <andy@piziali.dv.org>

Changes of Elm2.4ME+ PL49 (25) compared with Elm2.4ME+ PL48 (25)
--------------------------------------------------------------

        - Put ME+ to under of CVS. Because revision numbers 
          changed there was need of changing header text of files.

        - "It fixes a small problem with the date representation 
           in the upper right corner.  Currently, times like
           "09:08:02" are displayed as " 9: 8: 2".  This is because 
           src/date.c uses the format "%2.2d:%2.2d:%2.2d" which is 
           not supported by elm_vmessage() (gets interpreted as 
           "%2d:%2d:%2d").  The patch changes this to "%02d:%02d:%02d" 
           (this is used everywhere else anyway), which fixes the
          problem."
         From: Gertjan van Oosten <gertjan@West.NL>

        - If To: is empty and I have sender, show sender of mail
          (DisplayAddrress (lib/dispaddr.c) was not correctly 
           detectection empty To: -header.)
         
Changes of Elm2.4ME+ PL48 (25) compared with Elm2.4ME+ PL47 (25)
--------------------------------------------------------------

        - Changed to and cc field on header_rec to include 
          result of break_down_address 
        - Added to_matches and cc_matches to pattern.c

        - moved and reimplemented forwarded from utils/newmail.c 
          and src/addr_util.c to lib/forwarded.c 
        
        - shift_lower needs const for argument

        - Add buffer overflow check to stip_parens() and get_parens()
          (lib/striparens.c)
        
        - Moved main part of parse_arpa_date() to new routine
          parse_date_time (lib_/parsarpdat.c) and let parse_arpa_date()
          to call that routine.

        - Reimplemented process_expiration_date() (src/expires.c).
          Original code did not handled 4 number years and was broken
          on year 2000. New code uses just parse_date_time() --
          However it accepts expiration times where date part
          is only given from RFC 822 date-time format.

        - Now real_from() (lib/realfrom.c) assumes local timezone,
          if timezone is not given, because From mailbox separator
          is normally inserted locally.
        
        - There was "multi-character character constant" -warning 
          coming from src/mkhdrs.c
          Reported by: Witold Witkowski <yawitkow@cyf-kr.edu.pl>

        - "If you switch to the option editor screen, change 
           "O)utbound mail saved" from "=sent" to "=sent" (i.e. 
           enter the displayed character sequence), return to the 
           index, and then mail a message, the outgoing message 
           will be saved in a file named ~/=sent rather than in
           ~/Mail/sent.  The equal sign is not getting expanded 
           to the user's mail folder directory."
          Reported by: Andrew J. Piziali <andy@elijah.dv.org>

        - "I suggest checking and accepting (extending) existing PATH"
          From: Witold Witkowski <yawitkow@cyf-kr.edu.pl>
        > Moved $PATH to beginning of initial PATH of Configure

Changes of Elm2.4ME+ PL47 (25) compared with Elm2.4ME+ PL46 (25)
--------------------------------------------------------------

        - Do not treate characters > 127 as controls (allow
          they on words of phrases)

        - Fix name of "Forwarded message from" -text

Changes of Elm2.4ME+ PL46 (25) compared with Elm2.4ME+ PL45 (25)
--------------------------------------------------------------

        - Split break_down_address to look_special_tokens(),
          scanned_to_phrase(), scanned_to_str() routines
          and reimplement break_down_address as state machine
          (4 states, 6 terminals).
        > Now phrase from group -syntax is ignored and
          route from address is dropped.

        - strtok(), strpbrk(), strstr() was declared in both 
          of elmlib.h and defs.h (remove later declaration).
         Noted by: John Goerzen <jgoerzen@complete.org>,
                   Emmanuel Bigler <bigler@alpha.univ-fcomte.fr>

        - Changed from field on header_rec to include 
          result of break_down_address (instead of just fullname).
        - "From " address is stored to new env_from field
        > Sorting based on sender uses first "From " address
          and then parsed From: -header (fullname and then address)
        > Limit with 'from' now works both of full name and address
          and it uses now MIME-decoded full name. Also "From "
          address is considered.
        - get_return (on returnaddr.c) is simplified. Now it uses
          stored (and parsed) From: -header from from field of header_rec

        - Assume INTERNET (style addresses). Remove question from
          Configure and all ifdefs.

        - Assume USE_EMBEDDED_ADDRESS (From: and Reply-Top:). Remove
          question from Configure and all ifdefs.

        - Call user_init(), init_defaults() and read_rc_file() on 
          newmail.

Changes of Elm2.4ME+ PL45 (25) compared with Elm2.4ME+ PL44 (25)
--------------------------------------------------------------

        - skip_envelope on melib/parse_util.c was not skipping
          ">From " -lines.

        - Save composition filename to global variable
          (so it does not need to be genrated in signal handler
           for removal)

Changes of Elm2.4ME+ PL44 (25) compared with Elm2.4ME+ PL43 (25)
--------------------------------------------------------------

        - Added lib/getaddr.c (break_down_address, 
          free_addr_list)
        - Moved rfc822_tokenize, remove_space_tokenized,
          free_rfc822tokenized from melib/parse_util.c
          to lib/getaddr.c
        - Reimplemented parse_arpa_who (lib/parsarpwho.c)
          and get_address_from (lib/getaddrfrm.c) with
          break_down_address
        - Added size argument to (get_address_from)

        - replace break_down_to_list (src/reply.c) with 
          break_down_address

        - "patch-hmo-1 extends the '#' debug menu, showing 
           all defined message flags, in the order present 
           in hdrs/defs.h."
          From: Helge Oldach <hmo@sep.hamburg.com>

Changes of Elm2.4ME+ PL43 (25) compared with Elm2.4ME+ PL42 (25)
--------------------------------------------------------------

        - print attachment instead of just printing [skipping...]
          message when printing from atttachment -menu

        - Changes calling sequence of Write_to_screen
        - Added some messages to message catalog
        - Added PutLineX to curses.c
        - Dropped Putline1, PutLine2, PutLine3 to favor
          PutLineX

        - Remove hostname initialization from fastmail,
          fastmail now calls read_rc -routines

Changes of Elm2.4ME+ PL42 (25) compared with Elm2.4ME+ PL41 (25)
--------------------------------------------------------------

        - Tweak little (add missing space) to build_header_line

        - "When I'm in the attach menu before sending a mail and 
           I use the delete function on the LAST attachment, the 
           cursor diappears. Trying then to move up the cursor 
           elm exits with a sigmentation violation.

           This error appears in several versions of elm."
          From: Henrik Pletat <pletat@informatik.hu-berlin.de>

        - Fix call of parse_arpa_who in figure_out_addressee, which
          caused that To -address in 'frm' was truncated.

        - Change days_ahead to return year in 4 numbers and simplify it.
        - Some year 2000 fixes for src/date.c
        - Make elm_date_str to return year in 4 numbers

        [ Undo Elm2.4ME+ PL41h patch before installing this patch. ]

Changes of Elm2.4ME+ PL41h (25) compared with Elm2.4ME+ PL41 (25)
--------------------------------------------------------------

        - Tweak little (add missing space) to build_header_line

Changes of Elm2.4ME+ PL41 (25) compared with Elm2.4ME+ PL40 (25)
--------------------------------------------------------------

        [ Warning: This is so much changes (and some are 
          incomplete) so this this quite sure more buggy than
          PL40. ]

        - "it's not "a X-Windows" but rather "an X-Windows"; and 
           BTW, it's not "X-Windows" at all cause that term simply 
           does not exist (cf. man X).  Simply replay "an X-Windows" 
           by "an X11". Thanks."
          From: (sender's name lost)

        ( I managed to delete hurtta+elm Mailbox, so resend
          your mails if they are sent between 1998-03-04 and
          1998-04-04. )

        - Added some messages to message catalog

        - iprintf.c dropped (so far) -- it is not used (at least yet)

        - elm_sfprintf, elm_message
        > Global change: Most of sprintf calls replaced with elm_sfrpintf

        - Do not longer test existence of mkdir()

        - "this is another very simple fix that repairs this:
           posixsig.c:89: warning: preprocessing directive not 
              recognized within macro arg"
          From: Helge Oldach <hmo@sep.hamburg.com>

        - Dropped error1, error2, error3 to favor lib_error

        - Changed how menu2.c works (and therefore changed
          DSN and remailer menus.)

        - Tweak parsearpawho 
        > Now From: is not assument to be part of buffer
        > from in header struct is now mime decoded
        > That is now mime encoded when generating comment to
          reply address.

        - Handles now phrases on From: -header which uses
          continuation lines

        - Dropped get_real_name -- it is it is at least
          equal broken than parse_arpa_who

        - ' added to set of characters which need quotation because 
          sendmail otherwise will quote words which includes ' on 
          phrases -- even that ' is not special character -- and that 
          way destroy MIME encoding.
      
        - MIME decoding is now done when showing values in header menu
          (for address headers)

        - MIME encoding also full name got from gecos field of passwd

        - MIME encode also name entered to comments in header edit screen
          (for address headers)

Changes of Elm2.4ME+ PL40 (25) compared with Elm2.4ME+ PL39 (25)
--------------------------------------------------------------

        - Enumerated options 
          userlevel:            beginner        intermediate    expert
          noencoding:           pass-7bit       pass-8bit       pass-binary

        - Move reading of elmrc to elmlib and put elm tools to read
          elmrc. This may make to some time in future to possible
          to do binary distributions of elm.
        > pmalloc.c moved from src/ to lib/

        - Added option elm -vvv

        - Add routine lib_error (lib/output.c)

        - Added some messages to message catalog

        - "I have a nice patch to elm-me+-2.4pl25ME+39:
           If you press (l)imit and then type "thread", all messages 
           with the same subject are shown. A leading "Re: " is stripped.

           That is usefull for (large) mailing lists, where you don't read 
           all messages. (It's like the thread command in most net news 
           readers)"
          From: Christian Hammers <ch@lathspell.westend.com>

        - "I have determined what the problem is.  When you `bounce' a 
           message elm fails to strip the `From ' line from the top of 
           the message.  This causes Smail to think that the message is 
           an incoming UUCP transmission.  Smail uses the `From ' line 
           to build the new return path using a !, getting a wrong answer.

           Elm should strip the `From ' from bounced messages."
          From: Ian Jackson <ian@chiark.greenend.org.uk>
        > Added CM_REMOVE_ENVELOPE flag to call of copy_message
          in remail.c in case of INTERNET is defined 
          (From comments it looks that passing of "From " is done
           by purpose: "For those cases when you want to have a 
           message continue along to another person in such a way 
           as they end up receiving it with the return address the 
           person YOU received the mail from")

        - Elm -v now prints warning "Elm is not intended to be 
          distributed in binary form.  If that is done, then it 
          is very likely that compile time configuration does not
          match to your system."

Changes of Elm2.4ME+ PL39 (25) compared with Elm2.4ME+ PL38 (25)
--------------------------------------------------------------

        - "The filter included in elm-2.4ME+37 also appears to
           be vulnerable to the "save_embedded_address()" attack,
           but not to the "get_filter_rules()" attack."
          From: KSR[T] <ksrt@DEC.NET>
        > I didn't used supplied patch. Instead I added bound
          check to one loop in save_embedded_address (I was
          added it to one loop but was missed other loop. )
        > Note that Makefile will not compile ot install filter
          -- that is intentionally (it was dropped because of
          security problems)

        - "here is another small fix relative to elm-2.4ME+37. 
           This is relevant for empty folders with keepempty=OFF. 
           Previously an empty folder was deleted *only* when this 
           folder was left with all (and >= 1) messages marked 
           'deleted'. Now an already empty folder is also deleted 
           upon quit or change to another folder."
          From: Helge Oldach <hmo@sep.hamburg.com>
        > I didn't used supplied patch. Instead I modified leave_mbox.

        - Added elmrc -option "dsn-success"

        - "it looks like that the help function in change folders 
           of this used version (2.4me+38) doesn't work."
          Reported by: Roeland Th. Jansen <bengel@grobbebol.xs4all.nl>
        > init_helpmsg was called with wrong number of parameters.

        New elmrc options:
                dsn-success

Changes of Elm2.4ME+ PL38 (25) compared with Elm2.4ME+ PL37 (25)
--------------------------------------------------------------

        - getarpdate generated date wrongly in year 2000

        - "Here's another small fix which allows elm to deal more 
           reasonably with empty last name/first name/comment fields 
           in the alias file. This is intended for situations where 
           people use mail addresses which already include the full 
           name (like: Helge.Oldach@sep.hamburg.com), so that 
           duplicating the last name and first name on the alias list 
           seems not reasonable. If one just leaves the last name/first 
           name/comment fields empty like in:

                hmo =  = Helge.Oldach@sep.hamburg.com

           then the alias screen will display nothing but the alias, 
           which doesn't tell anything. This patch makes elm display 
           the actual mail address instead of an empty last name/first 
           name/comment field.

           It also fixes the display of such empty fields when displaying
           the actual address while sending a mail ("Message addressed as:
           Helge.Oldach@sep.hamburg.com ()") - the empty brackets won't 
           appear in this case."
          From: Helge Oldach <hmo@sep.hamburg.com>

        - "background_wait_time should be background-wait-time in 
           doc/elmrc-info, otherwise the elmrc update function (elm -w) 
           won't copy the comment."
          From: Helge Oldach <hmo@sep.hamburg.com>

        - "It wasn't properly truncating the subject line if 
           the rest of the header was longer than 44 characters"
          From: Guy Harris <guy@netapp.com>

        - If msgcat.c will be compiled, don't include <nl_types.h>
          In that situation always include "elm_nl_types.h"

        - rfc822_tokenize, remove_space_tokenized, free_rfc822tokenized,
          strmcat

Changes of Elm2.4ME+ PL37 (25) compared with Elm2.4ME+ PL36 (25)
--------------------------------------------------------------

        - include <sys.wait.h> in defs.h

        - include <sys/wait.h> in lib/posixsig.c on Ultrix V4.4
          From: Bernhard Simon <bs@bsws.edvz.tuwien.ac.at>

        - "The latest elm.me has a nl_types.h include which on 
           Digital UNIX is conflicting with a system include having 
           the same name, which is of course needed for proper 
           compilation :(."
          From: Christophe Wolfhugel <wolf@pasteur.fr>
        > Rename nl_types.h to elm_nl_types.h
        > There was wrong number of argument in catgets
          call in iprintf.c [ not currently used ]
          From: Christophe Wolfhugel <wolf@pasteur.fr>

        - Changes for configure to run in Dec Unix (OSF1)
          "-  cc -std (to have prototypes)
           -  nm_opts='' for DEC Unix or it gives wrong output with -p 
              and Configure won't see some functions (like strspn)
           -  signal hardcoded, because cc -E or cpp or DEC Unix does not 
              pass the   standard defines (the ones put by cc -std) and we 
              will miss the signal prototype anyway :(."
          From: Christophe Wolfhugel <wolf@pasteur.fr>

        - Some changes that Elm compiles cleanly on Digital Unix (OSF1)
          [ It was not defining __STDC__, but was complaining
            if char * argument was given to unsigned char * argument
            of function (and opposite) ]

        - Digital Unix (OSF1) was defineing macto BSD (sig!)
          Renamed BSD macro to BSD_TYPE

Changes of Elm2.4ME+ PL36 (25) compared with Elm2.4ME+ PL35 (25)
--------------------------------------------------------------

        - "If the mail transport agent (MTA) is missing, elm
           silently fails.  No message is delivered and no warning or 
           error message is displayed."
          From: Jan Prikryl <prikryl@cg.tuwien.ac.at>, 
                Andrew J. Piziali <andy@elijah.dv.org>
        > Return status of process was decoded incorrectly.
        > Also errno status was written to wrong end of report -pipe.

        - Redraw screen also if old position was on screen
          when new mail arrives.

        - Dropped return_value_of from curses.c

        - Support arrow cursor on attachment menu

        - "I recently tried to run the Configure script on AIXv4.2.1 which 
           failed trying to extract the function names out of libc.a. 
           I updated the script so it will work on AIX."
         From: Will Fiveash <will@austin.ibm.com>

        - "Also, I am including my file locking patch so that
           elm will lock a folder when trying to save or copy to it."
          From: Will Fiveash <will@austin.ibm.com>
        > Added elmrc option lock-in-copy, that locking is done if
          this option is TRUE (default).
        * NOTICE: This does not work with dot-locking
        * NOTICE: This is usefull only with folders which elm
                  treats as mailboxes, because folder are not
                  locked (when visited). 

        - Changed can_open to use my_wait and prepared for EINTR

        - Dropped move_old_files_to_new()

        New elmrc options:
                lock-in-copy

Changes of Elm2.4ME+ PL35 (25) compared with Elm2.4ME+ PL34 (25)
--------------------------------------------------------------

        - "I've built elm-2.4.ME+3[34] under SunOS 4.1.2 using 
           libc 1.1.7 and gcc-2.7.2 and can't actually open a mail 
           file with them. "
          From: Dave Rynne <dave@funcom.ie>
        - wait in can_access was not prepared for EINTR
        - can_access was not using my_wait
          [ And why can_access just not use access system call?
            -- it used real uid and gid anyway!!!! ]

        - "The run_state structure declared in me.h has a member 
           called "errno". However, it is unsafe to use errno as an 
           identifier under some Unices, e.g. when errno is a macro.  
           Here is a patch against PL34 which renames the struct member."
         From: Jesse Thilo <jthilo@early.com>
         [ It turns out that culprit is Linux libc 6 ]

        - Add support for multipart/alternative. Elmrc
          variable pagealternative is added. If that is TRUE (default),
          and at least one subpart of multipart/alternative is displayable
          metamail is not called. If that is FALSE, metamail is not called
          if all subparts of multipart/alternative are displayable.

        New elmrc options:
                pagealternative

Changes of Elm2.4ME+ PL34 (25) compared with Elm2.4ME+ PL33 (25)
---------------------------------------------------------------

        - Print "Elm: Unsupported locale (check $LANG)" if setlocale
          fails. 
          Suggested by: Michael Rudolf <mich@mich.isdn.cs.tu-berlin.de>

        - "I've found a bug in the Configure script for elm2.4.ME+.33:
           when Configure asks for the metamail path and the path doesn't
           exist elm asks you: "File ... doesn't exist.  Use that name 
           anyway?", if you answer 'y' then metamail_path is set 
           to 'y'. I think that's not the desired action... :)"
         From: Jose A. Rodriguez <Jose.Rodriguez@ac.upc.es>

        - Add elmrc -varaible pgp. This gives path to PGP.
          If "none", pgp is not called. Also checked that 
          pgp is executable with given path.
          Suggested by: John Goerzen <jgoerzen@complete.org>

        - check with can_open that debug file can be opened.

        - -A (attach) option didn't used "~/.elm/mime.types" file.
          Reported by: Andrew J. Piziali <andy@piziali.dv.org>
         
        New elmrc options:
                pgp

Changes of Elm2.4ME+ PL33 (25) compared with Elm2.4ME+ PL32 (25)
--------------------------------------------------------------

        - Content-Disposition: inline; filename = "filename"
          was not parsed correctly.
          Reported by: Jussi Kaurola <kaurola@ozone.FMI.FI>

        - Remove NIS tests from Configure. $passcat was not used
        ( Next section "set up shell script to do ~ expansion"
          may perhaps need it, but actually it does not use it. )
          Hint from: Jerzy Sobczyk <J.Sobczyk@ia.pw.edu.pl>
        > Now sun is always added to from of $libswanted

        - Added elmrc option background-wait-time (default 2 seconds)
          If = 0  wait mailer to completion
             > 0  wait background-wait-time seconds for completion
                  if not completed in this time, let it go to background

                (completion of mailing is still reported if user have
                 not exited from elm in that time when mailer have completed)
          Suggested by: Heiko W.Rupp <hwr@pilhuhn.de>
                        Daniel C. Sobral <dcs@gns.com.br>
        * THIS option is supported only in POSIX systems
        > Added my_wait to lib/posigsig.c

        - Added VOLATILE to defs.h
        > to resize_screen, redraw_screen (elm.h, headers.h)

        - "When I tried to compile elm2.4.ME+.32 for Digital Unix 4.0 I got
           a few compiler errors. The problem is that ANSIC/not ANSIC headers
           are not in sync...

           They are fixed with this patch (for lib/iprintf.c file)"
          From: Jose A. Rodriguez <Jose.Rodriguez@ac.upc.es>
        * Actually this (ELMCHAR, iprintf) code isn't yet in use

        - "The bug was that filter truncated the "Saved folder" to 
           only 3 chars (out of the full path). To fix it, just change 
           the following line in 'utils.c' in the filter directory"
          From: From: Yuval Shamir <yuvals@iil.intel.com>
          [ Suggested fix was incorrect. ]

        > Notice: filter code is not tested (and compilation
          of it is commented out from Makefile in all ME+)

        New elmrc options:
                background-wait-time

Changes of Elm2.4ME+ PL32 (25) compared with Elm2.4ME+ PL31 (25)
---------------------------------------------------------------

        - Incorrect Content-length: -header was causing corruption
          of folders.
          From: Guy Harris <guy@netapp.com>

        - argv_from_to was not handled ',' in comments correctly.
          Detected from report of Gary Casterline 
                <casterln@nature.Berkeley.EDU>
        > Use rfc822_toklen instead of len_next_part

        - SECURITY: strcpy -> strfcpy changes of Elm2.4ME+ PL29 (25)
          was not done for curses.c in this source tree.
          Bug report on List <BUGTRAQ@NETSPACE.ORG>.
          From: John Goerzen <jgoerzen@happy.cs.twsu.edu>

        - Some changes on curses.c (bl -- bell)

        - Change output of option -v

        - "If you use 'answer -u', then every user name is truncated to 
           three letters." ... "Change line 232 to: " ...
          From: Jean-Pierre Radley <jpr@jpr.com>
          [ Suggested fix was incorrect. ]

        - "Configure always has had a problem on Linux systems, 
           extracting names in a usuable format (from /usr/lib/libc.so).
           The following small change fixes this."
          From: Bauke Jan Douma <bjdouma@xs4all.nl>

        - "In Solaris enviroment NIS+ is now used instead of Yellow 
           Pages so I have modified Configure to reflect this and 
           allow to use niscat in the same fashion as ypcat was."
          From: Jerzy Sobczyk <J.Sobczyk@ia.pw.edu.pl>
          [ Undone in PL33 ]

        - Compilation of filter (actions.c) fail.
          Reported by: Arnout Boer <arnoutb@xs4all.nl>

        - Typo mismatch in lib/strftime.c
          From: Yuval Shamir <yuvals@iil.intel.com>
        - [wordwrap.c, bultin editor] 
          "Wordwrap and delete at the 
           beginning of the line does not work in PL31. Fix is below."
          From: "Zoltan T. Hidvegi" <hzoli@VNET.IBM.COM> 
          [ I didn't used supplied patch. ]

        - [builtin editor] There was 'sizeof buffer' instead of 
          'buffer_size' in get_with_expansion()

        - Add same fflush -fix to remail.c which is in mailmsg2.c

Changes of Elm2.4ME+ PL31H (25) compared with Elm2.4ME+ PL31 (25)
---------------------------------------------------------------

        [ This is out of branch patch. ]

        - Incorrect Content-length: -header was causing corruption
          of folders.
          From: Guy Harris <guy@netapp.com>

        - argv_from_to was not handled ',' in comments correctly.
          Detected from report of Gary Casterline 
                <casterln@nature.Berkeley.EDU>
        > Use rfc822_toklen instead of len_next_part

Changes of Elm2.4ME+ PL31 (25) compared with Elm2.4ME+ PL30 (25)
--------------------------------------------------------------

        - Print "Warning: BINARY data? Check Content-Type!"
          when trying send binary (*) data as text in attachment
          menu.

        (*) binary = not fill requirements of "7bit" and "8bit".

        - Convert some system_call() to use 
          start_run() ... wait_end() instead.

        - optionally_enter() in pgp_decode.c was called without 
          size -argument

        - "The problem appears to be that when a "FILE *" is rewound, 
           the underlying file is not, causing mail messages to be empty. "
          Reported by: Jon Harder <Jon.Harder@mennolink.org>
          [ Now input file descriptor is fflush'ed -- this should 
            synzronize it.
          ]


        - "I often mail PGP-encrypted attachments to people with the 
           appropriate content type.  If I want to review the attachment 
           before sending it, I go the to a)ttachments screen, select the 
           attachment of interest, and press <Enter>. Elm prompts me for a 
           pass phrase because I always encrypt using my public key along 
           with the recipient's.  If I mistype my pass phrase, I cannot use
           control-F (^F) to cause Elm to forget the cached pass phrase from 
           either the attachments screen or the send screen.

           I wish ^F were recognized on those two screen also."
          Suggested by: Andrew J. Piziali <andy@piziali.dv.org>
        * Added ^F to verify_transmission, attachment menu, and to 
          showmsg_c.c

Changes of Elm2.4ME+ PL30 (25) compared with Elm2.4ME+ PL29 (25)
--------------------------------------------------------------

        - mailerflags -array (argument vector) was not NULL
          terminated in remail.c.

        - Elm was not recognized SortBy (and aliassortby) keywords
          [ strfcpy was got size of pointer instead of array size
            in read_rc.c ]
          Reported by: "Ralf S. Engelschall" <rse@engelschall.com>

        - Fixed some error messages in read_rc.c

        - "The problem is that 'case:' statement use int range, so
           0xFC02 expanded to 0x0000FC02, not to 0xFFFFFC02,
           but xxx->magic value is short and expanded to 0xFFFFxxxx,
           so comparation is unsuccessful.
           Fix is simple: direct cast to short."
          From: "Andrey A. Chernov" <ache@nagual.ru>
          [ I don't actually used that fix. Instead I changed magic
            values to 'unsigned short' in elmlib.h. Now they 
            are used same way as in melib.h. ]
        * Actually this (ELMCHAR) code isn't yet in use

Changes of Elm2.4ME+ PL29 (25) compared with Elm2.4ME+ PL28 (25)
--------------------------------------------------------------

        [ Warning: This is so much changes (and some are 
          incomplete) so this this quite sure more buggy than
          PL28. ]

        - SECURITY: Elm was passing `shell command` without
                    quotation to shell when invoking sendmail.
          Reported by: Wolfgang Ley <ley@cert.dfn.de>
                 from: "Computer Emergency Response Team, Germany"
                        <dfncert@cert.dfn.de>
          (Originally from: Dirk Nimmich <nimmich@uni-muenster.de> )
        > Don't use shell when calling sendmail (or other mailers)
        - quote_args() dropped from strings.c
        - now elm waits until sendmail returns
          (and simple not put it background without checking
           if mailing succees)
        > Now -V option of Elm works better

        - Small change in displaying of multipart messages

        - (mime_decode.c) Use in_state_seekable instead of 
                testing magic agaist STATE_in_file

        - Move state.c from src/ to melib/

        - New header files melib.h and elmlib.h

        - Add routine strfcat to strfcpy.c

        - get_folder_type is litle more smarter to detect files
          in mail directory

        - d)omainze removed from header config -menu

        - Don't ask shell in configure -- take shell from passwd
          If passwd is used, default value for elmrc is null string
          If $SHELL env variable is used, defaualt value for elmrc is 
                $SHELL string

        - If $EDITOR env varaible is used, default value for elmrc is
                $EDITOR string

        - Default to p)gp if replying to pgp encoded message
          (in verify_transmission -menu)

        - Remove bounceback variable and bouncebk.c

        - [defs.h] In IRIX define 'int32' by using 'int32_t'
          Warning: If you have compiled Elm with ABI=-64
                   (default on IRIX64), this changes on disk
                   format of aliases database
        * Actual use inttypes.h 
          (does not work if -cckr is used,
          (also can't be used in IRIX 5.3 because of conflicts
           with sys/types.h -- ARGH!)

        - Removed references to VMS and EUNICE from Configure

        - Removed I_STDARG -- 
                now if ANSI_C is defined stdarg.h is used,
                otherwise varargs.h is used

        - Add do { .... } while(0) to dprint -macro

        - Global change: Use strfcpy instead of strcpy
                    and: Use strfcat (new routine) instead of strcat
          (but sprintf -calls are still untouched!)

        [ Undo Elm2.4ME+ PL28s patch before installing this patch. ]

Changes of Elm2.4ME+ PL28s (25) compared with Elm2.4ME+ PL28 (25)
--------------------------------------------------------------

        - SECURITY: Elm was passing `shell command` without
                    quotation to shell when invoking sendmail.
          Reported by: Wolfgang Ley <ley@cert.dfn.de>
                 from: "Computer Emergency Response Team, Germany"
                        <dfncert@cert.dfn.de>
          (Originally from: Dirk Nimmich <nimmich@uni-muenster.de> )
        > Quote ` -character

Changes of Elm2.4ME+ PL28 (25) compared with Elm2.4ME+ PL27 (25)
--------------------------------------------------------------

        - mailerflags was too short for DSN flags

Changes of Elm2.4ME+ PL27 (25) compared with Elm2.4ME+ PL26 (25)
--------------------------------------------------------------

        - 'hdr -> magic = NULL;' should be 'hdr -> magic = 0;'
           in parse_util.c
           Noted by: "Andrew J. Piziali" <andy@piziali.dv.org>

        -  "Change Elm to exit after printing the error message, rather than
            continuing and erasing the screen message and all, if it 
            encounters an error when reading your "elmrc" file."
           From: Guy Harris <guy@netapp.com>
        * But do not do this if in batch mode!
        * Don't exit if there is errors in global elmrc!
        * Let user save new .elm/elmrc with option -w

        - state_read_headers was building next_header chain
          incorrectly (and possible other chains also).

        - add_paramater_t routine (wrapper for add_parameter)
          to mime_encode.c

        - Let user attach files with option -A
          To get this work correctly, user needs to have
          mapping file extension -> mime/type in
          his .elm/elmrc

        - Added field magic to mime_t and routine mime_panic.
          Now it is possible to get error message MIME_PANIC
          if in mime structure in memory is something wrong
          (analogy to STATE PANIC and HEADER PANIC).

        - Size of forwarded mail in message/rfc822 was not set 
          correctly in Elm2.4ME+ PL23.

        - Added DSN (Delivery Status Notification) Configure
          menu to verify_tranmission. You need sendmail 8.8
          to get this.

        - In menu of verify_transmission, show
          a)attachments option also in user level = 0, if there
          is attachments.
        - In menu of verify_transmission, show
          p)gp option also in user level = 0, if original message
          was pgp -encoded (when replying).
        - In menu of verify_transmission, show
          D)SN option also in user level = 0 if there is dsn settings
          (does not apply now).

Changes of Elm2.4ME+ PL26 (25) compared with Elm2.4ME+ PL25 (25)
--------------------------------------------------------------

        - Adding final \n\n was badly broken in copy_message()
          Reported by: Eilon Gishri <eilon@ibm.net.il>

        - Try fixing handling of null bodys in read_headers()
          { newmbox.c } in some cases. Perhaps this brokes
          nothing?

        - rfc1522_encode_text failed to \0 terminate Subject
          From: Claus Assmann <ca@informatik.uni-kiel.de>

        - PGP fails to check signature if KEEPBINARY=ON
          From: Heiko W. Rupp <hwr@xlink.net>

        - Created new directory melib and made archive libme.a.
          Some code is moved to that directory. You need to
          create that directory before applying path!

Changes of Elm2.4ME+ PL25 (25) compared with Elm2.4ME+ PL24 (25)
--------------------------------------------------------------

        - Problem with screen size (elm_LINES and elm_COLUMNS
          are inconsistent).
          [ I was commented out line what was comment
                      /* kludge for HP Window system? ... */
            in PL23. VERY misleading........................

            I HATE this.         - K E H <hurtta@ozone.FMI.FI>
          ]
          

        - Fix release month

Changes of Elm2.4ME+ PL24 (25) compared with Elm2.4ME+ PL23 (25)
--------------------------------------------------------------

        - ks/ke capabilities are optional. They are not present
          in ANSI -terminal.
          From: "Andrey A. Chernov" <ache@nagual.ru>

        - X-ELM-OSV was not correctly parsed

Changes of Elm2.4ME+ PL23 (25) compared with Elm2.4ME+ PL22 (25)
--------------------------------------------------------------

        - Add a new config variable, called askpgpsig. 
          When set to ON, Elm will ask for a username to 
          sign pgp messages with. 
          From: Guido van Rooij <guido@gvr.win.tue.nl>

        - menu2.c: ch must be int, or comparations with -1 (EOF) 
          and 257 (REDRAW_MARK) produce wrong results.
          From: Andrey A. Chernov <ache@nagual.ru>
          From: Guy Harris <guy@netapp.com>

        - In "do_pipe()", "redraw" was both a variable and a label.
          From: Guy Harris <guy@netapp.com>

        - If you've set characters such as the word-erase or 
          reprint character to non-standard values, use your values, 
          not the standard ones.
          From: Guy Harris <guy@netapp.com>
          [ Added also !escaped test, because now these characters can 
            be printable. ]

        - Moved processing of cursor keys to ReadCh
          (old cursor key handling was buggy).
        > HP's shoftkeys are not supported:
           No options: -k -K
           No elmrc variables: softkeys keypad
        > Recognized keys are:
                Key             tercap name     terminfo name
                -----           -----------     -------------
                UP arrow        ku              kcuu1
                DOWN arrow      kd              kcud1
                LEFT arrow      kl              kcub1
                RIGHT arrow     kr              kcuf1
                PAGE UP         kP              kpp
                PAGE DOWN       kN              knp
                HOME            kh              khome
                HELP            %1              khlp
                FIND            @0              kfnd
        > To get keys to use, your $TERM variable must point 
          termcap/terminfo definition what includes these keys.
          Notice that 'vt100' does not include other than cursor
          keys. You must perhaps make new definition, for example
          terminal type 'vt100-plus' :-) For terminfo use 'tic' and
          'infocmp' -commands.

        - state operations are moved outside of #ifdef MIME ... #endif
        - Added new routines state_write_headers, state_read_headers,
          delete_headers, locate_header and find_header to
          parse_util.c. read_header_line is now implemented with routine
          state_read_hdr_line. file_read_headers is implemented with routine
          state_read_headers.
        > Now included RFC 822 parts have printed text
          -- Start of included mail From: xxxxx
          instead of
          -- Start of included mail.
        - Rewritten read_mime_header to use file_read_headers, mainly by 
          dividing it to new routine parse_mime_headers
        > Rewritten rfc822_parse. Now non-mime messages inside of
          message/rfc822 should be handled more correctly.
        - Setting elmrc variable 
          require-mime-version-for-body-encoding to FALSE causes
          that almost all messages are treated as MIME -messages and
          MIME-Version is not required for these (in top level
          or inside of message/rfc822).

        - Add  flag CM_REMOVE_ENVELOPE for copy_message
        > make message/RFC822 attachment when forwarding with copy_message

        - Make wait() in matapager restart in case of EINTR error

        - Do MIME Part 2 (RFC 1522) decoding even when not MIME
          even when not Mime-Version -header is present 
          (If you want olf behauviour, set elmrc variable
           require-mime-version-for-hdr-encoding to TRUE).
          Header decoding is not done if sending elm was 
          disabled to do MIME Part 2 (RFC 1522) encoding
          (as set in elmrc variable nohdrencoding). That 
          information is carried in header X-ELM-OSV:
          (Our standard violations).

        - quoted-printable-decode was not decoding zero length part
          correctly.
        > Indicate with length == -1 as not set instead of length == 0

        - Added symbolics values RHL_MARK_FOLDING and RHL_CHECK_HEADER
          for flags of read_header_line. Now read_header_line check
          header for carefully. Side effect: If there is spaces before
          ':' in header, them are deleted (assuming RHL_CHECK_HEADER).

        - Add to mime_types[] following non-standard main content types:
          x-world, model

        New elmrc options:
                require-mime-version-for-body-encoding
                require-mime-version-for-hdr-encoding

        Removed elmrc options:
                softkeys
                keypad

Changes of Elm2.4ME+ PL22 (25) compared with Elm2.4ME+ PL21 (25)
--------------------------------------------------------------

        [ Warning: There is quite much changes in
          user interface, so perhaps there is bugs. ]

        > Changes in Makefile.SH -- remember to run
          'Configure' or 'Configure -d' or 'Configure -S'

        - 'ch' need to be 'int' in alias()
        - 'cmd' need to be 'int' in MenuLoop()
        - 'ch' need to be 'int' in generic_menu()
          Problem noted by: Claus Assmann <ca@informatik.uni-kiel.de>

        - There was unwanted trigraph in run_decoder()
          Problem noted by: Claus Assmann <ca@informatik.uni-kiel.de>

        - There was missing 'default:' in state_put()
          Problem noted by: Claus Assmann <ca@informatik.uni-kiel.de>
          Problem noted by: Guy Harris <guy@netapp.com>

        - rename 'timeout' to 'elm_timeout' to get rid out linker warning
        - rename 'filter' to 'elm_filter' to get rid out linker warning
        - rename 'LINES' to 'elm_LINES' to get rid out linker warning
          (These are defined also in libtermlib.so)

        - rename 'COLUMNS' to 'elm_COLUMNS' to match 'elm_LINES'

        - If there is Raw(ON) in parent in metapager(), then
          also Raw(OFF) must be in parent
          Noted by (?): Jurgen Fluk <louis@dachau.marco.de>

        - Replace some getchar()s with ReadCh(REDRAW_MARK)
          in syscall.c

        - Replace some getchar()s with ReadCh(REDRAW_MARK)
          in read_rc.c

        - Replace some getchar()s with ReadCh(REDRAW_MARK)
          in alias.c

        - Replace some getchar() with ReadCh(REDRAW_MARK)
          in utils.c

        - Use type application/X-ELM-encode with
          [enclode] ... [clear] if message is multipart
          (Elm 2.4ME+ PL6 should know this type, but there
           was error is some versions of ME+ in mime_notplain).

        - mime_notplain was returning TRUE (should be FALSE) 
          for application/X-ELM-encode.

        - The builtin++ pager clears the screen before displaying the 
          first screen of the message; however, the metapager wasn't 
          clearing the screen before running the external pager, which 
          left some junk on the screen.
          From: Guy Harris <guy@netapp.com>

        - Convert optionally_enter to use flag bits and
          now it returns REDRAW_MARK in most places when redraw
          is needed

        - LOCK_DIR removed from Configure / config.h.SH

        - Rememmber if last Configure run there was answer
          'none' for additional librariers

        - Some new checks in Makefile (or actually in Makefile.SH), 
          Configure is run lately (that confih.sh or Makefile or
          config.h are not stale)
          

Changes of Elm2.4ME+ PL21 (25) compared with Elm2.4ME+ PL20 (25)
--------------------------------------------------------------

        - More Configure fixes for IRIX 6.2

        - PGP signed messages (with type text/plain) was not handled
          correctly.
          Noted by: Volker Paulsen <Volker.Paulsen@gmd.de>

        - Just a short one-liner to fix the display:  
          When you leave the key selection menu in 
          pgp_mail_public_key() with `q' (i.e., don't mail a key), 
          this routine currently returns 0.  This means that the main list
          won't be redrawn and seems to be a bug.
          From: Thomas Roessler <roessler@sobolev.rhein.de>

        - read_number should create buffer of size SLEN, not NLEN
          since it uses optionally_enter() which assumes that the 
          buffer has length SLEN
          From: Thomas Roessler <roessler@sobolev.rhein.de>

        - Additionally, one might want to have the pgp functions 
          in the help menu.
          From: Thomas Roessler <roessler@sobolev.rhein.de>
          
Changes of Elm2.4ME+ PL20 (25) compared with Elm2.4ME+ PL19 (25)
--------------------------------------------------------------

        [ There is changes of error handling of leave_mbox --
          so report, if you lost mail... ]

        - Look also termlib.so and curses.so in Configure

        - Remove PGP test from need_meta in showmsg.c
          (It was causing that metamail was not called for 
           multipart/signed what isn't supported.)

        - Move metamail flags before PGP flags in show_message
          in screen.c 

        - lib/safeopen.c need to be added to MANIFEST
          Noted by: Keith Manley <kmanley@bits.fc.hp.com>

        - Elm as acting quite oddly if ending boundary of multipart
          structure was missing.
          Detected from report of: Rolf Larsson <rln@ludd.luth.se>

        - Add sleep_message() to out_utils.c

        - Detect if there is read error in newmbox!

        - Check read errors also in some other places....

        - Changes in leave_mbox -- now it returns with value -2 if
           it fails to leave folder

        - SIGUSR1 and SIGUSR2 is anly handled when in prompt
          (because otherwise we can be in wrong state --
           for example in middle in resync.)

        - Check in ReadCh if it was called from GetPrompt
          (GetPrompt want to see EINTR error!)

        - ReadCh takes now redraw flag: Either 0 or REDRAW_MARK.
          Now elm is able in many places automatically redraw screen
          when elm resumes after suspending.

        - skip_envelope() to parse_util.c

        - Use skip_envelope() in get_and_expand_everybody() and
          handle_reply_to() -- now elm should not be confused
          with MMDF envelope of mail
          Reported by: { Unknown -- mail lost }

Changes of Elm2.4ME+ PL19 (25) compared with Elm2.4ME+ PL18 (25)
--------------------------------------------------------------

        - Fix SIGSEGV (with application/pgp; format=mime)

        - With application/pgp; format=mime in included mime type
          nested structures was not parsed (actually that was causing
          SIGSEGV)

        - recognize application/pgp; x-action=signclear

        - Add "-- Start of included mail." and "-- End of included mail."
          texts.

Changes of Elm2.4ME+ PL18 (25) compared with Elm2.4ME+ PL17 (25)
--------------------------------------------------------------

        [ This patch includes very many changes, so perhaps there
          are bugs ... ]

        - Clean up some of the questions in the "Configure" script.
          From: Guy Harris <guy@netapp.com>

        - Added a '-S' option to the Configure script to just redo the
          "variable substitutions on .SH files" that the script performs
          at the end.  "I found this extremely useful, as I often made
          changes to the config.sh (for instance, the 'optimize' flags),
          and I wanted to re-create the Makefiles without running the
          entire Configure script all over again."
        - Also added '-h' option to report usage and available options to
          Configure script.
          From: Will Day <willday@rom.oit.gatech.edu>

        - Add support for a "mailpermissions" variable in your "elmrc" file 
          that can be set to specify the permissions to be used when creating 
          a new mail folder.  The syntax to use when specifying the permissions
          is *not* numeric, it's an "ls"-style string such as "rw-rw----", and
          the default is "rw-------".
          From: Guy Harris <guy@netapp.com>

        - (Elm)HelpViewAttach was missing from s_elm.m

        - Have the NLS stuff make "s_elmalias.h" from "s_elmalias.m".
          From: Guy Harris <guy@netapp.com>

        - Fix up "gencat" to compile on systems that don't do ANSI C 
          (e.g., SunOS 4.1[.x] when using the bundled C compiler).
          From: Guy Harris <guy@netapp.com>

        - Some additions to help text of Elm

        - Reconstruct mime_send_t.  There was wrong type when multipart
          message was sent and pgp was used.
          Noted by: J. Porter Clark <jpc@hammer.msfc.nasa.gov>

        - Added elmrc option: "quoteforward", which will let the user 
          restore the behavior of original elm when forwarding messages 
          - that is, to quote them like replies.  
          "I wanted this available, because usually when I forward a 
           message, I will comment various lines, and if it's not quoted 
           like a reply, my comments can be confused with the forwarded 
           message (and I didn't want to have to manually comment the 
           message every time)."
          From: Will Day <willday@rom.oit.gatech.edu>

        - convert mail() and send_msg() to use binary flags. 
          Get rid of global variable "forwarding".

        - Added safeopen_rdwr() call yet some places.
          "While browsing through elm me+ xyz kh's source code, 
           I stumbled across an invocation of tempnam() in a 
           somewhat insecure environment:  In mailmsg2.c, it's 
           output is used as argument to fopen(...,"w+").  This is
           dangerous, since it may allow other users to access those 
           temporary files."
          From: Thomas Roessler <roessler@sobolev.rhein.de>
        > Also use open_end_update() call, then code is cleaner
          [ In suplied patch there was possibility that elm destroyes
            =sent folder... ]

        - Modification for Configure: On a Linux system which uses 
          ELF-format shared libaries, the library symbols do not have 
          an underscore prepended to them.
          "I simply removed the [._] part from the sed expression.  This
           makes everything compile and run happily on my machine, 
           but if you want to correct this problem in your distribution, 
           you would probably want to keep the old rule as well, to keep 
           it from breaking elsewhere."
          Noted by: Matthew Hunt <hunt@mph124.rh.psu.edu>

        - "The second patch (re-)enables the use of the `T' key in the menu 
           at the end of a message (tag + next).  This used to work in 
           earlier releases of elm."
          From: J Wunsch <j@uriah.heep.sax.de>

        - "I think there is a small bug in metapager.c which has the 
           consequence that the pager menu is sometimes displayed on the 
           wrong screen page. The patch below fixes this behaviour."
         From: Thomas Roessler <roessler@sobolev.rhein.de>

         [ This patch little questionable -- 'ti' is "string to begin
           brograms that use cup" (cursor addressing) and 'te' is
           "string to end programs rhat use cup" -- problem is
           that xterm uses ti/te to swap screen page... ]

        - "Additionally, there is still an ugly timezone bug in elm-me+; 
           the old patch for elm 2.4 applies cleanly to the current me+ 
           version."
          Noted by: Thomas Roessler <roessler@sobolev.rhein.de>
        > Fix timezone:
          "OK...here is the fix for the wierd timezone shifting.  
           Besides the botched month parameter, the year also was wrong.

           This patch better documents the input parameters to the 
           lib/date_util.c procedures, and fixes get_tz_mins() to avoid 
           a wierd offset shifting problem.  Thanks to Thomas Roessler 
           <roessler@sobolev.rhein.de> for chasing down the cause of the 
           problem."
         From: Chip Rosenthal <chip@unicom.com>

        - Fix dangling pointer bug in attach_viewer!

        - Recognize text/x-pgp.
          From: Guido van Rooij <guido@gvr.win.tue.nl>
          [ + #ifdef USE_PGP added ]
        > If type was text/x-pgp, don't consider case 
          that PGP file is binary

        - Don't convert application/x-pgp* to application/pgp
          in newmbox.c -- instead recognize it in mime_decode.

        - Don't reset type_opts when converting text/plain to
          application/pgp.
          [ That change was buggy -- fixed in PL21 ]

        - Move "Decrypting message..." and "Checking signature..."
          messages to another place.

        New elmrc options:
                mailpermissions
                quoteforward

Changes of Elm2.4ME+ PL17 (25) compared with Elm2.4ME+ PL16 (25)
--------------------------------------------------------------

        -  Some systems use OXTABS bit instead of TABDLY
          [ Various paches for *BSD ]
          From: Ollivier Robert <roberto@keltia.freenix.fr>
          From: Jeff Thieleke <thieleke@lust.isca.uiowa.edu>
          From: Andrey A. Chernov <ache@astral.msk.su>

        - Undone HP-UX change for ANSI_C
          "This is mostly incorrect.  We figured out that 
           the problem was the -traditional flag that was included 
           by default when compiling with gcc."
          Noted by: Jeff Thieleke <thieleke@lust.isca.uiowa.edu>

        - Removed -traditional from gcc flags in Configure
          "The real fix would be to remove the default CFLAGS when 
           compiling with gcc, since they probably aren't needed any more."
          Suggested by: Jeff Thieleke <thieleke@lust.isca.uiowa.edu>

        - Don't allow change a filename of forwarded mail in attachment
          menu.

        - If content-transfer-encoding is unknown when saving attachment,
          treate it as binary.

        - Don't allow change filename in attachment menu to non-existent

Changes of Elm2.4ME+ PL16 (25) compared with Elm2.4ME+ PL15 (25)
--------------------------------------------------------------

        [ Warning: state routines are rewritten -- so look below
          what to do if you get STATE PANIC message ... ]

        - Add #include "headers.h" to safeopen.c to get rid
          out one stupid compiler warning
          Urged by: Andrew J. Piziali <andy@daldd.sc.ti.com>

        - struct state is divided to two structs: struct in_state
          and struct out_state. Large modifications to state
          routines (state.c). 

          If you get message STATE PANIC: Bad magic number
          compile elm with debugging -g and -DDEBUG
          and run elm with -d11 and try get it repeated.
          Now STATE PANIC should cause producing of core file.
          
          Look with debugger where that STACE PANIC accured (ask
          stack trace from debugger) and look also file ~/ELM:debug.info

        - If terminal driver is expanding tabs, do not print
          them -- instead jump to correct location

        - "HP-UX apparently doesn't declare __STDC__ (like AIX), 
           so compiling with cc or gcc fails in src/init.c at the getgid(), 
           getuid() prototypes."
          From: Jeff Thieleke <thieleke@icaen.uiowa.edu>
          [ Undone in ME+ PL17 ]

        - If you sign 8-bit mail, it will be later encoded with
          quoted-printable or base64 (by elm or by sendmail).
          Thus 'invalidating' because pgp_decode does not undo contet-
          transfer encoding before calling PGP.
          Noted by: Zoltan Hidvegi <hzoli@cs.elte.hu>
          Noted by: Hans-Christoph Wirth <hansi@dianoia.mayn.de>
        * Now content-transfer-encoding is decoded before bodypart
          is passed to pgp (it also now work, when *.pgp file
          is encoded with base64).
        > That decoding is done via temporary file -- perhaps I
          some time stack state routines so temporary file is not needed
          and decoding of content-ttransfer-encodings are done during
          reading.
        > If I some day get implemented MIME/PGP then 8-bit mail is always
          encoded with quoted printable and then passed to PGP for signing.

        - Display text before PGP armor if elmrc variable showpgppreamble
          is set (default). Binary PGP files are detected by looking first
          byte (after decoding content-transfer-encoding).

        - Fix to PL15 fix: "Elm fail in resyncing if mailfile is created 
          after initial entering to mailbox." -- previous fix can cuase
          elm exiting with message 
          "What's this?  The temp folder already exists??" and then
          "Ahhhh... I give up."
          Perhaps noted by: Andrew J. Piziali <andy@daldd.sc.ti.com>

        - SECURITY: Elm was running PGP as setgid mail (by using popen)
          when searching matching keys -- converting to use 
                pipe - fork - setgid (groupid) - execl

        - Need pass +language=en to PGP when searching matching keys
          Noted by: Boris Staeblow <balu@reido.in-berlin.de>

        - Initialize last (extra) element also to NULL in DynamicArray
          so that DestroyDynamicArray works (lib/dynarray.c)
          -- was causing SIGSEGV in GetPGPKey

        New elmrc options:
                showpgppreamble

        [ Undo Elm2.4ME+ PL15s patch before installing this patch. ]

Changes of Elm2.4ME+ PL15s (25) compared with Elm2.4ME+ PL15 (25)
---------------------------------------------------------------

        - SECURITY: Elm was running PGP as setgid mail (by using popen)
          when searching matching keys -- converting to use 
                pipe - fork - setgid (groupid) - execl

Changes of Elm2.4ME+ PL15 (25) compared with Elm2.4ME+ PL14 (25)
--------------------------------------------------------------

        [ Warning: This is perhaps more buggy than PL14. ]

        - Some changes in Makefiles, Configure
        - Change of temporary mbox name, put temporary mbox to
          back to temp directory (from home directory)
        - can_open(filename,"sw") checks if creating of _new_ file
           is possible (O_EXCL) -- and use that in leavembox.c
           Side-effect: New file is created
        - use isprint((unsigned char)ch) in src/curses.c
        - "I removed all fopen(file, "w") where file was a filename in /tmp 
           and replaced these with a safeopen(file) call.  These changes 
           should be also applied to the vanilla elm source."
        - "Also there are some minor bugfixes for PL11.  
           Elm did not asked my PGP password when I wanted to 
           read a PGP encrypted mail since it wrongly thought
           that the mail is only signed but not encrypted.  
           That's the most serious bug."
        - "I add a ClearScreen() before the fork in pgp_decrypt_init() 
           to make the screen look clearer."
           From: Zoltan Hidvegi <hzoli@cs.elte.hu>

        - Routine safeopen_rdwr added to safeopen.c 

        - Test agaist special modes was WRONG in leavembox.c
                (it was 0x7000 and it should be 07000)
        - Treate files with special modes as SPOOL files (newmbox.c)
        - Handle 'intelligent' way also SPOOL files what haven't in mailhome
        - Restore also special modes of file if file is not executable
        - Don't chown file if owner is already correct -- it resets
          special modes
        * With these changes it is possible to redirect sendmail aliases
          to files (mode 04600) and cause that elm does not reset setgid
          bit (what is required to be set, before sendmail accepts forwarding
          to no world writable files).

        - Multiple To: -headers was cauisng of trashing of memory
          and SIGSEGV
          Noted by: Richard Allen <ra@rhi.hi.is>

        - Elm fail in resyncing if mailfile is created after initial
          entering to mailbox.
          Noted by: Miroslav Ruda <ruda@ics.muni.cz>
          { I didn't used suplied patch. }

        - Elm fails to create received -folder
          Noted by: Jussi Kaurola <kaurola@dionysos.FMI.FI>
        - Added function open_end_update to file_util.c

        - Replace iscntrl((unsigned char)*pending) with
          !isprint((unsigned char)*pending) in builtin++.c
          because Configure asks that is isprint 
          working with 8-bit values, but it does not ask about iscntrl

        * Notice: Seems that someones does not agreed with interpretation
          of ASCII_CTYPE definition. My interpretation is:

                ASCII_CTYPE defined:    isprint works only with arguments
                                        0-127

                Conclusion:             We can't test that is characters in
                                        range 128-255 printable or not, so
                                        don't print them

          ASCII_CTYPE is defined when you answer "no" to following question:
          "Should Elm assume that isprint() won't break on 
            non-ASCII characters?"

          To get 8-bit characters to work you need:
                1) 8-bit clean ctype functions and macros
                2) ASCII_CTYPE is not defined
                3) setlocale exists (Configure have found locale.h;
                   that is: I_LOCALE is defined)
                4) Correct locale definition (environment variable
                        $LANG or $LC_CTYPE usually)
                   Look manual page of setlocale
                - If you are not using builtin(++) pager in Elm, thinks
                  can go more complicated -- all pagers does not use
                  locale definitions

        - Use kill(getpid(), SIGSTOP) instead of  kill(0, SIGSTOP)
          so that delivering of mail does not stop when user suspends
          Elm.
          Reported by: Richard J. Auletta <rauletta@erebor.cudenver.edu>

        New files:
                lib/safeopen.c

Changes of Elm2.4ME+ PL14 (25) compared with Elm2.4ME+ PL13 (25)
--------------------------------------------------------------

        - PGP signed (or encrypted) MIME mail was not quoted when 
          replying. Quick fix for pgp_decode in pgp.c. It still 
          perhaps have broken...

Changes of Elm2.4ME+ PL13 (25) compared with Elm2.4ME+ PL12 (25)
--------------------------------------------------------------

        - Compiler was giving warning that 'char *' and
          'unsigned char *' are not assignment-compatible
          (for code in mime_encode.c)
          Noted by: Arkady Altman <aya@cae.cig.mot.com>

        - Include headers of forwarded message to editor
          buffer even when you have noheader = ON
          (that is in situation mimeforward = OFF).
          That is now controlled with elmrc variable "noheaderfwd"
          (default: OFF)

        - Elm was getting SIGSEGV in remailer_parse_opts in remailer.c
          Noted by: V Menayang <victor@slip-50-11.ots.utexas.edu>
          [ Notice that this REMAILER code is still broken! ]

        - remailer.c was calling finger without resetting egid!

        - FreeBSD changes to utils/newmail.c also pertain to NetBSD
          From: Jeff Thieleke <thieleke@icaen.uiowa.edu>

        New elmrc options:
                noheaderfwd

Changes of Elm2.4ME+ PL12 (25) compared with Elm2.4ME+ PL11 (25)
--------------------------------------------------------------

        Warning: This version is probably much more buggy
                 than PL11 !!

        - The blank line between two messages in a folder 
          was missing.
          Noted by: Juergen Obermann <Juergen.Obermann@hrz.uni-giessen.de>

        - If nohdrencoding = TRUE and there is 8bit  characters in subject,
          treat as there was 8bit characters in body.
          From: Andrey A. Chernov <ache@astral.msk.su>
          [ This does not work very well... ie. It works only when
            Content-Type is Text/plain. ]
          " Before RFC 1522 issued, too many users (f.e. Russian users) use
            8bit chars in Subject: header field. There is a lots of 8bit 
            capable MUA & MTA exists now, much more then RFC1522 compatible 
            ones. In existent variant when you enter 8bit subject with ASCII 
            body result content charset stays as ASCII, it makes impossible to
            recognize Subject: charset. I UNDERSTAND that my method violates 
            MIME slightly (no 8bit characters must be in header field) but it 
            is adoptation of real life practic."

        - Add /usr/sbin to default path, there is sendmail on FreeBSD
        - Disable national extensions of 'date'
        - Add FreeBSD lock directory
        - Add KOI8-R charset to user prompt, it is officially registered, 
          RFC1700
        - Fix utime_buffer declaration for FreeBSD
        - Allow mailbox editing for Expert user level only. Total disabling
          of this option makes life harder for experienced users and total
          enabling cause accidental 'e' hitting damage novice users mailboxes.
          It seems that enabling it for Expert user leve is the best solution.
          From: Andrey A. Chernov <ache@astral.msk.su>

        - "I also discovered another small 'bug'... Michael Elkins changed 
           someday in pgp.c a get_address_from() call to a simple strcpy() 
           which caused my pgp not to find my secret key because of a 
           leading blank:
           " Volker Paulsen <paulsen@gmd.de>"
            ^
           After I changed it back to get_address_from() the leading blank
           becomes removed and pgp matches the key correctly against its key
           ring ."
          From: Volker Paulsen <Volker.Paulsen@gmd.de>

        - Add binary -flag for header_rec. No longer hack for remail.c.

        - Make more clear what part of message was PGP signed or encrypted.
          (Why pgp returns exit status 0 even when signature doesn not
           match???)

        - Some massive rewriting of copy_message. Now should decoding of
          RFC 1522 encoding work correctly when replying (and forwarding).
          Side effects:
                - Headers which have longer than 32 KB after unfolding
                  are truncated
                - Exact folding is not preserved

Changes of Elm2.4ME+ PL11 (25) compared with Elm2.4ME+ PL10 (25)
--------------------------------------------------------------

        - Elm wrote incorrect Content-Length: -header when 
          updating Status: -header
          Noted by: Juergen Obermann <Juergen.Obermann@hrz.uni-giessen.de>
          [ That content-length is lightly too big and is not fixed
            if it is last mail in folder (it is not big enough that
            newmbox.c notices) also incorrent Content-Length: -header
            causes in other situations that it is ignored. This causes
            problems when "From ":s are not escaped. ]

Changes of Elm2.4ME+ PL10 (25) compared with Elm2.4ME+ PL9 (25)
-------------------------------------------------------------

        - CM_DISPLAYING was wrong value in hdrs/defs.h

        - Elm was corrupting folder by adding number to end of mail...
          And therefore causes that next mail does not start
          with "From " in folder.
          Noted by: Volker Paulsen <Volker.Paulsen@gmd.de>

        - REMAILER code does not compile.
          From: Andrey A. Chernov <ache@astral.msk.su>
          From: Arkady Altman <aya@cae.cig.mot.com> 

Changes of Elm2.4ME+ PL9 (25) compared with Elm2.4ME+ PL8 (25)
------------------------------------------------------------

        - Attach viewer does not completely fill header_rec 
          so "lines" was uninitiazed, which may cause
          "metapager()" to choose randomly whether to use the 
          built-in pager or not, if you haven't set "pager" to 
          "builtin" or "internal". Now structure is pre-initialized
          completely. "lines" is set to number of bytes / 60
          (not saticfactory, but actually metapager should use 
           number of lines in decoded message -- 
          not in original anyway.)
          Prompted by: Guy Harris <guy@netapp.com>

Changes of Elm2.4ME+ PL8 (25) compared with Elm2.4ME+ PL7 (25)
------------------------------------------------------------

        - In syscall.c, around line 180, the space for p 
          was allocated but the actual string was never built.
          From: Mark Johnson <Mark.Johnson@ustc.vlsi.COM>
        
        - At the end of a message with the buildin pager I 
          sometimes get the prompt "MORE (you've seen 101%):"
          and I can not read the next message with 
          pressing the space bar.
          From: Juergen Obermann <Juergen.Obermann@hrz.uni-giessen.de>

        - "rfc822_reap_comments()" wasn't properly handling 
          Content-Type: headers like

          Content-Type: Multipart/Mixed;
                boundary="--Next_Part(Wed_Feb_14_09:54:49_1996)--"

          because it didn't realize that the ")" in the boundary 
          was inside a quote, and therefore should be copied rather 
          than being stripped out.
          From: Guy Harris <guy@netapp.com>

        - It wasn't RFC 1522-decoding the name in the "From:" header 
          when it put in the "Forwarded message from" and 
          "End of forwarded message from" lines.
          From: Guy Harris <guy@netapp.com>

        - Put defualt disposition for attachment to be 'attachment'
          when sending.

        - Check that attachment is not deleted before mail is sent.

        - Because copy_message is now called from metapager, it
          needs two more arguments (mailfile and current_header).
          I hope that this change breaks nothing! 
          Detected from report of: Mark Johnson <Mark.Johnson@ustc.vlsi.COM>

Changes of Elm2.4ME+ PL7 (25) compared with Elm2.4ME+ PL6 (25)
------------------------------------------------------------

        - Incorrect subject

Changes of Elm2.4ME+ PL6 (25) compared with Elm2.4ME+ PL5 (25)
------------------------------------------------------------

        - Sometimes extra newline was added when message or
          body of it was copied.

              > copy_message in fileio.c was gone too hairy.
                Tried to reorganize it. I hope that nothing
                breaks.

              > Semantic of flag CM_DECODE is now changed.

              > Now message is decoded before replying and forwarding
                (excpet when mime_forward is true -- forwarded message
                as attachment is not decoded).

              > Well, now [encode] [clear] does not work when metamail
                is called.

              > [encode] ... [clear] is now internally handled as
                application/X-ELM-encode (in MIME -message)

        - Do RFC 1522 decoding only in MIME messages.

        - builtin++ code in metapager was broken [encode] ... [clear] 

              > I simplified metapager. I hope that nothing
                breaks.

        > Notice that [encode] ... [clear] is broken when sending
          multipart messages.

        - Now also headers of message/rfc822 are prefixed when replying

        - Nicer printing of folded headers (in metapager and rfc822_decode)

        - Letter 'e' (= uses Elm's [encode] ... [clear]) added to status
          letter of mailbox menu.

Changes of Elm2.4ME+ PL5 (25) compared with Elm2.4ME+ PL4 (25)
------------------------------------------------------------

        - "nohdrencoding" was in wrong place in list

        - To instead of From in headers was always displayed:
          From: Petr Lampa <lampa@fee.vutbr.cz>

        - There was some confusion in (char *) versus (unsigned char *)
          in rfc1522_encode_text.
          Pointed by: Petr Lampa <lampa@fee.vutbr.cz>

        - Replaced check of R_OK with ECCESS_EXISTS in can_save 
          in attach_menu.c

        - Reordering of attach_viewer so metamail is not called 
          when it isn't needed (new definition of 'pagemultipart'
          was broken it.)

        - Message "Parsing MIME structure..." is printed

        - Added to some unlink and elm_chown calls to attach_menu.c

        - Now prints "Executing metamail..." if metamail is called for
          display message.

        - Tried fix MIME decoding of headers in copy_message
          (well, it still can't work correctly.)

        - MIME (RFC 1522) encoding of In-Reply-To -header

                > Address headers and headers from .elm/elmheaders are still
                  not encoded.

        - Don't try print To: address in menu if it does not exists.

Changes of Elm2.4ME+ PL4 (25) compared with Elm2.4ME+ PL3 (25)
------------------------------------------------------------

        [ Warning: This is perhaps more buggy than PL 3 (25). ]

        * Sending of simple Text/Plain messages with quoted-printable encoding
          was broken when remailer -code was added.
          Noted by: Petr Lampa <lampa@fee.vutbr.cz>

        - In the index screen Tag all, Delete all and Undelete all 
          didn't show the new status of the messages.
          From: Juergen Obermann <Juergen.Obermann@hrz.uni-giessen.de>

        - In readmsg the Cc-header line is always shown.
          From: Juergen Obermann <Juergen.Obermann@hrz.uni-giessen.de>
          [ This should be also posted to Elm Development Cordinator ]

        - Add a "Status: RO" line to all outgoing messages (when the "copy" 
          option is turned on), so that they do not show up as "New" when you 
          look at a folder.
          From: Pete Wenzel <pete@stc.com> 

        - The macro X_OK is undefined in some systems. 
          Use EXECUTE_ACCESS instead.
          From: Gunnar Ekolin <ekolin@carlstedt.se>

        > Failing to include <unistd.h>. 
          Test agaist I_UNISTD instead of ANSI_C.
          Noted by: Petr Lampa <lampa@fee.vutbr.cz>

        > Now EXECUTE_ACCESS, WRITE_ACCESS, READ_ACCESS, ACCESS_EXISTS,
          EDIT_ACCESS is defined in terms of X_OK, W_OK, R_OK, F_OK
          from unistd.h (if available)

        - Fix definition in hdrs/mcprt.h to match with lib/mcprt.c
          From: Claus Assmann <ca@informatik.uni-kiel.de>

        - DisplayAddress not work (well, I really not used that patch).
          That needs still reconsideration.
          From: Claus Assmann <ca@informatik.uni-kiel.de>

        - Mime (RFC 1522) encoding of following headers:
                - From  (fullname)
                - Subject
                - Content-Description

                Encoding of In-Reply-To, To, CC or headers in 
                .elm/elmheaders is NOT done.

        - New elmrc variable "nohdrencoding". If this variable is TRUE,
          then MIME encoding of headers isn't done.

        - Wrong tests with allow_no_encoding in src/mailmsg2.c.
          Noted by: Petr Lampa <lampa@fee.vutbr.cz>

        - Use strincmp for lib/strincmp.c instead of strcasecmp.
          Noted by: Petr Lampa <lampa@fee.vutbr.cz>

        - Added check for write errors in mime_encode.c
        
        New elmrc options:
                nohdrencoding

Changes of Elm2.4ME+ PL3 (25) compared with Elm2.4ME+ PL2 (25)
------------------------------------------------------------

        - Fix to builtin++.c SIGSEGV fix

Changes of Elm2.4ME+ PL2 (25) compared with Elm2.4ME+ PL1 (25)
------------------------------------------------------------

        - Really fix In-Reply-To -header
          [ This is also posted to Elm Development Cordinator ]

Changes of Elm2.4ME+ PL1 (25) compared with Elm2.4ME+ PL0 (25)
------------------------------------------------------------

        - SIGSEGV in builtin++.c when looking full headers of mail
          and Ctrl-L was hit.

        - Typo in remailer.c (causes that it don't link)
          From: Ollivier Robert <roberto@keltia.freenix.fr>

        - Ultrix patch from comp.mail.elm
          From: John Simonson <gort@wildcat.ceas.rochester.edu>,
                Sydney Weinstein <syd@myxa.com>, 
                Bill Gianopoulos <wag@swl.msd.ray.com>

        - Now Elm's Configure search for metamail -program

        - DisplayAddress: Don't munge sender with get_real_name

        - Elm was generating syntactically incorrect In-Reply-To -headers

        - Because some peoples seems have trashed src/state.c that patch
          includes file src/state.c.PL1. 
          If src/state.c.PL1 and src/state.c don't have identical,
          use command: mv src/state.c.PL1 src/state.c
          otherwise:   rm src/state.c.PL1

        - SIGSEGV when hitting 'G' in builtin++.c


Changes of Elm2.4ME+ PL0 (25) compared with version Elm2.4 PL24 ME8b+
-------------------------------------------------------------------

        - Added (security) patch PL24 -> PL25 and 
          added same kind (security) fixes for MIME code

        - Version number is now formed with new style :-)

        - elmrc -variable 'displaycharset' is propgated to
          environment variable $MM_CHARSET when calling metamail.
          Environment variable $MM_CHARSET overwrides default value
          of 'displaycharset'.

        - New elmrc -variable 'metamail'. So now you not need define
          environment variable $NOMETAMAIL, if you want compile Elm
          with MIME support, and you don't have metamail. Special values:
                none            Don't call metamail
                metamail        Call metamail, if environment variable
                                $NOMETAMAIL is not defined
                /path           Call this, if this is executable

        - Meaning of elmrc -variable 'pagemultipart' is changed. If
          this is FALSE (default), then call metamail if elm can't
          handle all subpart of multipart -type or if type is other
          than multipart/mixed, multipart/digest or multipart/report.
          If 'pagemultipart' is TRUE, then always handle multipart type
          without metamail (and treat unknown subtypes as multipart/mixed).

          Decision can Elm handle that type, is done when message is 
          displayed. So there is now 'M' -letter (= metamail needed) in
          multipart mails until message is displayed even when Elm can
          show it (that is because that definition is recursive and
          requires parsing of structure of message.)

        - Multipart/digest now works correctly when viewing attachment
          what we have sending and we have put type for it to be 
          Multipart/mixed.

        - Configure now tries test if sendmail supports -B8BITMIME and
          -BBINARYMIME (unlikely).

        - Makefile now don't compile or install 'filter' because security
          problems in it.

        New elmrc options:
                metamail

Changes of Elm2.4 PL24 ME8b+ compared with version Elm2.4 PL24 ME8b
-----------------------------------------------------------------

        - New version of my Reply-To patch included
          [ Old version of that patch is posted to Elm Development Cordinator ]

        - Made MIME part 2 (RFC 1522) decoding more accoriding of RFC.

        - Some bugfixes

Charset definition
------------------

        Files libdir/elm.mimecharsets and ~/.elm/mime.charsets
        handling mapping from current locale (LC_CTYPE) from
        MIME charset value. On file there may be three kind lines:

        -               charset-definition
        locale          charset-name
        locale          charset-definition
        -               alias-definition

        First kind line defines properties of charset.
        Second kind line defines mapping from locale to charset name.
        Third kind  line defines mapping from locale to charset and
        defines properties of charset. This kind line should be
        avoided, because it leads to redefinition of charset. 
        Fourth kind line gives aliases for charset. This does not
        redefine charset.

        So in file should be only three kind lines

        -               charset-definition
        -               alias-definition
        locale          charset-name    

        charset-definition have following forms

                "charset name"; params...
                charset; params...

        charset-name is name of charset without quotes (or ; character).

        locale have following forms

                LL_cc.encoding
                LL_cc
                *.encoding
        these mappings are only used if nl_langinfo(CODESET) is not supported.

        Exact matching (ie. when locale matches to LC_CTYPE) can be used to
        override mapping given by nl_langinfo(CODESET).

        Mapping order is

        1)      LC_CTYPE        charset         exact matching
        2)                                      value of nl_langinfo(CODESET)
                If LC_CTYPE is form LL_cc.encoding (and nl_langinfo(CODESET)
                is not supported) then also
        3)      LL_cc           charset         matching
        4)      *.encoding      charset         matching


        params on charset definition have forms

                param
                param=value
                param="quoted value"

        params are separated by ; character. 
        Possible paramas are following

                MIME-subset             gives byte-to-byte subset
                type                    gives type of charset
                map                     gives mapping from charset
                                        to unicode -- exact meaning
                                        depends type of charset
                alias                   gives alias for charset
          
        and iso2022 paramaters given on later.

        Specially MIME-subset=US-ASCII gives compatcharsets.
        Notice that MIME-subset should be used only on one-byte
        character sets which do not use escaping technology.

        Possible types of charsets include

                unknown-charset         this is default type
                ascii-set               specifies that bytes 0-127
                                        map to unicode values 0-127.
                                        This is default for charsets
                                        which have MIME-subset=US-ASCII
                                        given.
                one-byte-map            Specifies that mapping to
                                        unicode values are given on 
                                        external file. 
                iso646-set              Specicies 7-bit character set which
                                        invariant part of map directly
                                        to unicode values and and variant
                                        part is given on map argument.
                                        This is default for charsets
                                        which have MIME-subset=INVARIANT
                                        given.
                utf-8                   Specifies that charset uses UTF-8
                                        encoding algorithm. And that values
                                        0-127 map to unicode values 0-127.
                                        Note that this type parameter without 
                                        map paramater does not define mapping 
                                        of other values to unicode.
                utf-7                   Specifies that charset uses UTF-7
                                        encoding algorithm. And that values
                                        0-127 map to unicode values 0-127.
                                        Note that this type parameter without 
                                        map paramater does not define mapping 
                                        of other values to unicode.
                imap                    Specifies that charset uses IMAP
                                        variation of UTF-7 encoding algorithm.
                                        And that values 0-127 map to unicode 
                                        values 0-127. Note that this type 
                                        parameter without map paramater does 
                                        not define mapping of other values to 
                                        unicode.
                iso2022                 Species that charset uses ISO 2022 codes.
                                                

                               
        Possible map values for type ascii-set include following
        builtin maps

                US-ASCII
                ISO-8859-1
                ISO-8859-15
                KOI8-R
                KOI8-U
                CP1251
                CP1252

        Possible map values for type ascii-set and one-byte-map 
        include following kind names

                filename                File is read from directory
                                        given on map-text-dir directory
                                        (normally $lib/elm.map.txt)
                {rc}/filename           File is read from .elm subdirectory
                                        of user's home
                ~/filename              File is read from  user's home
                                        directory

        Possible map values for type iso2022 include following kind names

                US-ASCII                Defines mapping for ascii bank
                ISO-8859-1              Defines mapping for ascii and latin1
                                                bank

                iso 2022 map list       Refers to maps given on libdir/elm.iso2022sets
                                        and ~/.elm/iso2022sets files. Maps on list
                                        are separated by ; character. One map
                                        name can be like iso2022 specification
                                                bank-G0-94 1/4
                                        or can be filename.

        Map files should be "Format A" files from unicode.org.
        These map files were not included to Elm ME+ distribution,
        because on these files there were stated that

               Unicode, Inc. specifically excludes the right to 
               re-distribute this file directly to third parties 
               or other organizations whether for profit or not.

        Now that is changed and on these map files there are stated 
        that

              Unicode, Inc. hereby grants the right to freely use the 
              information supplied in this file in the creation of 
              products supporting the Unicode Standard, and to make 
              copies of this file in any form for internal or external 
              distribution as long as this notice remains attached.

        These map files are on charset/MAPPINGS/ISO8859 directory
        on Elm ME+ distribution.  These map files are parsed and 
        read to memory when first time referenced on elm.mimecharsets 
        or mime.charsets.

        If you use these mappings file, you need also setting

                page-known-charsets = ON

        That is default. That causes that metamail does is not
        called for these character sets (metamail probably does
        not do any conversions and tries print them as is.)

        Possible map values for type iso646 include following
        kind names

                INVARIANT                       (builtin)

                XXXX XXXX XXXX XXXX XXXX        (12 hex values)

                gives unicode character for following positions
                
                0x23, 0x24, 0x40, 0x5B, 0x5C, 0x5D, 0x5E, 
                            0x60, 0x7B, 0x7C, 0x7D, 0x7E

        Possible iso-2022 params are following

                other-set
                bank-94, bank-96, bank-94x94, bank-94x94, bank-96x96,
                bank-G0-94, bank-G0-94x94,
                bank-G1-94, bank-G1-96, bank-G1-94x94, bank-G1-96x96,
                bank-G2-94, bank-G2-96, bank-G2-94x94, bank-G2-96x96,
                bank-G3-94, bank-G3-96, bank-G3-94x94, bank-G3-96x96

        Params bank-94x94, bank-G?-94x94, bank-96x96, bank-G?-96x96
        are not allowed with charset type ascii-set, one-byte-map
        or iso646-set. (For these values only charset type iso2022
        is usefull.) Paramater bank-G0-94=4/2 is added automatically
        to bank specifications of charset type ascii-set.

        Possible param values for iso-2022 are space separated (usually 
        empty) list of intermediate bytes and final byte given on form d/d.
        If there is several bytes, list must be given on quoted form.
        Giving of iso-2022 param does NOT itself imply that charset may 
        include ISO 2022 codes. Rather it means, what codes to use when 
        switching terminal to that character set.

        Charset type=iso2022 accepts also following iso-2022 params.

                initial-bank-G0-94, initial-bank-G0-94x94,
                initial-bank-G1-94, initial-bank-G1-96, 
                initial-bank-G1-94x94, initial-bank-G1-96x96,
                initial-bank-G2-94, initial-bank-G2-96, 
                initial-bank-G2-94x94, initial-bank-G2-96x96,
                initial-bank-G3-94, initial-bank-G3-96, 
                initial-bank-G3-94x94, initial-bank-G3-96x96
                
        These are similar than iso-2022 params without "initial-".
        These parameters give initial assigments for banks if script
        does not give assigments for banks. These parameters make
        sense only for type=iso2022. Other charset types does not accpet
        several assigments for same bank so special initial paramaters
        are not needed.
                
        Possible map values for type utf-8, utf-7 and imap include following
        kind names

                UNICODE                 Specifies identify mapping to
                                        unicode on ranges 0x0080 - 0xD7FF
                                        and 0xF900 - 0xFFFF (*).
                filename                File is read from directory
                                        given on map-text-dir directory
                                        (normally $lib/elm.map.txt)
                {rc}/filename           File is read from .elm subdirectory
                                        of user's home
                ~/filename              File is read from  user's home
                                        directory

        Map files have lines on format
                start-end       start-end
        where first start-end gives values on given charset
        and second gives correspind unicode-values (start and
        end value). Start and end should be given on hexadecimal
        format.

        (*) Mapping of ascii range (0000-007F) is determined
            by charset type utf-8, utf-7 and imap. Surrogates 
            Area (D800-DFFF) and Private Use Area (E000-F8FF) 
            are excluded from mapping.

        alias-definition have following forms

                "charset name"; alias="name"...
                charset; alias=name...

        There may be given several aliases given on one line.
        Also aliases may be given on own lines.

        Alias definition lines for given charset should be after
        charset-definition line for charset. If charset-definition 
        for given charset is given after alias definition, alias
        definition does NOT follow new definition of charset.

ISO2022 maps information
------------------------

        Files libdir/elm.iso2022sets and ~/.elm/iso2022.sets
        may give lists of ISO 2022 sets and correspondig maps.
        Lines on these files are form

        banktype  "bytes"         filename      flags
        
        
        For example
                
        bank-G0-94      4/10    {rc}/JIS0201.TXT one-byte-map=lower
        bank-G0-94x94   4/2     {rc}/JIS0208.TXT 3col=2
        bank-G0-94x94   4/4     {rc}/JIS0212.TXT


        Then these maps need to be referenced on
        ~/.elm/mime.charsets file:

        -       ISO-2022-JP;type=iso2022;MIBenum=39;initial-bank-G0-94=4/2;
                bank-G0-94=4/10;bank-G0-94x94=4/0;bank-G0-94x94=4/2;
                map="bank-G0-94 4/2;bank-G0-94 4/10;bank-G0-94x94 4/2"

        (that is one line -- splitted for multiple lines for readability)

        -       ISO-2022-JP-2;type=iso2022;MIBenum=40;initial-bank-G0-94=4/2;
                bank-G0-94=4/10;bank-G0-94x94=4/0;bank-G0-94x94=4/2;bank-G0-94x94=4/1;
                bank-G0-94x94=4/3;bank-G0-94x94=4/4;bank-G2-96=4/1;bank-G2-96=4/6;
                map="bank-G0-94 4/2;bank-G0-94 4/10;bank-G0-94x94 4/2;bank-G0-94x94 4/4"

        (that is one line -- splitted for multiple lines for readability)       
        
        And if character sets uses two character position for 94x94 sets
        on display, that must be given on ~/.elm/terminal.info file:

        kterm   ISO-2022/DW             ISO-2022-JP


        Possible flag values on iso2022.sets file are

                ascii=lower                     Treats maps as charset type=ascii, uses range 32-127  (*)
                ascii=upper                     Treats maps as charset type=ascii, uses range 160-255
                one-byte-map=lower              Treats maps as charset type=one-byte-map, uses range 32-127  
                one-byte-map=upper              Treats maps as charset type=one-byte-map, uses range 160-255

                range=lower                     Uses range 32-127  
                range=upper                     Uses range 160-255
                3col=2

        Possible filename values for iso2022.sets file are are
        same kind than map names in ~/.elm/mime.charsets file.
        That is:

                filename                File is read from directory
                                        given on map-text-dir directory
                                        (normally $lib/elm.map.txt)
                {rc}/filename           File is read from .elm subdirectory
                                        of user's home
                ~/filename              File is read from  user's home
                                        directory

        Map files should be "Format A" files from unicode.org.
        Note that "Format A" maps for EASTASIA are on OBSOLETE
        directory on unicode.org.
        ( http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/ )

        Current data is on Unihan.txt file on UNIDATA directory.
        That format is not supported.
         ( http://www.unicode.org/Public/UNIDATA/Unihan.txt )


        (*) That is used to define ascii part  (bank-G0-94=4/2)

Additional terminal information
-------------------------------

        Files libdir/elm.terminalinfo and ~/.elm/terminal.info
        handles terminal specific methods for switching of chartset
        of terminal. On file there may be following kind lines:

        term    ISO-2022        charset-name
        term    ISO-2022        charset-definition
        term    ISO-2022/DW        charset-name
        term    PRIVATE         charset-name    d/d d/d d/d
        term    PRIVATE         charset-name    [ condition ] d/d d/d d/d


        where term is type of terminal (ie value of $TERM).
        ISO-2022 is literal, which indicates that 
        next column is character set name or character set
        definition as on elm.mimecharsets or mime.charsets file
        and that character set switching happends as given with
        other-set and bank-Gx-* attributes on charcter set 
        definition. PRIVATE literal, which indicates that
        next two columns are charatter set name and bytes given
        on d/d format for switch character set. 

        ISO-2022/DW literal indicates that terminal uses
        same attributes than on case ISO2022 literal.
        Additionally that says that 94x94 and 96x96 sets
        consume two character positions on display with that
        terminal. That literal is available only with charset 
        which have type=iso2022.

        It is assumed that these escape sequencences not affect
        to input (keyboard) charset of terminal (ie. not affect
        'keyboard mode' or 'keyboard language').

        [ condition ] is like  [ exp = exp ] where exp can be
        either "quoted value" or $ENV_VAR. "quoted value" allow
        alos environment variables (same way than Elm ME+ allows
        on pathnames.)  For example that may be used on lines like

                linux   PRIVATE ISO-8859-15     [ $SYSFONTACM="iso15" ] 1/11 2/8 4/11 0/15
        
        Read commensts about using of these from doc/terminal.info

Folder and file browser
-----------------------

        Hit TAB to get folder or file browser when file or folder
        name is asked. 

        Characters '*' and '?' are treated as wildcards on folder
        and file browser if option browser-wildcard-matching is ON 
        (default). Typing name with wildcard and pressing ENTER or 
        TAB gives directory listing limited with that wildcard 
        specification. That is limited to one directory -- directory 
        paths can not include wildcards. Note also that it prevents 
        selecting file or folder names that include '?' or '*' characters.
        
        Folder and file browser understands following special keys:

        TAB             Gives directory listing for that directory
                        name which is written to file or folder name
                        question prompt.
        UP              Moves selection up on folder listing
        DOWN            Moves selection down om folder listing
        LEFT            Removes selection from file or folder name
                        question prompt,
                    or  Gives directory listing for previous directory.
        RIGTH           Adds selection from file or folder name
                        question prompt,
                    or  Gives directory listing of current selection
                        (ie. selects that directory).
        Enter           Answers to file or folder name question.

        
        IMAP directory can be accessed by giving username@hostname
        or username@hostname:folder or username@hostname/directory
        to prompt and pressing TAB key.

        Note that username@hostname has three meanings:
                1) Default directory (folder listing) for 
                   username on hostname.
                2) IMAP INBOX folder for username on hostname.
                3) POP mailbox username on hostname.

        If username@hostname is given (as itself or as prefix)
        on file browser, that gives error message that remote
        directories or files are not available.

        Following table shows which elmrc options can refer to
        remote mailboxes and prefixes which folder browser supports.

        Elmrc             Remote      Browser        
        variable (3)      possible    prefix (1)   Meaning
        ----------------  ----------  --------     ---------
        incoming-mailbox  YES         !            Current incoming
                                                   mailbox
        sentmail          YES         <            "sent" folder
        receivedmail      YES (2)     >            "received" folder
        maildir           NO          =            "Mail" directory
        maildir           NO          +            "Mail" directory
        maildir           NO          %            "Mail" directory
        extra-mailbox-dir NO          (none)       Extra mailbox directory
        (none)            NO          $            Environment variable (4)
        (none)            NO          ~/           User's home directory
        (none)            NO          ./           Current directory

         (1) If '!', '<' or '>' is used as prefix, current
             directory (or subfolder) separator is added
             automatically after incoming, sent or received
             folder. That usage is useful only with IMAP
             servers, which at the same time have folders
             (mailboxes) and directories (if folders which 
             include subfolders or mailboxes).
         (2) If you put "received" folder to remote IMAP server,
             you are forced to log in to IMAP server every time 
             when you leave folder or mailbox!
         (3) Environment variables in these elmrc variables are 
             expanded before use.
         (4) Environment variables are supported only with local
             mailboxes or folders.

Mail services config
--------------------

        Files libdir/elm.mailservices and ~/.elm/mail.services
        specify data for remote services. Lines on these files
        are following kind:

        name    imap            parameters
        name    pop             parameters
        name    submission      parameters
        name    smtp            parameters
        name    *               parameters

        where name is canonical name for host; 'imap' specify that
        IMAP protocol should be used for mailbox access, 'pop' specify
        that POP protocol should be used for mailbox access and '*'
        can be used to specify parameters without specifying type of
        mailbox access; parameters are in general following form

                parameter=value; parameter=value; ...
                paramater; parameter; ...

        Following parameter names are recognized

                alias                           gives alias for host
                                                (value can be quoted)
                addr                            gives ip-address
                                                (or hostname) for service
                port                            gives port for service
                                                (must be decimal form)
                {tag}:{paramater}               Valid {tag} are these
                                                which are given with
                                                use-library -elmrc option.
          
        Following forms for specify of "addr" can be used:

                addr=hostname
                addr="hostname"
                addr=ip:A.B.C.D
                addr=ip:"A.B.C.D"
                addr=ip:A.B.C.D/port
                addr=ip:"A.B.C.D"/port

        hostname is name of that host which corresponding ip-address
        (or addresses) should be used, A.B.C.D is literal ip-address,
        port is port number in decimal.

Dynamic libraries
-----------------

        Elmrc option use-library can be used load libraries on run time.

        For example

                use-library = tag1 tag2 tag3

        uses libelmme-tag1.so, libelmme-tag2.so and libelmme-tag3.so
        from same directory than where is libelmme-base.so. If there 
        is version suffix on libelmme-base.so then also for these
        dynamically loaded libraries version suffix is required.

        Elmrc option use-library can be used both user elmrc and system
        elm.rc file -- user specification overrides system specification
        as usual.

        Tags can use characters abcdefghijklmnopqrstuvwxyz0123456789-
        and first 3 character must be letters.  
        
        On ~/.elm/elmrc (or on global elm.rc) there can be shared
        library specific configuration. After line "tag:" config
        variables refers to shared library corresponding to 'tag'.
        
        Also "tag:variable = value" syntax is possible. For example

                tls:rand-file = /home/hurtta/.rnd

        is equivalent of
        
                tls:
                rand-file = /home/hurtta/.rnd

        (except that "tls:rand-file" changes current section to 
         "tls" only temporary.)

        Also on ~/.elm/mail.services (or global elm.mailservices)
        there can be shared library specific configuration. See
        chapter "Mail services config" for details. For example

        cgate.host      *       tls:starttls-version=ssl


Debug output
-------------

        Debug output can be requested with option -d (if Elm 
        compiled with -DDEBUG). General form of option is

                -d {class}={debugfile}:{level}

        Also following forms are possible

                -d {class}:{level}
                -d {class}
                -d {level}
                -d ={debugfile}:{level}

        -d option may be given several times (to specify
        different output for different classes). Also same
        {debugfile} can be given on different -d options.
        This case {debugfile} is not opened several times.

        {debugfile} is file to which (on home directory) debug
        output os written. Default is {progname}:debug.info,
        ie. ANSWER:debug.info, ELMALIAS:debug.info, 
        ELMCHARSET:debug.info, ELMTERMINAL:debug.info,
        FASTMAIL:debug.info, FRM:debug.info, NEWALIAS:debug.info,
        NEWMAIL:debug.info, PRLONG:debug.info, READMSG:debug.info,
        ELMUNIDATA:debug.info or ELM:debug.info.
        
        If {debugfile} name is {something}:debug.info, existing 
        {something}:debug.info is renamed to {progname}:debug.last. 
        Otherwise debug output is appended to {debugfile}.

        If {class} is not given, it defaults to all classes.
        Posisble classes are printed to {debugfile}. Value 0
        for {level} can be used to get just possible values
        of {class}.

        Currently possible values of {class} are:

                ELM             addr            alias           
                charset         config          dl
                file            header          imap
                mail            mbox            mem
                mime            misc            ndbz
                net             pgp             pop
                signal          ui              util
                stateio         mailer


Mailer definition
-----------------

        elm.rc option "mailer" can be used to define mailer
        type and path, which should be used. This can be
        specified only on global elm.rc (not user's .elm/elmrc).
        Option have form

        mailer = type; params...

        type can be one from following

                unknown
                sendmail
                submitmail
                execmail

        NOTE: Only type sendmail is tested!

        When type is "unknown" mailer is called as

                path recipient1 recipient2 recipient3 ...

        Following option params have accepted for type
        unknown mailer

                path=...
                add-from=...
                use-domain=...

        Note that mailer which type unknown must NOT terminate
        mail when line with period (.) alone is detected.


        When type is "sendmail" mailer is called as 

                path -oi -oem sender other-options -- recipient1 recipient2 ...

        where sender may be
                -f address
        if allow-set-sender=yes is set (and user sets return-path)

        where other options can include following options

                -v
                -om
                -B8BITMIME
                -BBINARYMIME
                -R full
                -R hdrs
                -N never
                -N xxx                  where xxx is one or more from
                                                success,failure,delay

        When type is "sendmail" mailer is called for address verify
        as

                path -bv -- address

        (you need set verify=yes, otherwise sendmail is not called
         for verify)

        Sendmail is also called for verify (of envelope sender address)
        if allow-set-sender=yes is set.

        Following option params have accepted for type
        sendmail mailer

                path=
                add-from=
                use-domain=
                supported-bodytype=
                supports-dsn=
                verify=

        When type is "submitmail" mailer is called as

                path -mlrnv

        Recipients are passed via standard input (one recipient per line.)


        Following option params have accepted for type
        submitmail mailer

                path=
                add-from=
                use-domain=

        When type is "execmail" mailer is called as
        
                path options recipient1 recipient2 recipient3...

        Where options can include

                -d
                -m

        Following option params have accepted for type
        execmail mailer

                path=
                add-from=
                use-domain=


        Posssible parameter values are following

                add-from=yes                    Add From: -header        
                add-from=dont                   Let mailer to add From: -header

                use-domain=no                   Do not add @hostname to address
                use-domain=yes                  Add @hostname to local address

                supported-bodytype=7bit
                supported-bodytype=8bit         Mailer accepts -B8BI7MIME 
                                                option
                supported-bodytype=binary       Mailer accepts -BBINARYMIME
                                                option

                supports-dsn=no
                supports-dsn=yes        Mailer accepts -R and -N options

                verify=no               Use default verify for address
                verify=yes              Call mailer for address verify


Elm mailbox menu's status letters
---------------------------------
        - First letter:         D       Deleted
                                E       Expired
                                N       New
                                O       Unread
                                r       replied

        - Second letter:        !       Message not downloaded
                                C       Confidental
                                U       Urgent
                                P       Private         (or ...)
                                A       Action
                                F       Form letter
                                e       Uses Elm's [encode] ... [clear]
                                P       PGP message     (or ...)
                                S       PGP signed message
                                K       PGP public key
                                ?       MIME message with unknown
                                                MIME version
                                a       MIME message is attachment
                                M       MIME message wich requires metamail
                                                or isn't yet parsed
                                m       Pre-MIME message wich requires metamail
                                s       signed message (may require metamail)
                                p       private (encrypted) message


New commands for Elm 2.4ME+ (compared with Elm 2.4)
-------------------------------------------------

   Subject (main) menu:

          ^E                    Extract PGP public keys from current message
          ^F                    Forget PGP passphrase
          ^K                    Mail PGP public key(s)
           P                    Print text of current message or tagged 
                                        messages
           S                    Save (copy) text of current message to file
                                        or text of tagged messages to a folder
           U                    Unread message (change status from read
                                        to unread)
           v                    View attachments in current message.

Altered elmrc variables for Elm 2.4ME+
--------------------------------------

        pagemultipart           PL0     If FALSE, call metamail if 
                                        elm can't handle all subpart 
                                        of multipart -type or if type is 
                                        other than multipart/mixed, 
                                        multipart/digest or 
                                        multipart/report. If TRUE then
                                        always handle multipart type
                                        without metamail (and treat unknown 
                                        subtypes as multipart/mixed).

        readmsginc              PL51    Changed default to 100

        displaycharset          PL78    Character set to which switch 
                                        terminal
        charset (text-charset)  PL73    Character set to which convert
                                        outgoing mail text

        alteditor               PL78    Now used even when "editor" is
                                        not builtin.

        page-known-charsets     PL79    Changed default to ON
                                        
        copy                    PL82    Changed default to ON

New elmrc variables for Elm 2.4ME+ (compared with Elm 2.4)
--------------------------------------------------------

        add-in-reply-to-phrase                  -
        add-sender                              -
        allow-charset-switching                 (MIME)
        askpgpsig                               PGP
        auto-attachment                         MIME
        auto-iso-8859                           MIME
        background-wait-time                    -
        browser-wildcard-matching               -
        charset-convert-ok                      MIME
        convert-comment-to-fullname             -
        convert-utf-header                      (MIME)
        default-folder-status                   -
        default-mime-text-charset               MIME
        default-nomime-charset                  -
        dsn-success                             MIME / DSN
        env-from-source                         -
        extra-mailbox-dir                       -
        header-phrase-display-mode              -
        imap-charset                            IMAP
        imap-connection-cache                   IMAP
        imap-fast-lookup                        IMAP
        imap-max-download-size                  IMAP
        imap-naming-convention                  IMAP
        imap-show-error                         IMAP
        imap-show-greeting                      IMAP
        imap-show-warning                       IMAP
        imap-use-examine                        IMAP
        incoming-mailbox                        (POP, IMAP)
        iso646-charsets                         MIME
        keeppassfor                             PGP
        local-fast-lookup                       -
        local-fs-charset                        -
        lock-in-copy                            -
        lock-folder                             -
        mailer                                  -
        map-bin-dir                             MIME / SYSTEM
        map-text-dir                            MIME / SYSTEM
        metamail                                MIME
        metamail-mailcaps                       MIME
        menu-display-host                       -
        mimebodykeywords                        MIME
        mimeforward                             MIME
        noencoding                              MIME
        nohdrencoding                           MIME
        noheaderfwd                             -
        pagealternative                         MIME
        page-known-charsets                     MIME
        pagemultipart                           MIME
        pagesigned                              MIME
        pgp2                                    PGP
        pgp5                                    PGP
        gpg                                     PGP
        pgp-sign-type                           PGP / MIME
        pgp-version                             PGP
        pop-max-download-size                   POP
        pop-show-greeting                       POP
        quoteforward                            -
        readdatapercentinc                      -       
        require-mime-version-for-body-encoding  MIME
        require-mime-version-for-hdr-encoding   MIME
        show-header-errors                      (MIME)
        showpgppreamble                         PGP
        sort-thread-max-time                    -
        text-charset                            MIME
        unidata                                 MIME / SYSTEM
        use-library                             -
        usepgppass                              PGP
        utf7-encode-optional                    MIME

Obsolete elmrc variables
-------------------------

        charset                                 (alias to text-charset)
        hpkeypad                                (alias to keypad)
        hpsoftkeys                              (alias to softkeys)
        keypad                                  -
        softkeys                                -
        textencoding                            MIME
        bounce                                  (alias to bounceback)
        bounceback                              UUCP
        pgp                                     PGP (alias to pgp2)
        mailbox                                 (alias to receivedmail)

New elm options for Elm 2.4ME+ (compared with Elm 2.4)
----------------------------------------------------

        -w                      Write .elm/elmrc on startup
        -A                      Attach file

Obsolete elm options
--------------------

        -k                      Enable HP 2622 terminal keyboard
        -K                      Keypad&softkeys - enable use of softkeys + "-k"

Options which now takes enumerated values
-----------------------------------------

        userlevel               beginner, intermediate, expert
        noencoding              pass-7bit, pass-8bit, pass-binary
        pgp-sign-type           application/pgp, text/plain, text/x-pgp

Warnings
-------- 

        - 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 <hurtta+elm@ozone.FMI.FI>

        - Decoding of MIME is not done when searching content of mail

        - 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.

        > But anyway, Elm will never be MIME Conformant

        - 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 as arguments. Giving of sevaral addresses
          as one arguments 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>'

        - readmsg does not use mailbox (lib/mbox.c) routines!
        - p)rint command on article menu is still broken
          (but you perhaps may use P)rint text command)
        - Elm tools (on utils/*) do not use mime routines (melib).

        - 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

        - Conversion from Display character-set to Sending 
          character-set is not possible it should be refused
          (but if it is not detected result of conversion will
           be practically empty.)

        - All referenced one-byte-map maps are parsed and
          read to memory. This may cause quite big memory
          consumption if you have given mapping to a lot of
          charsets and you have many users running elm.
          That mapping information should be shared between
          processes to reduce memory consuption.

        - 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 message.
                  
        - 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 
          charset.

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

        - Some Linux gethostbyname implementations accept 
          ip-address as name, but return garbage on h_name -field 
          of struct hostent.

        - "  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.4.3.3.26 (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 mapping
                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 
                -misc-fixed-medium-r-normal--12-200-75-75-c-100-iso8859-1
          and not
                -misc-fixed-medium-r-normal--12-200-75-75-c-100-iso8859-15

          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.)

        - fastmail is broken

Collector of these patches
--------------------------

        Kari E. Hurtta <hurtta+elm@ozone.FMI.FI>


Poofreeding by Laura Katala
