elm  2.4ME+127
About: Elm\
About: Elm ME+ is an interactive screen-oriented mail system (Millennium Edition).
is an interactive screen-oriented mail system (Millennium Edition).
  Fossies Dox: elm-2.4ME+127.tar.gz  ("unofficial" and yet experimental doxygen-generated source code documentation)  

elm Documentation

Some Fossies usage hints in advance:

  1. To see the Doxygen generated documentation please click on one of the items in the steelblue colored "quick index" bar above or use the side panel at the left which displays a hierarchical tree-like index structure and is adjustable in width.
  2. If you want to search for something by keyword rather than browse for it you can use the client side search facility (using Javascript and DHTML) that provides live searching, i.e. the search results are presented and adapted as you type in the Search input field at the top right.
  3. Doxygen doesn't incorporate all member files but just a definable subset (basically the main project source code files that are written in a supported language). So to search and browse all member files you may visit the Fossies elm-2.4ME+127.tar.gz contents page and use the Fossies standard member browsing features (also with source code highlighting and additionally with optional code folding).

This README is for the 2.4 version. Look file README.ME+ for the 2.4ME+ version.

This is the 2.4 (USENET) version of the Elm Mail System

See the NOTICE and Instruct files for further details.

It is IMPERATIVE that all users rerun newalias after installing Elm 2.4 when upgrading from a previous version. Elm's behavior with aliases could be unpredictable if this step is not performed.

Where to find more info on Elm: Much discussion on Elm including interim bug fixes, work arounds and future plans occurs in the Usenet news group comp.mail.elm. Also a monthly status report on Elm is posted there. This status report lists the archive sites that have the patches to Elm as well as the latest version.

Patches to Elm are posted to comp.mail.elm and comp.sources.bugs as soon as they are released. They are posted to comp.sources.unix shortly thereafter, to allow time for feedback of problems in the patches. Patches should be available from the archive sites, or from the archive server. Mail archive-server@DSI.COM for details on how to use the archive server program. Ask it for help.

In addition, ftp.uu.net maintains a mirror of the Elm release files in /networking/mail/elm. Patches are available in that directory shortly after release. Other sites also keep mirrors of the Elm distribution. There are sites in Europe, Australia, Taiwan and the UK in addition to several in the US. Send the message

send elm elm.ftp

to archive-server@dsi.com for a current list of ftp mirror sites.

Limitations/Problems you might encounter in compiling and installing Elm:

From comp.mail.elm, dws@ssec.wisc.edu (DaviD W. Sanderson) writes:

... whoever wrote the default termcap and/or terminfo descriptions for xterm included in the ti/te strings the special escape sequences to make xterm switch between the normal and alternate screen buffers. These sequences are:

