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