Software Package:       
	elm

Release/Version:
	Elm 2.4PL25

Retrieved from:
	ftp.dsi.com/pub/elm/elm2.4.tar.Z

Bug reports:
	This software package is maintained by the software contributor,
	not BSDI.  Please send any bug reports to support@BSDI.COM
	and elm@DSI.COM.

Comments:

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Modifications to this version made by BSDI:

The elm setgid code didn't work because it expected POSIX_SAVED_IDS
behavior.  A '#define setgid setegid' appears to take care of it.

*** config.h.orig	Tue Nov 14 12:36:10 1995
--- config.h	Tue Nov 14 12:11:52 1995
***************
*** 340,345 ****
--- 340,346 ----
   *	group id of the file, as it is running setgid.
   */
  #define SAVE_GROUP_MAILBOX_ID	/**/
+ #define	setgid setegid		/* non-POSIX saved IDs */
  
  /* SIGVEC:
   *	This symbol, if defined, indicates that BSD reliable signals routine


=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
From: Chris Torek <torek@BSDI.COM>
Subject: elm warning

Compiling elm produces:

newmail.c:479: warning: passing arg 2 of `utime' from incompatible pointer type

(contrib/elm/utils/newmail.c, to be exact).

The warning is right; newmail.c has an `ifdef BSD' to use utime in
the 4.2BSD manner, while our utime is System V / POSIX compatible.
The current code is likely to work on all our systems, although I
believe gcc sometimes aligns structs differently from arrays...

(The ifdef uses defined(BSD) && !defined(__convex__), a sign that
the ifdef itself is wrong... :-)  Perhaps we can get the elm folks to
add `&& !defined(__bsdi__)', if they will not just fix it.)

Chris

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Here is a script of the configuration session which created this
version of elm.

Script started on Tue Nov 14 11:02:09 1995
forge:elm2 {1} sh Configure
(I see you are using the Korn shell.  Some ksh's blow up on Configure,
especially on exotic machines.  If yours does, try the Bourne shell instead.)
 
Beginning of configuration questions for elm2 kit.
 
First let's make sure your kit is complete.  Checking...
Looks good...
Making bin directory
 
Checking your sh to see if it knows about # comments...
Your sh handles # comments correctly.
 
Okay, let's see if #! works on this system...
It does.
 
Checking out how to guarantee sh startup...
Let's see if '#!/bin/sh' works...
Yup, it does.
Checking echo to see how to suppress newlines...
...using -n.
Type carriage return to continue.  Your cursor should be here-->
 
This installation shell script will examine your system and ask you questions
to determine how the elm2 package should be installed.  If you get stuck
on a question, you may use a ! shell escape to start a subshell or execute
a command.  Many of the questions will have default answers in square
brackets--typing carriage return will give you the default.

On some of the questions which ask for file or directory names you are
allowed to use the ~name construct to specify the login directory belonging
to "name", even if you don't have a shell which knows about that.  Questions
where this is allowed will be marked "(~name ok)".

[Type carriage return to continue] 

Much effort has been expended to ensure that this shell script will run
on any Unix system.  If despite that it blows up on you, your best bet is
to edit Configure and run it again. Also, let the Elm Development Group
(elm@dsi.com) know how they blew it.  If you can't run Configure for
some reason, you'll have to generate a config.sh file by hand.

This installation script affects things in two ways: 1) it may do direct
variable substitutions on some of the files included in this kit, and
2) it builds a config.h file for inclusion in C programs.  You may edit
any of these files as the need arises after running this script.

If you make a mistake on a question, there is no easy way to back up to it
currently.  The easiest thing to do is to edit config.sh and rerun all the
SH files.  Configure will offer to let you do this before it runs the SH files.

[Type carriage return to continue] 
 
Locating common programs...
cat is in /bin/cat.
chgrp is in /usr/bin/chgrp.
chmod is in /bin/chmod.
cp is in /bin/cp.
echo is in /bin/echo.
expr is in /bin/expr.
grep is in /usr/bin/grep.
ln is in /bin/ln.
ls is in /bin/ls.
make is in /usr/bin/make.
mv is in /bin/mv.
rm is in /bin/rm.
sed is in /usr/bin/sed.
sleep is in /bin/sleep.
touch is in /usr/bin/touch.
tr is in /usr/bin/tr.
 
Don't worry if any of the following aren't found...
I don't see Mcc out there, offhand.
compress is in /usr/bin/compress.
cpp is in /usr/bin/cpp.
date is in /bin/date.
I don't see emacs out there, either.
I don't see execmail out there, either.
I don't see ispell out there, either.
line is in /usr/bin/line.
I don't see lint out there, either.
lp is in /usr/bin/lp.
lpr is in /usr/bin/lpr.
I don't see mailx out there, either.
I don't see mips out there, either.
more is in /usr/bin/more.
nroff is in /usr/bin/nroff.
I don't see pack out there, either.
I don't see pg out there, either.
I don't see pmake out there, either.
pr is in /usr/bin/pr.
rmail is in /bin/rmail.
sendmail is in /usr/sbin/sendmail.
I don't see shar out there, either.
I don't see smail out there, either.
I don't see submit out there, either.
tar is in /bin/tar.
tbl is in /usr/bin/tbl.
test is in /bin/test.
troff is in /usr/bin/troff.
uname is in /usr/bin/uname.
uuname is in /usr/bin/uuname.
vi is in /usr/bin/vi.
Using the test built into your sh.
 
Checking compatibility between /bin/echo and builtin echo (if any)...
They are compatible.  In fact, they may be identical.

There is a neat feature that enables scanning of the message body for
entries to add to the users ".calendar" (or whatever) file.  These
entries are then processed by the system program calendar.  To use
this feature it needs to be enabled.  The name of the per user calendar
file used by your system's calendar program is also required.
Enable calendar feature [y] 
 
Default calendar file: [calendar] 


Not all environments are restricted to the ASCII 7-bit character set.
For example, the ISO 8859/1 (Latin alphabet no. 1) character set,
consisting of 8 bits and 191 printable characters, is becoming
more and more common, especially in non-English speaking countries.

Unfortunately, not all isprint() functions or macros, which ELM
uses to determine whether a character is printable or not, will
handle non-ASCII (8-bit) characters properly.  It is suggested that you
start with this value configured to handle 8-bit characters correctly
and if there are problems with Elm aborting while displaying messages
that use extended character sets to reconfigure Elm to only display
7-bit characters.

  
Should Elm assume that isprint() won't break on non-ASCII characters? [y] 
 
Hmm...  Looks kind of like a BSD system, but we'll see...
 
Congratulations.  You aren't running Eunice.
 
It's not Xenix...
 
Nor is it Venix...
 
Does your /etc/passwd file keep full names in Berkeley/V7 format (name first
thing after ':' in GCOS field)? [y] 

The Elm documentation (Reference Guide, Configuration Guide, etc.) is set up
for troff.  If you only have nroff, it can be used, but the documentation will
not be as readable.  If you use an alternate processor for troff/nroff
documents it can be specified here.  Elm expects the text processor to write
to standard out.  You will be given a chance to provide command line options
to this command in the next question.

 
Give the name of the program used to format the Elm documentation on
your system: [/usr/bin/troff] 

If this text processor requires any options for proper formatting, specify
them here.  To specify no options, enter the word "none".  Some versions
of troff require the -t option to write to standard out.  This is the
proper place to specify that option.

What options should Elm use with /usr/bin/troff: [] 
  
elm2 has manual pages that can be installed in unformatted or formatted form.
Either or both (or neither) of these may be installed. 

Please give the location in which to store each type of man page. 
To specify that a particular type is not to be installed, answer "none"
to the question.

 
Where do the unformatted manual pages go? [none] 
 
Where do the formatted manual pages go? [/usr/share/man/cat1] /usr/contrib/man/cat1

Online manual pages are generally formatted with nroff.  If you use an 
alternate text processor for on-line manual pages it can be specified here. 
Elm expects the text processor to write to standard out.

Note: This does not effect the formatter previously chosen for the Elm
      Elm documentation (Reference Guide, Configuration Guide, etc.).

 
Give the name of the program used to format on-line manual pages
on your system: [/usr/bin/nroff] 

If this text processor requires any options for proper formatting, specify
then here.  To specify no options, enter the word "none".

What options should Elm use with /usr/bin/nroff: [] 

The installed formatted manual pages can have various extensions to suit the
conventions of the host operating system, for example "page.1".

Note that the period '.' must be included as part of the extension.

To specify no extension, enter the word "none".

What extension should be used on installed formatted man pages: [.1] .0
Should the formatted manual pages be compressed? [n] 
 
Some systems have different model sizes.  On most systems they are called
small, medium, large, and huge.  On the PDP11 they are called unsplit and
split.  If your system doesn't support different memory models, say "none".
If you wish to force everything to one memory model, say "none" here and
put the appropriate flags later when it asks you for other cc and ld flags.
Xenix and Venix systems may wish to put "none" and let the compiler figure
things out.
(In the following question multiple model names should be space separated.)

Which models are supported? [none] 
 
Use which C compiler? [shlicc] 

Some C compilers have problems with their optimizers, by default, elm2
compiles with the -O flag to use the optimizer.  Alternately, you might
want to use the symbolic debugger, which uses the -g flag (on traditional
UNIX systems).  Either flag can be specified here.  To use neither flag,
specify the word "none".
  
What optimizer/debugger flag should be used? [-O] -O2

Your C compiler may want other flags.  For this question you should
include -I/whatever and -DWHATEVER flags and any other flags used by
the C compiler, but you should NOT include libraries or ld flags like
-lwhatever.  To use no flags, specify the word "none".
  
Any additional cc flags? [none] 

Your linker/loader may want other flags.  For example, you might
want to enable support for the symbolic debugger (-g on traditional
UNIX systems).  For this question you should specify those flags.
Do NOT specify libraries (-lwhatever) here.  Most systems will not
need any special flags, in which case specify "none".

Any additional ld flags (NOT including libraries)? [none] 
 
Checking for optional libraries...
No -lintl.
No -lnls.
 
Some versions of UNIX support shared libraries, which make
executables smaller but make load time slightly longer.

On some systems, mostly newer UNIX System V's, the shared library
is included by putting the option "-lc_s" as the last thing on the
cc command line when linking.  Other systems use shared libraries
by default.  There may be other libraries needed to compile elm2
on your machine as well.  If your system needs the "-lc_s" option,
include it here.  Include any other special libraries here as well.
Say "none" for none.
 
Any additional libraries? [none] 
 
Your C library is in /usr/lib/libc.a, of all places.
 
Extracting names from /usr/lib/libc.a for later perusal...done
 
Now, how can we feed standard input to your C preprocessor...
Maybe "cc -E" will work...
Nope, maybe "/usr/bin/cpp" will work...
Yup, it does.
 
Your C preprocessor defines the following symbols:
unix
 
Testing your "ctype" conversion routines...
Using standard system "ctype" conversions.
 

Does your system allow chown(-1, group) and chown(user, -1) to
not change the user or group respectively.  This is usually documented
in the chown manual page (man 2 chown). (Most POSIX and BSD systems can,
Xenix cannot)

Does this system allow -1 as chown argument? [y] 

Some modern Mail Transport Agents (mailers) support the Content-Length: header.
In doing so, they do not wish to have messages escaped to protect 'From ' lines
in the body of the message, among other strings.  Does the Mail Transport Agent
in use on this system honor the Content-Length: header?
 
Honors Content-Length: header? [n] 
 
crypt() found.
 
cuserid() not found

Elm can either display the hostname on the index page, or just
the folder name.  If the hostname is displayed, the folder name
will read hostname:folder.  If not it will just read folder.

Should Elm display the hostname as part of the folder name? [n] 
 
flock() found.
flock locking available.
F_SETLK found, fcntl locking available
Mail Transport Agents (sendmail, etc.) and Mail User Agents (Elm) can
use a variety of file locking protocols.  Based on your system type,
usage of a network, and MTA/MUAs in use, you may want to configure more
than one of the following Mail Locking Protocols.  It is recommended
that you use as many as are possible on your system to avoid problems.
All systems can support the dot locking method (.lock files).

Available locking protocols:
	dot locking (.lock)
	flock style locking
	fcntl style locking
On some systems, flock style locking and fcntl style locking use the
same underlying calls so both are not only not necessary, but may
interfere with each other.  On other systems they are distinct and both
should be used.  You will have to consult the documentation for your
operating system to determine in which class your system resides.

Would you like to use dot lock style mail spool locking? [y] 
Would you like to use flock style mail spool locking? [y] y
Would you like to use fcntl style mail spool locking? [y] n
 
Non-mailbox locks will use the /var/spool/uucp directory
 
 
Figuring out host name...
Maybe "hostname" will work...
(Normalizing case in your host name)
Your host name appears to be "forge.bsdi.com".
Is this correct? [y] 
 
(Trimming domain name from host name--host name is now forge)
What is your domain name? [.bsdi.com] 
(That doesn't agree with your hostname command, by the way.)
 
 
gethostname() found.
 
Every now and then someone has a gethostname() that lies about the hostname
but can't be fixed for political or economic reasons.  Would you like to
pretend gethostname() isn't there and maybe compile in the hostname? [n] 
 
sys_errlist found, will attempt to use systems
sys_nerr and sys_errlist

Elm would like to use the systems definitions of the error messages for system
errors.  These are usually contained in the global variables sys_errlist[] and
sys_nerr.  If these do not exist, there is a standard list built into Elm.

Does the system support the sys_errlist[] global variable? [y] 
 
ftruncate() found
 
getopt() found
 
Using string.h instead of strings.h
 
Your system has both index() and strchr().  Shall I use
index() rather than strchr()? [y] n
 
Some systems run MMDF as their Mail Transport Agent.  MMDF uses a
different way of delimiting messages in the mailbox files.  Other
systems don't run MMDF but use the MMDF separator in their mailbox
files.  The MMDF separator is usually a series of four Control A's.
elm2 needs to know if this system uses the MMDF style message
separator in its mailbox files.

Does this system use MMDF style message separator? [n] n 
 
Give the full path name of the program used to deliver mail on your
system: [/usr/sbin/sendmail] 
 
Some newer mailers can deliver mail to addresses of the INTERNET
persuasion, such as user@host.domain.  Other older mailers require the
complete uucp ! path to the destination to be specified in the address.
Does your mailer understand INTERNET addresses? [y] 
 
Elm has the ability to place a call to the GNU ispell spelling checker
on its post-message-entry/pre-message-send menu.
Configure was unable to find ispell
Should Elm add the ispell option to the pre-send menu? [n] y
 
Give the name of the ispell program on your
system: [] /usr/contrib/bin/ispell
What options should Elm use with /usr/contrib/bin/ispell: [] 
 
locale.h found, elm2 will call setlocale
 
nl_types.h not found, elm2 will use its own
 
catgets() not found
Message catalog routines not found, elm2 will use its own
 
Found <stdlib.h>
 
Your system wants malloc to return void *, it would seem.
 
 
A lot of sites that install the Elm Mail System find that the function
E)dit mailbox from within Elm is dangerous and confusing.  If you choose,
you can instead disable that function, with the program being slightly
smaller and presenting an appropriate error message to the user if they
try to E)dit their mailbox.

Would you like to enable the E)dit Mailbox function? [n] 
 
memcpy() found

MIME allows for sending and receiving of Messages compliant to the
Multipurpose Internet Mail Extension (RFC 1341). MIME provides a way to
attach binary, graphic, audio, video, postscript and other files. MIME
doesn't necessarily need graphics capabilities on your display, but its
useful.

If you have installed Nathaniel Borenstein's metamail package for
displaying MIME messages, elm can make use of it.  If you didn't
have metamail installed you might want to obtain a copy of it.  The
most recent version is on thumper.bellcore.com [128.96.41.1], or ask
the archie servers for the nearest site.

Compiling elm even with MIME support enabled would not depend on the
metamail package, but you would not be able to use nearly all of the
MIME features as long as you don't have metamail installed.  Metamail
with its companion programs (mmencode) must be installed somewhere in
the search path, usually /usr/local/bin.
  


Should support for MIME be compiled in? [n] y y

The Default Character Set which should be used on outgoing messages.
Most sites would use US-ASCII.

Default Character Set for MIME Content-type text? [US-ASCII] 

The Character Set which your terminals support. You could set this
to one of the ISO-8859 charsets, even if you set the default for
the Text Messages to US-ASCII, as the ISO-8859 charsets could display
US-ASCII as well. For a X-Windows environment, ISO-8859-1 would be 
a convenient value.

Default Character Set which could be displayed [US-ASCII] 
Default Content-Transfer-Encoding for MIME Content-type text.
If you are using the default US-ASCII charset, you should use
7bit encoding. But if you are using some other national character
set, 8bit is recommended, unless you are using a 7bit character set.
For 8bit encoding your transport paths should be 8bit clean, which
is not true all over the world. base64 or quoted-printable aren't
yet supported for the default Content-Transfer-Encoding.

Default Content-Transfer-Encoding for MIME Content-type text? [7bit] 
 
mkdir() found

Newmail (Elm's utility to check for incoming mail) can be configured to
either run as a foreground process or as a process that automatically
forks and runs in the background.

Should newmail automatically run in the background? [y] 
You're running sendmail.  Setting noaddfrom, usedomain
 
Some sites do not like to see the mail header "X-mailer:" in outgoing
messages.  If you choose, you may disable these headers.  However, it
is strongly urged to leave these headers in the mail to assist in
tracking down problems.

Would you like to disable the X-mailer: headers? [n] 
 
Checking to see if kill(pid, 0) works...
Your system supports kill(pid, 0)...
 
putenv() found

The next pair of questions have to do with what to do when another
program has locked a mailbox...

First, how many times should the Elm check for the removal of the lock
file before giving up?
 
Number of lock attempts: [6] 
 
Should it REMOVE the lock file after 6 checks? [n] 
 
rename() found
 
Where is yet-to-be-read mail spooled? [/var/mail] 
 
Mail group is mail

Elm needs to be installed and run as a setgid program only if the mail
spool directory permissions do not allow world write access.  If your
mail spool directory has the permissions:

drwxrwxr-x  3 root     mail          512 Dec 24 17:20 /usr/mail

then Elm must be setgid to the same group as the mail spool directory
(in this case group mail).  However, if the spool permissions look
like:

drwxrwsrwt  2 root     staff         512 Dec 21 20:14 /usr/spool/mail

then Elm should not be installed or run as a setgid program.

Am I going to be running as a setgid program? [y] 

Since Elm is being installed as a setgid program, it must be installed
by root, or a user able to set the setgid bit.

To provide better security, Elm can be configured to switch to the
privileged group of mail only when necessary to access mail folders.

Unfortunately, not all machines can switch between the real and effective 
gid values.  If you are not sure of the capability of your machine, it
is suggested that you start with Elm configured to switch gid values and
if, when you run Elm it cannot set the lock for the mailbox, reconfigure
Elm to not use this feature.
 
Can your system use setgid() to switch between the real and
effective gid values? [y] 
 
 
sigset() not found
sigaction() found.
 
sigprocmask() found.
 
strspn() found
 
strcspn() found
 
strpbrk() found
 
strerror() found
 
strstr() found
 
strtok() found
 
Some sites wish to disable the usage of the shell escape from Elm.
If you choose, you can disallow subshells from within Elm.

Note: This only controls Elm's usage of the ! command.  Any pager or
editor could still allow subshells.

Would you like to allow the ! command (subshells)? [y] 
 
symlink() found
 
tempnam() found
 
 
tcsetattr() found
You have POSIX termios.h... good!
 
One of the more annoying quirks of the UUCP network and various other
systems that interact with it are that everyone seems to have different
ideas about how to do routing, etc.  Therefore, a lot of times e-mail
will arrive from off site with corrupt, unusable "Reply-To:" and "From:"
fields.  This next question relates to whether your site is liable to
get mangled fields or not...

Does your site receive e-mail with valid "Reply-To:" and "From:" fields?

Use Reply-To: and From: addresses? [y] 
getdomainname() not found
  
Testing to see if we should include <time.h>, <sys/time.h> or both.
I'm now running the test program...
Trying -DI_TIME -DI_SYSTIME  -DS_TIMEVAL
Succeeded with -DI_TIME -DI_SYSTIME -DS_TIMEVAL
 
Found <utime.h>
 
Checking to see if struct utimbuf exists.
You have the 'utimbuf' structure...
 
vfork() found
 
Found <memory.h>
 
Found <stdarg.h>
 
Found <unistd.h>
 
You have void (*signal())() instead of int.
 
Where do you want to put the public executables? [/usr/local/bin] /usr/contrib/bin
 
strftime() found
 
Elm will provide a default subject for mail messages that are sent
in batch mode (redirected from a file.)
 
Default batch subject: [no subject (file transmission)] 

Elm must be configured with a default editor.  On most systems this may
be 'vi'.  If you prefer to use some other, easier editor enter it here.
You will be given a change to provide command line options to this
command in the next question.

 
What is the default editor on your system? [/usr/bin/vi] 

If this editor requires any options for proper use, specify them
here.  To specify no options, enter the word "none".  For example,
'pico' users will want to use the -t option.  This is the proper
place to specify that option.

What options should Elm use with /usr/bin/vi: [] 
 
Where do you want to put the public libraries? [/usr/local/lib] /usr/contrib/lib

Elm has an option to send messages to the printer.  This question
asks for the default spooler name.  You can also specify options to
the command by separating them from the command by at least one space. 

What print spooler do you prefer to use with Elm? [/usr/bin/lp] 
 
What pager do you prefer to use with elm2? [builtin+] 
 
Give the full path name of the shell most people like to use on your
system: [/bin/ksh] /bin/csh
 
Checking how to generate random libraries on your machine...
your system has /usr/bin/ranlib; we'll use that.
remote tape drive is unknown-remote-tape-unit
 
 
Termlib library found.
 
Where do you want to put the temporary files? [/tmp] 
 
Figuring out how to get timezone names.
Trying -DTZNAME_USE_TM_NAME
Trying -DTZNAME_USE_TM_ZONE
Alright!  That seems to have worked.
 
End of configuration questions.
 
 
Creating config.sh...
 
If you didn't make any mistakes, then just type a carriage return here.
If you need to edit config.sh, do it as a shell escape here: 
 
Doing variable substitutions on .SH files...
Extracting Makefile (with variable substitutions)
Extracting config.h (with variable substitutions)
Extracting doc/Makefile (with variable substitutions)
Extracting filter/Makefile (with variable substitutions)
Extracting hdrs/sysdefs.h (with variable substitutions)
Extracting lib/Makefile (with variable substitutions)
Extracting src/Makefile (with variable substitutions)
Extracting utils/Makefile (with variable substitutions)
Extracting utils/checkalias (with variable substitutions)
Extracting utils/listalias (with variable substitutions)
Extracting utils/messages (with variable substitutions)
Extracting utils/printmail (with variable substitutions)
 
Now you must run a make.
4.2u 63.6s 5:27.72 20.7% 0+0k 123+562io 0pf+0w
