#
# please refer to the 'INSTALL' file for instructions on configuring this
# Makefile and installing addhost.
#

CFLAGS=-g -DDBDIR=\"$(DBDIR) -DLIB=\"$(LIBDIR) -DDBLOCKDIR=\"$(DBLOCKDIR) -DRECLOCKDIR=\"$(RECLOCKDIR) -DADDPROG=\"${ADDPROG} -DRMPROG=\"${RMPROG} -DDAEMONPROG=\"${DAEMONPROG} -DBADPROG=\"${BADPROG} -DBRMPROG=\"${BRMPROG} -DDUMPPROG=\"${DUMPPROG} -DETC=\"${DESTETC}
LIBS=libcurses/libcurses -ltermlib

BASEDIR=/usr/local/${ADDPROG}
DESTBIN=$(BASEDIR)/bin
DESTETC=$(BASEDIR)/etc
LIBDIR=$(BASEDIR)/lib
USRMAN=$(BASEDIR)/man
RECLOCKDIR=$(LIBDIR)/reclocks
DBDIR=$(LIBDIR)/db
DBLOCKDIR=$(LIBDIR)/dblocks
ADDPROG=addhost
RMPROG=rmhost
BADPROG=badhost
BRMPROG=brmhost
DAEMONPROG=addhostd
DUMPPROG=dumphost
USER=addhost
GROUP=addhost

SRCS=	main.c daemon.c db.c help.c scrutils.c getscr.c \
	config.c validate.c exp.c errors.c batch.c
OBJS=	main.o daemon.o db.o help.o scrutils.o getscr.o \
	config.o validate.o exp.o errors.o batch.o

# co $@
.DEFAULT:
	touch $@

all: ${ADDPROG} ${DUMPPROG}

.c: common.h $@
	cc ${CLFAGS} -c $@

${ADDPROG}: common.h ${OBJS}
	rm -f core
	cc ${CFLAGS} -o ${ADDPROG} ${OBJS} ${LIBS}

${DUMPPROG}: FORCE
	cd ${DUMPPROG}; make ; cd ..; rm -f FORCE

clean:
	rm -f ${OBJS} *.out core ${ADDPROG}
	cd ${DUMPPROG}; make clean

inst:
	install -c -m 4755 -o ${USER} -g ${GROUP} ${ADDPROG} ${DESTBIN}

install: ${ADDPROG} ${DUMPPROG}
	-test -d ${DESTBIN} || mkdir -p ${DESTBIN}
	-test -d ${DESTETC} || mkdir -p ${DESTETC}
	-test -d ${USRMAN}/man1  || mkdir -p ${USRMAN}/man1
	-test -d ${USRMAN}/man8  || mkdir -p ${USRMAN}/man8
	chmod 755 ${DESTBIN} ${DESTETC} ${USRMAN}
	rm -f ${DESTBIN}/${ADDPROG} ${DESTBIN}/${RMPROG} \
		${DESTBIN}/${BADPROG} ${DESTBIN}/${BRMPROG} \
		${USRMAN}/man1/${ADDPROG}.1 ${USRMAN}/man1/${RMPROG}.1\
		${USRMAN}/man1/${BADPROG}.1 ${USRMAN}/man1/${BRMPROG}.1\
		${USRMAN}/man8/${DAEMONPROG}.8\
		${USRMAN}/man8/${DUMPPROG}.8\
		${USRMAN}/man8/${ADDPROG}.8\
		${DESTETC}/${DAEMONPROG}
	install -c -m 4755 -o ${USER} -g ${GROUP} ${ADDPROG} ${DESTBIN}
	ln -s ${DESTBIN}/${ADDPROG} ${DESTBIN}/${RMPROG}
	ln -s ${DESTBIN}/${ADDPROG} ${DESTBIN}/${BADPROG}
	ln -s ${DESTBIN}/${ADDPROG} ${DESTBIN}/${BRMPROG}
	ln -s ${DESTBIN}/${ADDPROG} ${DESTETC}/${DAEMONPROG}
	install -c -m 644 -o root -g daemon man/${ADDPROG}.1 \
		 ${USRMAN}/man1/${ADDPROG}.1
	install -c -m 644 -o root -g daemon man/${BADPROG}.1 \
		 ${USRMAN}/man1/${BADPROG}.1
	install -c -m 644 -o root -g daemon man/${DAEMONPROG}.8 \
		 ${USRMAN}/man8/${DAEMONPROG}.8
	install -c -m 644 -o root -g daemon man/${ADDPROG}.8 \
		 ${USRMAN}/man8/${ADDPROG}.8
	ln -s ${USRMAN}/man1/${ADDPROG}.1 ${USRMAN}/man1/${RMPROG}.1
	ln -s ${USRMAN}/man1/${BADPROG}.1 ${USRMAN}/man1/${BRMPROG}.1
	ln -s ${USRMAN}/man8/${DAEMONPROG}.8 ${USRMAN}/man8/${DUMPPROG}.8
	cd ${DUMPPROG}; make install

