11.23Sriastrad#	$NetBSD: Makefile.yp,v 1.23 2014/03/18 18:20:48 riastradh Exp $
21.1Sthorpej#
31.1Sthorpej# This is the YP Makefile, used to create and push YP maps.
41.1Sthorpej#
51.1Sthorpej
61.5Slukem# Invoke with NOPUSH != "" to prevent the maps from being yppushed upon rebuild
71.5Slukem#
81.5SlukemNOPUSH?=	""
91.5Slukem
101.5Slukem# Password maps in standard YP are insecure, because the pw_passwd
111.15Swiz# field is accessible by any user. FreeBSD, NetBSD and OpenBSD have
121.5Slukem# a common solution: a secure map (generated with makedbm -s) can
131.5Slukem# only be accessed by a client bound to a privileged port.
141.5Slukem#
151.8Slukem# Uncomment out the following if you need compatibility with
161.8Slukem# sites that don't support this feature.
171.7Slukem#
181.8Slukem#INSECURE?=	yes
191.5Slukem
201.19Schristos# Only include UID's >= ${MINUID} in the maps. Setting this to ~1000
211.19Schristos# and using uid's > 1000 for users allows heterogeneous system support
221.19Schristos# where low numbered uids and gids may have different meanings.
231.19SchristosMINUID?=	0
241.19SchristosMINGID?=	0
251.19Schristos
261.11Schristos# In addition, by adding shadow to the list of rules we support
271.11Schristos# linux and solaris type shadow maps.
281.5Slukem
291.5SlukemYPDBDIR=	/var/yp
301.5SlukemDIR=		/etc
311.5SlukemAMDDIR=		/etc/amd
321.17ShubertfAMDMAPS=	amd.home
331.17ShubertfDOMAIN=		${.CURDIR:T}
341.5Slukem
351.5SlukemAWK=		/usr/bin/awk
361.5SlukemCAT=		/bin/cat
371.5SlukemCP=		/bin/cp
381.5SlukemCUT=		/usr/bin/cut
391.5SlukemECHO=		/bin/echo
401.18SchristosEGREP=		/usr/bin/egrep
411.5SlukemMAKEDBM=	/usr/sbin/makedbm
421.5SlukemMAKEDBM_S=	${MAKEDBM} -s
431.5SlukemMKALIAS=	/usr/sbin/mkalias
441.5SlukemMKNETID=	/usr/sbin/mknetid
451.5SlukemREVNETGROUP=	/usr/sbin/revnetgroup
461.5SlukemRM=		/bin/rm
471.5SlukemSED=		/usr/bin/sed
481.5SlukemSENDMAIL=	/usr/sbin/sendmail
491.9SabsSORT=		/usr/bin/sort
501.5SlukemSTDETHERS=	/usr/sbin/stdethers
511.20SgrantSTDHOSTS=	/usr/sbin/stdhosts -n
521.5SlukemTOUCH=		/usr/bin/touch
531.5SlukemYPPUSH=		/usr/sbin/yppush
541.5Slukem
551.1Sthorpej
561.2Sthorpej# We have a rule for ypservers, but we don't build it by default, since
571.2Sthorpej# it seldom changes (only when slaves are added/deleted).
581.2Sthorpej
591.17Shubertfall: passwd aliases ${AMDMAPS} ethers group hosts ipnodes netgroup networks rpc services protocols netid
601.5Slukem
611.16Schristos__makedbmesc:	.USEBEFORE
621.16Schristos	if [ -f ${.ALLSRC} ]; then \
631.16Schristos		${SED} -e "s/#.*$$//" ${.ALLSRC} | \
641.16Schristos		${AWK} '{ \
651.16Schristos			if (NF == 0) \
661.16Schristos			    printf("\n"); \
671.16Schristos			else { \
681.16Schristos			    for (i = 1; i <= NF; i++) { \
691.16Schristos				if (i == NF) { \
701.16Schristos				    if (substr($$i, length($$i), 1) == "\\") { \
711.16Schristos					printf("%s", substr($$i, 1, \
721.16Schristos					    length($$i) - 1)); \
731.16Schristos				    } else \
741.16Schristos					printf("%s\n", $$i); \
751.16Schristos				} else \
761.16Schristos				    printf("%s ", $$i); \
771.16Schristos			    } \
781.16Schristos			} \
791.16Schristos		    }' | \
801.16Schristos		${SED} -e "/^[ \t]*$$/d" | \
811.16Schristos		${SORT} | ${MAKEDBM} - ${.ALLSRC:T}; \
821.16Schristos	fi
831.5Slukem
841.5Slukempasswd.time: ${DIR}/master.passwd
851.5Slukem	-@if [ -f ${.ALLSRC} ]; then \
861.5Slukem		umask 077 ; \
871.5Slukem		if [ "${INSECURE}" != "yes" ]; then \
881.5Slukem			${CAT} ${.ALLSRC} | ${CUT} -d: -f1-4,8-10 | \
891.19Schristos			${AWK} -v minuid=${MINUID} \
901.19Schristos			'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ \
911.19Schristos			{ if (minuid <= $$3) \
921.19Schristos			print $$1, $$1":*:"$$3":"$$4":"$$5":"$$6":"$$7 }' -|\
931.9Sabs			${SORT} | ${MAKEDBM} - passwd.byname; \
941.5Slukem			${CAT} ${.ALLSRC} | ${CUT} -d: -f1-4,8-10 |\
951.19Schristos			${AWK} -v minuid=${MINUID} \
961.19Schristos			'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ \
971.19Schristos			{ if (minuid <= $$3) \
981.19Schristos			print $$3, $$1":*:"$$3":"$$4":"$$5":"$$6":"$$7 }' -|\
991.9Sabs			${SORT} | ${MAKEDBM} - passwd.byuid; \
1001.5Slukem		else \
1011.5Slukem			${CAT} ${.ALLSRC} | ${CUT} -d: -f1-4,8-10 | \
1021.19Schristos			${AWK} -v minuid=${MINUID} \
1031.19Schristos			'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ \
1041.19Schristos			{ if (minuid <= $$3) \
1051.19Schristos			print $$1, $$0 }' - | ${SORT} | \
1061.9Sabs			${MAKEDBM} - passwd.byname; \
1071.5Slukem			${CAT} ${.ALLSRC} | ${CUT} -d: -f1-4,8-10 |\
1081.19Schristos			${AWK} -v minuid=${MINUID} \
1091.19Schristos			'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ \
1101.19Schristos			{ if (minuid <= $$3) \
1111.19Schristos			print $$3, $$0 }' - | ${SORT} | \
1121.9Sabs			${MAKEDBM} - passwd.byuid; \
1131.5Slukem		fi; \
1141.5Slukem		${CAT} ${.ALLSRC} | \
1151.22Shauke		${AWK} -v minuid=${MINUID} \
1161.22Shauke		'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ \
1171.22Shauke		{ if (minuid <= $$3) print $$1, $$0 }' - | ${SORT} | \
1181.9Sabs		${MAKEDBM_S} - master.passwd.byname; \
1191.5Slukem		${CAT} ${.ALLSRC} | \
1201.22Shauke		${AWK} -v minuid=${MINUID} \
1211.22Shauke		'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ \
1221.22Shauke		{ if (minuid <= $$3) print $$3, $$0 }' - | ${SORT} | \
1231.9Sabs		${MAKEDBM_S} - master.passwd.byuid; \
1241.5Slukem		${TOUCH} ${.TARGET}; \
1251.5Slukem		${ECHO} "updated passwd"; \
1261.5Slukem		if [ ! ${NOPUSH} ]; then \
1271.5Slukem			${YPPUSH} -d ${DOMAIN} passwd.byname; \
1281.5Slukem			${YPPUSH} -d ${DOMAIN} passwd.byuid; \
1291.5Slukem			${YPPUSH} -d ${DOMAIN} master.passwd.byname; \
1301.5Slukem			${YPPUSH} -d ${DOMAIN} master.passwd.byuid; \
1311.5Slukem			${ECHO} "pushed passwd"; \
1321.5Slukem		else \
1331.5Slukem			: ; \
1341.5Slukem		fi \
1351.5Slukem	else \
1361.5Slukem		${ECHO} "couldn't find ${.ALLSRC}"; \
1371.5Slukem	fi
1381.5Slukem
1391.11Schristos# XXX: This does not do modify/expire time correctly.
1401.11Schristosshadow.time: ${DIR}/master.passwd
1411.11Schristos	-@if [ -f ${.ALLSRC} ]; then \
1421.11Schristos		umask 077 ; \
1431.21Selad		${CAT} ${.ALLSRC} | ${CUT} -d: -f1-3 | \
1441.21Selad		${AWK} -v minuid=${MINUID} \
1451.21Selad		'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ \
1461.21Selad		{ if (minuid <= $$3) \
1471.21Selad		print $$1, $$1":"$$2":10779:0:99999:7:::" }' - | \
1481.12Schristos		${SORT} | ${MAKEDBM_S} - shadow.byname; \
1491.11Schristos		${TOUCH} ${.TARGET}; \
1501.11Schristos		${ECHO} "updated shadow"; \
1511.11Schristos		if [ ! ${NOPUSH} ]; then \
1521.11Schristos			${YPPUSH} -d ${DOMAIN} shadow.byname; \
1531.11Schristos			${ECHO} "pushed shadow"; \
1541.11Schristos		else \
1551.11Schristos			: ; \
1561.11Schristos		fi \
1571.11Schristos	else \
1581.11Schristos		${ECHO} "couldn't find ${.ALLSRC}"; \
1591.11Schristos	fi
1601.5Slukem
1611.13Sitojunaliases.time: ${DIR}/mail/aliases
1621.5Slukem	-@if [ -f ${.ALLSRC} ]; then \
1631.5Slukem		${CP} -p ${.ALLSRC} ${DOMAIN}-aliases; \
1641.5Slukem		${SENDMAIL} -bi -oA${PWD}/${DOMAIN}-aliases; \
1651.9Sabs		${MAKEDBM} -u ${DOMAIN}-aliases | ${SORT} | \
1661.18Schristos		${EGREP} -v '(YP_LAST_MODIFIED|YP_MASTER_NAME)' | \
1671.9Sabs		${MAKEDBM} - mail.aliases; \
1681.5Slukem		${MKALIAS} mail.aliases mail.byaddr; \
1691.5Slukem		${TOUCH} ${.TARGET}; \
1701.5Slukem		${RM} ${DOMAIN}-aliases.db ${DOMAIN}-aliases; \
1711.5Slukem		${ECHO} "updated aliases"; \
1721.5Slukem		if [ ! ${NOPUSH} ]; then \
1731.5Slukem			${YPPUSH} -d ${DOMAIN} mail.aliases; \
1741.5Slukem			${YPPUSH} -d ${DOMAIN} mail.byaddr; \
1751.5Slukem			${ECHO} "pushed aliases"; \
1761.5Slukem		else \
1771.5Slukem			: ; \
1781.5Slukem		fi \
1791.5Slukem	else \
1801.5Slukem		${ECHO} "couldn't find ${.ALLSRC}"; \
1811.5Slukem	fi
1821.5Slukem
1831.1Sthorpej
1841.17Shubertf.for MAP in ${AMDMAPS}
1851.17Shubertf${MAP}.time: ${AMDDIR}/${MAP} __makedbmesc
1861.5Slukem	-@if [ -f ${.ALLSRC} ]; then \
1871.5Slukem		${TOUCH} ${.TARGET}; \
1881.17Shubertf		${ECHO} "updated ${MAP}"; \
1891.5Slukem		if [ ! ${NOPUSH} ]; then \
1901.17Shubertf			${YPPUSH} -d ${DOMAIN} ${MAP}; \
1911.17Shubertf			${ECHO} "pushed ${MAP}"; \
1921.1Sthorpej		else \
1931.1Sthorpej			: ; \
1941.1Sthorpej		fi \
1951.1Sthorpej	else \
1961.5Slukem		${ECHO} "couldn't find ${.ALLSRC}"; \
1971.1Sthorpej	fi
1981.17Shubertf.endfor # AMDMAPS
1991.1Sthorpej
2001.1Sthorpej
2011.5Slukemethers.time: ${DIR}/ethers
2021.5Slukem	-@if [ -f ${.ALLSRC} ]; then \
2031.22Shauke		${STDETHERS} ${.ALLSRC} | \
2041.5Slukem		${AWK} 'BEGIN { FS="\t"; OFS="\t"; } { print $$1, $$0 }' | \
2051.9Sabs		${SORT} | ${MAKEDBM} - ethers.byaddr; \
2061.5Slukem		${STDETHERS} ${.ALLSRC} | \
2071.5Slukem		${AWK} 'BEGIN { FS="\t"; OFS="\t"; } { print $$2, $$0 }' | \
2081.9Sabs		${SORT} | ${MAKEDBM} - ethers.byname; \
2091.5Slukem		${TOUCH} ${.TARGET}; \
2101.5Slukem		${ECHO} "updated ethers"; \
2111.5Slukem		if [ ! ${NOPUSH} ]; then \
2121.5Slukem			${YPPUSH} -d ${DOMAIN} ethers.byaddr; \
2131.5Slukem			${YPPUSH} -d ${DOMAIN} ethers.byname; \
2141.5Slukem			${ECHO} "pushed ethers"; \
2151.1Sthorpej		else \
2161.1Sthorpej			: ; \
2171.1Sthorpej		fi \
2181.1Sthorpej	else \
2191.5Slukem		${ECHO} "couldn't find ${.ALLSRC}"; \
2201.1Sthorpej	fi
2211.1Sthorpej
2221.5Slukem
2231.5Slukemgroup.time: ${DIR}/group
2241.5Slukem	-@if [ -f ${.ALLSRC} ]; then \
2251.19Schristos		${AWK} -v mingid=${MINGID} \
2261.19Schristos		'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ \
2271.19Schristos		    { if (mingid <= $$3) print $$1, $$0 }' ${.ALLSRC} | \
2281.9Sabs		${SORT} | ${MAKEDBM} - group.byname; \
2291.19Schristos		${AWK} -v mingid=${MINGID} \
2301.19Schristos		'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ \
2311.19Schristos		    { if (mingid <= $$3) print $$3, $$0 }' ${.ALLSRC} | \
2321.9Sabs		${SORT} | ${MAKEDBM} - group.bygid; \
2331.5Slukem		${TOUCH} ${.TARGET}; \
2341.5Slukem		${ECHO} "updated group"; \
2351.5Slukem		if [ ! ${NOPUSH} ]; then \
2361.5Slukem			${YPPUSH} -d ${DOMAIN} group.byname; \
2371.5Slukem			${YPPUSH} -d ${DOMAIN} group.bygid; \
2381.5Slukem			${ECHO} "pushed group"; \
2391.1Sthorpej		else \
2401.1Sthorpej			: ; \
2411.1Sthorpej		fi \
2421.1Sthorpej	else \
2431.5Slukem		${ECHO} "couldn't find ${.ALLSRC}"; \
2441.1Sthorpej	fi
2451.1Sthorpej
2461.5Slukem
2471.10Sitojun# Solaris 8 does the following:
2481.10Sitojun# - /etc/hosts and hosts.{byname,byaddr} are IPv4 only.
2491.10Sitojun# - /etc/inet/ipnodes and ipnodes.{byname,byaddr} are used for protocol
2501.10Sitojun#   independent name-to-address mapping.
2511.10Sitojun#
2521.10Sitojun# For local name resolution, we made /etc/hosts protocol independent.
2531.10Sitojun# For NIS name resolution, we obey Solaris 8 practice.
2541.10Sitojun# - We keep hosts.{byname,byaddr} IPv4 only, to be friendly with Solaris 8
2551.10Sitojun#   clients.
2561.10Sitojun# - ipnodes.{byname,byaddr} is used for protocol independent mapping.
2571.10Sitojun# We generate all the mappings from /etc/hosts, for compatibility with NetBSD
2581.10Sitojun# local name resolution.
2591.10Sitojun#
2601.5Slukemhosts.time: ${DIR}/hosts
2611.5Slukem	-@if [ -f ${.ALLSRC} ]; then \
2621.22Shauke		${STDHOSTS} ${.ALLSRC} | \
2631.5Slukem		${AWK} '{for (i = 2; i <= NF; i++) print $$i, $$0 }' | \
2641.9Sabs		${SORT} | ${MAKEDBM} - hosts.byname; \
2651.5Slukem		${STDHOSTS} ${.ALLSRC} | \
2661.5Slukem		${AWK} 'BEGIN { OFS="\t"; } { print $$1, $$0 }' | \
2671.9Sabs		${SORT} | ${MAKEDBM} - hosts.byaddr; \
2681.5Slukem		${TOUCH} ${.TARGET}; \
2691.5Slukem		${ECHO} "updated hosts"; \
2701.5Slukem		if [ ! ${NOPUSH} ]; then \
2711.5Slukem			${YPPUSH} -d ${DOMAIN} hosts.byname; \
2721.5Slukem			${YPPUSH} -d ${DOMAIN} hosts.byaddr; \
2731.5Slukem			${ECHO} "pushed hosts"; \
2741.1Sthorpej		else \
2751.1Sthorpej			: ; \
2761.1Sthorpej		fi \
2771.1Sthorpej	else \
2781.5Slukem		${ECHO} "couldn't find ${.ALLSRC}"; \
2791.1Sthorpej	fi
2801.1Sthorpej
2811.5Slukem
2821.10Sitojunipnodes.time: ${DIR}/hosts
2831.10Sitojun	-@if [ -f ${.ALLSRC} ]; then \
2841.22Shauke		${STDHOSTS} -n ${.ALLSRC} | \
2851.10Sitojun		${AWK} '{for (i = 2; i <= NF; i++) print $$i, $$0 }' | \
2861.10Sitojun		${SORT} | ${MAKEDBM} - ipnodes.byname; \
2871.10Sitojun		${STDHOSTS} -n ${.ALLSRC} | \
2881.10Sitojun		${AWK} 'BEGIN { OFS="\t"; } { print $$1, $$0 }' | \
2891.10Sitojun		${SORT} | ${MAKEDBM} - ipnodes.byaddr; \
2901.10Sitojun		${TOUCH} ${.TARGET}; \
2911.10Sitojun		${ECHO} "updated ipnodes"; \
2921.10Sitojun		if [ ! ${NOPUSH} ]; then \
2931.10Sitojun			${YPPUSH} -d ${DOMAIN} ipnodes.byname; \
2941.10Sitojun			${YPPUSH} -d ${DOMAIN} ipnodes.byaddr; \
2951.10Sitojun			${ECHO} "pushed ipnodes"; \
2961.10Sitojun		else \
2971.10Sitojun			: ; \
2981.10Sitojun		fi \
2991.10Sitojun	else \
3001.10Sitojun		${ECHO} "couldn't find ${.ALLSRC}"; \
3011.10Sitojun	fi
3021.10Sitojun
3031.10Sitojun
3041.16Schristosnetgroup.time: ${DIR}/netgroup __makedbmesc
3051.5Slukem	-@if [ -f ${.ALLSRC} ]; then \
3061.5Slukem		${CAT} ${.ALLSRC} | ${REVNETGROUP} -u -f - | \
3071.9Sabs		${SORT} | ${MAKEDBM} - netgroup.byuser; \
3081.5Slukem		${CAT} ${.ALLSRC} | ${REVNETGROUP} -h -f - | \
3091.9Sabs		${SORT} | ${MAKEDBM} - netgroup.byhost; \
3101.5Slukem		${TOUCH} ${.TARGET}; \
3111.5Slukem		${ECHO} "updated netgroup"; \
3121.5Slukem		if [ ! ${NOPUSH} ]; then \
3131.5Slukem			${YPPUSH} -d ${DOMAIN} netgroup; \
3141.5Slukem			${YPPUSH} -d ${DOMAIN} netgroup.byuser; \
3151.5Slukem			${YPPUSH} -d ${DOMAIN} netgroup.byhost; \
3161.5Slukem			${ECHO} "pushed netgroup"; \
3171.1Sthorpej		else \
3181.1Sthorpej			: ; \
3191.1Sthorpej		fi \
3201.1Sthorpej	else \
3211.5Slukem		${ECHO} "couldn't find ${.ALLSRC}"; \
3221.1Sthorpej	fi
3231.1Sthorpej
3241.5Slukem
3251.5Slukemnetworks.time: ${DIR}/networks
3261.5Slukem	-@if [ -f ${.ALLSRC} ]; then \
3271.5Slukem		${SED} -e "/^#/d" -e s/#.*$$// ${.ALLSRC} | \
3281.5Slukem		${AWK} '{print $$1, $$0; \
3291.5Slukem		    for (i = 3;i <= NF;i++) print $$i,$$0}' | \
3301.9Sabs		${SORT} | ${MAKEDBM} - networks.byname; \
3311.5Slukem		${AWK} 'BEGIN { OFS="\t"; } $$1 !~ /^#/ { print $$2, $$0 }' \
3321.5Slukem		    ${.ALLSRC} | \
3331.9Sabs		${SORT} | ${MAKEDBM} - networks.byaddr; \
3341.5Slukem		${TOUCH} ${.TARGET}; \
3351.5Slukem		${ECHO} "updated networks"; \
3361.5Slukem		if [ ! ${NOPUSH} ]; then \
3371.5Slukem			${YPPUSH} -d ${DOMAIN} networks.byname; \
3381.5Slukem			${YPPUSH} -d ${DOMAIN} networks.byaddr; \
3391.5Slukem			${ECHO} "pushed networks"; \
3401.1Sthorpej		else \
3411.1Sthorpej			: ; \
3421.1Sthorpej		fi \
3431.1Sthorpej	else \
3441.5Slukem		${ECHO} "couldn't find ${.ALLSRC}"; \
3451.1Sthorpej	fi
3461.1Sthorpej
3471.1Sthorpej
3481.5Slukemprotocols.time: ${DIR}/protocols
3491.5Slukem	-@if [ -f ${.ALLSRC} ]; then \
3501.5Slukem		${AWK} 'BEGIN { OFS="\t"; } $$1 !~ /^#/ { print $$2, $$0 }' \
3511.5Slukem		    ${.ALLSRC} | \
3521.9Sabs		${SORT} | ${MAKEDBM} - protocols.bynumber; \
3531.5Slukem		${SED} -e "/^#/d" -e s/#.*$$// ${.ALLSRC} | \
3541.5Slukem		${AWK} '{print $$1, $$0; \
3551.5Slukem		    for (i = 3;i <= NF;i++) print $$i,$$0}' | \
3561.9Sabs		${SORT} | ${MAKEDBM} - protocols.byname; \
3571.5Slukem		${TOUCH} ${.TARGET}; \
3581.5Slukem		${ECHO} "updated protocols"; \
3591.5Slukem		if [ ! ${NOPUSH} ]; then \
3601.5Slukem			${YPPUSH} -d ${DOMAIN} protocols.bynumber; \
3611.5Slukem			${YPPUSH} -d ${DOMAIN} protocols.byname; \
3621.5Slukem			${ECHO} "pushed protocols"; \
3631.1Sthorpej		else \
3641.1Sthorpej			: ; \
3651.1Sthorpej		fi \
3661.1Sthorpej	else \
3671.5Slukem		${ECHO} "couldn't find ${.ALLSRC}"; \
3681.1Sthorpej	fi
3691.1Sthorpej
3701.1Sthorpej
3711.5Slukemrpc.time: ${DIR}/rpc
3721.5Slukem	-@if [ -f ${.ALLSRC} ]; then \
3731.5Slukem		${AWK} 'BEGIN { OFS="\t"; } $$1 !~ /^#/ { print $$2, $$0 }' \
3741.5Slukem		    ${.ALLSRC} | \
3751.9Sabs		${SORT} | ${MAKEDBM} - rpc.bynumber; \
3761.5Slukem		${TOUCH} ${.TARGET}; \
3771.5Slukem		${ECHO} "updated rpc"; \
3781.5Slukem		if [ ! ${NOPUSH} ]; then \
3791.5Slukem			${YPPUSH} -d ${DOMAIN} rpc.bynumber; \
3801.5Slukem			${ECHO} "pushed rpc"; \
3811.1Sthorpej		else \
3821.1Sthorpej			: ; \
3831.1Sthorpej		fi \
3841.1Sthorpej	else \
3851.5Slukem		${ECHO} "couldn't find ${.ALLSRC}"; \
3861.1Sthorpej	fi
3871.1Sthorpej
3881.1Sthorpej
3891.5Slukemservices.time: ${DIR}/services
3901.5Slukem	-@if [ -f ${.ALLSRC} ]; then \
3911.5Slukem		${AWK} 'BEGIN { OFS="\t"; } $$1 !~ /^#/ { print $$2, $$0 }' \
3921.5Slukem		    ${.ALLSRC} | \
3931.9Sabs		${SORT} | ${MAKEDBM} - services.byname; \
3941.5Slukem		${TOUCH} ${.TARGET}; \
3951.5Slukem		${ECHO} "updated services"; \
3961.5Slukem		if [ ! ${NOPUSH} ]; then \
3971.5Slukem			${YPPUSH} -d ${DOMAIN} services.byname; \
3981.5Slukem			${ECHO} "pushed services"; \
3991.5Slukem		else \
4001.5Slukem			: ; \
4011.5Slukem		fi \
4021.5Slukem	else \
4031.5Slukem		${ECHO} "couldn't find ${.ALLSRC}"; \
4041.5Slukem	fi
4051.5Slukem
4061.5Slukem
4071.5Slukemnetid.time: ${DIR}/passwd ${DIR}/group ${DIR}/hosts ${DIR}/netid
4081.5Slukem	-@${MKNETID} -q -d ${DOMAIN} -p ${DIR}/passwd -g ${DIR}/group -h \
4091.5Slukem	      ${DIR}/hosts -m ${DIR}/netid | \
4101.9Sabs	  ${SORT} | ${MAKEDBM} - netid.byname; \
4111.5Slukem	  ${TOUCH} ${.TARGET}; \
4121.5Slukem	  ${ECHO} "updated netid"; \
4131.5Slukem	  if [ ! ${NOPUSH} ]; then \
4141.5Slukem		${YPPUSH} -d ${DOMAIN} netid.byname; \
4151.5Slukem		${ECHO} "pushed netid"; \
4161.1Sthorpej	  else \
4171.1Sthorpej		: ; \
4181.1Sthorpej	  fi
4191.1Sthorpej
4201.5Slukem
4211.6Slukemypservers.time: ${.CURDIR}/ypservers
4221.6Slukem	-@${MAKEDBM} ypservers ypservers; \
4231.6Slukem	${TOUCH} ${.TARGET}; \
4241.5Slukem	${ECHO} "updated ypservers"; \
4251.5Slukem	if [ ! ${NOPUSH} ]; then \
4261.5Slukem		${YPPUSH} -d ${DOMAIN} ypservers; \
4271.5Slukem		${ECHO} "pushed ypservers"; \
4281.2Sthorpej	else \
4291.2Sthorpej		: ; \
4301.2Sthorpej	fi
4311.1Sthorpej
4321.5Slukem
4331.1Sthorpejpasswd: passwd.time
4341.1Sthorpejgroup: group.time
4351.1Sthorpejhosts: hosts.time
4361.10Sitojunipnodes: ipnodes.time
4371.5Slukemaliases: aliases.time
4381.17Shubertf.for MAP in ${AMDMAPS}
4391.17Shubertf${MAP}: ${MAP}.time
4401.17Shubertf.endfor # AMDMAPS
4411.1Sthorpejethers: ethers.time
4421.5Slukemnetgroup: netgroup.time
4431.1Sthorpejnetworks: networks.time
4441.1Sthorpejrpc: rpc.time
4451.1Sthorpejservices: services.time
4461.11Schristosshadow: shadow.time
4471.1Sthorpejprotocols: protocols.time
4481.1Sthorpejnetid: netid.time
4491.6Slukemypservers: ypservers.time
4501.5Slukem
4511.5Slukem${DIR}/passwd:
4521.5Slukem${DIR}/group:
4531.5Slukem${DIR}/hosts:
4541.13Sitojun${DIR}/mail/aliases:
4551.17Shubertf.for MAP in ${AMDMAPS}
4561.17Shubertf${AMDDIR}/${MAP}:
4571.17Shubertf.endfor # AMDMAPS
4581.5Slukem${DIR}/ethers:
4591.5Slukem${DIR}/master.passwd:
4601.5Slukem${DIR}/netgroup:
4611.5Slukem${DIR}/networks:
4621.5Slukem${DIR}/rpc:
4631.5Slukem${DIR}/services:
4641.5Slukem${DIR}/protocols:
4651.5Slukem${DIR}/netid:
466