RHSrvAny.c was using a mixture of 4 space indentation, and tabs with a width of 4. This commit rationalises the whitespace to use only 4 space indentation, and removes trailing whitespace. --- RHSrvAny/RHSrvAny.c | 537 ++++++++++++++++++++++++++-------------------------- RHSrvAny/RHSrvAny.h | 1 - RHSrvAny/resource.h | 2 +- 3 files changed, 269 insertions(+), 271 deletions(-) diff --git a/RHSrvAny/RHSrvAny.c b/RHSrvAny/RHSrvAny.c index 3d4c3b4..a28f973 100644 --- a/RHSrvAny/RHSrvAny.c +++ b/RHSrvAny/RHSrvAny.c @@ -1,4 +1,3 @@ -/* -*- Mode: C; tab-width: 4 -*- */ /* RHSrvAny - Turn any Windows program into a Windows service. * Written by Yuval Kashtan. * Copyright (C) 2010 Red Hat Inc. @@ -42,82 +41,82 @@ #define SVCNAME TEXT("RHSrvAny") -SERVICE_STATUS gSvcStatus; +SERVICE_STATUS gSvcStatus; HANDLE ghSvcStopEvent = NULL; -SERVICE_STATUS_HANDLE gSvcStatusHandle; +SERVICE_STATUS_HANDLE gSvcStatusHandle; VOID SvcInstall (void); -VOID WINAPI SvcCtrlHandler (DWORD); -VOID WINAPI SvcMain (DWORD, LPTSTR *); +VOID WINAPI SvcCtrlHandler (DWORD); +VOID WINAPI SvcMain (DWORD, LPTSTR *); VOID SvcReportEvent (LPTSTR); -VOID SvcInit (DWORD, LPTSTR *); +VOID SvcInit (DWORD, LPTSTR *); VOID ReportSvcStatus (DWORD, DWORD, DWORD); int main (int argc, char **a_argv) -{ +{ /* For compatibility with MinGW, see: - http://demosten-eng.blogspot.com/2008/08/mingw-and-unicode-support.html */ + http://demosten-eng.blogspot.com/2008/08/mingw-and-unicode-support.html */ TCHAR **argv; - argv = CommandLineToArgvW (GetCommandLineW (), &argc); - - SERVICE_TABLE_ENTRY DispatchTable[] = { - { - SVCNAME, - (LPSERVICE_MAIN_FUNCTION) SvcMain - }, - { NULL, NULL } - }; - - if( - lstrcmpi( - argv[1], - TEXT("install") - ) == 0 - ) { - SvcInstall(); - return EXIT_SUCCESS; - } - - if (!StartServiceCtrlDispatcher( DispatchTable )) - { - SvcReportEvent(TEXT("StartServiceCtrlDispatcher")); - return EXIT_FAILURE; + argv = CommandLineToArgvW (GetCommandLineW (), &argc); + + SERVICE_TABLE_ENTRY DispatchTable[] = { + { + SVCNAME, + (LPSERVICE_MAIN_FUNCTION) SvcMain + }, + { NULL, NULL } + }; + + if( + lstrcmpi( + argv[1], + TEXT("install") + ) == 0 + ) { + SvcInstall(); + return EXIT_SUCCESS; } - return EXIT_SUCCESS; -} + if (!StartServiceCtrlDispatcher( DispatchTable )) + { + SvcReportEvent(TEXT("StartServiceCtrlDispatcher")); + return EXIT_FAILURE; + } + + return EXIT_SUCCESS; +} -VOID +VOID SvcInstall() { - SC_HANDLE schSCManager; - SC_HANDLE schService; - TCHAR szPath[MAX_PATH]; - - if ( - !GetModuleFileName( - NULL, - szPath, - MAX_PATH - ) - ) { - printf("Cannot install service (%d)\n", (int) GetLastError()); - return; - } - - schSCManager = OpenSCManager( - NULL, - NULL, - SC_MANAGER_ALL_ACCESS - ); - + SC_HANDLE schSCManager; + SC_HANDLE schService; + TCHAR szPath[MAX_PATH]; + + if ( + !GetModuleFileName( + NULL, + szPath, + MAX_PATH + ) + ) { + printf("Cannot install service (%d)\n", (int) GetLastError()); + return; + } + + schSCManager = OpenSCManager( + NULL, + NULL, + SC_MANAGER_ALL_ACCESS + ); + if (NULL == schSCManager) { - printf("OpenSCManager failed (%d)\n", (int) GetLastError()); - return; + printf("OpenSCManager failed (%d)\n", (int) GetLastError()); + return; } - schService = CreateService ( + schService = CreateService ( schSCManager, SVCNAME, SVCNAME, @@ -131,212 +130,212 @@ SvcInstall() { NULL, NULL, NULL - ); - + ); + if (schService == NULL) { printf ( - "CreateService failed (%d)\n", - (int) GetLastError() - ); + "CreateService failed (%d)\n", + (int) GetLastError() + ); CloseServiceHandle (schSCManager); return; } - else { - printf("Service installed successfully\n"); - } + else { + printf("Service installed successfully\n"); + } - CloseServiceHandle (schService); + CloseServiceHandle (schService); CloseServiceHandle (schSCManager); } -VOID -WINAPI +VOID +WINAPI SvcMain ( - DWORD dwArgc, - LPTSTR *lpszArgv + DWORD dwArgc, + LPTSTR *lpszArgv ) { - gSvcStatusHandle = RegisterServiceCtrlHandler ( - SVCNAME, - SvcCtrlHandler - ); - - if (!gSvcStatusHandle) { - SvcReportEvent(TEXT("RegisterServiceCtrlHandler")); - return; - } - - gSvcStatus.dwServiceType = SERVICE_WIN32_OWN_PROCESS; - gSvcStatus.dwServiceSpecificExitCode = 0; - - ReportSvcStatus ( - SERVICE_START_PENDING, - NO_ERROR, - 3000 - ); - - SvcInit ( - dwArgc, - lpszArgv - ); + gSvcStatusHandle = RegisterServiceCtrlHandler ( + SVCNAME, + SvcCtrlHandler + ); + + if (!gSvcStatusHandle) { + SvcReportEvent(TEXT("RegisterServiceCtrlHandler")); + return; + } + + gSvcStatus.dwServiceType = SERVICE_WIN32_OWN_PROCESS; + gSvcStatus.dwServiceSpecificExitCode = 0; + + ReportSvcStatus ( + SERVICE_START_PENDING, + NO_ERROR, + 3000 + ); + + SvcInit ( + dwArgc, + lpszArgv + ); } BOOL RegistryRead ( - HKEY hHive, - wchar_t *szKeyPath, - wchar_t *szValue, - wchar_t *szData, - DWORD *nSize + HKEY hHive, + wchar_t *szKeyPath, + wchar_t *szValue, + wchar_t *szData, + DWORD *nSize ) { - HKEY hKey; - long lSuccess; - - lSuccess = RegOpenKey ( - hHive, - szKeyPath, - &hKey - ); - - if (lSuccess == ERROR_SUCCESS) { - lSuccess = RegQueryValueEx ( - hKey, - szValue, - NULL, - NULL, - (LPBYTE) szData, - nSize - ); - - if (lSuccess == ERROR_SUCCESS) { - return (TRUE); - } - } - - return (FALSE); + HKEY hKey; + long lSuccess; + + lSuccess = RegOpenKey ( + hHive, + szKeyPath, + &hKey + ); + + if (lSuccess == ERROR_SUCCESS) { + lSuccess = RegQueryValueEx ( + hKey, + szValue, + NULL, + NULL, + (LPBYTE) szData, + nSize + ); + + if (lSuccess == ERROR_SUCCESS) { + return (TRUE); + } + } + + return (FALSE); } -VOID +VOID SvcInit ( - DWORD dwArgc, - LPTSTR *lpszArgv + DWORD dwArgc, + LPTSTR *lpszArgv ) { - DWORD nSize; - BOOL fSuccess; + DWORD nSize; + BOOL fSuccess; STARTUPINFO si; - wchar_t szPWD[1024]; + wchar_t szPWD[1024]; PROCESS_INFORMATION pi; - wchar_t szCmdLine[1024]; - wchar_t szRegistryPath[1024]; + wchar_t szCmdLine[1024]; + wchar_t szRegistryPath[1024]; - // TO_DO: Declare and set any required variables. - // Be sure to periodically call ReportSvcStatus() with + // TO_DO: Declare and set any required variables. + // Be sure to periodically call ReportSvcStatus() with // SERVICE_START_PENDING. If initialization fails, call // ReportSvcStatus with SERVICE_STOPPED. // Create an event. The control handler function, SvcCtrlHandler, // signals this event when it receives the stop control code. - ghSvcStopEvent = CreateEvent ( - NULL, - TRUE, - FALSE, - NULL - ); + ghSvcStopEvent = CreateEvent ( + NULL, + TRUE, + FALSE, + NULL + ); if (ghSvcStopEvent == NULL) { ReportSvcStatus ( - SERVICE_STOPPED, - NO_ERROR, - 0 - ); + SERVICE_STOPPED, + NO_ERROR, + 0 + ); return; } // Report running status when initialization is complete. ReportSvcStatus ( - SERVICE_RUNNING, - NO_ERROR, - 0 - ); + SERVICE_RUNNING, + NO_ERROR, + 0 + ); // TO_DO: Perform work until service stops. ZeroMemory( &si, sizeof(si) ); si.cb = sizeof(si); ZeroMemory( &pi, sizeof(pi) ); - nSize=1024; + nSize=1024; #ifdef HAVE_SWPRINTF_S - swprintf_s ( - szRegistryPath, - nSize, + swprintf_s ( + szRegistryPath, + nSize, #else - snwprintf ( - szRegistryPath, - sizeof szRegistryPath, + snwprintf ( + szRegistryPath, + sizeof szRegistryPath, #endif - L"SYSTEM\\CurrentControlSet\\services\\%s\\Parameters", - SVCNAME - ); - - fSuccess = RegistryRead ( - HKEY_LOCAL_MACHINE, - szRegistryPath, - L"CommandLine", - szCmdLine, - &nSize - ); - - if (fSuccess) { - fSuccess = RegistryRead ( - HKEY_LOCAL_MACHINE, - szRegistryPath, - L"PWD", - szPWD, - &nSize - ); - } - - if (fSuccess) { - fSuccess = CreateProcess ( - NULL, - szCmdLine, - NULL, - NULL, - FALSE, - ( - CREATE_NO_WINDOW - ), - NULL, - szPWD, - &si, - &pi - ); - } - - // treat errors + L"SYSTEM\\CurrentControlSet\\services\\%s\\Parameters", + SVCNAME + ); + + fSuccess = RegistryRead ( + HKEY_LOCAL_MACHINE, + szRegistryPath, + L"CommandLine", + szCmdLine, + &nSize + ); + + if (fSuccess) { + fSuccess = RegistryRead ( + HKEY_LOCAL_MACHINE, + szRegistryPath, + L"PWD", + szPWD, + &nSize + ); + } + + if (fSuccess) { + fSuccess = CreateProcess ( + NULL, + szCmdLine, + NULL, + NULL, + FALSE, + ( + CREATE_NO_WINDOW + ), + NULL, + szPWD, + &si, + &pi + ); + } + + // treat errors while(1) { // Check whether to stop the service. WaitForSingleObject ( - ghSvcStopEvent, - INFINITE - ); + ghSvcStopEvent, + INFINITE + ); ReportSvcStatus ( - SERVICE_STOPPED, - NO_ERROR, - 0 - ); + SERVICE_STOPPED, + NO_ERROR, + 0 + ); return; } } VOID ReportSvcStatus ( - DWORD dwCurrentState, - DWORD dwWin32ExitCode, - DWORD dwWaitHint + DWORD dwCurrentState, + DWORD dwWin32ExitCode, + DWORD dwWaitHint ) { static DWORD dwCheckPoint = 1; @@ -345,99 +344,99 @@ VOID ReportSvcStatus ( gSvcStatus.dwWin32ExitCode = dwWin32ExitCode; gSvcStatus.dwWaitHint = dwWaitHint; - if (dwCurrentState == SERVICE_START_PENDING) { - gSvcStatus.dwControlsAccepted = 0; - } - else { - gSvcStatus.dwControlsAccepted = SERVICE_ACCEPT_STOP; - } - - if ( - (dwCurrentState == SERVICE_RUNNING) || - (dwCurrentState == SERVICE_STOPPED) - ) { - gSvcStatus.dwCheckPoint = 0; - } else { - gSvcStatus.dwCheckPoint = dwCheckPoint++; - } - - // Report the status of the service to the SCM. - SetServiceStatus ( - gSvcStatusHandle, - &gSvcStatus - ); + if (dwCurrentState == SERVICE_START_PENDING) { + gSvcStatus.dwControlsAccepted = 0; + } + else { + gSvcStatus.dwControlsAccepted = SERVICE_ACCEPT_STOP; + } + + if ( + (dwCurrentState == SERVICE_RUNNING) || + (dwCurrentState == SERVICE_STOPPED) + ) { + gSvcStatus.dwCheckPoint = 0; + } else { + gSvcStatus.dwCheckPoint = dwCheckPoint++; + } + + // Report the status of the service to the SCM. + SetServiceStatus ( + gSvcStatusHandle, + &gSvcStatus + ); } -VOID -WINAPI +VOID +WINAPI SvcCtrlHandler ( - DWORD dwCtrl + DWORD dwCtrl ) { - switch(dwCtrl) { - case SERVICE_CONTROL_STOP: + switch(dwCtrl) { + case SERVICE_CONTROL_STOP: ReportSvcStatus(SERVICE_STOP_PENDING, NO_ERROR, 0); /* Signal the service to stop. */ SetEvent(ghSvcStopEvent); - + return; - - case SERVICE_CONTROL_INTERROGATE: + + case SERVICE_CONTROL_INTERROGATE: /* Fall through to send current status. */ - break; - - default: break; - } + + default: + break; + } ReportSvcStatus(gSvcStatus.dwCurrentState, NO_ERROR, 0); } /* Logs messages to the event log */ -VOID +VOID SvcReportEvent ( - LPTSTR szFunction -) { + LPTSTR szFunction +) { TCHAR Buffer[80]; HANDLE hEventSource; LPCTSTR lpszStrings[2]; hEventSource = RegisterEventSource ( - NULL, - SVCNAME - ); + NULL, + SVCNAME + ); if ( - NULL != hEventSource - ) { + NULL != hEventSource + ) { #ifdef HAVE_STRINGCCHPRINTF - StringCchPrintf + StringCchPrintf #else - snwprintf + snwprintf #endif - ( - Buffer, - 80, - TEXT("%s failed with %d"), - szFunction, - GetLastError() - ); + ( + Buffer, + 80, + TEXT("%s failed with %d"), + szFunction, + GetLastError() + ); lpszStrings[0] = SVCNAME; lpszStrings[1] = Buffer; - ReportEvent ( - hEventSource, - EVENTLOG_ERROR_TYPE, - 0, - SVC_ERROR, - NULL, - 2, - 0, - lpszStrings, - NULL - ); - - DeregisterEventSource (hEventSource); + ReportEvent ( + hEventSource, + EVENTLOG_ERROR_TYPE, + 0, + SVC_ERROR, + NULL, + 2, + 0, + lpszStrings, + NULL + ); + + DeregisterEventSource (hEventSource); } } diff --git a/RHSrvAny/RHSrvAny.h b/RHSrvAny/RHSrvAny.h index 72ada2a..f439056 100644 --- a/RHSrvAny/RHSrvAny.h +++ b/RHSrvAny/RHSrvAny.h @@ -1,4 +1,3 @@ -/* -*- Mode: C; tab-width: 4 -*- */ /* RHSrvAny - Turn any Windows program into a Windows service. * Written by Yuval Kashtan. * Copyright (C) 2010 Red Hat Inc. diff --git a/RHSrvAny/resource.h b/RHSrvAny/resource.h index ad31821..14bba9b 100644 --- a/RHSrvAny/resource.h +++ b/RHSrvAny/resource.h @@ -4,7 +4,7 @@ // // Next default values for new objects -// +// #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 101 -- 1.8.3.1