install_all: install
	-test -d ${LIBDIR} || mkdir -p ${LIBDIR} && chown ${USER}.${GROUP} ${LIBDIR} && chmod 750 ${LIBDIR}
	-test -d ${DBDIR} || mkdir -p ${DBDIR} && chown ${USER}.${GROUP} ${DBDIR} && chmod 750 ${DBDIR}
	-test -d ${RECLOCKDIR} || mkdir ${RECLOCKDIR} && chown ${USER}.${GROUP} ${RECLOCKDIR} && chmod 750 ${RECLOCKDIR}
	-test -d ${DBLOCKDIR} || mkdir ${DBLOCKDIR} && chown ${USER}.${GROUP} ${DBLOCKDIR} && chmod 750 ${DBLOCKDIR}
	install -c -m 640 -o ${USER} -g ${GROUP} lib/addhosers ${LIBDIR}/addhosers
	install -c -m 640 -o ${USER} -g ${GROUP} lib/radhosts ${LIBDIR}/radhosts
	install -c -m 640 -o ${USER} -g ${GROUP} lib/db.keys ${LIBDIR}/db.keys
	install -c -m 640 -o ${USER} -g ${GROUP} lib/db.fields ${LIBDIR}/db.fields
	install -c -m 640 -o ${USER} -g ${GROUP} lib/fields.hf ${LIBDIR}/fields.hf
	install -c -m 640 -o ${USER} -g ${GROUP} lib/daemon.hf ${LIBDIR}/daemon.hf
	install -c -m 640 -o ${USER} -g ${GROUP} lib/screen.hf ${LIBDIR}/screen.hf
	install -c -m 640 -o ${USER} -g ${GROUP} lib/screen.conf ${LIBDIR}/screen.conf

depend: $(SRCS)
	for i in $?; do \
	    $(CC) -M ${CFLAGS} $$i | \
	    awk ' { if ($$1 != prev) \
		{ if (rec != "") print rec; rec = $$0; prev = $$1; } \
		else { if (length(rec $$2) > 78) { print rec; rec = $$0; } \
		else rec = rec " " $$2 } } \
		END { print rec } ' >> makedep; done
	echo '/^# DO NOT DELETE THIS LINE/+2,$$d' >eddep
	echo '$$r makedep' >>eddep
	echo 'w' >>eddep
	cp Makefile Makefile.bak
	ed - Makefile < eddep
	rm eddep makedep
	echo '# DEPENDENCIES MUST END AT END OF FILE' >> Makefile
	echo '# IF YOU PUT STUFF HERE IT WILL GO AWAY' >> Makefile
	echo '# see make depend above' >> Makefile

