summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTim Rice <tim@multitalents.net>2001-11-26 17:19:43 -0800
committerTim Rice <tim@multitalents.net>2001-11-26 17:19:43 -0800
commitfe1d100ffdf3595f3aaddc02efbf0b49a265d90c (patch)
treeb2657508f6c2bec9b1912d6dc8d881895572db37
parentf7c6f95682684856db063d104be88a6e3b22a828 (diff)
[contrib/cygwin/README, openbsd-compat/bsd-cygwin_util.c,
openbsd-compat/bsd-cygwin_util.h, openbsd-compat/daemon.c] Allow SSHD to install as service under WIndows 9x/Me [configure.ac] Fix to allow linking against PCRE on Cygwin Patches by Corinna Vinschen <vinschen@redhat.com>
-rw-r--r--ChangeLog9
-rw-r--r--configure.ac45
-rw-r--r--contrib/cygwin/README14
-rw-r--r--openbsd-compat/bsd-cygwin_util.c24
-rw-r--r--openbsd-compat/bsd-cygwin_util.h3
-rw-r--r--openbsd-compat/daemon.c3
6 files changed, 81 insertions, 17 deletions
diff --git a/ChangeLog b/ChangeLog
index 29dd7841..6a7b4ccb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+20011126
+ - (tim) [contrib/cygwin/README, openbsd-compat/bsd-cygwin_util.c,
+ openbsd-compat/bsd-cygwin_util.h, openbsd-compat/daemon.c]
+ Allow SSHD to install as service under WIndows 9x/Me
+ [configure.ac] Fix to allow linking against PCRE on Cygwin
+ Patches by Corinna Vinschen <vinschen@redhat.com>
+
20011115
- (djm) Fix IPv4 default in ssh-keyscan. Spotted by Dan Astoorian
<djast@cs.toronto.edu> Fix from markus@
@@ -6912,4 +6919,4 @@
- Wrote replacements for strlcpy and mkdtemp
- Released 1.0pre1
-$Id: ChangeLog,v 1.1665 2001/11/15 12:16:50 djm Exp $
+$Id: ChangeLog,v 1.1666 2001/11/27 01:19:43 tim Exp $
diff --git a/configure.ac b/configure.ac
index e1844eb5..d86a2062 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,4 +1,4 @@
-# $Id: configure.ac,v 1.4 2001/11/03 19:09:33 tim Exp $
+# $Id: configure.ac,v 1.5 2001/11/27 01:19:43 tim Exp $
AC_INIT
AC_CONFIG_SRCDIR([ssh.c])
@@ -65,7 +65,7 @@ case "$host" in
AC_DEFINE(DISABLE_LASTLOG)
;;
*-*-cygwin*)
- LIBS="$LIBS -lregex /usr/lib/textmode.o"
+ LIBS="$LIBS /usr/lib/textmode.o"
AC_DEFINE(HAVE_CYGWIN)
AC_DEFINE(USE_PIPES)
AC_DEFINE(DISABLE_SHADOW)
@@ -401,18 +401,43 @@ AC_CHECK_LIB(z, deflate, ,AC_MSG_ERROR([*** zlib missing - please install first
# We don't want to check if we did an pcre override.
if test -z "$no_comp_check" ; then
AC_CHECK_FUNC(regcomp,
- [ AC_DEFINE(HAVE_REGCOMP)],
[
- AC_CHECK_LIB(pcre, pcre_info,
+ AC_CHECK_FUNC(regsub,
+ [
+ has_regcomp=no
+ ],
+ [
+ AC_DEFINE(HAVE_REGCOMP)
+ has_regcomp=yes
+ ]
+ )
+ ],
+ [
+ has_regcomp=no
+ ]
+ )
+ # Either regcomp wasn't defined or regsub is defined (which means
+ # that the libc regex is probably an old non-POSIX implementation.
+ # Now check for -lregex and -lpcreposix to find some usable regex
+ # implementation.
+ if test "$has_regcomp" = "no" ; then
+ AC_CHECK_LIB(regex, regcomp,
[
- AC_DEFINE(HAVE_LIBPCRE)
- LIBS="$LIBS -lpcreposix -lpcre"
+ AC_DEFINE(HAVE_REGCOMP)
+ LIBS="$LIBS -lregex"
],
[
- AC_MSG_ERROR([*** No regex library found.])
- ])
- ]
- )
+ AC_CHECK_LIB(pcre, pcre_info,
+ [
+ AC_DEFINE(HAVE_LIBPCRE)
+ LIBS="$LIBS -lpcreposix -lpcre"
+ ],
+ [
+ AC_MSG_ERROR([*** No regex library found.])
+ ])
+ ]
+ )
+ fi
fi
dnl UnixWare 2.x
diff --git a/contrib/cygwin/README b/contrib/cygwin/README
index dfe17867..7f7f9a33 100644
--- a/contrib/cygwin/README
+++ b/contrib/cygwin/README
@@ -1,6 +1,14 @@
This package is the actual port of OpenSSH to Cygwin 1.3.
===========================================================================
+Important change since 3.0.1p1-2:
+
+This version introduces the ability to register sshd as service on
+Windows 9x/Me systems. This is done only when the options -D and/or
+-d are not given.
+===========================================================================
+
+===========================================================================
Important change since 2.9p2:
Since Cygwin is able to switch user context without password beginning
@@ -162,12 +170,10 @@ configure are used for the Cygwin binary distribution:
--prefix=/usr \
--sysconfdir=/etc \
- --libexecdir='${exec_prefix}/sbin \
- --with-pcre
+ --libexecdir='${exec_prefix}/sbin'
You must have installed the zlib, openssl and regex packages to
-be able to build OpenSSH! The `--with-pcre' option requires
-the installation of the pcre package.
+be able to build OpenSSH!
Please send requests, error reports etc. to cygwin@cygwin.com.
diff --git a/openbsd-compat/bsd-cygwin_util.c b/openbsd-compat/bsd-cygwin_util.c
index 87f36c0c..6d6aafa4 100644
--- a/openbsd-compat/bsd-cygwin_util.c
+++ b/openbsd-compat/bsd-cygwin_util.c
@@ -15,7 +15,7 @@
#include "includes.h"
-RCSID("$Id: bsd-cygwin_util.c,v 1.5 2001/07/18 16:19:49 mouring Exp $");
+RCSID("$Id: bsd-cygwin_util.c,v 1.6 2001/11/27 01:19:44 tim Exp $");
#ifdef HAVE_CYGWIN
@@ -139,4 +139,26 @@ int check_ntsec(const char *filename)
return 0;
}
+void register_9x_service(void)
+{
+ HINSTANCE kerneldll;
+ DWORD (*RegisterServiceProcess)(DWORD, DWORD);
+
+ /* The service register mechanism in 9x/Me is pretty different from
+ * NT/2K/XP. In NT/2K/XP we're using a special service starter
+ * application to register and control sshd as service. This method
+ * doesn't play nicely with 9x/Me. For that reason we register here
+ * as service when running under 9x/Me. This function is only called
+ * by the child sshd when it's going to daemonize.
+ */
+ if (is_winnt)
+ return;
+ if (! (kerneldll = LoadLibrary("KERNEL32.DLL")))
+ return;
+ if (! (RegisterServiceProcess = (DWORD (*)(DWORD, DWORD))
+ GetProcAddress(kerneldll, "RegisterServiceProcess")))
+ return;
+ RegisterServiceProcess(0, 1);
+}
+
#endif /* HAVE_CYGWIN */
diff --git a/openbsd-compat/bsd-cygwin_util.h b/openbsd-compat/bsd-cygwin_util.h
index 7879501e..24063d31 100644
--- a/openbsd-compat/bsd-cygwin_util.h
+++ b/openbsd-compat/bsd-cygwin_util.h
@@ -13,7 +13,7 @@
* binary mode on Windows systems.
*/
-/* $Id: bsd-cygwin_util.h,v 1.4 2001/04/13 14:28:43 djm Exp $ */
+/* $Id: bsd-cygwin_util.h,v 1.5 2001/11/27 01:19:44 tim Exp $ */
#ifndef _BSD_CYGWIN_UTIL_H
#define _BSD_CYGWIN_UTIL_H
@@ -26,6 +26,7 @@ int binary_open(const char *filename, int flags, ...);
int binary_pipe(int fd[2]);
int check_nt_auth(int pwd_authenticated, uid_t uid);
int check_ntsec(const char *filename);
+void register_9x_service(void);
#define open binary_open
#define pipe binary_pipe
diff --git a/openbsd-compat/daemon.c b/openbsd-compat/daemon.c
index f704a904..7d23b246 100644
--- a/openbsd-compat/daemon.c
+++ b/openbsd-compat/daemon.c
@@ -49,6 +49,9 @@ daemon(nochdir, noclose)
case -1:
return (-1);
case 0:
+#ifdef HAVE_CYGWIN
+ register_9x_service();
+#endif
break;
default:
#ifdef HAVE_CYGWIN