Commit e4c8d763 authored by Rob Shearman's avatar Rob Shearman Committed by Alexandre Julliard

net: Display a more specific error message when a service command fails.

Use FormatMessage to get the message for the Win32 error.
parent e4136355
...@@ -37,6 +37,20 @@ int output_string(int msg, ...) ...@@ -37,6 +37,20 @@ int output_string(int msg, ...)
return 0; 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[]) static BOOL net_use(int argc, char *argv[])
{ {
USE_INFO_2 *buffer, *connection; USE_INFO_2 *buffer, *connection;
...@@ -140,14 +154,22 @@ static BOOL net_service(int operation, char *service_name) ...@@ -140,14 +154,22 @@ static BOOL net_service(int operation, char *service_name)
result = StartService(serviceHandle, 0, NULL); result = StartService(serviceHandle, 0, NULL);
if(result) output_string(STRING_START_SVC_SUCCESS, service_display_name); 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; break;
case NET_STOP: case NET_STOP:
output_string(STRING_STOP_SVC, service_display_name); output_string(STRING_STOP_SVC, service_display_name);
result = StopService(SCManager, serviceHandle); result = StopService(SCManager, serviceHandle);
if(result) output_string(STRING_STOP_SVC_SUCCESS, service_display_name); 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; break;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment