#!/bin/sh

CC=gcc
CFLAGS=-O2
LDFLAGS=-s

SPOOL=/var/spool/sendfile
BINDIR=/usr/local/bin
MANDIR=/usr/local/man
CONFIG=/usr/local/etc
SERVERDIR=/usr/local/sbin

############################# OPTIONAL SETTINGS ##############################

#TAR=/usr/bin/tar
#GZIP=/usr/bin/gzip
#PGP=/usr/local/bin/pgp
#RECODE=/usr/local/bin/recode
#METAMAIL=/usr/local/bin/metamail
#SENDMAIL=/usr/lib/sendmail
           
######################### END OF USER CONFIGURATION ##########################

export CC CFLAGS LINK LDFLAGS BINDIR SERVERDIR MANDIR CONFIG SPOOL FIFODIR
export TAR GZIP PGP RECODE METAMAIL SENDMAIL
	   
# source in developer environment variables if found
if [ -f "$SF_DEVELENV" ]; then
  . $SF_DEVELENV
elif [ -f .develenv ]; then
  . .develenv
elif [ -f $HOME/.develenv ]; then
  . $HOME/.develenv  
fi

# check at last if there are env-settings in $*
case "$1" in 
  *=*) eval $*;;
esac  

LINK=${LINK:-$CC}

./configure \
    --libexecdir=$SERVERDIR \
    --bindir=$BINDIR \
    --mandir=$MANDIR \
    --sysconfdir=$CONFIG \
  || exit $?

touch config.cache

if [ -d /var/run ]; then FIFODIR=/var/run/sfm; fi

export VERSION
eval `grep VERSION= configure.in`

SYSTEM=`./config.guess`

case "$SYSTEM" in
  *linux*)	SYSTEM=LINUX;;
  *solaris1*)	SYSTEM=SOLARIS1;;
  *solaris2*)	SYSTEM=SOLARIS2
  		LIBS="-lnsl -lsocket";;
  *hp-ux*)	SYSTEM=HPUX;;
  *aix*)	SYSTEM=AIX;;
  *irix*)	SYSTEM=IRIX;;
  *next*)	SYSTEM=NEXT;;
  *convex*)	SYSTEM=CONVEXOS;;
  *osf*)	SYSTEM=OSF1;;
  *bsd*)	SYSTEM=BSD;;
  *)		SYSTEM=UNKNOWN;;
esac

echo creating src/globals.h

cat <<EOD>src/globals.h
/*
 * Do not edit this file!
 * It is autogenerated by "makeconfig" and will be overwritten next time!
 * If you want to change some values, so do it in "makeconfig".
 */

#define BINDIR		"$BINDIR"
#define MANDIR		"$MANDIR"
#define SERVERDIR	"$SERVERDIR"

#define NOSENDFILE	"$CONFIG/nosendfile"
#define CONFIG		"$CONFIG/sendfile.cf"
#define ALIASES		"$CONFIG/sendfile.aliases"

#define SPOOL    	"$SPOOL"
#define INLOG		"$SPOOL/LOG/in"
#define OUTLOG		"$SPOOL/LOG/out"

#define RECEIVE	 	"$BINDIR/receive"
#define TAR	 	"${TAR:-tar}"
#define GZIP	 	"${GZIP:-gzip}"
#define PGP	 	"${PGP:-pgp}"
#define RECODE	 	"${RECODE:-recode}"
#define METAMAIL 	"${METAMAIL:-metamail}"
#define SENDMAIL 	"${SENDMAIL:-/usr/lib/sendmail}"
#define FIFODIR  	"${FIFODIR:-/tmp/sfm}"	

#define DBF		 "/var/log/sendfiled.dbg"

#define DATEFORMAT	"%d-%b-%Y %H:%M:%S"	/* see strftime(3) */
#define CHARSET		"ISO_8859-1:1987"	/* this is ISO Latin 1 */
#define PROTOCOL 	"SAFT"
#define SAFT	  	487	/* SAFT tcp port */
#define DAYSEC 		86400	/* seconds per day */
#define OVERSIZE  	32768	/* string oversize length */
#define MAXLEN	  	4096	/* max length of various strings */
#define FLEN	  	256	/* file name length */
#define DLEN	  	30	/* date string length */
#define PACKET	  	512	/* data size per packet */
#define DEBUG			/* more debugging output */
#undef  DEBUG
#define ALT_MESSAGES		/* alternative user message format */
#undef  ALT_MESSAGES
#define RESPECT_MAIL_ALIASES	/* look for elm aliases, too */
#undef  RESPECT_MAIL_ALIASES
EOD

echo updating src/Makefile

echo "
# Do not edit this file!
# It is autogenerated by "makeconfig" and will be overwritten next time!
# If you want to change some values, so do it in "makeconfig".

CC=$CC
CFLAGS=$CFLAGS -D$SYSTEM
LINK=$LINK
LDFLAGS=$LDFLAGS
LIBS=$LIBS
"'
SENDFILE_OBJ=   sendfile.o message.o utf7.o pstring.o string.o io.o net.o \
                address.o spool.o
