v07i019: Elm Update Kit, Part02/03
sources-request at mirror.UUCP
sources-request at mirror.UUCP
Thu Sep 4 05:21:55 AEST 1986
Submitted by: Dave Taylor <taylor at hplabs.HP.COM>
Mod.sources: Volume 7, Issue 19
Archive-name: elm_update/Part02
[ The shell scripts in this posting should be run on a clean copy of
the ELM sources. Then run the "Configure.sh" script now provided,
to build the Makefiles, etc. I suppose this is a good time to say
that Dave said to ignore errors in unpacking Part 12 of the Volume
6 ELM distribution. -- r$ ]
#!/bin/sh
# This is a shell archive. Remove anything before this line,
# then unpack it by saving it in a file and typing "sh file".
# Wrapped by mirror!rs on Wed Sep 3 10:19:36 EDT 1986
# Exit status; set to 1 on "wc" errors or if would overwrite.
STATUS=0
# Contents: Edit2
echo x - Edit2
if test -f Edit2 ; then
echo Edit2 exists, putting output in $$Edit2
OUT=$$Edit2
STATUS=1
else
OUT=Edit2
fi
sed 's/^XX//' > $OUT <<'@//E*O*F Edit2//'
XX: Use /bin/sh
XX# This is the automatically generated output of the AUTODIFF program after
XX# being run on the two directories;
XX# Old Directory: Elm-Posted
XX# New Directory: Elm
XX# Any problems with execution of this script should be reported to the
XX# author of the program, Dave Taylor, at "hplabs!taylor". Thanks
XX# first off, let's make sure we're running in SH
XXexport PATH || (sh $0; exit $$)
XX# next, let's ensure the user has "ed"...
XXif [ ! -f /bin/ed ]
XXthen
XX echo I can\'t find /bin/ed\!
XX exit 1
XXfi
XX# finally, let's get this show on the road!!
XX#---------------------------------
XX# File Elm/src/Makefile.mstr is new!
XXecho File Elm/src/Makefile.mstr is new - extracting...
XXif [ -f src/Makefile.mstr ]
XXthen
XX echo File \'src/Makefile.mstr\' is new, but you already have something called that\!
XX echo I\'m going to move your file to \'src/Makefile.mstr.old\'...
XX /bin/mv -f src/Makefile.mstr src/Makefile.mstr.old
XXelse
XX echo Extracting new file \'src/Makefile.mstr\'
XXfi
XXcat > src/Makefile.mstr << 'END_OF_FILE'
XX#
XX# Makefile for the ELM mail program.
XX#
XX# (C) Copyright 1986, Dave Taylor
XX#
XX# Last modification: March 7th, 1986
XXSHELL=/bin/sh
XX##############################
XX#
XX# if on a BSD system;
XX# DEFINE=-DBSD
XX# LIB2 = -lcurses
XX# else if on a UTS system;
XX# DEFINE=-DUTS
XX# LIB2 = -la -lq
XX# else if on a SUN system;
XX# DEFINE=-DBSD -DSUN
XX# LIB2 = -lcurses
XX# else if on a Pyramid system;
XX# DEFINE=-DBSD -DNO_VAR_ARGS
XX# LIB2 = -lcurses
XX# else
XX DEFINE= >os-define<
XX LIB2 = >lib2<
XX# IF you're on an ACSnet system (Australia) then
XX# you'll want to uncomment the following;
XX# DEFINE= ${DEFINE} -DACSNET
XX##############################
XXCFILES= addr_utils.c alias.c aliasdb.c aliaslib.c args.c bounceback.c \
XX calendar.c connect_to.c curses.c date.c delete.c domains.c edit.c \
XX encode.c errno.c file.c file_utils.c fileio.c hdrconfg.c help.c \
XX initialize.c input_utils.c leavembox.c mailmsg1.c mailmsg2.c \
XX mailtime.c mkhdrs.c elm.c newmbox.c notesfile.c options.c opt_utils.c \
XX output_utils.c pattern.c quit.c read_rc.c remail.c reply.c \
XX return_addr.c savecopy.c screen.c showmsg.c signals.c softkeys.c \
XX sort.c strings.c syscall.c utils.c validname.c getopt.c string2.c \
XX builtin.c pmalloc.c
XXHEADERS=../hdrs/curses.h ../hdrs/defs.h ../hdrs/headers.h ../hdrs/sysdefs.h
XXOBJS= addr_utils.o alias.o aliasdb.o aliaslib.o args.o bounceback.o \
XX calendar.o connect_to.o curses.o date.o delete.o domains.o edit.o \
XX encode.o errno.o file.o file_utils.o fileio.o hdrconfg.o help.o \
XX initialize.o input_utils.o leavembox.o mailmsg1.o mailmsg2.o \
XX mailtime.o mkhdrs.o elm.o newmbox.o notesfile.o options.o opt_utils.o \
XX output_utils.o pattern.o quit.o read_rc.o remail.o reply.o \
XX return_addr.o savecopy.o screen.o showmsg.o signals.o softkeys.o \
XX sort.o strings.o syscall.o utils.o validname.o getopt.o string2.o \
XX builtin.o pmalloc.o
XXBIN= ../bin
XXLIBS= -ltermcap
XXCFLAGS= -O -I../hdrs
XXCC= >cc<
XXRM= >rm<
XX../bin/elm: ${OBJS} ${EXTRA} ${HEADERS} ../hdrs/elm.h
XX ${CC} -o ${BIN}/elm -n ${OBJS} ${LIBS} ${LIB2}
XX.c.o: ${HEADERS}
XX ${CC} -c ${CFLAGS} ${DEFINE} $*.c
XXcurses.o: curses.c ../hdrs/curses.h
XX ${CC} -c ${CFLAGS} -DRAWMODE ${DEFINE} curses.c
XX# curses.c : curses.q
XX# @../bin/quickscreen curses.q
XX#
XX# curses.q :
XX# @cp curses.c curses.q
XXclean:
XX ${RM} ${OBJS} LINT.OUT
XXlint: LINT.OUT
XXLINT.OUT: ${CFILES}
XX lint -p -I../hdrs ${CFILES} > LINT.OUT
XXlisting: LISTING
XXLISTING: Makefile INDEX ${HEADERS} ${CFILES}
XX @echo adding file 'Makefile'...
XX @/bin/echo \\f > LISTING
XX @cat Makefile >> LISTING
XX @echo adding file 'INDEX'...
XX @/bin/echo \\f >> LISTING
XX @cat INDEX >> LISTING
XX @../bin/makelisting ${HEADERS} ${CFILES}
XX @echo LISTING generated.
XXindex: INDEX
XXINDEX: ${CFILES} ${HEADERS}
XX @echo Creating function definition index
XX @index *.c | sort > INDEX
XX @echo File INDEX generated
XXEND_OF_FILE
XXchars=`cat src/Makefile.mstr | wc -c`
XXif [ $chars -ne 2882 ]
XXthen
XX echo File damaged in transit...should be 2882 bytes, is $chars instead
XX echo I suggest you check it closely...
XXfi
XX#---------------------------------
XX# File Elm/src/pmalloc.c is new!
XXecho File Elm/src/pmalloc.c is new - extracting...
XXif [ -f src/pmalloc.c ]
XXthen
XX echo File \'src/pmalloc.c\' is new, but you already have something called that\!
XX echo I\'m going to move your file to \'src/pmalloc.c.old\'...
XX /bin/mv -f src/pmalloc.c src/pmalloc.c.old
XXelse
XX echo Extracting new file \'src/pmalloc.c\'
XXfi
XXcat > src/pmalloc.c << 'END_OF_FILE'
XX/** pmalloc.c **/
XX/** This routine contains a cheap permanent version of the malloc call to
XX speed up the initial allocation of the weedout headers and the uuname
XX data.
XX This routine is originally from Jim Davis of HP Labs, with some
XX mods by me.
XX**/
XX#include <stdio.h>
XX#include "defs.h"
XXchar *pmalloc(size)
XXint size;
XX{
XX /** return the address of a specified block **/
XX static char *our_block = NULL;
XX static int free_mem = 0;
XX char *return_value;
XX /** if bigger than our threshold, just do the real thing! **/
XX if (size > PMALLOC_THRESHOLD)
XX return( (char *) malloc(size));
XX /** if bigger than available space, get more, tossing what's left **/
XX if (size > free_mem) {
XX if ((our_block = (char *) malloc(PMALLOC_BUFFER_SIZE)) == NULL) {
XX fprintf(stderr, "\n\r\n\rCouldn't pmalloc %d bytes!!\n\r\n\r",
XX PMALLOC_BUFFER_SIZE);
XX leave();
XX }
XX free_mem = PMALLOC_BUFFER_SIZE;
XX }
XX
XX return_value = our_block; /* get the memory */
XX our_block += size; /* use it up */
XX free_mem -= size; /* and decrement */
XX return( (char *) return_value);
XX}
XXEND_OF_FILE
XXchars=`cat src/pmalloc.c | wc -c`
XXif [ $chars -ne 1114 ]
XXthen
XX echo File damaged in transit...should be 1114 bytes, is $chars instead
XX echo I suggest you check it closely...
XXfi
XX#-------------------------------------
XX# File 'hdrs/defs.h' diffs...
XXcat << 'EOF' > hdrs/defs.h.D
XX209a
XX#ifdef SHORTNAMES /* map long names to shorter ones */
XX# include <shortnames.h>
XX#endif
XX.
XX144a
XX/* some stuff for our own malloc call - pmalloc */
XX#define PMALLOC_THRESHOLD 256 /* if greater, then just use malloc */
XX#define PMALLOC_BUFFER_SIZE 2048 /* internal [memory] buffer size... */
XX.
XX12a
XX#define KLICK 10
XX.
XX11c
XX#define WHAT_STRING "@(#) Version 1.2a, patch #3 release - August, 1986"
XX.
XX9c
XX#define VERSION "1.2a" /* Version number! WHAT_STRING should agree */
XX.
XXw
XXEOF
XXchars=`cat hdrs/defs.h | wc -c`
XXif [ $chars -ne 6693 ]
XXthen
XX echo Your file hdrs/defs.h has been changed\!
XX echo diffs saved as \"hdrs/defs.h.D\"
XXelse
XX echo applying diffs to file hdrs/defs.h...
XX /bin/cat hdrs/defs.h.D | /bin/ed - hdrs/defs.h
XXfi
XX#-------------------------------------
XX# File 'hdrs/headers.h' diffs...
XXcat << 'EOF' > hdrs/headers.D
XX102c
XXextern int max_headers; /* number of headers currently allocated */
XXextern struct header_rec *header_table;
XX.
XX93c
XXextern long size_of_pathfd; /** size of pathfile, 0 if none **/
XX.
XXw
XXEOF
XXchars=`cat hdrs/headers.h | wc -c`
XXif [ $chars -ne 5082 ]
XXthen
XX echo Your file hdrs/headers.h has been changed\!
XX echo diffs saved as \"hdrs/headers.D\"
XXelse
XX echo applying diffs to file hdrs/headers.h...
XX /bin/cat hdrs/headers.D | /bin/ed - hdrs/headers.h
XXfi
XX#-------------------------------------
XX# File 'hdrs/elm.h' diffs...
XXcat << 'EOF' > hdrs/elm.h.D
XX107c
XXint max_headers; /* number of headers allocated */
XXstruct header_rec *header_table;
XX.
XX98c
XXlong size_of_pathfd; /** size of pathfile, 0 if none **/
XX.
XX20a
XX/******** and another string for the copyright notice ********/
XXstatic char copyright[] = { "@(#) (C) Copyright 1986, Dave Taylor" };
XX.
XX17,18d
XX15c
XX/******** static character string containing the version number *******/
XX.
XX13d
XXw
XXEOF
XXchars=`cat hdrs/elm.h | wc -c`
XXif [ $chars -ne 4889 ]
XXthen
XX echo Your file hdrs/elm.h has been changed\!
XX echo diffs saved as \"hdrs/elm.h.D\"
XXelse
XX echo applying diffs to file hdrs/elm.h...
XX /bin/cat hdrs/elm.h.D | /bin/ed - hdrs/elm.h
XXfi
XX#---------------------------------
XX# File Elm/hdrs/sysdefs.master is new!
XXecho File Elm/hdrs/sysdefs.master is new - extracting...
XXif [ -f hdrs/sysdefs.master ]
XXthen
XX echo File \'hdrs/sysdefs.master\' is new, but you already have something called that\!
XX echo I\'m going to move your file to \'hdrs/sysdefs.master.old\'...
XX /bin/mv -f hdrs/sysdefs.master hdrs/sysdefs.master.old
XXelse
XX echo Extracting new file \'hdrs/sysdefs.master\'
XXfi
XXcat > hdrs/sysdefs.master << 'END_OF_FILE'
XX/** sysdefs.h **/
XX/** System level, configurable, defines for the ELM mail system. **/
XX/** (C) Copyright 1986 Dave Taylor **/
XX/** Define the following if you think that the information in messages
XX that have "Reply-To:" and/or "From:" fields with addresses will
XX contain valid addressing information. If this isn't defined, the
XX calculated return address will ALWAYS be used instead. (note that
XX this doesn't necessarily preclude the use of G)roup replies).
XX**/
XX#define USE_EMBEDDED_ADDRESSES
XX#define FIND_DELTA 10 /* byte region where the binary search
XX on the path alias file is fruitless
XX (can't be within this boundary) */
XX#define MAX_HEADERS >500< /* max number of messages in one file! */
XX#define MAX_SALIASES >503< /* number of system aliases allowed */
XX#define MAX_UALIASES >251< /* number of user aliases allowed */
XX#define MAX_IN_WEEDLIST >150< /* max headers to weed out */
XX#define MAX_HOPS 35 /* max hops in return addr to E)veryone */
XX#define MAX_ATTEMPTS >6< /* #times to attempt lock file creation */
XX/** see leavembox.c to determine if this should be defined or not....The
XX default is to NOT have it defined.
XX**/
XX#define REMOVE_AT_LAST
XX#define DEFAULT_BATCH_SUBJECT "no subject (file transmission)"
XX/** If you want to have the mailer know about valid mailboxes on the
XX host machine (assumes no delivery agent aliases) then you should
XX undefine this (the default is to have it defined)...
XX**/
XX#define NOCHECK_VALIDNAME
XX/** If your machine doesn't have virtual memory (specifically the vfork()
XX command) then you should define the following....
XX**/
XX/** #define NO_VM **/
XX/** If you want the mailer to check the pathalias database BEFORE it
XX looks to see if a specified machine is in the L.sys database (in
XX some cases routing is preferable to direct lines) then you should
XX define the following...
XX**/
XX#define LOOK_CLOSE_AFTER_SEARCH
XX/** If you'd rather the program automatically used the 'uuname' command
XX to figure out what machines it talks to (instead of trying to get
XX it from L.sys first) then define the following...
XX**/
XX#define USE_UUNAME
XX/** If you'd like "newmail" to automatically go into background when you
XX start it up (instead of the "newmail &" junk with the process id output,
XX then define the following...
XX**/
XX#define AUTO_BACKGROUND
XX/** If you'd rather your mail transport agent (ie sendmail) put the From:
XX line into the message, define the following...
XX**/
XX#define DONT_ADD_FROM
XX/** If your machine prefers the Internet notation of user at host for the
XX From: line and addresses, define the following...(the default is to
XX use this rather than the USENET notation - check your pathalias file!)
XX**/
XX#define INTERNET_ADDRESS_FORMAT
XX/** If you're on a machine that prefers UUCP to Internet addresses, then
XX define the following (the basic change is that on a machine that
XX receives messages of the form <path>!user@<localhost> the displayed
XX address will be <path>!user instead of user@<localhost>.
XX BOGUS_INTERNET is the address that your local system appends to
XX messages occasionally. The algorithm is simply to REMOVE the
XX BOGUS_INTERNET string. This is horrible. *sigh*
XX**/
XX#define PREFER_UUCP
XX#define BOGUS_INTERNET "@hplabs.HP.COM"
XX/** If you're running ACSNET and/or want to have your domain name
XX attached to your hostname on outbound mail then you can define
XX the following (default are not defined)
XX**/
XX#define USE_DOMAIN
XX#define DOMAIN "<enter your domain here>"
XX/** If you are going to be running the mailer with setgid mail (or
XX something similar) you'll need to define the following to ensure
XX that the users mailbox in the spool directory has the correct
XX group (NOT the users group)
XX**/
XX#define SAVE_GROUP_MAILBOX_ID
XX/** If you want a neat feature that enables scanning of the message
XX body for entries to add to the users ".calendar" (or whatever)
XX file, define this.
XX**/
XX#define ENABLE_CALENDAR
XX#define dflt_calendar_file "calendar" /* in HOME directory */
XX/** If you want to implement 'site hiding' in the mail, then you'll need to
XX uncomment the following lines and set them to reasonable values. See
XX the configuration guide for more details....
XX**/
XX/****************************************************************************
XX#undef DONT_ADD_FROM
XX#define SITE_HIDING
XX#define HIDDEN_SITE_NAME "fake-machine-name"
XX#define HIDDEN_SITE_USERS "/usr/mail/lists/hidden_site_users"
XX****************************************************************************/
XX/** Do we have the 'gethostname()' call? If not, define the following **/
XX/** #define NEED_GETHOSTNAME **/
XX/** are you stuck on a machine that has short names? If so, define the
XX following **/
XX/** #define SHORTNAMES **/
XX#define NOTES_HEADER "/***** "
XX#define NOTES_FOOTER "/* ---------- */"
XX#ifdef BSD
XX# define system_hash_file "/usr/spool/mail/.alias_hash"
XX# define system_data_file "/usr/spool/mail/.alias_data"
XX#else
XX# define system_hash_file "/usr/mail/.alias_hash"
XX# define system_data_file "/usr/mail/.alias_data"
XX#endif
XX#define pathfile "/usr/lib/nmail.paths"
XX#define domains "/usr/lib/domains"
XX#define Lsys "/usr/lib/uucp/L.sys"
XX/** where to put the output of the elm -d command... (in home dir) **/
XX#define DEBUG "ELM:debug.info"
XX#define temp_file "/tmp/snd."
XX#define temp_mbox "/tmp/mbox."
XX#define temp_print "/tmp/print."
XX#define mailtime_file ".last_read_mail"
XX#define readmsg_file ".readmsg"
XX#define signature_file ".signature"
XX#ifdef BSD
XX# define default_editor "/usr/ucb/vi"
XX# define mailhome "/usr/spool/mail/"
XX#else
XX# define default_editor "/usr/bin/vi"
XX# define mailhome "/usr/mail/"
XX#endif
XX# define default_pager "builtin"
XX#define sendmail "/usr/lib/sendmail"
XX#define smflags "-oi"
XX#define mailer "/bin/rmail"
XX#ifdef BSD
XX# define mailx "/usr/ucb/Mail"
XX#else
XX# define mailx "/usr/bin/mailx"
XX#endif
XX#define helphome "/usr/local/lib"
XX#define helpfile "elm-help.main"
XX#define elmrcfile "/.elmrc"
XX#define mailheaders ".elmheaders"
XX#define dead_letter "Cancelled.mail"
XX#define unedited_mail "emergency.mbox"
XX#define newalias "newalias -q 1>&2 > /dev/null"
XX#define readmsg "readmsg"
XX#define remove "/bin/rm -f" /* how to remove a file */
XX#define cat "/bin/cat" /* how to display files */
XX#define uuname "uuname" /* how to get a uuname */
XXEND_OF_FILE
XXchars=`cat hdrs/sysdefs.master | wc -c`
XXif [ $chars -ne 6490 ]
XXthen
XX echo File damaged in transit...should be 6490 bytes, is $chars instead
XX echo I suggest you check it closely...
XXfi
XX#---------------------------------
XX# File Elm/hdrs/shortnames.h is new!
XXecho File Elm/hdrs/shortnames.h is new - extracting...
XXif [ -f hdrs/shortnames.h ]
XXthen
XX echo File \'hdrs/shortnames.h\' is new, but you already have something called that\!
XX echo I\'m going to move your file to \'hdrs/shortnames.h.old\'...
XX /bin/mv -f hdrs/shortnames.h hdrs/shortnames.h.old
XXelse
XX echo Extracting new file \'hdrs/shortnames.h\'
XXfi
XXcat > hdrs/shortnames.h << 'END_OF_FILE'
XX/** shortnames.h **/
XX/** This file is from Geoff Kuenning, and will help those poor users that
XX are stuck using C compilers that don't have flexnames. Too bad.
XX This file has no explicit copyright.
XX**/
XX#define PutLine0 PLine0
XX#define PutLine1 PLine1
XX#define PutLine2 PLine2
XX#define PutLine3 PLine3
XX#define add_to_table add_2_table
XX#define address1 addrs1
XX#define addressII addrsII
XX#define addresses addr_s
XX#define alternate_prompt alt_prompt
XX#define alternative_addresses alt_addrs
XX#define always_leave alw_leave
XX#define calendar_line cal_line
XX#define cancelled_msg cncld_msg
XX#define central_message_buffer cntrl_bfr
XX#define compare_dates cmp_dates
XX#define compare_headers cmp_hdrs
XX#define copy_message_across cpy_msg_across
XX#define current_record cur_rec
XX#define current_time cur_time
XX#define define_softkeys def_softkeys
XX#define display_central_message displ_cntrl_msg
XX#define display_error displ_error
XX#define display_headers displ_hdrs
XX#define display_helpfile dspl_helpfile
XX#define display_options displ_options
XX#define display_title displ_titles
XX#define display_to displ_to
XX#define encrypted crypted
XX#define encrypted_key crypt_key
XX#define expanded_cc xp_cc
XX#define expanded_to xp_to
XX#define expand_address xp_addr
XX#define expand_domain xp_domain
XX#define expand_env xp_env
XX#define expand_filename xp_filename
XX#define expand_group xp_group
XX#define expand_logname xp_logname
XX#define expand_site xp_site
XX#define expand_system xp_system
XX#define filename2 fn2
XX#define forward forwrd
XX#define generate_reply_to gen_reply_to
XX#define get_return_name g_ret_name
XX#define header_line h_line
XX#define header_page h_page
XX#define headers_per_page h_per_page
XX#define header_table h_table
XX#define install_aliases ins_aliases
XX#define last_line_loc last_ln_loc
XX#define machine_group mach_group
XX#define mailbox_defined mbox_defined
XX#define mailfile_size mfile_size
XX#define message_count msg_count
XX#define message_number msg_number
XX#define newaliases nwaliases
XX#define noptimize_return noret_opt
XX#define noptimize_usenet nousenet_opt
XX#define optimize_and_add opt_and_add
XX#define optimize_arpa opt_arpa
XX#define optimize_cmplx_arpa opt_cmplx_arpa
XX#define optimize_return opt_return
XX#define optimize_usenet opt_usenet
XX#define optional_arg opt_arg
XX#define optionally_enter opt_enter
XX#define original_cc orig_cc
XX#define original_msg_num orig_msg_num
XX#define original_to orig_to
XX#define parse_arguments pars_arguments
XX#define parse_arpa_from prs_arpa_from
XX#define password_entry pw_entry
XX#define pattern_enter pat_enter
XX#define pattern_match pat_match
XX#define read_alias_files rd_alias_files
XX#define read_headers rd_headers
XX#define read_notesfile rd_notesfile
XX#define read_rc rd_rc
XX#define read_rc_file rd_rc_file
XX#define received_on_machine rcvd_on_machine
XX#define remove_all rem_all
XX#define remove_first_word rem_1st_word
XX#define remove_domains rem_domains
XX#define remove_header rem_hdr
XX#define remove_user rem_user
XX#define remove_through_ch rem_thru_ch
XX#define reply_to_everyone repl_to_everyone
XX#define resolve_received rslv_received
XX#define show_message shw_message
XX#define show_msg showmsg
XX#define show_msg_tag sh_msg_tag
XX#define size_of_pathfd sz_of_pathfd
XX#define softkeys_off soft_off
XX#define softkeys_on soft_on
XX#define subjectbuffer subjbuff
XX#define subject_matches subj_matches
XX#define system_call sys_call
XX#define system_data sys_data
XX#define system_files sys_files
XX#define system_hash_table sys_hash_table
XX#define system_record sys_record
XX#define tail_of_string tl_of_string
XX#define talk_to_sys tlk_to_sys
XX#define tempfile tmpfile
XX#define termcap_label tcap_label
XX#define top_of_screen_left top_left_of_screen
XX#define top_of_screen_right top_right_of_screen
XX#define translate_return xlate_return
XX#define update_mailtime upd_mailtime
XX#define update_title upd_title
XX#define unexpanded_cc unexp_cc
XX#define unexpanded_to unexp_to
XX#define verify_transmission vfy_xmsn
XX#define weeding_out wding_out
XXEND_OF_FILE
XXchars=`cat hdrs/shortnames.h | wc -c`
XXif [ $chars -ne 4006 ]
XXthen
XX echo File damaged in transit...should be 4006 bytes, is $chars instead
XX echo I suggest you check it closely...
XXfi
XX#-------------------------------------
XX# File 'utils/arepdaemon.c' diffs...
XXcat << 'EOF' > utils/arepdaemon.D
XX59,60d
XX37c
XX#ifdef BSD
XX# include <sys/time.h>
XX#else
XX# include <time.h>
XX#endif
XX.
XXw
XXEOF
XXchars=`cat utils/arepdaemon.c | wc -c`
XXif [ $chars -ne 13380 ]
XXthen
XX echo Your file utils/arepdaemon.c has been changed\!
XX echo diffs saved as \"utils/arepdaemon.D\"
XXelse
XX echo applying diffs to file utils/arepdaemon.c...
XX /bin/cat utils/arepdaemon.D | /bin/ed - utils/arepdaemon.c
XXfi
XX#-------------------------------------
XX# File 'utils/autoreply.c' diffs...
XXcat << 'EOF' > utils/autoreply.D
XX24,25d
XXw
XXEOF
XXchars=`cat utils/autoreply.c | wc -c`
XXif [ $chars -ne 4746 ]
XXthen
XX echo Your file utils/autoreply.c has been changed\!
XX echo diffs saved as \"utils/autoreply.D\"
XXelse
XX echo applying diffs to file utils/autoreply.c...
XX /bin/cat utils/autoreply.D | /bin/ed - utils/autoreply.c
XXfi
XX#-------------------------------------
XX# File 'utils/fastmail.c' diffs...
XXcat << 'EOF' > utils/fastmail.D
XX218a
XX# endif
XX.
XX217a
XX# ifdef BSD4.1
XX timezone(loc_time.time_zone, the_time->tz_isdst));
XX# else
XX.
XX203a
XX# endif
XX.
XX201a
XX# ifdef BSD4.1
XX junk = (long) time((long *) 0);
XX ftime(&loc_time);
XX# else
XX.
XX198a
XX# endif
XX.
XX196a
XX# ifdef BSD4.1
XX struct timeb loc_time; /* of course this is different! */
XX# else
XX.
XX32c
XX# ifdef BSD4.1
XX# include <time.h>
XX# include <sys/types.h>
XX# include <sys/timeb.h>
XX# else
XX# include <sys/time.h>
XX# endif
XX.
XXw
XXEOF
XXchars=`cat utils/fastmail.c | wc -c`
XXif [ $chars -ne 7799 ]
XXthen
XX echo Your file utils/fastmail.c has been changed\!
XX echo diffs saved as \"utils/fastmail.D\"
XXelse
XX echo applying diffs to file utils/fastmail.c...
XX /bin/cat utils/fastmail.D | /bin/ed - utils/fastmail.c
XXfi
XX#-------------------------------------
XX# File 'utils/newmail.c' diffs...
XXcat << 'EOF' > utils/newmail.D
XX251c
XX printf(">> %s mail from %s - %s\n\r",
XX priority? "PRIORITY" : "New", from, subject);
XX.
XX218c
XXshow_header(priority, from, subject)
XXint priority;
XX.
XX136c
XX show_header(priority, from_whom, subject);
XX.
XX131a
XX else if (first_word(buffer,"Priority:"))
XX priority++;
XX.
XX113c
XX register int subj = 0, in_header = 1, count = 0, priority=0;
XX.
XX29a
XX#ifdef AUTO_BACKGROUND
XX#include <signal.h> /* background jobs ignore some signals... */
XX#endif
XX.
XX20,23d
XXw
XXEOF
XXchars=`cat utils/newmail.c | wc -c`
XXif [ $chars -ne 7761 ]
XXthen
XX echo Your file utils/newmail.c has been changed\!
XX echo diffs saved as \"utils/newmail.D\"
XXelse
XX echo applying diffs to file utils/newmail.c...
XX /bin/cat utils/newmail.D | /bin/ed - utils/newmail.c
XXfi
XX#-------------------------------------
XX# File 'utils/newalias.c' diffs...
XXcat << 'EOF' > utils/newalias.D
XX453a
XX}
XXextract_comment(comment, buffer, first, last)
XXchar *comment, *buffer;
XXint first, last;
XX{
XX /** Buffer contains a comment, located between the first and last
XX values. Copy that into 'comment', but remove leading and
XX trailing white space. Note also that it doesn't copy past
XX a comma, so `unpublishable' comments can be of the form;
XX dave: Dave Taylor, HP Labs : taylor at hplabs
XX and the output will be "taylor at hplabs (Dave Taylor)".
XX **/
XX register int loc = 0;
XX /** first off, skip the LEADING white space... **/
XX while (buffer[first] == ' ') first++;
XX
XX /** now let's backup the 'last' value until we hit a non-space **/
XX last -= 2; /* starts at ch AFTER colon.. */
XX while (buffer[last] == ' ') last--;
XX /** now a final check to make sure we're still talking about a
XX reasonable string (rather than a "joe :: joe at dec" type string) **/
XX if (first < last) {
XX /* one more check - let's find the comma, if present... */
XX for (loc=first; loc < last; loc++)
XX if (buffer[loc] == ',') {
XX last = loc-1;
XX break;
XX }
XX loc = 0;
XX while (first <= last)
XX comment[loc++] = buffer[first++];
XX comment[loc] = '\0';
XX }
XX.
XX311a
XX if (first_colon == -1 && string[i] == ':') {
XX first_colon = i;
XX for (last_colon=strlen(string);string[last_colon] != ':';
XX last_colon--) ;
XX }
XX else if (i > first_colon && i < last_colon)
XX if (string[i] == c1 || string[i] == c2)
XX buffer[j++] = string[i];
XX }
XX
XX.
XX308c
XX for (i = 0; string[i] != '\0' && i < LONG_STRING; i++) {
XX.
XX306c
XX register int i = 0, j = 0, first_colon = -1, last_colon = -1;
XX.
XX304c
XX /* Remove all occurances of character 'c1' or 'c2' from the string.
XX Hacked (literally) to NOT remove ANY characters from within the
XX colon fields. This will only be used if the line contains TWO
XX colons (and comments with colons in them are the kiss of death!)
XX */
XX.
XX284c
XX if (strlen(comment) > 0) {
XX fprintf(data, "%s (%s)\n", address, comment);
XX additive = (long) (strlen(comment) + 4);
XX }
XX else
XX fprintf(data, "%s\n", address, comment);
XX.
XX267,268c
XX /** add address + comment to datafile, incrementing offset count
XX (bytes), then for each alias in the aliases string, add to the
XX.
XX263c
XXchar *aliases, *comment, *address;
XX.
XX261c
XXadd_to_table(data, aliases, comment, address, table, size)
XX.
XX212c
XX add_to_table(data, aliases, comment, address, table, size);
XX.
XX209a
XX comment[0] = '\0'; /* default to nothing at all... */
XX if ((first=strlen(aliases)+1) < (last=(strlen(buffer) - j))) {
XX extract_comment(comment, buffer, first, last);
XX }
XX.
XX198c
XX char comment[LONG_STRING];
XX int first, last, i = 0, j = 0;
XX.
XX193,195c
XX /** break buffer down into three pieces: aliases, comment, and address.
XX Make the appropriate entries in the table (size)
XX **/
XX.
XXw
XXEOF
XXchars=`cat utils/newalias.c | wc -c`
XXif [ $chars -ne 11051 ]
XXthen
XX echo Your file utils/newalias.c has been changed\!
XX echo diffs saved as \"utils/newalias.D\"
XXelse
XX echo applying diffs to file utils/newalias.c...
XX /bin/cat utils/newalias.D | /bin/ed - utils/newalias.c
XXfi
XX#-------------------------------------
XX# File 'utils/printmail.c' diffs...
XXcat << 'EOF' > utils/printmail.D
XX72,73c
XX argv++;
XX if (argc-1) {
XX.
XX34c
XX argv++;
XX.
XX28c
XX argv++; /* get past argv[0] */
XX.
XXw
XXEOF
XXchars=`cat utils/printmail.c | wc -c`
XXif [ $chars -ne 2472 ]
XXthen
XX echo Your file utils/printmail.c has been changed\!
XX echo diffs saved as \"utils/printmail.D\"
XXelse
XX echo applying diffs to file utils/printmail.c...
XX /bin/cat utils/printmail.D | /bin/ed - utils/printmail.c
XXfi
XX#-------------------------------------
XX# File 'utils/readmsg.c' diffs...
XXcat << 'EOF' > utils/readmsg.D
XX317a
XX if (strlen(to) > 0) { printf("%s", to); displayed_line++;}
XX.
XX304a
XX to[0] = '\0';
XX.
XX301a
XX else if (strncmp(buffer,"To: ", 3) == 0)
XX strncpy(to, buffer, SLEN);
XX.
XX287c
XXstatic char from[SLEN], subject[SLEN], date[SLEN], to[SLEN];
XX.
XX200c
XX if (current == read_message[current_in_queue] || list_all_messages)
XX.
XX195,196c
XX if ((current == read_message[current_in_queue] || list_all_messages)
XX && page_breaks && current_in_queue > 0)
XX.
XX190,193c
XX if (! list_all_messages) {
XX if (current == read_message[current_in_queue])
XX current_in_queue++;
XX if (current_in_queue >= messages)
XX exit(0);
XX }
XX.
XX124c
XX else if (*argv[0] == STAR) /* all messages.... */
XX list_all_messages++;
XX else { /* list of nums */
XX.
XX117c
XX else if (! isdigit(*argv[0]) && *argv[0] != LAST_CHAR &&
XX *argv[0] != STAR) {
XX.
XX67a
XX list_all_messages = 0, /* just list 'em all?? */
XX.
XX42a
XX#define STAR '*' /* char to delimit all messages... */
XX.
XX21a
XX Also added '*' as a flag - indicating ALL messages in the mailbox.
XX.
XX18c
XX
XX.
XXw
XXEOF
XXchars=`cat utils/readmsg.c | wc -c`
XXif [ $chars -ne 9564 ]
XXthen
XX echo Your file utils/readmsg.c has been changed\!
XX echo diffs saved as \"utils/readmsg.D\"
XXelse
XX echo applying diffs to file utils/readmsg.c...
XX /bin/cat utils/readmsg.D | /bin/ed - utils/readmsg.c
XXfi
XX#-------------------------------------
XX# File 'utils/wnewmail.c' diffs...
XXcat << 'EOF' > utils/wnewmail.D
XX249c
XX /** Try to parse the 'From:' line given... It can be in one of
XX.
XX243c
XX printf("%sMail from %s -- %s\n",
XX priority? "PRIORITY ": "", from, subject);
XX.
XX208c
XXshow_header(priority, from, subject)
XXint priority;
XX.
XX126c
XX show_header(priority, from_whom, subject);
XX.
XX123a
XX else if (first_word(buffer, "Priority:"))
XX priority++;
XX.
XX103c
XX register int subj = 0, in_header = 1, count = 0, priority = 0;
XX.
XX17a
XX#ifdef AUTO_BACKGROUND
XX#include <signal.h> /* background jobs ignore some signals... */
XX#endif
XX.
XX8,11d
XXw
XXEOF
XXchars=`cat utils/wnewmail.c | wc -c`
XXif [ $chars -ne 7804 ]
XXthen
XX echo Your file utils/wnewmail.c has been changed\!
XX echo diffs saved as \"utils/wnewmail.D\"
XXelse
XX echo applying diffs to file utils/wnewmail.c...
XX /bin/cat utils/wnewmail.D | /bin/ed - utils/wnewmail.c
XXfi
XX#---------------------------------
XX# File Elm/utils/trim-headers is new!
XXecho File Elm/utils/trim-headers is new - extracting...
XXif [ -f utils/trim-headers ]
XXthen
XX echo File \'utils/trim-headers\' is new, but you already have something called that\!
XX echo I\'m going to move your file to \'utils/trim-headers.old\'...
XX /bin/mv -f utils/trim-headers utils/trim-headers.old
XXelse
XX echo Extracting new file \'utils/trim-headers\'
XXfi
XXcat > utils/trim-headers << 'END_OF_FILE'
XX: Use /bin/sh
XX# This shell script is designed to be used either to trim the 'junk' headers
XX# out of an archived/saved mailbox file or to trim the headers off a file
XX# that is being piped to it. The program considers the following headers
XX# to be worth saving - everything else is junked.
XX#
XX# From <user> <date>
XX# From: name <address>
XX# Subject:
XX# To:
XX# Cc:
XX# Date:
XX#
XX# all others are ignored and trashed.
XX#
XX# (C) Copyright 1986, Dave Taylor
XX# first off, let's make the 'awk' script we'll be using...
XXcat << 'END_OF_AWK_SCRIPT' > /tmp/awk.$$
XXBEGIN { in_body = 1 }
XX{ if (in_body) {
XX if ($1 == "From") in_body = 0;
XX print $0
XX }
XX else if ($1 == "From:" || $1 == "Subject:" || $1 == "To:" || \
XX $1 == "Cc:" || $1 == "Date:")
XX print $0
XX else if (length($0) == 0) {
XX in_body = 1;
XX print $0
XX }
XX}
XXEND_OF_AWK_SCRIPT
XX# next let's see if we're being piped to or if we've been handed
XX# either a file name or list of file names...
XXif [ "$1" = "" ]
XXthen
XX cat - | awk -f /tmp/awk.$$ | uniq
XX rm -f /tmp/awk.$$
XXelse
XX for filename in $*
XX do
XX echo filtering file $filename
XX cat $filename | awk -f /tmp/awk.$$ | uniq > OUTFILE
XX mv OUTFILE $filename
XX done
XX echo done
XXfi
XX
XXexit 0
XXEND_OF_FILE
XXchars=`cat utils/trim-headers | wc -c`
XXif [ $chars -ne 1201 ]
XXthen
XX echo File damaged in transit...should be 1201 bytes, is $chars instead
XX echo I suggest you check it closely...
XXfi
XX#---------------------------------
XX# File Elm/utils/Makefile.mstr is new!
XXecho File Elm/utils/Makefile.mstr is new - extracting...
XXif [ -f utils/Makefile.mstr ]
XXthen
XX echo File \'utils/Makefile.mstr\' is new, but you already have something called that\!
XX echo I\'m going to move your file to \'utils/Makefile.mstr.old\'...
XX /bin/mv -f utils/Makefile.mstr utils/Makefile.mstr.old
XXelse
XX echo Extracting new file \'utils/Makefile.mstr\'
XXfi
XXcat > utils/Makefile.mstr << 'END_OF_FILE'
XX#
XX# Makefile for the Elm system utilities
XX#
XX# (C) Copyright 1986, Dave Taylor
XX#
XX# Last modification: March 5th, 1986
XXSHELL=/bin/sh
XX##############################
XX#
XX# if on a BSD system;
XX# DEFINE=-DBSD
XX# LIB2 = -lcurses
XX# else if on a UTS system;
XX# DEFINE=-DUTS
XX# LIB2 = -la
XX# else if on a SUN system;
XX# DEFINE=-DBSD -DSUN
XX# LIB2 = -lcurses
XX# else if on a Pyramid system;
XX# DEFINE=-DBSD -DNO_VAR_ARGS
XX# LIB2 = -lcurses
XX# else
XX DEFINE= >os-define<
XX LIB2 = >lib2<
XX##############################
XXCFLAGS= -O -I../hdrs
XXCC= >cc<
XXRM= >rm<
XXECHO= /bin/echo
XXOBJS= ../bin/newalias ../bin/from ../bin/newmail ../bin/answer \
XX ../bin/printmail ../bin/fastmail ../bin/readmsg \
XX ../bin/checkalias ../bin/arepdaemon ../bin/autoreply ../bin/wnewmail \
XX ../bin/messages ../bin/trim-headers
XXall: ${OBJS}
XX../bin/newalias: ../hdrs/defs.h newalias.c ../src/validname.o \
XX ../src/opt_utils.o
XX ${CC} ${CFLAGS} ${DEFINE} newalias.c ../src/validname.o \
XX ../src/opt_utils.o -o ../bin/newalias
XX../bin/from: from.c ../src/opt_utils.o ../src/string2.o
XX ${CC} ${CFLAGS} ${DEFINE} from.c ../src/opt_utils.o \
XX ../src/string2.o -o ../bin/from
XX../bin/newmail: ../src/opt_utils.c newmail.c ../src/string2.o
XX ${CC} ${CFLAGS} ${DEFINE} newmail.c \
XX ../src/string2.o -o ../bin/newmail
XX../bin/wnewmail: ../src/opt_utils.c wnewmail.c ../src/string2.o
XX ${CC} ${CFLAGS} ${DEFINE} ../src/opt_utils.o \
XX ../src/string2.o wnewmail.c -o ../bin/wnewmail
XX../bin/answer: answer.c ../src/opt_utils.o
XX ${CC} ${CFLAGS} ${DEFINE} answer.c ../src/opt_utils.o -o ../bin/answer
XX../bin/printmail: printmail.c ../src/opt_utils.o
XX ${CC} ${CFLAGS} ${DEFINE} printmail.c ../src/opt_utils.o \
XX -o ../bin/printmail
XX../bin/fastmail: fastmail.c
XX ${CC} ${CFLAGS} ${DEFINE} fastmail.c ../src/opt_utils.o \
XX -o ../bin/fastmail
XX../bin/readmsg: readmsg.c ../src/getopt.o ../src/opt_utils.o
XX ${CC} ${CFLAGS} ${DEFINE} readmsg.c ../src/getopt.o \
XX ../src/opt_utils.o -o ../bin/readmsg
XX../bin/arepdaemon: arepdaemon.c
XX ${CC} ${CFLAGS} ${DEFINE} arepdaemon.c -o ../bin/arepdaemon
XX../bin/autoreply: autoreply.c ../src/opt_utils.o
XX ${CC} ${CFLAGS} ${DEFINE} autoreply.c ../src/opt_utils.o \
XX -o ../bin/autoreply
XX../bin/checkalias:
XX @echo ': Use /bin/sh' > ../bin/checkalias
XX @echo 'if [ "$$*" = "" ]; then' >> ../bin/checkalias
XX @echo ' echo Usage: checkalias alias \[or aliases\]' >> \
XX ../bin/checkalias
XX @echo ' exit 1' >> ../bin/checkalias
XX @echo 'fi' >> ../bin/checkalias
XX @echo ' ' >> ../bin/checkalias
XX @echo 'exec elm -c $$*' >> ../bin/checkalias
XX @chmod +x ../bin/checkalias
XX../bin/messages:
XX @echo ': Use /bin/sh' > ../bin/messages
XX @echo 'if [ "$$2" != "" ]; then' >> ../bin/messages
XX @echo ' echo Usage: messages \{folder-name\}' >> ../bin/messages
XX @echo ' exit 1' >> ../bin/messages
XX @echo 'fi' >> ../bin/messages
XX @echo ' ' >> ../bin/messages
XX @echo 'if [ "$$1" = "" ]; then' >> ../bin/messages
XX @echo ' fname=$$MAIL' >> ../bin/messages
XX @echo ' optional="in your mailbox"' >> ../bin/messages
XX @echo 'else' >> ../bin/messages
XX @echo ' fname=$$1' >> ../bin/messages
XX @echo ' optional="in folder $$1"' >> ../bin/messages
XX @echo 'fi' >> ../bin/messages
XX @echo ' ' >> ../bin/messages
XX @echo 'mcount=`egrep "^From " $$fname | wc -l`' >> ../bin/messages
XX @echo ' ' >> ../bin/messages
XX @echo 'if [ $$mcount = 1 ];then' >> ../bin/messages
XX @echo ' echo There is $$mcount message $$optional' >> ../bin/messages
XX @echo 'else' >> ../bin/messages
XX @echo ' echo There are $$mcount messages $$optional' >> ../bin/messages
XX @echo 'fi' >> ../bin/messages
XX @echo ' ' >> ../bin/messages
XX @echo 'exit 0' >> ../bin/messages
XX @chmod +x ../bin/messages
XX../bin/trim-headers:
XX @cp trim-headers ../bin/trim-headers
XX @chmod +x ../bin/trim-headers
XX../src/validname.o: ../src/validname.c ../hdrs/defs.h
XX @(cd ../src; ${CC} -c ${CFLAGS} ${DEFINE} validname.c; cd ../utils)
XX../src/opt_utils.o: ../src/opt_utils.c ../hdrs/defs.h
XX @(cd ../src; ${CC} -c ${CFLAGS} ${DEFINE} opt_utils.c; cd ../utils)
XX../src/getopt.o: ../src/getopt.c ../hdrs/defs.h
XX @(cd ../src; ${CC} -c ${CFLAGS} ${DEFINE} getopt.c; cd ../utils)
XX../src/string2.o: ../src/string2.c ../hdrs/defs.h
XX @(cd ../src; ${CC} -c ${CFLAGS} ${DEFINE} string2.c; cd ../utils)
XXclean:
XX ${RM} *.o ${OBJS}
XXlint:
XX lint -p -I../hdrs *.c > LINT.OUT
XXEND_OF_FILE
XXchars=`cat utils/Makefile.mstr | wc -c`
XXif [ $chars -ne 4391 ]
XXthen
XX echo File damaged in transit...should be 4391 bytes, is $chars instead
XX echo I suggest you check it closely...
XXfi
XX#-------------------------------------
XX# File 'bin/mail.elm' diffs...
XXcat << 'EOF' > bin/mail.elm.D
XX16c
XX sleep 1800
XX.
XXw
XXEOF
XXchars=`cat bin/mail.elm | wc -c`
XXif [ $chars -ne 363 ]
XXthen
XX echo Your file bin/mail.elm has been changed\!
XX echo diffs saved as \"bin/mail.elm.D\"
XXelse
XX echo applying diffs to file bin/mail.elm...
XX /bin/cat bin/mail.elm.D | /bin/ed - bin/mail.elm
XXfi
XX#-------------------------------------
XX# File 'Instructions' diffs...
XXcat << 'EOF' > Instructions.D
XX84c
XXshould say "no mail" if nothing's in your incoming mailbox, and
XX.
XX75c
XXNote: the mailer runs as setgid mail to have the ability to WRITE
XX.
XX63,73c
XX $ make -i install
XX.
XX59,61c
XXnext, you can install all the software on your system by;
XX.
XX56,57c
XX "answer", "arepdaemon", "autoreply", "fastmail", "from",
XX "elm", "newalias", "newmail", "printmail", and "readmsg".
XX.
XX40,47d
XX36,38c
XX (if you're in "sh", you can use "> MAKELOG 2>&1" instead of ">& MAKELOG")
XX.
XX34c
XX $ (make -i all >& MAKELOG) &
XX $ tail -f MAKELOG
XX.
XX32c
XX When that's done, or even if it fails (don't worry too much about it)
XX.
XX29,30c
XX $ make documentation
XX.
XX27c
XX $
XX.
XX25c
XX Once you're happy with the localized files, you then need to create
XXthe documentation (so there's a bit of a catch-22 that you need to format the
XXConfiguration guide before you are happy with the localization but can't do
XXthat until you're happy with the localization...oh well).
XX.
XX23c
XX Answer the questions of that program,, then let it create the localized
XXMakefiles and system definition files for you. When it's done you can double
XXcheck the configuration (or customize it further) by reading the Configuration
XXGuide + editing the file "hdrs/sysdefs.h". There are lots of neat features
XXthat are unique to this mailer - it's worth a quick perusal at least!
XX.
XX19,21c
XX $ sh Configure.sh
XX.
XX17c
XX $ cd <where-ever you're keeping the Elm sources>
XX.
XX13,15c
XX There is actually really one step needed - unpack all the shar
XXfiles and then;
XX.
XX5c
XX Last Update: July 17th, 1986
XX.
XXw
XXEOF
XXchars=`cat Instructions | wc -c`
XXif [ $chars -ne 5058 ]
XXthen
XX echo Your file Instructions has been changed\!
XX echo diffs saved as \"Instructions.D\"
XXelse
XX echo applying diffs to file Instructions...
XX /bin/cat Instructions.D | /bin/ed - Instructions
XXfi
@//E*O*F Edit2//
chmod u=rwx,g=rwx,o=rwx $OUT
echo Inspecting for damage in transit...
temp=/tmp/sharin$$; dtemp=/tmp/sharout$$
trap "rm -f $temp $dtemp; exit" 0 1 2 3 15
cat > $temp <<\!!!
1469 5048 37752 Edit2
!!!
wc Edit2 | sed 's=[^ ]*/==' | diff -b $temp - >$dtemp
if test -s $dtemp ; then
echo "Ouch [diff of wc output]:"
cat $dtemp
STATUS=1
elif test $STATUS = 0 ; then
echo "No problems found."
else
echo "WARNING -- PROBLEMS WERE FOUND..."
fi
exit $STATUS
More information about the Mod.sources
mailing list