diff options
author | Tim Rice <tim@multitalents.net> | 2001-11-26 17:19:43 -0800 |
---|---|---|
committer | Tim Rice <tim@multitalents.net> | 2001-11-26 17:19:43 -0800 |
commit | fe1d100ffdf3595f3aaddc02efbf0b49a265d90c (patch) | |
tree | b2657508f6c2bec9b1912d6dc8d881895572db37 /openbsd-compat | |
parent | f7c6f95682684856db063d104be88a6e3b22a828 (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>
Diffstat (limited to 'openbsd-compat')
-rw-r--r-- | openbsd-compat/bsd-cygwin_util.c | 24 | ||||
-rw-r--r-- | openbsd-compat/bsd-cygwin_util.h | 3 | ||||
-rw-r--r-- | openbsd-compat/daemon.c | 3 |
3 files changed, 28 insertions, 2 deletions
diff --git a/openbsd-compat/bsd-cygwin_util.c b/openbsd-compat/bsd-cygwin_util.c index 87f36c0cb..6d6aafa4f 100644 --- a/openbsd-compat/bsd-cygwin_util.c +++ b/openbsd-compat/bsd-cygwin_util.c | |||
@@ -15,7 +15,7 @@ | |||
15 | 15 | ||
16 | #include "includes.h" | 16 | #include "includes.h" |
17 | 17 | ||
18 | RCSID("$Id: bsd-cygwin_util.c,v 1.5 2001/07/18 16:19:49 mouring Exp $"); | 18 | RCSID("$Id: bsd-cygwin_util.c,v 1.6 2001/11/27 01:19:44 tim Exp $"); |
19 | 19 | ||
20 | #ifdef HAVE_CYGWIN | 20 | #ifdef HAVE_CYGWIN |
21 | 21 | ||
@@ -139,4 +139,26 @@ int check_ntsec(const char *filename) | |||
139 | return 0; | 139 | return 0; |
140 | } | 140 | } |
141 | 141 | ||
142 | void register_9x_service(void) | ||
143 | { | ||
144 | HINSTANCE kerneldll; | ||
145 | DWORD (*RegisterServiceProcess)(DWORD, DWORD); | ||
146 | |||
147 | /* The service register mechanism in 9x/Me is pretty different from | ||
148 | * NT/2K/XP. In NT/2K/XP we're using a special service starter | ||
149 | * application to register and control sshd as service. This method | ||
150 | * doesn't play nicely with 9x/Me. For that reason we register here | ||
151 | * as service when running under 9x/Me. This function is only called | ||
152 | * by the child sshd when it's going to daemonize. | ||
153 | */ | ||
154 | if (is_winnt) | ||
155 | return; | ||
156 | if (! (kerneldll = LoadLibrary("KERNEL32.DLL"))) | ||
157 | return; | ||
158 | if (! (RegisterServiceProcess = (DWORD (*)(DWORD, DWORD)) | ||
159 | GetProcAddress(kerneldll, "RegisterServiceProcess"))) | ||
160 | return; | ||
161 | RegisterServiceProcess(0, 1); | ||
162 | } | ||
163 | |||
142 | #endif /* HAVE_CYGWIN */ | 164 | #endif /* HAVE_CYGWIN */ |
diff --git a/openbsd-compat/bsd-cygwin_util.h b/openbsd-compat/bsd-cygwin_util.h index 7879501e0..24063d311 100644 --- a/openbsd-compat/bsd-cygwin_util.h +++ b/openbsd-compat/bsd-cygwin_util.h | |||
@@ -13,7 +13,7 @@ | |||
13 | * binary mode on Windows systems. | 13 | * binary mode on Windows systems. |
14 | */ | 14 | */ |
15 | 15 | ||
16 | /* $Id: bsd-cygwin_util.h,v 1.4 2001/04/13 14:28:43 djm Exp $ */ | 16 | /* $Id: bsd-cygwin_util.h,v 1.5 2001/11/27 01:19:44 tim Exp $ */ |
17 | 17 | ||
18 | #ifndef _BSD_CYGWIN_UTIL_H | 18 | #ifndef _BSD_CYGWIN_UTIL_H |
19 | #define _BSD_CYGWIN_UTIL_H | 19 | #define _BSD_CYGWIN_UTIL_H |
@@ -26,6 +26,7 @@ int binary_open(const char *filename, int flags, ...); | |||
26 | int binary_pipe(int fd[2]); | 26 | int binary_pipe(int fd[2]); |
27 | int check_nt_auth(int pwd_authenticated, uid_t uid); | 27 | int check_nt_auth(int pwd_authenticated, uid_t uid); |
28 | int check_ntsec(const char *filename); | 28 | int check_ntsec(const char *filename); |
29 | void register_9x_service(void); | ||
29 | 30 | ||
30 | #define open binary_open | 31 | #define open binary_open |
31 | #define pipe binary_pipe | 32 | #define pipe binary_pipe |
diff --git a/openbsd-compat/daemon.c b/openbsd-compat/daemon.c index f704a9048..7d23b2467 100644 --- a/openbsd-compat/daemon.c +++ b/openbsd-compat/daemon.c | |||
@@ -49,6 +49,9 @@ daemon(nochdir, noclose) | |||
49 | case -1: | 49 | case -1: |
50 | return (-1); | 50 | return (-1); |
51 | case 0: | 51 | case 0: |
52 | #ifdef HAVE_CYGWIN | ||
53 | register_9x_service(); | ||
54 | #endif | ||
52 | break; | 55 | break; |
53 | default: | 56 | default: |
54 | #ifdef HAVE_CYGWIN | 57 | #ifdef HAVE_CYGWIN |