svn rev #3257: trunk/ bsd/

ghudson@MIT.EDU ghudson at MIT.EDU
Thu Jul 9 12:17:29 EDT 2009


Commit By: ghudson
Log Message:
Add configure goo for defining daemon() if needed, for krlogind.  Also
fix inconsistent configure goo for getdtablesize.



Changed Files:
U   trunk/bsd/Makefile.in
A   trunk/bsd/daemon.c
U   trunk/configure.ac
Modified: trunk/bsd/Makefile.in
===================================================================
--- trunk/bsd/Makefile.in	2009-07-09 16:05:56 UTC (rev 3256)
+++ trunk/bsd/Makefile.in	2009-07-09 16:17:29 UTC (rev 3257)
@@ -5,6 +5,7 @@
 SETENVOBJ=@SETENVOBJ@
 
 LOGINLIBS=@LOGINLIBS@
+DAEMONOBJ=@DAEMONOBJ@
 GETDOBJ=@GETDOBJ@
 KRSHDLIBS=@KRSHDLIBS@
 
@@ -12,7 +13,7 @@
 	$(srcdir)/forward.c $(srcdir)/login.c $(srcdir)/krshd.c \
 	$(srcdir)/krlogind.c
 OBJS= krcp.o krlogin.o krsh.o kcmd.o forward.o $(SETENVOBJ) login.o krshd.o \
-	krlogind.o $(GETDOBJS)
+	krlogind.o $(DAEMONOBJ) $(GETDOBJ)
 
 UCB_RLOGIN = @UCB_RLOGIN@
 UCB_RSH = @UCB_RSH@
@@ -37,14 +38,14 @@
 	$(top_srcdir)/mkinstalldirs $(DESTDIR)$(CLIENT_BINDIR)
 	$(top_srcdir)/mkinstalldirs $(DESTDIR)$(CLIENT_MANDIR)
 
-rsh: krsh.o kcmd.o forward.o $(SETENVOBJ) $(GETDOBJS)
-	$(CC_LINK) -o rsh krsh.o kcmd.o forward.o $(SETENVOBJ) $(GETDOBJS) $(KRB5_BASE_LIBS) $(LIBS)
+rsh: krsh.o kcmd.o forward.o $(SETENVOBJ) $(GETDOBJ)
+	$(CC_LINK) -o rsh krsh.o kcmd.o forward.o $(SETENVOBJ) $(GETDOBJ) $(KRB5_BASE_LIBS) $(LIBS)
 
-rcp: krcp.o kcmd.o forward.o $(SETENVOBJ) $(GETDOBJS)
-	$(CC_LINK) -o rcp krcp.o kcmd.o forward.o $(SETENVOBJ) $(GETDOBJS) $(KRB5_BASE_LIBS) $(LIBS)
+rcp: krcp.o kcmd.o forward.o $(SETENVOBJ) $(GETDOBJ)
+	$(CC_LINK) -o rcp krcp.o kcmd.o forward.o $(SETENVOBJ) $(GETDOBJ) $(KRB5_BASE_LIBS) $(LIBS)
 
-rlogin: krlogin.o kcmd.o forward.o $(SETENVOBJ) $(GETDOBJS)
-	$(CC_LINK) -o rlogin krlogin.o kcmd.o forward.o $(SETENVOBJ) $(GETDOBJS) $(KRB5_BASE_LIBS) $(LIBS)
+rlogin: krlogin.o kcmd.o forward.o $(SETENVOBJ) $(GETDOBJ)
+	$(CC_LINK) -o rlogin krlogin.o kcmd.o forward.o $(SETENVOBJ) $(GETDOBJ) $(KRB5_BASE_LIBS) $(LIBS)
 
 install::
 	for f in rsh rcp rlogin; do \
@@ -55,11 +56,11 @@
 	  ) || exit 1; \
 	done
 
-kshd: krshd.o kcmd.o forward.o $(SETENVOBJ) $(GETDOBJS) $(PTY_DEPLIB)
-	$(CC_LINK) -o kshd krshd.o kcmd.o forward.o $(SETENVOBJ) $(GETDOBJS) $(KRSHDLIBS) $(PTY_LIB) $(UTIL_LIB) $(KRB5_BASE_LIBS) $(LIBS)
+kshd: krshd.o kcmd.o forward.o $(SETENVOBJ) $(GETDOBJ) $(PTY_DEPLIB)
+	$(CC_LINK) -o kshd krshd.o kcmd.o forward.o $(SETENVOBJ) $(GETDOBJ) $(KRSHDLIBS) $(PTY_LIB) $(UTIL_LIB) $(KRB5_BASE_LIBS) $(LIBS)
 