SENDMSG_OBJ=    sendmsg.o message.o utf7.o pstring.o string.o io.o net.o \
                address.o
RECEIVE_OBJ=    receive.o message.o utf7.o pstring.o string.o io.o spool.o \
                getdate.o
SENDFILED_OBJ=  sendfiled.o message.o utf7.o pstring.o string.o io.o net.o \
                spool.o peername.o reply.o
UTF7ENCODE_OBJ= utf7encode.o message.o utf7.o pstring.o


all:	sendfile sendmsg receive sendfiled utf7encode
	@ls -l sendfile sendmsg receive sendfiled utf7encode utf7decode
	@echo
	@echo "and now type (as root):  make install"
	@echo

install: sendfile sendmsg receive sendfiled utf7encode
	@cd ..;sh install '$SYSTEM'

sendfile: $(SENDFILE_OBJ)
	$(LINK) $(LDFLAGS) $(SENDFILE_OBJ) -o sendfile $(LIBS)

sendmsg: $(SENDMSG_OBJ)
	$(LINK) $(LDFLAGS) $(SENDMSG_OBJ) -o sendmsg $(LIBS)

receive: $(RECEIVE_OBJ)
	$(LINK) $(LDFLAGS) $(RECEIVE_OBJ) -o receive $(LIBS)

sendfiled: $(SENDFILED_OBJ)
	$(LINK) $(LDFLAGS) $(SENDFILED_OBJ) -o sendfiled $(LIBS)

utf7encode: $(UTF7ENCODE_OBJ)
	$(LINK) $(LDFLAGS) $(UTF7ENCODE_OBJ) -o utf7encode $(LIBS)
	@rm -f utf7decode
	ln -s utf7encode utf7decode

clean:
	rm -rf core *.o *~ a.out .deps \
	       sendfile sendfiled sendmsg receive utf7??code 

trimeol:
	perl -pi -e "s/[ \t]+\$//" *.c *.h


.c.o:
	$(CC) $(CFLAGS) -c $<

sendfile.o:sendfile.c config.h globals.h utf7.h string.h io.h
sendmsg.o: sendmsg.c config.h globals.h utf7.h string.h
receive.o: receive.c config.h globals.h utf7.h spool.h string.h io.h
sendfiled.o: sendfiled.c reply.h config.h globals.h utf7.h spool.h string.h
spoolid.o: spoolid.c config.h globals.h
message.o: message.c message.h config.h globals.h
utf7.o: utf7.c utf7.h config.h globals.h string.h
base64.o: base64.c base64.h config.h globals.h
pstring.o: pstring.c pstring.h config.h globals.h
peername.o: peername.c peername.h string.h config.h globals.h
net.o: net.c net.h io.h config.h globals.h
io.o: io.c io.h config.h globals.h
string.o: string.c string.h config.h globals.h
address.o: address.c address.h config.h globals.h string.h
spool.o: spool.c spool.h config.h globals.h string.h
reply.o: reply.c reply.h config.h globals.h net.h
getdate.o: getdate.c config.h globals.h
utf7encode.o: utf7encode.c config.h globals.h utf7.h

' >src/Makefile

echo updating Makefile

cat <<EOD>Makefile
# Do not edit this file!
# It is autogenerated by "makeconfig" and will be overwritten next time!
# If you want to change some values, so do it in "makeconfig".

all: config.cache .
	cd src; make

install: config.cache .
	sh install $SYSTEM

config: 
	sh ./makeconfig

config.cache: makeconfig
	sh ./makeconfig
	
clean:
	rm -f sendfile-*zip sendfile-*tar.gz config.cache config.log *~ */*~
	cd src; make clean
	
wc:
	@cd src; wc -cl \\
	  sendfile.c sendfiled.c sendmsg.c receive.c utf7encode.c \\
	  string.[ch] utf7.[ch] pstring.[ch] message.[ch] peername.[ch] \\
	  io.[ch] net.[ch] address.[ch] spool.[ch] reply.[ch] \\
	  getdate.c snprintf.c bsd.h ../install ../makeconfig \\
	  ../etc/check_sendfile ../etc/sf_cleanup ../etc/nosendfile \\
	  ../etc/sendfile.cf

dist: clean
	@mkdir sendfile-$VERSION
	@tar cf - \`cat FILES\` | (cd sendfile-$VERSION; tar xf - )
	@cp -r ../support/xhoppel sendfile-$VERSION/
	@cd sendfile-$VERSION/xhoppel; make clean
	zip -r sendfile-$VERSION.zip sendfile-$VERSION
	tar cvf - sendfile-$VERSION | gzip > sendfile-$VERSION.tar.gz
	@rm -rf sendfile-$VERSION
	@ls -l sendfile-$VERSION.tar.gz sendfile-$VERSION.zip

floppy: clean
	tar cvzf /dev/fd0 .; tar czf /tmp/sf.tgz .
	@echo "insert a new disk and press enter"; read dummy
	mformat a:; mcopy /tmp/sf.tgz a:; rm -f /tmp/sf.tgz

EOD
