# PROP Intermediate_Dir ".\ApacheR"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "./include" /I "./os/win32" /I "./lib/apr/include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "SHARED_MODULE" /FD /c
+# ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "./include" /I "./os/win32" /I "./lib/apr/include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /FD /c
# SUBTRACT CPP /YX
# ADD BASE RSC /l 0x809 /d "NDEBUG"
# ADD RSC /l 0x809 /d "NDEBUG"
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 aprlib.lib ApacheCore.lib kernel32.lib advapi32.lib /nologo /subsystem:console /map /machine:I386 /libpath:"lib\apr\Release" /libpath:"CoreR"
-# ADD LINK32 aprlib.lib ApacheCore.lib kernel32.lib advapi32.lib user32.lib /nologo /subsystem:console /map /machine:I386 /libpath:"lib\apr\Release" /libpath:"CoreR"
+# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib ws2_32.lib mswsock.lib /nologo /subsystem:console /map /machine:I386
+# ADD LINK32 kernel32.lib user32.lib advapi32.lib ws2_32.lib mswsock.lib /nologo /subsystem:console /map /machine:I386
!ELSEIF "$(CFG)" == "Apache - Win32 Debug"
# PROP Intermediate_Dir ".\ApacheD"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "./include" /I "./os/win32" /I "./lib/apr/include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "SHARED_MODULE" /FD /c
+# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "./include" /I "./os/win32" /I "./lib/apr/include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /FD /c
# SUBTRACT CPP /YX
# ADD BASE RSC /l 0x809 /d "_DEBUG"
# ADD RSC /l 0x809 /d "_DEBUG"
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 aprlib.lib ApacheCore.lib kernel32.lib advapi32.lib /nologo /subsystem:console /map /debug /machine:I386 /libpath:"lib\apr\debug" /libpath:"CoreD"
-# ADD LINK32 aprlib.lib ApacheCore.lib kernel32.lib advapi32.lib user32.lib /nologo /subsystem:console /debug /machine:I386 /libpath:"lib\apr\debug" /libpath:"CoreD"
+# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib ws2_32.lib mswsock.lib /nologo /subsystem:console /map /debug /machine:I386
+# ADD LINK32 kernel32.lib user32.lib advapi32.lib ws2_32.lib mswsock.lib /nologo /subsystem:console /debug /machine:I386
# SUBTRACT LINK32 /incremental:no /map
!ENDIF
# Name "Apache - Win32 Release"
# Name "Apache - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
-# Begin Source File
-
-SOURCE=.\main\http_main.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\os\win32\main_win32.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\os\win32\registry.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\os\win32\service.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd"
-# Begin Source File
-
-SOURCE=.\OS\WIN32\main_win32.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\os\win32\registry.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\os\win32\service.h
-# End Source File
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
# Begin Source File
SOURCE=.\os\win32\apache.ico
# Begin Source File
SOURCE=.\os\win32\apache.rc
+# End Source File
+# Begin Source File
-!IF "$(CFG)" == "Apache - Win32 Release"
-
-!ELSEIF "$(CFG)" == "Apache - Win32 Debug"
-
-!ENDIF
-
+SOURCE=.\main\http_main.c
# End Source File
-# End Group
# End Target
# End Project
ap_run_http_method @394
ap_bread_core @395
ap_bwrite_core @396
- ap_mpm_init_complete @397
-
+
; Exclusively provided for http_main.c
ap_register_hooks @398
ap_prelinked_modules @399
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 aprlib.lib ap.lib pcreposix.lib pcre.lib kernel32.lib advapi32.lib ws2_32.lib mswsock.lib /nologo /subsystem:windows /dll /map /machine:I386 /libpath:"lib\apr\Release" /libpath:"regex\release" /libpath:"ap\Release" /base:@"os\win32\BaseAddr.ref",ApacheCore
-# ADD LINK32 kernel32.lib advapi32.lib ws2_32.lib mswsock.lib /nologo /subsystem:windows /dll /map /machine:I386 /base:@"os\win32\BaseAddr.ref",ApacheCore
+# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib ws2_32.lib mswsock.lib /nologo /subsystem:windows /dll /map /machine:I386 /base:@"os\win32\BaseAddr.ref",ApacheCore
+# ADD LINK32 kernel32.lib user32.lib advapi32.lib ws2_32.lib mswsock.lib /nologo /subsystem:windows /dll /map /machine:I386 /base:@"os\win32\BaseAddr.ref",ApacheCore
!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug"
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 aprlib.lib regex.lib ap.lib pcreposix.lib pcre.lib kernel32.lib advapi32.lib ws2_32.lib mswsock.lib /nologo /subsystem:windows /dll /map /debug /machine:I386 /libpath:"lib\apr\debug" /libpath:"regex\debug" /libpath:"ap\Debug" /base:@"os\win32\BaseAddr.ref",ApacheCore
-# ADD LINK32 aprlib.lib ap.lib pcre.lib pcreposix.lib kernel32.lib advapi32.lib ws2_32.lib mswsock.lib /nologo /subsystem:windows /dll /debug /machine:I386 /libpath:"lib\apr\debug" /libpath:"lib\pcre\LibD" /libpath:"ap\Debug" /base:@"os\win32\BaseAddr.ref",ApacheCore
+# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib ws2_32.lib mswsock.lib /nologo /subsystem:windows /dll /map /debug /machine:I386 /base:@"os\win32\BaseAddr.ref",ApacheCore
+# ADD LINK32 kernel32.lib user32.lib advapi32.lib ws2_32.lib mswsock.lib /nologo /subsystem:windows /dll /debug /machine:I386 /base:@"os\win32\BaseAddr.ref",ApacheCore
# SUBTRACT LINK32 /incremental:no /map
!ENDIF
# End Source File
# Begin Source File
+SOURCE=.\modules\mpm\winnt\registry.c
+# End Source File
+# Begin Source File
+
SOURCE=.\main\rfc1413.c
# End Source File
# Begin Source File
+SOURCE=.\modules\mpm\winnt\service.c
+# End Source File
+# Begin Source File
+
SOURCE=.\main\util.c
# End Source File
# Begin Source File
# End Source File
# Begin Source File
-SOURCE=.\modules\mpm\winnt\winnt.c
+SOURCE=.\modules\mpm\winnt\mpm_winnt.c
# End Source File
# End Group
# Begin Group "Header Files"
# End Source File
# Begin Source File
-SOURCE=.\modules\mpm\winnt\winnt.h
+SOURCE=.\modules\mpm\winnt\mpm_winnt.h
# End Source File
# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
-# End Group
# Begin Group "Generated Files"
# PROP Default_Filter ""
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 aprlib.lib ap.lib pcreposix.lib pcre.lib kernel32.lib advapi32.lib ws2_32.lib mswsock.lib /nologo /subsystem:windows /dll /map /machine:I386 /libpath:"lib\apr\Release" /libpath:"regex\release" /libpath:"ap\Release" /base:@"os\win32\BaseAddr.ref",ApacheCore
-# ADD LINK32 kernel32.lib advapi32.lib ws2_32.lib mswsock.lib /nologo /subsystem:windows /dll /map /machine:I386 /base:@"os\win32\BaseAddr.ref",ApacheCore
+# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib ws2_32.lib mswsock.lib /nologo /subsystem:windows /dll /map /machine:I386 /base:@"os\win32\BaseAddr.ref",ApacheCore
+# ADD LINK32 kernel32.lib user32.lib advapi32.lib ws2_32.lib mswsock.lib /nologo /subsystem:windows /dll /map /machine:I386 /base:@"os\win32\BaseAddr.ref",ApacheCore
!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug"
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 aprlib.lib regex.lib ap.lib pcreposix.lib pcre.lib kernel32.lib advapi32.lib ws2_32.lib mswsock.lib /nologo /subsystem:windows /dll /map /debug /machine:I386 /libpath:"lib\apr\debug" /libpath:"regex\debug" /libpath:"ap\Debug" /base:@"os\win32\BaseAddr.ref",ApacheCore
-# ADD LINK32 aprlib.lib ap.lib pcre.lib pcreposix.lib kernel32.lib advapi32.lib ws2_32.lib mswsock.lib /nologo /subsystem:windows /dll /debug /machine:I386 /libpath:"lib\apr\debug" /libpath:"lib\pcre\LibD" /libpath:"ap\Debug" /base:@"os\win32\BaseAddr.ref",ApacheCore
+# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib ws2_32.lib mswsock.lib /nologo /subsystem:windows /dll /map /debug /machine:I386 /base:@"os\win32\BaseAddr.ref",ApacheCore
+# ADD LINK32 kernel32.lib user32.lib advapi32.lib ws2_32.lib mswsock.lib /nologo /subsystem:windows /dll /debug /machine:I386 /base:@"os\win32\BaseAddr.ref",ApacheCore
# SUBTRACT LINK32 /incremental:no /map
!ENDIF
# End Source File
# Begin Source File
+SOURCE=.\modules\mpm\winnt\registry.c
+# End Source File
+# Begin Source File
+
SOURCE=.\main\rfc1413.c
# End Source File
# Begin Source File
+SOURCE=.\modules\mpm\winnt\service.c
+# End Source File
+# Begin Source File
+
SOURCE=.\main\util.c
# End Source File
# Begin Source File
# End Source File
# Begin Source File
-SOURCE=.\modules\mpm\winnt\winnt.c
+SOURCE=.\modules\mpm\winnt\mpm_winnt.c
# End Source File
# End Group
# Begin Group "Header Files"
# End Source File
# Begin Source File
-SOURCE=.\modules\mpm\winnt\winnt.h
+SOURCE=.\modules\mpm\winnt\mpm_winnt.h
# End Source File
# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
-# End Group
# Begin Group "Generated Files"
# PROP Default_Filter ""
ap_run_http_method @394
ap_bread_core @395
ap_bwrite_core @396
- ap_mpm_init_complete @397
-
+
; Exclusively provided for http_main.c
ap_register_hooks @398
ap_prelinked_modules @399
destroy_and_exit_process(process, 1);
}
-#ifdef WIN32
-int apache_main(int argc, char *argv[])
-#else
-API_EXPORT(int) main(int argc, char *argv[])
-#endif
+int main(int argc, char *argv[])
{
int c;
int configtestonly = 0;
module **mod;
ap_directive_t *conftree = NULL;
-#ifndef WIN32 /* done in main_win32.c */
ap_initialize();
-#endif
process = create_process(argc, (char *const *)argv);
pglobal = process->pool;
pconf = process->pconf;
}
else
{
- ap_log_error(APLOG_MARK,APLOG_ERR, APR_BADARG, NULL,
+ ap_log_error(APLOG_MARK,APLOG_ERR, 0, NULL,
"%s: No installed service by that name.", display_name);
exit(1);
}
{
if (service_named == APR_SUCCESS)
{
- ap_log_error(APLOG_MARK,APLOG_ERR, APR_BADARG, NULL,
+ ap_log_error(APLOG_MARK,APLOG_ERR, 0, NULL,
"%s: Service is already installed.", display_name);
exit(1);
}
// TODO: This Stinks - but we needed the ap_pid_fname entry from
// the config!?! Find a clean way to get the egg back into
// into the chicken and shove this signal into pre_config
+ //
+ // src/os/win32/main_win32.c had some (possibly buggy) code to
+ // search for just the PidFile entry, but this sounds like a
+ // universally useful function that we ought to wrap into the
+ // main server, not just the Win32 MPM.
+ //
if (!strcasecmp(signal_arg, "stop")) {
mpm_signal_service(ptemp, ap_pid_fname, 0);
exit(0);
if (restart_num++ == 1)
{
/* This code should be run once in the parent and not run
- * accross a restart
+ * across a restart
*/
PSECURITY_ATTRIBUTES sa = GetNullACL(); /* returns NULL if invalid (Win95?) */
setup_signal_names(ap_psprintf(pconf,"ap%d", parent_pid));
}
}
}
- else
+ else /* ! -k runservice */
+ {
mpm_start_console_handler();
-
+ }
/* Create the start mutex, apPID, where PID is the parent Apache process ID.
* Ths start mutex is used during a restart to prevent more than one
void mpm_start_console_handler(void)
{
+ // TODO: Win9x will ignore the CLOSE and SHUTDOWN events,
+ // we don't get to see them... possible solution in
+ // psdk docs "Reading Input Buffer Events", by using
+ // the menu item therein.
SetConsoleCtrlHandler(console_control_handler, TRUE);
atexit(stop_console_handler);
}
return FALSE;
}
-// TODO: We really need to play the RegisterServiceProcess game
-// if this is the child of the Win9x service process...
-// and if that isn't bad enought... a shutdown thread window
-// is really the ticket... ick.
-
static void stop_child_console_handler(void)
{
SetConsoleCtrlHandler(child_control_handler, FALSE);
void mpm_start_child_console_handler(void)
{
- SetConsoleCtrlHandler(child_control_handler, TRUE);
- atexit(stop_child_console_handler);
+ if (osver.dwPlatformId == VER_PLATFORM_WIN32_NT) {
+ FreeConsole();
+ }
+ else
+ {
+ // TODO: We really need to play the RegisterServiceProcess
+ // game if this is the child of a Win9x service process
+ // We also have a huge problem here. This won't handle
+ // the close window, but if we FreeConsole() to detach,
+ // the Win9x console will ALWAYS close. ick.
+ SetConsoleCtrlHandler(child_control_handler, TRUE);
+ atexit(stop_child_console_handler);
+ }
}