]> git.ipfire.org Git - thirdparty/openssh-portable.git/commitdiff
[contrib/cygwin/README, openbsd-compat/bsd-cygwin_util.c,
authorTim Rice <tim@multitalents.net>
Tue, 27 Nov 2001 01:19:43 +0000 (17:19 -0800)
committerTim Rice <tim@multitalents.net>
Tue, 27 Nov 2001 01:19:43 +0000 (17:19 -0800)
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>

ChangeLog
configure.ac
contrib/cygwin/README
openbsd-compat/bsd-cygwin_util.c
openbsd-compat/bsd-cygwin_util.h
openbsd-compat/daemon.c

index 29dd784137ec8e4b74c37e103e742b2ffcf16d40..6a7b4ccb504c493c515f819be10980568fe00ae9 100644 (file)
--- 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@
  - 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 $
index e1844eb56aa1c2b6ba3792e5893b6b39027934dd..d86a2062deaae8398989752412a3c1db5f7100f1 100644 (file)
@@ -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
index dfe17867927512cdc340baba7716c86a970ffd2f..7f7f9a33c33c33b78a1d920a6093147cb154125e 100644 (file)
@@ -1,5 +1,13 @@
 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:
 
@@ -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.
 
index 87f36c0cbcbdbf0c4329dd422b11b04f94c70eee..6d6aafa4ff17c331677cb102836b868bf095fa90 100644 (file)
@@ -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 */
index 7879501e0272f21648bd26aaed40073af5f6e05a..24063d3119f37d6ed39a00236d2c685217762c4e 100644 (file)
@@ -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
index f704a9048ed4076628579acaa0e0a1093f3afe0c..7d23b2467b949ee2cc2776ee362a16f9df49c919 100644 (file)
@@ -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