\E[?47h - use alternate screen buffer \E[?47l - use normal screen buffer ... The elm code is just fine as it is. If you change it so that it doesn't ever send ti/te, you'll just break elm for somebody else. Fix your termcap/terminfo definition instead.

On some Unix 5.3.2 systems, if only a runtime version of the

O/S has been installed, not all the include files exist for compiling curses.c. The ptem.h include file contains the window sizing structure on this version. Either comment out the window sizing code, or install the remaining include files from the development system.

If you run a nonstandard configuration of Mail, such as Xenix

running smail, Configure can get confused as to where to place items. Be sure and check the config.sh file for the correct placement before continuing. If changes are necessary, rerun Configure and fix the file before exiting.

On SCO Xenix, if you are all mail is from user anonymous,

this is because the mail delivery agent should be /usr/lib/mail/execmail instead of /usr/bin/rmail or /bin/rmail.

On Next's NeXTStep 3.0, use the compile flags 

-bsd -fwritable-strings, specify the include file directory as /usr/include/bsd, and change, at the 'edit the config.sh' file prompt, the value of d_memcpy to undef and sigtype to int. (From: Jess Anderson)

From: Manuel Alberto Ricart <alberto@parsec.mixcom.com>, 

for Next's version 1.0 it is necessary to answer -bsd for the Any additional cc flags? question and -lsys_s for the Any additional libraries? question within Configure. At "If you need to edit config.sh, do it as a shell escape here:" Change d_voidsig from 'define' to 'undef' Change passcat from 'cat /etc/passwd' to 'nidump passwd /' if you're not using YP/NIS, and don't have more than two levels of NetInfo hierarchy. (Consult a NeXTpert otherwise!)

on Next's 2.0/2.1 systems: same as above, except

For "Any additional libraries?" just hit RETURN For "What is the full name of your C library?" specify /lib/libsys_s.a Also for additional linker ld flags, recommend -object. This will make the binaries as small as possible. Otherwise if the smallest binary will be 16K or more.

On IBM RISC 6000 AIX, 3.2 or newer, to compile Elm during

Configure, -U__STR__ is no longer needed. Elm should now compile with no changes.

On IBM RISC 6000 AIX, prior to 3.2, you might get string

function errors on the compile. The solution is to do the following:

Look at /usr/lpp/bos/bsdsport. It tells you to add following lines to /etc/xlc.cfg

  • BSD 4.3 c compiler stanza bsdcc: use = DEFLT crt = /lib/crt0.o mcrt = /lib/mcrt0.o gcrt = /lib/gcrt0.o libraries = -lbsd, -lc proflibs = -L/lib/profiled,-L/usr/lib/profiled options = -H512,-T512, -qlanglvl=extended, -qnoro, -D_BSD, -D_NONSTD_TYPES, -D_NO_PROTO, -D_BSD_INCLUDES, -bnodelcsect, -U__STR__, -U__MATH__

And then link bsdcc to xlc and use bsdcc instead of cc.

-- Mika Koistinen ------- Opinions are my own-- ----- WARNING:
Myll{rintie 57 F 62 | Internet: mmkoisti@luotsi.uku.fi | Effect has no code 70780 KUOPIO | Bitnet: mmkoisti@FINKUO | in function main FINLAND | tel 358-71-162805 |

Also on IBM RS/6000 AIX (Possibly only prior to 3.2)

If you want elm to make use of the NLS options documented for sendmail (using sendmail.nl) you have to use the UNDOCUMENTED -x flag on sendmail. See article in comp.unix.aix

Since Configure doesn't ask for additional sendmail flags you have to add -x in the smflags entry in hdrs/sysdefs.SH (hdrs/sysdefs.h)

I guess that this should go into the FAQ entry on IBM AIX.

-- Bjorn Brox, CORENA A/S, P.O. Box 448, 3601 Kongsberg, NORWAY E-mail : brox@dms.corena.no , Phone : +47 3 73 66 11 , Fax : +47 3 73 52 62

From: gordonb@mcil.comm.mot.com (Gordon Berkley) On HP/Apollo Domain OS: Apollo TAR is screwey in creating directories. Need to create directories before un-taring DIRS="utils test src nls nls/C nls/C/C nls/C/C/C nls/gencat
lib hdrs filter doc" for dir in $DIRS do mkdir $dir done

On some systems, especially those based on the AT&T Port to

286's the -O flag of the compiler produces improper code causing segmentation violations. If this happens, recompile the code without the -O flag. This has been seen with Microport SysV/AT type systems.

The Configuration script has been known to exercise an old bug

on HP-UX's version of /bin/sh. This shows up as part of the variable setting section showing up on your screen, and configure aborting on errors. If this happens, try using ksh instead of sh as in: ksh Configure this will usually solve the problem.

The Configuration script has been known to exceed the default

stack size in Unix 286 sh's. If Configure does not run correctly on this type of machine increase the stack size and rerun it. On Microport SysV/AT machines, Configure might run correctly under ksh. Obtain ksh from Microport (available to current version owners without additional charge) and rerun Configure using it. Xenix 286 users may have the same problem, but they can work around it by changing the stack size within the shell as reported a Xenix 286 Elm user:

I had the same problems as everyone else is reporting on Microports *nix under SCO XENIX 2.2.1.

The solution is simple, up the stack size for /bin/sh. I used

mv /bin/sh /bin/sh.old

cp /bin/sh.old /bin/sh

fixhdr -F 8000 /bin/sh

This may seem a bit over the top, but I put it back after!

mv /bin/sh /bin/sh.rm

mv /bin/sh.old /bin/sh

Then wait till nobody is using /bin/sh.rm then

rm /bin/sh.rm

That way you preserve your old shell, ( i.e. you don't break it ), but you get to use Configure without bus errors etc.

I hope that of use


UUCP ..!uunet!mcvax!ukc!slxsys!g4lzv!keith | Keith Brazington Smart mail keith@g4lzv.co.uk | 5b Northgate Rochester Kent UK Ampanet [] and [] | +44 634 811594 Voice Packet G4LZV @ GB7UWS -- G4LZV USENET BB --| +44 634 401210 Data v22,v22bis You might have to try values from 7000 to 8800.

Also on Microport SysV/AT Machines, the C compiler produces

improper code for one of the arithmetic calls. To fix this problem it is necessary to reduce the complexity of the statement, as reported by one of our testers here is the symptom and his patch. Being this is a compiler bug on only one system, we make the information available, but not incorporate it in the main release. Note, this may effect other areas of Elm, and in the future, Microport may even fix this problem.

I finally tracked down the bug that was causing the lengthy delays when the first message was displayed. The Microport 80286 C compiler was generating bad code for the computation of padding in showmsg.c. The compiler generated scratch variables in the expression were being located at weird offsets in the stack segment. This caused the program to stall while the kernel attempted to grow the stack segment to a size that was large enough to contain the scratch variables. This explains why it only happened the first time a message was displayed. Here is a patch that fixes the problem:

*** showmsg.c.dist Fri Mar 17 21:08:37 1989 --- showmsg.c Sat Mar 18 06:14:04 1989

*** 280,289 atoi(current_header->year), current_header->time);

    /* truncate or pad title2 portion on the right

! * so that line fits exactly */ ! padding = ! COLUMNS - ! (strlen(title1) + (buf_len=strlen(title2)) + strlen(title3));

    sprintf(titlebuf, "%s%-*.*s%s\n", title1, buf_len+padding,
        buf_len+padding, title2, title3);

--- 280,292 ----- atoi(current_header->year), current_header->time);

    /* truncate or pad title2 portion on the right

! * so that line fits exactly, expression has been ! * simplified to avoid bug in Microport 80286 ! * C compiler */ ! padding = COLUMNS; ! padding -= strlen(title1); ! padding -= (buf_len = strlen(title2)); ! padding -= strlen(title3);

    sprintf(titlebuf, "%s%-*.*s%s\n", title1, buf_len+padding,
        buf_len+padding, title2, title3);

-- John A. Limpert UUCP: johnl@n3dmc.UUCP, johnl@n3dmc.UU.NET, uunet!n3dmc!johnl

Some versions of GNUmake are slightly incompatible with

standard make. If you plan on using GNUmake instead of standard make, you might need to change instances of: -$(MAKEFLAGS) to: $(MAKEFLAGS) in all Makefiles that contain that construct. [ NOTE: Changed on Elm 2.4ME+ PL100 ]

On some systems (at least MIPS RiscOs 4.52, and CDC EP/IX 1.4.x) there is an stdlib.h with ANSI Constructs, but the normally supplied Compiler did not handle ANSI-C. If you use the bundled compiler (cc2.11 or cc2.20), you should edit config.h after configuring, and remove the define for I_STDLIB. With gcc or the separate ANSI C Compiler there should be no problem.

On many systems with the Microsoft UNIX C Compilers, compiling with optimization breaks the code. One symptom is that aliases do not work. On those machines do not compile any of Elm with optimizations. To accomplish that, set all occurrences of "OPTIMIZE" in the makefiles to "-Od" - then it works. From: mrbulli@btoy1.UUCP (Thomas Bullinger)

SCO uses the Microsoft C compiler in its products. For releases of the SCO Development system prior to 3.2v4.2 or ODT 3.0, it is probably wise to disable optimization. Elm 2.4 has however been tested with -Oe optimization under SCO Unix 3.2v4.2 and ODT 3.0 development systems. This level of optimization can safely be specified in Configure when you are asked for compiler flags. From: larryp@sco.com (Larry Philps)

                Syd Weinstein
                Elm Coordinator