summaryrefslogtreecommitdiff
path: root/openbsd-compat
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 /openbsd-compat
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>
Diffstat (limited to 'openbsd-compat')
-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
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
18RCSID("$Id: bsd-cygwin_util.c,v 1.5 2001/07/18 16:19:49 mouring Exp $"); 18RCSID("$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
142void 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, ...);
26int binary_pipe(int fd[2]); 26int binary_pipe(int fd[2]);
27int check_nt_auth(int pwd_authenticated, uid_t uid); 27int check_nt_auth(int pwd_authenticated, uid_t uid);
28int check_ntsec(const char *filename); 28int check_ntsec(const char *filename);
29void 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