-klogind: krlogind.o kcmd.o forward.o $(SETENVOBJ) $(GETDOBJS) $(PTY_DEPLIB)
-	$(CC_LINK) -o klogind krlogind.o  kcmd.o forward.o $(SETENVOBJ) $(GETDOBJS) $(PTY_LIB) $(UTIL_LIB) $(KRB5_BASE_LIBS) $(LIBS)
+klogind: krlogind.o kcmd.o forward.o $(SETENVOBJ) $(DAEMONOBJ) $(GETDOBJ) $(PTY_DEPLIB)
+	$(CC_LINK) -o klogind krlogind.o kcmd.o forward.o $(SETENVOBJ) $(DAEMONOBJ) $(GETDOBJ) $(PTY_LIB) $(UTIL_LIB) $(KRB5_BASE_LIBS) $(LIBS)
 
 install::
 	for f in kshd klogind; do \
@@ -73,8 +74,8 @@
 # No program name transformation is done with login.krb5 since it is directly
 # referenced by klogind.
 #
-login.krb5: login.o  $(SETENVOBJ) $(GETDOBJS) $(PTY_DEPLIB)
-	$(CC_LINK) -o login.krb5 login.o $(SETENVOBJ) $(GETDOBJS) $(LOGINLIBS) $(PTY_LIB) $(KRB5_BASE_LIBS) $(LIBS)
+login.krb5: login.o  $(SETENVOBJ) $(GETDOBJ) $(PTY_DEPLIB)
+	$(CC_LINK) -o login.krb5 login.o $(SETENVOBJ) $(GETDOBJ) $(LOGINLIBS) $(PTY_LIB) $(KRB5_BASE_LIBS) $(LIBS)
 
 install::
 	$(INSTALL_PROGRAM) login.krb5 $(DESTDIR)$(SERVER_BINDIR)/login.krb5

Added: trunk/bsd/daemon.c
===================================================================
--- trunk/bsd/daemon.c	2009-07-09 16:05:56 UTC (rev 3256)
+++ trunk/bsd/daemon.c	2009-07-09 16:17:29 UTC (rev 3257)
@@ -0,0 +1,96 @@
+/*-
+ * Copyright (c) 1990 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *	This product includes software developed by the University of
+ *	California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <autoconf.h>
+
+#include <fcntl.h>
+#include <sys/types.h>
+#include <sys/file.h>
+#include <unistd.h>
+#ifdef HAVE_PATHS_H
+#include <paths.h>
+#endif
+
+#ifndef _PATH_DEVNULL
+#define _PATH_DEVNULL "/dev/null"
+#endif
+
+int
+daemon(nochdir, noclose)
+	int nochdir, noclose;
+{
+	int cpid;
+
+	if ((cpid = fork()) == -1)
+		return (-1);
+	if (cpid)
+		exit(0);
+#ifdef HAVE_SETSID
+	(void) setsid();
+#else
+#ifndef TIOCNOTTY
+	setpgrp();
+#else
+	{
+		int n;
+	    
+		/*
+		 * The open below may hang on pseudo ttys if the person
+		 * who starts named logs out before this point.  Thus,
+		 * the need for the timer.
+		 */
+		alarm(120);
+		n = open("/dev/tty", O_RDWR);
+		alarm(0);
+		if (n > 0) {
+			(void) ioctl(n, TIOCNOTTY, (char *)NULL);
+			(void) close(n);
+		}
+	}
+#endif
+#endif
+	if (!nochdir)
+		(void) chdir("/");
+	if (!noclose) {
+		int devnull = open(_PATH_DEVNULL, O_RDWR, 0);
+
+		if (devnull != -1) {
+			(void) dup2(devnull, 0);
+			(void) dup2(devnull, 1);
+			(void) dup2(devnull, 2);
+			if (devnull > 2)
+				(void) close(devnull);
+		}
+	}
+	return (0);
+}

Modified: trunk/configure.ac
===================================================================
--- trunk/configure.ac	2009-07-09 16:05:56 UTC (rev 3256)
+++ trunk/configure.ac	2009-07-09 16:17:29 UTC (rev 3257)
@@ -104,6 +104,11 @@
 dnl AC_REPLACE_FUNCS for all of them.  This would require moving
 dnl getenv out of setenv.c or just punting it.
 
+dnl bsd defines daemon if it is not provided.
+DAEMONOBJ=
+AC_CHECK_FUNCS(daemon,, DAEMONOBJ=daemon.o)
+AC_SUBST(DAEMONOBJ)
+
 dnl ftpd and bsd define getdtablesize if it is not provided.
 GETDOBJ=
 AC_CHECK_FUNCS(getdtablesize,, GETDOBJ=getdtablesize.o)




More information about the Krb5-appl-commits mailing list