merge from the autoconf2 branch to the main branch
authorAndrew Tridgell <tridge@samba.org>
Wed, 29 Jul 1998 03:08:05 +0000 (03:08 +0000)
committerAndrew Tridgell <tridge@samba.org>
Wed, 29 Jul 1998 03:08:05 +0000 (03:08 +0000)
69 files changed:
source/.cvsignore
source/Makefile.in [new file with mode: 0644]
source/acconfig.h [new file with mode: 0644]
source/client/client.c
source/client/clientutil.c
source/client/ntclient.c
source/client/smbmount.c
source/configure [new file with mode: 0755]
source/configure.in [new file with mode: 0644]
source/include/config.h.in [new file with mode: 0644]
source/include/includes.h
source/include/local.h
source/include/proto.h
source/include/smb.h
source/install-sh [new file with mode: 0755]
source/lib/access.c
source/lib/fault.c
source/lib/getsmbpass.c
source/lib/interface.c
source/lib/netmask.c [new file with mode: 0644]
source/lib/replace.c
source/lib/signal.c [new file with mode: 0644]
source/lib/slprintf.c
source/lib/system.c
source/lib/time.c
source/lib/ufc.c
source/lib/username.c
source/lib/util.c
source/libsmb/clientgen.c
source/libsmb/namequery.c
source/libsmb/smberr.c
source/locking/locking.c
source/locking/locking_shm.c
source/locking/locking_slow.c
source/locking/shmem.c
source/locking/shmem_sysv.c
source/nmbd/asyncdns.c
source/nmbd/nmbd.c
source/param/loadparm.c
source/passdb/ldap.c
source/passdb/nispass.c
source/passdb/passdb.c
source/passdb/smbpass.c
source/passdb/smbpassfile.c
source/printing/pcap.c
source/script/installman.sh
source/script/installswat.sh
source/smbd/chgpasswd.c
source/smbd/dfree.c [new file with mode: 0644]
source/smbd/dir.c
source/smbd/ipc.c
source/smbd/password.c
source/smbd/quotas.c
source/smbd/server.c
source/smbd/smbrun.c
source/smbd/ssl.c
source/smbd/uid.c
source/smbd/vt_mode.c
source/tests/README [new file with mode: 0644]
source/tests/fcntl_lock.c [new file with mode: 0644]
source/tests/ftruncate.c [new file with mode: 0644]
source/tests/shared_mmap.c [new file with mode: 0644]
source/tests/sysv_ipc.c [new file with mode: 0644]
source/tests/trapdoor.c [new file with mode: 0644]
source/ubiqx/.cvsignore [new file with mode: 0644]
source/utils/nmblookup.c
source/utils/status.c
source/utils/torture.c
source/web/.cvsignore [new file with mode: 0644]

index e10b6883549438cd24cf2212a785a2f3f8f26b4b..53c51431605b61130257d304700c3ebda43c2e60 100644 (file)
@@ -1,4 +1,8 @@
 Makefile.RPM
+config.cache
+config.h
+config.log
+config.status
 cvs.log
 make_printerdef
 make_smbcodepage
diff --git a/source/Makefile.in b/source/Makefile.in
new file mode 100644 (file)
index 0000000..4c31571
--- /dev/null
@@ -0,0 +1,322 @@
+###########################################################################
+# Makefile.in for Samba - rewritten for autoconf support
+# Copyright Andrew Tridgell 1992-1998
+###########################################################################
+
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+INSTALL_BIN=$(exec_prefix)/bin
+INSTALL_MAN=$(prefix)/man
+
+LIBS1=@LIBS@
+CC=@CC@
+CFLAGS=@CFLAGS@
+AWK=@AWK@
+
+INSTALLCMD=@INSTALL@
+
+VPATH=@srcdir@
+srcdir=@srcdir@
+SHELL=/bin/sh
+
+.SUFFIXES:
+.SUFFIXES: .c .o
+
+BASEDIR=$(prefix)/samba
+BINDIR = $(BASEDIR)/bin
+SBINDIR = $(BASEDIR)/bin
+LIBDIR = $(BASEDIR)/lib
+VARDIR = $(BASEDIR)/var
+MANDIR = $(BASEDIR)/man
+
+# The permissions to give the executables
+INSTALLPERMS = 0755
+
+# Add any optimisation or debugging flags here
+# add -DSYSLOG for syslog support
+FLAGS1 = -O
+
+# set these to where to find various files
+# These can be overridden by command line switches (see smbd(8))
+# or in smb.conf (see smb.conf(5))
+SMBLOGFILE = $(VARDIR)/log.smb
+NMBLOGFILE = $(VARDIR)/log.nmb
+CONFIGFILE = $(LIBDIR)/smb.conf
+LMHOSTSFILE = $(LIBDIR)/lmhosts
+DRIVERFILE = $(LIBDIR)/printers.def
+SMB_PASSWD = $(BINDIR)/smbpasswd
+SMB_PASSWD_FILE = $(BASEDIR)/private/smbpasswd
+
+# This is where SWAT images and help files go
+SWATDIR = $(BASEDIR)/swat
+
+# the directory where lock files go
+LOCKDIR = $(VARDIR)/locks
+
+# The directory where code page definition files go
+CODEPAGEDIR = $(LIBDIR)/codepages
+# The current codepage definition list.
+CODEPAGELIST= 437 737 850 852 861 932 866 949 950 936
+
+# set this to the default group you want your machine to appear in
+# for browsing. This can also be set in nmbd (see nmbd(8))
+WORKGROUP = WORKGROUP
+
+# set this to the name of the default account, which is the one
+# to use when no username or password is specified.  This can be overridden
+# in the runtime configuration file (see smb.conf(5))
+# NOTE: The account "nobody" may not be a good one as
+# on many unixes it may not be able to print. Thus you
+# might have to create a separate guest account that can print.
+GUESTACCOUNT = nobody
+
+# where you are going to have the smbrun binary. This defaults to the 
+# install directory. This binary is needed for correct printing
+# and magic script execution. This should be an absolute path!
+# Also not that this should include the name "smbrun" on the end (the
+# name of the executable)
+SMBRUN = $(BINDIR)/smbrun
+
+
+PASSWD_FLAGS = -DSMB_PASSWD=\"$(SMB_PASSWD)\" -DSMB_PASSWD_FILE=\"$(SMB_PASSWD_FILE)\"
+FLAGS1 = $(CFLAGS) -I. -I$(srcdir)/ubiqx -DSMBLOGFILE=\"$(SMBLOGFILE)\" -DNMBLOGFILE=\"$(NMBLOGFILE)\"
+FLAGS2 = -DCONFIGFILE=\"$(CONFIGFILE)\" -DLMHOSTSFILE=\"$(LMHOSTSFILE)\" -DWEB_ROOT=\"$(WEB_ROOT)\" $(REGEX_FLAGS)
+FLAGS3 = -DSWATDIR=\"$(SWATDIR)\" -DSBINDIR=\"$(SBINDIR)\" -DLOCKDIR=\"$(LOCKDIR)\" -DSMBRUN=\"$(SMBRUN)\" -DCODEPAGEDIR=\"$(CODEPAGEDIR)\"
+FLAGS4 = -DWORKGROUP=\"$(WORKGROUP)\" -DGUEST_ACCOUNT=\"$(GUESTACCOUNT)\" -DDRIVERFILE=\"$(DRIVERFILE)\"
+FLAGS5 = $(FLAGS1) $(FLAGS2) $(FLAGS3) $(FLAGS4) $(AFS_FLAGS) $(KRB5_FLAGS) $(KRB4_FLAGS) $(RPM_OPT_FLAGS) -DHAVE_INCLUDES_H
+
+FLAGS  = $(FLAGS5) $(PAM_FLAGS) $(DCE_FLAGS) $(DES_FLAGS) $(PASSWD_FLAGS) $(VTP_FLAGS) $(NISPLUS_FLAGS) $(LDAP_FLAGS) $(SSL_CFLAGS)
+LIBS = $(LIBS1) $(LIBSM) $(PAM_LIBS) $(DCE_LIBS) $(KRB5_LIBS) $(KRB4_LIBS) $(DES_LIB) $(LDAP_LIBS) $(SSL_LIBS)
+
+SPROGS = smbd nmbd swat
+PROGS1 = smbclient testparm testprns smbrun smbstatus smbpasswd make_smbcodepage
+PROGS = $(PROGS1) nmblookup make_printerdef $(MOUNT_PROGS)
+
+SCRIPTS = smbtar addtosmbpass
+
+
+######################################################################
+# object modules
+######################################################################
+
+# modules in the ubiqx library from Chris Hertel
+UBIOBJ = ubiqx/ubi_dLinkList.o ubiqx/ubi_Cache.o ubiqx/ubi_SplayTree.o \
+         ubiqx/ubi_BinTree.o ubiqx/ubi_sLinkList.o
+
+# client specific object code in the lib/rpc directory
+RPC_CLI_OBJ = lib/rpc/client/cli_login.o lib/rpc/client/cli_netlogon.o lib/rpc/client/cli_samr.o \
+              lib/rpc/client/cli_wkssvc.o lib/rpc/client/cli_lsarpc.o lib/rpc/client/cli_pipe.o \
+              lib/rpc/client/cli_srvsvc.o lib/rpc/client/ntclienttrust.o
+
+# client code that needs to do in the server in the lib/rpc directory.
+RPC_CLIENT_SERVER_SUBSET_OBJ = lib/rpc/client/cli_pipe.o lib/rpc/client/cli_login.o \
+                               lib/rpc/client/cli_netlogon.o
+
+# server specific object code in the lib/rpc directory
+RPC_SERV_OBJ = lib/rpc/server/srv_lsa.o lib/rpc/server/srv_netlog.o lib/rpc/server/srv_reg.o \
+               lib/rpc/server/srv_srvsvc.o lib/rpc/server/srv_wkssvc.o \
+               lib/rpc/server/srv_lsa_hnd.o lib/rpc/server/srv_pipe_hnd.o \
+               lib/rpc/server/srv_samr.o lib/rpc/server/srv_util.o
+
+# parse object files in the lib/rpc subdirectory
+RPC_OBJ = lib/rpc/parse/parse_lsa.o lib/rpc/parse/parse_net.o lib/rpc/parse/parse_reg.o \
+          lib/rpc/parse/parse_samr.o lib/rpc/parse/parse_wks.o lib/rpc/parse/parse_misc.o \
+          lib/rpc/parse/parse_prs.o lib/rpc/parse/parse_rpc.o lib/rpc/parse/parse_srv.o
+
+
+# password database object files
+PASSDB_OBJ = passdb.o ldap.o smbpass.o nisppass.o smbpassfile.o
+
+# general utility object files
+UTILOBJ1 = util.o system.o charset.o kanji.o fault.o smbencrypt.o smbdes.o charcnv.o genrand.o
+UTILOBJ2 = $(UTILOBJ1) md4.o loadparm.o params.o pcap.o username.o time.o membuffer.o namequery.o nmblib.o
+UTILOBJ3 = $(UTILOBJ2) signal.o netmask.o dfree.o
+UTILOBJ = $(UTILOBJ3) credentials.o interface.o replace.o print_svid.o smberr.o pidfile.o slprintf.o $(SSL_OBJ)
+
+# Client utility object files.
+CLIENTUTIL = clientgen.o nterr.o
+
+# object code for smbd
+SMBDOBJ1 = $(UTILOBJ) trans2.o nttrans.o message.o dir.o printing.o 
+SMBDOBJ2 = ipc.o reply.o mangle.o chgpasswd.o password.o quotas.o uid.o
+SMBDOBJ3 = predict.o pipes.o server.o access.o 
+SMBDOBJ4 = ufc.o connection.o groupname.o
+SMBDOBJ = $(SMBDOBJ1) $(SMBDOBJ2) $(SMBDOBJ3) $(SMBDOBJ4) $(UBIOBJ) $(RPC_OBJ) $(RPC_SERV_OBJ) \
+          $(RPC_CLIENT_SERVER_SUBSET_OBJ) $(VTP_OBJ) $(LOCKOBJ) $(CLIENTUTIL) $(PASSDB_OBJ)
+
+# object code needed for programs that handle the the locking files
+LOCKOBJ = locking_shm.o locking_slow.o locking.o shmem.o shmem_sysv.o
+
+# object code for nmbd
+NMBDOBJ1 = $(PASSDB_OBJ) nmbd.o nmbd_packets.o nmbd_lmhosts.o nmbd_become_dmb.o nmbd_logonnames.o
+NMBDOBJ2 = nmbd_browserdb.o nmbd_responserecordsdb.o nmbd_workgroupdb.o nmbd_serverlistdb.o
+NMBDOBJ3 = nmbd_subnetdb.o nmbd_browsesync.o nmbd_nodestatus.o nmbd_mynames.o nmbd_winsproxy.o
+NMBDOBJ4 = nmbd_sendannounce.o nmbd_processlogon.o nmbd_incomingdgrams.o
+NMBDOBJ5 = asyncdns.o nmbd_winsserver.o nmbd_incomingrequests.o nmbd_nameregister.o
+NMBDOBJ6 = nmbd_namerelease.o nmbd_namequery.o nmbd_become_lmb.o nmbd_elections.o nmbd_namelistdb.o
+
+NMBDOBJ = $(UTILOBJ) $(NMBDOBJ1) $(NMBDOBJ2) $(NMBDOBJ3) $(NMBDOBJ4) $(NMBDOBJ5) $(NMBDOBJ6) $(CLIENTUTIL) $(UBIOBJ)
+
+# object files for smbclient
+CLIENT_OBJ = client.o clientutil.o clitar.o getsmbpass.o $(UTILOBJ)
+
+# object files for smbmount
+MOUNT_OBJ = smbmount.o clientutil.o getsmbpass.o $(UTILOBJ)
+
+# object files for smbmnt
+MNT_OBJ = smbmnt.o 
+
+# object files for smbumount
+UMOUNT_OBJ = smbumount.o $(UTILOBJ)
+
+# object files for smbstatus
+STATUS_OBJ = status.o $(UTILOBJ) $(LOCKOBJ) 
+
+# object files for nmblookup
+LOOKUP_OBJ = nmblookup.o $(UTILOBJ) 
+
+# object files for swat
+SWAT_OBJ = web/swat.o web/statuspage.o web/cgi.o web/diagnose.o web/startstop.o password.o $(PASSDB_OBJ) \
+           $(RPC_CLIENT_SERVER_SUBSET_OBJ) $(RPC_OBJ) $(UTILOBJ) $(LOCKOBJ) $(CLIENTUTIL)
+
+# object files to be auto-prototyped
+PROTOOBJ = $(UTILOBJ) $(SMBDOBJ) $(NMBDOBJ) $(LOCKOBJ) $(CLIENT_OBJ) $(STATUS_OBJ) $(SWAT_OBJ) \
+           $(CLIENTUTIL) $(PASSDB_OBJ)
+
+######################################################################
+# now the rules...
+######################################################################
+
+all : $(SPROGS) $(PROGS) 
+
+.SUFFIXES:
+.SUFFIXES: .c .o .h
+
+.c.o: $(INCLUDES)
+       @echo Compiling $*.c
+       @$(CC) -I. -I$(srcdir) $(FLAGS) -c $< -o $@
+
+smbd: $(SMBDOBJ) 
+       @echo Linking smbd
+       @$(CC) $(FLAGS) -o smbd $(SMBDOBJ) $(LIBS) $(AFS_LIBS)
+
+smbrun: smbrun.o 
+       @echo Linking smbrun
+       @$(CC) $(FLAGS) -o smbrun smbrun.o $(LIBS)
+
+nmblookup: $(LOOKUP_OBJ)
+       @echo Linking nmblookup
+       @$(CC) $(FLAGS) -o nmblookup $(LOOKUP_OBJ) $(LIBS)
+
+nmbd: $(NMBDOBJ)
+       @echo Linking nmbd
+       @$(CC) $(FLAGS) -o nmbd $(NMBDOBJ) $(LIBS)
+
+smbclient: $(CLIENT_OBJ) 
+       @echo Linking smbclient
+       @$(CC) $(FLAGS) -o smbclient $(CLIENT_OBJ) $(LIBS)
+
+smbmount: $(MOUNT_OBJ) 
+       @echo Linking smbmount
+       @$(CC) $(FLAGS) -o smbmount $(MOUNT_OBJ) $(LIBS)
+
+smbmnt: $(MNT_OBJ)
+       @echo Linking smbmnt
+       @$(CC) $(FLAGS) -o smbmnt $(MNT_OBJ)
+
+smbumount: $(UMOUNT_OBJ)
+       @echo Linking smbumount
+       @$(CC) $(FLAGS) -o smbumount $(UMOUNT_OBJ)
+
+smbtorture: torture.o getsmbpass.o $(UTILOBJ) $(CLIENTUTIL)
+       @echo Linking smbtorture
+       @$(CC) $(FLAGS) -o smbtorture torture.o getsmbpass.o $(UTILOBJ) $(CLIENTUTIL) $(LIBS)
+
+smbstatus: $(STATUS_OBJ)
+       @echo Linking smbstatus
+       @$(CC) $(FLAGS) -o smbstatus $(STATUS_OBJ) $(LIBS)
+
+testparm: testparm.o access.o $(UTILOBJ)
+       @echo Linking testparm
+       @$(CC) $(FLAGS) -o testparm testparm.o access.o $(UTILOBJ) $(LIBS)
+
+testprns: testprns.o $(UTILOBJ)
+       @echo Linking testprns
+       @$(CC) $(FLAGS) -o testprns testprns.o $(UTILOBJ) $(LIBS)
+
+smbpasswd: smbpasswd.o getsmbpass.o $(PASSDB_OBJ) $(UTILOBJ) $(CLIENTUTIL) $(RPC_CLIENT_SERVER_SUBSET_OBJ) $(RPC_OBJ)
+       @echo Linking smbpasswd
+       @$(CC) $(FLAGS) -o smbpasswd smbpasswd.o getsmbpass.o $(PASSDB_OBJ) $(UTILOBJ) $(CLIENTUTIL) \
+                        $(RPC_CLIENT_SERVER_SUBSET_OBJ) $(RPC_OBJ) $(LIBS)
+
+make_smbcodepage: make_smbcodepage.o $(UTILOBJ) 
+       @echo Linking make_smbcodepage
+       @$(CC) $(FLAGS) -o make_smbcodepage make_smbcodepage.o $(UTILOBJ) $(LIBS)
+
+make_printerdef: make_printerdef.o $(UTILOBJ) 
+       @echo Linking make_printerdef
+       @$(CC) $(FLAGS) -o make_printerdef make_printerdef.o $(UTILOBJ) $(LIBS)
+
+wsmbstatus: wsmbstatus.o $(UTILOBJ)  
+       @echo Linking wsmbstatus
+       @$(CC) $(FLAGS) -o wsmbstatus wsmbstatus.o $(UTILOBJ) $(LIBS)
+
+swat: $(SWAT_OBJ)
+       @echo Linking swat
+       @$(CC) $(FLAGS) -o swat $(SWAT_OBJ) $(LIBS) 
+
+install: installbin installman installscripts installcp installswat
+
+installbin: all
+       @$(SHELL) $(srcdir)/installbin.sh $(INSTALLPERMS) $(BASEDIR) $(SBINDIR) $(LIBDIR) $(VARDIR) $(SPROGS)
+       @$(SHELL) $(srcdir)/installbin.sh $(INSTALLPERMS) $(BASEDIR) $(BINDIR) $(LIBDIR) $(VARDIR) $(PROGS)
+
+installscripts:
+       @$(SHELL) $(srcdir)/installscripts.sh $(INSTALLPERMS) $(BINDIR) $(SCRIPTS)
+
+installcp:
+       @$(SHELL) $(srcdir)/installcp.sh $(LIBDIR) $(CODEPAGEDIR) $(BINDIR) $(CODEPAGELIST)
+
+installswat:
+       @$(SHELL) $(srcdir)/installswat.sh $(SWATDIR) $(srcdir)
+
+# revert to the previously installed version
+revert:
+       @$(SHELL) $(srcdir)/revert.sh $(SBINDIR) $(SPROGS) $(SCRIPTS)
+       @$(SHELL) $(srcdir)/revert.sh $(BINDIR) $(PROGS) $(SCRIPTS)
+
+installman:
+       @$(SHELL) $(srcdir)/installman.sh $(MANDIR) $(srcdir)
+
+uninstall: uninstallman uninstallbin uninstallscripts uninstallcp
+
+uninstallman:
+       @$(SHELL) $(srcdir)/uninstallman.sh $(MANDIR) $(srcdir)
+
+uninstallbin:
+       @$(SHELL) $(srcdir)/uninstallbin.sh $(INSTALLPERMS) $(BASEDIR) $(SBINDIR) $(LIBDIR) $(VARDIR) $(SPROGS)
+       @$(SHELL) $(srcdir)/uninstallbin.sh $(INSTALLPERMS) $(BASEDIR) $(BINDIR) $(LIBDIR) $(VARDIR) $(PROGS)
+
+uninstallscripts:
+       @$(SHELL) $(srcdir)/uninstallscripts.sh $(INSTALLPERMS) $(BINDIR) $(SCRIPTS)
+
+uninstallcp:
+       @$(SHELL) $(srcdir)/uninstallcp.sh $(CODEPAGEDIR) $(CODEPAGELIST)
+
+clean: 
+       @echo Cleaning up ...
+       @rm -f core *.o */*.o $(PROTOOBJ) lib/rpc/*/*.o *~ config.cache $(PROGS) $(SPROGS)
+
+cleandir:  clean
+       rm -f .depend tags
+
+proto:
+       $(AWK) -f mkproto.awk `echo $(PROTOOBJ) | sed -e 's/\.o/\.c/g' | tr ' ' '\n' | sort | fgrep -v "ubiqx" | uniq` > proto.h
+
+etags:
+       etags `find . -name "*.[ch]"`
+
+ctags:
+       ctags `find . -name "*.[ch]"`
+
+realclean: clean
diff --git a/source/acconfig.h b/source/acconfig.h
new file mode 100644 (file)
index 0000000..6ae9f1b
--- /dev/null
@@ -0,0 +1,49 @@
+#undef HAVE_BROKEN_READDIR
+#undef HAVE_ERRNO_DECL
+#undef HAVE_LONGLONG
+#undef HAVE_OFF64_T
+#undef HAVE_REMSH
+#undef HAVE_UNSIGNED_CHAR
+#undef HAVE_UTIMBUF
+#undef ino_t
+#undef HAVE_CONNECT
+#undef HAVE_SHORT_INO_T
+#undef WITH_AFS
+#undef WITH_DFS
+#undef SUNOS5
+#undef SUNOS4
+#undef LINUX
+#undef AIX
+#undef IRIX
+#undef HPUX
+#undef QNX
+#undef SCO
+#undef OSF1
+#undef NEXT2
+#undef HAVE_SHARED_MMAP
+#undef HAVE_SYSV_IPC
+#undef HAVE_FCNTL_LOCK
+#undef HAVE_FTRUNCATE_EXTEND
+#undef HAVE_TRAPDOOR_UID
+#undef HAVE_ROOT
+#undef HAVE_UNION_SEMUN
+#undef HAVE_NETMASK_IFCONF
+#undef HAVE_GETTIMEOFDAY_TZ
+#undef HAVE_SOCK_SIN_LEN
+#undef STAT_READ_FILSYS
+#undef STAT_STATFS2_BSIZE
+#undef STAT_STATFS2_FSIZE
+#undef STAT_STATFS2_FS_DATA
+#undef STAT_STATFS3_OSF1
+#undef STAT_STATFS4
+#undef STAT_STATVFS
+#undef HAVE_NETMASK_IFREQ
+#undef HAVE_NETMASK_AIX
+#undef HAVE_CRYPT
+#undef WITH_MMAP
+#undef WITH_SYSLOG
+#undef WITH_SSL
+#undef WITH_LDAP
+#undef WITH_NISPLUS
+#undef WITH_AUTOMOUNT
+#undef HAVE_PAM_AUTHENTICATE
index bdfa29f86b19decf7e41fa99329f0f685e2479cd..b72a62073078b7f8a6aaeca0c0298e652558d301 100644 (file)
@@ -19,9 +19,7 @@
    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */
 
-#ifdef SYSLOG
-#undef SYSLOG
-#endif
+#define NO_SYSLOG
 
 #include "includes.h"
 
@@ -2919,14 +2917,6 @@ try and browse available connections on a host
 ****************************************************************************/
 static BOOL browse_host(BOOL sort)
 {
-#ifdef NOSTRCASECMP
-/* If strcasecmp is already defined, remove it. */
-#ifdef strcasecmp
-#undef strcasecmp
-#endif /* strcasecmp */
-#define strcasecmp StrCaseCmp
-#endif /* NOSTRCASECMP */
-
   char *rparam = NULL;
   char *rdata = NULL;
   char *p;
@@ -3313,61 +3303,25 @@ void cmd_help(char *dum_in, char *dum_out)
 /****************************************************************************
 wait for keyboard activity, swallowing network packets
 ****************************************************************************/
-#ifdef CLIX
-static char wait_keyboard(char *buffer)
-#else
 static void wait_keyboard(char *buffer)
-#endif
 {
   fd_set fds;
   int selrtn;
   struct timeval timeout;
   
-#ifdef CLIX
-  int delay = 0;
-#endif
-  
   while (1) 
     {
       extern int Client;
       FD_ZERO(&fds);
       FD_SET(Client,&fds);
-#ifndef CLIX
       FD_SET(fileno(stdin),&fds);
-#endif
 
       timeout.tv_sec = 20;
       timeout.tv_usec = 0;
-#ifdef CLIX
-      timeout.tv_sec = 0;
-#endif
       selrtn = sys_select(&fds,&timeout);
       
-#ifndef CLIX
       if (FD_ISSET(fileno(stdin),&fds))
        return;
-#else
-      {
-       char ch;
-       int readret;
-
-    set_blocking(fileno(stdin), False);        
-       readret = read_data( fileno(stdin), &ch, 1);
-       set_blocking(fileno(stdin), True);
-       if (readret == -1)
-         {
-           if (errno != EAGAIN)
-             {
-               /* should crash here */
-               DEBUG(1,("readchar stdin failed\n"));
-             }
-         }
-       else if (readret != 0)
-         {
-           return ch;
-         }
-      }
-#endif
 
       /* We deliberately use receive_smb instead of
          client_receive_smb as we want to receive
@@ -3376,16 +3330,7 @@ static void wait_keyboard(char *buffer)
       if (FD_ISSET(Client,&fds))
        receive_smb(Client,buffer,0);
       
-#ifdef CLIX
-      delay++;
-      if (delay > 100000)
-       {
-         delay = 0;
-         chkpath("\\",False);
-       }
-#else
       chkpath("\\",False);
-#endif
     }  
 }
 
@@ -3460,22 +3405,11 @@ static BOOL process(char *base_directory)
       DEBUG(0,("smb: %s> ", CNV_LANG(cur_dir)));
       fflush(dbf);
 
-#ifdef CLIX
-      line[0] = wait_keyboard(InBuffer);
-      /* this might not be such a good idea... */
-      if ( line[0] == EOF)
-       break;
-#else
       wait_keyboard(InBuffer);
-#endif
   
       /* and get a response */
-#ifdef CLIX
-      fgets( &line[1],999, stdin);
-#else
       if (!fgets(line,1000,stdin))
        break;
-#endif
 
       /* input language code to internal one */
       CNV_INPUT (line);
@@ -3588,7 +3522,7 @@ static void usage(char *pname)
 
   interpret_coding_system(term_code);
 
-#ifdef USE_SSL
+#ifdef WITH_SSL
   sslutil_init(0);
 #endif
 
index e63f668481b5c525a2a9357f999fedc200141c95..da5ea531d28caf721509a0c3bed247aba7998fe0 100644 (file)
@@ -19,9 +19,7 @@
    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */
 
-#ifdef SYSLOG
-#undef SYSLOG
-#endif
+#define NO_SYSLOG
 
 #include "includes.h"
 
@@ -338,9 +336,9 @@ BOOL cli_send_session_request(char *inbuf,char *outbuf)
   _smb_setlen(outbuf,len);
   CVAL(outbuf,0) = 0x81;
 
-#ifdef USE_SSL
+#ifdef WITH_SSL
 retry:
-#endif /* USE_SSL */
+#endif /* WITH_SSL */
 
   send_smb(Client,outbuf);
   DEBUG(5,("Sent session request\n"));
@@ -377,7 +375,7 @@ retry:
       return cli_send_session_request(inbuf,outbuf);
     } /* C. Hoch 9/14/95 End */
 
-#ifdef USE_SSL
+#ifdef WITH_SSL
     if(CVAL(inbuf,0) == 0x83 && CVAL(inbuf,4) == 0x8e) {       /* use ssl */
               fprintf(stderr, "Making secure connection\n");
         if(!sslutil_fd_is_ssl(Client)){
index 92d74e1d4957ad1e72bc58febe6ee330f79bc043..cb2f6ecf1a989b41248eab07e1c9e50dc37f00a3 100644 (file)
@@ -20,9 +20,7 @@
    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */
 
-#ifdef SYSLOG
-#undef SYSLOG
-#endif
+#define NO_SYSLOG
 
 #include "includes.h"
 
index 505552997b371cb5e5d468022872da2c25bccad6..2424513d687c41ef048715af0e65ffdfdf901b65 100644 (file)
@@ -19,9 +19,7 @@
    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */
 
-#ifdef SYSLOG
-#undef SYSLOG
-#endif
+#define NO_SYSLOG
 
 #include <linux/version.h>
 #define LVERSION(major,minor,patch) (((((major)<<8)+(minor))<<8)+(patch))
@@ -295,7 +293,7 @@ send_fs_socket(char *mount_point, char *inbuf, char *outbuf)
                /*
                 * Wait for a signal from smbfs ...
                 */
-               signal(SIGUSR1, &usr1_handler);
+               CatchSignal(SIGUSR1, &usr1_handler);
                pause();
                DEBUG(0, ("smbmount: got signal, getting new socket\n"));
 
@@ -450,61 +448,25 @@ void cmd_help(char *dum_in, char *dum_out)
 /****************************************************************************
 wait for keyboard activity, swallowing network packets
 ****************************************************************************/
-#ifdef CLIX
-static char wait_keyboard(char *buffer)
-#else
 static void wait_keyboard(char *buffer)
-#endif
 {
   fd_set fds;
   int selrtn;
   struct timeval timeout;
   
-#ifdef CLIX
-  int delay = 0;
-#endif
-  
   while (1) 
     {
       extern int Client;
       FD_ZERO(&fds);
       FD_SET(Client,&fds);
-#ifndef CLIX
       FD_SET(fileno(stdin),&fds);
-#endif
 
       timeout.tv_sec = 20;
       timeout.tv_usec = 0;
-#ifdef CLIX
-      timeout.tv_sec = 0;
-#endif
       selrtn = sys_select(&fds,&timeout);
       
-#ifndef CLIX
       if (FD_ISSET(fileno(stdin),&fds))
        return;
-#else
-      {
-       char ch;
-       int readret;
-
-    set_blocking(fileno(stdin), False);        
-       readret = read_data( fileno(stdin), &ch, 1);
-       set_blocking(fileno(stdin), True);
-       if (readret == -1)
-         {
-           if (errno != EAGAIN)
-             {
-               /* should crash here */
-               DEBUG(1,("readchar stdin failed\n"));
-             }
-         }
-       else if (readret != 0)
-         {
-           return ch;
-         }
-      }
-#endif
 
       /* We deliberately use receive_smb instead of
          client_receive_smb as we want to receive
@@ -513,16 +475,7 @@ static void wait_keyboard(char *buffer)
       if (FD_ISSET(Client,&fds))
        receive_smb(Client,buffer,0);
       
-#ifdef CLIX
-      delay++;
-      if (delay > 100000)
-       {
-         delay = 0;
-         chkpath("\\",False);
-       }
-#else
       chkpath("\\",False);
-#endif
     }  
 }
 
@@ -595,22 +548,11 @@ static BOOL process(char *base_directory)
       DEBUG(0,("smb: %s> ", CNV_LANG(cur_dir)));
       fflush(dbf);
 
-#ifdef CLIX
-      line[0] = wait_keyboard(InBuffer);
-      /* this might not be such a good idea... */
-      if ( line[0] == EOF)
-       break;
-#else
       wait_keyboard(InBuffer);
-#endif
   
       /* and get a response */
-#ifdef CLIX
-      fgets( &line[1],999, stdin);
-#else
       if (!fgets(line,1000,stdin))
        break;
-#endif
 
       /* input language code to internal one */
       CNV_INPUT (line);
diff --git a/source/configure b/source/configure
new file mode 100755 (executable)
index 0000000..ef237b7
--- /dev/null
@@ -0,0 +1,4791 @@
+#! /bin/sh
+
+# Guess values for system-dependent variables and create Makefiles.
+# Generated automatically using autoconf version 2.12 
+# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+
+# Defaults:
+ac_help=
+ac_default_prefix=/usr/local
+# Any additions from configure.in:
+ac_help="$ac_help
+  --with-afs     Include AFS support
+  --without-afs  Don't include AFS support (default)"
+ac_help="$ac_help
+  --with-dfs     Include DFS support
+  --without-dfs  Don't include DFS support (default)"
+ac_help="$ac_help
+  --with-automount     Include AUTOMOUNT support
+  --without-automount  Don't include AUTOMOUNT support (default)"
+ac_help="$ac_help
+  --with-ldap     Include LDAP support
+  --without-ldap  Don't include LDAP support (default)"
+ac_help="$ac_help
+  --with-nisplus     Include NISPLUS password database support
+  --without-nisplus  Don't include NISPLUS password database support (default)"
+ac_help="$ac_help
+  --with-ssl     Include SSL support
+  --without-ssl  Don't include SSL support (default)"
+ac_help="$ac_help
+  --with-mmap     Include experimental MMAP support
+  --without-mmap  Don't include MMAP support (default)"
+ac_help="$ac_help
+  --with-syslog     Include experimental SYSLOG support
+  --without-syslog  Don't include SYSLOG support (default)"
+
+# Initialize some variables set by options.
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+build=NONE
+cache_file=./config.cache
+exec_prefix=NONE
+host=NONE
+no_create=
+nonopt=NONE
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+target=NONE
+verbose=
+x_includes=NONE
+x_libraries=NONE
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datadir='${prefix}/share'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+libdir='${exec_prefix}/lib'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+infodir='${prefix}/info'
+mandir='${prefix}/man'
+
+# Initialize some other variables.
+subdirs=
+MFLAGS= MAKEFLAGS=
+# Maximum number of lines to put in a shell here document.
+ac_max_here_lines=12
+
+ac_prev=
+for ac_option
+do
+
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval "$ac_prev=\$ac_option"
+    ac_prev=
+    continue
+  fi
+
+  case "$ac_option" in
+  -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
+  *) ac_optarg= ;;
+  esac
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case "$ac_option" in
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir="$ac_optarg" ;;
+
+  -build | --build | --buil | --bui | --bu)
+    ac_prev=build ;;
+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+    build="$ac_optarg" ;;
+
+  -cache-file | --cache-file | --cache-fil | --cache-fi \
+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+    ac_prev=cache_file ;;
+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+    cache_file="$ac_optarg" ;;
+
+  -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
+  | --da=*)
+    datadir="$ac_optarg" ;;
+
+  -disable-* | --disable-*)
+    ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
+    # Reject names that are not valid shell variable names.
+    if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
+      { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
+    fi
+    ac_feature=`echo $ac_feature| sed 's/-/_/g'`
+    eval "enable_${ac_feature}=no" ;;
+
+  -enable-* | --enable-*)
+    ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
+    # Reject names that are not valid shell variable names.
+    if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
+      { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
+    fi
+    ac_feature=`echo $ac_feature| sed 's/-/_/g'`
+    case "$ac_option" in
+      *=*) ;;
+      *) ac_optarg=yes ;;
+    esac
+    eval "enable_${ac_feature}='$ac_optarg'" ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix="$ac_optarg" ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=yes ;;
+
+  -help | --help | --hel | --he)
+    # Omit some internal or obsolete options to make the list less imposing.
+    # This message is too long to be a string in the A/UX 3.1 sh.
+    cat << EOF
+Usage: configure [options] [host]
+Options: [defaults in brackets after descriptions]
+Configuration:
+  --cache-file=FILE       cache test results in FILE
+  --help                  print this message
+  --no-create             do not create output files
+  --quiet, --silent       do not print \`checking...' messages
+  --version               print the version of autoconf that created configure
+Directory and file names:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+                          [$ac_default_prefix]
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+                          [same as prefix]
+  --bindir=DIR            user executables in DIR [EPREFIX/bin]
+  --sbindir=DIR           system admin executables in DIR [EPREFIX/sbin]
+  --libexecdir=DIR        program executables in DIR [EPREFIX/libexec]
+  --datadir=DIR           read-only architecture-independent data in DIR
+                          [PREFIX/share]
+  --sysconfdir=DIR        read-only single-machine data in DIR [PREFIX/etc]
+  --sharedstatedir=DIR    modifiable architecture-independent data in DIR
+                          [PREFIX/com]
+  --localstatedir=DIR     modifiable single-machine data in DIR [PREFIX/var]
+  --libdir=DIR            object code libraries in DIR [EPREFIX/lib]
+  --includedir=DIR        C header files in DIR [PREFIX/include]
+  --oldincludedir=DIR     C header files for non-gcc in DIR [/usr/include]
+  --infodir=DIR           info documentation in DIR [PREFIX/info]
+  --mandir=DIR            man documentation in DIR [PREFIX/man]
+  --srcdir=DIR            find the sources in DIR [configure dir or ..]
+  --program-prefix=PREFIX prepend PREFIX to installed program names
+  --program-suffix=SUFFIX append SUFFIX to installed program names
+  --program-transform-name=PROGRAM
+                          run sed PROGRAM on installed program names
+EOF
+    cat << EOF
+Host type:
+  --build=BUILD           configure for building on BUILD [BUILD=HOST]
+  --host=HOST             configure for HOST [guessed]
+  --target=TARGET         configure for TARGET [TARGET=HOST]
+Features and packages:
+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+  --x-includes=DIR        X include files are in DIR
+  --x-libraries=DIR       X library files are in DIR
+EOF
+    if test -n "$ac_help"; then
+      echo "--enable and --with options recognized:$ac_help"
+    fi
+    exit 0 ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=host ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host="$ac_optarg" ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir="$ac_optarg" ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir="$ac_optarg" ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir="$ac_optarg" ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir="$ac_optarg" ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst \
+  | --locals | --local | --loca | --loc | --lo)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* \
+  | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
+    localstatedir="$ac_optarg" ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir="$ac_optarg" ;;
+
+  -nfp | --nfp | --nf)
+    # Obsolete; use --without-fp.
+    with_fp=no ;;
+
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c)
+    no_create=yes ;;
+
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+    no_recursion=yes ;;
+
+  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+  | --oldin | --oldi | --old | --ol | --o)
+    ac_prev=oldincludedir ;;
+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+    oldincludedir="$ac_optarg" ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix="$ac_optarg" ;;
+
+  -program-prefix | --program-prefix | --program-prefi | --program-pref \
+  | --program-pre | --program-pr | --program-p)
+    ac_prev=program_prefix ;;
+  -program-prefix=* | --program-prefix=* | --program-prefi=* \
+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+    program_prefix="$ac_optarg" ;;
+
+  -program-suffix | --program-suffix | --program-suffi | --program-suff \
+  | --program-suf | --program-su | --program-s)
+    ac_prev=program_suffix ;;
+  -program-suffix=* | --program-suffix=* | --program-suffi=* \
+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+    program_suffix="$ac_optarg" ;;
+
+  -program-transform-name | --program-transform-name \
+  | --program-transform-nam | --program-transform-na \
+  | --program-transform-n | --program-transform- \
+  | --program-transform | --program-transfor \
+  | --program-transfo | --program-transf \
+  | --program-trans | --program-tran \
+  | --progr-tra | --program-tr | --program-t)
+    ac_prev=program_transform_name ;;
+  -program-transform-name=* | --program-transform-name=* \
+  | --program-transform-nam=* | --program-transform-na=* \
+  | --program-transform-n=* | --program-transform-=* \
+  | --program-transform=* | --program-transfor=* \
+  | --program-transfo=* | --program-transf=* \
+  | --program-trans=* | --program-tran=* \
+  | --progr-tra=* | --program-tr=* | --program-t=*)
+    program_transform_name="$ac_optarg" ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=yes ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir="$ac_optarg" ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir="$ac_optarg" ;;
+
+  -site | --site | --sit)
+    ac_prev=site ;;
+  -site=* | --site=* | --sit=*)
+    site="$ac_optarg" ;;
+
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+    ac_prev=srcdir ;;
+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+    srcdir="$ac_optarg" ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir="$ac_optarg" ;;
+
+  -target | --target | --targe | --targ | --tar | --ta | --t)
+    ac_prev=target ;;
+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+    target="$ac_optarg" ;;
+
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)
+    verbose=yes ;;
+
+  -version | --version | --versio | --versi | --vers)
+    echo "configure generated by autoconf version 2.12"
+    exit 0 ;;
+
+  -with-* | --with-*)
+    ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
+    # Reject names that are not valid shell variable names.
+    if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
+      { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
+    fi
+    ac_package=`echo $ac_package| sed 's/-/_/g'`
+    case "$ac_option" in
+      *=*) ;;
+      *) ac_optarg=yes ;;
+    esac
+    eval "with_${ac_package}='$ac_optarg'" ;;
+
+  -without-* | --without-*)
+    ac_package=`echo $ac_option|sed -e 's/-*without-//'`
+    # Reject names that are not valid shell variable names.
+    if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
+      { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
+    fi
+    ac_package=`echo $ac_package| sed 's/-/_/g'`
+    eval "with_${ac_package}=no" ;;
+
+  --x)
+    # Obsolete; use --with-x.
+    with_x=yes ;;
+
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+  | --x-incl | --x-inc | --x-in | --x-i)
+    ac_prev=x_includes ;;
+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+    x_includes="$ac_optarg" ;;
+
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+    ac_prev=x_libraries ;;
+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+    x_libraries="$ac_optarg" ;;
+
+  -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
+    ;;
+
+  *)
+    if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
+      echo "configure: warning: $ac_option: invalid host type" 1>&2
+    fi
+    if test "x$nonopt" != xNONE; then
+      { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; }
+    fi
+    nonopt="$ac_option"
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
+fi
+
+trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
+
+# File descriptor usage:
+# 0 standard input
+# 1 file creation
+# 2 errors and warnings
+# 3 some systems may open it to /dev/tty
+# 4 used on the Kubota Titan
+# 6 checking for... messages and results
+# 5 compiler messages saved in config.log
+if test "$silent" = yes; then
+  exec 6>/dev/null
+else
+  exec 6>&1
+fi
+exec 5>./config.log
+
+echo "\
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+" 1>&5
+
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Also quote any args containing shell metacharacters.
+ac_configure_args=
+for ac_arg
+do
+  case "$ac_arg" in
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c) ;;
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
+  *" "*|*"     "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
+  ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+  *) ac_configure_args="$ac_configure_args $ac_arg" ;;
+  esac
+done
+
+# NLS nuisances.
+# Only set these to C if already set.  These must not be set unconditionally
+# because not all systems understand e.g. LANG=C (notably SCO).
+# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
+# Non-C LC_CTYPE values break the ctype check.
+if test "${LANG+set}"   = set; then LANG=C;   export LANG;   fi
+if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
+if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
+if test "${LC_CTYPE+set}"    = set; then LC_CTYPE=C;    export LC_CTYPE;    fi
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -rf conftest* confdefs.h
+# AIX cpp loses on an empty file, so make sure it contains at least a newline.
+echo > confdefs.h
+
+# A filename unique to this package, relative to the directory that
+# configure is in, which we can look for to find out if srcdir is correct.
+ac_unique_file=byteorder.h
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  ac_srcdir_defaulted=yes
+  # Try the directory containing this script, then its parent.
+  ac_prog=$0
+  ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
+  test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
+  srcdir=$ac_confdir
+  if test ! -r $srcdir/$ac_unique_file; then
+    srcdir=..
+  fi
+else
+  ac_srcdir_defaulted=no
+fi
+if test ! -r $srcdir/$ac_unique_file; then
+  if test "$ac_srcdir_defaulted" = yes; then
+    { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; }
+  else
+    { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
+  fi
+fi
+srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
+
+# Prefer explicitly selected file to automatically selected ones.
+if test -z "$CONFIG_SITE"; then
+  if test "x$prefix" != xNONE; then
+    CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
+  else
+    CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
+  fi
+fi
+for ac_site_file in $CONFIG_SITE; do
+  if test -r "$ac_site_file"; then
+    echo "loading site script $ac_site_file"
+    . "$ac_site_file"
+  fi
+done
+
+if test -r "$cache_file"; then
+  echo "loading cache $cache_file"
+  . $cache_file
+else
+  echo "creating cache $cache_file"
+  > $cache_file
+fi
+
+ac_ext=c
+# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+cross_compiling=$ac_cv_prog_cc_cross
+
+if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
+  # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
+  if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
+    ac_n= ac_c='
+' ac_t='       '
+  else
+    ac_n=-n ac_c= ac_t=
+  fi
+else
+  ac_n= ac_c='\c' ac_t=
+fi
+
+
+
+
+# Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:551: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+  for ac_dir in $PATH; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$ac_word; then
+      ac_cv_prog_CC="gcc"
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+fi
+fi
+CC="$ac_cv_prog_CC"
+if test -n "$CC"; then
+  echo "$ac_t""$CC" 1>&6
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:580: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+  ac_prog_rejected=no
+  for ac_dir in $PATH; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$ac_word; then
+      if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
+        ac_prog_rejected=yes
+       continue
+      fi
+      ac_cv_prog_CC="cc"
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# -gt 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    set dummy "$ac_dir/$ac_word" "$@"
+    shift
+    ac_cv_prog_CC="$@"
+  fi
+fi
+fi
+fi
+CC="$ac_cv_prog_CC"
+if test -n "$CC"; then
+  echo "$ac_t""$CC" 1>&6
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+  test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; }
+fi
+
+echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
+echo "configure:628: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+
+ac_ext=c
+# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+cross_compiling=$ac_cv_prog_cc_cross
+
+cat > conftest.$ac_ext <<EOF
+#line 638 "configure"
+#include "confdefs.h"
+main(){return(0);}
+EOF
+if { (eval echo configure:642: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+  ac_cv_prog_cc_works=yes
+  # If we can't run a trivial program, we are probably using a cross compiler.
+  if (./conftest; exit) 2>/dev/null; then
+    ac_cv_prog_cc_cross=no
+  else
+    ac_cv_prog_cc_cross=yes
+  fi
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  ac_cv_prog_cc_works=no
+fi
+rm -fr conftest*
+
+echo "$ac_t""$ac_cv_prog_cc_works" 1>&6
+if test $ac_cv_prog_cc_works = no; then
+  { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
+fi
+echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
+echo "configure:662: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
+cross_compiling=$ac_cv_prog_cc_cross
+
+echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
+echo "configure:667: checking whether we are using GNU C" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.c <<EOF
+#ifdef __GNUC__
+  yes;
+#endif
+EOF
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:676: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+  ac_cv_prog_gcc=yes
+else
+  ac_cv_prog_gcc=no
+fi
+fi
+
+echo "$ac_t""$ac_cv_prog_gcc" 1>&6
+
+if test $ac_cv_prog_gcc = yes; then
+  GCC=yes
+  ac_test_CFLAGS="${CFLAGS+set}"
+  ac_save_CFLAGS="$CFLAGS"
+  CFLAGS=
+  echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
+echo "configure:691: checking whether ${CC-cc} accepts -g" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  echo 'void f(){}' > conftest.c
+if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
+  ac_cv_prog_cc_g=yes
+else
+  ac_cv_prog_cc_g=no
+fi
+rm -f conftest*
+
+fi
+
+echo "$ac_t""$ac_cv_prog_cc_g" 1>&6
+  if test "$ac_test_CFLAGS" = set; then
+    CFLAGS="$ac_save_CFLAGS"
+  elif test $ac_cv_prog_cc_g = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-O2"
+  fi
+else
+  GCC=
+  test "${CFLAGS+set}" = set || CFLAGS="-g"
+fi
+
+ac_aux_dir=
+for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
+  if test -f $ac_dir/install-sh; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install-sh -c"
+    break
+  elif test -f $ac_dir/install.sh; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install.sh -c"
+    break
+  fi
+done
+if test -z "$ac_aux_dir"; then
+  { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; }
+fi
+ac_config_guess=$ac_aux_dir/config.guess
+ac_config_sub=$ac_aux_dir/config.sub
+ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
+
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# ./install, which can be erroneously created by make from ./install.sh.
+echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
+echo "configure:748: checking for a BSD compatible install" >&5
+if test -z "$INSTALL"; then
+if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+    IFS="${IFS=        }"; ac_save_IFS="$IFS"; IFS="${IFS}:"
+  for ac_dir in $PATH; do
+    # Account for people who put trailing slashes in PATH elements.
+    case "$ac_dir/" in
+    /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
+    *)
+      # OSF1 and SCO ODT 3.0 have their own names for install.
+      for ac_prog in ginstall installbsd scoinst install; do
+        if test -f $ac_dir/$ac_prog; then
+         if test $ac_prog = install &&
+            grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
+           # AIX install.  It has an incompatible calling convention.
+           # OSF/1 installbsd also uses dspmsg, but is usable.
+           :
+         else
+           ac_cv_path_install="$ac_dir/$ac_prog -c"
+           break 2
+         fi
+       fi
+      done
+      ;;
+    esac
+  done
+  IFS="$ac_save_IFS"
+
+fi
+  if test "${ac_cv_path_install+set}" = set; then
+    INSTALL="$ac_cv_path_install"
+  else
+    # As a last resort, use the slow shell script.  We don't cache a
+    # path for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the path is relative.
+    INSTALL="$ac_install_sh"
+  fi
+fi
+echo "$ac_t""$INSTALL" 1>&6
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+
+for ac_prog in mawk gawk nawk awk
+do
+# Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:803: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_AWK'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test -n "$AWK"; then
+  ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+  for ac_dir in $PATH; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$ac_word; then
+      ac_cv_prog_AWK="$ac_prog"
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+fi
+fi
+AWK="$ac_cv_prog_AWK"
+if test -n "$AWK"; then
+  echo "$ac_t""$AWK" 1>&6
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+test -n "$AWK" && break
+done
+
+
+
+# Do some error checking and defaulting for the host and target type.
+# The inputs are:
+#    configure --host=HOST --target=TARGET --build=BUILD NONOPT
+#
+# The rules are:
+# 1. You are not allowed to specify --host, --target, and nonopt at the
+#    same time.
+# 2. Host defaults to nonopt.
+# 3. If nonopt is not specified, then host defaults to the current host,
+#    as determined by config.guess.
+# 4. Target and build default to nonopt.
+# 5. If nonopt is not specified, then target and build default to host.
+
+# The aliases save the names the user supplied, while $host etc.
+# will get canonicalized.
+case $host---$target---$nonopt in
+NONE---*---* | *---NONE---* | *---*---NONE) ;;
+*) { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } ;;
+esac
+
+
+# Make sure we can run config.sub.
+if $ac_config_sub sun4 >/dev/null 2>&1; then :
+else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
+fi
+
+echo $ac_n "checking host system type""... $ac_c" 1>&6
+echo "configure:860: checking host system type" >&5
+
+host_alias=$host
+case "$host_alias" in
+NONE)
+  case $nonopt in
+  NONE)
+    if host_alias=`$ac_config_guess`; then :
+    else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; }
+    fi ;;
+  *) host_alias=$nonopt ;;
+  esac ;;
+esac
+
+host=`$ac_config_sub $host_alias`
+host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+echo "$ac_t""$host" 1>&6
+
+echo $ac_n "checking target system type""... $ac_c" 1>&6
+echo "configure:881: checking target system type" >&5
+
+target_alias=$target
+case "$target_alias" in
+NONE)
+  case $nonopt in
+  NONE) target_alias=$host_alias ;;
+  *) target_alias=$nonopt ;;
+  esac ;;
+esac
+
+target=`$ac_config_sub $target_alias`
+target_cpu=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+target_vendor=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+echo "$ac_t""$target" 1>&6
+
+echo $ac_n "checking build system type""... $ac_c" 1>&6
+echo "configure:899: checking build system type" >&5
+
+build_alias=$build
+case "$build_alias" in
+NONE)
+  case $nonopt in
+  NONE) build_alias=$host_alias ;;
+  *) build_alias=$nonopt ;;
+  esac ;;
+esac
+
+build=`$ac_config_sub $build_alias`
+build_cpu=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+build_vendor=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+build_os=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+echo "$ac_t""$build" 1>&6
+
+test "$host_alias" != "$target_alias" &&
+  test "$program_prefix$program_suffix$program_transform_name" = \
+    NONENONEs,x,x, &&
+  program_prefix=${target_alias}-
+
+case "$host_os" in
+       *linux*)   cat >> confdefs.h <<\EOF
+#define LINUX 1
+EOF
+;;
+        *solaris*) cat >> confdefs.h <<\EOF
+#define SUNOS5 1
+EOF
+;;
+        *sunos*) cat >> confdefs.h <<\EOF
+#define SUNOS4 1
+EOF
+;;
+        *irix*) cat >> confdefs.h <<\EOF
+#define IRIX 1
+EOF
+;;
+        *aix*) cat >> confdefs.h <<\EOF
+#define AIX 1
+EOF
+;;
+        *hpux*) cat >> confdefs.h <<\EOF
+#define HPUX 1
+EOF
+;;
+        *qnx*) cat >> confdefs.h <<\EOF
+#define QNX 1
+EOF
+;;
+        *osf1*) cat >> confdefs.h <<\EOF
+#define OSF1 1
+EOF
+;;
+        *sco*) cat >> confdefs.h <<\EOF
+#define SCO 1
+EOF
+;;
+        *next2*) cat >> confdefs.h <<\EOF
+#define NEXT2 1
+EOF
+;;
+esac
+
+echo $ac_n "checking for inline""... $ac_c" 1>&6
+echo "configure:965: checking for inline" >&5
+if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  ac_cv_c_inline=no
+for ac_kw in inline __inline__ __inline; do
+  cat > conftest.$ac_ext <<EOF
+#line 972 "configure"
+#include "confdefs.h"
+
+int main() {
+} $ac_kw foo() {
+; return 0; }
+EOF
+if { (eval echo configure:979: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+  ac_cv_c_inline=$ac_kw; break
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+fi
+rm -f conftest*
+done
+
+fi
+
+echo "$ac_t""$ac_cv_c_inline" 1>&6
+case "$ac_cv_c_inline" in
+  inline | yes) ;;
+  no) cat >> confdefs.h <<\EOF
+#define inline 
+EOF
+ ;;
+  *)  cat >> confdefs.h <<EOF
+#define inline $ac_cv_c_inline
+EOF
+ ;;
+esac
+
+echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
+echo "configure:1005: checking how to run the C preprocessor" >&5
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+    # This must be in double quotes, not single quotes, because CPP may get
+  # substituted into the Makefile and "${CC-cc}" will confuse make.
+  CPP="${CC-cc} -E"
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp.
+  cat > conftest.$ac_ext <<EOF
+#line 1020 "configure"
+#include "confdefs.h"
+#include <assert.h>
+Syntax Error
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:1026: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out`
+if test -z "$ac_err"; then
+  :
+else
+  echo "$ac_err" >&5
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  CPP="${CC-cc} -E -traditional-cpp"
+  cat > conftest.$ac_ext <<EOF
+#line 1037 "configure"
+#include "confdefs.h"
+#include <assert.h>
+Syntax Error
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:1043: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out`
+if test -z "$ac_err"; then
+  :
+else
+  echo "$ac_err" >&5
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  CPP=/lib/cpp
+fi
+rm -f conftest*
+fi
+rm -f conftest*
+  ac_cv_prog_CPP="$CPP"
+fi
+  CPP="$ac_cv_prog_CPP"
+else
+  ac_cv_prog_CPP="$CPP"
+fi
+echo "$ac_t""$CPP" 1>&6
+
+echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
+echo "configure:1066: checking for ANSI C header files" >&5
+if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1071 "configure"
+#include "confdefs.h"
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:1079: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out`
+if test -z "$ac_err"; then
+  rm -rf conftest*
+  ac_cv_header_stdc=yes
+else
+  echo "$ac_err" >&5
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+cat > conftest.$ac_ext <<EOF
+#line 1096 "configure"
+#include "confdefs.h"
+#include <string.h>
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  egrep "memchr" >/dev/null 2>&1; then
+  :
+else
+  rm -rf conftest*
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+cat > conftest.$ac_ext <<EOF
+#line 1114 "configure"
+#include "confdefs.h"
+#include <stdlib.h>
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  egrep "free" >/dev/null 2>&1; then
+  :
+else
+  rm -rf conftest*
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+if test "$cross_compiling" = yes; then
+  :
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1135 "configure"
+#include "confdefs.h"
+#include <ctype.h>
+#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int main () { int i; for (i = 0; i < 256; i++)
+if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
+exit (0); }
+
+EOF
+if { (eval echo configure:1146: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+then
+  :
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  ac_cv_header_stdc=no
+fi
+rm -fr conftest*
+fi
+
+fi
+fi
+
+echo "$ac_t""$ac_cv_header_stdc" 1>&6
+if test $ac_cv_header_stdc = yes; then
+  cat >> confdefs.h <<\EOF
+#define STDC_HEADERS 1
+EOF
+
+fi
+
+ac_header_dirent=no
+for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h
+do
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6
+echo "configure:1174: checking for $ac_hdr that defines DIR" >&5
+if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1179 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#include <$ac_hdr>
+int main() {
+DIR *dirp = 0;
+; return 0; }
+EOF
+if { (eval echo configure:1187: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+  eval "ac_cv_header_dirent_$ac_safe=yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_header_dirent_$ac_safe=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_header_dirent_'$ac_safe`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_hdr 1
+EOF
+ ac_header_dirent=$ac_hdr; break
+else
+  echo "$ac_t""no" 1>&6
+fi
+done
+# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
+if test $ac_header_dirent = dirent.h; then
+echo $ac_n "checking for opendir in -ldir""... $ac_c" 1>&6
+echo "configure:1212: checking for opendir in -ldir" >&5
+ac_lib_var=`echo dir'_'opendir | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  ac_save_LIBS="$LIBS"
+LIBS="-ldir  $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 1220 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char opendir();
+
+int main() {
+opendir()
+; return 0; }
+EOF
+if { (eval echo configure:1231: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  LIBS="$LIBS -ldir"
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+else
+echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6
+echo "configure:1253: checking for opendir in -lx" >&5
+ac_lib_var=`echo x'_'opendir | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  ac_save_LIBS="$LIBS"
+LIBS="-lx  $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 1261 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char opendir();
+
+int main() {
+opendir()
+; return 0; }
+EOF
+if { (eval echo configure:1272: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  LIBS="$LIBS -lx"
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+fi
+
+echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
+echo "configure:1295: checking whether time.h and sys/time.h may both be included" >&5
+if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1300 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#include <sys/time.h>
+#include <time.h>
+int main() {
+struct tm *tp;
+; return 0; }
+EOF
+if { (eval echo configure:1309: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+  ac_cv_header_time=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  ac_cv_header_time=no
+fi
+rm -f conftest*
+fi
+
+echo "$ac_t""$ac_cv_header_time" 1>&6
+if test $ac_cv_header_time = yes; then
+  cat >> confdefs.h <<\EOF
+#define TIME_WITH_SYS_TIME 1
+EOF
+
+fi
+
+echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6
+echo "configure:1330: checking for sys/wait.h that is POSIX.1 compatible" >&5
+if eval "test \"`echo '$''{'ac_cv_header_sys_wait_h'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1335 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#include <sys/wait.h>
+#ifndef WEXITSTATUS
+#define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8)
+#endif
+#ifndef WIFEXITED
+#define WIFEXITED(stat_val) (((stat_val) & 255) == 0)
+#endif
+int main() {
+int s;
+wait (&s);
+s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
+; return 0; }
+EOF
+if { (eval echo configure:1351: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+  ac_cv_header_sys_wait_h=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  ac_cv_header_sys_wait_h=no
+fi
+rm -f conftest*
+fi
+
+echo "$ac_t""$ac_cv_header_sys_wait_h" 1>&6
+if test $ac_cv_header_sys_wait_h = yes; then
+  cat >> confdefs.h <<\EOF
+#define HAVE_SYS_WAIT_H 1
+EOF
+
+fi
+
+for ac_hdr in sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h
+do
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:1375: checking for $ac_hdr" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1380 "configure"
+#include "confdefs.h"
+#include <$ac_hdr>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:1385: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out`
+if test -z "$ac_err"; then
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=yes"
+else
+  echo "$ac_err" >&5
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_hdr 1
+EOF
+else
+  echo "$ac_t""no" 1>&6
+fi
+done
+
+for ac_hdr in unistd.h utime.h grp.h sys/id.h limits.h net/if.h
+do
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:1415: checking for $ac_hdr" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1420 "configure"
+#include "confdefs.h"
+#include <$ac_hdr>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:1425: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out`
+if test -z "$ac_err"; then
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=yes"
+else
+  echo "$ac_err" >&5
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_hdr 1
+EOF
+else
+  echo "$ac_t""no" 1>&6
+fi
+done
+
+for ac_hdr in compat.h sys/param.h ctype.h sys/wait.h sys/ioctl.h
+do
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:1455: checking for $ac_hdr" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1460 "configure"
+#include "confdefs.h"
+#include <$ac_hdr>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:1465: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out`
+if test -z "$ac_err"; then
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=yes"
+else
+  echo "$ac_err" >&5
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_hdr 1
+EOF
+else
+  echo "$ac_t""no" 1>&6
+fi
+done
+
+for ac_hdr in sys/filio.h string.h stdlib.h sys/socket.h sys/mode.h
+do
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:1495: checking for $ac_hdr" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1500 "configure"
+#include "confdefs.h"
+#include <$ac_hdr>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:1505: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out`
+if test -z "$ac_err"; then
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=yes"
+else
+  echo "$ac_err" >&5
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_hdr 1
+EOF
+else
+  echo "$ac_t""no" 1>&6
+fi
+done
+
+for ac_hdr in sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h
+do
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:1535: checking for $ac_hdr" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1540 "configure"
+#include "confdefs.h"
+#include <$ac_hdr>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:1545: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out`
+if test -z "$ac_err"; then
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=yes"
+else
+  echo "$ac_err" >&5
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_hdr 1
+EOF
+else
+  echo "$ac_t""no" 1>&6
+fi
+done
+
+for ac_hdr in sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h sys/sockio.h
+do
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:1575: checking for $ac_hdr" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1580 "configure"
+#include "confdefs.h"
+#include <$ac_hdr>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:1585: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out`
+if test -z "$ac_err"; then
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=yes"
+else
+  echo "$ac_err" >&5
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_hdr 1
+EOF
+else
+  echo "$ac_t""no" 1>&6
+fi
+done
+
+for ac_hdr in shadow.h netinet/tcp.h sys/security.h security/pam_appl.h
+do
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:1615: checking for $ac_hdr" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1620 "configure"
+#include "confdefs.h"
+#include <$ac_hdr>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:1625: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out`
+if test -z "$ac_err"; then
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=yes"
+else
+  echo "$ac_err" >&5
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_hdr 1
+EOF
+else
+  echo "$ac_t""no" 1>&6
+fi
+done
+
+
+echo $ac_n "checking size of int""... $ac_c" 1>&6
+echo "configure:1653: checking size of int" >&5
+if eval "test \"`echo '$''{'ac_cv_sizeof_int'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test "$cross_compiling" = yes; then
+    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1661 "configure"
+#include "confdefs.h"
+#include <stdio.h>
+main()
+{
+  FILE *f=fopen("conftestval", "w");
+  if (!f) exit(1);
+  fprintf(f, "%d\n", sizeof(int));
+  exit(0);
+}
+EOF
+if { (eval echo configure:1672: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+then
+  ac_cv_sizeof_int=`cat conftestval`
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  ac_cv_sizeof_int=0
+fi
+rm -fr conftest*
+fi
+
+fi
+echo "$ac_t""$ac_cv_sizeof_int" 1>&6
+cat >> confdefs.h <<EOF
+#define SIZEOF_INT $ac_cv_sizeof_int
+EOF
+
+
+echo $ac_n "checking size of long""... $ac_c" 1>&6
+echo "configure:1692: checking size of long" >&5
+if eval "test \"`echo '$''{'ac_cv_sizeof_long'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test "$cross_compiling" = yes; then
+    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1700 "configure"
+#include "confdefs.h"
+#include <stdio.h>
+main()
+{
+  FILE *f=fopen("conftestval", "w");
+  if (!f) exit(1);
+  fprintf(f, "%d\n", sizeof(long));
+  exit(0);
+}
+EOF
+if { (eval echo configure:1711: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+then
+  ac_cv_sizeof_long=`cat conftestval`
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  ac_cv_sizeof_long=0
+fi
+rm -fr conftest*
+fi
+
+fi
+echo "$ac_t""$ac_cv_sizeof_long" 1>&6
+cat >> confdefs.h <<EOF
+#define SIZEOF_LONG $ac_cv_sizeof_long
+EOF
+
+
+echo $ac_n "checking size of short""... $ac_c" 1>&6
+echo "configure:1731: checking size of short" >&5
+if eval "test \"`echo '$''{'ac_cv_sizeof_short'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test "$cross_compiling" = yes; then
+    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1739 "configure"
+#include "confdefs.h"
+#include <stdio.h>
+main()
+{
+  FILE *f=fopen("conftestval", "w");
+  if (!f) exit(1);
+  fprintf(f, "%d\n", sizeof(short));
+  exit(0);
+}
+EOF
+if { (eval echo configure:1750: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+then
+  ac_cv_sizeof_short=`cat conftestval`
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  ac_cv_sizeof_short=0
+fi
+rm -fr conftest*
+fi
+
+fi
+echo "$ac_t""$ac_cv_sizeof_short" 1>&6
+cat >> confdefs.h <<EOF
+#define SIZEOF_SHORT $ac_cv_sizeof_short
+EOF
+
+
+
+echo $ac_n "checking for working const""... $ac_c" 1>&6
+echo "configure:1771: checking for working const" >&5
+if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1776 "configure"
+#include "confdefs.h"
+
+int main() {
+
+/* Ultrix mips cc rejects this.  */
+typedef int charset[2]; const charset x;
+/* SunOS 4.1.1 cc rejects this.  */
+char const *const *ccp;
+char **p;
+/* NEC SVR4.0.2 mips cc rejects this.  */
+struct point {int x, y;};
+static struct point const zero = {0,0};
+/* AIX XL C 1.02.0.0 rejects this.
+   It does not let you subtract one const X* pointer from another in an arm
+   of an if-expression whose if-part is not a constant expression */
+const char *g = "string";
+ccp = &g + (g ? g-g : 0);
+/* HPUX 7.0 cc rejects these. */
+++ccp;
+p = (char**) ccp;
+ccp = (char const *const *) p;
+{ /* SCO 3.2v4 cc rejects this.  */
+  char *t;
+  char const *s = 0 ? (char *) 0 : (char const *) 0;
+
+  *t++ = 0;
+}
+{ /* Someone thinks the Sun supposedly-ANSI compiler will reject this.  */
+  int x[] = {25, 17};
+  const int *foo = &x[0];
+  ++foo;
+}
+{ /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
+  typedef const int *iptr;
+  iptr p = 0;
+  ++p;
+}
+{ /* AIX XL C 1.02.0.0 rejects this saying
+     "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
+  struct s { int j; const int *ap[3]; };
+  struct s *b; b->j = 5;
+}
+{ /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
+  const int foo = 10;
+}
+
+; return 0; }
+EOF
+if { (eval echo configure:1825: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+  ac_cv_c_const=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  ac_cv_c_const=no
+fi
+rm -f conftest*
+fi
+
+echo "$ac_t""$ac_cv_c_const" 1>&6
+if test $ac_cv_c_const = no; then
+  cat >> confdefs.h <<\EOF
+#define const 
+EOF
+
+fi
+
+echo $ac_n "checking for inline""... $ac_c" 1>&6
+echo "configure:1846: checking for inline" >&5
+if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  ac_cv_c_inline=no
+for ac_kw in inline __inline__ __inline; do
+  cat > conftest.$ac_ext <<EOF
+#line 1853 "configure"
+#include "confdefs.h"
+
+int main() {
+} $ac_kw foo() {
+; return 0; }
+EOF
+if { (eval echo configure:1860: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+  ac_cv_c_inline=$ac_kw; break
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+fi
+rm -f conftest*
+done
+
+fi
+
+echo "$ac_t""$ac_cv_c_inline" 1>&6
+case "$ac_cv_c_inline" in
+  inline | yes) ;;
+  no) cat >> confdefs.h <<\EOF
+#define inline 
+EOF
+ ;;
+  *)  cat >> confdefs.h <<EOF
+#define inline $ac_cv_c_inline
+EOF
+ ;;
+esac
+
+echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6
+echo "configure:1886: checking whether byte ordering is bigendian" >&5
+if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  ac_cv_c_bigendian=unknown
+# See if sys/param.h defines the BYTE_ORDER macro.
+cat > conftest.$ac_ext <<EOF
+#line 1893 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#include <sys/param.h>
+int main() {
+
+#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN
+ bogus endian macros
+#endif
+; return 0; }
+EOF
+if { (eval echo configure:1904: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+  # It does; now see whether it defined to BIG_ENDIAN or not.
+cat > conftest.$ac_ext <<EOF
+#line 1908 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#include <sys/param.h>
+int main() {
+
+#if BYTE_ORDER != BIG_ENDIAN
+ not big endian
+#endif
+; return 0; }
+EOF
+if { (eval echo configure:1919: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+  ac_cv_c_bigendian=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  ac_cv_c_bigendian=no
+fi
+rm -f conftest*
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+fi
+rm -f conftest*
+if test $ac_cv_c_bigendian = unknown; then
+if test "$cross_compiling" = yes; then
+    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1939 "configure"
+#include "confdefs.h"
+main () {
+  /* Are we little or big endian?  From Harbison&Steele.  */
+  union
+  {
+    long l;
+    char c[sizeof (long)];
+  } u;
+  u.l = 1;
+  exit (u.c[sizeof (long) - 1] == 1);
+}
+EOF
+if { (eval echo configure:1952: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+then
+  ac_cv_c_bigendian=no
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  ac_cv_c_bigendian=yes
+fi
+rm -fr conftest*
+fi
+
+fi
+fi
+
+echo "$ac_t""$ac_cv_c_bigendian" 1>&6
+if test $ac_cv_c_bigendian = yes; then
+  cat >> confdefs.h <<\EOF
+#define WORDS_BIGENDIAN 1
+EOF
+
+fi
+
+echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6
+echo "configure:1976: checking whether char is unsigned" >&5
+if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test "$GCC" = yes; then
+  # GCC predefines this symbol on systems where it applies.
+cat > conftest.$ac_ext <<EOF
+#line 1983 "configure"
+#include "confdefs.h"
+#ifdef __CHAR_UNSIGNED__
+  yes
+#endif
+
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  egrep "yes" >/dev/null 2>&1; then
+  rm -rf conftest*
+  ac_cv_c_char_unsigned=yes
+else
+  rm -rf conftest*
+  ac_cv_c_char_unsigned=no
+fi
+rm -f conftest*
+
+else
+if test "$cross_compiling" = yes; then
+    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+else
+  cat > conftest.$ac_ext <<EOF
+#line 2005 "configure"
+#include "confdefs.h"
+/* volatile prevents gcc2 from optimizing the test away on sparcs.  */
+#if !defined(__STDC__) || __STDC__ != 1
+#define volatile
+#endif
+main() {
+  volatile char c = 255; exit(c < 0);
+}
+EOF
+if { (eval echo configure:2015: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+then
+  ac_cv_c_char_unsigned=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  ac_cv_c_char_unsigned=no
+fi
+rm -fr conftest*
+fi
+
+fi
+fi
+
+echo "$ac_t""$ac_cv_c_char_unsigned" 1>&6
+if test $ac_cv_c_char_unsigned = yes && test "$GCC" != yes; then
+  cat >> confdefs.h <<\EOF
+#define __CHAR_UNSIGNED__ 1
+EOF
+
+fi
+
+
+echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
+echo "configure:2040: checking return type of signal handlers" >&5
+if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 2045 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#include <signal.h>
+#ifdef signal
+#undef signal
+#endif
+#ifdef __cplusplus
+extern "C" void (*signal (int, void (*)(int)))(int);
+#else
+void (*signal ()) ();
+#endif
+
+int main() {
+int i;
+; return 0; }
+EOF
+if { (eval echo configure:2062: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+  ac_cv_type_signal=void
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  ac_cv_type_signal=int
+fi
+rm -f conftest*
+fi
+
+echo "$ac_t""$ac_cv_type_signal" 1>&6
+cat >> confdefs.h <<EOF
+#define RETSIGTYPE $ac_cv_type_signal
+EOF
+
+
+echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6
+echo "configure:2081: checking for uid_t in sys/types.h" >&5
+if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 2086 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  egrep "uid_t" >/dev/null 2>&1; then
+  rm -rf conftest*
+  ac_cv_type_uid_t=yes
+else
+  rm -rf conftest*
+  ac_cv_type_uid_t=no
+fi
+rm -f conftest*
+
+fi
+
+echo "$ac_t""$ac_cv_type_uid_t" 1>&6
+if test $ac_cv_type_uid_t = no; then
+  cat >> confdefs.h <<\EOF
+#define uid_t int
+EOF
+
+  cat >> confdefs.h <<\EOF
+#define gid_t int
+EOF
+
+fi
+
+echo $ac_n "checking for mode_t""... $ac_c" 1>&6
+echo "configure:2115: checking for mode_t" >&5
+if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 2120 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#if STDC_HEADERS
+#include <stdlib.h>
+#include <stddef.h>
+#endif
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  egrep "mode_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
+  rm -rf conftest*
+  ac_cv_type_mode_t=yes
+else
+  rm -rf conftest*
+  ac_cv_type_mode_t=no
+fi
+rm -f conftest*
+
+fi
+echo "$ac_t""$ac_cv_type_mode_t" 1>&6
+if test $ac_cv_type_mode_t = no; then
+  cat >> confdefs.h <<\EOF
+#define mode_t int
+EOF
+
+fi
+
+echo $ac_n "checking for off_t""... $ac_c" 1>&6
+echo "configure:2148: checking for off_t" >&5
+if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 2153 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#if STDC_HEADERS
+#include <stdlib.h>
+#include <stddef.h>
+#endif
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  egrep "off_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
+  rm -rf conftest*
+  ac_cv_type_off_t=yes
+else
+  rm -rf conftest*
+  ac_cv_type_off_t=no
+fi
+rm -f conftest*
+
+fi
+echo "$ac_t""$ac_cv_type_off_t" 1>&6
+if test $ac_cv_type_off_t = no; then
+  cat >> confdefs.h <<\EOF
+#define off_t long
+EOF
+
+fi
+
+echo $ac_n "checking for size_t""... $ac_c" 1>&6
+echo "configure:2181: checking for size_t" >&5
+if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 2186 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#if STDC_HEADERS
+#include <stdlib.h>
+#include <stddef.h>
+#endif
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  egrep "size_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
+  rm -rf conftest*
+  ac_cv_type_size_t=yes
+else
+  rm -rf conftest*
+  ac_cv_type_size_t=no
+fi
+rm -f conftest*
+
+fi
+echo "$ac_t""$ac_cv_type_size_t" 1>&6
+if test $ac_cv_type_size_t = no; then
+  cat >> confdefs.h <<\EOF
+#define size_t unsigned
+EOF
+
+fi
+
+echo $ac_n "checking for pid_t""... $ac_c" 1>&6
+echo "configure:2214: checking for pid_t" >&5
+if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 2219 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#if STDC_HEADERS
+#include <stdlib.h>
+#include <stddef.h>
+#endif
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  egrep "pid_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
+  rm -rf conftest*
+  ac_cv_type_pid_t=yes
+else
+  rm -rf conftest*
+  ac_cv_type_pid_t=no
+fi
+rm -f conftest*
+
+fi
+echo "$ac_t""$ac_cv_type_pid_t" 1>&6
+if test $ac_cv_type_pid_t = no; then
+  cat >> confdefs.h <<\EOF
+#define pid_t int
+EOF
+
+fi
+
+echo $ac_n "checking for st_rdev in struct stat""... $ac_c" 1>&6
+echo "configure:2247: checking for st_rdev in struct stat" >&5
+if eval "test \"`echo '$''{'ac_cv_struct_st_rdev'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 2252 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#include <sys/stat.h>
+int main() {
+struct stat s; s.st_rdev;
+; return 0; }
+EOF
+if { (eval echo configure:2260: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+  ac_cv_struct_st_rdev=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  ac_cv_struct_st_rdev=no
+fi
+rm -f conftest*
+fi
+
+echo "$ac_t""$ac_cv_struct_st_rdev" 1>&6
+if test $ac_cv_struct_st_rdev = yes; then
+  cat >> confdefs.h <<\EOF
+#define HAVE_ST_RDEV 1
+EOF
+
+fi
+
+echo $ac_n "checking for ino_t""... $ac_c" 1>&6
+echo "configure:2281: checking for ino_t" >&5
+if eval "test \"`echo '$''{'ac_cv_type_ino_t'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 2286 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#if STDC_HEADERS
+#include <stdlib.h>
+#include <stddef.h>
+#endif
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  egrep "ino_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
+  rm -rf conftest*
+  ac_cv_type_ino_t=yes
+else
+  rm -rf conftest*
+  ac_cv_type_ino_t=no
+fi
+rm -f conftest*
+
+fi
+echo "$ac_t""$ac_cv_type_ino_t" 1>&6
+if test $ac_cv_type_ino_t = no; then
+  cat >> confdefs.h <<\EOF
+#define ino_t unsigned
+EOF
+
+fi
+
+
+echo $ac_n "checking for errno in errno.h... $ac_c"
+cat > conftest.$ac_ext <<EOF
+#line 2316 "configure"
+#include "confdefs.h"
+#include <errno.h>
+int main() {
+int i = errno
+; return 0; }
+EOF
+if { (eval echo configure:2323: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+  echo yes; cat >> confdefs.h <<\EOF
+#define HAVE_ERRNO_DECL 1
+EOF
+
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  echo no
+fi
+rm -f conftest*
+
+echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6
+echo "configure:2338: checking for 8-bit clean memcmp" >&5
+if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test "$cross_compiling" = yes; then
+  ac_cv_func_memcmp_clean=no
+else
+  cat > conftest.$ac_ext <<EOF
+#line 2346 "configure"
+#include "confdefs.h"
+
+main()
+{
+  char c0 = 0x40, c1 = 0x80, c2 = 0x81;
+  exit(memcmp(&c0, &c2, 1) < 0 && memcmp(&c1, &c2, 1) < 0 ? 0 : 1);
+}
+
+EOF
+if { (eval echo configure:2356: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+then
+  ac_cv_func_memcmp_clean=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  ac_cv_func_memcmp_clean=no
+fi
+rm -fr conftest*
+fi
+
+fi
+
+echo "$ac_t""$ac_cv_func_memcmp_clean" 1>&6
+test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.o"
+
+
+###############################################
+# test for where we get crypt() from
+if test "$ac_cv_lib_crypt_crypt" = "yes"; then
+  echo $ac_n "checking for crypt in -lcrypt""... $ac_c" 1>&6
+echo "configure:2378: checking for crypt in -lcrypt" >&5
+ac_lib_var=`echo crypt'_'crypt | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  ac_save_LIBS="$LIBS"
+LIBS="-lcrypt  $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 2386 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char crypt();
+
+int main() {
+crypt()
+; return 0; }
+EOF
+if { (eval echo configure:2397: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_lib=HAVE_LIB`echo crypt | sed -e 's/[^a-zA-Z0-9_]/_/g' \
+    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_lib 1
+EOF
+
+  LIBS="-lcrypt $LIBS"
+
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+  cat >> confdefs.h <<\EOF
+#define HAVE_CRYPT 1
+EOF
+
+fi
+if test "$ac_cv_lib_crypt_crypt" = "no" || 
+   test "$ac_cv_lib_crypt_crypt" = ""; then
+# look for crypt 
+echo $ac_n "checking for crypt""... $ac_c" 1>&6
+echo "configure:2433: checking for crypt" >&5
+if eval "test \"`echo '$''{'ac_cv_func_crypt'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 2438 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char crypt(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char crypt();
+
+int main() {
+
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_crypt) || defined (__stub___crypt)
+choke me
+#else
+crypt();
+#endif
+
+; return 0; }
+EOF
+if { (eval echo configure:2461: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+  rm -rf conftest*
+  eval "ac_cv_func_crypt=yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_func_crypt=no"
+fi
+rm -f conftest*
+fi
+
+if eval "test \"`echo '$ac_cv_func_'crypt`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  cat >> confdefs.h <<\EOF
+#define HAVE_CRYPT 1
+EOF
+
+else
+  echo "$ac_t""no" 1>&6
+case "$LIBS" in
+*-lcrypt*) ;;
+*) echo $ac_n "checking for crypt in -lcrypt""... $ac_c" 1>&6
+echo "configure:2484: checking for crypt in -lcrypt" >&5
+ac_lib_var=`echo crypt'_'crypt | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  ac_save_LIBS="$LIBS"
+LIBS="-lcrypt  $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 2492 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char crypt();
+
+int main() {
+crypt()
+; return 0; }
+EOF
+if { (eval echo configure:2503: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_lib=HAVE_LIB`echo crypt | sed -e 's/[^a-zA-Z0-9_]/_/g' \
+    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_lib 1
+EOF
+
+  LIBS="-lcrypt $LIBS"
+
+else
+  echo "$ac_t""no" 1>&6
+fi
+ ;;
+esac
+if test "$ac_cv_lib_crypt_crypt" = "yes"; then
+  ac_cv_func_crypt=yes
+  cat >> confdefs.h <<\EOF
+#define HAVE_CRYPT 1
+EOF
+
+fi
+fi
+
+fi
+
+
+###############################################
+# test for where we get pam_authenticate() from
+# might need libdl for this to work
+if test "$ac_cv_header_security_pam_appl_h" = "yes"; then
+  echo $ac_n "checking for -ldl""... $ac_c" 1>&6
+echo "configure:2548: checking for -ldl" >&5
+if eval "test \"`echo '$''{'ac_cv_lib_dl'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  ac_save_LIBS="$LIBS"
+LIBS="-ldl  $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 2555 "configure"
+#include "confdefs.h"
+
+int main() {
+main()
+; return 0; }
+EOF
+if { (eval echo configure:2562: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+  rm -rf conftest*
+  ac_cv_lib_dl=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  ac_cv_lib_dl=no
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+echo "$ac_t""$ac_cv_lib_dl" 1>&6
+if test "$ac_cv_lib_dl" = yes; then
+  cat >> confdefs.h <<\EOF
+#define HAVE_LIBDL 1
+EOF
+
+  LIBS="-ldl $LIBS"
+
+fi
+
+fi
+if test "$ac_cv_lib_pam_pam_authenticate" = "yes"; then
+  echo $ac_n "checking for pam_authenticate in -lpam""... $ac_c" 1>&6
+echo "configure:2588: checking for pam_authenticate in -lpam" >&5
+ac_lib_var=`echo pam'_'pam_authenticate | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  ac_save_LIBS="$LIBS"
+LIBS="-lpam  $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 2596 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char pam_authenticate();
+
+int main() {
+pam_authenticate()
+; return 0; }
+EOF
+if { (eval echo configure:2607: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_lib=HAVE_LIB`echo pam | sed -e 's/[^a-zA-Z0-9_]/_/g' \
+    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_lib 1
+EOF
+
+  LIBS="-lpam $LIBS"
+
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+  cat >> confdefs.h <<\EOF
+#define HAVE_PAM_AUTHENTICATE 1
+EOF
+
+fi
+if test "$ac_cv_lib_pam_pam_authenticate" = "no" || 
+   test "$ac_cv_lib_pam_pam_authenticate" = ""; then
+# look for pam_authenticate
+echo $ac_n "checking for pam_authenticate""... $ac_c" 1>&6
+echo "configure:2643: checking for pam_authenticate" >&5
+if eval "test \"`echo '$''{'ac_cv_func_pam_authenticate'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 2648 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char pam_authenticate(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char pam_authenticate();
+
+int main() {
+
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_pam_authenticate) || defined (__stub___pam_authenticate)
+choke me
+#else
+pam_authenticate();
+#endif
+
+; return 0; }
+EOF
+if { (eval echo configure:2671: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+  rm -rf conftest*
+  eval "ac_cv_func_pam_authenticate=yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_func_pam_authenticate=no"
+fi
+rm -f conftest*
+fi
+
+if eval "test \"`echo '$ac_cv_func_'pam_authenticate`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  cat >> confdefs.h <<\EOF
+#define HAVE_PAM_AUTHENTICATE 1
+EOF
+
+else
+  echo "$ac_t""no" 1>&6
+case "$LIBS" in
+*-lpam*) ;;
+*) echo $ac_n "checking for pam_authenticate in -lpam""... $ac_c" 1>&6
+echo "configure:2694: checking for pam_authenticate in -lpam" >&5
+ac_lib_var=`echo pam'_'pam_authenticate | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  ac_save_LIBS="$LIBS"
+LIBS="-lpam  $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 2702 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char pam_authenticate();
+
+int main() {
+pam_authenticate()
+; return 0; }
+EOF
+if { (eval echo configure:2713: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_lib=HAVE_LIB`echo pam | sed -e 's/[^a-zA-Z0-9_]/_/g' \
+    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_lib 1
+EOF
+
+  LIBS="-lpam $LIBS"
+
+else
+  echo "$ac_t""no" 1>&6
+fi
+ ;;
+esac
+if test "$ac_cv_lib_pam_pam_authenticate" = "yes"; then
+  ac_cv_func_pam_authenticate=yes
+  cat >> confdefs.h <<\EOF
+#define HAVE_PAM_AUTHENTICATE 1
+EOF
+
+fi
+fi
+
+fi
+
+
+for ac_func in waitpid getcwd strdup strerror chown chmod chroot
+do
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:2756: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 2761 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char $ac_func();
+
+int main() {
+
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+$ac_func();
+#endif
+
+; return 0; }
+EOF
+if { (eval echo configure:2784: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+  rm -rf conftest*
+  eval "ac_cv_func_$ac_func=yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+else
+  echo "$ac_t""no" 1>&6
+fi
+done
+
+for ac_func in fstat strchr utime utimes getrlimit fsync execl
+do
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:2811: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 2816 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char $ac_func();
+
+int main() {
+
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+$ac_func();
+#endif
+
+; return 0; }
+EOF
+if { (eval echo configure:2839: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+  rm -rf conftest*
+  eval "ac_cv_func_$ac_func=yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+else
+  echo "$ac_t""no" 1>&6
+fi
+done
+
+for ac_func in memmove vsnprintf setsid glob strpbrk pipe crypt16 getauthuid
+do
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:2866: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 2871 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char $ac_func();
+
+int main() {
+
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+$ac_func();
+#endif
+
+; return 0; }
+EOF
+if { (eval echo configure:2894: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+  rm -rf conftest*
+  eval "ac_cv_func_$ac_func=yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+else
+  echo "$ac_t""no" 1>&6
+fi
+done
+
+for ac_func in strftime sigprocmask sigblock sigaction innetgr
+do
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:2921: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 2926 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char $ac_func();
+
+int main() {
+
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+$ac_func();
+#endif
+
+; return 0; }
+EOF
+if { (eval echo configure:2949: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+  rm -rf conftest*
+  eval "ac_cv_func_$ac_func=yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+else
+  echo "$ac_t""no" 1>&6
+fi
+done
+
+for ac_func in initgroups select rdchk getgrnam pathconf putprpwnam
+do
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:2976: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 2981 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char $ac_func();
+
+int main() {
+
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+$ac_func();
+#endif
+
+; return 0; }
+EOF
+if { (eval echo configure:3004: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+  rm -rf conftest*
+  eval "ac_cv_func_$ac_func=yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+else
+  echo "$ac_t""no" 1>&6
+fi
+done
+
+for ac_func in setresuid setuidx setgroups mktime rename ftruncate
+do
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:3031: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 3036 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char $ac_func();
+
+int main() {
+
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+$ac_func();
+#endif
+
+; return 0; }
+EOF
+if { (eval echo configure:3059: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+  rm -rf conftest*
+  eval "ac_cv_func_$ac_func=yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+else
+  echo "$ac_t""no" 1>&6
+fi
+done
+
+for ac_func in set_auth_parameters atexit grantpt getspnam dup2
+do
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:3086: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 3091 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char $ac_func();
+
+int main() {
+
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+$ac_func();
+#endif
+
+; return 0; }
+EOF
+if { (eval echo configure:3114: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+  rm -rf conftest*
+  eval "ac_cv_func_$ac_func=yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+else
+  echo "$ac_t""no" 1>&6
+fi
+done
+
+for ac_func in bigcrypt getprpwnam setluid yp_get_default_domain
+do
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:3141: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 3146 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char $ac_func();
+
+int main() {
+
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+$ac_func();
+#endif
+
+; return 0; }
+EOF
+if { (eval echo configure:3169: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+  rm -rf conftest*
+  eval "ac_cv_func_$ac_func=yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+else
+  echo "$ac_t""no" 1>&6
+fi
+done
+
+
+echo $ac_n "checking for long long ... $ac_c"
+if test "$cross_compiling" = yes; then
+    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+else
+  cat > conftest.$ac_ext <<EOF
+#line 3199 "configure"
+#include "confdefs.h"
+#include <stdio.h>
+main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }
+EOF
+if { (eval echo configure:3204: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+then
+  echo yes;cat >> confdefs.h <<\EOF
+#define HAVE_LONGLONG 1
+EOF
+
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  echo no
+fi
+rm -fr conftest*
+fi
+
+
+echo $ac_n "checking for off64_t ... $ac_c"
+if test "$cross_compiling" = yes; then
+    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+else
+  cat > conftest.$ac_ext <<EOF
+#line 3225 "configure"
+#include "confdefs.h"
+#include <stdio.h>
+#include <sys/stat.h>
+main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }
+EOF
+if { (eval echo configure:3231: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+then
+  echo yes;cat >> confdefs.h <<\EOF
+#define HAVE_OFF64_T 1
+EOF
+
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  echo no
+fi
+rm -fr conftest*
+fi
+
+
+echo $ac_n "checking for union semun ... $ac_c"
+if test "$cross_compiling" = yes; then
+    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+else
+  cat > conftest.$ac_ext <<EOF
+#line 3252 "configure"
+#include "confdefs.h"
+
+#include <sys/types.h>
+#include <sys/ipc.h>
+#include <sys/sem.h>
+main() { union semun ss; exit(0); }
+EOF
+if { (eval echo configure:3260: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+then
+  echo yes;cat >> confdefs.h <<\EOF
+#define HAVE_UNION_SEMUN 1
+EOF
+
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  echo no
+fi
+rm -fr conftest*
+fi
+
+
+echo $ac_n "checking for unsigned char ... $ac_c"
+if test "$cross_compiling" = yes; then
+    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+else
+  cat > conftest.$ac_ext <<EOF
+#line 3281 "configure"
+#include "confdefs.h"
+#include <stdio.h>
+main() { char c; c=250; exit((c > 0)?0:1); }
+EOF
+if { (eval echo configure:3286: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+then
+  echo yes;cat >> confdefs.h <<\EOF
+#define HAVE_UNSIGNED_CHAR 1
+EOF
+
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  echo no
+fi
+rm -fr conftest*
+fi
+
+
+echo $ac_n "checking for sin_len in sock ... $ac_c"
+cat > conftest.$ac_ext <<EOF
+#line 3304 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#include <sys/socket.h>
+int main() {
+struct sockaddr_in sock; sock.sin_len = sizeof(sock);
+; return 0; }
+EOF
+if { (eval echo configure:3312: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+  echo yes;cat >> confdefs.h <<\EOF
+#define HAVE_SOCK_SIN_LEN 1
+EOF
+
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  echo no
+fi
+rm -f conftest*
+
+echo $ac_n "checking if gettimeofday takes tz argument ... $ac_c"
+if test "$cross_compiling" = yes; then
+    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+else
+  cat > conftest.$ac_ext <<EOF
+#line 3331 "configure"
+#include "confdefs.h"
+
+#include <sys/time.h>
+#include <unistd.h>
+main() { struct timeval tv; exit(gettimeofday(&tv, NULL));}
+EOF
+if { (eval echo configure:3338: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+then
+  echo yes;cat >> confdefs.h <<\EOF
+#define HAVE_GETTIMEOFDAY_TZ 1
+EOF
+
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  echo no
+fi
+rm -fr conftest*
+fi
+
+
+
+echo $ac_n "checking for broken readdir ... $ac_c"
+if test "$cross_compiling" = yes; then
+    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+else
+  cat > conftest.$ac_ext <<EOF
+#line 3360 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#include <dirent.h>
+main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
+if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
+di->d_name[0] == 0) exit(0); exit(1);} 
+EOF
+if { (eval echo configure:3368: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+then
+  echo yes - you are using the broken /usr/ucb/cc;cat >> confdefs.h <<\EOF
+#define HAVE_BROKEN_READDIR 1
+EOF
+
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  echo no
+fi
+rm -fr conftest*
+fi
+
+
+echo $ac_n "checking for utimbuf ... $ac_c"
+cat > conftest.$ac_ext <<EOF
+#line 3386 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#include <utime.h>
+int main() {
+struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));
+; return 0; }
+EOF
+if { (eval echo configure:3394: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+  echo yes;cat >> confdefs.h <<\EOF
+#define HAVE_UTIMBUF 1
+EOF
+
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  echo no
+fi
+rm -f conftest*
+
+echo $ac_n "checking for ftruncate extend ... $ac_c"
+if test "$cross_compiling" = yes; then
+    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+else
+  cat > conftest.$ac_ext <<EOF
+#line 3413 "configure"
+#include "confdefs.h"
+#include "tests/ftruncate.c"
+EOF
+if { (eval echo configure:3417: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+then
+  echo yes;cat >> confdefs.h <<\EOF
+#define HAVE_FTRUNCATE_EXTEND 1
+EOF
+
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  echo no
+fi
+rm -fr conftest*
+fi
+
+
+# The following test taken from the cvs sources
+# If we can't find connect, try looking in -lsocket, -lnsl, and -linet.
+# The Irix 5 libc.so has connect and gethostbyname, but Irix 5 also has
+# libsocket.so which has a bad implementation of gethostbyname (it
+# only looks in /etc/hosts), so we only look for -lsocket if we need
+# it.
+echo $ac_n "checking for connect""... $ac_c" 1>&6
+echo "configure:3440: checking for connect" >&5
+if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 3445 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char connect(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char connect();
+
+int main() {
+
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_connect) || defined (__stub___connect)
+choke me
+#else
+connect();
+#endif
+
+; return 0; }
+EOF
+if { (eval echo configure:3468: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+  rm -rf conftest*
+  eval "ac_cv_func_connect=yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_func_connect=no"
+fi
+rm -f conftest*
+fi
+
+if eval "test \"`echo '$ac_cv_func_'connect`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  :
+else
+  echo "$ac_t""no" 1>&6
+case "$LIBS" in
+*-lnsl*) ;;
+*) echo $ac_n "checking for printf in -lnsl_s""... $ac_c" 1>&6
+echo "configure:3488: checking for printf in -lnsl_s" >&5
+ac_lib_var=`echo nsl_s'_'printf | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  ac_save_LIBS="$LIBS"
+LIBS="-lnsl_s  $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 3496 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char printf();
+
+int main() {
+printf()
+; return 0; }
+EOF
+if { (eval echo configure:3507: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_lib=HAVE_LIB`echo nsl_s | sed -e 's/[^a-zA-Z0-9_]/_/g' \
+    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_lib 1
+EOF
+
+  LIBS="-lnsl_s $LIBS"
+
+else
+  echo "$ac_t""no" 1>&6
+fi
+ ;;
+esac
+case "$LIBS" in
+*-lnsl*) ;;
+*) echo $ac_n "checking for printf in -lnsl""... $ac_c" 1>&6
+echo "configure:3538: checking for printf in -lnsl" >&5
+ac_lib_var=`echo nsl'_'printf | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  ac_save_LIBS="$LIBS"
+LIBS="-lnsl  $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 3546 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char printf();
+
+int main() {
+printf()
+; return 0; }
+EOF
+if { (eval echo configure:3557: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_lib=HAVE_LIB`echo nsl | sed -e 's/[^a-zA-Z0-9_]/_/g' \
+    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_lib 1
+EOF
+
+  LIBS="-lnsl $LIBS"
+
+else
+  echo "$ac_t""no" 1>&6
+fi
+ ;;
+esac
+case "$LIBS" in
+*-lsocket*) ;;
+*) echo $ac_n "checking for connect in -lsocket""... $ac_c" 1>&6
+echo "configure:3588: checking for connect in -lsocket" >&5
+ac_lib_var=`echo socket'_'connect | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  ac_save_LIBS="$LIBS"
+LIBS="-lsocket  $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 3596 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char connect();
+
+int main() {
+connect()
+; return 0; }
+EOF
+if { (eval echo configure:3607: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_lib=HAVE_LIB`echo socket | sed -e 's/[^a-zA-Z0-9_]/_/g' \
+    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_lib 1
+EOF
+
+  LIBS="-lsocket $LIBS"
+
+else
+  echo "$ac_t""no" 1>&6
+fi
+ ;;
+esac
+case "$LIBS" in
+*-linet*) ;;
+*) echo $ac_n "checking for connect in -linet""... $ac_c" 1>&6
+echo "configure:3638: checking for connect in -linet" >&5
+ac_lib_var=`echo inet'_'connect | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  ac_save_LIBS="$LIBS"
+LIBS="-linet  $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 3646 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char connect();
+
+int main() {
+connect()
+; return 0; }
+EOF
+if { (eval echo configure:3657: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_lib=HAVE_LIB`echo inet | sed -e 's/[^a-zA-Z0-9_]/_/g' \
+    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_lib 1
+EOF
+
+  LIBS="-linet $LIBS"
+
+else
+  echo "$ac_t""no" 1>&6
+fi
+ ;;
+esac
+if test "$ac_cv_lib_socket_connect" = "yes" || 
+   test "$ac_cv_lib_inet_connect" = "yes"; then
+  ac_cv_func_connect=yes
+  cat >> confdefs.h <<\EOF
+#define HAVE_CONNECT 1
+EOF
+
+fi
+fi
+
+
+
+echo $ac_n "checking for root ... $ac_c"
+if test "$cross_compiling" = yes; then
+    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+else
+  cat > conftest.$ac_ext <<EOF
+#line 3702 "configure"
+#include "confdefs.h"
+main() { exit(getuid() != 0); }
+EOF
+if { (eval echo configure:3706: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+then
+  echo yes;cat >> confdefs.h <<\EOF
+#define HAVE_ROOT 1
+EOF
+
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  echo WARNING: running as non-root will disable some tests;
+fi
+rm -fr conftest*
+fi
+
+
+netmask=no;
+echo $ac_n "checking for netmask ifconf ... $ac_c"
+if test "$cross_compiling" = yes; then
+    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+else
+  cat > conftest.$ac_ext <<EOF
+#line 3728 "configure"
+#include "confdefs.h"
+
+#define HAVE_NETMASK_IFCONF 1
+#define AUTOCONF 1
+#include "netmask.c"
+EOF
+if { (eval echo configure:3735: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+then
+  echo yes;netmask=yes;cat >> confdefs.h <<\EOF
+#define HAVE_NETMASK_IFCONF 1
+EOF
+
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  echo no
+fi
+rm -fr conftest*
+fi
+
+
+if test $netmask = no; then
+echo $ac_n "checking for netmask ifreq ... $ac_c"
+if test "$cross_compiling" = yes; then
+    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+else
+  cat > conftest.$ac_ext <<EOF
+#line 3757 "configure"
+#include "confdefs.h"
+
+#define HAVE_NETMASK_IFREQ 1
+#define AUTOCONF 1
+#include "netmask.c"
+EOF
+if { (eval echo configure:3764: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+then
+  echo yes;netmask=yes;cat >> confdefs.h <<\EOF
+#define HAVE_NETMASK_IFREQ 1
+EOF
+
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  echo no
+fi
+rm -fr conftest*
+fi
+
+fi
+
+if test $netmask = no; then
+echo $ac_n "checking for netmask AIX ... $ac_c"
+if test "$cross_compiling" = yes; then
+    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+else
+  cat > conftest.$ac_ext <<EOF
+#line 3787 "configure"
+#include "confdefs.h"
+
+#define HAVE_NETMASK_AIX 1
+#define AUTOCONF 1
+#include "netmask.c"
+EOF
+if { (eval echo configure:3794: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+then
+  echo yes;netmask=yes;cat >> confdefs.h <<\EOF
+#define HAVE_NETMASK_AIX 1
+EOF
+
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  echo no
+fi
+rm -fr conftest*
+fi
+
+fi
+
+echo $ac_n "checking for trapdoor seteuid ... $ac_c"
+if test "$cross_compiling" = yes; then
+    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+else
+  cat > conftest.$ac_ext <<EOF
+#line 3816 "configure"
+#include "confdefs.h"
+#include "tests/trapdoor.c"
+EOF
+if { (eval echo configure:3820: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+then
+  echo no
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  echo yes;cat >> confdefs.h <<\EOF
+#define HAVE_TRAPDOOR_UID 1
+EOF
+
+fi
+rm -fr conftest*
+fi
+
+
+echo $ac_n "checking for shared mmap ... $ac_c"
+if test "$cross_compiling" = yes; then
+    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+else
+  cat > conftest.$ac_ext <<EOF
+#line 3841 "configure"
+#include "confdefs.h"
+#include "tests/shared_mmap.c"
+EOF
+if { (eval echo configure:3845: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+then
+  echo yes;cat >> confdefs.h <<\EOF
+#define HAVE_SHARED_MMAP 1
+EOF
+
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  echo no
+fi
+rm -fr conftest*
+fi
+
+
+echo $ac_n "checking for fcntl locking ... $ac_c"
+if test "$cross_compiling" = yes; then
+    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+else
+  cat > conftest.$ac_ext <<EOF
+#line 3866 "configure"
+#include "confdefs.h"
+#include "tests/fcntl_lock.c"
+EOF
+if { (eval echo configure:3870: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+then
+  echo yes;cat >> confdefs.h <<\EOF
+#define HAVE_FCNTL_LOCK 1
+EOF
+
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  echo no
+fi
+rm -fr conftest*
+fi
+
+
+echo $ac_n "checking for sysv ipc ... $ac_c"
+if test "$cross_compiling" = yes; then
+    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+else
+  cat > conftest.$ac_ext <<EOF
+#line 3891 "configure"
+#include "confdefs.h"
+#include "tests/sysv_ipc.c"
+EOF
+if { (eval echo configure:3895: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+then
+  echo yes;cat >> confdefs.h <<\EOF
+#define HAVE_SYSV_IPC 1
+EOF
+
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  echo no
+fi
+rm -fr conftest*
+fi
+
+
+#################################################
+# check for the AFS filesystem
+echo $ac_n "checking whether to use AFS""... $ac_c" 1>&6
+echo "configure:3914: checking whether to use AFS" >&5
+# Check whether --with-afs or --without-afs was given.
+if test "${with_afs+set}" = set; then
+  withval="$with_afs"
+   case "$withval" in
+  yes)
+    echo "$ac_t""yes" 1>&6
+    cat >> confdefs.h <<\EOF
+#define WITH_AFS 1
+EOF
+
+    ;;
+  *)
+    echo "$ac_t""no" 1>&6
+    ;;
+  esac 
+else
+  echo "$ac_t""no" 1>&6
+
+fi
+
+
+
+#################################################
+# check for the DFS auth system
+echo $ac_n "checking whether to use DFS auth""... $ac_c" 1>&6
+echo "configure:3940: checking whether to use DFS auth" >&5
+# Check whether --with-dfs or --without-dfs was given.
+if test "${with_dfs+set}" = set; then
+  withval="$with_dfs"
+   case "$withval" in
+  yes)
+    echo "$ac_t""yes" 1>&6
+    cat >> confdefs.h <<\EOF
+#define WITH_DFS 1
+EOF
+
+    ;;
+  *)
+    echo "$ac_t""no" 1>&6
+    ;;
+  esac 
+else
+  echo "$ac_t""no" 1>&6
+
+fi
+
+
+#################################################
+# check for automount support
+echo $ac_n "checking whether to use AUTOMOUNT""... $ac_c" 1>&6
+echo "configure:3965: checking whether to use AUTOMOUNT" >&5
+# Check whether --with-automount or --without-automount was given.
+if test "${with_automount+set}" = set; then
+  withval="$with_automount"
+   case "$withval" in
+  yes)
+    echo "$ac_t""yes" 1>&6
+    cat >> confdefs.h <<\EOF
+#define WITH_AUTOMOUNT 1
+EOF
+
+    ;;
+  *)
+    echo "$ac_t""no" 1>&6
+    ;;
+  esac 
+else
+  echo "$ac_t""no" 1>&6
+
+fi
+
+
+#################################################
+# check for a LDAP password database
+echo $ac_n "checking whether to use LDAP password database""... $ac_c" 1>&6
+echo "configure:3990: checking whether to use LDAP password database" >&5
+# Check whether --with-ldap or --without-ldap was given.
+if test "${with_ldap+set}" = set; then
+  withval="$with_ldap"
+   case "$withval" in
+  yes)
+    echo "$ac_t""yes" 1>&6
+    cat >> confdefs.h <<\EOF
+#define WITH_LDAP 1
+EOF
+
+    ;;
+  *)
+    echo "$ac_t""no" 1>&6
+    ;;
+  esac 
+else
+  echo "$ac_t""no" 1>&6
+
+fi
+
+
+#################################################
+# check for a NISPLUS password database
+echo $ac_n "checking whether to use NISPLUS password database""... $ac_c" 1>&6
+echo "configure:4015: checking whether to use NISPLUS password database" >&5
+# Check whether --with-nisplus or --without-nisplus was given.
+if test "${with_nisplus+set}" = set; then
+  withval="$with_nisplus"
+   case "$withval" in
+  yes)
+    echo "$ac_t""yes" 1>&6
+    cat >> confdefs.h <<\EOF
+#define WITH_NISPLUS 1
+EOF
+
+    ;;
+  *)
+    echo "$ac_t""no" 1>&6
+    ;;
+  esac 
+else
+  echo "$ac_t""no" 1>&6
+
+fi
+
+
+#################################################
+# check for the secure socket layer
+echo $ac_n "checking whether to use SSL""... $ac_c" 1>&6
+echo "configure:4040: checking whether to use SSL" >&5
+# Check whether --with-ssl or --without-ssl was given.
+if test "${with_ssl+set}" = set; then
+  withval="$with_ssl"
+   case "$withval" in
+  yes)
+    echo "$ac_t""yes" 1>&6
+    cat >> confdefs.h <<\EOF
+#define WITH_SSL 1
+EOF
+
+    ;;
+  *)
+    echo "$ac_t""no" 1>&6
+    ;;
+  esac 
+else
+  echo "$ac_t""no" 1>&6
+
+fi
+
+
+#################################################
+# check for experimental mmap support
+echo $ac_n "checking whether to use MMAP""... $ac_c" 1>&6
+echo "configure:4065: checking whether to use MMAP" >&5
+# Check whether --with-mmap or --without-mmap was given.
+if test "${with_mmap+set}" = set; then
+  withval="$with_mmap"
+   case "$withval" in
+  yes)
+    echo "$ac_t""yes" 1>&6
+    cat >> confdefs.h <<\EOF
+#define WITH_MMAP 1
+EOF
+
+    ;;
+  *)
+    echo "$ac_t""no" 1>&6
+    ;;
+  esac 
+else
+  echo "$ac_t""no" 1>&6
+
+fi
+
+
+#################################################
+# check for syslog logging
+echo $ac_n "checking whether to use syslog logging""... $ac_c" 1>&6
+echo "configure:4090: checking whether to use syslog logging" >&5
+# Check whether --with-syslog or --without-syslog was given.
+if test "${with_syslog+set}" = set; then
+  withval="$with_syslog"
+   case "$withval" in
+  yes)
+    echo "$ac_t""yes" 1>&6
+    cat >> confdefs.h <<\EOF
+#define WITH_SYSLOG 1
+EOF
+
+    ;;
+  *)
+    echo "$ac_t""no" 1>&6
+    ;;
+  esac 
+else
+  echo "$ac_t""no" 1>&6
+
+fi
+
+
+
+#################################################
+# these tests are taken from the GNU fileutils package
+echo "checking how to get filesystem space usage" 1>&6
+echo "configure:4116: checking how to get filesystem space usage" >&5
+space=no
+
+# Perform only the link test since it seems there are no variants of the
+# statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
+# because that got a false positive on SCO OSR5.  Adding the declaration
+# of a `struct statvfs' causes this test to fail (as it should) on such
+# systems.  That system is reported to work fine with STAT_STATFS4 which
+# is what it gets when this test fails.
+if test $space = no; then
+  # SVR4
+  echo $ac_n "checking statvfs function (SVR4)""... $ac_c" 1>&6
+echo "configure:4128: checking statvfs function (SVR4)" >&5
+if eval "test \"`echo '$''{'fu_cv_sys_stat_statvfs'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 4133 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#include <sys/statvfs.h>
+int main() {
+struct statvfs fsd; statvfs (0, &fsd);
+; return 0; }
+EOF
+if { (eval echo configure:4141: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+  rm -rf conftest*
+  fu_cv_sys_stat_statvfs=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  fu_cv_sys_stat_statvfs=no
+fi
+rm -f conftest*
+fi
+
+echo "$ac_t""$fu_cv_sys_stat_statvfs" 1>&6
+  if test $fu_cv_sys_stat_statvfs = yes; then
+    space=yes
+    cat >> confdefs.h <<\EOF
+#define STAT_STATVFS 1
+EOF
+
+  fi
+fi
+
+if test $space = no; then
+  # DEC Alpha running OSF/1
+  echo $ac_n "checking for 3-argument statfs function (DEC OSF/1)""... $ac_c" 1>&6
+echo "configure:4166: checking for 3-argument statfs function (DEC OSF/1)" >&5
+  if eval "test \"`echo '$''{'fu_cv_sys_stat_statfs3_osf1'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test "$cross_compiling" = yes; then
+  fu_cv_sys_stat_statfs3_osf1=no
+else
+  cat > conftest.$ac_ext <<EOF
+#line 4174 "configure"
+#include "confdefs.h"
+
+#include <sys/param.h>
+#include <sys/types.h>
+#include <sys/mount.h>
+  main ()
+  {
+    struct statfs fsd;
+    fsd.f_fsize = 0;
+    exit (statfs (".", &fsd, sizeof (struct statfs)));
+  }
+EOF
+if { (eval echo configure:4187: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+then
+  fu_cv_sys_stat_statfs3_osf1=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  fu_cv_sys_stat_statfs3_osf1=no
+fi
+rm -fr conftest*
+fi
+
+fi
+
+  echo "$ac_t""$fu_cv_sys_stat_statfs3_osf1" 1>&6
+  if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
+    space=yes
+    cat >> confdefs.h <<\EOF
+#define STAT_STATFS3_OSF1 1
+EOF
+
+  fi
+fi
+
+if test $space = no; then
+# AIX
+  echo $ac_n "checking for two-argument statfs with statfs.bsize member (AIX, 4.3BSD)""... $ac_c" 1>&6
+echo "configure:4214: checking for two-argument statfs with statfs.bsize member (AIX, 4.3BSD)" >&5
+  if eval "test \"`echo '$''{'fu_cv_sys_stat_statfs2_bsize'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test "$cross_compiling" = yes; then
+  fu_cv_sys_stat_statfs2_bsize=no
+else
+  cat > conftest.$ac_ext <<EOF
+#line 4222 "configure"
+#include "confdefs.h"
+
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_MOUNT_H
+#include <sys/mount.h>
+#endif
+#ifdef HAVE_SYS_VFS_H
+#include <sys/vfs.h>
+#endif
+  main ()
+  {
+  struct statfs fsd;
+  fsd.f_bsize = 0;
+  exit (statfs (".", &fsd));
+  }
+EOF
+if { (eval echo configure:4241: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+then
+  fu_cv_sys_stat_statfs2_bsize=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  fu_cv_sys_stat_statfs2_bsize=no
+fi
+rm -fr conftest*
+fi
+
+fi
+
+  echo "$ac_t""$fu_cv_sys_stat_statfs2_bsize" 1>&6
+  if test $fu_cv_sys_stat_statfs2_bsize = yes; then
+    space=yes
+    cat >> confdefs.h <<\EOF
+#define STAT_STATFS2_BSIZE 1
+EOF
+
+  fi
+fi
+
+if test $space = no; then
+# SVR3
+  echo $ac_n "checking for four-argument statfs (AIX-3.2.5, SVR3)""... $ac_c" 1>&6
+echo "configure:4268: checking for four-argument statfs (AIX-3.2.5, SVR3)" >&5
+  if eval "test \"`echo '$''{'fu_cv_sys_stat_statfs4'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test "$cross_compiling" = yes; then
+  fu_cv_sys_stat_statfs4=no
+else
+  cat > conftest.$ac_ext <<EOF
+#line 4276 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#include <sys/statfs.h>
+  main ()
+  {
+  struct statfs fsd;
+  exit (statfs (".", &fsd, sizeof fsd, 0));
+  }
+EOF
+if { (eval echo configure:4286: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+then
+  fu_cv_sys_stat_statfs4=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  fu_cv_sys_stat_statfs4=no
+fi
+rm -fr conftest*
+fi
+
+fi
+
+  echo "$ac_t""$fu_cv_sys_stat_statfs4" 1>&6
+  if test $fu_cv_sys_stat_statfs4 = yes; then
+    space=yes
+    cat >> confdefs.h <<\EOF
+#define STAT_STATFS4 1
+EOF
+
+  fi
+fi
+
+if test $space = no; then
+# 4.4BSD and NetBSD
+  echo $ac_n "checking for two-argument statfs with statfs.fsize member (4.4BSD and NetBSD)""... $ac_c" 1>&6
+echo "configure:4313: checking for two-argument statfs with statfs.fsize member (4.4BSD and NetBSD)" >&5
+  if eval "test \"`echo '$''{'fu_cv_sys_stat_statfs2_fsize'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test "$cross_compiling" = yes; then
+  fu_cv_sys_stat_statfs2_fsize=no
+else
+  cat > conftest.$ac_ext <<EOF
+#line 4321 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_MOUNT_H
+#include <sys/mount.h>
+#endif
+  main ()
+  {
+  struct statfs fsd;
+  fsd.f_fsize = 0;
+  exit (statfs (".", &fsd));
+  }
+EOF
+if { (eval echo configure:4337: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+then
+  fu_cv_sys_stat_statfs2_fsize=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  fu_cv_sys_stat_statfs2_fsize=no
+fi
+rm -fr conftest*
+fi
+
+fi
+
+  echo "$ac_t""$fu_cv_sys_stat_statfs2_fsize" 1>&6
+  if test $fu_cv_sys_stat_statfs2_fsize = yes; then
+    space=yes
+    cat >> confdefs.h <<\EOF
+#define STAT_STATFS2_FSIZE 1
+EOF
+
+  fi
+fi
+
+if test $space = no; then
+  # Ultrix
+  echo $ac_n "checking for two-argument statfs with struct fs_data (Ultrix)""... $ac_c" 1>&6
+echo "configure:4364: checking for two-argument statfs with struct fs_data (Ultrix)" >&5
+  if eval "test \"`echo '$''{'fu_cv_sys_stat_fs_data'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test "$cross_compiling" = yes; then
+  fu_cv_sys_stat_fs_data=no
+else
+  cat > conftest.$ac_ext <<EOF
+#line 4372 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_MOUNT_H
+#include <sys/mount.h>
+#endif
+#ifdef HAVE_SYS_FS_TYPES_H
+#include <sys/fs_types.h>
+#endif
+  main ()
+  {
+  struct fs_data fsd;
+  /* Ultrix's statfs returns 1 for success,
+     0 for not mounted, -1 for failure.  */
+  exit (statfs (".", &fsd) != 1);
+  }
+EOF
+if { (eval echo configure:4392: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+then
+  fu_cv_sys_stat_fs_data=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  fu_cv_sys_stat_fs_data=no
+fi
+rm -fr conftest*
+fi
+
+fi
+
+  echo "$ac_t""$fu_cv_sys_stat_fs_data" 1>&6
+  if test $fu_cv_sys_stat_fs_data = yes; then
+    space=yes
+    cat >> confdefs.h <<\EOF
+#define STAT_STATFS2_FS_DATA 1
+EOF
+
+  fi
+fi
+
+
+trap '' 1 2 15
+cat > confcache <<\EOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs.  It is not useful on other systems.
+# If it contains results you don't want to keep, you may remove or edit it.
+#
+# By default, configure uses ./config.cache as the cache file,
+# creating it if it does not exist already.  You can give configure
+# the --cache-file=FILE option to use a different cache file; that is
+# what configure does when it calls configure scripts in
+# subdirectories, so they share the cache.
+# Giving --cache-file=/dev/null disables caching, for debugging configure.
+# config.status only pays attention to the cache file if you give it the
+# --recheck option to rerun configure.
+#
+EOF
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, don't put newlines in cache variables' values.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(set) 2>&1 |
+  case `(ac_space=' '; set) 2>&1` in
+  *ac_space=\ *)
+    # `set' does not quote correctly, so add quotes (double-quote substitution
+    # turns \\\\ into \\, and sed turns \\ into \).
+    sed -n \
+      -e "s/'/'\\\\''/g" \
+      -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
+    ;;
+  *)
+    # `set' quotes correctly as required by POSIX, so do not add quotes.
+    sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
+    ;;
+  esac >> confcache
+if cmp -s $cache_file confcache; then
+  :
+else
+  if test -w $cache_file; then
+    echo "updating cache $cache_file"
+    cat confcache > $cache_file
+  else
+    echo "not updating unwritable cache $cache_file"
+  fi
+fi
+rm -f confcache
+
+trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# Any assignment to VPATH causes Sun make to only execute
+# the first set of double-colon rules, so remove it if not needed.
+# If there is a colon in the path, we need to keep it.
+if test "x$srcdir" = x.; then
+  ac_vpsub='/^[        ]*VPATH[        ]*=[^:]*$/d'
+fi
+
+trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
+
+DEFS=-DHAVE_CONFIG_H
+
+# Without the "./", some shells look in PATH for config.status.
+: ${CONFIG_STATUS=./config.status}
+
+echo creating $CONFIG_STATUS
+rm -f $CONFIG_STATUS
+cat > $CONFIG_STATUS <<EOF
+#! /bin/sh
+# Generated automatically by configure.
+# Run this file to recreate the current configuration.
+# This directory was configured as follows,
+# on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+#
+# $0 $ac_configure_args
+#
+# Compiler output produced by configure, useful for debugging
+# configure, is in ./config.log if it exists.
+
+ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
+for ac_option
+do
+  case "\$ac_option" in
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
+    exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
+  -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
+    echo "$CONFIG_STATUS generated by autoconf version 2.12"
+    exit 0 ;;
+  -help | --help | --hel | --he | --h)
+    echo "\$ac_cs_usage"; exit 0 ;;
+  *) echo "\$ac_cs_usage"; exit 1 ;;
+  esac
+done
+
+ac_given_srcdir=$srcdir
+ac_given_INSTALL="$INSTALL"
+
+trap 'rm -fr `echo "Makefile tests/dummy client/dummy lib/dummy lib/rpc/dummy
+lib/rpc/client/dummy lib/rpc/include/dummy lib/rpc/parse/dummy
+lib/rpc/server/dummy lib/smb/dummy ubiqx/dummy web/dummy config.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
+EOF
+cat >> $CONFIG_STATUS <<EOF
+
+# Protect against being on the right side of a sed subst in config.status.
+sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g;
+ s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
+$ac_vpsub
+$extrasub
+s%@CFLAGS@%$CFLAGS%g
+s%@CPPFLAGS@%$CPPFLAGS%g
+s%@CXXFLAGS@%$CXXFLAGS%g
+s%@DEFS@%$DEFS%g
+s%@LDFLAGS@%$LDFLAGS%g
+s%@LIBS@%$LIBS%g
+s%@exec_prefix@%$exec_prefix%g
+s%@prefix@%$prefix%g
+s%@program_transform_name@%$program_transform_name%g
+s%@bindir@%$bindir%g
+s%@sbindir@%$sbindir%g
+s%@libexecdir@%$libexecdir%g
+s%@datadir@%$datadir%g
+s%@sysconfdir@%$sysconfdir%g
+s%@sharedstatedir@%$sharedstatedir%g
+s%@localstatedir@%$localstatedir%g
+s%@libdir@%$libdir%g
+s%@includedir@%$includedir%g
+s%@oldincludedir@%$oldincludedir%g
+s%@infodir@%$infodir%g
+s%@mandir@%$mandir%g
+s%@CC@%$CC%g
+s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
+s%@INSTALL_DATA@%$INSTALL_DATA%g
+s%@SHELL@%$SHELL%g
+s%@AWK@%$AWK%g
+s%@host@%$host%g
+s%@host_alias@%$host_alias%g
+s%@host_cpu@%$host_cpu%g
+s%@host_vendor@%$host_vendor%g
+s%@host_os@%$host_os%g
+s%@target@%$target%g
+s%@target_alias@%$target_alias%g
+s%@target_cpu@%$target_cpu%g
+s%@target_vendor@%$target_vendor%g
+s%@target_os@%$target_os%g
+s%@build@%$build%g
+s%@build_alias@%$build_alias%g
+s%@build_cpu@%$build_cpu%g
+s%@build_vendor@%$build_vendor%g
+s%@build_os@%$build_os%g
+s%@CPP@%$CPP%g
+s%@LIBOBJS@%$LIBOBJS%g
+
+CEOF
+EOF
+
+cat >> $CONFIG_STATUS <<\EOF
+
+# Split the substitutions into bite-sized pieces for seds with
+# small command number limits, like on Digital OSF/1 and HP-UX.
+ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script.
+ac_file=1 # Number of current file.
+ac_beg=1 # First line for current file.
+ac_end=$ac_max_sed_cmds # Line after last line for current file.
+ac_more_lines=:
+ac_sed_cmds=""
+while $ac_more_lines; do
+  if test $ac_beg -gt 1; then
+    sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file
+  else
+    sed "${ac_end}q" conftest.subs > conftest.s$ac_file
+  fi
+  if test ! -s conftest.s$ac_file; then
+    ac_more_lines=false
+    rm -f conftest.s$ac_file
+  else
+    if test -z "$ac_sed_cmds"; then
+      ac_sed_cmds="sed -f conftest.s$ac_file"
+    else
+      ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file"
+    fi
+    ac_file=`expr $ac_file + 1`
+    ac_beg=$ac_end
+    ac_end=`expr $ac_end + $ac_max_sed_cmds`
+  fi
+done
+if test -z "$ac_sed_cmds"; then
+  ac_sed_cmds=cat
+fi
+EOF
+
+cat >> $CONFIG_STATUS <<EOF
+
+CONFIG_FILES=\${CONFIG_FILES-"Makefile tests/dummy client/dummy lib/dummy lib/rpc/dummy
+lib/rpc/client/dummy lib/rpc/include/dummy lib/rpc/parse/dummy
+lib/rpc/server/dummy lib/smb/dummy ubiqx/dummy web/dummy"}
+EOF
+cat >> $CONFIG_STATUS <<\EOF
+for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
+  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+  case "$ac_file" in
+  *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
+       ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
+  *) ac_file_in="${ac_file}.in" ;;
+  esac
+
+  # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories.
+
+  # Remove last slash and all that follows it.  Not all systems have dirname.
+  ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
+  if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
+    # The file is in a subdirectory.
+    test ! -d "$ac_dir" && mkdir "$ac_dir"
+    ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
+    # A "../" for each directory in $ac_dir_suffix.
+    ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
+  else
+    ac_dir_suffix= ac_dots=
+  fi
+
+  case "$ac_given_srcdir" in
+  .)  srcdir=.
+      if test -z "$ac_dots"; then top_srcdir=.
+      else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
+  /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
+  *) # Relative path.
+    srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
+    top_srcdir="$ac_dots$ac_given_srcdir" ;;
+  esac
+
+  case "$ac_given_INSTALL" in
+  [/$]*) INSTALL="$ac_given_INSTALL" ;;
+  *) INSTALL="$ac_dots$ac_given_INSTALL" ;;
+  esac
+
+  echo creating "$ac_file"
+  rm -f "$ac_file"
+  configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
+  case "$ac_file" in
+  *Makefile*) ac_comsub="1i\\
+# $configure_input" ;;
+  *) ac_comsub= ;;
+  esac
+
+  ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
+  sed -e "$ac_comsub
+s%@configure_input@%$configure_input%g
+s%@srcdir@%$srcdir%g
+s%@top_srcdir@%$top_srcdir%g
+s%@INSTALL@%$INSTALL%g
+" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file
+fi; done
+rm -f conftest.s*
+
+# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
+# NAME is the cpp macro being defined and VALUE is the value it is being given.
+#
+# ac_d sets the value in "#define NAME VALUE" lines.
+ac_dA='s%^\([  ]*\)#\([        ]*define[       ][      ]*\)'
+ac_dB='\([     ][      ]*\)[^  ]*%\1#\2'
+ac_dC='\3'
+ac_dD='%g'
+# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE".
+ac_uA='s%^\([  ]*\)#\([        ]*\)undef\([    ][      ]*\)'
+ac_uB='\([     ]\)%\1#\2define\3'
+ac_uC=' '
+ac_uD='\4%g'
+# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
+ac_eA='s%^\([  ]*\)#\([        ]*\)undef\([    ][      ]*\)'
+ac_eB='$%\1#\2define\3'
+ac_eC=' '
+ac_eD='%g'
+
+if test "${CONFIG_HEADERS+set}" != set; then
+EOF
+cat >> $CONFIG_STATUS <<EOF
+  CONFIG_HEADERS="config.h"
+EOF
+cat >> $CONFIG_STATUS <<\EOF
+fi
+for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then
+  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+  case "$ac_file" in
+  *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
+       ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
+  *) ac_file_in="${ac_file}.in" ;;
+  esac
+
+  echo creating $ac_file
+
+  rm -f conftest.frag conftest.in conftest.out
+  ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
+  cat $ac_file_inputs > conftest.in
+
+EOF
+
+# Transform confdefs.h into a sed script conftest.vals that substitutes
+# the proper values into config.h.in to produce config.h.  And first:
+# Protect against being on the right side of a sed subst in config.status.
+# Protect against being in an unquoted here document in config.status.
+rm -f conftest.vals
+cat > conftest.hdr <<\EOF
+s/[\\&%]/\\&/g
+s%[\\$`]%\\&%g
+s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp
+s%ac_d%ac_u%gp
+s%ac_u%ac_e%gp
+EOF
+sed -n -f conftest.hdr confdefs.h > conftest.vals
+rm -f conftest.hdr
+
+# This sed command replaces #undef with comments.  This is necessary, for
+# example, in the case of _POSIX_SOURCE, which is predefined and required
+# on some systems where configure will not decide to define it.
+cat >> conftest.vals <<\EOF
+s%^[   ]*#[    ]*undef[        ][      ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */%
+EOF
+
+# Break up conftest.vals because some shells have a limit on
+# the size of here documents, and old seds have small limits too.
+
+rm -f conftest.tail
+while :
+do
+  ac_lines=`grep -c . conftest.vals`
+  # grep -c gives empty output for an empty file on some AIX systems.
+  if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi
+  # Write a limited-size here document to conftest.frag.
+  echo '  cat > conftest.frag <<CEOF' >> $CONFIG_STATUS
+  sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS
+  echo 'CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+' >> $CONFIG_STATUS
+  sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail
+  rm -f conftest.vals
+  mv conftest.tail conftest.vals
+done
+rm -f conftest.vals
+
+cat >> $CONFIG_STATUS <<\EOF
+  rm -f conftest.frag conftest.h
+  echo "/* $ac_file.  Generated automatically by configure.  */" > conftest.h
+  cat conftest.in >> conftest.h
+  rm -f conftest.in
+  if cmp -s $ac_file conftest.h 2>/dev/null; then
+    echo "$ac_file is unchanged"
+    rm -f conftest.h
+  else
+    # Remove last slash and all that follows it.  Not all systems have dirname.
+      ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
+      if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
+      # The file is in a subdirectory.
+      test ! -d "$ac_dir" && mkdir "$ac_dir"
+    fi
+    rm -f $ac_file
+    mv conftest.h $ac_file
+  fi
+fi; done
+
+EOF
+cat >> $CONFIG_STATUS <<EOF
+
+EOF
+cat >> $CONFIG_STATUS <<\EOF
+
+exit 0
+EOF
+chmod +x $CONFIG_STATUS
+rm -fr confdefs* $ac_clean_files
+test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
+
diff --git a/source/configure.in b/source/configure.in
new file mode 100644 (file)
index 0000000..883085b
--- /dev/null
@@ -0,0 +1,578 @@
+dnl Process this file with autoconf to produce a configure script.
+AC_INIT(byteorder.h)
+AC_CONFIG_HEADER(config.h)
+
+dnl Checks for programs.
+AC_PROG_CC
+AC_PROG_INSTALL
+AC_SUBST(SHELL)
+AC_PROG_AWK
+
+AC_CANONICAL_SYSTEM
+case "$host_os" in
+       *linux*)   AC_DEFINE(LINUX);;
+        *solaris*) AC_DEFINE(SUNOS5);;
+        *sunos*) AC_DEFINE(SUNOS4);;
+        *irix*) AC_DEFINE(IRIX);;
+        *aix*) AC_DEFINE(AIX);;
+        *hpux*) AC_DEFINE(HPUX);;
+        *qnx*) AC_DEFINE(QNX);;
+        *osf1*) AC_DEFINE(OSF1);;
+        *sco*) AC_DEFINE(SCO);;
+        *next2*) AC_DEFINE(NEXT2);;
+esac
+
+AC_INLINE
+AC_HEADER_STDC
+AC_HEADER_DIRENT
+AC_HEADER_TIME
+AC_HEADER_SYS_WAIT
+AC_CHECK_HEADERS(sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h)
+AC_CHECK_HEADERS(unistd.h utime.h grp.h sys/id.h limits.h net/if.h)
+AC_CHECK_HEADERS(compat.h sys/param.h ctype.h sys/wait.h sys/ioctl.h)
+AC_CHECK_HEADERS(sys/filio.h string.h stdlib.h sys/socket.h sys/mode.h)
+AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h)
+AC_CHECK_HEADERS(sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h sys/sockio.h)
+AC_CHECK_HEADERS(shadow.h netinet/tcp.h sys/security.h security/pam_appl.h)
+
+AC_CHECK_SIZEOF(int)
+AC_CHECK_SIZEOF(long)
+AC_CHECK_SIZEOF(short)
+
+AC_C_CONST
+AC_C_INLINE
+AC_C_BIGENDIAN
+AC_C_CHAR_UNSIGNED
+
+AC_TYPE_SIGNAL
+AC_TYPE_UID_T
+AC_TYPE_MODE_T
+AC_TYPE_OFF_T
+AC_TYPE_SIZE_T
+AC_TYPE_PID_T
+AC_STRUCT_ST_RDEV
+AC_CHECK_TYPE(ino_t,unsigned)
+
+echo $ac_n "checking for errno in errno.h... $ac_c"
+AC_TRY_COMPILE([#include <errno.h>],[int i = errno],
+echo yes; AC_DEFINE(HAVE_ERRNO_DECL),
+echo no)
+
+AC_FUNC_MEMCMP
+
+###############################################
+# test for where we get crypt() from
+if test "$ac_cv_lib_crypt_crypt" = "yes"; then
+  AC_CHECK_LIB(crypt, crypt)
+  AC_DEFINE(HAVE_CRYPT)
+fi
+if test "$ac_cv_lib_crypt_crypt" = "no" || 
+   test "$ac_cv_lib_crypt_crypt" = ""; then
+# look for crypt 
+AC_CHECK_FUNC(crypt, AC_DEFINE(HAVE_CRYPT), 
+[case "$LIBS" in
+*-lcrypt*) ;;
+*) AC_CHECK_LIB(crypt, crypt) ;;
+esac
+if test "$ac_cv_lib_crypt_crypt" = "yes"; then
+  ac_cv_func_crypt=yes
+  AC_DEFINE(HAVE_CRYPT)
+fi])
+fi
+
+
+###############################################
+# test for where we get pam_authenticate() from
+# might need libdl for this to work
+if test "$ac_cv_header_security_pam_appl_h" = "yes"; then
+  AC_HAVE_LIBRARY(dl)
+fi
+if test "$ac_cv_lib_pam_pam_authenticate" = "yes"; then
+  AC_CHECK_LIB(pam, pam_authenticate)
+  AC_DEFINE(HAVE_PAM_AUTHENTICATE)
+fi
+if test "$ac_cv_lib_pam_pam_authenticate" = "no" || 
+   test "$ac_cv_lib_pam_pam_authenticate" = ""; then
+# look for pam_authenticate
+AC_CHECK_FUNC(pam_authenticate, AC_DEFINE(HAVE_PAM_AUTHENTICATE), 
+[case "$LIBS" in
+*-lpam*) ;;
+*) AC_CHECK_LIB(pam, pam_authenticate) ;;
+esac
+if test "$ac_cv_lib_pam_pam_authenticate" = "yes"; then
+  ac_cv_func_pam_authenticate=yes
+  AC_DEFINE(HAVE_PAM_AUTHENTICATE)
+fi])
+fi
+
+
+AC_CHECK_FUNCS(waitpid getcwd strdup strerror chown chmod chroot)
+AC_CHECK_FUNCS(fstat strchr utime utimes getrlimit fsync execl)
+AC_CHECK_FUNCS(memmove vsnprintf setsid glob strpbrk pipe crypt16 getauthuid)
+AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction innetgr)
+AC_CHECK_FUNCS(initgroups select rdchk getgrnam pathconf putprpwnam)
+AC_CHECK_FUNCS(setresuid setuidx setgroups mktime rename ftruncate)
+AC_CHECK_FUNCS(set_auth_parameters atexit grantpt getspnam dup2)
+AC_CHECK_FUNCS(bigcrypt getprpwnam setluid yp_get_default_domain)
+
+echo $ac_n "checking for long long ... $ac_c"
+AC_TRY_RUN([#include <stdio.h>
+main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
+echo yes;AC_DEFINE(HAVE_LONGLONG), 
+echo no)
+
+echo $ac_n "checking for off64_t ... $ac_c"
+AC_TRY_RUN([#include <stdio.h>
+#include <sys/stat.h>
+main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
+echo yes;AC_DEFINE(HAVE_OFF64_T), 
+echo no)
+
+echo $ac_n "checking for union semun ... $ac_c"
+AC_TRY_RUN([
+#include <sys/types.h>
+#include <sys/ipc.h>
+#include <sys/sem.h>
+main() { union semun ss; exit(0); }],
+echo yes;AC_DEFINE(HAVE_UNION_SEMUN), 
+echo no)
+
+echo $ac_n "checking for unsigned char ... $ac_c"
+AC_TRY_RUN([#include <stdio.h>
+main() { char c; c=250; exit((c > 0)?0:1); }],
+echo yes;AC_DEFINE(HAVE_UNSIGNED_CHAR), 
+echo no)
+
+echo $ac_n "checking for sin_len in sock ... $ac_c"
+AC_TRY_COMPILE([#include <sys/types.h>
+#include <sys/socket.h>],
+[struct sockaddr_in sock; sock.sin_len = sizeof(sock);],
+echo yes;AC_DEFINE(HAVE_SOCK_SIN_LEN), 
+echo no)
+
+echo $ac_n "checking if gettimeofday takes tz argument ... $ac_c"
+AC_TRY_RUN([
+#include <sys/time.h>
+#include <unistd.h>
+main() { struct timeval tv; exit(gettimeofday(&tv, NULL));}],
+           echo yes;AC_DEFINE(HAVE_GETTIMEOFDAY_TZ),
+          echo no)
+
+
+echo $ac_n "checking for broken readdir ... $ac_c"
+AC_TRY_RUN([#include <sys/types.h>
+#include <dirent.h>
+main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
+if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
+di->d_name[0] == 0) exit(0); exit(1);} ],
+echo yes - you are using the broken /usr/ucb/cc;AC_DEFINE(HAVE_BROKEN_READDIR), 
+echo no)
+
+echo $ac_n "checking for utimbuf ... $ac_c"
+AC_TRY_COMPILE([#include <sys/types.h>
+#include <utime.h>],
+[struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
+echo yes;AC_DEFINE(HAVE_UTIMBUF), 
+echo no)
+
+echo $ac_n "checking for ftruncate extend ... $ac_c"
+AC_TRY_RUN([#include "tests/ftruncate.c"],
+           echo yes;AC_DEFINE(HAVE_FTRUNCATE_EXTEND), 
+          echo no)
+
+# The following test taken from the cvs sources
+# If we can't find connect, try looking in -lsocket, -lnsl, and -linet.
+# The Irix 5 libc.so has connect and gethostbyname, but Irix 5 also has
+# libsocket.so which has a bad implementation of gethostbyname (it
+# only looks in /etc/hosts), so we only look for -lsocket if we need
+# it.
+AC_CHECK_FUNC(connect, :, 
+[case "$LIBS" in
+*-lnsl*) ;;
+*) AC_CHECK_LIB(nsl_s, printf) ;;
+esac
+case "$LIBS" in
+*-lnsl*) ;;
+*) AC_CHECK_LIB(nsl, printf) ;;
+esac
+case "$LIBS" in
+*-lsocket*) ;;
+*) AC_CHECK_LIB(socket, connect) ;;
+esac
+case "$LIBS" in
+*-linet*) ;;
+*) AC_CHECK_LIB(inet, connect) ;;
+esac
+dnl We can't just call AC_CHECK_FUNCS(connect) here, because the value
+dnl has been cached.
+if test "$ac_cv_lib_socket_connect" = "yes" || 
+   test "$ac_cv_lib_inet_connect" = "yes"; then
+  ac_cv_func_connect=yes
+  AC_DEFINE(HAVE_CONNECT)
+fi])
+
+
+echo $ac_n "checking for root ... $ac_c"
+AC_TRY_RUN([main() { exit(getuid() != 0); }],
+           echo yes;AC_DEFINE(HAVE_ROOT), 
+          echo WARNING: running as non-root will disable some tests;)
+
+netmask=no;
+echo $ac_n "checking for netmask ifconf ... $ac_c"
+AC_TRY_RUN([
+#define HAVE_NETMASK_IFCONF 1
+#define AUTOCONF 1
+#include "netmask.c"],
+           echo yes;netmask=yes;AC_DEFINE(HAVE_NETMASK_IFCONF),
+          echo no)
+
+if test $netmask = no; then
+echo $ac_n "checking for netmask ifreq ... $ac_c"
+AC_TRY_RUN([
+#define HAVE_NETMASK_IFREQ 1
+#define AUTOCONF 1
+#include "netmask.c"],
+           echo yes;netmask=yes;AC_DEFINE(HAVE_NETMASK_IFREQ),
+          echo no)
+fi
+
+if test $netmask = no; then
+echo $ac_n "checking for netmask AIX ... $ac_c"
+AC_TRY_RUN([
+#define HAVE_NETMASK_AIX 1
+#define AUTOCONF 1
+#include "netmask.c"],
+           echo yes;netmask=yes;AC_DEFINE(HAVE_NETMASK_AIX),
+          echo no)
+fi
+
+echo $ac_n "checking for trapdoor seteuid ... $ac_c"
+AC_TRY_RUN([#include "tests/trapdoor.c"],
+          echo no,
+           echo yes;AC_DEFINE(HAVE_TRAPDOOR_UID))
+
+echo $ac_n "checking for shared mmap ... $ac_c"
+AC_TRY_RUN([#include "tests/shared_mmap.c"],
+           echo yes;AC_DEFINE(HAVE_SHARED_MMAP), 
+          echo no)
+
+echo $ac_n "checking for fcntl locking ... $ac_c"
+AC_TRY_RUN([#include "tests/fcntl_lock.c"],
+           echo yes;AC_DEFINE(HAVE_FCNTL_LOCK), 
+          echo no)
+
+echo $ac_n "checking for sysv ipc ... $ac_c"
+AC_TRY_RUN([#include "tests/sysv_ipc.c"],
+           echo yes;AC_DEFINE(HAVE_SYSV_IPC), 
+          echo no)
+
+#################################################
+# check for the AFS filesystem
+AC_MSG_CHECKING(whether to use AFS)
+AC_ARG_WITH(afs,
+[  --with-afs     Include AFS support
+  --without-afs  Don't include AFS support (default)],
+[ case "$withval" in
+  yes)
+    AC_MSG_RESULT(yes)
+    AC_DEFINE(WITH_AFS)
+    ;;
+  *)
+    AC_MSG_RESULT(no)
+    ;;
+  esac ],
+  AC_MSG_RESULT(no)
+)
+
+
+#################################################
+# check for the DFS auth system
+AC_MSG_CHECKING(whether to use DFS auth)
+AC_ARG_WITH(dfs,
+[  --with-dfs     Include DFS support
+  --without-dfs  Don't include DFS support (default)],
+[ case "$withval" in
+  yes)
+    AC_MSG_RESULT(yes)
+    AC_DEFINE(WITH_DFS)
+    ;;
+  *)
+    AC_MSG_RESULT(no)
+    ;;
+  esac ],
+  AC_MSG_RESULT(no)
+)
+
+#################################################
+# check for automount support
+AC_MSG_CHECKING(whether to use AUTOMOUNT)
+AC_ARG_WITH(automount,
+[  --with-automount     Include AUTOMOUNT support
+  --without-automount  Don't include AUTOMOUNT support (default)],
+[ case "$withval" in
+  yes)
+    AC_MSG_RESULT(yes)
+    AC_DEFINE(WITH_AUTOMOUNT)
+    ;;
+  *)
+    AC_MSG_RESULT(no)
+    ;;
+  esac ],
+  AC_MSG_RESULT(no)
+)
+
+#################################################
+# check for a LDAP password database
+AC_MSG_CHECKING(whether to use LDAP password database)
+AC_ARG_WITH(ldap,
+[  --with-ldap     Include LDAP support
+  --without-ldap  Don't include LDAP support (default)],
+[ case "$withval" in
+  yes)
+    AC_MSG_RESULT(yes)
+    AC_DEFINE(WITH_LDAP)
+    ;;
+  *)
+    AC_MSG_RESULT(no)
+    ;;
+  esac ],
+  AC_MSG_RESULT(no)
+)
+
+#################################################
+# check for a NISPLUS password database
+AC_MSG_CHECKING(whether to use NISPLUS password database)
+AC_ARG_WITH(nisplus,
+[  --with-nisplus     Include NISPLUS password database support
+  --without-nisplus  Don't include NISPLUS password database support (default)],
+[ case "$withval" in
+  yes)
+    AC_MSG_RESULT(yes)
+    AC_DEFINE(WITH_NISPLUS)
+    ;;
+  *)
+    AC_MSG_RESULT(no)
+    ;;
+  esac ],
+  AC_MSG_RESULT(no)
+)
+
+#################################################
+# check for the secure socket layer
+AC_MSG_CHECKING(whether to use SSL)
+AC_ARG_WITH(ssl,
+[  --with-ssl     Include SSL support
+  --without-ssl  Don't include SSL support (default)],
+[ case "$withval" in
+  yes)
+    AC_MSG_RESULT(yes)
+    AC_DEFINE(WITH_SSL)
+    ;;
+  *)
+    AC_MSG_RESULT(no)
+    ;;
+  esac ],
+  AC_MSG_RESULT(no)
+)
+
+#################################################
+# check for experimental mmap support
+AC_MSG_CHECKING(whether to use MMAP)
+AC_ARG_WITH(mmap,
+[  --with-mmap     Include experimental MMAP support
+  --without-mmap  Don't include MMAP support (default)],
+[ case "$withval" in
+  yes)
+    AC_MSG_RESULT(yes)
+    AC_DEFINE(WITH_MMAP)
+    ;;
+  *)
+    AC_MSG_RESULT(no)
+    ;;
+  esac ],
+  AC_MSG_RESULT(no)
+)
+
+#################################################
+# check for syslog logging
+AC_MSG_CHECKING(whether to use syslog logging)
+AC_ARG_WITH(syslog,
+[  --with-syslog     Include experimental SYSLOG support
+  --without-syslog  Don't include SYSLOG support (default)],
+[ case "$withval" in
+  yes)
+    AC_MSG_RESULT(yes)
+    AC_DEFINE(WITH_SYSLOG)
+    ;;
+  *)
+    AC_MSG_RESULT(no)
+    ;;
+  esac ],
+  AC_MSG_RESULT(no)
+)
+
+
+#################################################
+# these tests are taken from the GNU fileutils package
+AC_CHECKING(how to get filesystem space usage)
+space=no
+
+# Perform only the link test since it seems there are no variants of the
+# statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
+# because that got a false positive on SCO OSR5.  Adding the declaration
+# of a `struct statvfs' causes this test to fail (as it should) on such
+# systems.  That system is reported to work fine with STAT_STATFS4 which
+# is what it gets when this test fails.
+if test $space = no; then
+  # SVR4
+  AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
+                [AC_TRY_LINK([#include <sys/types.h>
+#include <sys/statvfs.h>],
+                             [struct statvfs fsd; statvfs (0, &fsd);],
+                             fu_cv_sys_stat_statvfs=yes,
+                             fu_cv_sys_stat_statvfs=no)])
+  if test $fu_cv_sys_stat_statvfs = yes; then
+    space=yes
+    AC_DEFINE(STAT_STATVFS)
+  fi
+fi
+
+if test $space = no; then
+  # DEC Alpha running OSF/1
+  AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
+  AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
+  [AC_TRY_RUN([
+#include <sys/param.h>
+#include <sys/types.h>
+#include <sys/mount.h>
+  main ()
+  {
+    struct statfs fsd;
+    fsd.f_fsize = 0;
+    exit (statfs (".", &fsd, sizeof (struct statfs)));
+  }],
+  fu_cv_sys_stat_statfs3_osf1=yes,
+  fu_cv_sys_stat_statfs3_osf1=no,
+  fu_cv_sys_stat_statfs3_osf1=no)])
+  AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
+  if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
+    space=yes
+    AC_DEFINE(STAT_STATFS3_OSF1)
+  fi
+fi
+
+if test $space = no; then
+# AIX
+  AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
+member (AIX, 4.3BSD)])
+  AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
+  [AC_TRY_RUN([
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_MOUNT_H
+#include <sys/mount.h>
+#endif
+#ifdef HAVE_SYS_VFS_H
+#include <sys/vfs.h>
+#endif
+  main ()
+  {
+  struct statfs fsd;
+  fsd.f_bsize = 0;
+  exit (statfs (".", &fsd));
+  }],
+  fu_cv_sys_stat_statfs2_bsize=yes,
+  fu_cv_sys_stat_statfs2_bsize=no,
+  fu_cv_sys_stat_statfs2_bsize=no)])
+  AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
+  if test $fu_cv_sys_stat_statfs2_bsize = yes; then
+    space=yes
+    AC_DEFINE(STAT_STATFS2_BSIZE)
+  fi
+fi
+
+if test $space = no; then
+# SVR3
+  AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
+  AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
+  [AC_TRY_RUN([#include <sys/types.h>
+#include <sys/statfs.h>
+  main ()
+  {
+  struct statfs fsd;
+  exit (statfs (".", &fsd, sizeof fsd, 0));
+  }],
+    fu_cv_sys_stat_statfs4=yes,
+    fu_cv_sys_stat_statfs4=no,
+    fu_cv_sys_stat_statfs4=no)])
+  AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
+  if test $fu_cv_sys_stat_statfs4 = yes; then
+    space=yes
+    AC_DEFINE(STAT_STATFS4)
+  fi
+fi
+
+if test $space = no; then
+# 4.4BSD and NetBSD
+  AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
+member (4.4BSD and NetBSD)])
+  AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
+  [AC_TRY_RUN([#include <sys/types.h>
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_MOUNT_H
+#include <sys/mount.h>
+#endif
+  main ()
+  {
+  struct statfs fsd;
+  fsd.f_fsize = 0;
+  exit (statfs (".", &fsd));
+  }],
+  fu_cv_sys_stat_statfs2_fsize=yes,
+  fu_cv_sys_stat_statfs2_fsize=no,
+  fu_cv_sys_stat_statfs2_fsize=no)])
+  AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
+  if test $fu_cv_sys_stat_statfs2_fsize = yes; then
+    space=yes
+    AC_DEFINE(STAT_STATFS2_FSIZE)
+  fi
+fi
+
+if test $space = no; then
+  # Ultrix
+  AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
+  AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
+  [AC_TRY_RUN([#include <sys/types.h>
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_MOUNT_H
+#include <sys/mount.h>
+#endif
+#ifdef HAVE_SYS_FS_TYPES_H
+#include <sys/fs_types.h>
+#endif
+  main ()
+  {
+  struct fs_data fsd;
+  /* Ultrix's statfs returns 1 for success,
+     0 for not mounted, -1 for failure.  */
+  exit (statfs (".", &fsd) != 1);
+  }],
+  fu_cv_sys_stat_fs_data=yes,
+  fu_cv_sys_stat_fs_data=no,
+  fu_cv_sys_stat_fs_data=no)])
+  AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
+  if test $fu_cv_sys_stat_fs_data = yes; then
+    space=yes
+    AC_DEFINE(STAT_STATFS2_FS_DATA)
+  fi
+fi
+
+
+AC_OUTPUT(Makefile tests/dummy client/dummy lib/dummy lib/rpc/dummy
+lib/rpc/client/dummy lib/rpc/include/dummy lib/rpc/parse/dummy
+lib/rpc/server/dummy lib/smb/dummy ubiqx/dummy web/dummy)
diff --git a/source/include/config.h.in b/source/include/config.h.in
new file mode 100644 (file)
index 0000000..3bc3e95
--- /dev/null
@@ -0,0 +1,397 @@
+/* config.h.in.  Generated automatically from configure.in by autoheader.  */
+
+/* Define if on AIX 3.
+   System headers sometimes define this.
+   We just want to avoid a redefinition error message.  */
+#ifndef _ALL_SOURCE
+#undef _ALL_SOURCE
+#endif
+
+/* Define if type char is unsigned and you are not using gcc.  */
+#ifndef __CHAR_UNSIGNED__
+#undef __CHAR_UNSIGNED__
+#endif
+
+/* Define to empty if the keyword does not work.  */
+#undef const
+
+/* Define to `int' if <sys/types.h> doesn't define.  */
+#undef gid_t
+
+/* Define if your struct stat has st_rdev.  */
+#undef HAVE_ST_RDEV
+
+/* Define if you have <sys/wait.h> that is POSIX.1 compatible.  */
+#undef HAVE_SYS_WAIT_H
+
+/* Define as __inline if that's what the C compiler calls it.  */
+#undef inline
+
+/* Define to `int' if <sys/types.h> doesn't define.  */
+#undef mode_t
+
+/* Define to `long' if <sys/types.h> doesn't define.  */
+#undef off_t
+
+/* Define to `int' if <sys/types.h> doesn't define.  */
+#undef pid_t
+
+/* Define as the return type of signal handlers (int or void).  */
+#undef RETSIGTYPE
+
+/* Define to `unsigned' if <sys/types.h> doesn't define.  */
+#undef size_t
+
+/* Define if you have the ANSI C header files.  */
+#undef STDC_HEADERS
+
+/* Define if you can safely include both <sys/time.h> and <time.h>.  */
+#undef TIME_WITH_SYS_TIME
+
+/* Define to `int' if <sys/types.h> doesn't define.  */
+#undef uid_t
+
+/* Define if your processor stores words with the most significant
+   byte first (like Motorola and SPARC, unlike Intel and VAX).  */
+#undef WORDS_BIGENDIAN
+
+#undef HAVE_BROKEN_READDIR
+#undef HAVE_ERRNO_DECL
+#undef HAVE_LONGLONG
+#undef HAVE_OFF64_T
+#undef HAVE_REMSH
+#undef HAVE_UNSIGNED_CHAR
+#undef HAVE_UTIMBUF
+#undef ino_t
+#undef HAVE_CONNECT
+#undef HAVE_SHORT_INO_T
+#undef WITH_AFS
+#undef WITH_DFS
+#undef SUNOS5
+#undef SUNOS4
+#undef LINUX
+#undef AIX
+#undef IRIX
+#undef HPUX
+#undef QNX
+#undef SCO
+#undef OSF1
+#undef NEXT2
+#undef HAVE_SHARED_MMAP
+#undef HAVE_SYSV_IPC
+#undef HAVE_FCNTL_LOCK
+#undef HAVE_FTRUNCATE_EXTEND
+#undef HAVE_TRAPDOOR_UID
+#undef HAVE_ROOT
+#undef HAVE_UNION_SEMUN
+#undef HAVE_NETMASK_IFCONF
+#undef HAVE_GETTIMEOFDAY_TZ
+#undef HAVE_SOCK_SIN_LEN
+#undef STAT_READ_FILSYS
+#undef STAT_STATFS2_BSIZE
+#undef STAT_STATFS2_FSIZE
+#undef STAT_STATFS2_FS_DATA
+#undef STAT_STATFS3_OSF1
+#undef STAT_STATFS4
+#undef STAT_STATVFS
+#undef HAVE_NETMASK_IFREQ
+#undef HAVE_NETMASK_AIX
+#undef HAVE_CRYPT
+#undef WITH_MMAP
+#undef WITH_SYSLOG
+#undef WITH_SSL
+#undef WITH_LDAP
+#undef WITH_NISPLUS
+#undef WITH_AUTOMOUNT
+#undef HAVE_PAM_AUTHENTICATE
+
+/* The number of bytes in a int.  */
+#undef SIZEOF_INT
+
+/* The number of bytes in a long.  */
+#undef SIZEOF_LONG
+
+/* The number of bytes in a short.  */
+#undef SIZEOF_SHORT
+
+/* Define if you have the atexit function.  */
+#undef HAVE_ATEXIT
+
+/* Define if you have the bigcrypt function.  */
+#undef HAVE_BIGCRYPT
+
+/* Define if you have the chmod function.  */
+#undef HAVE_CHMOD
+
+/* Define if you have the chown function.  */
+#undef HAVE_CHOWN
+
+/* Define if you have the chroot function.  */
+#undef HAVE_CHROOT
+
+/* Define if you have the crypt16 function.  */
+#undef HAVE_CRYPT16
+
+/* Define if you have the dup2 function.  */
+#undef HAVE_DUP2
+
+/* Define if you have the execl function.  */
+#undef HAVE_EXECL
+
+/* Define if you have the fstat function.  */
+#undef HAVE_FSTAT
+
+/* Define if you have the fsync function.  */
+#undef HAVE_FSYNC
+
+/* Define if you have the ftruncate function.  */
+#undef HAVE_FTRUNCATE
+
+/* Define if you have the getauthuid function.  */
+#undef HAVE_GETAUTHUID
+
+/* Define if you have the getcwd function.  */
+#undef HAVE_GETCWD
+
+/* Define if you have the getgrnam function.  */
+#undef HAVE_GETGRNAM
+
+/* Define if you have the getprpwnam function.  */
+#undef HAVE_GETPRPWNAM
+
+/* Define if you have the getrlimit function.  */
+#undef HAVE_GETRLIMIT
+
+/* Define if you have the getspnam function.  */
+#undef HAVE_GETSPNAM
+
+/* Define if you have the glob function.  */
+#undef HAVE_GLOB
+
+/* Define if you have the grantpt function.  */
+#undef HAVE_GRANTPT
+
+/* Define if you have the initgroups function.  */
+#undef HAVE_INITGROUPS
+
+/* Define if you have the innetgr function.  */
+#undef HAVE_INNETGR
+
+/* Define if you have the memmove function.  */
+#undef HAVE_MEMMOVE
+
+/* Define if you have the mktime function.  */
+#undef HAVE_MKTIME
+
+/* Define if you have the pathconf function.  */
+#undef HAVE_PATHCONF
+
+/* Define if you have the pipe function.  */
+#undef HAVE_PIPE
+
+/* Define if you have the putprpwnam function.  */
+#undef HAVE_PUTPRPWNAM
+
+/* Define if you have the rdchk function.  */
+#undef HAVE_RDCHK
+
+/* Define if you have the rename function.  */
+#undef HAVE_RENAME
+
+/* Define if you have the select function.  */
+#undef HAVE_SELECT
+
+/* Define if you have the set_auth_parameters function.  */
+#undef HAVE_SET_AUTH_PARAMETERS
+
+/* Define if you have the setgroups function.  */
+#undef HAVE_SETGROUPS
+
+/* Define if you have the setluid function.  */
+#undef HAVE_SETLUID
+
+/* Define if you have the setresuid function.  */
+#undef HAVE_SETRESUID
+
+/* Define if you have the setsid function.  */
+#undef HAVE_SETSID
+
+/* Define if you have the setuidx function.  */
+#undef HAVE_SETUIDX
+
+/* Define if you have the sigaction function.  */
+#undef HAVE_SIGACTION
+
+/* Define if you have the sigblock function.  */
+#undef HAVE_SIGBLOCK
+
+/* Define if you have the sigprocmask function.  */
+#undef HAVE_SIGPROCMASK
+
+/* Define if you have the strchr function.  */
+#undef HAVE_STRCHR
+
+/* Define if you have the strdup function.  */
+#undef HAVE_STRDUP
+
+/* Define if you have the strerror function.  */
+#undef HAVE_STRERROR
+
+/* Define if you have the strftime function.  */
+#undef HAVE_STRFTIME
+
+/* Define if you have the strpbrk function.  */
+#undef HAVE_STRPBRK
+
+/* Define if you have the utime function.  */
+#undef HAVE_UTIME
+
+/* Define if you have the utimes function.  */
+#undef HAVE_UTIMES
+
+/* Define if you have the vsnprintf function.  */
+#undef HAVE_VSNPRINTF
+
+/* Define if you have the waitpid function.  */
+#undef HAVE_WAITPID
+
+/* Define if you have the yp_get_default_domain function.  */
+#undef HAVE_YP_GET_DEFAULT_DOMAIN
+
+/* Define if you have the <compat.h> header file.  */
+#undef HAVE_COMPAT_H
+
+/* Define if you have the <ctype.h> header file.  */
+#undef HAVE_CTYPE_H
+
+/* Define if you have the <dirent.h> header file.  */
+#undef HAVE_DIRENT_H
+
+/* Define if you have the <fcntl.h> header file.  */
+#undef HAVE_FCNTL_H
+
+/* Define if you have the <grp.h> header file.  */
+#undef HAVE_GRP_H
+
+/* Define if you have the <limits.h> header file.  */
+#undef HAVE_LIMITS_H
+
+/* Define if you have the <ndir.h> header file.  */
+#undef HAVE_NDIR_H
+
+/* Define if you have the <net/if.h> header file.  */
+#undef HAVE_NET_IF_H
+
+/* Define if you have the <netinet/tcp.h> header file.  */
+#undef HAVE_NETINET_TCP_H
+
+/* Define if you have the <security/pam_appl.h> header file.  */
+#undef HAVE_SECURITY_PAM_APPL_H
+
+/* Define if you have the <shadow.h> header file.  */
+#undef HAVE_SHADOW_H
+
+/* Define if you have the <stdarg.h> header file.  */
+#undef HAVE_STDARG_H
+
+/* Define if you have the <stdlib.h> header file.  */
+#undef HAVE_STDLIB_H
+
+/* Define if you have the <string.h> header file.  */
+#undef HAVE_STRING_H
+
+/* Define if you have the <sys/dir.h> header file.  */
+#undef HAVE_SYS_DIR_H
+
+/* Define if you have the <sys/dustat.h> header file.  */
+#undef HAVE_SYS_DUSTAT_H
+
+/* Define if you have the <sys/fcntl.h> header file.  */
+#undef HAVE_SYS_FCNTL_H
+
+/* Define if you have the <sys/filio.h> header file.  */
+#undef HAVE_SYS_FILIO_H
+
+/* Define if you have the <sys/filsys.h> header file.  */
+#undef HAVE_SYS_FILSYS_H
+
+/* Define if you have the <sys/fs/s5param.h> header file.  */
+#undef HAVE_SYS_FS_S5PARAM_H
+
+/* Define if you have the <sys/id.h> header file.  */
+#undef HAVE_SYS_ID_H
+
+/* Define if you have the <sys/ioctl.h> header file.  */
+#undef HAVE_SYS_IOCTL_H
+
+/* Define if you have the <sys/mode.h> header file.  */
+#undef HAVE_SYS_MODE_H
+
+/* Define if you have the <sys/mount.h> header file.  */
+#undef HAVE_SYS_MOUNT_H
+
+/* Define if you have the <sys/ndir.h> header file.  */
+#undef HAVE_SYS_NDIR_H
+
+/* Define if you have the <sys/param.h> header file.  */
+#undef HAVE_SYS_PARAM_H
+
+/* Define if you have the <sys/security.h> header file.  */
+#undef HAVE_SYS_SECURITY_H
+
+/* Define if you have the <sys/select.h> header file.  */
+#undef HAVE_SYS_SELECT_H
+
+/* Define if you have the <sys/socket.h> header file.  */
+#undef HAVE_SYS_SOCKET_H
+
+/* Define if you have the <sys/sockio.h> header file.  */
+#undef HAVE_SYS_SOCKIO_H
+
+/* Define if you have the <sys/statfs.h> header file.  */
+#undef HAVE_SYS_STATFS_H
+
+/* Define if you have the <sys/statvfs.h> header file.  */
+#undef HAVE_SYS_STATVFS_H
+
+/* Define if you have the <sys/time.h> header file.  */
+#undef HAVE_SYS_TIME_H
+
+/* Define if you have the <sys/unistd.h> header file.  */
+#undef HAVE_SYS_UNISTD_H
+
+/* Define if you have the <sys/vfs.h> header file.  */
+#undef HAVE_SYS_VFS_H
+
+/* Define if you have the <sys/wait.h> header file.  */
+#undef HAVE_SYS_WAIT_H
+
+/* Define if you have the <termios.h> header file.  */
+#undef HAVE_TERMIOS_H
+
+/* Define if you have the <unistd.h> header file.  */
+#undef HAVE_UNISTD_H
+
+/* Define if you have the <utime.h> header file.  */
+#undef HAVE_UTIME_H
+
+/* Define if you have the crypt library (-lcrypt).  */
+#undef HAVE_LIBCRYPT
+
+/* Define if you have the dl library (-ldl).  */
+#undef HAVE_LIBDL
+
+/* Define if you have the inet library (-linet).  */
+#undef HAVE_LIBINET
+
+/* Define if you have the nsl library (-lnsl).  */
+#undef HAVE_LIBNSL
+
+/* Define if you have the nsl_s library (-lnsl_s).  */
+#undef HAVE_LIBNSL_S
+
+/* Define if you have the pam library (-lpam).  */
+#undef HAVE_LIBPAM
+
+/* Define if you have the socket library (-lsocket).  */
+#undef HAVE_LIBSOCKET
index d72595b6b4e6452230068870700011ea3fa7c23f..b63787fd5e3b7734ec78b83c54d6253d38d8c336 100644 (file)
    along with this program; if not, write to the Free Software
    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */
-/*
-   This file does all the #includes's. This makes it easier to
-   port to a new unix. Hopefully a port will only have to edit the Makefile
-   and add a section for the new unix below.
-*/
-
-
-/* the first OS dependent section is to setup what includes will be used.
-   the main OS dependent section comes later on 
-*/
-
-#ifdef ALTOS
-#define NO_UTIMEH
-#endif
-
-#ifdef MIPS
-#define POSIX_H
-#define NO_UTIMEH
-#endif
 
-#ifdef sun386
-#define NO_UTIMEH
-#endif
+#include "config.h"
+#include "local.h"
 
-#ifdef NEXT2
-#define NO_UTIMEH
+#ifdef AIX
+#define DEFAULT_PRINTING PRINT_AIX
 #endif
 
-#ifdef NEXT3_0
-#define NO_UTIMEH
-#define NO_UNISTDH
+#ifdef HPUX
+#define DEFAULT_PRINTING PRINT_HPUX
 #endif
 
-#ifdef APOLLO
-#define NO_UTIMEH
-#define NO_SYSMOUNTH
-#define NO_UNISTDH
+#ifdef QNX
+#define DEFAULT_PRINTING PRINT_QNX
 #endif
 
-#ifdef AIX
-#define NO_SYSMOUNTH
+#ifdef SUNOS4
+#define REPLACE_GETPASS
+/* on SUNOS4 termios.h conflicts with sys/ioctl.h */
+#undef HAVE_TERMIOS_H
 #endif
 
-#ifdef M88K_R3
-#define SVR3H
-#define NO_RESOURCEH
+#ifdef SUNOS5
+#define REPLACE_GETPASS
 #endif
 
-#ifdef DNIX
-#define NO_SYSMOUNTH
-#define NO_NETIFH
-#define NO_RESOURCEH
-#define PRIME_NMBD 0
-#define NO_SETGROUPS
-#endif
 
+#include <sys/types.h>
 
-#ifdef ISC
-#define SYSSTREAMH
-#define NO_RESOURCEH
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
 #endif
+#include <stdio.h>
+#include <stddef.h>
 
-#ifdef QNX
-#define NO_RESOURCEH
-#define NO_SYSMOUNTH
-#define USE_MMAP 1
-#ifdef __386__
-   #define __i386__
-#endif
-#define SHADOW_PWD
-#define NO_GETSPNAM
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
 #endif
 
-#ifdef NEWS42
-#define NO_UTIMEH
-#define NO_STRFTIME
-#define NO_UTIMBUF
-#define REPLACE_MKTIME
-#define NO_TM_NAME
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
 #endif
 
-#ifdef OS2
-#define NO_SYSMOUNTH
-#define NO_NETIFH
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
 #endif
 
-#ifdef LYNX
-#define NO_SYSMOUNTH
+#ifdef HAVE_STRING_H
+#include <string.h>
 #endif
 
-
-#if (defined(SHADOW_PWD)||defined(OSF1_ENH_SEC)||defined(SecureWare)||defined(PWDAUTH))
-#define PASSWORD_LENGTH 16
+#ifdef HAVE_MALLOC_H
+#include <malloc.h>
 #endif
 
-/* here is the general includes section - with some ifdefs generated 
-   by the previous section 
-*/
-#include "local.h"
-#include <stdio.h>
-#ifdef POSIX_STDLIBH
-#include <posix/stdlib.h>
-#else
-#include <stdlib.h>
-#endif
-#include <ctype.h>
+#ifdef TIME_WITH_SYS_TIME
+#include <sys/time.h>
 #include <time.h>
-#ifndef NO_UTIMEH
-#include <utime.h>
-#endif
-#include <sys/types.h>
-
-#ifdef SVR3H
-#include <sys/statfs.h>
-#include <sys/stream.h>
-#include <netinet/types.h>
-#include <netinet/ether.h>
-#include <netinet/ip_if.h>
-#endif
-
-#include <sys/socket.h>
-#ifdef AXPROC
-#include <termio.h>
-#endif
-#include <sys/ioctl.h>
-#include <stddef.h>
-#ifdef POSIX_H
-#include <posix/utime.h>
-#include <bsd/sys/time.h>
-#include <bsd/netinet/in.h>
 #else
+#ifdef HAVE_SYS_TIME_H
 #include <sys/time.h>
-#include <netinet/in.h>
-#endif 
-#include <netdb.h>
-#include <signal.h>
-#include <errno.h>
-#include <sys/file.h>
-#include <sys/stat.h>
-#include <sys/param.h>
-#include <grp.h>
-#ifndef NO_RESOURCEH
-#include <sys/resource.h>
-#endif
-#ifndef NO_SYSMOUNTH
-#include <sys/mount.h>
-#endif
-#include <pwd.h>
-#ifdef __STDC__
-#include <stdarg.h>
 #else
-#include <varargs.h>
-#endif
-#ifndef NO_UNISTDH
-#include <unistd.h>
+#include <time.h>
 #endif
-#include <sys/wait.h>
-#ifdef SYSSTREAMH
-#include <sys/stream.h>
 #endif
-#ifndef NO_NETIFH
-#ifdef POSIX_H
-#include <bsd/net/if.h>
+
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
 #else
-#ifdef OSF1
-#include <net/route.h>
-#include <sys/mbuf.h>
-#endif
-#include <net/if.h>
+#ifdef HAVE_SYS_FCNTL_H
+#include <sys/fcntl.h>
 #endif
 #endif
 
-#if defined(GETPWANAM)
-#include <sys/types.h>
-#include <sys/label.h>
-#include <sys/audit.h>
-#include <pwdadj.h>
-#endif
+#include <sys/stat.h>
 
-#if defined(SHADOW_PWD) && !defined(NETBSD) && !defined(FreeBSD) && !defined(CONVEX) && !defined(__OpenBSD__)
-#include <shadow.h>
+#ifdef HAVE_LIMITS_H
+#include <limits.h>
 #endif
 
-#ifdef SYSLOG
-#include <syslog.h>
+#ifdef HAVE_SYS_IOCTL_H
+#include <sys/ioctl.h>
 #endif
 
-#ifdef HAVE_REGEX_H
-#include <regex.h>
+#ifdef HAVE_SYS_FILIO_H
+#include <sys/filio.h>
 #endif
 
+#include <signal.h>
 
-/***************************************************************************
-Here come some platform specific sections
-***************************************************************************/
-
-
-#ifdef LINUX
-#include <arpa/inet.h>
-#include <dirent.h>
-#include <string.h>
-#include <sys/vfs.h>
-#include <netinet/in.h>
-#ifdef GLIBC2
-#define _LINUX_C_LIB_VERSION_MAJOR     6
-#include <termios.h>
-#include <rpcsvc/ypclnt.h>
-#include <crypt.h>
-#include <netinet/tcp.h>
-#include <netinet/ip.h>
-#endif
-#ifndef QSORT_CAST
-#define QSORT_CAST (int (*)(const void *, const void *))
-#endif /* QSORT_CAST */
-#define SIGNAL_CAST (__sighandler_t)
-#define USE_GETCWD
-#define USE_SETSID
-#define HAVE_BZERO
-#define HAVE_MEMMOVE
-#define HAVE_VSNPRINTF
-#define USE_SIGPROCMASK
-#define USE_WAITPID
-#define USE_SYSV_IPC
-#if 0
-/* SETFS disabled until we can check on some bug reports */
-#if _LINUX_C_LIB_VERSION_MAJOR >= 5
-#define USE_SETFS
-#endif
-#endif
-#ifdef SHADOW_PWD
-#if _LINUX_C_LIB_VERSION_MAJOR < 5
-#ifndef crypt
-#define crypt pw_encrypt
-#endif
-#endif
-#endif
-#endif
-
-#ifdef SUNOS4
-#define SIGNAL_CAST (void (*)(int))
-#include <netinet/tcp.h>
-#include <dirent.h>
-#include <sys/acct.h>
-#include <sys/vfs.h>
-#include <string.h>
-#include <strings.h>
-#include <errno.h>
+#ifdef HAVE_SYS_WAIT_H
 #include <sys/wait.h>
-#include <signal.h>
-/* #include <termios.h> */
-#ifdef sun386
-#define NO_STRFTIME
-#define NO_UTIMBUF
-#define mktime timelocal
-typedef unsigned short mode_t;
-#else
-#include <utime.h>
-#define NO_STRERROR
 #endif
-#ifndef REPLACE_GETPASS
-#define REPLACE_GETPASS
-#endif
-#ifndef BSD_TERMIO
-#define BSD_TERMIO
-#endif
-#ifndef USE_SIGPROCMASK
-#define USE_SIGPROCMASK
-#endif
-#ifndef USE_WAITPID
-#define USE_WAITPID
+#ifdef HAVE_CTYPE_H
+#include <ctype.h>
 #endif
-#define USE_SYSV_IPC
-/* SunOS doesn't have POSIX atexit */
-#define atexit on_exit
-#define NOSTRCASECMP
-#ifndef QSORT_CAST
-#define QSORT_CAST (int (*)(const void *, const void *))
-#endif /* QSORT_CAST */
+#ifdef HAVE_GRP_H
+#include <grp.h>
 #endif
-
-
-#ifdef SUNOS5
-#include <fcntl.h>
-#include <dirent.h>
-#include <sys/acct.h>
-#include <sys/statfs.h>
-#include <sys/statvfs.h>
-#include <sys/filio.h>
-#include <sys/sockio.h>
-#include <netinet/in_systm.h>
-#include <netinet/tcp.h>
-#include <netinet/ip.h>
-#include <string.h>
-#include <arpa/inet.h>
-#include <rpcsvc/ypclnt.h>
-#include <termios.h>
-#include <sys/stropts.h>
-#if !defined(USE_LIBDES) && !defined(KRB4_AUTH)
-#include <crypt.h>
-#endif /* !USE_LIBDES && !KRB4_AUTH */
-extern int gettimeofday (struct timeval *, void *);
-extern int gethostname (char *name, int namelen);
-extern int innetgr (const char *, const char *, const char *, const char *);
-#define USE_SETVBUF
-#define SIGNAL_CAST (void (*)(int))
-#ifndef SYSV
-#define SYSV
-#endif
-#define USE_WAITPID
-#define REPLACE_STRLEN
-#define USE_STATVFS
-#define USE_GETCWD
-#define USE_SETSID
-#define USE_SYSV_IPC
-#define NO_SEMUN
-#ifndef REPLACE_GETPASS
-#define REPLACE_GETPASS
-#endif /* REPLACE_GETPASS */
-#define USE_SIGPROCMASK
-#ifndef QSORT_CAST
-#define QSORT_CAST (int (*)(const void *, const void *))
-#endif /* QSORT_CAST */
-#define USE_GRANTPT
+#ifdef HAVE_SYS_ID_H
+#include <sys/id.h>
 #endif
 
+#include <errno.h>
 
-#ifdef ULTRIX
-#include <strings.h>
-#include <nfs/nfs_clnt.h>
-#include <nfs/vfs.h>
-#include <netinet/tcp.h>
-#ifdef ULTRIX_AUTH
-#include <auth.h>
-#endif
-char *getwd(char *);
-#define NOSTRDUP
-#ifdef __STDC__
-#define SIGNAL_CAST (void(*)(int))
-#endif
-#define USE_DIRECT
-#define USE_WAITPID
+#ifdef HAVE_UTIME_H
+#include <utime.h>
 #endif
 
-#ifdef SGI4
-#include <netinet/tcp.h>
-#include <sys/statfs.h>
-#include <string.h>
-#include <signal.h>
-#ifndef SYSV
-#define SYSV
-#endif
-#define SIGNAL_CAST (void (*)())
-#define STATFS4
-#define USE_WAITPID
-#define USE_DIRECT
-#define USE_SETSID
-#define USE_SYSV_IPC
+#ifdef HAVE_SYS_SELECT_H
+#include <sys/select.h>
 #endif
 
-#if defined(SGI5) || defined(SGI6)
-#include <arpa/inet.h>
-#include <netinet/tcp.h>
-#include <netinet/in_systm.h>
-#include <netinet/ip.h>
-#include <sys/statvfs.h>
-#include <string.h>
-#include <signal.h>
-#include <dirent.h>
-#include <termios.h>
-#define USE_WAITPID
-#define NETGROUP 
-#ifndef SYSV
-#define SYSV
-#endif /* SYSV */
-#define SIGNAL_CAST (void (*)())
-#define USE_STATVFS
-#define USE_WAITPID
-#define USE_SETSID
-#define USE_SYSV_IPC
-#define USE_GRANTPT
-#ifndef QSORT_CAST
-#define QSORT_CAST (int (*)(const void *, const void *))
-#endif /* QSORT_CAST */
+#ifdef HAVE_SYS_MODE_H
+/* apparently AIX needs this for S_ISLNK */
+#ifndef S_ISLNK
+#include <sys/mode.h>
 #endif
-
-
-#ifdef MIPS
-#include <bsd/net/soioctl.h>
-#include <string.h>
-#include <dirent.h>
-#include <fcntl.h>
-#include <sys/statfs.h>
-#include <sys/wait.h>
-#include <sys/termio.h>
-#define SIGNAL_CAST (void (*)())
-typedef int mode_t;
-extern struct group *getgrnam();
-extern struct passwd *getpwnam();
-#define STATFS4
-#define NO_STRERROR
-#define REPLACE_STRSTR
-#endif /* MIPS */
-
-
-
-#ifdef DGUX
-#include <string.h>
-#include <dirent.h>
-#include <sys/statfs.h>
-#include <sys/statvfs.h>
-#include <fcntl.h>
-#include <termios.h>
-#define SYSV
-#define USE_WAITPID
-#define SIGNAL_CAST (void (*)(int))
-#define STATFS4
-#define USE_GETCWD
 #endif
 
-
-#ifdef SVR4
-#include <string.h>
-#include <sys/dir.h>
-#include <dirent.h>
-#include <sys/statfs.h>
-#include <sys/statvfs.h>
-#include <sys/vfs.h>
-#include <sys/filio.h>
-#include <fcntl.h>
-#include <sys/sockio.h>
-#include <netinet/tcp.h>
-#include <stropts.h>
-#include <termios.h>
-#define SYSV
-#define USE_WAITPID
-#define SIGNAL_CAST (void (*)(int))
-#define USE_STATVFS
-#define USE_GETCWD
-#define USE_SETSID
-#define USE_SYSV_IPC
-#define NO_SEMUN
-#define USE_GRANTPT
+#ifdef HAVE_GLOB
+#include <glob.h>
 #endif
 
-
-#ifdef OSF1
-#include <termios.h>
-#include <strings.h>
-#include <dirent.h>
-char *getwd(char *);
-char *mktemp(char *); /* No standard include */
-#include <netinet/in.h>
-#include <arpa/inet.h> /* both for inet_ntoa */
-#define SIGNAL_CAST ( void (*) (int) )
-#define STATFS3
-#define USE_F_FSIZE
-#define USE_SETSID
-#include <netinet/tcp.h>
-#ifdef OSF1_ENH_SEC
 #include <pwd.h>
-#include <sys/types.h>
-#include <sys/security.h>
-#include <prot.h>
-#include <unistd.h>
-#define PASSWORD_LENGTH 16
-#define NEED_AUTH_PARAMETERS
-#endif  /* OSF1_ENH_SEC */
-#define USE_SYSV_IPC
-#define NO_SEMUN
-#endif
-
-
-#ifdef CLIX
-#include <dirent.h>
-#define SIGNAL_CAST    (void (*)())
-#include <sys/fcntl.h>
-#include <sys/statfs.h>
-#include <string.h>
-#define NO_EID
-#define USE_WAITPID
-#define STATFS4
-#define NO_FSYNC
-#define USE_GETCWD
-#define USE_SETSID
-#ifndef REPLACE_GETPASS
-#define REPLACE_GETPASS
-#endif /* REPLACE_GETPASS */
-#define NO_GETRLIMIT
-#endif /* CLIX */
-
-
-
-#ifdef BSDI
-#include <string.h>
-#include <netinet/tcp.h>
-#define SIGNAL_CAST (void (*)())
-#define USE_DIRECT
-#define QSORT_CAST (int (*)(const void *, const void *))
-#endif
-
-
-#ifdef NETBSD  
-#ifdef NetBSD1_3  
-#include <string.h>  
-#ifdef ALLOW_CHANGE_PASSWORD  
-#include <termios.h>  
-#endif /* ALLOW_CHANGE_PASSWORD */  
-#else /* NetBSD1_3 */
-#include <strings.h>  
-#endif /* NetBSD1_3 */  
-#include <netinet/tcp.h>
-#include <netinet/in_systm.h>
-#include <netinet/ip.h>
-/* you may not need this */
-#define NO_GETSPNAM 
-#define SIGNAL_CAST (void (*)())
-#define USE_DIRECT
-#define REPLACE_INNETGR
-#endif
-
+#include <grp.h>
 
-#ifdef FreeBSD
-#include <arpa/inet.h>
-#include <strings.h>
-#include <netinet/tcp.h>
-#include <netinet/in_systm.h>
-#include <netinet/ip.h>
-#include <termios.h>
-#include <fcntl.h>
-#if __FreeBSD__ >= 3
-#include <dirent.h>
+#ifdef HAVE_STDARG_H
+#include <stdarg.h>
 #else
-#define USE_DIRECT
-#endif
-#define SIGNAL_CAST (void (*)(int))
-#define USE_SETVBUF
-#define USE_SETSID
-#define USE_GETCWD
-#define USE_WAITPID
-#define HAVE_MEMMOVE
-#define HAVE_BZERO
-#define HAVE_GETTIMEOFDAY
-#define HAVE_PATHCONF
-#define HAVE_GETGRNAM 1
-#define HAVE_VSNPRINTF
-#define QSORT_CAST (int (*)(const void *, const void *))
-#if !defined(O_SYNC)
-#if defined(O_FSYNC)
-#define O_SYNC O_FSYNC
-#else /* defined(O_FSYNC) */
-#define O_SYNC 0
-#endif /* defined(O_FSYNC) */
-#endif /* !defined(O_SYNC) */
-#endif /* FreeBSD */
-
-#ifdef __OpenBSD__
-#include <strings.h>
-#include <netinet/tcp.h>
-#define NO_GETSPNAM
-#define SIGNAL_CAST (void (*)())
-#define USE_DIRECT
-#define REPLACE_INNETGR
-#define HAVE_BZERO
-#define HAVE_PATHCONF
-#define HAVE_GETGRNAM 1
-#define HAVE_GETTIMEOFDAY
-#define HAVE_MEMMOVE
-#define USE_GETCWD
-#define USE_SETSID
-#endif 
+#include <varargs.h>
+#endif
 
-#ifdef AIX
-#include <strings.h>
-#include <sys/dir.h>
-#include <sys/select.h>
-#include <dirent.h>
-#include <sys/statfs.h>
-#include <sys/vfs.h>
-#include <sys/id.h>
-#include <sys/priv.h>
-#ifdef ALLOW_CHANGE_PASSWORD
-#include <termios.h>  
-#endif /* ALLOW_CHANGE_PASSWORD */
-/* According to AIX 4.1 man pages, inet_ntoa needs the following headers */
-#include <sys/socket.h>
 #include <netinet/in.h>
 #include <arpa/inet.h>
-#include <netinet/tcp.h>
-#include <locale.h>
-#include <grp.h>
-#define HAVE_GETGRNAM 1
-#define SYSV
-#define USE_WAITPID
-#define USE_SIGBLOCK
-#define SIGNAL_CAST (void (*)())
-#define DEFAULT_PRINTING PRINT_AIX
-/* we undef this because sys/param.h is broken in aix. uggh. */
-#undef MAXHOSTNAMELEN
-#endif
-
-
-#ifdef HPUX
-#include <string.h>
-#include <dirent.h>
-#include <fcntl.h>
-#include <sys/vfs.h>
-#include <sys/types.h>
-#include <sys/termios.h>
-#include <netinet/tcp.h>
-#include <arpa/inet.h>                /* needed for inet_ntoa proto */
-#ifdef HPUX_10_TRUSTED
-#include <hpsecurity.h>
-#include <prot.h>
-#define NEED_AUTH_PARAMETERS
-#endif
-#define SIGNAL_CAST (void (*)(__harg))
-#ifdef HPUX10
-#include <stropts.h>
-#else /* HPUX10 */  
-/* This is only needed for HPUX 9.x */
-#define SELECT_CAST (int *)
-#endif /* HPUX10 */
-#define SYSV
-#define USE_WAITPID
-#define WAIT3_CAST2 (int *)
-#define USE_GETCWD
-#define USE_SETSID
-#define USE_SETRES
-#define USE_SYSV_IPC
-#define NO_SEMUN
-#define DEFAULT_PRINTING PRINT_HPUX
-/* Ken Weiss <krweiss@ucdavis.edu> tells us that SIGCLD_IGNORE is
-   not good for HPUX */
-/* #define SIGCLD_IGNORE */
-#define USE_SIGPROCMASK /* Needed to stop zombie processes on HPUX 9.x and 10.x.*/
-#endif /* HPUX */
-
-
-#ifdef SEQUENT
-#include <signal.h>
-#include <string.h>
-#include <dirent.h>
-#include <sys/types.h>
-#include <sys/statfs.h>
-#include <sys/stat.h>
-#include <sys/buf.h>
-#include <sys/socket.h>
-#include <unistd.h>
-#include <fcntl.h>
-#define SIGNAL_CAST (void (*)(int))
-#define USE_WAITPID
-#define USE_GETCWD
-#define NO_EID
-#define STATFS4
-#define USE_DIRECT
-#ifdef PTX4
-#undef USE_DIRECT
-#endif
-#endif
-
-
+#include <netdb.h>
+#include <syslog.h>
+#include <sys/file.h>
 
-#ifdef SEQUENT_PTX4
-#include <string.h>
-#include <sys/dir.h>
-#include <dirent.h>
-#include <sys/statfs.h>
-#include <sys/statvfs.h>
-#include <sys/vfs.h>
-#include <fcntl.h>
-#include <sys/sockio.h>
+#ifdef HAVE_NETINET_TCP_H
 #include <netinet/tcp.h>
-#include <stropts.h>
-#include <termios.h>
-#define SYSV
-#define USE_WAITPID
-#define SIGNAL_CAST (void (*)(int))
-#define USE_STATVFS
-#define USE_GETCWD
-#ifndef seteuid
-#define seteuid(uid) setreuid(-1,uid)
-#endif
-#ifndef setegid
-#define setegid(gid) setregid(-1,gid)
-#endif
 #endif
 
-
-#ifdef NEXT2
-#include <sys/types.h>
-#include <strings.h>
-#include <dirent.h>
-#include <sys/vfs.h>
-#define bzero(b,len) memset(b,0,len)
-#define mode_t int
-#define NO_UTIMBUF
-#include <libc.h>
-#define NOSTRDUP
-#define USE_DIRECT
-#define USE_WAITPID
-#endif 
-
-
-#ifdef NEXT3_0
-#include <strings.h>
-#include <sys/dir.h>
-#include <sys/vfs.h>
-#define NO_UTIMBUF
-#include <libc.h>
-#define NOSTRDUP
-#define USE_DIRECT
-#define mode_t int
-#define GID_TYPE int
-#define gid_t int
-#define pid_t int
-#define SIGNAL_CAST (void (*)(int))
-#define WAIT3_CAST1 (union wait *)
-#define HAVE_GMTOFF
-#define O_NONBLOCK O_NDELAY
-#endif
-
-
-
-#ifdef APOLLO
-#include <string.h>
-#include <fcntl.h>
-#include <sys/statfs.h>
-#define NO_UTIMBUF
-#define USE_DIRECT
-#define USE_GETCWD
-#define SIGNAL_CAST     (void (*)())
-#define HAVE_FCNTL_LOCK 0
-#define HAVE_GETTIMEOFDAY
-#define STATFS4
-#endif
-
-
-
-#ifdef SCO
-#include <sys/netinet/tcp.h>
-#include <sys/netinet/in_systm.h>
-#include <sys/netinet/ip.h>
-#include <dirent.h>
-#include <string.h>
+#ifdef HAVE_TERMIOS_H
 #include <termios.h>
-#include <fcntl.h>
-#include <sys/statfs.h>
-#include <sys/stropts.h>
-#include <limits.h>
-#include <locale.h>
-#ifdef EVEREST
-#include <unistd.h> 
-#endif /* EVEREST */
-#ifdef NETGROUP
-#include <rpcsvc/ypclnt.h>
-#endif /* NETGROUP */
-#ifdef SecureWare
-#include <sys/security.h>
-#include <sys/audit.h>
-#include <prot.h>
-#define crypt bigcrypt
-#endif /* SecureWare */
-#define SIGNAL_CAST (void (*)(int))
-#define USE_WAITPID
-#define USE_GETCWD
-#define USE_SETSID
-#ifdef SCO3_2_2
-#define setuid(u) setreuid(u,-1)
-#define seteuid(u) setreuid(-1,u)
-#else /* SCO3_2_2 */
-#ifndef EVEREST
-#define ftruncate(f,l) syscall(0x0a28,f,l)
-#define USE_IFREQ
-#define NO_INITGROUPS
-#endif /* EVEREST */
-#endif /* SCO3_2_2 */
-#define STATFS4
-#define NO_FSYNC
-#define HAVE_PATHCONF
-#define NO_GETRLIMIT
-#endif /* SCO */
-
-
-
-/* Definitions for RiscIX */
-#ifdef RiscIX
-#define SIGNAL_CAST (void (*)(int))
-#include <sys/dirent.h>
-#include <sys/acct.h>
-#include <sys/vfs.h>
-#include <string.h>
-#include <utime.h>
-#include <signal.h>
-#define HAVE_GETTIMEOFDAY
-#define NOSTRCASECMP
-#define NOSTRDUP
 #endif
 
-
-
-#ifdef ISC
-#include <net/errno.h>
-#include <string.h>
-#include <sys/dir.h>
-#include <dirent.h>
-#include <sys/statfs.h>
-#include <fcntl.h>
-#include <sys/sioctl.h>
-#include <stropts.h>
-#include <limits.h>
-#include <netinet/tcp.h>
-#define FIONREAD FIORDCHK
-#define SYSV
-#define USE_WAITPID
-#define SIGNAL_CAST (void (*)(int))
-#define USE_GETCWD
-#define USE_SETSID
-#define USE_IFREQ
-#define NO_FTRUNCATE
-#define STATFS4
-#define NO_FSYNC
-#endif
-
-
-
-#ifdef AUX
-#include <fstab.h>
-#include <string.h>
-#include <dirent.h>
-#include <sys/vfs.h>
-#include <fcntl.h>
-#include <termios.h>
-#define SYSV
-#define USE_WAITPID
-#define SIGNAL_CAST (void (*)(int))
-char *strdup (char *);
-#define USE_GETCWD
+#if HAVE_DIRENT_H
+# include <dirent.h>
+# define NAMLEN(dirent) strlen((dirent)->d_name)
+#else
+# define dirent direct
+# define NAMLEN(dirent) (dirent)->d_namlen
+# if HAVE_SYS_NDIR_H
+#  include <sys/ndir.h>
+# endif
+# if HAVE_SYS_DIR_H
+#  include <sys/dir.h>
+# endif
+# if HAVE_NDIR_H
+#  include <ndir.h>
+# endif
+#endif
+
+#ifdef HAVE_SHARED_MMAP
+#include <sys/mman.h>
 #endif
 
-
-#ifdef M88K_R3
-#include <string.h>
-#include <dirent.h>
-#include <fcntl.h>
-#include <termios.h>
-#define STATFS4
-#define SYSV
-#define USE_WAITPID
-#define SIGNAL_CAST (void (*)(int))
-char *strdup (char *);
-#define USE_GETCWD
-#define NO_FSYNC
-#define NO_EID
+#ifdef HAVE_SYSV_IPC
+#include <sys/ipc.h>
+#include <sys/shm.h>
+#include <sys/sem.h>
 #endif
 
-
-#ifdef DNIX
-#include <dirent.h>
-#include <string.h>
-#include <fcntl.h>
-#include <sys/statfs.h>
-#include <sys/stropts.h>
-#define NO_GET_BROADCAST
-#define USE_WAITPID
-#define USE_GETCWD
-#define USE_SETSID
-#define STATFS4
-#define NO_EID
-#define PF_INET AF_INET
-#define NO_STRERROR
-#define ftruncate(f,l) chsize(f,l)
-#endif /* DNIX */
-
-#ifdef CONVEX
-#include <netinet/tcp.h>
-#include <arpa/inet.h>
-#include <dirent.h>
-#include <string.h>
-#include <sys/vfs.h>
-#include <fcntl.h>
-#define DONT_REINSTALL_SIG
-#define USE_SIGBLOCK
-#define USE_WAITPID
-#define SIGNAL_CAST (_SigFunc_Ptr_t)
-#define NO_GETSPNAM
-#define HAVE_MEMMOVE
-extern char *mktemp(char *);
-extern int  fsync(int);
-extern int  seteuid(uid_t);
-extern int  setgroups(int, int *);
-extern int  initgroups(char *, int);
-extern int  statfs(char *, struct statfs *);
-extern int  setegid(gid_t);
-extern int  getopt(int, char *const *, const char *);
-extern int  chroot(char *);
-extern int  gettimeofday(struct timeval *, struct timezone *);
-extern int  gethostname(char *, int);
-extern char *crypt(char *, char *);
-extern char *getpass(char *);
-#endif
-
-
-#ifdef CRAY
-#define MAXPATHLEN 1024
-#include <dirent.h>
-#include <string.h>
-#include <fcntl.h>
-#include <sys/statfs.h>
-#define SIGNAL_CAST (void (*)(int))
-#define SIGCLD_IGNORE
-#define HAVE_FCNTL_LOCK 1
-#define USE_SETSID
-#define STATFS4
+#ifdef HAVE_NET_IF_H
+#include <net/if.h>
 #endif
 
 
-#ifdef ALTOS
-#include <unistd.h>
-#include <string.h>
-#include <dirent.h>
-#include <sys/fcntl.h>
-#include <sys/statfs.h>
-#define        const
-#define        uid_t           int
-#define        gid_t           int
-#define        mode_t          int
-#define        ptrdiff_t       int
-#define HAVE_GETGRNAM  0
-#define NO_EID
-#define NO_FSYNC
-#define        NO_FTRUNCATE
-#define        NO_GETRLIMIT
-#define        NO_INITGROUPS
-#define NO_SELECT
-#define NO_SETGROUPS
-#define NO_STRERROR
-#define NO_STRFTIME
-#define        NO_TM_NAME
-#define NO_UTIMEH
-#define NOSTRCASECMP
-#define REPLACE_MKTIME
-#define REPLACE_RENAME
-#define REPLACE_STRSTR
-#define STATFS4
-#define        USE_GETCWD
-#endif
-
-#ifdef QNX
-#include <arpa/inet.h>
-#define STATFS4
-#include <sys/statfs.h>
-/* Override QNX size of 32 to be 255 */
-#define FD_SETSIZE 255
-#include <sys/select.h>
-#include <signal.h>
-#include <sys/dir.h>
-#define SIGNAL_CAST (void (*)())
-#define USE_WAITPID
-#define NO_INITGROUPS
-#define NO_SETGROUPS
-#define HAVE_TIMEZONE
-#define USE_GETCWD
-#define USE_SETSID
-#define HAVE_FCNTL_LOCK 1
-#define DEFAULT_PRINTING PRINT_QNX
+#ifdef HAVE_SYS_MOUNT_H
+#include <sys/mount.h>
 #endif
 
-
-#ifdef NEWS42
-#include <string.h>
-#include <dirent.h>
+#ifdef HAVE_SYS_VFS_H
 #include <sys/vfs.h>
-#include <sys/timeb.h>
-typedef int mode_t;
-#endif
-
-#ifdef OS2
-#include <dirent.h>
-#include <sys/statfs.h>
-#include <string.h>
-#include <limits.h>
-#define SIGNAL_CAST (void (*)())
-#define HAVE_FCNTL_LOCK 0
-#define USE_WAITPID
-#define NO_GET_BROADCAST
-#define NO_EID
-#define NO_SETGROUPS
-#define NO_INITGROUPS
-#define NO_CRYPT
-#define NO_STATFS
-#define NO_CHROOT
-#define NO_CHOWN
-#define strcasecmp stricmp
-#define strncasecmp strnicmp
-#endif
-
-
-#ifdef LYNX
-#define SIGNAL_CAST (void (*)())
-#define WAIT3_CAST1 (union wait *)
-#define STATFS4
-#include <fcntl.h>
-#include <resource.h>
-#include <stat.h>
-#include <string.h>
-#include <dirent.h>
-#include <sys/statfs.h>
-#define USE_GETCWD
-#define USE_GETSID
-#endif
-
-
-#ifdef BOS
-#define SIGNAL_CAST (void (*)(int))
-#include <string.h>
-#include <sys/dir.h>
-#include <sys/select.h>
-#include <dirent.h>
-#include <fcntl.h>
-#include <signal.h>
-#include <sys/statfs.h>
-#include <sys/bsdioctl.h>
-#endif
-
-#ifdef AMIGA
-#include <arpa/inet.h>
-#include <dirent.h>
-#include <string.h>
-#include <netinet/tcp.h>
-#include <sys/acct.h>
-#include <sys/fcntl.h>
-#include <sys/filio.h>
-#include <sys/sockio.h>
-#include <netinet/in_systm.h>
-#include <netinet/ip.h>
-#include <sys/termios.h>
-#include <limits.h>
-#include <sys/timeb.h>
-
-#define SIGNAL_CAST (void (*)(int))
-#define USE_GETCWD
-#define HAVE_BZERO
-#define HAVE_MEMMOVE
-#define USE_SIGPROCMASK
-#define USE_WAITPID
-#define USE_DIRECT
-#define USE_F_FSIZE
-#define HAVE_FCNTL_LOCK 0
-#define HAVE_GETTIMEOFDAY
-#define HAVE_PATHCONF
-
-#define HAVE_NO_PROC
-#define NO_FORK_DEBUG
-#define HAVE_FORK 0
-#define HAVE_VFORK 1
-#endif
-
-/* For UnixWare 2.x's ia_uinfo routines. (tangent@cyberport.com) */
-#ifdef IA_UINFO
-#include <iaf.h>
-#include <ia.h>
-#endif
-
-
-/*******************************************************************
-end of the platform specific sections
-********************************************************************/
-
-#if (!defined(USE_LDAP_DB) && !defined(USE_NISPLUS_DB))
-#define USE_SMBPASS_DB
-#endif
-
-#if defined(USE_MMAP) || defined(FAST_SHARE_MODES)
-#include <sys/mman.h>
 #endif
 
-#ifdef SecureWare
-#define NEED_AUTH_PARAMETERS
+#ifdef HAVE_SYS_FS_S5PARAM_H 
+#include <sys/fs/s5param.h>
 #endif
 
-#ifdef REPLACE_GETPASS
-extern char    *getsmbpass(char *);
-#define getpass(s) getsmbpass(s)
+#if defined (HAVE_SYS_FILSYS_H) && !defined (_CRAY)
+#include <sys/filsys.h> 
 #endif
 
-#ifdef REPLACE_INNETGR
-#define innetgr(group,host,user,dom) InNetGr(group,host,user,dom)
+#ifdef HAVE_SYS_STATFS_H
+# include <sys/statfs.h>
 #endif
 
-#ifndef FD_SETSIZE
-#define FD_SETSIZE 255
+#ifdef HAVE_DUSTAT_H              
+#include <sys/dustat.h>
 #endif
 
-#ifndef __STDC__
-#define const
-#endif
-
-/* Now for some other grungy stuff */
-#if defined(NO_GETSPNAM) && !defined(QNX)
-struct spwd { /* fake shadow password structure */
-       char *sp_pwdp;
-};
-#endif
-
-#ifndef HAVE_BZERO
-#ifndef bzero
-#define bzero(p,s) memset(p,0,s)
-#endif
+#ifdef HAVE_SYS_STATVFS_H          
+#include <sys/statvfs.h>
 #endif
 
-#ifndef HAVE_MEMMOVE
-#ifndef memmove
-#define memmove(d,s,n) MemMove(d,s,n)
-#endif
+#ifdef HAVE_SHADOW_H
+#include <shadow.h>
 #endif
 
-#ifdef USE_DIRECT
-#include <sys/dir.h>
-#endif
+#ifdef HAVE_SYS_SECURITY_H
+#include <sys/security.h>
+#include <prot.h>
+#define PASSWORD_LENGTH 16
+#endif  /* HAVE_SYS_SECURITY_H */
 
-/* some unixes have ENOTTY instead of TIOCNOTTY */
-#ifndef TIOCNOTTY
-#ifdef ENOTTY
-#define TIOCNOTTY ENOTTY
-#endif
+#ifdef HAVE_COMPAT_H
+#include <compat.h>
 #endif
 
-#ifndef SIGHUP
-#define SIGHUP 1
+#ifndef uchar
+#define uchar unsigned char
 #endif
 
-/* if undefined then use bsd or sysv printing */
-#ifndef DEFAULT_PRINTING
-#ifdef SYSV
-#define DEFAULT_PRINTING PRINT_SYSV
+#ifdef HAVE_UNSIGNED_CHAR
+#define schar signed char
 #else
-#define DEFAULT_PRINTING PRINT_BSD
-#endif
+#define schar char
 #endif
 
-/* This defines the name of the printcap file. It is MOST UNLIKELY that
-   this will change BUT! Specifying a file with the format of a printcap
-   file but containing only a subset of the printers actually in your real 
-   printcap file is a quick-n-dirty way to allow dynamic access to a subset
-   of available printers.
-*/
-#ifndef PRINTCAP_NAME
-#ifdef AIX
-#define PRINTCAP_NAME "/etc/qconfig"
-#elif defined(SYSV)
-#define PRINTCAP_NAME "lpstat"
-#else
-#define PRINTCAP_NAME "/etc/printcap"
+#ifndef int32
+#if (SIZEOF_INT == 4)
+#define int32 int
+#elif (SIZEOF_LONG == 4)
+#define int32 long
+#elif (SIZEOF_SHORT == 4)
+#define int32 short
 #endif
 #endif
 
-
-#ifdef USE_SYSV_IPC
-#include <sys/ipc.h>
-#include <sys/sem.h>
-#include <sys/shm.h>
-#ifdef NO_SEMUN
-union semun {
-       int val;
-       struct semid_ds *buf;
-       unsigned short *array;
-};
-#endif
-#if defined(HPUX) && defined(HPUX10)
-#ifdef SEMMSL
-#undef SEMMSL
-#endif /* SEMMSL */
-#endif /* HPUX && HPUX10 */
-#endif
-
-#ifdef AFS_AUTH
-#include <afs/stds.h>
-#include <afs/kautils.h>
-#endif
-
-#ifdef DFS_AUTH
-#include <dce/dce_error.h>
-#include <dce/sec_login.h>
+#ifndef uint32
+#define uint32 unsigned int32
 #endif
 
-#ifdef KRB5_AUTH
-#include <krb5.h>
+#ifndef MIN
+#define MIN(a,b) ((a)<(b)?(a):(b))
 #endif
 
-#ifdef KRB4_AUTH
-#include <krb.h>
+#ifndef MAX
+#define MAX(a,b) ((a)>(b)?(a):(b))
 #endif
 
-#ifdef NO_UTIMBUF
-struct utimbuf {
-  time_t actime;
-  time_t modtime;
-};
-#endif
-
-#ifdef NO_STRERROR
-#ifndef strerror
+#ifndef HAVE_STRERROR
 extern char *sys_errlist[];
 #define strerror(i) sys_errlist[i]
 #endif
-#endif
 
-#ifndef perror
-#define perror(m) printf("%s: %s\n",m,strerror(errno))
+#ifndef HAVE_STRCHR
+# define strchr                 index
+# define strrchr                rindex
 #endif
 
-#ifndef MAXHOSTNAMELEN
-#define MAXHOSTNAMELEN 255
+#ifndef HAVE_ERRNO_DECL
+extern int errno;
 #endif
 
+
 /* Lists, trees, caching, datbase... */
 #include "ubi_sLinkList.h"
 #include "ubi_dLinkList.h"
@@ -1258,157 +311,144 @@ extern char *sys_errlist[];
 /***** automatically generated prototypes *****/
 #include "proto.h"
 
+#ifdef strcpy
+#undef strcpy
+#endif /* strcpy */
+#define strcpy(dest,src) __ERROR__XX__NEVER_USE_STRCPY___;
 
+#ifdef strcat
+#undef strcat
+#endif /* strcat */
+#define strcat(dest,src) __ERROR__XX__NEVER_USE_STRCAT___;
 
-#ifndef S_IFREG
-#define S_IFREG 0100000
-#endif
+#ifdef sprintf
+#undef sprintf
+#endif /* sprintf */
+#define sprintf __ERROR__XX__NEVER_USE_SPRINTF__;
 
-#ifndef S_ISREG
-#define S_ISREG(x) ((S_IFREG & (x))!=0)
-#endif
+#define pstrcpy(d,s) safe_strcpy((d),(s),sizeof(pstring)-1)
+#define pstrcat(d,s) safe_strcat((d),(s),sizeof(pstring)-1)
+#define fstrcpy(d,s) safe_strcpy((d),(s),sizeof(fstring)-1)
+#define fstrcat(d,s) safe_strcat((d),(s),sizeof(fstring)-1)
 
-#ifndef S_ISDIR
-#define S_ISDIR(x) ((S_IFDIR & (x))!=0)
+#ifdef __COMPAR_FN_T
+#define QSORT_CAST (__compar_fn_t)
 #endif
 
-#if !defined(S_ISLNK) && defined(S_IFLNK)
-#define S_ISLNK(x) ((S_IFLNK & (x))!=0)
+#ifndef QSORT_CAST
+#define QSORT_CAST (int (*)(const void *, const void *))
 #endif
 
-#ifdef UFC_CRYPT
-#define crypt ufc_crypt
+/* this guess needs to be improved (tridge) */
+#if defined(HAVE_STATVFS) && !defined(SYSV)
+#define SYSV 1
 #endif
 
-#ifdef REPLACE_STRLEN
-#define strlen(s) Strlen(s)
+#ifndef DEFAULT_PRINTING
+#ifdef SYSV
+#define DEFAULT_PRINTING PRINT_SYSV
+#else
+#define DEFAULT_PRINTING PRINT_BSD
 #endif
-
-#ifdef REPLACE_STRSTR
-#define strstr(s,p) Strstr(s,p)
 #endif
 
-#ifdef REPLACE_MKTIME
-#define mktime(t) Mktime(t)
+#ifndef SIGCLD
+#define SIGCLD SIGCHLD
 #endif
 
-#ifndef NGROUPS_MAX
-#define NGROUPS_MAX 128
+#if (defined(HAVE_SYSV_IPC) || defined(HAVE_SHARED_MMAP))
+#define FAST_SHARE_MODES 1
 #endif
 
-#ifndef EDQUOT
-#define EDQUOT ENOSPC
+#ifndef MAP_FILE
+#define MAP_FILE 0
 #endif
 
-#ifndef HAVE_GETGRNAM
-#define HAVE_GETGRNAM 1
+#ifdef HAVE_SYSV_IPC
+#ifndef HAVE_UNION_SEMUN
+union semun {
+       int val;
+       struct semid_ds *buf;
+       unsigned short *array;
+};
 #endif
-
-#ifndef SOL_TCP
-#define SOL_TCP 6
 #endif
 
-/* default to using ftruncate workaround as this is safer than assuming
-it works and getting lots of bug reports */
-#ifndef FTRUNCATE_CAN_EXTEND
-#define FTRUNCATE_CAN_EXTEND 0
+#if (!defined(WITH_NISPLUS) && !defined(WITH_LDAP))
+#define USE_SMBPASS_DB 1
 #endif
 
-/* maybe this unix doesn't separate RD and WR locks? */
-#ifndef F_RDLCK
-#define F_RDLCK F_WRLCK
+#if defined(HAVE_PUTPRPWNAM) && defined(AUTH_CLEARTEXT_SEG_CHARS)
+#define OSF1_ENH_SEC 1
 #endif
 
-#ifndef ENOTSOCK
-#define ENOTSOCK EINVAL
+#if defined(HAVE_PAM_AUTHENTICATE) && defined(HAVE_SECURITY_PAM_APPL_H)
+#define HAVE_PAM 1
 #endif
 
-#ifndef SIGCLD
-#define SIGCLD SIGCHLD
-#endif 
+#if defined(HAVE_YP_GET_DEFAULT_DOMAIN)
+#define HAVE_NETGROUP 1
+#endif
 
-#ifndef MAP_FILE
-#define MAP_FILE 0
+#ifndef ALLOW_CHANGE_PASSWORD
+#if (defined(HAVE_TERMIOS_H) && defined(HAVE_DUP2) && defined(HAVE_SETSID))
+#define ALLOW_CHANGE_PASSWORD 1
+#endif
 #endif
 
-#ifndef HAVE_FCNTL_LOCK
-#define HAVE_FCNTL_LOCK 1
+/* what is the longest significant password available on your system? 
+ Knowing this speeds up password searches a lot */
+#ifndef PASSWORD_LENGTH
+#define PASSWORD_LENGTH 8
 #endif
 
-#ifndef WAIT3_CAST2
-#define WAIT3_CAST2 (struct rusage *)
+
+#ifndef HAVE_PIPE
+#define SYNC_DNS 1
 #endif
 
-#ifndef WAIT3_CAST1
-#define WAIT3_CAST1 (int *)
+#ifndef MAXPATHLEN
+#define MAXPATHLEN 256
 #endif
 
-#ifndef QSORT_CAST
-#define QSORT_CAST (int (*)())
+#ifndef SEEK_SET
+#define SEEK_SET 0
 #endif
 
 #ifndef INADDR_LOOPBACK
 #define INADDR_LOOPBACK 0x7f000001
-#endif /* INADDR_LOOPBACK */
-
-/* this is a rough check to see if this machine has a lstat() call.
-   it is not guaranteed to work */
-#if !defined(S_ISLNK)
-#define lstat stat
 #endif
 
-/* Not all systems declare ERRNO in errno.h... and some systems #define it! */
-#ifndef errno
-extern int errno;
-#endif 
-
-
-#ifdef NO_EID
-#define geteuid() getuid()
-#define getegid() getgid()
-#define seteuid(x) setuid(x)
-#define setegid(x) setgid(x)
+#ifndef HAVE_CRYPT
+#define crypt ufc_crypt
 #endif
 
+#if defined(HAVE_CRYPT16) && defined(HAVE_GETAUTHUID)
+#define ULTRIX_AUTH 1
+#endif
 
-#if (HAVE_FCNTL_LOCK == 0)
-/* since there is no locking available, system includes  */
-/* for DomainOS 10.4 do not contain any of the following */
-/* #define's. So, to satisfy the compiler, add these     */
-/* #define's, although they arn't really necessary.      */
-#define F_GETLK 0
-#define F_SETLK 0
-#define F_WRLCK 0
-#define F_UNLCK 0
-#endif /* HAVE_FCNTL_LOCK == 0 */
-
-#ifdef NOSTRCASECMP
-#define strcasecmp(s1,s2) StrCaseCmp(s1,s2)
-#define strncasecmp(s1,s2,n) StrnCaseCmp(s1,s2,n)
+#ifndef HAVE_STRDUP
+char *strdup(const char *s);
 #endif
 
-#ifdef strcpy
-#undef strcpy
-#endif /* strcpy */
-#define strcpy(dest,src) __ERROR__XX__NEVER_USE_STRCPY___;
+#ifndef HAVE_MEMMOVE
+void *memmove(void *dest,const void *src,int size);
+#endif
 
-#ifdef strcat
-#undef strcat
-#endif /* strcat */
-#define strcat(dest,src) __ERROR__XX__NEVER_USE_STRCAT___;
+#ifndef HAVE_INITGROUPS
+int initgroups(char *name,gid_t id);
+#endif
 
-#ifdef sprintf
-#undef sprintf
-#endif /* sprintf */
-#define sprintf __ERROR__XX__NEVER_USE_SPRINTF__;
+#ifndef HAVE_RENAME
+int rename(const char *zfrom, const char *zto);
+#endif
 
-#define pstrcpy(d,s) safe_strcpy((d),(s),sizeof(pstring)-1)
-#define pstrcat(d,s) safe_strcat((d),(s),sizeof(pstring)-1)
-#define fstrcpy(d,s) safe_strcpy((d),(s),sizeof(fstring)-1)
-#define fstrcat(d,s) safe_strcat((d),(s),sizeof(fstring)-1)
+#ifndef HAVE_MKTIME
+time_t mktime(struct tm *t);
+#endif
 
-#if MEM_MAN
-#include "mem_man/mem_man.h"
-#endif /* MEM_MAN */
+#ifndef HAVE_FTRUNCATE
+int ftruncate(int f,long l);
+#endif
 
 #endif /* _INCLUDES_H */
index 0a369d80e29cbb43126041ba6024ac422ccfe7f6..afe1a3b1c6b38ac50e6582813b282506c60726f0 100644 (file)
    accessible to root */
 #define DUMP_CORE 1
 
-/* what is the longest significant password available on your system? 
- Knowing this speeds up password searches a lot */
-#ifndef PASSWORD_LENGTH
-#define PASSWORD_LENGTH 8
-#endif
-
 #define SMB_ALIGNMENT 1
 
 
index 97ee483f55e850c5d1355ca62c28e12e7f1f89b5..523d7c9615d801e2b48aae6276ad2029cec3b3b2 100644 (file)
@@ -160,6 +160,10 @@ BOOL deal_with_creds(uchar sess_key[8],
                     DOM_CRED *sto_clnt_cred, 
                     DOM_CRED *rcv_clnt_cred, DOM_CRED *rtn_srv_cred);
 
+/*The following definitions come from  dfree.c  */
+
+int sys_disk_free(char *path,int *bsize,int *dfree,int *dsize);
+
 /*The following definitions come from  dir.c  */
 
 void init_dptrs(void);
@@ -186,7 +190,7 @@ BOOL SeekDir(void *p,int pos);
 int TellDir(void *p);
 void DirCacheAdd( char *path, char *name, char *dname, int snum );
 char *DirCacheCheck( char *path, char *name, int snum );
-void DirCacheFlush( int snum );
+void DirCacheFlush(int snum);
 
 /*The following definitions come from  fault.c  */
 
@@ -1188,21 +1192,6 @@ BOOL name_map_mangle( char *OutName, BOOL need83, int snum );
 
 void mdfour(unsigned char *out, unsigned char *in, int n);
 
-/*The following definitions come from  mem_man/mem_man.c  */
-
-void *smb_mem_malloc(size_t size,char *file,int line);
-char *smb_mem_strdup(char *s, char *file, int line);
-int smb_mem_free(void *ptr,char *file,int line);
-void smb_mem_write_info(void *ptr,FILE *outfile);
-char *smb_mem_query_file(void *ptr);
-int smb_mem_query_line(void *ptr);
-int smb_mem_test(void *ptr);
-void smb_mem_write_status(FILE *outfile);
-void smb_mem_write_verbose(FILE *outfile);
-void smb_mem_write_errors(FILE *outfile);
-void smb_mem_set_multiplier(int multiplier);
-void *smb_mem_resize(void *ptr,size_t newsize);
-
 /*The following definitions come from  membuffer.c  */
 
 void mem_init(struct mem_buf *buf, int margin);
@@ -1240,6 +1229,10 @@ BOOL getlmhostsent( FILE *fp, char *name, int *name_type, struct in_addr *ipaddr
 void endlmhosts(FILE *fp);
 BOOL resolve_name(char *name, struct in_addr *return_ip);
 
+/*The following definitions come from  netmask.c  */
+
+int get_netmask(struct in_addr *ipaddr, struct in_addr *nmask);
+
 /*The following definitions come from  nisppass.c  */
 
 struct passdb_ops *nisplus_initialize_password_db(void);
@@ -1742,10 +1735,6 @@ BOOL disk_quotas(char *path, int *bsize, int *dfree, int *dsize);
 
 /*The following definitions come from  replace.c  */
 
-char *Strstr(char *s, char *p);
-time_t Mktime(struct tm      *t);
-int InNetGr(char *group,char *host,char *user,char *dom);
-void *memcpy_wrapped(void *d,void *s,int l,char *fname,int line);
 
 /*The following definitions come from  reply.c  */
 
@@ -1811,8 +1800,6 @@ int dos_chmod(int cnum,char *fname,int dosmode,struct stat *st);
 int file_utime(int cnum, char *fname, struct utimbuf *times);
 BOOL set_filetime(int cnum, char *fname, time_t mtime);
 BOOL unix_convert(char *name,int cnum,pstring saved_last_component, BOOL *bad_path);
-int disk_free(char *path,int *bsize,int *dfree,int *dsize);
-int sys_disk_free(char *path,int *bsize,int *dfree,int *dsize);
 BOOL check_name(char *name,int cnum);
 void sync_file(int cnum, int fnum);
 void close_file(int fnum, BOOL normal_close);
@@ -1859,6 +1846,12 @@ struct shmem_ops *smb_shm_open(int ronly);
 
 struct shmem_ops *sysv_shm_open(int ronly);
 
+/*The following definitions come from  signal.c  */
+
+void BlockSignals(BOOL block,int signum);
+void CatchSignal(int signum,void (*handler)(int ));
+void CatchChild(void);
+
 /*The following definitions come from  slprintf.c  */
 
 int vslprintf(char *str, int n, char *format, va_list ap);
@@ -1987,7 +1980,6 @@ char *tmpdir(void);
 BOOL is_a_socket(int fd);
 BOOL next_token(char **ptr,char *buff,char *sep);
 char **toktocliplist(int *ctok, char *sep);
-void *MemMove(void *dest,void *src,int size);
 void *mem_dup( void *from, int size );
 void array_promote(char *array,int elsize,int element);
 void set_socket_options(int fd, char *options);
@@ -2097,7 +2089,6 @@ struct hostent *Get_Hostbyname(char *name);
 BOOL process_exists(int pid);
 char *uidtoname(int uid);
 char *gidtoname(int gid);
-void BlockSignals(BOOL block,int signum);
 void ajt_panic(void);
 char *readdirname(void *p);
 BOOL is_in_path(char *name, name_compare_entry *namelist);
index 3b1796f76b4c77727eda8813b2da5fa6611c2146..1c37aab7e28925c109efabc535f6183acb420f44 100644 (file)
@@ -57,12 +57,6 @@ typedef int BOOL;
    as signed and unsigned int will work.
 */
 
-/* afs/stds.h defines int16 and int32 */
-#ifndef AFS_AUTH
-typedef short int16;
-typedef int int32;
-#endif
-
 #ifndef uint8
 typedef unsigned char uint8;
 #endif
@@ -71,22 +65,17 @@ typedef unsigned char uint8;
 typedef unsigned short uint16;
 #endif
 
-#ifndef uint32
-typedef unsigned int uint32;
-#endif
-
 #ifndef uchar
 #define uchar unsigned char
 #endif
+
 #ifndef int16
 #define int16 short
 #endif
+
 #ifndef uint16
 #define uint16 unsigned short
 #endif
-#ifndef uint32
-#define uint32 unsigned int
-#endif
 
 #define SIZEOFWORD 2
 
@@ -94,11 +83,15 @@ typedef unsigned int uint32;
 #define DEF_CREATE_MASK (0755)
 #endif
 
+#ifndef PRINTCAP_NAME
+#define PRINTCAP_NAME "/etc/printcap"
+#endif
+
 /* how long to wait for secondary SMB packets (milli-seconds) */
 #define SMB_SECONDARY_WAIT (60*1000)
 
 /* debugging code */
-#ifndef SYSLOG
+#if !defined(WITH_SYSLOG) || defined(NO_SYSLOG)
 #define DEBUG(level,body) ((DEBUGLEVEL>=(level))?(Debug1 body):0)
 #define DEBUGLVL(level) (DEBUGLEVEL>=(level))
 #else
@@ -1149,7 +1142,7 @@ struct parm_struct
 #define ERRHRD 0x03  /* Error is an hardware error. */
 #define ERRCMD 0xFF  /* Command was not in the "SMB" format. */
 
-#ifdef __STDC__
+#ifdef HAVE_STDARG_H
 int Debug1(char *, ...); 
 int slprintf(char *str, int n, char *format, ...);
 #else
@@ -1157,7 +1150,7 @@ int Debug1();
 int slprintf();
 #endif
 
-#ifdef DFS_AUTH
+#ifdef WITH_DFS
 void dfs_unlogin(void);
 extern int dcelogin_atmost_once;
 #endif
@@ -1170,14 +1163,6 @@ void ajt_panic(void);
 char *strdup(char *s);
 #endif
 
-#ifdef REPLACE_STRLEN
-int Strlen(char *);
-#endif
-
-#ifdef REPLACE_STRSTR
-char *Strstr(char *s, char *p);
-#endif
-
 #ifndef MIN
 #define MIN(a,b) ((a)<(b)?(a):(b))
 #endif
@@ -1190,7 +1175,7 @@ char *Strstr(char *s, char *p);
 #endif
 
 #ifndef SIGNAL_CAST
-#define SIGNAL_CAST
+#define SIGNAL_CAST (RETSIGTYPE (*)())
 #endif
 
 #ifndef SELECT_CAST
@@ -1330,10 +1315,10 @@ enum remote_arch_types {RA_UNKNOWN, RA_WFWG, RA_OS2, RA_WIN95, RA_WINNT, RA_SAMB
 /* case handling */
 enum case_handling {CASE_LOWER,CASE_UPPER};
 
-#ifdef USE_SSL
+#ifdef WITH_SSL
 /* SSL version options */
 enum ssl_version_enum {SMB_SSL_V2,SMB_SSL_V3,SMB_SSL_V23,SMB_SSL_TLS1};
-#endif /* USE_SSL */
+#endif /* WITH_SSL */
 
 /* Macros to get at offsets within smb_lkrng and smb_unlkrng
    structures. We cannot define these as actual structures
diff --git a/source/install-sh b/source/install-sh
new file mode 100755 (executable)
index 0000000..5871924
--- /dev/null
@@ -0,0 +1,238 @@
+#! /bin/sh
+#
+# install - install a program, script, or datafile
+# This comes from X11R5.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# `make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch.
+#
+
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit="${DOITPROG-}"
+
+
+# put in absolute paths if you don't have them in your path; or use env. vars.
+
+mvprog="${MVPROG-mv}"
+cpprog="${CPPROG-cp}"
+chmodprog="${CHMODPROG-chmod}"
+chownprog="${CHOWNPROG-chown}"
+chgrpprog="${CHGRPPROG-chgrp}"
+stripprog="${STRIPPROG-strip}"
+rmprog="${RMPROG-rm}"
+mkdirprog="${MKDIRPROG-mkdir}"
+
+transformbasename=""
+transform_arg=""
+instcmd="$mvprog"
+chmodcmd="$chmodprog 0755"
+chowncmd=""
+chgrpcmd=""
+stripcmd=""
+rmcmd="$rmprog -f"
+mvcmd="$mvprog"
+src=""
+dst=""
+dir_arg=""
+
+while [ x"$1" != x ]; do
+    case $1 in
+       -c) instcmd="$cpprog"
+           shift
+           continue;;
+
+       -d) dir_arg=true
+           shift
+           continue;;
+
+       -m) chmodcmd="$chmodprog $2"
+           shift
+           shift
+           continue;;
+
+       -o) chowncmd="$chownprog $2"
+           shift
+           shift
+           continue;;
+
+       -g) chgrpcmd="$chgrpprog $2"
+           shift
+           shift
+           continue;;
+
+       -s) stripcmd="$stripprog"
+           shift
+           continue;;
+
+       -t=*) transformarg=`echo $1 | sed 's/-t=//'`
+           shift
+           continue;;
+
+       -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
+           shift
+           continue;;
+
+       *)  if [ x"$src" = x ]
+           then
+               src=$1
+           else
+               # this colon is to work around a 386BSD /bin/sh bug
+               :
+               dst=$1
+           fi
+           shift
+           continue;;
+    esac
+done
+
+if [ x"$src" = x ]
+then
+       echo "install:  no input file specified"
+       exit 1
+else
+       true
+fi
+
+if [ x"$dir_arg" != x ]; then
+       dst=$src
+       src=""
+       
+       if [ -d $dst ]; then
+               instcmd=:
+       else
+               instcmd=mkdir
+       fi
+else
+
+# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
+# might cause directories to be created, which would be especially bad 
+# if $src (and thus $dsttmp) contains '*'.
+
+       if [ -f $src -o -d $src ]
+       then
+               true
+       else
+               echo "install:  $src does not exist"
+               exit 1
+       fi
+       
+       if [ x"$dst" = x ]
+       then
+               echo "install:  no destination specified"
+               exit 1
+       else
+               true
+       fi
+
+# If destination is a directory, append the input filename; if your system
+# does not like double slashes in filenames, you may need to add some logic
+
+       if [ -d $dst ]
+       then
+               dst="$dst"/`basename $src`
+       else
+               true
+       fi
+fi
+
+## this sed command emulates the dirname command
+dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
+
+# Make sure that the destination directory exists.
+#  this part is taken from Noah Friedman's mkinstalldirs script
+
+# Skip lots of stat calls in the usual case.
+if [ ! -d "$dstdir" ]; then
+defaultIFS='   
+'
+IFS="${IFS-${defaultIFS}}"
+
+oIFS="${IFS}"
+# Some sh's can't handle IFS=/ for some reason.
+IFS='%'
+set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
+IFS="${oIFS}"
+
+pathcomp=''
+
+while [ $# -ne 0 ] ; do
+       pathcomp="${pathcomp}${1}"
+       shift
+
+       if [ ! -d "${pathcomp}" ] ;
+        then
+               $mkdirprog "${pathcomp}"
+       else
+               true
+       fi
+
+       pathcomp="${pathcomp}/"
+done
+fi
+
+if [ x"$dir_arg" != x ]
+then
+       $doit $instcmd $dst &&
+
+       if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
+       if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
+       if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
+       if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
+else
+
+# If we're going to rename the final executable, determine the name now.
+
+       if [ x"$transformarg" = x ] 
+       then
+               dstfile=`basename $dst`
+       else
+               dstfile=`basename $dst $transformbasename | 
+                       sed $transformarg`$transformbasename
+       fi
+
+# don't allow the sed command to completely eliminate the filename
+
+       if [ x"$dstfile" = x ] 
+       then
+               dstfile=`basename $dst`
+       else
+               true
+       fi
+
+# Make a temp file name in the proper directory.
+
+       dsttmp=$dstdir/#inst.$$#
+
+# Move or copy the file name to the temp name
+
+       $doit $instcmd $src $dsttmp &&
+
+       trap "rm -f ${dsttmp}" 0 &&
+
+# and set any options; do chmod last to preserve setuid bits
+
+# If any of these fail, we abort the whole thing.  If we want to
+# ignore errors from any of these, just make sure not to ignore
+# errors from the above "$doit $instcmd $src $dsttmp" command.
+
+       if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
+       if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
+       if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
+       if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
+
+# Now rename the file to the real destination.
+
+       $doit $rmcmd -f $dstdir/$dstfile &&
+       $doit $mvcmd $dsttmp $dstdir/$dstfile 
+
+fi &&
+
+
+exit 0
index fe78700eddd32e95433c2a6233730724df64b155..d5e81eb50fc34e4352cd8e7c72f04afbbe8b0065 100644 (file)
@@ -203,7 +203,7 @@ static int string_match(char *tok,char *s)
            && strcasecmp(tok, s + str_len - tok_len) == 0)
            return (YES);
     } else if (tok[0] == '@') {                        /* netgroup: look it up */
-#ifdef NETGROUP
+#ifdef HAVE_NETGROUP
       static char *mydomain = NULL;
       char *hostname = NULL;
       BOOL netgroup_ok = False;
index f46ccbb185590935128ca2acc41eca61726a7c69..e1b3c6cd9f9c3da12d371b2051030c48bbad351a 100644 (file)
@@ -45,10 +45,10 @@ static void fault_report(int sig)
       fault_setup(cont_fn);
       cont_fn(NULL);
 #ifdef SIGSEGV
-      signal(SIGSEGV,SIGNAL_CAST SIG_DFL);
+      CatchSignal(SIGSEGV,SIGNAL_CAST SIG_DFL);
 #endif
 #ifdef SIGBUS
-      signal(SIGBUS,SIGNAL_CAST SIG_DFL);
+      CatchSignal(SIGBUS,SIGNAL_CAST SIG_DFL);
 #endif
       return; /* this should cause a core dump */
     }
@@ -71,10 +71,10 @@ void fault_setup(void (*fn)(void *))
   cont_fn = fn;
 
 #ifdef SIGSEGV
-  signal(SIGSEGV,SIGNAL_CAST sig_fault);
+  CatchSignal(SIGSEGV,SIGNAL_CAST sig_fault);
 #endif
 #ifdef SIGBUS
-  signal(SIGBUS,SIGNAL_CAST sig_fault);
+  CatchSignal(SIGBUS,SIGNAL_CAST sig_fault);
 #endif
 }
 
index 68754f08486f563e2794aaa1ccce9d99b46b110c..7e544fa8d0760f966a460475d804b858a758aab2 100644 (file)
@@ -40,20 +40,19 @@ static struct termio t;
 #define TCSANOW 0
 #endif
 
- int tcgetattr(int fd, struct termio *t)
+static int tcgetattr(int fd, struct termio *t)
 {
        return ioctl(fd, TCGETA, t);
 }
 
- int tcsetattr(int fd, int flags, struct termio *t)
+static int tcsetattr(int fd, int flags, struct termio *t)
 {
        if(flags & TCSAFLUSH)
                ioctl(fd, TCFLSH, TCIOFLUSH);
        return ioctl(fd, TCSETS, t);
 }
 
-#else /* SYSV_TERMIO */
-#ifdef BSD_TERMIO
+#elif !defined(TCSAFLUSH)
 
 /* BSD TERMIO HANDLING */
 
@@ -63,33 +62,25 @@ static struct sgttyb t;
 #define TURN_ECHO_OFF(t) ((t).sg_flags &= ~ECHO)
 #define TURN_ECHO_ON(t) ((t).sg_flags |= ECHO)
 
-#ifndef TCSAFLUSH
 #define TCSAFLUSH 1
-#endif
-
-#ifndef TCSANOW
 #define TCSANOW 0
-#endif
 
- int tcgetattr(int fd, struct sgttyb *t)
+static int tcgetattr(int fd, struct sgttyb *t)
 {
        return ioctl(fd, TIOCGETP, (char *)t);
 }
 
- int tcsetattr(int fd, int flags, struct sgttyb *t)
+static int tcsetattr(int fd, int flags, struct sgttyb *t)
 {
        return ioctl(fd, TIOCSETP, (char *)t);
 }
 
-#else /* BSD_TERMIO */
-
-/* POSIX TERMIO HANDLING */
+#else /* POSIX TERMIO HANDLING */
 #define ECHO_IS_ON(t) ((t).c_lflag & ECHO)
 #define TURN_ECHO_OFF(t) ((t).c_lflag &= ~ECHO)
 #define TURN_ECHO_ON(t) ((t).c_lflag |= ECHO)
 
 static struct termios t;
-#endif /* BSD_TERMIO */
 #endif /* SYSV_TERMIO */
 
 char *getsmbpass(char *prompt)    
@@ -101,7 +92,7 @@ char *getsmbpass(char *prompt)
   size_t nread;
 
   /* Catch problematic signals */
-  signal(SIGINT, SIGNAL_CAST SIG_IGN);
+  CatchSignal(SIGINT, SIGNAL_CAST SIG_IGN);
 
   /* Try to write to and read from the terminal if we can.
      If we can't open the terminal, use stderr and stdin.  */
@@ -153,7 +144,7 @@ char *getsmbpass(char *prompt)
     fclose (in);
 
   /* Catch problematic signals */
-  signal(SIGINT, SIGNAL_CAST SIG_DFL);
+  CatchSignal(SIGINT, SIGNAL_CAST SIG_DFL);
 
   printf("\n");
   return buf;
index 8c1610e9cbade6afb13cdb9fe86ed79cba7648ef..7aae803abf3dfcf5e0051324b4d8ee55faa66fa8 100644 (file)
@@ -78,200 +78,45 @@ static void get_broadcast(struct in_addr *if_ipaddr,
                          struct in_addr *if_bcast,
                          struct in_addr *if_nmask)
 {  
-  BOOL found = False;
-#ifndef NO_GET_BROADCAST
-  int sock = -1;               /* AF_INET raw socket desc */
-  char buff[1024];
-  struct ifreq *ifr=NULL;
-  int i;
-
-#if defined(EVEREST)
-  int n_interfaces;
-  struct ifconf ifc;
-  struct ifreq  *ifreqs;
-#elif defined(USE_IFREQ)
-  struct ifreq ifreq;
-  struct strioctl strioctl;
-  struct ifconf *ifc;
-#else
-  struct ifconf ifc;
-#endif
-#endif
-
-  /* get a default netmask and broadcast */
-  default_netmask(if_nmask, if_ipaddr);
-
-#ifndef NO_GET_BROADCAST  
-  /* Create a socket to the INET kernel. */
-#if USE_SOCKRAW
-  if ((sock = socket(AF_INET, SOCK_RAW, PF_INET )) < 0)
-#else
-    if ((sock = socket(AF_INET, SOCK_DGRAM, 0 )) < 0)
-#endif
-      {
-        DEBUG(0,( "Unable to open socket to get broadcast address\n"));
-        return;
-      }
-  
-  /* Get a list of the configured interfaces */
-#ifdef EVEREST
-  /* This is part of SCO Openserver 5: The ioctls are no longer part
-     if the lower level STREAMS interface glue. They are now real
-     ioctl calls */
-
-  if (ioctl(sock, SIOCGIFANUM, &n_interfaces) < 0) {
-    DEBUG(0,( "SIOCGIFANUM: %s\n", strerror(errno)));
-  } else {
-    DEBUG(0,( "number of interfaces returned is: %d\n", n_interfaces));
-
-    ifc.ifc_len = sizeof(struct ifreq) * n_interfaces;
-    ifc.ifc_buf = (caddr_t) alloca(ifc.ifc_len);
-
-    if (ioctl(sock, SIOCGIFCONF, &ifc) < 0)
-      DEBUG(0, ( "SIOCGIFCONF: %s\n", strerror(errno)));
-    else {
-      ifr = ifc.ifc_req;
-
-      for (i = 0; i < n_interfaces; ++i) {
-       if (if_ipaddr->s_addr ==
-           ((struct sockaddr_in *) &ifr[i].ifr_addr)->sin_addr.s_addr) {
-         found = True;
-         break;
+       uint32 nm;
+       short onbc;
+       short offbc;
+
+       /* get a default netmask and broadcast */
+       default_netmask(if_nmask, if_ipaddr);
+
+       get_netmask(if_ipaddr, if_nmask);
+
+       /* sanity check on the netmask */
+       nm = ntohl(if_nmask->s_addr);
+       onbc = 0;
+       offbc = 0;
+       while((onbc + offbc) < 32) {
+               if(nm & 0x80000000) {
+                       onbc++;
+                       if(offbc) {
+                               /* already found an off bit, so mask
+                                   is wrong */
+                               onbc = 34;
+                       }
+               } else {
+                       offbc++;
+               }
+               nm <<= 1;
+       }
+       if ((onbc < 8)||(onbc == 34)) {
+               DEBUG(0,("Impossible netmask %s - using defaults\n",
+                        inet_ntoa(*if_nmask)));
+               default_netmask(if_nmask, if_ipaddr);      
        }
-      }
-    }
-  }
-#elif defined(USE_IFREQ)
-  ifc = (struct ifconf *)buff;
-  ifc->ifc_len = BUFSIZ - sizeof(struct ifconf);
-  strioctl.ic_cmd = SIOCGIFCONF;
-  strioctl.ic_dp  = (char *)ifc;
-  strioctl.ic_len = sizeof(buff);
-  if (ioctl(sock, I_STR, &strioctl) < 0) {
-    DEBUG(0,( "I_STR/SIOCGIFCONF: %s\n", strerror(errno)));
-  } else {
-    ifr = (struct ifreq *)ifc->ifc_req;  
-
-    /* Loop through interfaces, looking for given IP address */
-    for (i = ifc->ifc_len / sizeof(struct ifreq); --i >= 0; ifr++) {
-      if (if_ipaddr->s_addr ==
-         (*(struct sockaddr_in *) &ifr->ifr_addr).sin_addr.s_addr) {
-       found = True;
-       break;
-      }
-    }
-  }
-#elif defined(__FreeBSD__) || defined(NETBSD) || defined(AMIGA) || defined(_AIX41) || defined(__OpenBSD__)
-  ifc.ifc_len = sizeof(buff);
-  ifc.ifc_buf = buff;
-  if (ioctl(sock, SIOCGIFCONF, &ifc) < 0) {
-    DEBUG(0,("SIOCGIFCONF: %s\n", strerror(errno)));
-  } else {
-    ifr = ifc.ifc_req;
-    /* Loop through interfaces, looking for given IP address */
-    i = ifc.ifc_len;
-    while (i > 0) {
-      if (if_ipaddr->s_addr ==
-         (*(struct sockaddr_in *) &ifr->ifr_addr).sin_addr.s_addr) {
-       found = True;
-       break;
-      }
-      i -= ifr->ifr_addr.sa_len + IFNAMSIZ;
-      ifr = (struct ifreq*) ((char*) ifr + ifr->ifr_addr.sa_len + IFNAMSIZ);
-    }
-  }
-#else
-  ifc.ifc_len = sizeof(buff);
-  ifc.ifc_buf = buff;
-  if (ioctl(sock, SIOCGIFCONF, &ifc) < 0) {
-    DEBUG(0,("SIOCGIFCONF: %s\n", strerror(errno)));
-  } else {
-    ifr = ifc.ifc_req;
-  
-    /* Loop through interfaces, looking for given IP address */
-    for (i = ifc.ifc_len / sizeof(struct ifreq); --i >= 0; ifr++) {
-#ifdef BSDI
-      if (ioctl(sock, SIOCGIFADDR, ifr) < 0) break;
-#endif
-      if (if_ipaddr->s_addr ==
-         (*(struct sockaddr_in *) &ifr->ifr_addr).sin_addr.s_addr) {
-       found = True;
-       break;
-      }
-    }
-  }
-#endif
-  
-  if (!found) {
-    DEBUG(0,("No interface found for address %s\n", inet_ntoa(*if_ipaddr)));
-  } else {
-    /* Get the netmask address from the kernel */
-#ifdef USE_IFREQ
-    ifreq = *ifr;
-  
-    strioctl.ic_cmd = SIOCGIFNETMASK;
-    strioctl.ic_dp  = (char *)&ifreq;
-    strioctl.ic_len = sizeof(struct ifreq);
-    if (ioctl(sock, I_STR, &strioctl) < 0)
-      DEBUG(0,("Failed I_STR/SIOCGIFNETMASK: %s\n", strerror(errno)));
-    else
-      *if_nmask = ((struct sockaddr_in *)&ifreq.ifr_addr)->sin_addr;
-#else
-    if (ioctl(sock, SIOCGIFNETMASK, ifr) < 0)
-      DEBUG(0,("SIOCGIFNETMASK failed\n"));
-    else
-      *if_nmask = ((struct sockaddr_in *)&ifr->ifr_addr)->sin_addr;
-#endif
-
-    DEBUG(4,("Netmask for %s = %s\n", ifr->ifr_name,
-            inet_ntoa(*if_nmask)));
-  }
-
-  /* Close up shop */
-  (void) close(sock);
-  
-#endif
-
-  /* sanity check on the netmask */
-  {
-    uint32 nm;
-    short onbc;
-    short offbc;
-
-    nm = ntohl(if_nmask->s_addr);
-    onbc = 0;
-    offbc = 0;
-    while( (onbc + offbc) < 32 )
-         {
-           if( nm & 0x80000000 )
-             {
-               onbc++;
-               if( offbc ) /* already found an off bit, so mask is wrong */
-                 {
-                   onbc = 34;
-                 }
-             }
-           else
-             {
-               offbc++;
-             }
-           nm <<= 1;
-         }
-    if ((onbc < 8)||(onbc == 34)) {
-      DEBUG(0,("Impossible netmask %s - using defaults\n",inet_ntoa(*if_nmask)));
-      default_netmask(if_nmask, if_ipaddr);      
-    }
-  }
 
-  /* derive the broadcast assuming a 1's broadcast, as this is what
-     all MS operating systems do, we have to comply even if the unix
-     box is setup differently */
-  {
-    if_bcast->s_addr = MKBCADDR(if_ipaddr->s_addr, if_nmask->s_addr);
-  }
+       /* derive the broadcast assuming a 1's broadcast, as this is what
+          all MS operating systems do, we have to comply even if the unix
+          box is setup differently */
+       if_bcast->s_addr = MKBCADDR(if_ipaddr->s_addr, if_nmask->s_addr);
   
-  DEBUG(4,("Derived broadcast address %s\n", inet_ntoa(*if_bcast)));
-}  /* get_broadcast */
+       DEBUG(4,("Derived broadcast address %s\n", inet_ntoa(*if_bcast)));
+}
 
 
 
diff --git a/source/lib/netmask.c b/source/lib/netmask.c
new file mode 100644 (file)
index 0000000..138a441
--- /dev/null
@@ -0,0 +1,351 @@
+/* 
+   Unix SMB/Netbios implementation.
+   Version 1.9.
+   code to query kernel netmask
+   Copyright (C) Andrew Tridgell 1998
+   
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2 of the License, or
+   (at your option) any later version.
+   
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+   
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+
+/* working out the netmask for an interface is an incredibly non-portable
+   thing. We have several possible implementations below, and autoconf
+   tries each of them to see what works 
+
+   Note that this file does _not_ include includes.h. That is so this code
+   can be called directly from the autoconf tests. That also means
+   this code cannot use any of the normal Samba debug stuff or defines.
+   This is standalone code.
+
+*/
+
+#ifndef AUTOCONF
+#include "config.h"
+#endif
+
+#ifdef HAVE_NETMASK_IFCONF
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#include <netdb.h>
+#include <sys/ioctl.h>
+#include <net/if.h>
+
+#ifndef SIOCGIFCONF
+#include <sys/sockio.h>
+#endif
+
+
+/****************************************************************************
+  get the netmask address for a local interface
+****************************************************************************/
+int get_netmask(struct in_addr *ipaddr, struct in_addr *nmask)
+{  
+       struct ifconf ifc;
+       char buff[2048];
+       int fd, i, n;
+       struct ifreq *ifr=NULL;
+
+       if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) == -1) {
+#ifdef DEBUG
+               fprintf(stderr,"socket failed\n");
+#endif
+               return -1;
+       }
+  
+       ifc.ifc_len = sizeof(buff);
+       ifc.ifc_buf = buff;
+       if (ioctl(fd, SIOCGIFCONF, &ifc) != 0) {
+#ifdef DEBUG
+               fprintf(stderr,"SIOCGIFCONF failed\n");
+#endif
+               close(fd);
+               return -1;
+       } 
+
+       ifr = ifc.ifc_req;
+  
+       n = ifc.ifc_len / sizeof(struct ifreq);
+       
+#ifdef DEBUG
+       fprintf(stderr,"%d interfaces - looking for %s\n", 
+               n, inet_ntoa(*ipaddr));
+#endif
+
+       /* Loop through interfaces, looking for given IP address */
+       for (i=n-1;i>=0;i--) {
+               if (ioctl(fd, SIOCGIFADDR, &ifr[i]) != 0) {
+#ifdef DEBUG
+                       fprintf(stderr,"SIOCGIFADDR failed\n");
+#endif
+                       continue;
+               }
+
+#ifdef DEBUG
+               fprintf(stderr,"interface %s\n", 
+                       inet_ntoa((*(struct sockaddr_in *)&ifr[i].ifr_addr).sin_addr));
+#endif
+               if (ipaddr->s_addr !=
+                   (*(struct sockaddr_in *)&ifr[i].ifr_addr).sin_addr.s_addr) {
+                       continue;
+               }
+
+               if (ioctl(fd, SIOCGIFNETMASK, &ifr[i]) != 0) {
+#ifdef DEBUG
+                       fprintf(stderr,"SIOCGIFNETMASK failed\n");
+#endif
+                       close(fd);
+                       return -1;
+               }  
+               close(fd);
+               (*nmask) = ((struct sockaddr_in *)&ifr[i].ifr_addr)->sin_addr;
+#ifdef DEBUG
+               fprintf(stderr,"netmask %s\n", inet_ntoa(*nmask));
+#endif
+               return 0;
+       }
+
+#ifdef DEBUG
+       fprintf(stderr,"interface not found\n");
+#endif
+
+       close(fd);
+       return -1;
+}  
+
+#elif defined(HAVE_NETMASK_IFREQ)
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#include <netdb.h>
+#include <sys/ioctl.h>
+#include <net/if.h>
+
+#ifndef SIOCGIFCONF
+#include <sys/sockio.h>
+#endif
+
+#ifndef I_STR
+#include <sys/stropts.h>
+#endif
+
+
+/****************************************************************************
+this should cover most of the rest of systems
+****************************************************************************/
+ int get_netmask(struct in_addr *ipaddr, struct in_addr *nmask)
+{
+       struct ifreq ifreq;
+       struct strioctl strioctl;
+       struct ifconf *ifc;
+       char buff[2048];
+       int fd, i, n;
+       struct ifreq *ifr=NULL;
+
+       if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) == -1) {
+#ifdef DEBUG
+               fprintf(stderr,"socket failed\n");
+#endif
+               return -1;
+       }
+  
+       ifc = (struct ifconf *)buff;
+       ifc->ifc_len = BUFSIZ - sizeof(struct ifconf);
+       strioctl.ic_cmd = SIOCGIFCONF;
+       strioctl.ic_dp  = (char *)ifc;
+       strioctl.ic_len = sizeof(buff);
+       if (ioctl(fd, I_STR, &strioctl) < 0) {
+#ifdef DEBUG
+               fprintf(stderr,"SIOCGIFCONF failed\n");
+#endif
+               close(fd);
+               return -1;
+       } 
+       
+       ifr = (struct ifreq *)ifc->ifc_req;  
+
+       /* Loop through interfaces, looking for given IP address */
+       n = ifc->ifc_len / sizeof(struct ifreq);
+
+       for (i = 0; i<n; i++, ifr++) {
+#ifdef DEBUG
+               fprintf(stderr,"interface %s\n", 
+                       inet_ntoa((*(struct sockaddr_in *)&ifr->ifr_addr).sin_addr.s_addr));
+#endif
+               if (ipaddr->s_addr ==
+                   (*(struct sockaddr_in *) &ifr->ifr_addr).sin_addr.s_addr) {
+                       break;
+               }
+       }
+
+#ifdef DEBUG
+       if (i == n) {
+               fprintf(stderr,"interface not found\n");
+               close(fd);
+               return -1;
+       }
+#endif
+
+       ifreq = *ifr;
+  
+       strioctl.ic_cmd = SIOCGIFNETMASK;
+       strioctl.ic_dp  = (char *)&ifreq;
+       strioctl.ic_len = sizeof(struct ifreq);
+       if (ioctl(fd, I_STR, &strioctl) != 0) {
+#ifdef DEBUG
+               fprintf(stderr,"Failed SIOCGIFNETMASK\n");
+#endif
+               close(fd);
+               return -1;
+       }
+
+       close(fd);
+       *nmask = ((struct sockaddr_in *)&ifreq.ifr_addr)->sin_addr;
+#ifdef DEBUG
+       fprintf(stderr,"netmask %s\n", inet_ntoa(*nmask));
+#endif
+       return 0;
+}
+
+#elif defined(HAVE_NETMASK_AIX)
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#include <netdb.h>
+#include <sys/ioctl.h>
+#include <net/if.h>
+
+#ifndef SIOCGIFCONF
+#include <sys/sockio.h>
+#endif
+
+/****************************************************************************
+this one is for AIX
+****************************************************************************/
+ int get_netmask(struct in_addr *ipaddr, struct in_addr *nmask)
+{
+       char buff[2048];
+       int fd, i, n;
+       struct ifconf ifc;
+       struct ifreq *ifr=NULL;
+
+       if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) == -1) {
+#ifdef DEBUG
+               fprintf(stderr,"socket failed\n");
+#endif
+               return -1;
+       }
+
+
+       ifc.ifc_len = sizeof(buff);
+       ifc.ifc_buf = buff;
+
+       if (ioctl(fd, SIOCGIFCONF, &ifc) != 0) {
+#ifdef DEBUG
+               fprintf(stderr,"SIOCGIFCONF failed\n");
+#endif
+               close(fd);
+               return -1;
+       }
+
+       ifr = ifc.ifc_req;
+       /* Loop through interfaces, looking for given IP address */
+       i = ifc.ifc_len;
+       while (i > 0) {
+#ifdef DEBUG
+               fprintf(stderr,"interface %s\n", 
+                       inet_ntoa((*(struct sockaddr_in *)&ifr->ifr_addr).sin_addr));
+#endif
+               if (ipaddr->s_addr ==
+                   (*(struct sockaddr_in *) &ifr->ifr_addr).sin_addr.s_addr) {
+                       break;
+               }
+               i -= ifr->ifr_addr.sa_len + IFNAMSIZ;
+               ifr = (struct ifreq*) ((char*) ifr + ifr->ifr_addr.sa_len + 
+                                      IFNAMSIZ);
+       }
+  
+
+#ifdef DEBUG
+       if (i <= 0) {
+               fprintf(stderr,"interface not found\n");
+               close(fd);
+               return -1;
+       }
+#endif
+
+       if (ioctl(fd, SIOCGIFNETMASK, ifr) != 0) {
+#ifdef DEBUG
+               fprintf(stderr,"SIOCGIFNETMASK failed\n");
+#endif
+               close(fd);
+               return -1;
+       }  
+
+       close(fd);
+
+       (*nmask) = ((struct sockaddr_in *)&ifr->ifr_addr)->sin_addr;
+#ifdef DEBUG
+       fprintf(stderr,"netmask %s\n", inet_ntoa(*nmask));
+#endif
+       return 0;
+}
+
+#else /* a dummy version */
+ int get_netmask(struct in_addr *ipaddr, struct in_addr *nmask)
+{
+       return -1;
+}
+#endif
+
+
+#ifdef AUTOCONF
+/* this is the autoconf driver to test get_netmask() */
+
+ main()
+{
+       char buf[1024];
+       struct hostent *hp;
+       struct in_addr ip, nmask;
+
+       if (gethostname(buf, sizeof(buf)-1) != 0) {
+               fprintf(stderr,"gethostname failed\n");
+               exit(1);
+       }
+
+       hp = gethostbyname(buf);
+
+       if (!hp) {
+               fprintf(stderr,"gethostbyname failed\n");
+               exit(1);
+       }
+
+       memcpy((char *)&ip, (char *)hp->h_addr, hp->h_length);
+
+       if (get_netmask(&ip, &nmask) == 0) exit(0);
+
+       fprintf(stderr,"get_netmask failed\n");
+       exit(1);
+}
+#endif
index a08d3d240e4897a5a8c3df03133668a5f4d9d375..50eac37c832bcce6ca31d85cbe2303f62245a892 100644 (file)
@@ -27,20 +27,8 @@ extern int DEBUGLEVEL;
  void replace_dummy(void) 
 {}
 
-#ifdef REPLACE_STRLEN
-/****************************************************************************
-a replacement strlen() that returns int for solaris
-****************************************************************************/
- int Strlen(char *s)
-{
-  int ret=0;
-  if (!s) return(0);
-  while (*s++) ret++;
-  return(ret);
-}
-#endif
 
-#ifdef NO_FTRUNCATE
+#ifndef HAVE_FTRUNCATE
  /*******************************************************************
 ftruncate for operating systems that don't have it
 ********************************************************************/
@@ -57,27 +45,7 @@ ftruncate for operating systems that don't have it
 #endif
 
 
-#ifdef REPLACE_STRSTR
-/****************************************************************************
-Mips version of strstr doesn't seem to work correctly.
-There is a #define in includes.h to redirect calls to this function.
-****************************************************************************/
-char *Strstr(char *s, char *p)
-{
-       int len = strlen(p);
-
-       while ( *s != '\0' ) {
-               if ( strncmp(s, p, len) == 0 )
-               return s;
-               s++;
-       }
-
-       return NULL;
-}
-#endif /* REPLACE_STRSTR */
-
-
-#ifdef REPLACE_MKTIME
+#ifndef HAVE_MKTIME
 /*******************************************************************
 a mktime() replacement for those who don't have it - contributed by 
 C.A. Lademann <cal@zls.com>
@@ -86,7 +54,7 @@ C.A. Lademann <cal@zls.com>
 #define  HOUR    60*MINUTE
 #define  DAY             24*HOUR
 #define  YEAR    365*DAY
-time_t Mktime(struct tm      *t)
+ time_t mktime(struct tm *t)
 {
   struct tm       *u;
   time_t  epoch = 0;
@@ -126,22 +94,17 @@ time_t Mktime(struct tm      *t)
     t->tm_wday = u->tm_wday;
     t->tm_yday = u->tm_yday;
     t->tm_isdst = u->tm_isdst;
-#ifndef NO_TM_NAME
-    memcpy(t->tm_name, u->tm_name, LTZNMAX);
-#endif
   }
 
   return(epoch);
 }
-#endif /* REPLACE_MKTIME */
+#endif /* !HAVE_MKTIME */
 
 
 
-#ifdef REPLACE_RENAME
+#ifndef HAVE_RENAME
 /* Rename a file. (from libiberty in GNU binutils)  */
- int rename (zfrom, zto)
-     const char *zfrom;
-     const char *zto;
+ int rename(const char *zfrom, const char *zto)
 {
   if (link (zfrom, zto) < 0)
     {
@@ -156,73 +119,70 @@ time_t Mktime(struct tm      *t)
 #endif
 
 
-#ifdef REPLACE_INNETGR
+#ifndef HAVE_INNETGR
 /*
  * Search for a match in a netgroup. This replaces it on broken systems.
  */
-int InNetGr(char *group,char *host,char *user,char *dom)
+ int innetgr(char *group,char *host,char *user,char *dom)
 {
-  char *hst, *usr, *dm;
+       char *hst, *usr, *dm;
   
-  setnetgrent(group);
-  while (getnetgrent(&hst, &usr, &dm))
-    if (((host == 0) || (hst == 0) || !strcmp(host, hst)) &&
-       ((user == 0) || (usr == 0) || !strcmp(user, usr)) &&
-       ((dom == 0) || (dm == 0) || !strcmp(dom, dm))) {
-      endnetgrent();
-      return (1);
-    }
-  endnetgrent();
-  return (0);
+       setnetgrent(group);
+       while (getnetgrent(&hst, &usr, &dm)) {
+               if (((host == 0) || (hst == 0) || !strcmp(host, hst)) &&
+                   ((user == 0) || (usr == 0) || !strcmp(user, usr)) &&
+                   ((dom == 0) || (dm == 0) || !strcmp(dom, dm))) {
+                       endnetgrent();
+                       return (1);
+               }
+       }
+       endnetgrent();
+       return (0);
 }
 #endif
 
 
 
-#ifdef NO_INITGROUPS
-#include <sys/types.h>
-#include <limits.h>
-#include <grp.h>
-
-#ifndef NULL
-#define NULL (void *)0
-#endif
-
+#ifndef HAVE_INITGROUPS
 /****************************************************************************
  some systems don't have an initgroups call 
 ****************************************************************************/
  int initgroups(char *name,gid_t id)
 {
-#ifdef NO_SETGROUPS
-  /* yikes! no SETGROUPS or INITGROUPS? how can this work? */
-  return(0);
+#ifndef HAVE_SETGROUPS
+       static int done;
+       if (!done) {
+               DEBUG(1,("WARNING: running without setgroups\n"));
+               done=1;
+       }
+       /* yikes! no SETGROUPS or INITGROUPS? how can this work? */
+       return(0);
 #else
-  gid_t  grouplst[NGROUPS_MAX];
-  int    i,j;
-  struct group *g;
-  char   *gr;
-
-  grouplst[0] = id;
-  i = 1;
-  while (i < NGROUPS_MAX && 
-        ((g = (struct group *)getgrent()) != (struct group *)NULL)) 
-    {
-      if (g->gr_gid == id)
-       continue;
-      j = 0;
-      gr = g->gr_mem[0];
-      while (gr && (*gr != (char)NULL)) {
-       if (strcmp(name,gr) == 0) {
-         grouplst[i] = g->gr_gid;
-         i++;
-         gr = (char *)NULL;
-         break;
+       gid_t  grouplst[NGROUPS_MAX];
+       int    i,j;
+       struct group *g;
+       char   *gr;
+       
+       grouplst[0] = id;
+       i = 1;
+       while (i < NGROUPS_MAX && 
+              ((g = (struct group *)getgrent()) != (struct group *)NULL)) {
+               if (g->gr_gid == id)
+                       continue;
+               j = 0;
+               gr = g->gr_mem[0];
+               while (gr && (*gr != (char)NULL)) {
+                       if (strcmp(name,gr) == 0) {
+                               grouplst[i] = g->gr_gid;
+                               i++;
+                               gr = (char *)NULL;
+                               break;
+                       }
+                       gr = g->gr_mem[++j];
+               }
        }
-       gr = g->gr_mem[++j];
-      }
-    }
-  endgrent();
-  return(setgroups(i,grouplst));
+       endgrent();
+       return(setgroups(i,grouplst));
 #endif
 }
 #endif
@@ -232,27 +192,89 @@ int InNetGr(char *group,char *host,char *user,char *dom)
 /* This is needed due to needing the nap() function but we don't want
    to include the Xenix libraries since that will break other things...
    BTW: system call # 0x0c28 is the same as calling nap() */
-long nap(long milliseconds) {
-  return syscall(0x0c28, milliseconds);
-}
+ long nap(long milliseconds) {
+        return syscall(0x0c28, milliseconds);
+ }
 #endif
 
 
-#if WRAP_MEMCPY
-#undef memcpy
+#ifndef HAVE_MEMMOVE
 /*******************************************************************
-a wrapper around memcpy for diagnostic purposes
+safely copies memory, ensuring no overlap problems.
+this is only used if the machine does not have it's own memmove().
+this is not the fastest algorithm in town, but it will do for our
+needs.
 ********************************************************************/
-void *memcpy_wrapped(void *d,void *s,int l,char *fname,int line)
+ void *memmove(void *dest,const void *src,int size)
 {
-  if (l>64 && (((int)d)%4) != (((int)s)%4))
-    DEBUG(4,("Misaligned memcpy(0x%X,0x%X,%d) at %s(%d)\n",d,s,l,fname,line));
-#ifdef xx_old_memcpy  
-  return(xx_old_memcpy(d,s,l));
-#else
-  return(memcpy(d,s,l));
+       unsigned long d,s;
+       int i;
+       if (dest==src || !size) return(dest);
+
+       d = (unsigned long)dest;
+       s = (unsigned long)src;
+
+       if ((d >= (s+size)) || (s >= (d+size))) {
+               /* no overlap */
+               memcpy(dest,src,size);
+               return(dest);
+       }
+
+       if (d < s) {
+               /* we can forward copy */
+               if (s-d >= sizeof(int) && 
+                   !(s%sizeof(int)) && 
+                   !(d%sizeof(int)) && 
+                   !(size%sizeof(int))) {
+                       /* do it all as words */
+                       int *idest = (int *)dest;
+                       int *isrc = (int *)src;
+                       size /= sizeof(int);
+                       for (i=0;i<size;i++) idest[i] = isrc[i];
+               } else {
+                       /* simplest */
+                       char *cdest = (char *)dest;
+                       char *csrc = (char *)src;
+                       for (i=0;i<size;i++) cdest[i] = csrc[i];
+               }
+       } else {
+               /* must backward copy */
+               if (d-s >= sizeof(int) && 
+                   !(s%sizeof(int)) && 
+                   !(d%sizeof(int)) && 
+                   !(size%sizeof(int))) {
+                       /* do it all as words */
+                       int *idest = (int *)dest;
+                       int *isrc = (int *)src;
+                       size /= sizeof(int);
+                       for (i=size-1;i>=0;i--) idest[i] = isrc[i];
+               } else {
+                       /* simplest */
+                       char *cdest = (char *)dest;
+                       char *csrc = (char *)src;
+                       for (i=size-1;i>=0;i--) cdest[i] = csrc[i];
+               }      
+       }
+       return(dest);
+}
 #endif
+
+#ifndef HAVE_STRDUP
+/****************************************************************************
+duplicate a string
+****************************************************************************/
+ char *strdup(const char *s)
+{
+       int len;
+       char *ret;
+
+       if (!s) return(NULL);
+
+       len = strlen(s)+1;
+       ret = (char *)malloc(len);
+       if (!ret) return(NULL);
+       memcpy(ret,s,len);
+       return(ret);
 }
-#define memcpy(d,s,l) memcpy_wrapped(d,s,l,__FILE__,__LINE__)
 #endif
 
diff --git a/source/lib/signal.c b/source/lib/signal.c
new file mode 100644 (file)
index 0000000..8f6f5a9
--- /dev/null
@@ -0,0 +1,102 @@
+/* 
+   Unix SMB/Netbios implementation.
+   Version 1.9.
+   signal handling functions
+
+   Copyright (C) Andrew Tridgell 1998
+   
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2 of the License, or
+   (at your option) any later version.
+   
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+   
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+#include "includes.h"
+
+
+/****************************************************************************
+catch child exits
+****************************************************************************/
+static void sig_cld(int signum)
+{
+       while (sys_waitpid((pid_t)-1,(int *)NULL, WNOHANG) > 0) ;
+
+       CatchSignal(SIGCLD, SIG_IGN);
+}
+
+
+
+/*******************************************************************
+block sigs
+********************************************************************/
+void BlockSignals(BOOL block,int signum)
+{
+#ifdef HAVE_SIGPROCMASK
+       sigset_t set;
+       sigemptyset(&set);
+       sigaddset(&set,signum);
+       sigprocmask(block?SIG_BLOCK:SIG_UNBLOCK,&set,NULL);
+#elif defined(HAVE_SIGBLOCK)
+       int block_mask = sigmask(signum);
+       static int oldmask = 0;
+       if (block) {
+               oldmask = sigblock(block_mask);
+       } else {
+               sigsetmask(oldmask);
+       }
+#else
+       /* yikes! This platform can't block signals? */
+       static int done;
+       if (!done) {
+               DEBUG(0,("WARNING: No signal blocking available\n"));
+               done=1;
+       }
+#endif
+}
+
+
+
+/*******************************************************************
+catch a signal. This should implement the following semantics:
+
+1) the handler remains installed after being called
+2) the signal should be blocked during handler execution
+********************************************************************/
+void CatchSignal(int signum,void (*handler)(int ))
+{
+#ifdef HAVE_SIGACTION
+       struct sigaction act;
+
+       memset(&act, 0, sizeof(act));
+
+       act.sa_handler = handler;
+#ifdef SA_RESTART
+       act.sa_flags = SA_RESTART;
+#endif
+       sigemptyset(&act.sa_mask);
+       sigaddset(&act.sa_mask,signum);
+       sigaction(signum,&act,NULL);
+#else
+       /* FIXME: need to handle sigvec and systems with broken signal() */
+       signal(signum, handler);
+#endif
+}
+
+
+
+/*******************************************************************
+ignore SIGCLD via whatever means is necessary for this OS
+********************************************************************/
+void CatchChild(void)
+{
+       CatchSignal(SIGCLD, sig_cld);
+}
index 4de7b10f4fe159c1b5680ba35f382d8c0a764f3e..acdcfee38fde57926cc7f601f547eaa3ec6aa13e 100644 (file)
@@ -83,7 +83,7 @@ int vslprintf(char *str, int n, char *format, va_list ap)
 #endif
 }
 
-#ifdef __STDC__
+#ifdef HAVE_STDARG_H
  int slprintf(char *str, int n, char *format, ...)
 {
 #else
@@ -96,7 +96,7 @@ va_dcl
        va_list ap;  
        int ret;
 
-#ifdef __STDC__
+#ifdef HAVE_STDARG_H
        va_start(ap, format);
 #else
        va_start(ap);
index f453741fdd0eb0c472d2694e2460d8055d2435ba..ab65339f6eebe11596b6eb7098374ff10277b62b 100644 (file)
@@ -44,7 +44,7 @@ this replaces the normal select() system call
 return if some data has arrived on one of the file descriptors
 return -1 means error
 ********************************************************************/
-#ifdef NO_SELECT
+#ifndef HAVE_SELECT
 static int pollfd(int fd)
 {
   int     r=0;
@@ -146,11 +146,11 @@ The wait() calls vary between systems
 ********************************************************************/
 int sys_waitpid(pid_t pid,int *status,int options)
 {
-#ifdef USE_WAITPID
+#ifdef HAVE_WAITPID
   return waitpid(pid,status,options);
-#else /* USE_WAITPID */
+#else /* HAVE_WAITPID */
   return wait4(pid, status, options, NULL);
-#endif /* USE_WAITPID */
+#endif /* HAVE_WAITPID */
 }
 
 /*******************************************************************
@@ -343,10 +343,10 @@ for getwd
 char *sys_getwd(char *s)
 {
   char *wd;
-#ifdef USE_GETCWD
-  wd = (char *) getcwd (s, sizeof (pstring));
+#ifdef HAVE_GETCWD
+  wd = (char *)getcwd(s, sizeof (pstring));
 #else
-  wd = (char *) getwd (s);
+  wd = (char *)getwd(s);
 #endif
   if (wd)
     unix_to_dos (wd, True);
@@ -358,10 +358,14 @@ chown isn't used much but OS/2 doesn't have it
 ********************************************************************/
 int sys_chown(char *fname,int uid,int gid)
 {
-#ifdef NO_CHOWN
-  DEBUG(1,("Warning - chown(%s,%d,%d) not done\n",fname,uid,gid));
+#ifndef HAVE_CHOWN
+       static int done;
+       if (!done) {
+               DEBUG(1,("WARNING: no chown!\n"));
+               done=1;
+       }
 #else
-  return(chown(fname,uid,gid));
+       return(chown(fname,uid,gid));
 #endif
 }
 
@@ -370,10 +374,14 @@ os/2 also doesn't have chroot
 ********************************************************************/
 int sys_chroot(char *dname)
 {
-#ifdef NO_CHROOT
-  DEBUG(1,("Warning - chroot(%s) not done\n",dname));
+#ifndef HAVE_CHROOT
+       static int done;
+       if (!done) {
+               DEBUG(1,("WARNING: no chroot!\n"));
+               done=1;
+       }
 #else
-  return(chroot(dname));
+       return(chroot(dname));
 #endif
 }
 
index c73d21912042696a03b2473f8d20bdfad5ace6d3..6eacf2a5ed2c471b69f46658108d877d669120f4 100644 (file)
@@ -51,10 +51,10 @@ a gettimeofday wrapper
 ********************************************************************/
 void GetTimeOfDay(struct timeval *tval)
 {
-#ifdef GETTIMEOFDAY1
-  gettimeofday(tval);
+#ifdef HAVE_GETTIMEOFDAY_TZ
+       gettimeofday(tval,NULL);
 #else
-  gettimeofday(tval,NULL);
+       gettimeofday(tval);
 #endif
 }
 
@@ -477,11 +477,11 @@ char *http_timestring(time_t t)
   if (!tm)
     slprintf(buf,sizeof(buf)-1,"%ld seconds since the Epoch",(long)t);
   else
-#ifdef NO_STRFTIME
+#ifndef HAVE_STRFTIME
   fstrcpy(buf, asctime(tm));
-#else /* NO_STRFTIME */
+#else /* !HAVE_STRFTIME */
   strftime(buf, sizeof(buf)-1, "%a, %d %b %Y %H:%M:%S %Z", tm);
-#endif /* NO_STRFTIME */
+#endif /* !HAVE_STRFTIME */
   return buf;
 }
 
@@ -492,31 +492,20 @@ char *http_timestring(time_t t)
 ****************************************************************************/
 char *timestring(void )
 {
-  static fstring TimeBuf;
-  time_t t = time(NULL);
-  struct tm *tm = LocalTime(&t);
-
-  if (!tm)
-    slprintf(TimeBuf,sizeof(TimeBuf)-1,"%ld seconds since the Epoch",(long)t);
-  else
-#ifdef NO_STRFTIME
-  fstrcpy(TimeBuf, asctime(tm));
-#elif defined(CLIX) || defined(CONVEX)
-  strftime(TimeBuf,100,"%Y/%m/%d %I:%M:%S %p",tm);
-#elif defined(AMPM)
-  strftime(TimeBuf,100,"%Y/%m/%d %r",tm);
-#elif defined(TZ_TIME)
-  {
-    int zone = TimeDiff(t);
-    int absZoneMinutes = (zone<0 ? -zone : zone) / 60;
-    size_t len = strftime(TimeBuf,sizeof(TimeBuf)-6,"%Y/%m/%d %T",tm);
-    slprintf(TimeBuf+len, sizeof(fstring) - len - 1, " %c%02d%02d",
-           zone<0?'+':'-',absZoneMinutes/60,absZoneMinutes%60);
-  }
+       static fstring TimeBuf;
+       time_t t = time(NULL);
+       struct tm *tm = LocalTime(&t);
+
+       if (!tm) {
+               slprintf(TimeBuf,sizeof(TimeBuf)-1,"%ld seconds since the Epoch",(long)t);
+       } else {
+#ifdef HAVE_STRFTIME
+               strftime(TimeBuf,100,"%Y/%m/%d %T",tm);
 #else
-  strftime(TimeBuf,100,"%Y/%m/%d %T",tm);
+               fstrcpy(TimeBuf, asctime(tm));
 #endif
-  return(TimeBuf);
+       }
+       return(TimeBuf);
 }
 
 /****************************************************************************
index 17fd970c5b8f27cb903720ef862e37fe2c2fe5ae..f464953498e06a90574d4827e72fa914a2d056c0 100644 (file)
@@ -16,7 +16,9 @@
 
 */
 
-#ifdef UFC_CRYPT
+#include "includes.h"
+
+#ifndef HAVE_CRYPT
 
 /*
  * UFC-crypt: ultra fast crypt(3) implementation
@@ -42,7 +44,6 @@
  * Support routines
  *
  */
-#include "includes.h"
 
 
 #ifndef long32
index b79e6aefc3e0b357a661b5213aa11fd15ffaf72c..8fb81e22b00bea91726b61afc18069593835363b 100644 (file)
@@ -212,7 +212,6 @@ struct passwd *Get_Pwnam(char *user,BOOL allow_change)
   strlower(user);
   last_char = strlen(user)-1;
   user[last_char] = toupper(user[last_char]);
-  DEBUG(3, ("Trying username %s\n", user));
   ret = _Get_Pwnam(user);
   if (ret) return(ret);
 
@@ -232,7 +231,7 @@ check if a user is in a netgroup user list
 ****************************************************************************/
 static BOOL user_in_netgroup_list(char *user,char *ngname)
 {
-#ifdef NETGROUP
+#ifdef HAVE_NETGROUP
   static char *mydomain = NULL;
   if (mydomain == NULL)
     yp_get_default_domain(&mydomain);
@@ -252,7 +251,7 @@ static BOOL user_in_netgroup_list(char *user,char *ngname)
     if (innetgr(ngname, NULL, user, mydomain))
       return (True);
   }
-#endif /* NETGROUP */
+#endif /* HAVE_NETGROUP */
   return False;
 }
 
@@ -261,7 +260,7 @@ check if a user is in a UNIX user list
 ****************************************************************************/
 static BOOL user_in_group_list(char *user,char *gname)
 {
-#if HAVE_GETGRNAM 
+#ifdef HAVE_GETGRNAM 
   struct group *gptr;
   char **member;  
   struct passwd *pass = Get_Pwnam(user,False);
index 22db8d4ab655f7d08dbe3f1be0fe9e2a3fd9e99e..8d1f61931890fc54965d7ffdd7704ae8cc16dab7 100644 (file)
@@ -21,7 +21,7 @@
 
 #include "includes.h"
 
-#if (defined(NETGROUP) && defined (AUTOMOUNT))
+#if (defined(HAVE_NETGROUP) && defined (WITH_AUTOMOUNT))
 #ifdef NISPLUS_HOME
 #include <rpcsvc/nis.h>
 #else
 #endif
 #endif
 
-#ifdef USE_SSL
+#ifdef WITH_SSL
 #include <ssl.h>
 #undef Realloc  /* SSLeay defines this and samba has a function of this name */
 extern SSL  *ssl;
 extern int  sslFd;
-#endif  /* USE_SSL */
+#endif  /* WITH_SSL */
 
 pstring scope = "";
 
@@ -70,7 +70,7 @@ int trans_num = 0;
 int case_default = CASE_LOWER;
 
 pstring debugf = "";
-int syslog_level;
+int syslog_level = 0;
 
 /* the following control case operations - they are put here so the
    client can link easily */
@@ -119,17 +119,16 @@ int sig_usr2(void)
   DEBUG( 0, ( "Got SIGUSR2 set debug level to %d.\n", DEBUGLEVEL ) );
    
   BlockSignals( False, SIGUSR2);
-#ifndef DONT_REINSTALL_SIG
-  signal(SIGUSR2, SIGNAL_CAST sig_usr2);
-#endif 
+  CatchSignal(SIGUSR2, SIGNAL_CAST sig_usr2);
+
   return(0);
 }  
 #endif /* SIGUSR1 */
    
 #if defined(SIGUSR1)
-/**************************************************************************** **
+/******************************************************************************
  catch a sigusr1 - increase the debug log level. 
- **************************************************************************** */
+ *****************************************************************************/
 int sig_usr1(void)
 {
   BlockSignals( True, SIGUSR1);
@@ -142,9 +141,7 @@ int sig_usr1(void)
   DEBUG( 0, ( "Got SIGUSR1 set debug level to %d.\n", DEBUGLEVEL ) );
 
   BlockSignals( False, SIGUSR1);
-#ifndef DONT_REINSTALL_SIG
-  signal(SIGUSR1, SIGNAL_CAST sig_usr1);
-#endif
+  CatchSignal(SIGUSR1, SIGNAL_CAST sig_usr1);
   return(0);
 }
 #endif /* SIGUSR1 */
@@ -155,7 +152,7 @@ int sig_usr1(void)
   ******************************************************************/
 void setup_logging(char *pname,BOOL interactive)
 {
-#ifdef SYSLOG
+#ifdef WITH_SYSLOG
   if (!interactive) {
     char *p = strrchr(pname,'/');
     if (p) pname = p+1;
@@ -273,7 +270,7 @@ static void check_log_size(void)
 write an debug message on the debugfile. This is called by the DEBUG
 macro
 ********************************************************************/
-#ifdef __STDC__
+#ifdef HAVE_STDARG_H
  int Debug1(char *format_str, ...)
 {
 #else
@@ -286,7 +283,7 @@ va_dcl
   int old_errno = errno;
 
   if (stdout_logging) {
-#ifdef __STDC__
+#ifdef HAVE_STDARG_H
     va_start(ap, format_str);
 #else
     va_start(ap);
@@ -298,7 +295,7 @@ va_dcl
     return(0);
   }
   
-#ifdef SYSLOG
+#ifdef WITH_SYSLOG
   if (!lp_syslog_only())
 #endif  
     {
@@ -318,7 +315,7 @@ va_dcl
       }
     }
 
-#ifdef SYSLOG
+#ifdef WITH_SYSLOG
   if (syslog_level < lp_syslog())
     {
       /* 
@@ -341,7 +338,7 @@ va_dcl
       else
        priority = priority_map[syslog_level];
       
-#ifdef __STDC__
+#ifdef HAVE_STDARG_H
       va_start(ap, format_str);
 #else
       va_start(ap);
@@ -355,11 +352,11 @@ va_dcl
     }
 #endif
   
-#ifdef SYSLOG
+#ifdef WITH_SYSLOG
   if (!lp_syslog_only())
 #endif
     {
-#ifdef __STDC__
+#ifdef HAVE_STDARG_H
       va_start(ap, format_str);
 #else
       va_start(ap);
@@ -483,65 +480,6 @@ char **toktocliplist(int *ctok, char *sep)
   return ret;
 }
 
-#ifndef HAVE_MEMMOVE
-/*******************************************************************
-safely copies memory, ensuring no overlap problems.
-this is only used if the machine does not have it's own memmove().
-this is not the fastest algorithm in town, but it will do for our
-needs.
-********************************************************************/
-void *MemMove(void *dest,void *src,int size)
-{
-  unsigned long d,s;
-  int i;
-  if (dest==src || !size) return(dest);
-
-  d = (unsigned long)dest;
-  s = (unsigned long)src;
-
-  if ((d >= (s+size)) || (s >= (d+size))) {
-    /* no overlap */
-    memcpy(dest,src,size);
-    return(dest);
-  }
-
-  if (d < s)
-    {
-      /* we can forward copy */
-      if (s-d >= sizeof(int) && 
-         !(s%sizeof(int)) && !(d%sizeof(int)) && !(size%sizeof(int))) {
-       /* do it all as words */
-       int *idest = (int *)dest;
-       int *isrc = (int *)src;
-       size /= sizeof(int);
-       for (i=0;i<size;i++) idest[i] = isrc[i];
-      } else {
-       /* simplest */
-       char *cdest = (char *)dest;
-       char *csrc = (char *)src;
-       for (i=0;i<size;i++) cdest[i] = csrc[i];
-      }
-    }
-  else
-    {
-      /* must backward copy */
-      if (d-s >= sizeof(int) && 
-         !(s%sizeof(int)) && !(d%sizeof(int)) && !(size%sizeof(int))) {
-       /* do it all as words */
-       int *idest = (int *)dest;
-       int *isrc = (int *)src;
-       size /= sizeof(int);
-       for (i=size-1;i>=0;i--) idest[i] = isrc[i];
-      } else {
-       /* simplest */
-       char *cdest = (char *)dest;
-       char *csrc = (char *)src;
-       for (i=size-1;i>=0;i--) cdest[i] = csrc[i];
-      }      
-    }
-  return(dest);
-}
-#endif
 
 /* ************************************************************************* **
  * Duplicate a block of memory.
@@ -686,9 +624,9 @@ void set_socket_options(int fd, char *options)
 ****************************************************************************/
 void close_sockets(void )
 {
-#ifdef USE_SSL
+#ifdef WITH_SSL
   sslutil_disconnect(Client);
-#endif /* USE_SSL */
+#endif /* WITH_SSL */
 
   close(Client);
   Client = 0;
@@ -2188,15 +2126,15 @@ int read_with_timeout(int fd,char *buf,int mincnt,int maxcnt,long time_out)
     if (mincnt == 0) mincnt = maxcnt;
 
     while (nread < mincnt) {
-#ifdef USE_SSL
+#ifdef WITH_SSL
       if(fd == sslFd){
         readret = SSL_read(ssl, buf + nread, maxcnt - nread);
       }else{
         readret = read(fd, buf + nread, maxcnt - nread);
       }
-#else /* USE_SSL */
+#else /* WITH_SSL */
       readret = read(fd, buf + nread, maxcnt - nread);
-#endif /* USE_SSL */
+#endif /* WITH_SSL */
 
       if (readret == 0) {
        smb_read_error = READ_EOF;
@@ -2242,15 +2180,15 @@ int read_with_timeout(int fd,char *buf,int mincnt,int maxcnt,long time_out)
        return -1;
       }
       
-#ifdef USE_SSL
+#ifdef WITH_SSL
     if(fd == sslFd){
       readret = SSL_read(ssl, buf + nread, maxcnt - nread);
     }else{
       readret = read(fd, buf + nread, maxcnt - nread);
     }
-#else /* USE_SSL */
+#else /* WITH_SSL */
     readret = read(fd, buf+nread, maxcnt-nread);
-#endif /* USE_SSL */
+#endif /* WITH_SSL */
 
       if (readret == 0) {
        /* we got EOF on the file descriptor */
@@ -2335,15 +2273,15 @@ int read_data(int fd,char *buffer,int N)
 
   while (total < N)
   {
-#ifdef USE_SSL
+#ifdef WITH_SSL
     if(fd == sslFd){
       ret = SSL_read(ssl, buffer + total, N - total);
     }else{
       ret = read(fd,buffer + total,N - total);
     }
-#else /* USE_SSL */
+#else /* WITH_SSL */
     ret = read(fd,buffer + total,N - total);
-#endif /* USE_SSL */
+#endif /* WITH_SSL */
 
     if (ret == 0)
     {
@@ -2371,15 +2309,15 @@ int write_data(int fd,char *buffer,int N)
 
   while (total < N)
   {
-#ifdef USE_SSL
+#ifdef WITH_SSL
     if(fd == sslFd){
       ret = SSL_write(ssl,buffer + total,N - total);
     }else{
       ret = write(fd,buffer + total,N - total);
     }
-#else /* USE_SSL */
+#else /* WITH_SSL */
     ret = write(fd,buffer + total,N - total);
-#endif /* USE_SSL */
+#endif /* WITH_SSL */
 
     if (ret == -1) return -1;
     if (ret == 0) return total;
@@ -3364,28 +3302,25 @@ become a daemon, discarding the controlling terminal
 ****************************************************************************/
 void become_daemon(void)
 {
-#ifndef NO_FORK_DEBUG
-  if (fork())
-    _exit(0);
+       if (fork()) {
+               _exit(0);
+       }
 
   /* detach from the terminal */
-#ifdef USE_SETSID
-  setsid();
-#else /* USE_SETSID */
-#ifdef TIOCNOTTY
-  {
-    int i = open("/dev/tty", O_RDWR);
-    if (i >= 0) 
-      {
-       ioctl(i, (int) TIOCNOTTY, (char *)0);      
-       close(i);
-      }
-  }
-#endif /* TIOCNOTTY */
-#endif /* USE_SETSID */
-  /* Close fd's 0,1,2. Needed if started by rsh */
-  close_low_fds();
-#endif /* NO_FORK_DEBUG */
+#ifdef HAVE_SETSID
+       setsid();
+#elif defined(TIOCNOTTY)
+       {
+               int i = open("/dev/tty", O_RDWR);
+               if (i != -1) {
+                       ioctl(i, (int) TIOCNOTTY, (char *)0);      
+                       close(i);
+               }
+       }
+#endif /* HAVE_SETSID */
+
+       /* Close fd's 0,1,2. Needed if started by rsh */
+       close_low_fds();
 }
 
 
@@ -3484,7 +3419,7 @@ int set_filelen(int fd, long len)
    extend a file with ftruncate. Provide alternate implementation
    for this */
 
-#if FTRUNCATE_CAN_EXTEND
+#ifdef HAVE_FTRUNCATE_EXTEND
   return ftruncate(fd, len);
 #else
   struct stat st;
@@ -3606,22 +3541,6 @@ void *Realloc(void *p,int size)
   return(ret);
 }
 
-#ifdef NOSTRDUP
-/****************************************************************************
-duplicate a string
-****************************************************************************/
- char *strdup(char *s)
-{
-  char *ret = NULL;
-  int len;
-  if (!s) return(NULL);
-  ret = (char *)malloc((len = strlen(s))+1);
-  if (!ret) return(NULL);
-  safe_strcpy(ret,s,len);
-  return(ret);
-}
-#endif
-
 
 /****************************************************************************
   Signal handler for SIGPIPE (write on a disconnected socket) 
@@ -3707,7 +3626,8 @@ int open_socket_in(int type, int port, int dlevel,uint32 socket_addr)
   
   bzero((char *)&sock,sizeof(sock));
   memcpy((char *)&sock.sin_addr,(char *)hp->h_addr, hp->h_length);
-#if defined(__FreeBSD__) || defined(NETBSD) || defined(__OpenBSD__) /* XXX not the right ifdef */
+
+#ifdef HAVE_SOCK_SIN_LEN
   sock.sin_len = sizeof(sock);
 #endif
   sock.sin_port = htons( port );
@@ -4065,7 +3985,7 @@ char *client_addr(int fd)
        return addr_buf;
 }
 
-#if (defined(NETGROUP) && defined(AUTOMOUNT))
+#if (defined(HAVE_NETGROUP) && defined(WITH_AUTOMOUNT))
 /******************************************************************
  Remove any mount options such as -rsize=2048,wsize=2048 etc.
  Based on a fix from <Thomas.Hepper@icem.de>.
@@ -4213,10 +4133,10 @@ char *automount_server(char *user_name)
        static pstring server_name;
 
        /* use the local machine name as the default */
-       /* this will be the default if AUTOMOUNT is not used or fails */
+       /* this will be the default if WITH_AUTOMOUNT is not used or fails */
        pstrcpy(server_name, local_machine);
 
-#if (defined(NETGROUP) && defined (AUTOMOUNT))
+#if (defined(HAVE_NETGROUP) && defined (WITH_AUTOMOUNT))
 
        if (lp_nis_home_map())
        {
@@ -4248,11 +4168,11 @@ char *automount_path(char *user_name)
        static pstring server_path;
 
        /* use the passwd entry as the default */
-       /* this will be the default if AUTOMOUNT is not used or fails */
+       /* this will be the default if WITH_AUTOMOUNT is not used or fails */
        /* pstrcpy() copes with get_home_dir() returning NULL */
        pstrcpy(server_path, get_home_dir(user_name));
 
-#if (defined(NETGROUP) && defined (AUTOMOUNT))
+#if (defined(HAVE_NETGROUP) && defined (WITH_AUTOMOUNT))
 
        if (lp_nis_home_map())
        {
@@ -4484,31 +4404,11 @@ turn a gid into a group name
 ********************************************************************/
 char *gidtoname(int gid)
 {
-  static char name[40];
-  struct group *grp = getgrgid(gid);
-  if (grp) return(grp->gr_name);
-  slprintf(name,sizeof(name) - 1, "%d",gid);
-  return(name);
-}
-
-/*******************************************************************
-block sigs
-********************************************************************/
-void BlockSignals(BOOL block,int signum)
-{
-#ifdef USE_SIGBLOCK
-  int block_mask = sigmask(signum);
-  static int oldmask = 0;
-  if (block) 
-    oldmask = sigblock(block_mask);
-  else
-    sigsetmask(oldmask);
-#elif defined(USE_SIGPROCMASK)
-  sigset_t set;
-  sigemptyset(&set);
-  sigaddset(&set,signum);
-  sigprocmask(block?SIG_BLOCK:SIG_UNBLOCK,&set,NULL);
-#endif
+       static char name[40];
+       struct group *grp = getgrgid(gid);
+       if (grp) return(grp->gr_name);
+       slprintf(name,sizeof(name) - 1, "%d",gid);
+       return(name);
 }
 
 #if AJT
@@ -4517,15 +4417,10 @@ my own panic function - not suitable for general use
 ********************************************************************/
 void ajt_panic(void)
 {
-  system("/usr/bin/X11/xedit -display solen:0 /tmp/ERROR_FAULT");
+       system("/usr/bin/X11/xedit -display :0 /tmp/ERROR_FAULT");
 }
 #endif
 
-#ifdef USE_DIRECT
-#define DIRECT direct
-#else
-#define DIRECT dirent
-#endif
 
 /*******************************************************************
 a readdir wrapper which just returns the file name
@@ -4533,43 +4428,33 @@ also return the inode number if requested
 ********************************************************************/
 char *readdirname(void *p)
 {
-  struct DIRECT *ptr;
-  char *dname;
+       struct dirent *ptr;
+       char *dname;
 
-  if (!p) return(NULL);
+       if (!p) return(NULL);
   
-  ptr = (struct DIRECT *)readdir(p);
-  if (!ptr) return(NULL);
+       ptr = (struct dirent *)readdir(p);
+       if (!ptr) return(NULL);
 
-  dname = ptr->d_name;
+       dname = ptr->d_name;
 
 #ifdef NEXT2
-  if (telldir(p) < 0) return(NULL);
+       if (telldir(p) < 0) return(NULL);
 #endif
 
-#ifdef SUNOS5
-  /* this handles a broken compiler setup, causing a mixture
-   of BSD and SYSV headers and libraries */
-  {
-    static BOOL broken_readdir = False;
-    if (!broken_readdir && !(*(dname)) && strequal("..",dname-2))
-      {
-       DEBUG(0,("Your readdir() is broken. You have somehow mixed SYSV and BSD headers and libraries\n"));
-       broken_readdir = True;
-      }
-    if (broken_readdir)
-      dname = dname - 2;
-  }
+#ifdef HAVE_BROKEN_READDIR
+       /* using /usr/ucb/cc is BAD */
+       dname = dname - 2;
 #endif
 
-  {
-    static pstring buf;
-    pstrcpy(buf, dname);
-    unix_to_dos(buf, True);
-    dname = buf;
-  }
+       {
+               static pstring buf;
+               memcpy(buf, dname, NAMLEN(ptr)+1);
+               unix_to_dos(buf, True);
+               dname = buf;
+       }
 
-  return(dname);
+       return(dname);
 }
 
 /*******************************************************************
index 093b3aedf9f50c1b3fcf9c9a9ad04a09860838a2..7dc57bfb470a23c0a08504872f0d0b33623f87b8 100644 (file)
@@ -19,9 +19,7 @@
    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */
 
-#ifdef SYSLOG
-#undef SYSLOG
-#endif
+#define NO_SYSLOG
 
 #include "includes.h"
 #include "trans2.h"
@@ -1633,9 +1631,9 @@ BOOL cli_session_request(struct cli_state *cli, char *host, int name_type,
        _smb_setlen(cli->outbuf,len);
        CVAL(cli->outbuf,0) = 0x81;
 
-#ifdef USE_SSL
+#ifdef WITH_SSL
 retry:
-#endif /* USE_SSL */
+#endif /* WITH_SSL */
 
        send_smb(cli->fd,cli->outbuf);
        DEBUG(5,("Sent session request\n"));
@@ -1643,14 +1641,14 @@ retry:
        if (!client_receive_smb(cli->fd,cli->inbuf,cli->timeout))
                return False;
 
-#ifdef USE_SSL
+#ifdef WITH_SSL
     if(CVAL(cli->inbuf,0) == 0x83 && CVAL(cli->inbuf,4) == 0x8e){ /* use ssl */
         if(!sslutil_fd_is_ssl(cli->fd)){
             if(sslutil_connect(cli->fd) == 0)
                 goto retry;
         }
     }
-#endif /* USE_SSL */
+#endif /* WITH_SSL */
 
        if (CVAL(cli->inbuf,0) != 0x82) {
                 /* This is the wrong place to put the error... JRA. */
@@ -1718,9 +1716,9 @@ void cli_shutdown(struct cli_state *cli)
 {
        if (cli->outbuf) free(cli->outbuf);
        if (cli->inbuf) free(cli->inbuf);
-#ifdef USE_SSL
+#ifdef WITH_SSL
     if (cli->fd != -1) sslutil_disconnect(cli->fd);
-#endif /* USE_SSL */
+#endif /* WITH_SSL */
        if (cli->fd != -1) close(cli->fd);
        memset(cli, 0, sizeof(*cli));
 }
index a578ad8947ee520abf4e11c4dcc7e6e9dd45fb61..344806083a5c2d8a2c94ad6a2d6a8103c1be1d6a 100644 (file)
@@ -313,7 +313,7 @@ FILE *startlmhosts(char *fname)
 {
   FILE *fp = fopen(fname,"r");
   if (!fp) {
-    DEBUG(2,("startlmhosts: Can't open lmhosts file %s. Error was %s\n",
+    DEBUG(4,("startlmhosts: Can't open lmhosts file %s. Error was %s\n",
              fname, strerror(errno)));
     return NULL;
   }
index ee751c0f80de3bd35c8692a48a3e06591799b5dd..c2d8884d7384395cbd05577bc39e5f3f8b2b02f8 100644 (file)
@@ -18,9 +18,7 @@
    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */
 
-#ifdef SYSLOG
-#undef SYSLOG
-#endif
+#define NO_SYSLOG
 
 #include "includes.h"
 
index e4ca6bbb04945cf01348ad17232a888d0dccba4a..e303fb5482129d292a8c4cb2cb7c16beadec7c2c 100644 (file)
@@ -88,7 +88,7 @@ BOOL is_locked(int fnum,int cnum,uint32 count,uint32 offset, int lock_type)
    * Note that most UNIX's can *test* for a write lock on
    * a read-only fd, just not *set* a write lock on a read-only
    * fd. So we don't need to use map_lock_type here.
-   */ 
+   */
 
   return(fcntl_lock(fsp->fd_ptr->fd,F_GETLK,offset,count,lock_type));
 }
@@ -161,13 +161,10 @@ BOOL locking_init(int read_only)
 
 #ifdef FAST_SHARE_MODES
        share_ops = locking_shm_init(read_only);
-       if (!share_ops) {
-               DEBUG(0,("ERROR: Failed to initialise fast share modes - trying slow code\n"));
-       }
-       if (share_ops) return True;
-#endif 
-
+#else
        share_ops = locking_slow_init(read_only);
+#endif
+
        if (!share_ops) {
                DEBUG(0,("ERROR: Failed to initialise share modes!\n"));
                return False;
index afca567033a2ebef819f4497bd18094eb172851d..43a927e14c749e80bcdab1a36b59bba5b503fffc 100644 (file)
    October 1997 - split into separate file (tridge)
 */
 
+#include "includes.h"
+
 #ifdef FAST_SHARE_MODES
 
-#include "includes.h"
 extern int DEBUGLEVEL;
 extern connection_struct Connections[];
 extern files_struct Files[];
@@ -678,13 +679,15 @@ struct share_ops *locking_shm_init(int ronly)
 {
        read_only = ronly;
 
-#ifdef USE_SYSV_IPC
+#ifdef HAVE_SYSV_IPC
        shmops = sysv_shm_open(read_only);
        if (shmops) return &share_ops;
 #endif
 
+#ifdef HAVE_SHARED_MMAP
        shmops = smb_shm_open(read_only);
        if (shmops) return &share_ops;
+#endif
 
        return NULL;
 }
@@ -692,7 +695,7 @@ struct share_ops *locking_shm_init(int ronly)
 #else
  int locking_shm_dummy_procedure(void)
 {return 0;}
-#endif
+#endif /* FAST_SHARE_MODES */
 
 
 
index 183acd1f440949360e5a493c79608e31755502b0..1f8f962ac904d45b0db2519aef2d5fe7daefd046 100644 (file)
@@ -33,6 +33,9 @@
 */
 
 #include "includes.h"
+
+#ifndef FAST_SHARE_MODES
+
 extern int DEBUGLEVEL;
 extern connection_struct Connections[];
 extern files_struct Files[];
@@ -504,17 +507,8 @@ mode file %s (%s)\n", fname, strerror(errno)));
       return 0;
     }
     /* Now truncate the file at this point. */
-#ifdef FTRUNCATE_NEEDS_ROOT
-    become_root(False);
-#endif /* FTRUNCATE_NEEDS_ROOT */
-
     if(ftruncate(fd, newsize)!= 0)
     {
-
-#ifdef FTRUNCATE_NEEDS_ROOT
-      unbecome_root(False);
-#endif /* FTRUNCATE_NEEDS_ROOT */
-
       DEBUG(0,("ERROR: get_share_modes: failed to ftruncate share \
 mode file %s to size %d (%s)\n", fname, newsize, strerror(errno)));
       if(*old_shares)
@@ -526,10 +520,6 @@ mode file %s to size %d (%s)\n", fname, newsize, strerror(errno)));
     }
   }
 
-#ifdef FTRUNCATE_NEEDS_ROOT
-      unbecome_root(False);
-#endif /* FTRUNCATE_NEEDS_ROOT */
-
   if(buf)
     free(buf);
 
@@ -670,27 +660,14 @@ mode file %s (%s)\n", fname, strerror(errno)));
   }
 
   /* Now truncate the file at this point. */
-#ifdef FTRUNCATE_NEEDS_ROOT
-  become_root(False);
-#endif /* FTRUNCATE_NEEDS_ROOT */
-
   if(ftruncate(fd, newsize) != 0)
   {
-
-#ifdef FTRUNCATE_NEEDS_ROOT
-    unbecome_root(False);
-#endif /* FTRUNCATE_NEEDS_ROOT */
-
     DEBUG(0,("ERROR: del_share_mode: failed to ftruncate share \
 mode file %s to size %d (%s)\n", fname, newsize, strerror(errno)));
     if(buf)
       free(buf);
     return;
   }
-
-#ifdef FTRUNCATE_NEEDS_ROOT
-  unbecome_root(False);
-#endif /* FTRUNCATE_NEEDS_ROOT */
 }
   
 /*******************************************************************
@@ -825,17 +802,8 @@ deleting it (%s).\n",fname, strerror(errno)));
 
   /* Now truncate the file at this point - just for safety. */
 
-#ifdef FTRUNCATE_NEEDS_ROOT
-  become_root(False);
-#endif /* FTRUNCATE_NEEDS_ROOT */
-
   if(ftruncate(fd, header_size + (SMF_ENTRY_LENGTH*num_entries))!= 0)
   {
-
-#ifdef FTRUNCATE_NEEDS_ROOT
-    unbecome_root(False);
-#endif /* FTRUNCATE_NEEDS_ROOT */
-
     DEBUG(0,("ERROR: set_share_mode: failed to ftruncate share \
 mode file %s to size %d (%s)\n", fname, header_size + (SMF_ENTRY_LENGTH*num_entries), 
                 strerror(errno)));
@@ -844,10 +812,6 @@ mode file %s to size %d (%s)\n", fname, header_size + (SMF_ENTRY_LENGTH*num_entr
     return False;
   }
 
-#ifdef FTRUNCATE_NEEDS_ROOT
-  unbecome_root(False);
-#endif /* FTRUNCATE_NEEDS_ROOT */
-
   if(buf)
     free(buf);
 
@@ -1093,3 +1057,7 @@ struct share_ops *locking_slow_init(int ronly)
 
        return &share_ops;
 }
+#else
+ int locking_slow_dummy_procedure(void)
+{return 0;}
+#endif /* !FAST_SHARE_MODES */
index 21aaa9e24f548297235e233ee91f1ad29ed1af61..48f78d2a5bb585cbcb43d82eefdeca7d2b044a0c 100644 (file)
@@ -23,7 +23,7 @@
 #include "includes.h"
 
 
-#ifdef FAST_SHARE_MODES
+#ifdef HAVE_SHARED_MMAP
 
 
 extern int DEBUGLEVEL;
@@ -874,7 +874,7 @@ struct shmem_ops *smb_shm_open(int ronly)
 }
 
 
-#else /* FAST_SHARE_MODES */
+#else /* HAVE_SHARED_MMAP */
  int shmem_dummy_procedure(void)
 {return 0;}
-#endif /* FAST_SHARE_MODES */
+#endif /* HAVE_SHARED_MMAP */
index 3466930f4c68be30fc2c4a1c6d5b18100dde59ef..0809e0546f5792af1510919371a0a40ab0bbf1b0 100644 (file)
@@ -23,7 +23,7 @@
 #include "includes.h"
 
 
-#ifdef USE_SYSV_IPC
+#ifdef HAVE_SYSV_IPC
 
 extern int DEBUGLEVEL;
 
@@ -542,15 +542,6 @@ struct shmem_ops *sysv_shm_open(int ronly)
        int i;
        int pid;
 
-
-
-#ifdef LINUX
-       if (sizeof(shm_ds) == 52) {
-               DEBUG(0,("WARNING: You probably have a broken set of glibc2 include files - disabling sysv shared memory\n"));
-               return NULL;
-       }
-#endif
-
        read_only = ronly;
 
        shm_size = lp_shmem_size();
index 3d2d5303de2c27e692cc9ed1cb058c7a1fbf84fb..89be2b0ce0208f868b7f87be74142e83b63912f6 100644 (file)
@@ -135,7 +135,7 @@ void start_async_dns(void)
 {
        int fd1[2], fd2[2];
 
-       signal(SIGCLD, SIG_IGN);
+       CatchChild();
 
        if (pipe(fd1) || pipe(fd2)) {
                return;
@@ -154,10 +154,10 @@ void start_async_dns(void)
        fd_in = fd2[0];
        fd_out = fd1[1];
 
-       signal(SIGUSR2, SIG_IGN);
-       signal(SIGUSR1, SIG_IGN);
-       signal(SIGHUP, SIG_IGN);
-        signal(SIGTERM, SIGNAL_CAST sig_term );
+       CatchSignal(SIGUSR2, SIG_IGN);
+       CatchSignal(SIGUSR1, SIG_IGN);
+       CatchSignal(SIGHUP, SIG_IGN);
+        CatchSignal(SIGTERM, SIGNAL_CAST sig_term );
 
        asyncdns_process();
 }
index 1bb7ed55e40578a57f65d23e9bf9f4030b5d32d8..3fa749b883c2ee28cde2824042d0fe0c06cd7be2 100644 (file)
@@ -102,9 +102,7 @@ static int sig_hup(void)
   set_samba_nb_type();
 
   BlockSignals(False,SIGHUP);
-#ifndef DONT_REINSTALL_SIG
-  signal(SIGHUP,SIGNAL_CAST sig_hup);
-#endif
+
   return(0);
 } /* sig_hup */
 
@@ -141,7 +139,7 @@ static BOOL dump_core(void)
     return( False );
   umask( ~(0700) );
 
-#ifndef NO_GETRLIMIT
+#ifdef HAVE_GETRLIMIT
 #ifdef RLIMIT_CORE
   {
     struct rlimit rlp;
@@ -428,7 +426,7 @@ static BOOL open_sockets(BOOL isdaemon, int port)
   if ( ClientNMB == -1 )
     return( False );
 
-  signal( SIGPIPE, SIGNAL_CAST sig_pipe );
+  CatchSignal( SIGPIPE, SIGNAL_CAST sig_pipe );
 
   set_socket_options( ClientNMB,   "SO_BROADCAST" );
   set_socket_options( ClientDGRAM, "SO_BROADCAST" );
@@ -582,8 +580,8 @@ int main(int argc,char *argv[])
 
   fault_setup((void (*)(void *))fault_continue );
 
-  signal( SIGHUP,  SIGNAL_CAST sig_hup );
-  signal( SIGTERM, SIGNAL_CAST sig_term );
+  CatchSignal( SIGHUP,  SIGNAL_CAST sig_hup );
+  CatchSignal( SIGTERM, SIGNAL_CAST sig_term );
 
   /* Setup the signals that allow the debug log level
      to by dynamically changed. */
@@ -592,11 +590,11 @@ int main(int argc,char *argv[])
      SIGUSR1 and SIGUSR2 to do debug level changes. */
 #ifndef MEM_MAN
 #if defined(SIGUSR1)
-  signal( SIGUSR1, SIGNAL_CAST sig_usr1 );
+  CatchSignal( SIGUSR1, SIGNAL_CAST sig_usr1 );
 #endif /* SIGUSR1 */
 
 #if defined(SIGUSR2)
-  signal( SIGUSR2, SIGNAL_CAST sig_usr2 );
+  CatchSignal( SIGUSR2, SIGNAL_CAST sig_usr2 );
 #endif /* SIGUSR2 */
 #endif /* MEM_MAN */
 
index da0210eee71a8e6c6a1ea6e9e601cb90e93eb526..3e76dca731033afc9b279f6559ebe5c2329f243d 100644 (file)
@@ -176,10 +176,10 @@ typedef struct
   int client_code_page;
   int announce_as;   /* This is initialised in init_globals */
   int machine_password_timeout;
-#ifdef USE_LDAP
+#ifdef WITH_LDAP
   int ldap_port;
-#endif /* USE_LDAP */
-#ifdef USE_SSL
+#endif /* WITH_LDAP */
+#ifdef WITH_SSL
   int sslVersion;
   char *sslHostsRequire;
   char *sslHostsResign;
@@ -194,7 +194,7 @@ typedef struct
   BOOL sslReqClientCert;
   BOOL sslReqServerCert;
   BOOL sslCompatibility;
-#endif /* USE_SSL */
+#endif /* WITH_SSL */
   BOOL bDNSproxy;
   BOOL bWINSsupport;
   BOOL bWINSproxy;
@@ -454,7 +454,7 @@ static struct enum_list enum_case[] = {{CASE_LOWER, "lower"}, {CASE_UPPER, "uppe
 
 static struct enum_list enum_lm_announce[] = {{0, "False"}, {1, "True"}, {2, "Auto"}, {-1, NULL}};
 
-#ifdef USE_SSL
+#ifdef WITH_SSL
 static struct enum_list enum_ssl_version[] = {{SMB_SSL_V2, "ssl2"}, {SMB_SSL_V3, "ssl3"},
   {SMB_SSL_V23, "ssl2or3"}, {SMB_SSL_TLS1, "tls1"}, {-1, NULL}};
 #endif
@@ -526,7 +526,7 @@ static struct parm_struct parm_table[] =
   {"hosts deny",       P_STRING,  P_LOCAL,  &sDefault.szHostsdeny,      NULL,   NULL,  FLAG_GLOBAL|FLAG_BASIC|FLAG_PRINT},
   {"deny hosts",       P_STRING,  P_LOCAL,  &sDefault.szHostsdeny,      NULL,   NULL,  0},
 
-#ifdef USE_SSL
+#ifdef WITH_SSL
   {"Secure Socket Layer Options", P_SEP, P_SEPARATOR},
   {"ssl",              P_BOOL,    P_GLOBAL, &Globals.sslEnabled,        NULL,   NULL,  0 },
   {"ssl hosts",        P_STRING,  P_GLOBAL, &Globals.sslHostsRequire,   NULL,   NULL,  0 },
@@ -542,7 +542,7 @@ static struct parm_struct parm_table[] =
   {"ssl ciphers",      P_STRING,  P_GLOBAL, &Globals.sslCiphers,        NULL,   NULL,  0 },
   {"ssl version",      P_ENUM,    P_GLOBAL, &Globals.sslVersion,        NULL,   enum_ssl_version, 0},
   {"ssl compatibility", P_BOOL,    P_GLOBAL, &Globals.sslCompatibility, NULL,   NULL,  0 },
-#endif        /* USE_SSL */
+#endif        /* WITH_SSL */
 
   {"Logging Options", P_SEP, P_SEPARATOR},
   {"log level",        P_INTEGER, P_GLOBAL, &DEBUGLEVEL,                NULL,   NULL,  FLAG_BASIC},
@@ -676,7 +676,7 @@ static struct parm_struct parm_table[] =
   {"oplocks",          P_BOOL,    P_LOCAL,  &sDefault.bOpLocks,         NULL,   NULL,  FLAG_GLOBAL},
   {"fake oplocks",     P_BOOL,    P_LOCAL,  &sDefault.bFakeOplocks,     NULL,   NULL,  0},
 
-#ifdef USE_LDAP
+#ifdef WITH_LDAP
   {"Ldap Options", P_SEP, P_SEPARATOR},
   {"ldap server",      P_STRING,  P_GLOBAL, &Globals.szLdapServer,      NULL,   NULL,  0},
   {"ldap port",        P_INTEGER, P_GLOBAL, &Globals.ldap_port,         NULL,   NULL,  0},
@@ -684,7 +684,7 @@ static struct parm_struct parm_table[] =
   {"ldap filter",      P_STRING,  P_GLOBAL, &Globals.szLdapFilter,      NULL,   NULL,  0},
   {"ldap root",        P_STRING,  P_GLOBAL, &Globals.szLdapRoot,        NULL,   NULL,  0},
   {"ldap root passwd", P_STRING,  P_GLOBAL, &Globals.szLdapRootPassword,NULL,   NULL,  0},
-#endif /* USE_LDAP */
+#endif /* WITH_LDAP */
 
 
   {"Miscellaneous Options", P_SEP, P_SEPARATOR},
@@ -817,7 +817,7 @@ static void init_globals(void)
   Globals.shmem_size = SHMEM_SIZE;
   Globals.announce_as = ANNOUNCE_AS_NT;
   Globals.bUnixRealname = False;
-#if (defined(NETGROUP) && defined(AUTOMOUNT))
+#if (defined(HAVE_NETGROUP) && defined(WITH_AUTOMOUNT))
   Globals.bNISHomeMap = False;
 #ifdef NISPLUS_HOME
   string_set(&Globals.szNISHomeMapName, "auto_home.org_dir");
@@ -833,13 +833,13 @@ static void init_globals(void)
   Globals.bUnixPasswdSync = False;
   Globals.bPasswdChatDebug = False;
 
-#ifdef USE_LDAP
+#ifdef WITH_LDAP
   /* default values for ldap */
   string_set(&Globals.szLdapServer, "localhost");
   Globals.ldap_port=389;
-#endif /* USE_LDAP */
+#endif /* WITH_LDAP */
 
-#ifdef USE_SSL
+#ifdef WITH_SSL
   Globals.sslVersion = SMB_SSL_V23;
   Globals.sslHostsRequire = NULL;
   Globals.sslHostsResign = NULL;
@@ -854,7 +854,7 @@ static void init_globals(void)
   Globals.sslReqClientCert = False;
   Globals.sslReqServerCert = False;
   Globals.sslCompatibility = False;
-#endif        /* USE_SSL */
+#endif        /* WITH_SSL */
 
 /* these parameters are set to defaults that are more appropriate
    for the increasing samba install base:
@@ -918,15 +918,15 @@ static void init_locals(void)
       string_initial(&sDefault.szLpqcommand,"lpstat -o%p");
       string_initial(&sDefault.szLprmcommand,"cancel %p-%j");
       string_initial(&sDefault.szPrintcommand,"lp -c -d%p %s; rm %s");
-#ifdef SVR4
+#ifdef SYSV
       string_initial(&sDefault.szLppausecommand,"lp -i %p-%j -H hold");
       string_initial(&sDefault.szLpresumecommand,"lp -i %p-%j -H resume");
       string_initial(&sDefault.szQueuepausecommand, "lpc stop %p");
       string_initial(&sDefault.szQueueresumecommand, "lpc start %p");
-#else /* SVR4 */
+#else /* SYSV */
       string_initial(&sDefault.szQueuepausecommand, "disable %p");
       string_initial(&sDefault.szQueueresumecommand, "enable %p");
-#endif /* SVR4 */
+#endif /* SYSV */
       break;
 
     case PRINT_QNX:
@@ -1066,15 +1066,15 @@ FN_GLOBAL_STRING(lp_domain_guest_users,&Globals.szDomainGuestUsers)
 FN_GLOBAL_STRING(lp_domain_hostsallow,&Globals.szDomainHostsallow)
 FN_GLOBAL_STRING(lp_domain_hostsdeny,&Globals.szDomainHostsdeny)
 
-#ifdef USE_LDAP
+#ifdef WITH_LDAP
 FN_GLOBAL_STRING(lp_ldap_server,&Globals.szLdapServer);
 FN_GLOBAL_STRING(lp_ldap_suffix,&Globals.szLdapSuffix);
 FN_GLOBAL_STRING(lp_ldap_filter,&Globals.szLdapFilter);
 FN_GLOBAL_STRING(lp_ldap_root,&Globals.szLdapRoot);
 FN_GLOBAL_STRING(lp_ldap_rootpasswd,&Globals.szLdapRootPassword);
-#endif /* USE_LDAP */
+#endif /* WITH_LDAP */
 
-#ifdef USE_SSL
+#ifdef WITH_SSL
 FN_GLOBAL_INTEGER(lp_ssl_version,&Globals.sslVersion);
 FN_GLOBAL_STRING(lp_ssl_hosts,&Globals.sslHostsRequire);
 FN_GLOBAL_STRING(lp_ssl_hosts_resign,&Globals.sslHostsResign);
@@ -1089,7 +1089,7 @@ FN_GLOBAL_BOOL(lp_ssl_enabled,&Globals.sslEnabled);
 FN_GLOBAL_BOOL(lp_ssl_reqClientCert,&Globals.sslReqClientCert);
 FN_GLOBAL_BOOL(lp_ssl_reqServerCert,&Globals.sslReqServerCert);
 FN_GLOBAL_BOOL(lp_ssl_compatibility,&Globals.sslCompatibility);
-#endif        /* USE_SSL */
+#endif        /* WITH_SSL */
 
 FN_GLOBAL_BOOL(lp_dns_proxy,&Globals.bDNSproxy)
 FN_GLOBAL_BOOL(lp_wins_support,&Globals.bWINSsupport)
@@ -1147,9 +1147,9 @@ FN_GLOBAL_INTEGER(lp_lm_announce,&Globals.lm_announce)
 FN_GLOBAL_INTEGER(lp_lm_interval,&Globals.lm_interval)
 FN_GLOBAL_INTEGER(lp_machine_password_timeout,&Globals.machine_password_timeout)
 
-#ifdef USE_LDAP
+#ifdef WITH_LDAP
 FN_GLOBAL_INTEGER(lp_ldap_port,&Globals.ldap_port)
-#endif /* USE_LDAP */
+#endif /* WITH_LDAP */
 
 FN_LOCAL_STRING(lp_preexec,szPreExec)
 FN_LOCAL_STRING(lp_postexec,szPostExec)
index b644e8bb690a3790e49fd0139194132c6dbf5add..2e98cad4be29e90f08e40b75e93d47912cf2ad05 100644 (file)
@@ -20,7 +20,7 @@
    
 */
 
-#ifdef USE_LDAP_DB
+#ifdef WITH_LDAP
 
 #include "includes.h"
 
index 84eae0a40f0cb51cdf749f68d8096e2cc1a2d3ea..b43a52e48a31d5f0ad9938c7da157c31dbc1d62d 100644 (file)
@@ -19,7 +19,7 @@
  * Mass Ave, Cambridge, MA 02139, USA.
  */
 
-#ifdef USE_NISPLUS_DB
+#ifdef WITH_NISPLUS
 
 #include "includes.h"
 #include <rpcsvc/nis.h>
@@ -166,7 +166,7 @@ static nis_result *nisp_get_nis_list(char *nis_name)
        result = nis_list(nis_name, FOLLOW_PATH|EXPAND_NAME|HARD_LOOKUP,NULL,NULL);
 
        alarm(0);
-       signal(SIGALRM, SIGNAL_CAST SIG_DFL);
+       CatchSignal(SIGALRM, SIGNAL_CAST SIG_DFL);
 
        if (gotalarm)
        {
@@ -531,13 +531,13 @@ static struct sam_passwd *getnisp21pwnam(char *name)
 
        /* Search the table. */
        gotalarm = 0;
-       signal(SIGALRM, SIGNAL_CAST gotalarm_sig);
+       CatchSignal(SIGALRM, SIGNAL_CAST gotalarm_sig);
        alarm(5);
 
        result = nis_list(nisname, FOLLOW_PATH | EXPAND_NAME | HARD_LOOKUP, NULL, NULL);
 
        alarm(0);
-       signal(SIGALRM, SIGNAL_CAST SIG_DFL);
+       CatchSignal(SIGALRM, SIGNAL_CAST SIG_DFL);
 
        if (gotalarm)
        {
@@ -576,13 +576,13 @@ static struct sam_passwd *getnisp21pwrid(uint32 rid)
 
        /* Search the table. */
        gotalarm = 0;
-       signal(SIGALRM, SIGNAL_CAST gotalarm_sig);
+       CatchSignal(SIGALRM, SIGNAL_CAST gotalarm_sig);
        alarm(5);
 
        result = nis_list(nisname, FOLLOW_PATH | EXPAND_NAME | HARD_LOOKUP, NULL, NULL);
 
        alarm(0);
-       signal(SIGALRM, SIGNAL_CAST SIG_DFL);
+       CatchSignal(SIGALRM, SIGNAL_CAST SIG_DFL);
 
        if (gotalarm)
        {
@@ -674,7 +674,7 @@ struct passdb_ops *nisplus_initialize_password_db(void)
  
 #else
  void nisplus_dummy_function(void) { } /* stop some compilers complaining */
-#endif /* USE_NISPLUS_DB */
+#endif /* WITH_NISPLUS */
 
 /* useful code i can't bring myself to delete */
 #if 0
index cc4a8e5c55118256d0d63ac2d7797ea81b296e95..0ca71dda9434b3c2fa48d7770ee19b31e82ab86c 100644 (file)
@@ -88,17 +88,13 @@ BOOL initialize_password_db(void)
     return True;
   }
 
-#ifdef USE_NISPLUS_DB
+#ifdef WITH_NISPLUS
   pdb_ops =  nisplus_initialize_password_db();
-#endif /* USE_NISPLUS_DB */
-
-#ifdef USE_LDAP_DB
+#elif defined(WITH_LDAP)
   pdb_ops = ldap_initialize_password_db();
-#endif /* USE_LDAP_DB */
-
-#ifdef USE_SMBPASS_DB
+#else 
   pdb_ops = file_initialize_password_db();
-#endif /* USE_SMBPASS_DB */
+#endif 
 
   return (pdb_ops != NULL);
 }
@@ -899,159 +895,167 @@ static BOOL read_sid_from_file(int fd, char *sid_file)
  Generate the global machine sid. Look for the MACHINE.SID file first, if
  not found then look in smb.conf and use it to create the MACHINE.SID file.
 ****************************************************************************/
-
 BOOL pdb_generate_machine_sid(void)
 {
-  int fd;
-  char *p;
-  pstring sid_file;
-  fstring sid_string;
-  struct stat st;
-  uchar raw_sid_data[12];
-
-  pstrcpy(sid_file, lp_smb_passwd_file());
-  p = strrchr(sid_file, '/');
-  if(p != NULL)
-    *++p = '\0';
-    
-  pstrcat(sid_file, "MACHINE.SID");
-    
-  if((fd = open( sid_file, O_RDWR | O_CREAT, 0644)) < 0 ) {
-    DEBUG(0,("generate_machine_sid: unable to open or create file %s. Error was %s\n",
-             sid_file, strerror(errno) ));
-    return False;
-  } 
-  
-  /*
-   * Check if the file contains data.
-   */
+       int fd;
+       char *p;
+       pstring sid_file;
+       fstring sid_string;
+       struct stat st;
+       uchar raw_sid_data[12];
+
+       pstrcpy(sid_file, lp_smb_passwd_file());
+       p = strrchr(sid_file, '/');
+       if(p != NULL) {
+               *++p = '\0';
+       }
+
+       if (!directory_exist(sid_file, NULL)) {
+               if (sys_mkdir(sid_file, 0700) != 0) {
+                       DEBUG(0,("generate_machine_sid: can't create private directory %s : %s\n",
+                                sid_file, strerror(errno)));
+                       return False;
+               }
+       }
+
+       pstrcat(sid_file, "MACHINE.SID");
     
-  if(fstat( fd, &st) < 0) {
-    DEBUG(0,("generate_machine_sid: unable to stat file %s. Error was %s\n",
-             sid_file, strerror(errno) ));
-    close(fd);
-    return False;
-  } 
+       if((fd = open(sid_file, O_RDWR | O_CREAT, 0644)) == -1) {
+               DEBUG(0,("generate_machine_sid: unable to open or create file %s. Error was %s\n",
+                        sid_file, strerror(errno) ));
+               return False;
+       } 
   
-  if(st.st_size > 0) {
-    /*
-     * We have a valid SID - read it.
-     */
-    if(!read_sid_from_file( fd, sid_file)) {
-      DEBUG(0,("generate_machine_sid: unable to read file %s. Error was %s\n",
-             sid_file, strerror(errno) ));
-      close(fd);
-      return False;
-    }
-    close(fd);
-    return True;
-  } 
+       /*
+        * Check if the file contains data.
+        */
+       
+       if(fstat( fd, &st) < 0) {
+               DEBUG(0,("generate_machine_sid: unable to stat file %s. Error was %s\n",
+                        sid_file, strerror(errno) ));
+               close(fd);
+               return False;
+       } 
   
-  /*
-   * The file contains no data - we may need to generate our
-   * own sid. Try the lp_domain_sid() first.
-   */
-    
-  if(*lp_domain_sid())
-    fstrcpy( sid_string, lp_domain_sid());
-  else {
-    /*
-     * Generate the new sid data & turn it into a string.
-     */
-    int i;
-    generate_random_buffer( raw_sid_data, 12, True);
-    
-    fstrcpy( sid_string, "S-1-5-21");
-    for( i = 0; i < 3; i++) {
-      fstring tmp_string;
-      slprintf( tmp_string, sizeof(tmp_string) - 1, "-%u", IVAL(raw_sid_data, i*4));
-      fstrcat( sid_string, tmp_string);
-    }
-  } 
+       if(st.st_size > 0) {
+               /*
+                * We have a valid SID - read it.
+                */
+               if(!read_sid_from_file( fd, sid_file)) {
+                       DEBUG(0,("generate_machine_sid: unable to read file %s. Error was %s\n",
+                                sid_file, strerror(errno) ));
+                       close(fd);
+                       return False;
+               }
+               close(fd);
+               return True;
+       } 
   
-  fstrcat(sid_string, "\n");
-    
-  /*
-   * Ensure our new SID is valid.
-   */
-    
-  if(!string_to_sid( &global_machine_sid, sid_string)) {
-    DEBUG(0,("generate_machine_sid: unable to generate machine SID.\n"));
-    return False;
-  } 
+       /*
+        * The file contains no data - we may need to generate our
+        * own sid. Try the lp_domain_sid() first.
+        */
+       
+       if(*lp_domain_sid())
+               fstrcpy( sid_string, lp_domain_sid());
+       else {
+               /*
+                * Generate the new sid data & turn it into a string.
+                */
+               int i;
+               generate_random_buffer( raw_sid_data, 12, True);
+               
+               fstrcpy( sid_string, "S-1-5-21");
+               for( i = 0; i < 3; i++) {
+                       fstring tmp_string;
+                       slprintf( tmp_string, sizeof(tmp_string) - 1, "-%u", IVAL(raw_sid_data, i*4));
+                       fstrcat( sid_string, tmp_string);
+               }
+       } 
+       
+       fstrcat(sid_string, "\n");
+       
+       /*
+        * Ensure our new SID is valid.
+        */
+       
+       if(!string_to_sid( &global_machine_sid, sid_string)) {
+               DEBUG(0,("generate_machine_sid: unable to generate machine SID.\n"));
+               return False;
+       } 
   
-  /*
-   * Do an exclusive blocking lock on the file.
-   */
-    
-  if(!do_file_lock( fd, 60, F_WRLCK)) {
-    DEBUG(0,("generate_machine_sid: unable to lock file %s. Error was %s\n",
-             sid_file, strerror(errno) ));
-    close(fd);
-    return False;
-  } 
+       /*
+        * Do an exclusive blocking lock on the file.
+        */
+       
+       if(!do_file_lock( fd, 60, F_WRLCK)) {
+               DEBUG(0,("generate_machine_sid: unable to lock file %s. Error was %s\n",
+                        sid_file, strerror(errno) ));
+               close(fd);
+               return False;
+       
   
-  /*
-   * At this point we have a blocking lock on the SID
-   * file - check if in the meantime someone else wrote
-   * SID data into the file. If so - they were here first,
-   * use their data.
-   */
-    
-  if(fstat( fd, &st) < 0) {
-    DEBUG(0,("generate_machine_sid: unable to stat file %s. Error was %s\n",
-             sid_file, strerror(errno) ));
-    close(fd);
-    return False;
-  } 
+       /*
+        * At this point we have a blocking lock on the SID
+        * file - check if in the meantime someone else wrote
+        * SID data into the file. If so - they were here first,
+        * use their data.
+        */
+       
+       if(fstat( fd, &st) < 0) {
+               DEBUG(0,("generate_machine_sid: unable to stat file %s. Error was %s\n",
+                        sid_file, strerror(errno) ));
+               close(fd);
+               return False;
+       
   
-  if(st.st_size > 0) {
-    /*
-     * Unlock as soon as possible to reduce
-     * contention on the exclusive lock.
-     */ 
-    do_file_lock( fd, 60, F_UNLCK);
-    
-    /*
-     * We have a valid SID - read it.
-     */
-    
-    if(!read_sid_from_file( fd, sid_file)) {
-      DEBUG(0,("generate_machine_sid: unable to read file %s. Error was %s\n",
-             sid_file, strerror(errno) ));
-      close(fd);
-      return False;
-    }
-    close(fd);
-    return True;
-  } 
-    
-  /*
-   * The file is still empty and we have an exlusive lock on it.
-   * Write out out SID data into the file.
-   */
-    
-  if(fchmod(fd, 0644) < 0) {
-    DEBUG(0,("generate_machine_sid: unable to set correct permissions on file %s. \
+       if(st.st_size > 0) {
+               /*
+                * Unlock as soon as possible to reduce
+                * contention on the exclusive lock.
+                */ 
+               do_file_lock( fd, 60, F_UNLCK);
+               
+               /*
+                * We have a valid SID - read it.
+                */
+               
+               if(!read_sid_from_file( fd, sid_file)) {
+                       DEBUG(0,("generate_machine_sid: unable to read file %s. Error was %s\n",
+                                sid_file, strerror(errno) ));
+                       close(fd);
+                       return False;
+               }
+               close(fd);
+               return True;
+       
+       
+       /*
+        * The file is still empty and we have an exlusive lock on it.
+        * Write out out SID data into the file.
+        */
+       
+       if(fchmod(fd, 0644) < 0) {
+               DEBUG(0,("generate_machine_sid: unable to set correct permissions on file %s. \
 Error was %s\n", sid_file, strerror(errno) ));
-    close(fd);
-    return False;
-  } 
-  
-  if(write( fd, sid_string, strlen(sid_string)) != strlen(sid_string)) {
-    DEBUG(0,("generate_machine_sid: unable to write file %s. Error was %s\n",
-          sid_file, strerror(errno) ));
-    close(fd);
-    return False;
-  } 
-  
-  /*
-   * Unlock & exit.
-   */
-    
-  do_file_lock( fd, 60, F_UNLCK);
-  close(fd);
-  return True;
+               close(fd);
+               return False;
+       
+       
+       if(write( fd, sid_string, strlen(sid_string)) != strlen(sid_string)) {
+               DEBUG(0,("generate_machine_sid: unable to write file %s. Error was %s\n",
+                        sid_file, strerror(errno) ));
+               close(fd);
+               return False;
+       
+       
+       /*
+        * Unlock & exit.
+        */
+       
+       do_file_lock( fd, 60, F_UNLCK);
+       close(fd);
+       return True;
 }   
 
 /*******************************************************************
index 9c811a3728a8a7eb2b6083268179941fa89299ae..abdcb9eb5043f4254d683faa416495cab3a6a695 100644 (file)
@@ -953,5 +953,5 @@ struct passdb_ops *file_initialize_password_db(void)
 
 #else
  /* Do *NOT* make this function static. It breaks the compile on gcc. JRA */
- void dummy_function(void) { } /* stop some compilers complaining */
+ void smbpass_dummy_function(void) { } /* stop some compilers complaining */
 #endif /* USE_SMBPASS_DB */
index 3988fd1c78495ed7ccbb9a285c744608cfa6d307..efbbbd78bf6da52215cf024c1040ed4544ef774c 100644 (file)
@@ -44,7 +44,7 @@ BOOL do_file_lock(int fd, int waitsecs, int type)
   int             ret;
 
   gotalarm = 0;
-  signal(SIGALRM, SIGNAL_CAST gotalarm_sig);
+  CatchSignal(SIGALRM, SIGNAL_CAST gotalarm_sig);
 
   lock.l_type = type;
   lock.l_whence = SEEK_SET;
@@ -55,7 +55,7 @@ BOOL do_file_lock(int fd, int waitsecs, int type)
   alarm(5);
   ret = fcntl(fd, F_SETLKW, &lock);
   alarm(0);
-  signal(SIGALRM, SIGNAL_CAST SIG_DFL);
+  CatchSignal(SIGALRM, SIGNAL_CAST SIG_DFL);
 
   if (gotalarm) {
     DEBUG(0, ("do_file_lock: failed to %s file.\n",
index f26f81207d22f4befad43ce1ef5afea8d1748fd3..d51e69ad7433d729275f153dd607e06aeb2ca6e8 100644 (file)
@@ -232,8 +232,9 @@ static BOOL ScanQconfig(char *psz,char *pszPrintername)
        fclose(pfile);
        return(False);
 }
+#endif /* AIX */
+
 
-#endif
 /***************************************************************************
 Scan printcap file pszPrintcapname for a printer called pszPrintername. 
 Return True if found, else False. Returns False on error, too, after logging 
index 3c8fc7186542ec23824bff6338a08f1083f9333f..95611dcc227c7ce4e8f5f59d0a010b6741e1bbed 100755 (executable)
@@ -2,7 +2,7 @@
 #5 July 96 Dan.Shearer@unisa.edu.au  removed hardcoded values
 
 MANDIR=$1
-SRCDIR=$2
+SRCDIR=$2/
 
 echo Installing man pages in $MANDIR
 
index a51fd56272ceb2ff78145598bcc9fc067a9de414..93f534fd726b0bed264e841968b93b5df9071653 100755 (executable)
@@ -2,7 +2,9 @@
 #fist version March 1998, Andrew Tridgell
 
 SWATDIR=$1
-SRCDIR=$2
+SRCDIR=$2/
+
+echo Installing SWAT in $SWATDIR
 
 echo Installing the Samba Web Admisistration Tool
 
index 560d989b478075f25699f5cfee72a15511bee258..af6746a6997b9d481c96b14e6c464e2e48494371 100644 (file)
 
 extern int DEBUGLEVEL;
 
-#ifdef ALLOW_CHANGE_PASSWORD
-
+#if ALLOW_CHANGE_PASSWORD
 #define MINPASSWDLENGTH 5
 #define BUFSIZE 512
 
 static int findpty(char **slave)
 {
   int master;
-#if defined(USE_GRANTPT)
-#if defined(SVR4) || defined(SUNOS5)
-  extern char *ptsname();
-#endif /* defined(SVR4) || defined(SUNOS5) */
-#else /* USE_GRANTPT */
+#ifndef HAVE_GRANTPT
   static fstring line;
   void *dirp;
   char *dpname;
-#endif /* USE_GRANTPT */
+#endif /* !HAVE_GRANTPT */
   
-#if defined(USE_GRANTPT)
+#if defined(HAVE_GRANTPT)
   if ((master = open("/dev/ptmx", O_RDWR)) >= 1) {
     grantpt(master);
     unlockpt(master);
@@ -82,7 +77,7 @@ static int findpty(char **slave)
       return (master);
     }
   }
-#else /* USE_GRANTPT */
+#else /* HAVE_GRANTPT */
   fstrcpy( line, "/dev/ptyXX" );
 
   dirp = OpenDir(-1, "/dev", False);
@@ -102,7 +97,7 @@ static int findpty(char **slave)
     }
   }
   CloseDir(dirp);
-#endif /* USE_GRANTPT */
+#endif /* HAVE_GRANTPT */
   return (-1);
 }
 
@@ -122,11 +117,11 @@ static int dochild(int master,char *slavedev, char *name, char *passwordprogram,
 
   gid = pass->pw_gid;
   uid = pass->pw_uid;
-#ifdef USE_SETRES
+#ifdef HAVE_SETRESUID
   setresuid(0,0,0);
-#else /* USE_SETRES */
+#else 
   setuid(0);
-#endif /* USE_SETRES */
+#endif
 
   /* Start new session - gets rid of controlling terminal. */
   if (setsid() < 0) {
@@ -140,17 +135,15 @@ static int dochild(int master,char *slavedev, char *name, char *passwordprogram,
             slavedev));
     return(False);
   }
-#if defined(SVR4) || defined(SUNOS5) || defined(SCO)
+#ifdef I_PUSH
   ioctl(slave, I_PUSH, "ptem");
   ioctl(slave, I_PUSH, "ldterm");
-#else /* defined(SVR4) || defined(SUNOS5) || defined(SCO) */
-#if defined(TIOCSCTTY)
+#elif defined(TIOCSCTTY)
   if (ioctl(slave,TIOCSCTTY,0) <0) {
      DEBUG(3,("Error in ioctl call for slave pty\n"));
      /* return(False); */
   }
-#endif /* defined(TIOCSCTTY) */
-#endif /* defined(SVR4) || defined(SUNOS5) || defined(SCO) */
+#endif 
 
   /* Close master. */
   close(master);
@@ -188,18 +181,18 @@ static int dochild(int master,char *slavedev, char *name, char *passwordprogram,
 
   /* make us completely into the right uid */
   if(!as_root) {
-#ifdef USE_SETRES
-    setresgid(0,0,0);
-    setresuid(0,0,0);
-    setresgid(gid,gid,gid);
-    setresuid(uid,uid,uid);      
+#ifdef HAVE_SETRESUID
+         setresgid(0,0,0);
+         setresuid(0,0,0);
+         setresgid(gid,gid,gid);
+         setresuid(uid,uid,uid);      
 #else      
-    setuid(0);
-    seteuid(0);
-    setgid(gid);
-    setegid(gid);
-    setuid(uid);
-    seteuid(uid);
+         setuid(0);
+         seteuid(0);
+         setgid(gid);
+         setegid(gid);
+         setuid(uid);
+         seteuid(uid);
 #endif
   }
 
@@ -391,13 +384,8 @@ BOOL chgpasswd(char *name,char *oldpass,char *newpass, BOOL as_root)
       return (False);          /* inform the user */
     }
 
-#if (defined(PASSWD_PROGRAM) && defined(PASSWD_CHAT))
-  pstrcpy(passwordprogram,PASSWD_PROGRAM);
-  pstrcpy(chatsequence,PASSWD_CHAT);
-#else
   pstrcpy(passwordprogram,lp_passwd_program());
   pstrcpy(chatsequence,lp_passwd_chat());
-#endif
 
   if (!*chatsequence) {
     DEBUG(2,("Null chat sequence - no password changing\n"));
diff --git a/source/smbd/dfree.c b/source/smbd/dfree.c
new file mode 100644 (file)
index 0000000..799ff6a
--- /dev/null
@@ -0,0 +1,231 @@
+/* 
+   Unix SMB/Netbios implementation.
+   Version 1.9.
+   functions to calculate the free disk space
+   Copyright (C) Andrew Tridgell 1998
+   
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2 of the License, or
+   (at your option) any later version.
+   
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+   
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+#include "includes.h"
+
+
+extern int DEBUGLEVEL;
+
+/****************************************************************************
+normalise for DOS usage 
+****************************************************************************/
+static void disk_norm(int *bsize,int *dfree,int *dsize)
+{
+       /* check if the disk is beyond the max disk size */
+       int maxdisksize = lp_maxdisksize();
+       if (maxdisksize) {
+               /* convert to blocks - and don't overflow */
+               maxdisksize = ((maxdisksize*1024)/(*bsize))*1024;
+               if (*dsize > maxdisksize) *dsize = maxdisksize;
+               if (*dfree > maxdisksize) *dfree = maxdisksize-1; 
+               /* the -1 should stop applications getting div by 0
+                  errors */
+       }  
+       
+       while (*dfree > WORDMAX || *dsize > WORDMAX || *bsize < 512) {
+               *dfree /= 2;
+               *dsize /= 2;
+               *bsize *= 2;
+               if (*bsize > WORDMAX) {
+                       *bsize = WORDMAX;
+                       if (*dsize > WORDMAX)
+                               *dsize = WORDMAX;
+                       if (*dfree >  WORDMAX)
+                               *dfree = WORDMAX;
+                       break;
+               }
+       }
+}
+
+
+/* Return the number of TOSIZE-byte blocks used by
+   BLOCKS FROMSIZE-byte blocks, rounding away from zero.
+   TOSIZE must be positive.  Return -1 if FROMSIZE is not positive.  */
+static int adjust_blocks(int blocks, int fromsize, int tosize)
+{
+       if (tosize <= 0 || fromsize <= 0) {
+               return -1;
+       }
+
+       if (fromsize == tosize) /* e.g., from 512 to 512 */
+               return blocks;
+       else if (fromsize > tosize)     /* e.g., from 2048 to 512 */
+               return blocks * (fromsize / tosize);
+       else                            /* e.g., from 256 to 512 */
+               return (blocks + (blocks < 0 ? -1 : 1)) / (tosize / fromsize);
+}
+
+/* this does all of the system specific guff to get the free disk space.
+   It is derived from code in the GNU fileutils package, but has been
+   considerably mangled for use here 
+
+   results are returned in *dfree and *dsize, in 512 byte units
+*/
+static int fsusage(const char *path, int *dfree, int *dsize)
+{
+#ifdef STAT_STATFS3_OSF1
+#define CONVERT_BLOCKS(B) adjust_blocks ((B), fsd.f_fsize, 512)
+       struct statfs fsd;
+
+       if (statfs (path, &fsd, sizeof (struct statfs)) != 0)
+               return -1;
+#endif /* STAT_STATFS3_OSF1 */
+       
+#ifdef STAT_STATFS2_FS_DATA    /* Ultrix */
+#define CONVERT_BLOCKS(B) adjust_blocks ((B), 1024, 512)       
+       struct fs_data fsd;
+       
+       if (statfs (path, &fsd) != 1)
+               return -1;
+       
+       (*dsize) = CONVERT_BLOCKS (fsd.fd_req.btot);
+       (*dfree) = CONVERT_BLOCKS (fsd.fd_req.bfreen);
+#endif /* STAT_STATFS2_FS_DATA */
+       
+#ifdef STAT_STATFS2_BSIZE      /* 4.3BSD, SunOS 4, HP-UX, AIX */
+#define CONVERT_BLOCKS(B) adjust_blocks ((B), fsd.f_bsize, 512)
+       struct statfs fsd;
+       
+       if (statfs (path, &fsd) < 0)
+               return -1;
+       
+#ifdef STATFS_TRUNCATES_BLOCK_COUNTS
+       /* In SunOS 4.1.2, 4.1.3, and 4.1.3_U1, the block counts in the
+          struct statfs are truncated to 2GB.  These conditions detect that
+          truncation, presumably without botching the 4.1.1 case, in which
+          the values are not truncated.  The correct counts are stored in
+          undocumented spare fields.  */
+       if (fsd.f_blocks == 0x1fffff && fsd.f_spare[0] > 0) {
+               fsd.f_blocks = fsd.f_spare[0];
+               fsd.f_bfree = fsd.f_spare[1];
+               fsd.f_bavail = fsd.f_spare[2];
+       }
+#endif /* STATFS_TRUNCATES_BLOCK_COUNTS */
+#endif /* STAT_STATFS2_BSIZE */
+       
+
+#ifdef STAT_STATFS2_FSIZE      /* 4.4BSD */
+#define CONVERT_BLOCKS(B) adjust_blocks ((B), fsd.f_fsize, 512)
+       
+       struct statfs fsd;
+       
+       if (statfs (path, &fsd) < 0)
+               return -1;
+#endif /* STAT_STATFS2_FSIZE */
+       
+#ifdef STAT_STATFS4            /* SVR3, Dynix, Irix, AIX */
+# if _AIX || defined(_CRAY)
+#  define CONVERT_BLOCKS(B) adjust_blocks ((B), fsd.f_bsize, 512)
+#  ifdef _CRAY
+#   define f_bavail f_bfree
+#  endif
+# else
+#  define CONVERT_BLOCKS(B) (B)
+#  ifndef _SEQUENT_            /* _SEQUENT_ is DYNIX/ptx */
+#   ifndef DOLPHIN             /* DOLPHIN 3.8.alfa/7.18 has f_bavail */
+#    define f_bavail f_bfree
+#   endif
+#  endif
+# endif
+       
+       struct statfs fsd;
+
+       if (statfs (path, &fsd, sizeof fsd, 0) < 0)
+               return -1;
+       /* Empirically, the block counts on most SVR3 and SVR3-derived
+          systems seem to always be in terms of 512-byte blocks,
+          no matter what value f_bsize has.  */
+
+#endif /* STAT_STATFS4 */
+
+#ifdef STAT_STATVFS            /* SVR4 */
+# define CONVERT_BLOCKS(B) \
+       adjust_blocks ((B), fsd.f_frsize ? fsd.f_frsize : fsd.f_bsize, 512)
+
+       struct statvfs fsd;
+
+       if (statvfs (path, &fsd) < 0)
+               return -1;
+       /* f_frsize isn't guaranteed to be supported.  */
+
+#endif /* STAT_STATVFS */
+
+#ifndef CONVERT_BLOCKS
+       /* we don't have any dfree code! */
+       return -1;
+#else
+#if !defined(STAT_STATFS2_FS_DATA)
+       /* !Ultrix */
+       (*dsize) = CONVERT_BLOCKS (fsd.f_blocks);
+       (*dfree) = CONVERT_BLOCKS (fsd.f_bavail);
+#endif /* not STAT_STATFS2_FS_DATA */
+#endif
+
+       return 0;
+}
+
+/****************************************************************************
+  return number of 1K blocks available on a path and total number 
+****************************************************************************/
+static int disk_free(char *path,int *bsize,int *dfree,int *dsize)
+{
+       int dfree_retval;
+
+       (*dfree) = (*dsize) = 0;
+       (*bsize) = 512;
+
+       fsusage(path, dfree, dsize);
+
+       if (*bsize < 256) {
+               *bsize = 512;
+       }
+
+       if ((*dsize)<1) {
+               static int done;
+               if (!done) {
+                       DEBUG(0,("WARNING: dfree is broken on this system\n"));
+                       done=1;
+               }
+               *dsize = 20*1024*1024/(*bsize);
+               *dfree = MAX(1,*dfree);
+       }
+
+       disk_norm(bsize,dfree,dsize);
+
+       if ((*bsize) < 1024) {
+               dfree_retval = (*dfree)/(1024/(*bsize));
+       } else {
+               dfree_retval = ((*bsize)/1024)*(*dfree);
+       }
+
+       return(dfree_retval);
+}
+
+
+/****************************************************************************
+wrap it to get filenames right
+****************************************************************************/
+int sys_disk_free(char *path,int *bsize,int *dfree,int *dsize)
+{
+       return(disk_free(dos_to_unix(path,False),bsize,dfree,dsize));
+}
+
+
index ceb9ae7633b188f62cd2ae457768fa1fc90a1992..44e0556f208d44f0b4583cd75b647cb75501ea6e 100644 (file)
@@ -30,7 +30,7 @@ extern connection_struct Connections[];
 
 
 
-uint32 dircounter = 0;
+static uint32 dircounter = 0;
 
 
 #define NUMDIRPTRS 256
@@ -723,7 +723,7 @@ char *DirCacheCheck( char *path, char *name, int snum )
   return(NULL);
   } /* DirCacheCheck */
 
-void DirCacheFlush( int snum )
+void DirCacheFlush(int snum)
   /* ------------------------------------------------------------------------ **
    * Remove all cache entries which have an snum that matches the input.
    *
@@ -733,18 +733,18 @@ void DirCacheFlush( int snum )
    *
    * ------------------------------------------------------------------------ **
    */
-  {
-  dir_cache_entry *entry;
-  ubi_dlNodePtr    next;
-
-  for( entry = (dir_cache_entry *)ubi_dlFirst( dir_cache ); NULL != entry; )
-    {
-    next = ubi_dlNext( entry );
-    if( entry->snum == snum )
-      free( ubi_dlRemThis( dir_cache, entry ) );
-    entry = (dir_cache_entry *)next;
-    }
-  } /* DirCacheFlush */
+{
+       dir_cache_entry *entry;
+       ubi_dlNodePtr    next;
+
+       for(entry = (dir_cache_entry *)ubi_dlFirst( dir_cache ); 
+           NULL != entry; )  {
+               next = ubi_dlNext( entry );
+               if( entry->snum == snum )
+                       free( ubi_dlRemThis( dir_cache, entry ) );
+               entry = (dir_cache_entry *)next;
+       }
+} /* DirCacheFlush */
 
 /* -------------------------------------------------------------------------- **
  * End of the section that manages the global directory cache.
@@ -752,276 +752,3 @@ void DirCacheFlush( int snum )
  */
 
 
-#ifdef REPLACE_GETWD
-/* This is getcwd.c from bash.  It is needed in Interactive UNIX.  To
- * add support for another OS you need to determine which of the
- * conditional compilation macros you need to define.  All the options
- * are defined for Interactive UNIX.
- */
-#ifdef ISC
-#define HAVE_UNISTD_H
-#define USGr3
-#define USG
-#endif
-
-#if defined (HAVE_UNISTD_H)
-#  include <unistd.h>
-#endif
-
-#if defined (__STDC__)
-#  define CONST const
-#  define PTR void *
-#else /* !__STDC__ */
-#  define CONST
-#  define PTR char *
-#endif /* !__STDC__ */
-
-#if !defined (PATH_MAX)
-#  if defined (MAXPATHLEN)
-#    define PATH_MAX MAXPATHLEN
-#  else /* !MAXPATHLEN */
-#    define PATH_MAX 1024
-#  endif /* !MAXPATHLEN */
-#endif /* !PATH_MAX */
-
-#if defined (_POSIX_VERSION) || defined (USGr3) || defined (HAVE_DIRENT_H)
-#  if !defined (HAVE_DIRENT)
-#    define HAVE_DIRENT
-#  endif /* !HAVE_DIRENT */
-#endif /* _POSIX_VERSION || USGr3 || HAVE_DIRENT_H */
-
-#if defined (HAVE_DIRENT)
-#  define D_NAMLEN(d)  (strlen ((d)->d_name))
-#else
-#  define D_NAMLEN(d)  ((d)->d_namlen)
-#endif /* ! (_POSIX_VERSION || USGr3) */
-
-#if defined (USG) || defined (USGr3)
-#  define d_fileno d_ino
-#endif
-
-#if !defined (alloca)
-extern char *alloca ();
-#endif /* alloca */
-
-/* Get the pathname of the current working directory,
-   and put it in SIZE bytes of BUF.  Returns NULL if the
-   directory couldn't be determined or SIZE was too small.
-   If successful, returns BUF.  In GNU, if BUF is NULL,
-   an array is allocated with `malloc'; the array is SIZE
-   bytes long, unless SIZE <= 0, in which case it is as
-   big as necessary.  */
-#if defined (__STDC__)
-char *
-getcwd (char *buf, size_t size)
-#else /* !__STDC__ */
-char *
-getcwd (buf, size)
-     char *buf;
-     int size;
-#endif /* !__STDC__ */
-{
-  static CONST char dots[]
-    = "../../../../../../../../../../../../../../../../../../../../../../../\
-../../../../../../../../../../../../../../../../../../../../../../../../../../\
-../../../../../../../../../../../../../../../../../../../../../../../../../..";
-  CONST char *dotp, *dotlist;
-  size_t dotsize;
-  dev_t rootdev, thisdev;
-  ino_t rootino, thisino;
-  char path[PATH_MAX + 1];
-  register char *pathp;
-  char *pathbuf;
-  size_t pathsize;
-  struct stat st;
-
-  if (buf != NULL && size == 0)
-    {
-      errno = EINVAL;
-      return ((char *)NULL);
-    }
-
-  pathsize = sizeof (path);
-  pathp = &path[pathsize];
-  *--pathp = '\0';
-  pathbuf = path;
-
-  if (stat (".", &st) < 0)
-    return ((char *)NULL);
-  thisdev = st.st_dev;
-  thisino = st.st_ino;
-
-  if (stat ("/", &st) < 0)
-    return ((char *)NULL);
-  rootdev = st.st_dev;
-  rootino = st.st_ino;
-
-  dotsize = sizeof (dots) - 1;
-  dotp = &dots[sizeof (dots)];
-  dotlist = dots;
-  while (!(thisdev == rootdev && thisino == rootino))
-    {
-      register DIR *dirstream;
-      register struct dirent *d;
-      dev_t dotdev;
-      ino_t dotino;
-      char mount_point;
-      int namlen;
-
-      /* Look at the parent directory.  */
-      if (dotp == dotlist)
-       {
-         /* My, what a deep directory tree you have, Grandma.  */
-         char *new;
-         if (dotlist == dots)
-           {
-             new = malloc (dotsize * 2 + 1);
-             if (new == NULL)
-               goto lose;
-             memcpy (new, dots, dotsize);
-           }
-         else
-           {
-             new = realloc ((PTR) dotlist, dotsize * 2 + 1);
-             if (new == NULL)
-               goto lose;
-           }
-         memcpy (&new[dotsize], new, dotsize);
-         dotp = &new[dotsize];
-         dotsize *= 2;
-         new[dotsize] = '\0';
-         dotlist = new;
-       }
-
-      dotp -= 3;
-
-      /* Figure out if this directory is a mount point.  */
-      if (stat (dotp, &st) < 0)
-       goto lose;
-      dotdev = st.st_dev;
-      dotino = st.st_ino;
-      mount_point = dotdev != thisdev;
-
-      /* Search for the last directory.  */
-      dirstream = opendir(dotp);
-      if (dirstream == NULL)
-       goto lose;
-      while ((d = (struct dirent *)readdir(dirstream)) != NULL)
-       {
-         if (d->d_name[0] == '.' &&
-             (d->d_name[1] == '\0' ||
-               (d->d_name[1] == '.' && d->d_name[2] == '\0')))
-           continue;
-         if (mount_point || d->d_fileno == thisino)
-           {
-             char *name;
-
-             namlen = D_NAMLEN(d);
-             name = (char *)
-               alloca (dotlist + dotsize - dotp + 1 + namlen + 1);
-             memcpy (name, dotp, dotlist + dotsize - dotp);
-             name[dotlist + dotsize - dotp] = '/';
-             memcpy (&name[dotlist + dotsize - dotp + 1],
-                     d->d_name, namlen + 1);
-             if (lstat (name, &st) < 0)
-               {
-                 int save = errno;
-                 closedir(dirstream);
-                 errno = save;
-                 goto lose;
-               }
-             if (st.st_dev == thisdev && st.st_ino == thisino)
-               break;
-           }
-       }
-      if (d == NULL)
-       {
-         int save = errno;
-         closedir(dirstream);
-         errno = save;
-         goto lose;
-       }
-      else
-       {
-         size_t space;
-
-         while ((space = pathp - pathbuf) <= namlen)
-           {
-             char *new;
-
-             if (pathbuf == path)
-               {
-                 new = malloc (pathsize * 2);
-                 if (!new)
-                   goto lose;
-               }
-             else
-               {
-                 new = realloc ((PTR) pathbuf, (pathsize * 2));
-                 if (!new)
-                   goto lose;
-                 pathp = new + space;
-               }
-             (void) memcpy (new + pathsize + space, pathp, pathsize - space);
-             pathp = new + pathsize + space;
-             pathbuf = new;
-             pathsize *= 2;
-           }
-
-         pathp -= namlen;
-         (void) memcpy (pathp, d->d_name, namlen);
-         *--pathp = '/';
-         closedir(dirstream);
-       }
-
-      thisdev = dotdev;
-      thisino = dotino;
-    }
-
-  if (pathp == &path[sizeof(path) - 1])
-    *--pathp = '/';
-
-  if (dotlist != dots)
-    free ((PTR) dotlist);
-
-  {
-    size_t len = pathbuf + pathsize - pathp;
-    if (buf == NULL)
-      {
-       if (len < (size_t) size)
-         len = size;
-       buf = (char *) malloc (len);
-       if (buf == NULL)
-         goto lose2;
-      }
-    else if ((size_t) size < len)
-      {
-       errno = ERANGE;
-       goto lose2;
-      }
-    (void) memcpy((PTR) buf, (PTR) pathp, len);
-  }
-
-  if (pathbuf != path)
-    free (pathbuf);
-
-  return (buf);
-
- lose:
-  if ((dotlist != dots) && dotlist)
-    {
-      int e = errno;
-      free ((PTR) dotlist);
-      errno = e;
-    }
-
- lose2:
-  if ((pathbuf != path) && pathbuf)
-    {
-      int e = errno;
-      free ((PTR) pathbuf);
-      errno = e;
-    }
-  return ((char *)NULL);
-}
-#endif
index 8b06fc91a3dbf345ddf14456b67f069750b141d9..adc3fcdcb59f45a5ed170cc2a1565b6cf8304913 100644 (file)
@@ -342,7 +342,7 @@ static BOOL init_package(struct pack_desc* p, int count, int subcount)
   return(p->errcode == NERR_Success);
 }
 
-#ifdef __STDC__
+#ifdef HAVE_STDARG_H
 static int package(struct pack_desc* p, ...)
 {
 #else
@@ -357,7 +357,7 @@ va_dcl
   int is_string=0, stringused;
   int32 temp;
 
-#ifdef __STDC__
+#ifdef HAVE_STDARG_H
   va_start(args,p);
 #else
   va_start(args);
index 711729f86de173380fabdc8c58d9374928632ab3..aae398dbdaf50dd0e61f009e5c8fcc93ebb9521b 100644 (file)
@@ -21,7 +21,7 @@
 
 #include "includes.h"
 
-#if (defined(NETGROUP) && defined (AUTOMOUNT))
+#if (defined(HAVE_NETGROUP) && defined (WITH_AUTOMOUNT))
 #include "rpcsvc/ypclnt.h"
 #endif
 
@@ -347,44 +347,6 @@ void add_session_user(char *user)
 }
 
 
-#ifdef NO_GETSPNAM
-/* a fake shadow password routine which just fills a fake spwd struct
- * with the sp_pwdp field. (sreiz@aie.nl)
- */
-static struct spwd *getspnam(char *username) /* fake shadow password routine */
-{
-       FILE *f;
-       char line[1024];
-       static fstring pw;
-       static struct spwd static_spwd;
-
-       static_spwd.sp_pwdp=0;
-       if (!(f=fopen("/etc/master.passwd", "r")))
-               return 0;
-       while (fgets(line, 1024, f)) {
-               if (!strncmp(line, username, strlen(username)) &&
-                line[strlen(username)]==':') { /* found entry */
-                       char *p, *q;
-
-                       p=line+strlen(username)+1;
-                       if ((q=strchr(p, ':'))) {
-                               *q=0;
-                               if (q-p+1>20)
-                                       break;
-                               fstrcpy(pw, p);
-                               static_spwd.sp_pwdp=pw;
-                       }
-                       break;
-               }
-       }
-       fclose(f);
-       if (static_spwd.sp_pwdp)
-               return &static_spwd;
-       return 0;
-}
-#endif
-
-
 #ifdef OSF1_ENH_SEC
 /****************************************************************************
 an enhanced crypt for OSF1
@@ -480,7 +442,7 @@ static void update_protected_database( char *user, BOOL result)
 }
 
 
-#ifdef USE_PAM
+#ifdef HAVE_PAM
 /*******************************************************************
 check on PAM authentication
 ********************************************************************/
@@ -583,7 +545,7 @@ static BOOL pam_auth(char *this_user,char *password)
 #endif
 
 
-#ifdef AFS_AUTH
+#ifdef WITH_AFS
 /*******************************************************************
 check on AFS authentication
 ********************************************************************/
@@ -610,7 +572,7 @@ static BOOL afs_auth(char *this_user,char *password)
 #endif
 
 
-#ifdef DFS_AUTH
+#ifdef WITH_DFS
 
 /*****************************************************************
  This new version of the DFS_AUTH code was donated by Karsten Muuss
@@ -645,7 +607,7 @@ static BOOL dfs_auth(char *this_user,char *password)
 
   if (dcelogin_atmost_once) return(False);
 
-#ifndef NO_CRYPT
+#ifdef HAVE_CRYPT
   /*
    * We only go for a DCE login context if the given password
    * matches that stored in the local password file.. 
@@ -1099,24 +1061,24 @@ core of password checking routine
 BOOL password_check(char *password)
 {
 
-#ifdef USE_PAM
+#ifdef HAVE_PAM
 /* This falls through if the password check fails
-       - if NO_CRYPT is defined this causes an error msg
+       - if HAVE_CRYPT is not defined this causes an error msg
                saying Warning - no crypt available
-       - if NO_CRYPT is NOT defined this is a potential security hole
+       - if HAVE_CRYPT is defined this is a potential security hole
                as it may authenticate via the crypt call when PAM
                settings say it should fail.
-  if (pam_auth(this_user,password)) return(True);
-Hence we make a direct return to avoid a second chance!!!
+               if (pam_auth(this_user,password)) return(True);
+               Hence we make a direct return to avoid a second chance!!!
 */
   return (pam_auth(this_user,password));
 #endif
 
-#ifdef AFS_AUTH
+#ifdef WITH_AFS
   if (afs_auth(this_user,password)) return(True);
 #endif
 
-#ifdef DFS_AUTH
+#ifdef WITH_DFS
   if (dfs_auth(this_user,password)) return(True);
 #endif 
 
@@ -1128,11 +1090,6 @@ Hence we make a direct return to avoid a second chance!!!
   if (krb4_auth(this_user,password)) return(True);
 #endif
 
-#ifdef PWDAUTH
-  if (pwdauth(this_user,password) == 0)
-    return(True);
-#endif
-
 #ifdef OSF1_ENH_SEC
   {
     BOOL ret = (strcmp(osf1_bigcrypt(password,this_salt),this_crypted) == 0);
@@ -1152,11 +1109,11 @@ Hence we make a direct return to avoid a second chance!!!
   return(linux_bigcrypt(password,this_salt,this_crypted));
 #endif
 
-#ifdef HPUX_10_TRUSTED
+#ifdef HAVE_BIGCRYPT
   return(strcmp(bigcrypt(password,this_salt),this_crypted) == 0);
 #endif
 
-#ifdef NO_CRYPT
+#ifndef HAVE_CRYPT
   DEBUG(1,("Warning - no crypt available\n"));
   return(False);
 #else
@@ -1364,7 +1321,7 @@ BOOL password_ok(char *user,char *password, int pwlen, struct passwd *pwd)
       return(False);
     }
 
-#ifdef SHADOW_PWD
+#ifdef HAVE_GETSPNAM
   {
     struct spwd *spass;
 
@@ -1388,15 +1345,7 @@ BOOL password_ok(char *user,char *password, int pwlen, struct passwd *pwd)
   }
 #endif
 
-#ifdef SecureWare
-  {
-    struct pr_passwd *pr_pw = getprpwnam(pass->pw_name);
-    if (pr_pw && pr_pw->ufld.fd_encrypt)
-      pass->pw_passwd = pr_pw->ufld.fd_encrypt;
-  }
-#endif
-
-#ifdef HPUX_10_TRUSTED
+#ifdef HAVE_GETPRPWNAM
   {
     struct pr_passwd *pr_pw = getprpwnam(pass->pw_name);
     if (pr_pw && pr_pw->ufld.fd_encrypt)
@@ -1436,23 +1385,21 @@ BOOL password_ok(char *user,char *password, int pwlen, struct passwd *pwd)
   /* extract relevant info */
   fstrcpy(this_user,pass->pw_name);  
   fstrcpy(this_salt,pass->pw_passwd);
-#ifdef HPUX
-  /* The crypt on HPUX won't work with more than 2 salt characters. */
+  /* crypt on some platforms (HPUX in particular)
+     won't work with more than 2 salt characters. */
   this_salt[2] = 0;
-#endif /* HPUX */
+
   fstrcpy(this_crypted,pass->pw_passwd);
  
   if (!*this_crypted) {
     if (!lp_null_passwords()) {
-      DEBUG(2,("Disallowing access to %s due to null password\n",this_user));
-      return(False);
+           DEBUG(2,("Disallowing access to %s due to null password\n",this_user));
+           return(False);
     }
-#ifndef PWDAUTH
     if (!*password) {
-      DEBUG(3,("Allowing access to %s with null password\n",this_user));
-      return(True);
+           DEBUG(3,("Allowing access to %s with null password\n",this_user));
+           return(True);
     }
-#endif    
   }
 
   /* try it as it came to us */
@@ -1551,7 +1498,7 @@ validate a group username entry. Return the username or NULL
 ****************************************************************************/
 static char *validate_group(char *group,char *password,int pwlen,int snum)
 {
-#ifdef NETGROUP
+#ifdef HAVE_NETGROUP
   {
     char *host, *user, *domain;
     setnetgrent(group);
@@ -1568,7 +1515,7 @@ static char *validate_group(char *group,char *password,int pwlen,int snum)
   }
 #endif
   
-#if HAVE_GETGRNAM 
+#ifdef HAVE_GETGRNAM 
   {
     struct group *gptr = (struct group *)getgrnam(group);
     char **member;
@@ -1824,7 +1771,7 @@ static BOOL check_user_equiv(char *user, char *remote, char *equiv_file)
        {
          BOOL host_ok = False;
 
-#ifdef NETGROUP          
+#ifdef HAVE_NETGROUP     
          if (is_group)
            {
              static char *mydomain = NULL;
@@ -1836,7 +1783,7 @@ static BOOL check_user_equiv(char *user, char *remote, char *equiv_file)
 #else
          if (is_group)
            {
-             DEBUG(1,("Netgroups not configured - add -DNETGROUP and recompile\n"));
+             DEBUG(1,("Netgroups not configured\n"));
              continue;
            }
 #endif
index ee08e48e653b3a4974d5d03ee874e643e8eb10dd..dbdbd499213a0c4fbc61b31e2ce597dcb1085c2a 100644 (file)
@@ -581,7 +581,7 @@ BOOL disk_quotas(char *path, int *bsize, int *dfree, int *dsize)
 
   euser_id = geteuid();
 
-#ifdef USE_SETRES
+#ifdef HPUX
   {
     uid_t user_id;
 
@@ -592,7 +592,7 @@ BOOL disk_quotas(char *path, int *bsize, int *dfree, int *dsize)
     if (setresuid(user_id,-1,-1))
       DEBUG(5,("Unable to reset uid to %d\n", user_id));
   }
-#else /* USE_SETRES */
+#else 
 #if defined(__FreeBSD__) || defined(__OpenBSD__)
   {
     /* FreeBSD patches from Marty Moll <martym@arbor.edu> */
@@ -620,7 +620,7 @@ BOOL disk_quotas(char *path, int *bsize, int *dfree, int *dsize)
 #else /* !__FreeBSD__ && !AIX && !__OpenBSD__ */
   r=quotactl(Q_GETQUOTA, dev_disk, euser_id, &D);
 #endif /* !__FreeBSD__ && !AIX && !__OpenBSD__ */
-#endif /* USE_SETRES */
+#endif /* HAVE_SETRES */
 
   /* Use softlimit to determine disk space, except when it has been exceeded */
 #if defined(__FreeBSD__) || defined(__OpenBSD__)
index 151a6d7deda0b7b87307646d77a7a77ff88ee67a..3469e45732577bac9ac7bb56b06679cc46eb81c2 100644 (file)
@@ -33,7 +33,6 @@ char *OutBuffer = NULL;
 char *last_inbuf = NULL;
 
 int am_parent = 1;
-int atexit_set = 0;
 
 /* the last message the was processed */
 int last_message = -1;
@@ -56,9 +55,9 @@ extern int smb_read_error;
 
 extern pstring user_socket_options;
 
-#ifdef DFS_AUTH
+#ifdef WITH_DFS
 extern int dcelogin_atmost_once;
-#endif /* DFS_AUTH */
+#endif /* WITH_DFS */
 
 /*
  * This is set on startup - it defines the SID for this
@@ -695,236 +694,6 @@ BOOL unix_convert(char *name,int cnum,pstring saved_last_component, BOOL *bad_pa
 }
 
 
-/****************************************************************************
-normalise for DOS usage 
-****************************************************************************/
-static void disk_norm(int *bsize,int *dfree,int *dsize)
-{
-  /* check if the disk is beyond the max disk size */
-  int maxdisksize = lp_maxdisksize();
-  if (maxdisksize) {
-    /* convert to blocks - and don't overflow */
-    maxdisksize = ((maxdisksize*1024)/(*bsize))*1024;
-    if (*dsize > maxdisksize) *dsize = maxdisksize;
-    if (*dfree > maxdisksize) *dfree = maxdisksize-1; /* the -1 should stop 
-                                                        applications getting 
-                                                        div by 0 errors */
-  }  
-
-  while (*dfree > WORDMAX || *dsize > WORDMAX || *bsize < 512) 
-    {
-      *dfree /= 2;
-      *dsize /= 2;
-      *bsize *= 2;
-      if (*bsize > WORDMAX )
-       {
-         *bsize = WORDMAX;
-         if (*dsize > WORDMAX)
-           *dsize = WORDMAX;
-         if (*dfree >  WORDMAX)
-           *dfree = WORDMAX;
-         break;
-       }
-    }
-}
-
-/****************************************************************************
-  return number of 1K blocks available on a path and total number 
-****************************************************************************/
-int disk_free(char *path,int *bsize,int *dfree,int *dsize)
-{
-  char *df_command = lp_dfree_command();
-  int dfree_retval;
-#ifdef QUOTAS
-  int dfreeq_retval;
-  int dfreeq = 0;
-  int bsizeq = *bsize;
-  int dsizeq = *dsize;
-#endif
-
-#ifndef NO_STATFS
-#ifdef USE_STATVFS
-  struct statvfs fs;
-#else
-#ifdef ULTRIX
-  struct fs_data fs;
-#else
-  struct statfs fs;
-#endif
-#endif
-#endif
-
-  /* possibly use system() to get the result */
-  if (df_command && *df_command)
-    {
-      int ret;
-      pstring syscmd;
-      pstring outfile;
-         
-      slprintf(outfile,sizeof(outfile)-1, "%s/dfree.smb.%d",tmpdir(),(int)getpid());
-      slprintf(syscmd,sizeof(syscmd)-1,"%s %s",df_command,path);
-      standard_sub_basic(syscmd);
-
-      ret = smbrun(syscmd,outfile,False);
-      DEBUG(3,("Running the command `%s' gave %d\n",syscmd,ret));
-         
-      {
-        FILE *f = fopen(outfile,"r");  
-        *dsize = 0;
-        *dfree = 0;
-        *bsize = 1024;
-        if (f)
-          {
-            fscanf(f,"%d %d %d",dsize,dfree,bsize);
-            fclose(f);
-          }
-        else
-          DEBUG(0,("Can't open %s\n",outfile));
-      }
-         
-      unlink(outfile);
-      disk_norm(bsize,dfree,dsize);
-      dfree_retval = ((*bsize)/1024)*(*dfree);
-#ifdef QUOTAS
-      /* Ensure we return the min value between the users quota and
-         what's free on the disk. Thanks to Albrecht Gebhardt 
-         <albrecht.gebhardt@uni-klu.ac.at> for this fix.
-      */
-      if (disk_quotas(path, &bsizeq, &dfreeq, &dsizeq))
-        {
-          disk_norm(&bsizeq, &dfreeq, &dsizeq);
-          dfreeq_retval = ((bsizeq)/1024)*(dfreeq);
-          dfree_retval =  ( dfree_retval < dfreeq_retval ) ? 
-                           dfree_retval : dfreeq_retval ;
-          /* maybe dfree and dfreeq are calculated using different bsizes 
-             so convert dfree from bsize into bsizeq */
-          /* avoid overflows due to multiplication, so do not:
-                *dfree = ((*dfree) * (*bsize)) / (bsizeq); 
-             bsize and bsizeq are powers of 2 so its better to
-             to divide them getting a multiplication or division factor
-             for dfree. Rene Nieuwenhuizen (07-10-1997) */
-          if (*bsize >= bsizeq) 
-            *dfree = *dfree * (*bsize / bsizeq);
-          else 
-            *dfree = *dfree / (bsizeq / *bsize);
-          *dfree = ( *dfree < dfreeq ) ? *dfree : dfreeq ; 
-          *bsize = bsizeq;
-          *dsize = dsizeq;
-        }
-#endif
-      return(dfree_retval);
-    }
-
-#ifdef NO_STATFS
-  DEBUG(1,("Warning - no statfs function\n"));
-  return(1);
-#else
-#ifdef STATFS4
-  if (statfs(path,&fs,sizeof(fs),0) != 0)
-#else
-#ifdef USE_STATVFS
-    if (statvfs(path, &fs))
-#else
-#ifdef STATFS3
-      if (statfs(path,&fs,sizeof(fs)) == -1)    
-#else
-       if (statfs(path,&fs) == -1)
-#endif /* STATFS3 */
-#endif /* USE_STATVFS */
-#endif /* STATFS4 */
-         {
-           DEBUG(3,("dfree call failed code errno=%d\n",errno));
-           *bsize = 1024;
-           *dfree = 1;
-           *dsize = 1;
-           return(((*bsize)/1024)*(*dfree));
-         }
-
-#ifdef ULTRIX
-  *bsize = 1024;
-  *dfree = fs.fd_req.bfree;
-  *dsize = fs.fd_req.btot;
-#else
-#ifdef USE_STATVFS
-  *bsize = fs.f_frsize;
-#else
-#ifdef USE_F_FSIZE
-  /* eg: osf1 has f_fsize = fundamental filesystem block size, 
-     f_bsize = optimal transfer block size (MX: 94-04-19) */
-  *bsize = fs.f_fsize;
-#else
-  *bsize = fs.f_bsize;
-#endif /* STATFS3 */
-#endif /* USE_STATVFS */
-
-#ifdef STATFS4
-  *dfree = fs.f_bfree;
-#else
-  *dfree = fs.f_bavail;
-#endif /* STATFS4 */
-  *dsize = fs.f_blocks;
-#endif /* ULTRIX */
-
-#if defined(SCO) || defined(ISC) || defined(MIPS)
-  *bsize = 512;
-#endif
-
-/* handle rediculous bsize values - some OSes are broken */
-if ((*bsize) < 512 || (*bsize)>0xFFFF) *bsize = 1024;
-
-  disk_norm(bsize,dfree,dsize);
-
-  if (*bsize < 256)
-    *bsize = 512;
-  if ((*dsize)<1)
-    {
-      DEBUG(0,("dfree seems to be broken on your system\n"));
-      *dsize = 20*1024*1024/(*bsize);
-      *dfree = MAX(1,*dfree);
-    }
-  dfree_retval = ((*bsize)/1024)*(*dfree);
-#ifdef QUOTAS
-  /* Ensure we return the min value between the users quota and
-     what's free on the disk. Thanks to Albrecht Gebhardt 
-     <albrecht.gebhardt@uni-klu.ac.at> for this fix.
-  */
-  if (disk_quotas(path, &bsizeq, &dfreeq, &dsizeq))
-    {
-      disk_norm(&bsizeq, &dfreeq, &dsizeq);
-      dfreeq_retval = ((bsizeq)/1024)*(dfreeq);
-      dfree_retval = ( dfree_retval < dfreeq_retval ) ? 
-                       dfree_retval : dfreeq_retval ;
-      /* maybe dfree and dfreeq are calculated using different bsizes 
-         so convert dfree from bsize into bsizeq */
-      /* avoid overflows due to multiplication, so do not:
-              *dfree = ((*dfree) * (*bsize)) / (bsizeq); 
-       bsize and bsizeq are powers of 2 so its better to
-       to divide them getting a multiplication or division factor
-       for dfree. Rene Nieuwenhuizen (07-10-1997) */
-      if (*bsize >= bsizeq)
-        *dfree = *dfree * (*bsize / bsizeq);
-      else
-        *dfree = *dfree / (bsizeq / *bsize);
-      *dfree = ( *dfree < dfreeq ) ? *dfree : dfreeq ;
-      *bsize = bsizeq;
-      *dsize = dsizeq;
-    }
-#endif
-  return(dfree_retval);
-#endif
-}
-
-
-/****************************************************************************
-wrap it to get filenames right
-****************************************************************************/
-int sys_disk_free(char *path,int *bsize,int *dfree,int *dsize)
-{
-  return(disk_free(dos_to_unix(path,False),bsize,dfree,dsize));
-}
-
-
-
 /****************************************************************************
 check a filename - possibly caling reducename
 
@@ -1541,7 +1310,7 @@ static void open_file(int fnum,int cnum,char *fname1,int flags,int mode, struct
 
   }
 
-#if USE_MMAP
+#if WITH_MMAP
   /* mmap it if read-only */
   if (!fsp->can_write)
   {
@@ -1563,9 +1332,9 @@ sync a file
 ********************************************************************/
 void sync_file(int cnum, int fnum)
 {
-#ifndef NO_FSYNC
-  if(lp_strict_sync(SNUM(cnum)))
-    fsync(Files[fnum].fd_ptr->fd);
+#ifdef HAVE_FSYNC
+    if(lp_strict_sync(SNUM(cnum)))
+      fsync(Files[fnum].fd_ptr->fd);
 #endif
 }
 
@@ -1627,7 +1396,7 @@ static void close_filestruct(files_struct *fs_p)
     fs_p->wbmpx_ptr = NULL; 
   }  
      
-#if USE_MMAP
+#if WITH_MMAP
   if(fs_p->mmap_ptr) 
   {
     munmap(fs_p->mmap_ptr,fs_p->mmap_size);
@@ -2303,7 +2072,7 @@ int read_file(int fnum,char *data,uint32 pos,int n)
     }
 #endif
 
-#if USE_MMAP
+#if WITH_MMAP
   if (Files[fnum].mmap_ptr)
     {
       int num = (Files[fnum].mmap_size > pos) ? (Files[fnum].mmap_size - pos) : -1;
@@ -2627,52 +2396,6 @@ int error_packet(char *inbuf,char *outbuf,int error_class,uint32 error_code,int
 }
 
 
-#ifndef SIGCLD_IGNORE
-/****************************************************************************
-this prevents zombie child processes
-****************************************************************************/
-static int sig_cld(void)
-{
-  static int depth = 0;
-  if (depth != 0)
-    {
-      DEBUG(0,("ERROR: Recursion in sig_cld? Perhaps you need `#define USE_WAITPID'?\n"));
-      depth=0;
-      return(0);
-    }
-  depth++;
-
-  BlockSignals(True,SIGCLD);
-  DEBUG(5,("got SIGCLD\n"));
-
-#ifdef USE_WAITPID
-  while (sys_waitpid((pid_t)-1,(int *)NULL, WNOHANG) > 0);
-#endif
-
-  /* Stop zombies */
-  /* Stevens, Adv. Unix Prog. says that on system V you must call
-     wait before reinstalling the signal handler, because the kernel
-     calls the handler from within the signal-call when there is a
-     child that has exited. This would lead to an infinite recursion
-     if done vice versa. */
-        
-#ifndef DONT_REINSTALL_SIG
-#ifdef SIGCLD_IGNORE
-  signal(SIGCLD, SIG_IGN);  
-#else
-  signal(SIGCLD, SIGNAL_CAST sig_cld);
-#endif
-#endif
-
-#ifndef USE_WAITPID
-  while (wait3(WAIT3_CAST1 NULL, WNOHANG, WAIT3_CAST2 NULL) > 0);
-#endif
-  depth--;
-  BlockSignals(False,SIGCLD);
-  return 0;
-}
-#endif
-
 /****************************************************************************
   this is called when the client exits abruptly
   **************************************************************************/
@@ -2684,9 +2407,6 @@ static int sig_pipe(void)
        if ((cli = server_client()) && cli->initialised) {
                DEBUG(3,("lost connection to password server\n"));
                cli_shutdown(cli);
-#ifndef DONT_REINSTALL_SIG
-               signal(SIGPIPE, SIGNAL_CAST sig_pipe);
-#endif
                BlockSignals(False,SIGPIPE);
                return 0;
        }
@@ -2710,15 +2430,17 @@ static BOOL open_sockets(BOOL is_daemon,int port)
     int s;
     int i;
 
-    /* Stop zombies */
-#ifdef SIGCLD_IGNORE
-    signal(SIGCLD, SIG_IGN);
-#else
-    signal(SIGCLD, SIGNAL_CAST sig_cld);
+#ifdef HAVE_ATEXIT
+    static int atexit_set;
+    if(atexit_set == 0) {
+           atexit_set=1;
+           atexit(killkids);
+    }
 #endif
 
-    if(atexit_set == 0)
-      atexit(killkids);
+    /* Stop zombies */
+    CatchChild();
+
 
     FD_ZERO(&listen_set);
 
@@ -2825,21 +2547,12 @@ max can be %d\n", num_interfaces, FD_SETSIZE));
           continue;
         }
 
-#ifdef NO_FORK_DEBUG
-#ifndef NO_SIGNAL_TEST
-        signal(SIGPIPE, SIGNAL_CAST sig_pipe);
-        signal(SIGCLD, SIGNAL_CAST SIG_DFL);
-#endif /* NO_SIGNAL_TEST */
-        return True;
-#else /* NO_FORK_DEBUG */
         if (Client != -1 && fork()==0)
         {
           /* Child code ... */
 
-#ifndef NO_SIGNAL_TEST
-          signal(SIGPIPE, SIGNAL_CAST sig_pipe);
-          signal(SIGCLD, SIGNAL_CAST SIG_DFL);
-#endif /* NO_SIGNAL_TEST */
+          CatchSignal(SIGPIPE, SIGNAL_CAST sig_pipe);
+
           /* close the listening socket(s) */
           for(i = 0; i < num_interfaces; i++)
             close(fd_listenset[i]);
@@ -2860,20 +2573,19 @@ max can be %d\n", num_interfaces, FD_SETSIZE));
         }
         close(Client); /* The parent doesn't need this socket */
 
-        /*
-         * Force parent to check log size after spawning child.
-         * Fix from klausr@ITAP.Physik.Uni-Stuttgart.De.
-         * The parent smbd will log to logserver.smb. 
-         * It writes only two messages for each child
-         * started/finished. But each child writes, say, 50 messages also in
-         * logserver.smb, begining with the debug_count of the parent, before the
-         * child opens its own log file logserver.client. In a worst case
-         * scenario the size of logserver.smb would be checked after about
-         * 50*50=2500 messages (ca. 100kb).
-         */
-        force_check_log_size();
-
-#endif /* NO_FORK_DEBUG */
+       /*
+        * Force parent to check log size after spawning child.
+        * Fix from klausr@ITAP.Physik.Uni-Stuttgart.De.
+        * The parent smbd will log to logserver.smb. 
+        * It writes only two messages for each child
+        * started/finished. But each child writes, say, 50 messages also in
+        * logserver.smb, begining with the debug_count of the parent, before the
+        * child opens its own log file logserver.client. In a worst case
+        * scenario the size of logserver.smb would be checked after about
+        * 50*50=2500 messages (ca. 100kb).
+        */
+       force_check_log_size();
       } /* end for num */
     } /* end while 1 */
   } /* end if is_daemon */
@@ -2882,9 +2594,7 @@ max can be %d\n", num_interfaces, FD_SETSIZE));
     /* Started from inetd. fd 0 is the socket. */
     /* We will abort gracefully when the client or remote system 
        goes away */
-#ifndef NO_SIGNAL_TEST
-    signal(SIGPIPE, SIGNAL_CAST sig_pipe);
-#endif
+    CatchSignal(SIGPIPE, SIGNAL_CAST sig_pipe);
     Client = dup(0);
 
     /* close our standard file descriptors */
@@ -2905,10 +2615,10 @@ max can be %d\n", num_interfaces, FD_SETSIZE));
 static void process_smb(char *inbuf, char *outbuf)
 {
   extern int Client;
-#ifdef USE_SSL
+#ifdef WITH_SSL
   extern BOOL sslEnabled;     /* don't use function for performance reasons */
   static int sslConnected = 0;
-#endif /* USE_SSL */
+#endif /* WITH_SSL */
   static int trans_num;
   int msg_type = CVAL(inbuf,0);
   int32 len = smb_len(inbuf);
@@ -2933,7 +2643,7 @@ static void process_smb(char *inbuf, char *outbuf)
   DEBUG(6,("got message type 0x%x of len 0x%x\n",msg_type,len));
   DEBUG(3,("%s Transaction %d of length %d\n",timestring(),trans_num,nread));
 
-#ifdef USE_SSL
+#ifdef WITH_SSL
     if(sslEnabled && !sslConnected){
         sslConnected = sslutil_negotiate_ssl(Client, msg_type);
         if(sslConnected < 0){   /* an error occured */
@@ -2943,7 +2653,7 @@ static void process_smb(char *inbuf, char *outbuf)
             return;
         }
     }
-#endif  /* USE_SSL */
+#endif  /* WITH_SSL */
 
 #ifdef WITH_VTP
   if(trans_num == 1 && VT_Check(inbuf)) 
@@ -3641,9 +3351,6 @@ static int sig_hup(void)
    */
 
   reload_after_sighup = True;
-#ifndef DONT_REINSTALL_SIG
-  signal(SIGHUP,SIGNAL_CAST sig_hup);
-#endif
   BlockSignals(False,SIGHUP);
   return(0);
 }
@@ -3811,7 +3518,7 @@ int make_connection(char *service,char *user,char *password, int pwlen, char *de
   string_set(&pcon->dirpath,"");
   string_set(&pcon->user,user);
 
-#if HAVE_GETGRNAM 
+#ifdef HAVE_GETGRNAM 
   if (*lp_force_group(snum))
     {
       struct group *gptr;
@@ -4596,7 +4303,7 @@ static BOOL dump_core(void)
   if (chdir(dname)) return(False);
   umask(~(0700));
 
-#ifndef NO_GETRLIMIT
+#ifdef HAVE_GETRLIMIT
 #ifdef RLIMIT_CORE
   {
     struct rlimit rlp;
@@ -4631,7 +4338,7 @@ void exit_server(char *reason)
   for (i=0;i<MAX_CONNECTIONS;i++)
     if (Connections[i].open)
       close_cnum(i,(uint16)-1);
-#ifdef DFS_AUTH
+#ifdef WITH_DFS
   if (dcelogin_atmost_once)
     dfs_unlogin();
 #endif
@@ -5431,11 +5138,12 @@ static void usage(char *pname)
   int opt;
   extern char *optarg;
 
-#ifdef NEED_AUTH_PARAMETERS
+#ifdef HAVE_SET_AUTH_PARAMETERS
   set_auth_parameters(argc,argv);
 #endif
 
-#ifdef SecureWare
+#ifdef HAVE_SETLUID
+  /* needed for SecureWare on SCO */
   setluid(0);
 #endif
 
@@ -5453,7 +5161,7 @@ static void usage(char *pname)
 
   /* make absolutely sure we run as root - to handle cases where people
      are crazy enough to have it setuid */
-#ifdef USE_SETRES
+#ifdef HAVE_SETRESUID
   setresuid(0,0,0);
 #else
   setuid(0);
@@ -5463,7 +5171,7 @@ static void usage(char *pname)
 #endif
 
   fault_setup((void (*)(void *))exit_server);
-  signal(SIGTERM , SIGNAL_CAST dflt_sig);
+  CatchSignal(SIGTERM , SIGNAL_CAST dflt_sig);
 
   /* we want total control over the permissions on created files,
      so set our umask to 0 */
@@ -5533,7 +5241,7 @@ static void usage(char *pname)
   DEBUG(2,("%s smbd version %s started\n",timestring(),VERSION));
   DEBUG(2,("Copyright Andrew Tridgell 1992-1997\n"));
 
-#ifndef NO_GETRLIMIT
+#ifdef HAVE_GETRLIMIT
 #ifdef RLIMIT_NOFILE
   {
     struct rlimit rlp;
@@ -5566,28 +5274,25 @@ static void usage(char *pname)
   if (!reload_services(False))
     return(-1);        
 
-#ifdef USE_SSL
+#ifdef WITH_SSL
   {
     extern BOOL sslEnabled;
     sslEnabled = lp_ssl_enabled();
     if(sslEnabled)
       sslutil_init(True);
   }
-#endif        /* USE_SSL */
+#endif        /* WITH_SSL */
 
   codepage_initialise(lp_client_code_page());
 
   pstrcpy(global_myworkgroup, lp_workgroup());
 
-  if(!pdb_generate_machine_sid())
-  {
-    DEBUG(0,("ERROR: Samba cannot get a machine SID.\n"));
-    exit(1);
+  if(!pdb_generate_machine_sid()) {
+         DEBUG(0,("ERROR: Samba cannot get a machine SID.\n"));
+         exit(1);
   }
 
-#ifndef NO_SIGNAL_TEST
-  signal(SIGHUP,SIGNAL_CAST sig_hup);
-#endif
+  CatchSignal(SIGHUP,SIGNAL_CAST sig_hup);
 
   /* Setup the signals that allow the debug log level
      to by dynamically changed. */
@@ -5597,11 +5302,11 @@ static void usage(char *pname)
 
 #ifndef MEM_MAN
 #if defined(SIGUSR1)
-  signal( SIGUSR1, SIGNAL_CAST sig_usr1 );
+  CatchSignal( SIGUSR1, SIGNAL_CAST sig_usr1 );
 #endif /* SIGUSR1 */
    
 #if defined(SIGUSR2)
-  signal( SIGUSR2, SIGNAL_CAST sig_usr2 );
+  CatchSignal( SIGUSR2, SIGNAL_CAST sig_usr2 );
 #endif /* SIGUSR2 */
 #endif /* MEM_MAN */
 
index 1b1802c95f659b8dbad01fdc8d41833d818936c3..2a94ac32353d97ed9705d35547b45b311170a00a 100644 (file)
@@ -59,7 +59,7 @@ becoming a non-root user */
 
   /* first become root - we may need to do this in order to lose
      our privilages! */
-#ifdef USE_SETRES
+#ifdef HAVE_SETRESUID
   setresgid(0,0,0);
   setresuid(0,0,0);
 #else      
@@ -67,12 +67,7 @@ becoming a non-root user */
   seteuid(0);
 #endif
 
-#ifdef USE_SETFS
-  setfsuid(uid);
-  setfsgid(gid);
-#endif
-
-#ifdef USE_SETRES
+#ifdef HAVE_SETRESUID
   setresgid(gid,gid,gid);
   setresuid(uid,uid,uid);      
 #else
index 1bb89f05b1c78f32dec8e13bcc794d80c210d19a..68b45016b8281adb685dc2211294c0e8c25ae138 100644 (file)
@@ -19,7 +19,7 @@
    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */
 
-#ifdef USE_SSL  /* should always be defined if this module is compiled */
+#ifdef WITH_SSL  /* should always be defined if this module is compiled */
 
 #include "includes.h"
 #include <ssl.h>
@@ -261,6 +261,6 @@ char            *reqHosts, *resignHosts;
     return 1;
 }
 
-#else /* USE_SSL */
+#else /* WITH_SSL */
  void ssl_dummy(void) {;} /* So some compilers don't complain. */
-#endif  /* USE_SSL */
+#endif  /* WITH_SSL */
index 2a75b660b5eb04026daac70bed902c45a6df0695..a8e0bf0d03471347f4065a98f172a2eb91f2c2d7 100644 (file)
@@ -36,26 +36,25 @@ initialise the uid routines
 ****************************************************************************/
 void init_uid(void)
 {
-  initial_uid = current_user.uid = geteuid();
-  initial_gid = current_user.gid = getegid();
+       initial_uid = current_user.uid = geteuid();
+       initial_gid = current_user.gid = getegid();
 
-  if (initial_gid != 0 && initial_uid == 0)
-    {
-#ifdef HPUX
-      setresgid(0,0,0);
+       if (initial_gid != 0 && initial_uid == 0) {
+#ifdef HAVE_SETRESUID
+               setresgid(0,0,0);
 #else
-      setgid(0);
-      setegid(0);
+               setgid(0);
+               setegid(0);
 #endif
-    }
-
-  initial_uid = geteuid();
-  initial_gid = getegid();
+       }
 
-  current_user.cnum = -1;
-  current_user.vuid = UID_FIELD_INVALID;
+       initial_uid = geteuid();
+       initial_gid = getegid();
 
-  ChDir(OriginalDir);
+       current_user.cnum = -1;
+       current_user.vuid = UID_FIELD_INVALID;
+       
+       ChDir(OriginalDir);
 }
 
 
@@ -64,141 +63,33 @@ void init_uid(void)
 ****************************************************************************/
 static BOOL become_uid(int uid)
 {
-  if (initial_uid != 0)
-    return(True);
-
-  if (uid == -1 || uid == 65535) {
-    DEBUG(1,("WARNING: using uid %d is a security risk\n",uid));    
-  }
-
-#ifdef AIX
-  {
-    /* AIX 3 stuff - inspired by a code fragment in wu-ftpd */
-    /* MWW: This is all undocumented, of course.  There's a patch to WU-ftpd
-       in the AIX FAQ which does the setpriv, then sets the gid stuff, then
-       sets uid.  Since Samba separates setting the gid and setting the uid,
-       I've duplicated the setpriv code in become_gid.  I've also made the
-       requisite changes to become_gid to match the WU-ftpd patch.
-
-       I believe we'll still get errors in the Samba logs.  This setpriv
-       call is supposed to disable "trapdooring" on AIX - ie. normally
-       once a seteuid / setegid is done, the effective ID can't be set back
-       to what it was before.  See the comments in become_root / unbecome_root.
-       I *think* that we may have to do something additional here to prevent
-       the "Can't set uid (AIX3)" messages, though - possibly change the
-       values of priv.pv_priv to keep the SET_PROC_DAC privilege, and
-       possibly SET_OBJ_DAC and SET_OBJ_STAT as well.
-
-       The pv_priv array is two longwords, and the constants in sys/priv.h
-       have values between 1 and 64, according to the comments in priv.h.
-       This strongly suggests a bit vector - but does BYPASS_DAC_WRITE
-       (#define'd to 1) mean 1<<0 or 1<<1?  Unfortunately, nothing's
-       defined to 0 or 64, which would be a dead giveaway.  Also, what's the
-       fullword-boundary endianness?  That is, is pv_priv[0] the high or
-       the low 32 bits?  Fortunately, the values used by "su" (see below)
-       don't make much sense if pv_priv[0] is the high bits.  Also, based
-       on analysis of the values used by su, I concluded that, for example,
-       BYPASS_DAC_READ (defined to 2) is bit "2" counting from 1 - ie.
-       if (pv_priv[0] & (1 << (BYPASS_DAC_READ - 1))) then BYPASS_DAC_READ
-       is on.  That's a bit odd, but it makes more sense than if the
-       privilege constants are meant to be taken as exponents of 2.
-
-       For analysis, I ran "su" as root under dbx, and stopped in setpriv.
-       The first argument to setpriv can be examined using
-
-          print $r3   (eg. "0x30009" = PRIV_SET|PRIV_MAXIMUM|PRIV_EFFECTIV)
-
-       the contents of the pv_priv array can be examined using
-
-          ($r4)/2X
-
-       Here's what su does:
-
-          setpriv(PRIV_SET | PRIV_INHERITED | PRIV_BEQUEATH, {0,0})
-          setpriv(PRIV_SET | PRIV_EFFECTIVE | PRIV_MAXIMUM,
-                  {0x02800006, 0x00040000})
-             0x02800006 = SET_PROC_AUDIT | SET_PROC_ENV |
-                          BYPASS_DAC_EXEC | BYPASS_DAC_READ
-             0x00040000 = TPATH_CONFIG
-          setpriv(PRIV_SET | PRIV_EFFECTIVE, {0, 0})
-
-       Analysis:
-
-          Reduce inherited privileges to none, so the child doesn't inherit
-             anything special.
-          Change su's privileges so it can execute the shell even if someone
-             has goofed up the permissions to it or to directories on the
-             search path; so it can set the process auditing characteristics
-             and privileged environment (stuff in /etc/security/environ with
-             the sysenv attribute); and so that it can set the trusted path
-             characteristics for this login.
-          Zap those privileges back off when we don't need them any more.
-
-       I'm guessing we want to keep SET_PROC_DAC in the current priv set,
-       but not in the inherited one.  That is, set PRIV_INHERITED and
-       PRIV_BEQUEATH to 0.  We also probably want to set PRIV_MAXIMUM and
-       PRIV_EFFECTIVE to only the privs we need, which at this point would
-       appear to be just SET_PROC_DAC.  *Note*: setting PRIV_MAXIMUM
-       with any of the privilege sets higher than what you're trying to
-       set the maximum to will produce an EINVAL.  For example, if we
-       try to set PRIV_MAXIMUM to SET_PROC_DAC *before* we reduce
-       PRIV_INHERITED and PRIV_BEQUEATH, it won't work.  Zero out the
-       inherited privileges first.
-
-       Some experimentation with simple programs confirms that if we're
-       running with an EUID of 0 we can switch our UID/EUID back and
-       forth with setuidx - *unless* we call setpriv({0,0}, ...) first.
-       In other words, by default root has SET_PROC_DAT set, but we can
-       remove it from our privilege set.  This is what we want to do for
-       child processes, I believe.
-
-       Also, calling setpriv(PRIV_SUB|PRIV_EFFECTIVE,...) with pv_priv[0]
-       set to SET_PROC_DAC (1 << (SET_PROC_DAC - 1)) will prevent an
-       EUID-root process from switching its EUID back with setuidx.
-
-       In other words, setuidx on AIX is *not* trapdoor.  setuid is
-       trapdoor.  We need a non-trapdoor setuid function, but we don't
-       want processes we fork to have access to it.  Thus we use setuidx
-       but first we disable it for our children.
-
-       Note, however, that we can only increase our privileges (as we
-       do in the first call to setpriv) if we're EUID-root.  If we
-       started out as root, and then switched to a non-root user ID,
-       that's OK; we've already set them.  Just don't try to set them
-       again.
-
-       Also, I suspect that after using setpriv / setuidx / etc. here in
-       the AIX-specific code we DON'T want to fall through to the code that
-       calls setuid, etc.  However, I haven't noticed any more problems with
-       the code the way it is here.
-       */
-
-    priv_t priv;
-
-    priv.pv_priv[0] = 0;
-    priv.pv_priv[1] = 0;
-    if (setpriv(PRIV_SET|PRIV_INHERITED|PRIV_BEQUEATH,
-               &priv, sizeof(priv_t)) < 0) {
-       DEBUG(1, ("Can't set child privileges (AIX3): %s\n", strerror(errno)));
-    }
-
-    priv.pv_priv[0] = (1 << (SET_PROC_DAC - 1));
-    if (setpriv(PRIV_SET|PRIV_EFFECTIVE|PRIV_MAXIMUM,
-               &priv, sizeof(priv_t)) < 0) {
-       DEBUG(1, ("Can't set own privileges (AIX3): %s\n", strerror(errno)));
-    }
+       if (initial_uid != 0) {
+               return(True);
+       }
+       
+       if (uid == -1 || uid == 65535) {
+               static int done;
+               if (!done) {
+                       DEBUG(1,("WARNING: using uid %d is a security risk\n",
+                                uid));
+                       done=1;
+               }
+       }
 
-    if (setuidx(ID_REAL|ID_EFFECTIVE, (uid_t)uid) < 0 ||
-       seteuid((uid_t)uid) < 0) {
-      DEBUG(1,("Can't set uid (AIX3)\n"));
-    }
-  }
+#ifdef HAVE_TRAPDOOR_UID
+#ifdef HAVE_SETUIDX
+       /* AIX3 has setuidx which is NOT a trapoor function (tridge) */
+       if (setuidx(ID_EFFECTIVE, (uid_t)uid) != 0) {
+               if (seteuid((uid_t)uid) != 0) {
+                       DEBUG(1,("Can't set uid (setuidx)\n"));
+                       return False;
+               }
+       }
+#endif
 #endif
 
-#ifdef USE_SETRES
-  if (setresuid(-1,uid,-1) != 0)
-#elif defined(USE_SETFS)
-    if (setfsuid(uid) != 0)
+#ifdef HAVE_SETRESUID
+    if (setresuid(-1,uid,-1) != 0)
 #else
     if ((seteuid(uid) != 0) && 
        (setuid(uid) != 0))
@@ -206,19 +97,20 @@ static BOOL become_uid(int uid)
       {
        DEBUG(0,("Couldn't set uid %d currently set to (%d,%d)\n",
                 uid,getuid(), geteuid()));
-       if (uid > 32000)
-         DEBUG(0,("Looks like your OS doesn't like high uid values - try using a different account\n"));
+       if (uid > 32000) {
+               DEBUG(0,("Looks like your OS doesn't like high uid values - try using a different account\n"));
+       }
        return(False);
       }
 
-  if (((uid == -1) || (uid == 65535)) && geteuid() != uid) {
-    DEBUG(0,("Invalid uid -1. perhaps you have a account with uid 65535?\n"));
-    return(False);
-  }
+    if (((uid == -1) || (uid == 65535)) && geteuid() != uid) {
+           DEBUG(0,("Invalid uid -1. perhaps you have a account with uid 65535?\n"));
+           return(False);
+    }
 
-  current_user.uid = uid;
+    current_user.uid = uid;
 
-  return(True);
+    return(True);
 }
 
 
@@ -234,36 +126,17 @@ static BOOL become_gid(int gid)
     DEBUG(1,("WARNING: using gid %d is a security risk\n",gid));    
   }
   
-#ifdef AIX
-  {
-    /* MWW: See comment above in become_uid. */
-    priv_t priv;
-
-    priv.pv_priv[0] = 0;
-    priv.pv_priv[1] = 0;
-    if (setpriv(PRIV_SET|PRIV_INHERITED|PRIV_EFFECTIVE|PRIV_BEQUEATH,
-               &priv, sizeof(priv_t)) < 0) {
-       DEBUG(1, ("Can't set privilege (AIX3)\n"));
-       }
-    if (setgidx(ID_REAL|ID_EFFECTIVE, (gid_t)gid) < 0 ||
-       setegid((gid_t)gid) < 0) {
-      DEBUG(1,("Can't set gid (AIX3)\n"));
-    }
-  }
-#endif
-
-#ifdef USE_SETRES 
+#ifdef HAVE_SETRESUID
   if (setresgid(-1,gid,-1) != 0)
-#elif defined(USE_SETFS)
-  if (setfsgid(gid) != 0)
 #else
   if (setgid(gid) != 0)
 #endif
       {
        DEBUG(0,("Couldn't set gid %d currently set to (%d,%d)\n",
                 gid,getgid(),getegid()));
-       if (gid > 32000)
-         DEBUG(0,("Looks like your OS doesn't like high gid values - try using a different account\n"));
+       if (gid > 32000) {
+               DEBUG(0,("Looks like your OS doesn't like high gid values - try using a different account\n"));
+       }
        return(False);
       }
 
@@ -278,7 +151,7 @@ static BOOL become_gid(int gid)
 ****************************************************************************/
 static BOOL become_id(int uid,int gid)
 {
-  return(become_gid(gid) && become_uid(uid));
+       return(become_gid(gid) && become_uid(uid));
 }
 
 /****************************************************************************
@@ -300,10 +173,12 @@ BOOL become_guest(void)
   /* MWW: From AIX FAQ patch to WU-ftpd: call initgroups before setting IDs */
   initgroups(pass->pw_name, (gid_t)pass->pw_gid);
 #endif
+
   ret = become_id(pass->pw_uid,pass->pw_gid);
 
-  if (!ret)
+  if (!ret) {
     DEBUG(1,("Failed to become guest. Invalid guest account?\n"));
+  }
 
   current_user.cnum = -2;
   current_user.vuid = UID_FIELD_INVALID;
@@ -390,7 +265,7 @@ BOOL become_user(connection_struct *conn, int cnum, uint16 vuid)
     {
       if (!become_gid(gid)) return(False);
 
-#ifndef NO_SETGROUPS      
+#ifdef HAVE_SETGROUPS      
       if (!(VALID_CNUM(cnum) && conn->ipc)) {
        /* groups stuff added by ih/wreu */
        if (current_user.ngroups > 0)
@@ -424,34 +299,30 @@ BOOL unbecome_user(void )
 
   if (initial_uid == 0)
     {
-#ifdef USE_SETRES
+#ifdef HAVE_SETRESUID
       setresuid(-1,getuid(),-1);
       setresgid(-1,getgid(),-1);
-#elif defined(USE_SETFS)
-      setfsuid(initial_uid);
-      setfsgid(initial_gid);
 #else
       if (seteuid(initial_uid) != 0) 
        setuid(initial_uid);
       setgid(initial_gid);
 #endif
     }
+
 #ifdef NO_EID
   if (initial_uid == 0)
     DEBUG(2,("Running with no EID\n"));
   initial_uid = getuid();
   initial_gid = getgid();
 #else
-  if (geteuid() != initial_uid)
-    {
-      DEBUG(0,("Warning: You appear to have a trapdoor uid system\n"));
-      initial_uid = geteuid();
-    }
-  if (getegid() != initial_gid)
-    {
-      DEBUG(0,("Warning: You appear to have a trapdoor gid system\n"));
-      initial_gid = getegid();
-    }
+  if (geteuid() != initial_uid) {
+         DEBUG(0,("Warning: You appear to have a trapdoor uid system\n"));
+         initial_uid = geteuid();
+  }
+  if (getegid() != initial_gid) {
+         DEBUG(0,("Warning: You appear to have a trapdoor gid system\n"));
+         initial_gid = getegid();
+  }
 #endif
 
   current_user.uid = initial_uid;
@@ -485,13 +356,13 @@ static BOOL setup_stdout_file(char *outfile,BOOL shared)
   close(1);
 
   if (shared) {
-    /* become root - unprivilaged users can't delete these files */
-#ifdef USE_SETRES
-    setresgid(0,0,0);
-    setresuid(0,0,0);
+         /* become root - unprivilaged users can't delete these files */
+#ifdef HAVE_SETRESUID
+         setresgid(0,0,0);
+         setresuid(0,0,0);
 #else      
-    setuid(0);
-    seteuid(0);
+         setuid(0);
+         seteuid(0);
 #endif
   }
 
@@ -534,7 +405,7 @@ int smbrun(char *cmd,char *outfile,BOOL shared)
   int uid = current_user.uid;
   int gid = current_user.gid;
 
-#if USE_SYSTEM
+#ifndef HAVE_EXECL
   int ret;
   pstring syscmd;  
   char *path = lp_smbrun();
@@ -583,7 +454,7 @@ int smbrun(char *cmd,char *outfile,BOOL shared)
 
   /* now completely lose our privilages. This is a fairly paranoid
      way of doing it, but it does work on all systems that I know of */
-#ifdef USE_SETRES
+#ifdef HAVE_SETRESUID
   setresgid(0,0,0);
   setresuid(0,0,0);
   setresgid(gid,gid,gid);
@@ -668,7 +539,7 @@ void unbecome_root(BOOL restore_dir)
                exit_server("Failed to restore gid");
        }
 
-#ifndef NO_SETGROUPS      
+#ifdef HAVE_SETGROUPS      
        if (current_user_saved.ngroups > 0) {
                if (setgroups(current_user_saved.ngroups,
                              current_user_saved.groups)<0)
index 19f825946430602142267e9f31269b26ff4ffb5b..6e95bac3c254c30e6dd0a7b9a95bed5dc4f47c61 100644 (file)
@@ -156,7 +156,7 @@ void        VT_SigCLD(int   sig)
        if(wait(NULL) == VT_ChildPID)
                VT_ChildDied = True;
        else
-               signal(SIGCLD, VT_SigCLD);
+               CatchSignal(SIGCLD, VT_SigCLD);
 }
 
 
@@ -305,12 +305,12 @@ int       VT_Start(void)
                VT_ChildDied = False;
                VT_Fd = master;
 
-               signal(SIGCLD, VT_SigCLD);
+               CatchSignal(SIGCLD, VT_SigCLD);
 
-               signal(SIGHUP, VT_SigEXIT);
-               signal(SIGTERM, VT_SigEXIT);
-               signal(SIGINT, VT_SigEXIT);
-               signal(SIGQUIT, VT_SigEXIT);
+               CatchSignal(SIGHUP, VT_SigEXIT);
+               CatchSignal(SIGTERM, VT_SigEXIT);
+               CatchSignal(SIGINT, VT_SigEXIT);
+               CatchSignal(SIGQUIT, VT_SigEXIT);
 
                memset(OutBuf, 0, sizeof(OutBuf));
                OutBuf [4] = 0x06;
diff --git a/source/tests/README b/source/tests/README
new file mode 100644 (file)
index 0000000..cf1be8b
--- /dev/null
@@ -0,0 +1,10 @@
+This directory contains autoconf test programs that are too large to
+comfortably fit in configure.in.
+
+These programs should test one feature of the OS and exit(0) if it
+works or exit(1) if it doesn't work (do _not_ use return)
+
+The programs should be kept simple and to the point. Beautiful/fast
+code is not necessary
+
+
diff --git a/source/tests/fcntl_lock.c b/source/tests/fcntl_lock.c
new file mode 100644 (file)
index 0000000..c544794
--- /dev/null
@@ -0,0 +1,78 @@
+/* test whether fcntl locking works on this system */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+
+#ifdef HAVE_SYS_FCNTL_H
+#include <sys/fcntl.h>
+#endif
+
+#include <errno.h>
+
+static int sys_waitpid(pid_t pid,int *status,int options)
+{
+#ifdef HAVE_WAITPID
+  return waitpid(pid,status,options);
+#else /* USE_WAITPID */
+  return wait4(pid, status, options, NULL);
+#endif /* USE_WAITPID */
+}
+
+#define DATA "conftest.fcntl"
+
+#ifndef SEEK_SET
+#define SEEK_SET 0
+#endif
+
+/* lock a byte range in a open file */
+int main(int argc, char *argv[])
+{
+       struct flock lock;
+       int fd, pid, ret, status=1;
+
+       if (!(pid=fork())) {
+               sleep(2);
+               fd = open(DATA, O_RDONLY);
+
+               if (fd == -1) exit(1);
+
+               lock.l_type = F_WRLCK;
+               lock.l_whence = SEEK_SET;
+               lock.l_start = 0;
+               lock.l_len = 4;
+               lock.l_pid = getpid();
+               
+               lock.l_type = F_WRLCK;
+               
+               /* check if a lock applies */
+               ret = fcntl(fd,F_GETLK,&lock);
+
+               if ((ret == -1) ||
+                   (lock.l_type == F_UNLCK)) {
+                       exit(1);
+               } else {
+                       exit(0);
+               }
+       }
+
+       fd = open(DATA, O_RDWR|O_CREAT|O_TRUNC, 0600);
+
+       lock.l_type = F_WRLCK;
+       lock.l_whence = SEEK_SET;
+       lock.l_start = 0;
+       lock.l_len = 4;
+       lock.l_pid = getpid();
+
+       /* set a 4 byte write lock */
+       fcntl(fd,F_SETLK,&lock);
+
+       sys_waitpid(pid, &status, 0);
+
+       unlink(DATA);
+
+       exit(status);
+}
diff --git a/source/tests/ftruncate.c b/source/tests/ftruncate.c
new file mode 100644 (file)
index 0000000..8d5e894
--- /dev/null
@@ -0,0 +1,24 @@
+/* test whether ftruncte() can extend a file */
+
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
+#define DATA "conftest.trunc"
+#define LEN 7663
+
+main()
+{
+       int *buf;
+       int fd = open(DATA,O_RDWR|O_CREAT|O_TRUNC,0666);
+
+       ftruncate(fd, LEN);
+
+       unlink(DATA);
+
+       if (lseek(fd, 0, SEEK_END) == LEN) {
+               exit(0);
+       }
+       exit(1);
+}
diff --git a/source/tests/shared_mmap.c b/source/tests/shared_mmap.c
new file mode 100644 (file)
index 0000000..fb8a2a3
--- /dev/null
@@ -0,0 +1,66 @@
+/* this tests whether we can use a shared writeable mmap on a file -
+   as needed for the mmap varient of FAST_SHARE_MODES */
+
+#include <unistd.h>
+#include <sys/mman.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
+#define DATA "conftest.mmap"
+
+#ifndef MAP_FILE
+#define MAP_FILE 0
+#endif
+
+main()
+{
+       int *buf;
+       int i, pid;
+       int fd = open(DATA,O_RDWR|O_CREAT|O_TRUNC,0666);
+       int count=7;
+
+       if (fd == -1) exit(1);
+
+       for (i=0;i<10000;i++) {
+               write(fd,&i,sizeof(i));
+       }
+
+       close(fd);
+
+       if (fork() == 0) {
+               fd = open(DATA,O_RDWR);
+               if (fd == -1) exit(1);
+
+               buf = (int *)mmap(NULL, 10000*sizeof(int), 
+                                  (PROT_READ | PROT_WRITE), 
+                                  MAP_FILE | MAP_SHARED, 
+                                  fd, 0);
+
+               while (count-- && buf[9124] != 55732) sleep(1);
+
+               if (count <= 0) exit(1);
+
+               buf[1763] = 7268;
+               exit(0);
+       }
+
+       fd = open(DATA,O_RDWR);
+       if (fd == -1) exit(1);
+
+       buf = (int *)mmap(NULL, 10000*sizeof(int), 
+                          (PROT_READ | PROT_WRITE), 
+                          MAP_FILE | MAP_SHARED, 
+                          fd, 0);
+
+       if (buf == (int *)-1) exit(1);
+
+       buf[9124] = 55732;
+
+       while (count-- && buf[1763] != 7268) sleep(1);
+
+       unlink(DATA);
+               
+       if (count > 0) exit(0);
+       exit(1);
+}
diff --git a/source/tests/sysv_ipc.c b/source/tests/sysv_ipc.c
new file mode 100644 (file)
index 0000000..2374174
--- /dev/null
@@ -0,0 +1,66 @@
+/* this tests whether we can use a sysv shared memory segment
+   as needed for the sysv varient of FAST_SHARE_MODES */
+
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/ipc.h>
+#include <sys/shm.h>
+
+#define KEY 0x963796
+#define SIZE (32*1024)
+
+main()
+{
+       int id;
+       int *buf;
+       int count=7;
+
+#ifdef LINUX
+       if (sizeof(struct shmid_ds) == 52) {
+               printf("WARNING: You probably have a broken set of glibc2 include files - disabling sysv shared memory\n");
+               exit(1);
+       }
+#endif
+
+       id = shmget(KEY, 0, 0);
+       if (id != -1) {
+               if (shmctl(id, IPC_RMID, 0) != 0) exit(1);
+       }
+
+       if (fork() == 0) {
+               /* uggh - need locking */
+               sleep(2);
+
+               /* get an existing area */
+               id = shmget(KEY, 0, 0);
+               if (id == -1) exit(1);
+
+               buf = (int *)shmat(id, 0, 0);
+               if (buf == (int *)-1) exit(1);
+
+
+               while (count-- && buf[6124] != 55732) sleep(1);
+
+               if (count <= 0) exit(1);
+
+               buf[1763] = 7268;
+               exit(0);
+       }
+       
+       id = shmget(KEY, SIZE, IPC_CREAT | IPC_EXCL | 0600);
+       if (id == -1) exit(1);
+
+       buf = (int *)shmat(id, 0, 0);
+
+       if (buf == (int *)-1) exit(1);
+
+       buf[6124] = 55732;
+
+       while (count-- && buf[1763] != 7268) sleep(1);
+
+       shmctl(id, IPC_RMID, 0);
+
+       if (count <= 0) exit(1);
+       exit(0);
+}
diff --git a/source/tests/trapdoor.c b/source/tests/trapdoor.c
new file mode 100644 (file)
index 0000000..83e10d0
--- /dev/null
@@ -0,0 +1,25 @@
+/* test for a trapdoor uid system */
+
+#include <stdlib.h>
+#include <unistd.h>
+#include <stdio.h>
+
+main()
+{
+       if (getuid() != 0) {
+               fprintf(stderr,"ERROR: This test must be run as root - assuming non-trapdoor system\n");
+               exit(0);
+       }
+
+       if (seteuid(1) != 0) exit(1);
+       if (geteuid() != 1) exit(1);
+       if (seteuid(0) != 0) exit(1);
+       if (geteuid() != 0) exit(1);
+
+       if (setegid(1) != 0) exit(1);
+       if (getegid() != 1) exit(1);
+       if (setegid(0) != 0) exit(1);
+       if (getegid() != 0) exit(1);
+
+       exit(0);
+}
diff --git a/source/ubiqx/.cvsignore b/source/ubiqx/.cvsignore
new file mode 100644 (file)
index 0000000..421376d
--- /dev/null
@@ -0,0 +1 @@
+dummy
index 59d5771c5d2797e8fb8e9db77b930ea3fc7d4065..551d453dba21e2246ad73b11e01960658c0d07c4 100644 (file)
@@ -20,9 +20,7 @@
    
 */
 
-#ifdef SYSLOG
-#undef SYSLOG
-#endif
+#define NO_SYSLOG
 
 #include "includes.h"
 
index 2900d3acbe5de395447493af7504ac2653f330a5..8ece6ed4c1ca9b37667d03168c66225d7565ca4d 100644 (file)
@@ -32,9 +32,7 @@
  * This program reports current SMB connections
  */
 
-#ifdef SYSLOG
-#undef SYSLOG
-#endif
+#define NO_SYSLOG
 
 #include "includes.h"
 
index 1abfee05412931c76a85b45521a0c9b5402a0268..53226d00e6d18cf19e5901dca327fdc0e4a85b50 100644 (file)
@@ -19,9 +19,7 @@
    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */
 
-#ifdef SYSLOG
-#undef SYSLOG
-#endif
+#define NO_SYSLOG
 
 #include "includes.h"
 
diff --git a/source/web/.cvsignore b/source/web/.cvsignore
new file mode 100644 (file)
index 0000000..421376d
--- /dev/null
@@ -0,0 +1 @@
+dummy