summaryrefslogtreecommitdiff
path: root/tests/service
diff options
context:
space:
mode:
authorAndreas Baumann <abaumann@yahoo.com>2009-03-26 10:39:19 +0100
committerAndreas Baumann <abaumann@yahoo.com>2009-03-26 10:39:19 +0100
commitdb363643c15fcc0db5fed7734ce7d30642ff7500 (patch)
treed48028b345e7183ba708c4df9c4c58594ebd4bf9 /tests/service
parentd7c45cbce04098605236ca6b74454105f83d5799 (diff)
downloadwolfbones-db363643c15fcc0db5fed7734ce7d30642ff7500.tar.gz
wolfbones-db363643c15fcc0db5fed7734ce7d30642ff7500.tar.bz2
better output in debug code of service
Diffstat (limited to 'tests/service')
-rw-r--r--tests/service/testservice.c50
-rw-r--r--tests/service/testservicemsg.mc8
2 files changed, 48 insertions, 10 deletions
diff --git a/tests/service/testservice.c b/tests/service/testservice.c
index eb91587..66d20be 100644
--- a/tests/service/testservice.c
+++ b/tests/service/testservice.c
@@ -173,6 +173,41 @@ static SERVICE_STATUS_HANDLE service_status_handle;
static SERVICE_STATUS service_status;
static HANDLE service_stop_event = NULL;
+/* constants and values from WinSvc.h: */
+static const char *wolf_service_state_to_str( DWORD current_state ) {
+ switch( current_state ) {
+ case SERVICE_STOPPED: return "SERVICE_STOPPED";
+ case SERVICE_START_PENDING: return "SERVICE_START_PENDING";
+ case SERVICE_STOP_PENDING: return "SERVICE_STOP_PENDING";
+ case SERVICE_RUNNING: return "SERVICE_RUNNING";
+ case SERVICE_CONTINUE_PENDING: return "SERVICE_CONTINUE_PENDING";
+ case SERVICE_PAUSE_PENDING: return "SERVICE_PAUSE_PENDING";
+ case SERVICE_PAUSED: return "SERVICE_PAUSED";
+ default: return "<unknown service state>";
+ }
+}
+
+/* constants and values from WinSvc.h: */
+static const char *wolf_service_control_to_str( DWORD control ) {
+ switch( control ) {
+ case SERVICE_CONTROL_STOP: return "SERVICE_CONTROL_STOP";
+ case SERVICE_CONTROL_PAUSE: return "SERVICE_CONTROL_PAUSE";
+ case SERVICE_CONTROL_CONTINUE: return "SERVICE_CONTROL_CONTINUE";
+ case SERVICE_CONTROL_INTERROGATE: return "SERVICE_CONTROL_INTERROGATE";
+ case SERVICE_CONTROL_SHUTDOWN: return "SERVICE_CONTROL_SHUTDOWN";
+ case SERVICE_CONTROL_PARAMCHANGE: return "SERVICE_CONTROL_PARAMCHANGE";
+ case SERVICE_CONTROL_NETBINDADD: return "SERVICE_CONTROL_NETBINDADD";
+ case SERVICE_CONTROL_NETBINDREMOVE: return "SERVICE_CONTROL_NETBINDREMOVE";
+ case SERVICE_CONTROL_NETBINDENABLE: return "SERVICE_CONTROL_NETBINDENABLE";
+ case SERVICE_CONTROL_NETBINDDISABLE: return "SERVICE_CONTROL_NETBINDDISABLE";
+ case SERVICE_CONTROL_DEVICEEVENT: return "SERVICE_CONTROL_DEVICEEVENT";
+ case SERVICE_CONTROL_HARDWAREPROFILECHANGE: return "SERVICE_CONTROL_HARDWAREPROFILECHANGE";
+ case SERVICE_CONTROL_POWEREVENT: return "SERVICE_CONTROL_POWEREVENT";
+ case SERVICE_CONTROL_SESSIONCHANGE: return "SERVICE_CONTROL_SESSIONCHANGE";
+ default: return "<unknown service control>";
+ }
+}
+
static void wolf_service_report_status( DWORD current_state,
DWORD exit_code,
DWORD wait_hint ) {
@@ -180,8 +215,9 @@ static void wolf_service_report_status( DWORD current_state,
char errbuf[512];
wolf_log( WOLF_LOG_DEBUG, WOLF_CATEGORY_TESTSERVICE, WOLF_MSG_TESTSERVICE_REPORT_STATUS,
- _( "reporting status with new state %d (currently in state %d)" ),
- service_status.dwCurrentState, current_state );
+ _( "reporting status with new state '%s' (%d) (currently in state '%s' (%d))" ),
+ wolf_service_state_to_str( current_state ), current_state,
+ wolf_service_state_to_str( service_status.dwCurrentState ), service_status.dwCurrentState );
service_status.dwServiceType = SERVICE_WIN32_OWN_PROCESS;
service_status.dwCurrentState = current_state;
@@ -214,8 +250,9 @@ static void wolf_service_report_status( DWORD current_state,
if( !res ) {
WOLF_LOG_GET_LAST_ERROR( GetLastError( ), errbuf, 512 );
wolf_log( WOLF_LOG_ERR, WOLF_CATEGORY_TESTSERVICE, WOLF_MSG_TESTSERVICE_CANT_REPORT_STATUS,
- _( "Unable to report state %d of service '%s' to SCM '%s (%d)" ),
- current_state, SERVICE_NAME, errbuf, GetLastError( ) );
+ _( "Unable to report state '%s' (%d) of service '%s' to SCM '%s (%d)" ),
+ wolf_service_state_to_str( current_state ), current_state,
+ SERVICE_NAME, errbuf, GetLastError( ) );
return;
}
}
@@ -229,7 +266,8 @@ void WINAPI wolf_service_ctrl_handler( DWORD control ) {
BOOL res;
wolf_log( WOLF_LOG_DEBUG, WOLF_CATEGORY_TESTSERVICE, WOLF_MSG_TESTSERVICE_HANDLING_EVENT,
- _( "service handler received event %d" ),
+ _( "service handler received status change '%s' (%d)" ),
+ wolf_service_control_to_str( control ),
control );
switch( control ) {
@@ -364,7 +402,7 @@ void __cdecl _tmain( int argc, TCHAR *argv[] ) {
printf( "testsrevice [options]\r\n" );
printf( " /help show this help page\r\n" );
printf( " /install install the service\r\n" );
- printf( " /remove remove the servuce\r\n" );
+ printf( " /remove remove the service\r\n" );
} else if( strcasecmp( argv[1], "/install" ) == 0 ) {
(void)wolf_service_install( SERVICE_NAME, SERVICE_NAME_DESCR );
} else if( strcasecmp( argv[1], "/remove" ) == 0 ) {
diff --git a/tests/service/testservicemsg.mc b/tests/service/testservicemsg.mc
index 86b4ccf..f3a12e5 100644
--- a/tests/service/testservicemsg.mc
+++ b/tests/service/testservicemsg.mc
@@ -28,7 +28,7 @@ Logger
MessageId = 0x2
SymbolicName = WOLF_CATEGORY_DAEMON
Language = English
-Dameon
+Daemon
.
;Language = German
;Unix-Prozess
@@ -136,21 +136,21 @@ Severity = Informational
Facility = Application
SymbolicName = WOLF_MSG_TESTSERVICE_REPORT_STATUS
Language = English
-reporting status with new state %1 (currently in state %2)
+reporting status with new state '%1' (%2) (currently in state '%3' (%4))
.
MessageId = 3017
Severity = Error
Facility = Application
SymbolicName = WOLF_MSG_TESTSERVICE_CANT_REPORT_STATUS
Language = English
-Unable to report state %1 of service '%2' to SCM '%3 (%4)
+Unable to report state '%1' (%2) of service '%3' to SCM '%4 (%5)
.
MessageId = 3013
Severity = Informational
Facility = Application
SymbolicName = WOLF_MSG_TESTSERVICE_HANDLING_EVENT
Language = English
-service handler received event %1
+service handler received status change '%1' (%2)
.
MessageId = 3012
Severity = Error