summaryrefslogtreecommitdiffstats
path: root/service-win32/service.patch
diff options
context:
space:
mode:
Diffstat (limited to 'service-win32/service.patch')
-rwxr-xr-xservice-win32/service.patch359
1 files changed, 0 insertions, 359 deletions
diff --git a/service-win32/service.patch b/service-win32/service.patch
deleted file mode 100755
index 8e4ddf9..0000000
--- a/service-win32/service.patch
+++ /dev/null
@@ -1,359 +0,0 @@
---- service.c.orig Tue Apr 24 14:49:30 2007
-+++ service.c Tue Apr 24 12:20:08 2007
-@@ -16,6 +16,7 @@
- service_main(DWORD dwArgc, LPTSTR *lpszArgv);
- CmdInstallService();
- CmdRemoveService();
-+ CmdStartService();
- CmdDebugService(int argc, char **argv);
- ControlHandler ( DWORD dwCtrlType );
- GetLastErrorText( LPTSTR lpszBuf, DWORD dwSize );
-@@ -40,8 +41,9 @@
- // internal function prototypes
- VOID WINAPI service_ctrl(DWORD dwCtrlCode);
- VOID WINAPI service_main(DWORD dwArgc, LPTSTR *lpszArgv);
--VOID CmdInstallService();
--VOID CmdRemoveService();
-+int CmdInstallService();
-+int CmdRemoveService();
-+int CmdStartService();
- VOID CmdDebugService(int argc, char **argv);
- BOOL WINAPI ControlHandler ( DWORD dwCtrlType );
- LPTSTR GetLastErrorText( LPTSTR lpszBuf, DWORD dwSize );
-@@ -64,7 +66,7 @@
- // main service thread. When the this call returns,
- // the service has stopped, so exit.
- //
--void __cdecl main(int argc, char **argv)
-+int __cdecl main(int argc, char **argv)
- {
- SERVICE_TABLE_ENTRY dispatchTable[] =
- {
-@@ -77,11 +79,15 @@
- {
- if ( _stricmp( "install", argv[1]+1 ) == 0 )
- {
-- CmdInstallService();
-+ return CmdInstallService();
- }
- else if ( _stricmp( "remove", argv[1]+1 ) == 0 )
- {
-- CmdRemoveService();
-+ return CmdRemoveService();
-+ }
-+ else if ( _stricmp( "start", argv[1]+1 ) == 0)
-+ {
-+ return CmdStartService();
- }
- else if ( _stricmp( "debug", argv[1]+1 ) == 0 )
- {
-@@ -92,7 +98,7 @@
- {
- goto dispatch;
- }
-- exit(0);
-+ return 0;
- }
-
- // if it doesn't match any of the above parameters
-@@ -101,13 +107,16 @@
- dispatch:
- // this is just to be friendly
- printf( "%s -install to install the service\n", SZAPPNAME );
-+ printf( "%s -start to start the service\n", SZAPPNAME );
- printf( "%s -remove to remove the service\n", SZAPPNAME );
- printf( "%s -debug <params> to run as a console app for debugging\n", SZAPPNAME );
- printf( "\nStartServiceCtrlDispatcher being called.\n" );
- printf( "This may take several seconds. Please wait.\n" );
-
- if (!StartServiceCtrlDispatcher(dispatchTable))
-- AddToMessageLog(TEXT("StartServiceCtrlDispatcher failed."));
-+ AddToMessageLog(MSG_FLAGS_ERROR, TEXT("StartServiceCtrlDispatcher failed."));
-+
-+ return 0;
- }
-
-
-@@ -267,7 +276,7 @@
- //
- if (!(fResult = SetServiceStatus( sshStatusHandle, &ssStatus)))
- {
-- AddToMessageLog(TEXT("SetServiceStatus"));
-+ AddToMessageLog(MSG_FLAGS_ERROR, TEXT("SetServiceStatus"));
- }
- }
- return fResult;
-@@ -288,28 +297,33 @@
- //
- // COMMENTS:
- //
--VOID AddToMessageLog(LPTSTR lpszMsg)
-+void AddToMessageLog(DWORD flags, LPTSTR lpszMsg)
- {
- TCHAR szMsg [(sizeof(SZSERVICENAME) / sizeof(TCHAR)) + 100 ];
- HANDLE hEventSource;
-- LPTSTR lpszStrings[2];
-+ LPCSTR lpszStrings[2];
-
- if ( !bDebug )
- {
-+ if (flags & MSG_FLAGS_SYS_CODE)
- dwErr = GetLastError();
-+ else
-+ dwErr = 0;
-
- // Use event logging to log the error.
- //
- hEventSource = RegisterEventSource(NULL, TEXT(SZSERVICENAME));
-
-- _stprintf(szMsg, TEXT("%s error: %d"), TEXT(SZSERVICENAME), dwErr);
-+ _stprintf(szMsg, TEXT("%s error: %d"), TEXT(SZSERVICENAME), (int)dwErr);
- lpszStrings[0] = szMsg;
- lpszStrings[1] = lpszMsg;
-
- if (hEventSource != NULL)
- {
- ReportEvent(hEventSource, // handle of event source
-- EVENTLOG_ERROR_TYPE, // event type
-+ // event type
-+ (flags & MSG_FLAGS_ERROR)
-+ ? EVENTLOG_ERROR_TYPE : EVENTLOG_INFORMATION_TYPE,
- 0, // event category
- 0, // event ID
- NULL, // current user's SID
-@@ -323,8 +337,10 @@
- }
- }
-
--
--
-+void ResetError (void)
-+{
-+ dwErr = 0;
-+}
-
- ///////////////////////////////////////////////////////////////////
- //
-@@ -341,21 +357,23 @@
- // none
- //
- // RETURN VALUE:
--// none
-+// 0 if success
- //
- // COMMENTS:
- //
--void CmdInstallService()
-+int CmdInstallService()
- {
- SC_HANDLE schService;
- SC_HANDLE schSCManager;
-
- TCHAR szPath[512];
-
-+ int ret = 0;
-+
- if ( GetModuleFileName( NULL, szPath, 512 ) == 0 )
- {
- _tprintf(TEXT("Unable to install %s - %s\n"), TEXT(SZSERVICEDISPLAYNAME), GetLastErrorText(szErr, 256));
-- return;
-+ return 1;
- }
-
- schSCManager = OpenSCManager(
-@@ -371,7 +389,7 @@
- TEXT(SZSERVICEDISPLAYNAME), // name to display
- SERVICE_QUERY_STATUS, // desired access
- SERVICE_WIN32_OWN_PROCESS, // service type
-- SERVICE_DEMAND_START, // start type
-+ SERVICE_DEMAND_START, // start type -- alternative: SERVICE_AUTO_START
- SERVICE_ERROR_NORMAL, // error control type
- szPath, // service's binary
- NULL, // no load ordering group
-@@ -388,16 +406,79 @@
- else
- {
- _tprintf(TEXT("CreateService failed - %s\n"), GetLastErrorText(szErr, 256));
-+ ret = 1;
- }
-
- CloseServiceHandle(schSCManager);
- }
- else
-+ {
- _tprintf(TEXT("OpenSCManager failed - %s\n"), GetLastErrorText(szErr,256));
-+ ret = 1;
-+ }
-+ return ret;
- }
-
-+//
-+// FUNCTION: CmdStartService()
-+//
-+// PURPOSE: Start the service
-+//
-+// PARAMETERS:
-+// none
-+//
-+// RETURN VALUE:
-+// 0 if success
-+//
-+// COMMENTS:
-+
-+int CmdStartService()
-+{
-+ int ret = 0;
-+
-+ SC_HANDLE schSCManager;
-+ SC_HANDLE schService;
-
-
-+ // Open a handle to the SC Manager database.
-+ schSCManager = OpenSCManager(
-+ NULL, // local machine
-+ NULL, // ServicesActive database
-+ SC_MANAGER_ALL_ACCESS); // full access rights
-+
-+ if (NULL == schSCManager) {
-+ _tprintf(TEXT("OpenSCManager failed - %s\n"), GetLastErrorText(szErr,256));
-+ ret = 1;
-+ }
-+
-+ schService = OpenService(
-+ schSCManager, // SCM database
-+ SZSERVICENAME, // service name
-+ SERVICE_ALL_ACCESS);
-+
-+ if (schService == NULL) {
-+ _tprintf(TEXT("OpenService failed - %s\n"), GetLastErrorText(szErr,256));
-+ ret = 1;
-+ }
-+
-+ if (!StartService(
-+ schService, // handle to service
-+ 0, // number of arguments
-+ NULL) ) // no arguments
-+ {
-+ _tprintf(TEXT("StartService failed - %s\n"), GetLastErrorText(szErr,256));
-+ ret = 1;
-+ }
-+ else
-+ {
-+ _tprintf(TEXT("Service Started\n"));
-+ ret = 0;
-+ }
-+ CloseServiceHandle(schService);
-+ CloseServiceHandle(schSCManager);
-+ return ret;
-+}
-+
- //
- // FUNCTION: CmdRemoveService()
- //
-@@ -407,15 +488,17 @@
- // none
- //
- // RETURN VALUE:
--// none
-+// 0 if success
- //
- // COMMENTS:
- //
--void CmdRemoveService()
-+int CmdRemoveService()
- {
- SC_HANDLE schService;
- SC_HANDLE schSCManager;
-
-+ int ret = 0;
-+
- schSCManager = OpenSCManager(
- NULL, // machine (NULL == local)
- NULL, // database (NULL == default)
-@@ -447,7 +530,10 @@
- if ( ssStatus.dwCurrentState == SERVICE_STOPPED )
- _tprintf(TEXT("\n%s stopped.\n"), TEXT(SZSERVICEDISPLAYNAME) );
- else
-+ {
- _tprintf(TEXT("\n%s failed to stop.\n"), TEXT(SZSERVICEDISPLAYNAME) );
-+ ret = 1;
-+ }
-
- }
-
-@@ -455,18 +541,28 @@
- if ( DeleteService(schService) )
- _tprintf(TEXT("%s removed.\n"), TEXT(SZSERVICEDISPLAYNAME) );
- else
-+ {
- _tprintf(TEXT("DeleteService failed - %s\n"), GetLastErrorText(szErr,256));
-+ ret = 1;
-+ }
-
-
- CloseServiceHandle(schService);
- }
- else
-+ {
- _tprintf(TEXT("OpenService failed - %s\n"), GetLastErrorText(szErr,256));
-+ ret = 1;
-+ }
-
- CloseServiceHandle(schSCManager);
- }
- else
-+ {
- _tprintf(TEXT("OpenSCManager failed - %s\n"), GetLastErrorText(szErr,256));
-+ ret = 1;
-+ }
-+ return ret;
- }
-
-
-@@ -587,7 +683,7 @@
- else
- {
- lpszTemp[lstrlen(lpszTemp)-2] = TEXT('\0'); //remove cr and newline character
-- _stprintf( lpszBuf, TEXT("%s (0x%x)"), lpszTemp, GetLastError() );
-+ _stprintf( lpszBuf, TEXT("%s (0x%x)"), lpszTemp, (int)GetLastError() );
- }
-
- if ( lpszTemp )
---- service.h.orig Tue Apr 24 14:49:30 2007
-+++ service.h Tue Apr 24 11:58:48 2007
-@@ -57,18 +57,19 @@
- extern "C" {
- #endif
-
-+#include "../autodefs/defs.h"
-
- //////////////////////////////////////////////////////////////////////////////
- //// todo: change to desired strings
- ////
- // name of the executable
--#define SZAPPNAME "Simple"
-+#define SZAPPNAME PRODUCT_UNIX_NAME "serv"
- // internal name of the service
--#define SZSERVICENAME "SimpleService"
-+#define SZSERVICENAME PRODUCT_NAME "Service"
- // displayed name of the service
--#define SZSERVICEDISPLAYNAME "Simple Service"
-+#define SZSERVICEDISPLAYNAME PRODUCT_NAME " Service"
- // list of service dependencies - "dep1\0dep2\0\0"
--#define SZDEPENDENCIES ""
-+#define SZDEPENDENCIES PRODUCT_TAP_ID "\0Dhcp\0\0"
- //////////////////////////////////////////////////////////////////////////////
-
-
-@@ -126,7 +127,10 @@
- // RETURN VALUE:
- // none
- //
-- void AddToMessageLog(LPTSTR lpszMsg);
-+# define MSG_FLAGS_ERROR (1<<0)
-+# define MSG_FLAGS_SYS_CODE (1<<1)
-+ void AddToMessageLog(DWORD flags, LPTSTR lpszMsg);
-+ void ResetError (void);
- //////////////////////////////////////////////////////////////////////////////
-
-