# # Copyright 1988 - 1994, Julianne Frances Haugh # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # 3. Neither the name of Julianne F. Haugh nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # # %W% %U% - Shadow password system (Linux) # # $Id: Makefile.linux,v 1.2 1997/05/01 23:11:54 marekm Exp $ # SHELL = /bin/sh # # Set this flag to decide what level of code "get" returns. # The base USENET release was release 1. It is no longer supported. # The version with the utilities added was release 2. It is now unsupported. # The version with database-like file access is release 3. RELEASE = 3 VERSION = ver3.3.2 GFLAGS = -n $(VERSION) GET = get_file # Define the directory login is copied to. Linux uses /bin. LOGINDIR = /bin # Define any special libraries required to access the directory routines. # Linux does not use any special libraries. NDIR = # Define some stuff for Cracklib. This assumes that libcracklib.a is # in a system directory. # Add -DPWC_HIST to check password history using TS&SzS cracklib # CRACKDEF='-DUSE_CRACKLIB' # CRACKLIB=-lcrack # Pick your favorite C compiler and tags command CC = gcc TAGS = ctags # OS. This is Linux. OS = -DUSG -DLINUX # Do you have to do ranlib (probably SUN, BSD and XENIX)? RANLIB = ranlib # RANLIB = echo # Configuration Flags # # DEST_INCLUDE_DIR - local include files # LIBS - system libraries # -lsocket - needed for TCP/IP and possibly SYSLOG # -ldbm or -lndbm - needed for DBM support # -lcrypt - needed for SCO crypt() functions # CFLAGS - C compiler flags # -DLAI_TCP - needed for SCO Xenix Lachman TCP/IP prefix=/ exec_prefix=$(prefix) bindir=$(exec_prefix)/bin sbindir=$(exec_prefix)/sbin usrbindir=$(exec_prefix)/usr/bin usrsbindir=$(exec_prefix)/usr/sbin includedir=$(prefix)/usr/include libdir=$(prefix)/usr/lib mandir=$(prefix)/usr/man man1dir=$(mandir)/man1 man3dir=$(mandir)/man3 man4dir=$(mandir)/man4 man5dir=$(mandir)/man5 man8dir=$(mandir)/man8 login_perms=-m755 # If you need "exec login", comment out the above line and uncomment below #login_perms=-m4755 #DEST_INCLUDE_DIR = /usr/local/include DEST_INCLUDE_DIR = $(includedir) # Dirty hack to avoid name collisions (programs linked with libshadow # could have their own xmalloc/xstrdup, these names are quite common). # Don't look. --marekm #HACK = -Dxmalloc=libshadow_xmalloc -Dxstrdup=libshadow_xstrdup # Flags for Linux CFLAGS = -O2 -fomit-frame-pointer -Wall $(CRACKDEF) $(OS) $(HACK) LIBS = #-ldbm #-lskey #LIBSHADOW = libshadow.a LIBSHADOW = shlib/libshadow.so STATIC = -static LDFLAGS = -s LTFLAGS = # Where the login.defs file will be copied. Must agree with config.h DEST_LOGIN_DEFS = /etc/login.defs # Rules for .L (lint) files. .SUFFIXES: .L LINT = lint LINTFLAGS = $(OS) -Dlint .c.L: $(LINT) -pxu $(LINTFLAGS) $*.c > $*.L LOBJS = lmain.o login.o env.o valid.o setup.o shell.o age.o \ utmp.o sub.o mail.o motd.o log.o ttytype.o failure.o \ tz.o console.o hushed.o login_access.o setugid.o \ chowntty.o ulimit.o LSRCS = lmain.c login.c env.c valid.c setup.c shell.c age.c \ utmp.c sub.c mail.c motd.c log.c ttytype.c failure.c \ tz.c console.c hushed.c login_access.c setugid.c \ chowntty.c ulimit.c SOBJS = smain.o env.o entry.o setup.o shell.o \ sub.o mail.o motd.o sulog.o age.o tz.o hushed.o setugid.o \ suauth.o console.o ulimit.o SSRCS = smain.c env.c entry.c setup.c shell.c \ pwent.c sub.c mail.c motd.c sulog.c shadow.c age.c pwpack.c rad64.c \ tz.c hushed.c setugid.c suauth.c console.c ulimit.c POBJS = passwd.o obscure.o ulimit.o PSRCS = passwd.c obscure.c ulimit.c GPSRCS = gpmain.c GPOBJS = gpmain.o PWOBJS = pwconv.o PWSRCS = pwconv.c pwent.c shadow.c pwpack.c rad64.c PWUNOBJS = pwunconv.o PWUNSRCS = pwunconv.c pwent.c shadow.c pwpack.c rad64.c SULOGOBJS = sulogin.o entry.o env.o age.o setup.o \ valid.o shell.o tz.o setugid.o ulimit.o SULOGSRCS = sulogin.c entry.c env.c age.c pwent.c setup.c \ shadow.c shell.c valid.c pwpack.c tz.c setugid.c ulimit.c MKPWDOBJS = mkpasswd.o MKPWDSRCS = mkpasswd.c NGSRCS = newgrp.c env.c shell.c NGOBJS = newgrp.o env.o shell.o CHFNSRCS = chfn.c fields.c ulimit.c CHFNOBJS = chfn.o fields.o ulimit.o CHSHSRCS = chsh.c fields.c ulimit.c CHSHOBJS = chsh.o fields.o ulimit.o CHAGEOBJS = chage.o fields.o CHAGESRCS = chage.c fields.c CHPASSOBJS = chpasswd.o CHPASSSRCS = chpasswd.c DPSRCS = dpmain.c DPOBJS = dpmain.o ALLSRCS = age.c dialchk.c dialup.c entry.c env.c lmain.c log.c login.c mail.c \ motd.c obscure.c passwd.c pwconv.c pwent.c pwunconv.c getpass.c \ setup.c shadow.c shell.c smain.c sub.c sulog.c sulogin.c ttytype.c \ utmp.c valid.c port.c newgrp.c gpmain.c grent.c mkpasswd.c pwpack.c \ chfn.c chsh.c chage.c rad64.c encrypt.c chpasswd.c shadowio.c pwio.c \ newusers.c groupio.c fields.c pwdbm.c grpack.c grdbm.c sppack.c \ spdbm.c dpmain.c gshadow.c gsdbm.c gspack.c sgroupio.c useradd.c \ userdel.c patchlevel.h usermod.c copydir.c mkrmdir.c groupadd.c \ groupdel.c groupmod.c tz.c console.c hushed.c getdef.c scologin.c \ logoutd.c groups.c pwauth.c lockpw.c chowndir.c rename.c FILES1 = LICENSE README patchlevel.h newgrp.c Makefile config.h pwunconv.c obscure.c \ age.c id.c FILES2 = passwd.c port.c lmain.c sulogin.c pwpack.c dialup.c expiry.c \ gshadow.h FILES3 = chfn.c chsh.c smain.c faillog.c pwconv.c shadow.c pwck.c utent.c FILES4 = gpmain.c chage.c pwent.c valid.c setup.c entry.c ttytype.c port.h FILES5 = pwio.c encrypt.c chpasswd.c newusers.c rad64.c dialchk.c faillog.h \ pwdbm.c grdbm.c gshadow.c sppack.c grpck.c FILES6 = gspack.c spdbm.c lastlog.h shell.c login.c sub.c dpmain.c mail.c \ env.c pwd.h.m4 grpack.c shadow.h log.c grent.c motd.c dialup.h \ fields.c gsdbm.c utmp.c failure.c FILES7 = groupio.c shadowio.c sgroupio.c groups.c copydir.c mkrmdir.c \ mkpasswd.c pwauth.c pwauth.h lastlog.c FILES8 = useradd.c usermod.c login.defs rename.c FILES9 = groupadd.c groupdel.c groupmod.c tz.c console.c hushed.c getdef.c \ scologin.c logoutd.c sulog.c getpass.c userdel.c lockpw.c chowndir.c FILES_SUN4 = Makefile.sun4 README.sun4 config.h.sun4 FILES_SVR4 = Makefile.svr4 config.h.svr4 FILES_LINUX = Makefile.linux config.h.linux MAN_1 = chage.1 chfn.1 chsh.1 id.1 login.1 newgrp.1 passwd.1 su.1 \ useradd.1 userdel.1 usermod.1 groupadd.1 groupdel.1 groupmod.1 \ groups.1 pwck.1 grpck.1 MAN_3 = shadow.3 pwauth.3 MAN_4 = # faillog.4 passwd.4 porttime.4 shadow.4 MAN_5 = login.5 faillog.5 passwd.5 porttime.5 shadow.5 MAN_8 = chpasswd.8 dpasswd.8 faillog.8 newusers.8 pwconv.8 pwunconv.8 \ sulogin.8 mkpasswd.8 logoutd.8 pwauth.8 lastlog.8 DOCS1 = $(MAN_1) $(MAN_3) $(MAN_4) DOCS2 = $(MAN_5) $(MAN_8) DOCS = $(DOCS1) $(DOCS2) BINS = su login login-static pwconv pwunconv passwd sulogin faillog newgrp \ sg gpasswd mkpasswd chfn chsh chage chpasswd newusers dpasswd id \ useradd userdel usermod groupadd groupdel groupmod $(SCOLOGIN) \ logoutd groups pwck grpck lastlog expiry all: Linux $(BINS) $(DOCS) # # Linux has its own /usr/include/shadow.h. Use it instead. # SHADOW = /usr/include/shadow.h PWD = /usr/include/pwd.h Linux: -mv shadow.h oldshadow.h touch Linux $(BINS): Linux .PRECIOUS: libshadow.a LIBOBJS = dialchk.o dialup.o encrypt.o salt.o md5crypt.o md5.o getdef.o \ getpass.o commonio.o grdbm.o grent.o groupio.o grpack.o gshadow.o \ gsdbm.o gspack.o sgroupio.o port.o pwdbm.o pwent.o pwio.o pwpack.o \ pwauth.o rad64.o spdbm.o shadow.o shadowio.o sppack.o lockpw.o \ rename.o utent.o list.o strtoday.o basename.o isexpired.o xmalloc.o libshadow.a: $(LIBOBJS) $(AR) rc libshadow.a $^ $(RANLIB) libshadow.a shlib/libshadow.so: $(LIBOBJS) cd shlib && \ $(MAKE) CC=$(CC) CFLAGS="$(CFLAGS)" LIBOBJS="$(LIBOBJS)" libshadow.so old-libshadow.a: \ libshadow.a(dialchk.o) \ libshadow.a(dialup.o) \ libshadow.a(encrypt.o) \ libshadow.a(salt.o) \ libshadow.a(md5crypt.o) \ libshadow.a(md5.o) \ libshadow.a(getdef.o) \ libshadow.a(getpass.o) \ libshadow.a(commonio.o) \ libshadow.a(grdbm.o) \ libshadow.a(grent.o) \ libshadow.a(groupio.o) \ libshadow.a(grpack.o) \ libshadow.a(gshadow.o) \ libshadow.a(gsdbm.o) \ libshadow.a(gspack.o) \ libshadow.a(sgroupio.o) \ libshadow.a(port.o) \ libshadow.a(pwdbm.o) \ libshadow.a(pwent.o) \ libshadow.a(pwio.o) \ libshadow.a(pwpack.o) \ libshadow.a(pwauth.o) \ libshadow.a(rad64.o) \ libshadow.a(spdbm.o) \ libshadow.a(shadow.o) \ libshadow.a(shadowio.o) \ libshadow.a(sppack.o) \ libshadow.a(lockpw.o) \ libshadow.a(rename.o) \ libshadow.a(utent.o) \ libshadow.a(list.o) \ libshadow.a(strtoday.o) \ libshadow.a(basename.o) \ libshadow.a(isexpired.o) \ libshadow.a(xmalloc.o) $(RANLIB) libshadow.a # these two (from the original Makefile) don't work on Linux, see below # #save: # [ ! -d save ] && mkdir save # -cp $(LOGINDIR)/login save # -cp /etc/mkpasswd /etc/pwconv /etc/pwunconv /etc/sulogin /etc/chpasswd \ # /etc/newusers /etc/useradd /etc/userdel /etc/usermod \ # /etc/groupadd /etc/groupdel /etc/groupmod /etc/logoutd \ # /etc/login.defs /etc/pwck /etc/grpck /bin/expiry save # -cp /bin/su /bin/passwd /bin/gpasswd /bin/dpasswd /bin/faillog \ # /bin/newgrp /bin/chfn /bin/chsh /bin/chage /bin/id \ # /bin/scologin save # -cp $(DEST_INCLUDE_DIR)/dialup.h $(DEST_INCLUDE_DIR)/gshadow.h save # #restore: # [ -d save ] # -(cd save ; cp login $(LOGINDIR) ) # -(cd save ; -cp mkpasswd pwconv pwunconv sulogin chpasswd \ # newusers useradd userdel usermod groupadd groupdel groupmod \ # logoutd login.defs pwck grpck /etc) # -(cd save ; cp su passwd gpasswd dpasswd faillog newgrp chfn chsh \ # chage id scologin expiry /bin) # -(cd save ; cp gshadow.h dialup.h $(DEST_INCLUDE_DIR) ) # automatic pathnames detection, thanks to Rafal Maszkowski # (not tested by me; it is best to have a good backup anyway... --marekm) save: -( [ ! -d save ] && mkdir save ) -( whereis -b id groups chfn chsh chage login login-static sulogin \ newusers useradd userdel usermod groupadd groupdel \ groupmod pwck grpck lastlog faillog dpasswd chpasswd \ logoutd mkpasswd pwconv pwunconv su passwd gpasswd \ newgrp expiry | awk '{if ($$2!="") print $$2}' > save/list ) -( cat save/list | awk '{print "cp -p", $$1, "save"}' | sh ) -cp -p /etc/login.defs save -cp -p $(includedir)/dialup.h $(includedir)/gshadow.h save -cp -p $(libdir)/libshadow.a save restore: [ -d save ] -( cd save ; cp -p login.defs /etc ; \ cp -p dialup.h gshadow.h $(includedir) ; \ cp -p libshadow.a $(libdir) ) -( cat save/list | awk '{ last=split($$1,comp,"/"); print "cp -p", comp[last], $$1}' | sh) install: all test -f /etc/login.defs || cp login.defs.linux $(DEST_LOGIN_DEFS) install -d $(man1dir) install -d $(man3dir) # install -d $(man4dir) install -d $(man5dir) install -d $(man8dir) install -d $(usrbindir) install -d $(usrsbindir) install -d $(LOGINDIR) install -d $(bindir) install -d $(includedir) install -d $(libdir) install -m 644 $(MAN_1) $(man1dir)/ install -m 644 $(MAN_3) $(man3dir)/ # install -m 644 $(MAN_4) $(man4dir)/ install -m 644 $(MAN_5) $(man5dir)/ install -m 644 $(MAN_8) $(man8dir)/ # install -m 755 id groups $(usrbindir)/ install -m 4755 chfn chsh chage $(usrbindir)/ install $(login_perms) login $(LOGINDIR)/login # install $(login_perms) login-static $(LOGINDIR)/login-static install -m 755 sulogin $(sbindir)/sulogin install -m 755 newusers \ useradd userdel usermod groupadd groupdel groupmod \ pwck grpck lastlog faillog dpasswd \ chpasswd logoutd mkpasswd pwconv pwunconv $(usrsbindir)/ install -m 4755 su $(bindir)/ install -m 4755 passwd gpasswd newgrp expiry $(usrbindir)/ ln -sf $(usrbindir)/newgrp $(bindir)/sg install -m 644 gshadow.h dialup.h $(includedir)/ install -m 644 libshadow.a $(libdir)/ $(RANLIB) $(libdir)/libshadow.a lint: su.lint login.lint pwconv.lint pwunconv.lint passwd.lint sulogin.lint \ faillog.lint newgrp.lint gpasswd.lint mkpasswd.lint chfn.lint \ chsh.lint chage.lint dpasswd.lint id.lint useradd.lint userdel.lint \ usermod.lint groupadd.lint groupdel.lint groupmod.lint logoutd.lint \ pwck.lint grpck.lint expiry.lint \ $(ALLSRCS:.c=.L) tags: $(ALLSRCS) $(TAGS) $(ALLSRCS) README: [ -f s.README ] && $(GET) $(GFLAGS) s.README $(DOCS): [ -f s.$@ ] && $(GET) $(GFLAGS) s.$@ login.defs: [ -f s.login.defs ] && $(GET) $(GFLAGS) s.login.defs Makefile.sun4: [ -f s.Makefile.sun4 ] && $(GET) $(GFLAGS) s.Makefile.sun4 Makefile.svr4: [ -f s.Makefile.svr4 ] && $(GET) $(GFLAGS) s.Makefile.svr4 README.sun4: [ -f s.README.sun4 ] && $(GET) $(GFLAGS) s.README.sun4 config.h.sun4: [ -f s.config.h.sun4 ] && $(GET) $(GFLAGS) s.config.h.sun4 config.h.svr4: [ -f s.config.h.svr4 ] && $(GET) $(GFLAGS) s.config.h.svr4 login: $(LOBJS) $(LIBSHADOW) $(CC) -o login $(LDFLAGS) $(LOBJS) $(LIBSHADOW) $(LIBS) login-static: $(LOBJS) libshadow.a $(CC) -o login-static $(STATIC) $(LDFLAGS) $(LOBJS) $(LIBSHADOW) $(LIBS) login.lint: $(LSRCS) $(LINT) $(LINTFLAGS) $(LSRCS) > login.lint su: $(SOBJS) $(LIBSHADOW) $(CC) -o su $(LDFLAGS) $(SOBJS) $(LIBSHADOW) $(LIBS) su.lint: $(SSRCS) $(LINT) $(LINTFLAGS) -DSU $(SSRCS) > su.lint passwd: $(POBJS) $(LIBSHADOW) $(CC) -o passwd $(LDFLAGS) $(POBJS) $(LIBSHADOW) $(LIBS) $(CRACKLIB) passwd.lint: $(PSRCS) $(LINT) $(LINTFLAGS) -DPASSWD $(PSRCS) > passwd.lint gpasswd: $(GPOBJS) $(LIBSHADOW) $(CC) -o gpasswd $(LDFLAGS) $(GPOBJS) $(LIBSHADOW) $(LIBS) gpasswd.lint: $(GPSRCS) $(LINT) $(LINTFLAGS) $(GPSRCS) > gpasswd.lint dpasswd: $(DPOBJS) $(LIBSHADOW) $(CC) -o dpasswd $(LDFLAGS) $(DPOBJS) $(LIBSHADOW) $(LIBS) dpasswd.lint: $(DPSRCS) $(LINT) $(LINTFLAGS) $(DPSRCS) > dpasswd.lint pwconv: $(PWOBJS) $(LIBSHADOW) config.h $(CC) -o pwconv $(LDFLAGS) $(PWOBJS) $(LIBSHADOW) $(LIBS) pwconv.lint: $(PWSRCS) config.h $(LINT) $(LINTFLAGS) -DPASSWD $(PWSRCS) > pwconv.lint pwunconv: $(PWUNOBJS) $(LIBSHADOW) config.h $(CC) -o pwunconv $(LDFLAGS) $(PWUNOBJS) $(LIBSHADOW) $(LIBS) pwunconv.lint: $(PWUNSRCS) $(LINT) $(LINTFLAGS) -DPASSWD $(PWUNSRCS) > pwunconv.lint sulogin: $(SULOGOBJS) $(LIBSHADOW) $(CC) -o sulogin $(LDFLAGS) $(SULOGOBJS) $(LIBSHADOW) $(LIBS) sulogin.lint: $(SULOGSRCS) $(LINT) $(LINTFLAGS) $(SULOGSRCS) > sulogin.lint faillog: faillog.o $(CC) -o faillog $(LDFLAGS) faillog.o $(LIBS) faillog.lint: faillog.c faillog.h config.h $(LINT) $(LINTFLAGS) faillog.c > faillog.lint lastlog: lastlog.o $(CC) -o lastlog $(LDFLAGS) lastlog.o $(LIBS) lastlog.lint: lastlog.c config.h lastlog.h $(LINT) $(LINTFLAGS) $(MKPWDSRCS) > lastlog.lint mkpasswd: $(MKPWDOBJS) $(LIBSHADOW) $(CC) -o mkpasswd $(LDFLAGS) $(MKPWDOBJS) $(LIBSHADOW) $(LIBS) mkpasswd.lint: $(MKPWDSRCS) $(LINT) $(LINTFLAGS) $(MKPWDSRCS) > mkpasswd.lint newgrp: $(NGOBJS) $(LIBSHADOW) $(CC) -o newgrp $(LDFLAGS) $(NGOBJS) $(LIBSHADOW) $(LIBS) newgrp.lint: $(NGSRCS) $(LINT) $(LINTFLAGS) $(NGSRCS) > newgrp.lint sg: newgrp rm -f sg ln newgrp sg sg.lint: newgrp.lint ln newgrp.lint sg.lint chfn: $(CHFNOBJS) $(LIBSHADOW) $(CC) -o chfn $(LDFLAGS) $(CHFNOBJS) $(LIBSHADOW) $(LIBS) chfn.lint: $(CHFNSRCS) $(LINT) $(LINTFLAGS) $(CHFNSRCS) > chfn.lint chsh: $(CHSHOBJS) $(LIBSHADOW) $(CC) -o chsh $(LDFLAGS) $(CHSHOBJS) $(LIBSHADOW) $(LIBS) chsh.lint: $(CHSHSRCS) $(LINT) $(LINTFLAGS) $(CHSHSRCS) > chsh.lint chage: $(CHAGEOBJS) $(LIBSHADOW) $(CC) -o chage $(LDFLAGS) $(CHAGEOBJS) $(LIBSHADOW) $(LIBS) chage.lint: $(CHAGESRCS) $(LINT) $(LINTFLAGS) -DPASSWD $(CHAGESRCS) > chage.lint chpasswd: $(CHPASSOBJS) $(LIBSHADOW) $(CC) -o chpasswd $(LDFLAGS) $(CHPASSOBJS) $(LIBSHADOW) $(LIBS) chpasswd.lint: $(CHPASSSRCS) $(LINT) $(LINTFLAGS) $(CHPASSSRCS) > chpasswd.lint newusers: newusers.o $(LIBSHADOW) $(CC) -o newusers $(LDFLAGS) newusers.o $(LIBSHADOW) $(LIBS) newusers.lint: newusers.c $(LINT) $(LINTFLAGS) newusers.c > newusers.lint id: id.o $(LIBSHADOW) $(CC) -o id $(LDFLAGS) id.o $(LIBSHADOW) $(LIBS) id.lint: id.c $(LINT) $(LINTFLAGS) id.c > id.lint groups: groups.o $(LIBSHADOW) $(CC) -o groups $(LDFLAGS) groups.o $(LIBSHADOW) $(LIBS) groups.lint: groups.c $(LINT) $(LINTFLAGS) groups.c > groups.lint useradd: useradd.o copydir.o mkrmdir.o $(LIBSHADOW) $(CC) -o useradd $(LDFLAGS) useradd.o copydir.o mkrmdir.o \ $(LIBSHADOW) $(LIBS) $(NDIR) useradd.lint: useradd.c copydir.c mkrmdir.c $(LINT) $(LINTFLAGS) useradd.c copydir.c mkrmdir.c > useradd.lint userdel: userdel.o copydir.o mkrmdir.o $(LIBSHADOW) $(CC) -o userdel $(LDFLAGS) userdel.o copydir.o mkrmdir.o \ $(LIBSHADOW) $(LIBS) $(NDIR) userdel.lint: userdel.c copydir.c mkrmdir.c $(LINT) $(LINTFLAGS) userdel.c copydir.c mkrmdir.c > userdel.lint usermod: usermod.o copydir.o mkrmdir.o chowndir.o $(LIBSHADOW) $(CC) -o usermod $(LDFLAGS) usermod.o copydir.o mkrmdir.o \ chowndir.o $(LIBSHADOW) $(LIBS) $(NDIR) usermod.lint: usermod.c copydir.c mkrmdir.c chowndir.c $(LINT) $(LINTFLAGS) usermod.c copydir.c mkrmdir.c \ chowndir.c > usermod.lint groupadd: groupadd.o chkgname.o $(LIBSHADOW) $(CC) -o groupadd $(LDFLAGS) groupadd.o chkgname.o $(LIBSHADOW) $(LIBS) groupadd.lint: groupadd.c $(LINT) $(LINTFLAGS) groupadd.c > groupadd.lint groupdel: groupdel.o $(LIBSHADOW) $(CC) -o groupdel $(LDFLAGS) groupdel.o $(LIBSHADOW) $(LIBS) groupdel.lint: groupdel.c $(LINT) $(LINTFLAGS) groupdel.c > groupdel.lint groupmod: groupmod.o chkgname.o $(LIBSHADOW) $(CC) -o groupmod $(LDFLAGS) groupmod.o chkgname.o $(LIBSHADOW) $(LIBS) groupmod.lint: groupmod.c $(LINT) $(LINTFLAGS) groupmod.c > groupmod.lint logoutd: logoutd.o $(LIBSHADOW) $(CC) -o logoutd $(LDFLAGS) logoutd.o $(LIBSHADOW) logoutd.lint: logoutd.c $(LINT) $(LINTFLAGS) logoutd.c > logoutd.lint pwck: pwck.o $(LIBSHADOW) $(CC) -o pwck $(LDFLAGS) pwck.o $(LIBSHADOW) $(LIBS) pwck.lint: pwck.c $(LINT) $(LINTFLAGS) pwck.c > pwck.lint grpck: grpck.o $(LIBSHADOW) $(CC) -o grpck $(LDFLAGS) grpck.o $(LIBSHADOW) $(LIBS) grpck.lint: grpck.c $(LINT) $(LINTFLAGS) grpck.c > grpck.lint expiry: expiry.o age.o setugid.o $(LIBSHADOW) $(CC) -o expiry $(LDFLAGS) expiry.o age.o setugid.o $(LIBSHADOW) $(LIBS) expiry.lint: expiry.c $(LINT) $(LINTFLAGS) expiry.c > expiry.lint sulog.o: config.h scologin: scologin.o $(CC) -o scologin $(LDFLAGS) scologin.o -lsocket passwd.o: config.h $(SHADOW) $(PWD) pwauth.h lmain.o: config.h lastlog.h faillog.h $(PWD) pwauth.h smain.o: config.h lastlog.h $(PWD) $(SHADOW) pwauth.h sub.o: $(PWD) setup.o: config.h $(PWD) mkrmdir.o: config.h utmp.o: config.h mail.o: config.h motd.o: config.h age.o: config.h gshadow.h $(PWD) log.o: config.h lastlog.h $(PWD) lastlog.o: lastlog.h shell.o: config.h entry.o: config.h $(SHADOW) $(PWD) hushed.o: config.h $(PWD) valid.o: config.h $(PWD) failure.o: faillog.h config.h faillog.o: faillog.h config.h $(PWD) newgrp.o: config.h gshadow.h $(SHADOW) $(PWD) mkpasswd.o: config.h gshadow.h $(SHADOW) $(PWD) gpmain.o: config.h gshadow.h $(PWD) chfn.o: config.h $(PWD) chsh.o: config.h $(PWD) chage.o: config.h $(SHADOW) $(PWD) pwconv.o: config.h $(SHADOW) pwunconv.o: config.h $(SHADOW) $(PWD) chpasswd.o: config.h $(SHADOW) $(PWD) id.o: $(PWD) newusers.o: config.h $(SHADOW) $(PWD) dpmain.o: config.h dialup.h useradd.o: config.h gshadow.h $(SHADOW) $(PWD) pwauth.h userdel.o: config.h gshadow.h $(SHADOW) $(PWD) pwauth.h usermod.o: config.h gshadow.h $(SHADOW) $(PWD) pwauth.h groupadd.o: config.h gshadow.h groupdel.o: config.h gshadow.h groupmod.o: config.h gshadow.h logoutd.o: config.h sulogin.o: config.h pwauth.h copydir.o: config.h chowndir.o: config.h pwck.o: config.h $(SHADOW) $(PWD) grpck.o: config.h gshadow.h $(PWD) $(LIBSHADOW)(shadow.o): $(SHADOW) config.h $(LIBSHADOW)(shadowio.o): $(SHADOW) config.h $(LIBSHADOW)(grent.o): config.h gshadow.h $(LIBSHADOW)(groupio.o): config.h $(LIBSHADOW)(sgroupio.o): config.h gshadow.h $(LIBSHADOW)(dialup.o): dialup.h $(LIBSHADOW)(dialchk.o): dialup.h config.h $(LIBSHADOW)(getdef.o): config.h $(LIBSHADOW)(pwdbm.o): config.h $(PWD) $(LIBSHADOW)(spdbm.o): config.h $(SHADOW) $(LIBSHADOW)(grdbm.o): config.h $(LIBSHADOW)(gshadow.o): config.h $(LIBSHADOW)(gsdbm.o): config.h gshadow.h $(LIBSHADOW)(pwauth.o): config.h pwauth.h $(LIBSHADOW)(pwpack.o): config.h $(PWD) $(LIBSHADOW)(pwent.o): config.h $(PWD) $(LIBSHADOW)(pwio.o): $(PWD) config.h $(LIBSHADOW)(getpass.o): config.h $(LIBSHADOW)(encrypt.o): config.h $(LIBSHADOW)(salt.o): config.h $(LIBSHADOW)(md5crypt.o): config.h $(LIBSHADOW)(md5.o): config.h $(LIBSHADOW)(port.o): port.h $(LIBSHADOW)(rad64.o): config.h $(LIBSHADOW)(lockpw.o): $(LIBSHADOW)(rename.o): config.h $(LIBSHADOW)(gspack.o): config.h gshadow.h $(LIBSHADOW)(list.o): $(LIBSHADOW)(strtoday.o): config.h $(LIBSHADOW)(xmalloc.o): $(LIBSHADOW)(basename.o): $(LIBSHADOW)(isexpired.o): config.h $(SHADOW) $(LIBSHADOW)(commonio.o): shadow.h: -rm -f Linux -mv oldshadow.h shadow.h clean: shadow.h -rm -f *.o a.out core npasswd nshadow *.pag *.dir clobber: clean -rm -f $(BINS) *.lint *.L libshadow.a nuke: clobber -for file in * ; do \ if [ -f s.$$file -a ! -f p.$$file ] ; then \ rm -f $$file ;\ fi ;\ done # File lists for this are out of sync with reality... --marekm # #shar: login.sh.01 login.sh.02 login.sh.03 login.sh.04 login.sh.05 \ # login.sh.06 login.sh.07 login.sh.08 login.sh.09 login.sh.10 \ # login.sh.11 login.sh.12 # #login.sh.01: $(FILES1) Makefile # shar -Dc $(FILES1) > login.sh.01 # #login.sh.02: $(FILES2) Makefile # shar -Dc $(FILES2) > login.sh.02 # #login.sh.03: $(FILES3) Makefile # shar -Dc $(FILES3) > login.sh.03 # #login.sh.04: $(FILES4) Makefile # shar -Dc $(FILES4) > login.sh.04 # #login.sh.05: $(FILES5) Makefile # shar -Dc $(FILES5) > login.sh.05 # #login.sh.06: $(FILES6) Makefile # shar -Dc $(FILES6) > login.sh.06 # #login.sh.07: $(FILES7) Makefile # shar -Dc $(FILES7) > login.sh.07 # #login.sh.08: $(FILES8) Makefile # shar -Dc $(FILES8) > login.sh.08 # #login.sh.09: $(FILES9) Makefile # shar -Dc $(FILES9) > login.sh.09 # #login.sh.10: $(DOCS1) Makefile # shar -Dc $(DOCS1) > login.sh.10 # #login.sh.11: $(DOCS2) Makefile # shar -Dc $(DOCS2) > login.sh.11 # #login.sh.12: $(FILES_SUN4) $(FILES_SVR4) $(FILES_LINUX) Makefile # shar -Dc $(FILES_SUN4) $(FILES_SVR4) $(FILES_LINUX) > login.sh.12