# DO NOT DELETE THIS LINE -- make depend uses it
# DEPENDENCIES MUST END AT END OF FILE
main.o: main.c ./common.h /usr/include/sys/types.h /usr/include/sys/param.h
main.o: /usr/include/machine/param.h /usr/include/signal.h
main.o: /usr/include/sys/types.h /usr/include/sys/smp_lock.h
main.o: /usr/include/curses.h /usr/include/stdio.h /usr/include/sgtty.h
main.o: /usr/include/sys/ioctl.h /usr/include/sys/ttychars.h
main.o: /usr/include/sys/ttydev.h /usr/include/sys/ttyio.h /usr/include/utmp.h
main.o: /usr/include/time.h /usr/include/errno.h /usr/include/sys/ioctl.h
main.o: /usr/include/sys/wait.h /usr/include/sys/types.h /usr/include/signal.h
main.o: /usr/include/netdb.h /usr/include/ctype.h /usr/include/pwd.h
main.o: /usr/include/sys/types.h /usr/include/strings.h /usr/include/syslog.h
main.o: /usr/include/stdlib.h
daemon.o: daemon.c /usr/include/sys/types.h /usr/include/sys/socket.h
daemon.o: /usr/include/sys/types.h /usr/include/sys/wait.h
daemon.o: /usr/include/sys/types.h /usr/include/sys/file.h
daemon.o: /usr/include/sys/types.h /usr/include/sys/param.h
daemon.o: /usr/include/machine/param.h /usr/include/signal.h
daemon.o: /usr/include/sys/types.h /usr/include/sys/smp_lock.h
daemon.o: /usr/include/ndbm.h /usr/include/netdb.h /usr/include/netinet/in.h
daemon.o: /usr/include/stdio.h /usr/include/ctype.h /usr/include/errno.h
daemon.o: /usr/include/string.h /usr/include/strings.h /usr/include/pwd.h
daemon.o: /usr/include/sys/types.h ./common.h /usr/include/sys/types.h
daemon.o: /usr/include/sys/param.h /usr/include/machine/param.h
daemon.o: /usr/include/signal.h /usr/include/sys/types.h
daemon.o: /usr/include/sys/smp_lock.h /usr/include/curses.h
daemon.o: /usr/include/stdio.h /usr/include/sgtty.h /usr/include/sys/ioctl.h
daemon.o: /usr/include/sys/ttychars.h /usr/include/sys/ttydev.h
daemon.o: /usr/include/sys/ttyio.h /usr/include/utmp.h /usr/include/time.h
daemon.o: /usr/include/errno.h ./errors.h /usr/include/syslog.h
db.o: db.c /usr/include/sys/file.h /usr/include/sys/types.h
db.o: /usr/include/stdio.h /usr/include/ndbm.h /usr/include/string.h
db.o: /usr/include/strings.h /usr/include/sys/dir.h ./common.h
db.o: /usr/include/sys/types.h /usr/include/sys/param.h
db.o: /usr/include/machine/param.h /usr/include/signal.h
db.o: /usr/include/sys/types.h /usr/include/sys/smp_lock.h
db.o: /usr/include/curses.h /usr/include/stdio.h /usr/include/sgtty.h
db.o: /usr/include/sys/ioctl.h /usr/include/sys/ttychars.h
db.o: /usr/include/sys/ttydev.h /usr/include/sys/ttyio.h /usr/include/utmp.h
db.o: /usr/include/time.h /usr/include/errno.h /usr/include/syslog.h
db.o: /usr/include/sys/stat.h
help.o: help.c ./common.h /usr/include/sys/types.h /usr/include/sys/param.h
help.o: /usr/include/machine/param.h /usr/include/signal.h
help.o: /usr/include/sys/types.h /usr/include/sys/smp_lock.h
help.o: /usr/include/curses.h /usr/include/stdio.h /usr/include/sgtty.h
help.o: /usr/include/sys/ioctl.h /usr/include/sys/ttychars.h
help.o: /usr/include/sys/ttydev.h /usr/include/sys/ttyio.h /usr/include/utmp.h
help.o: /usr/include/time.h /usr/include/errno.h /usr/include/stdio.h
help.o: /usr/include/ctype.h /usr/include/string.h /usr/include/strings.h
scrutils.o: scrutils.c ./common.h /usr/include/sys/types.h
scrutils.o: /usr/include/sys/param.h /usr/include/machine/param.h
scrutils.o: /usr/include/signal.h /usr/include/sys/types.h
scrutils.o: /usr/include/sys/smp_lock.h /usr/include/curses.h
scrutils.o: /usr/include/stdio.h /usr/include/sgtty.h /usr/include/sys/ioctl.h
scrutils.o: /usr/include/sys/ttychars.h /usr/include/sys/ttydev.h
scrutils.o: /usr/include/sys/ttyio.h /usr/include/utmp.h /usr/include/time.h
scrutils.o: /usr/include/errno.h ./errors.h /usr/include/string.h
getscr.o: getscr.c ./common.h /usr/include/sys/types.h /usr/include/sys/param.h
getscr.o: /usr/include/machine/param.h /usr/include/signal.h
getscr.o: /usr/include/sys/types.h /usr/include/sys/smp_lock.h
getscr.o: /usr/include/curses.h /usr/include/stdio.h /usr/include/sgtty.h
getscr.o: /usr/include/sys/ioctl.h /usr/include/sys/ttychars.h
getscr.o: /usr/include/sys/ttydev.h /usr/include/sys/ttyio.h
getscr.o: /usr/include/utmp.h /usr/include/time.h /usr/include/errno.h
getscr.o: /usr/include/sys/stat.h /usr/include/string.h /usr/include/strings.h
getscr.o: /usr/include/ctype.h /usr/include/syslog.h
config.o: config.c ./common.h /usr/include/sys/types.h /usr/include/sys/param.h
config.o: /usr/include/machine/param.h /usr/include/signal.h
config.o: /usr/include/sys/types.h /usr/include/sys/smp_lock.h
config.o: /usr/include/curses.h /usr/include/stdio.h /usr/include/sgtty.h
config.o: /usr/include/sys/ioctl.h /usr/include/sys/ttychars.h
config.o: /usr/include/sys/ttydev.h /usr/include/sys/ttyio.h
config.o: /usr/include/utmp.h /usr/include/time.h /usr/include/errno.h
config.o: ./errors.h /usr/include/syslog.h /usr/include/stdio.h
config.o: /usr/include/ctype.h /usr/include/string.h /usr/include/strings.h
config.o: /usr/include/sgtty.h
validate.o: validate.c ./common.h /usr/include/sys/types.h
validate.o: /usr/include/sys/param.h /usr/include/machine/param.h
validate.o: /usr/include/signal.h /usr/include/sys/types.h
validate.o: /usr/include/sys/smp_lock.h /usr/include/curses.h
validate.o: /usr/include/stdio.h /usr/include/sgtty.h /usr/include/sys/ioctl.h
validate.o: /usr/include/sys/ttychars.h /usr/include/sys/ttydev.h
validate.o: /usr/include/sys/ttyio.h /usr/include/utmp.h /usr/include/time.h
validate.o: /usr/include/errno.h /usr/include/stdio.h /usr/include/ctype.h
validate.o: /usr/include/string.h /usr/include/strings.h
exp.o: exp.c ./common.h /usr/include/sys/types.h /usr/include/sys/param.h
exp.o: /usr/include/machine/param.h /usr/include/signal.h
exp.o: /usr/include/sys/types.h /usr/include/sys/smp_lock.h
exp.o: /usr/include/curses.h /usr/include/stdio.h /usr/include/sgtty.h
exp.o: /usr/include/sys/ioctl.h /usr/include/sys/ttychars.h
exp.o: /usr/include/sys/ttydev.h /usr/include/sys/ttyio.h /usr/include/utmp.h
exp.o: /usr/include/time.h /usr/include/errno.h /usr/include/ctype.h
errors.o: errors.c ./common.h /usr/include/sys/types.h /usr/include/sys/param.h
errors.o: /usr/include/machine/param.h /usr/include/signal.h
errors.o: /usr/include/sys/types.h /usr/include/sys/smp_lock.h
errors.o: /usr/include/curses.h /usr/include/stdio.h /usr/include/sgtty.h
errors.o: /usr/include/sys/ioctl.h /usr/include/sys/ttychars.h
errors.o: /usr/include/sys/ttydev.h /usr/include/sys/ttyio.h
errors.o: /usr/include/utmp.h /usr/include/time.h /usr/include/errno.h
errors.o: ./errors.h /usr/include/syslog.h
batch.o: batch.c /usr/include/stdio.h /usr/include/strings.h
batch.o: /usr/include/sys/file.h /usr/include/sys/types.h
batch.o: /usr/include/sys/errno.h /usr/include/sys/wait.h
batch.o: /usr/include/sys/types.h ./common.h /usr/include/sys/types.h
batch.o: /usr/include/sys/param.h /usr/include/machine/param.h
batch.o: /usr/include/signal.h /usr/include/sys/types.h
batch.o: /usr/include/sys/smp_lock.h /usr/include/curses.h /usr/include/stdio.h
batch.o: /usr/include/sgtty.h /usr/include/sys/ioctl.h
batch.o: /usr/include/sys/ttychars.h /usr/include/sys/ttydev.h
batch.o: /usr/include/sys/ttyio.h /usr/include/utmp.h /usr/include/time.h
batch.o: /usr/include/errno.h ./errors.h /usr/include/sys/stat.h
batch.o: /usr/include/sys/dir.h /usr/include/syslog.h
# DEPENDENCIES MUST END AT END OF FILE
# IF YOU PUT STUFF HERE IT WILL GO AWAY
# see make depend above
