From e4c8d763c9839391d41498b6512fece32037c7f2 Mon Sep 17 00:00:00 2001 From: Rob Shearman Date: Tue, 1 Apr 2008 12:49:29 +0100 Subject: [PATCH] net: Display a more specific error message when a service command fails. Use FormatMessage to get the message for the Win32 error. --- programs/net/net.c | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/programs/net/net.c b/programs/net/net.c index f27c8531011..30337a69568 100644 --- a/programs/net/net.c +++ b/programs/net/net.c @@ -37,6 +37,20 @@ int output_string(int msg, ...) return 0; } +BOOL output_error_string(DWORD error) +{ + LPSTR pBuffer; + if (FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM | + FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_ALLOCATE_BUFFER, + NULL, error, 0, (LPSTR)&pBuffer, 0, NULL)) + { + fputs(pBuffer, stdout); + LocalFree(pBuffer); + return TRUE; + } + return FALSE; +} + static BOOL net_use(int argc, char *argv[]) { USE_INFO_2 *buffer, *connection; @@ -140,14 +154,22 @@ static BOOL net_service(int operation, char *service_name) result = StartService(serviceHandle, 0, NULL); if(result) output_string(STRING_START_SVC_SUCCESS, service_display_name); - else output_string(STRING_START_SVC_FAIL, service_display_name); + else + { + if (!output_error_string(GetLastError())) + output_string(STRING_START_SVC_FAIL, service_display_name); + } break; case NET_STOP: output_string(STRING_STOP_SVC, service_display_name); result = StopService(SCManager, serviceHandle); if(result) output_string(STRING_STOP_SVC_SUCCESS, service_display_name); - else output_string(STRING_STOP_SVC_FAIL, service_display_name); + else + { + if (!output_error_string(GetLastError())) + output_string(STRING_STOP_SVC_FAIL, service_display_name); + } break; }