# Detta {r en "brute force"-makefile

# databas configuration part. These filenames can be changes to whatever
# your system uses.

# ethers .byname .byaddr
ETHERS = /etc/ethers
# group .byname .bygid
GROUP = /etc/group
# gshadow .byname
GSHADOW = /etc/gshadow
# hosts .byname .byaddr
HOSTS = /etc/hosts
# networks .byaddr .byname
NETWORKS = /etc/networks
# passwd .byname .byuid
PASSWD = /etc/passwd
# protocols .bynumber .byname
PROTOCOLS = /etc/protocols
# rpc .byname .bynumber
RPC = /etc/rpc
# services .byname = byport  .byservice
SERVICES = /etc/services
# shadow .byname
SHADOW = /etc/shadow

# Generated files in the same directory as this Makefile
# These filenames cannot be changed without rewriting the rules section
# in the end of this file
ETHERSINDEX = ethers.byname ethers.byaddr
GROUPINDEX = group.byname group.bygid
GSHADOWINDEX = gshadow.byname 
HOSTSINDEX = hosts.byname hosts.byaddr
NETWORKSINDEX = networks.byaddr networks.byname
PASSWDINDEX = passwd.byname passwd.byuid
PROTOCOLSINDEX = protocols.bynumber protocols.byname
RPCINDEX = rpc.byname rpc.bynumber
SERVICESINDEX = services.byname services.byservice
SHADOWINDEX = shadow.byname


# Makefile configuration
AWK = awk
RM = rm -f
DBADD = dbadd


all: $(ETHERSINDEX) \
     $(GROUPINDEX) \
     $(GSHADOWINDEX) \
     $(HOSTSINDEX) \
     $(NETWORKSINDEX) \
     $(PASSWDINDEX) \
     $(PROTOCOLSINDEX) \
     $(RPCINDEX) \
     $(SERVICESINDEX) \
     $(SHADOWINDEX)

# dependencies section:

$(ETHERSINDEX) : $(ETHERS)
$(GROUPINDEX) : $(GROUP)
$(GSHADOWINDEX) : $(GSHADOW)
$(HOSTSINDEX) : $(HOSTS)
$(NETWORKSINDEX) : $(NETWORKS)
$(PASSWDINDEX) : $(PASSWD)
$(PROTOCOLSINDEX) : $(PROTOCOLS)
$(RPCINDEX) : $(RPC)
$(SERVICESINDEX) : $(SERVICES)
$(SHADOWINDEX) : $(SHADOW)

# rules
# I think that using the macros above might be hazardous since
# you are more likely to change them and these are strongly name-dependant.

ethers.byname:
	$(RM) $@
	$(AWK) '{ print $$2, $$0 }' $(ETHERS) | while read key line; do \
		$(DBADD) $@ $$key "$$line"; \
	done || true

ethers.byaddr:
	$(RM) $@
	$(AWK) '{ print $$1, $$0 }' $(ETHERS) | while read key line; do \
		$(DBADD) $@ $$key "$$line"; \
	done || true


group.byname:
	$(RM) $@
	$(AWK) -F: '{ print $$1, $$0 }' $(GROUP) | while read key line; do \
		$(DBADD) $@ $$key "$$line"; \
	done || true

group.bygid:
	$(RM) $@
	$(AWK) -F: '{ print $$2, $$0 }' $(GROUP) | while read key line; do \
		$(DBADD) $@ $$key "$$line"; \
	done || true


gshadow.byname:
	$(RM) $@
	$(AWK) -F: '{ print $$1, $$0 }' $(GSHADOW) | while read key line; do \
		$(DBADD) $@ $$key "$$line"; \
	done || true


hosts.byname:
	$(RM) $@
	$(AWK) '{ print $$2, $$0 }' $(HOSTS) | while read key line; do \
		$(DBADD) $@ $$key "$$line"; \
	done || true

hosts.byaddr:
	$(RM) $@
	$(AWK) '{ print $$1, $$0 }' $(HOSTS) | while read key line; do \
		$(DBADD) $@ $$key "$$line"; \
	done || true


networks.byname:
	$(RM) $@
	$(AWK) '{ print $$1, $$0 }' $(NETWORKS) | while read key line; do \
		$(DBADD) $@ $$key "$$line"; \
	done || true

networks.byaddr:
	$(RM) $@
	$(AWK) '{ print $$2, $$0 }' $(NETWORKS) | while read key line; do \
		$(DBADD) $@ $$key "$$line"; \
	done || true


passwd.byname:
	$(RM) $@
	$(AWK) -F: '{ print $$1, $$0 }' $(PASSWD) | while read key line; do \
		$(DBADD) $@ $$key "$$line"; \
	done || true

passwd.byuid:
	$(RM) $@
	$(AWK) -F: '{ print $$3, $$0 }' $(PASSWD) | while read key line; do \
		$(DBADD) $@ $$key "$$line"; \
	done || true


protocols.bynumber:
	$(RM) $@
	$(AWK) '{ print $$2, $$0 }' $(PROTOCOLS) | while read key line; do \
		$(DBADD) $@ $$key "$$line"; \
	done || true

protocols.byname:
	$(RM) $@
	$(AWK) '{ print $$1, $$0 }' $(PROTOCOLS) | while read key line; do \
		$(DBADD) $@ $$key "$$line"; \
	done || true


rpc.byname:
	$(RM) $@
	$(AWK) '{ print $$1, $$0 }' $(RPC) | while read key line; do \
		$(DBADD) $@ $$key "$$line"; \
	done || true

rpc.bynumber:
	$(RM) $@
	$(AWK) '{ print $$2, $$0 }' $(RPC) | while read key line; do \
		$(DBADD) $@ $$key "$$line"; \
	done || true


shadow.byname:
	$(RM) $@
	$(AWK) -F: '{ print $$1, $$0 }' $(SHADOW) | while read key line; do \
		$(DBADD) $@ $$key "$$line"; \
	done || true
