mirror of
git://source.winehq.org/git/wine.git
synced 2024-10-06 16:39:20 +00:00
wmic: Fix output when redirected to pipe.
This commit is contained in:
parent
846d164092
commit
707d299da6
|
@ -19,6 +19,8 @@
|
|||
|
||||
#define COBJMACROS
|
||||
|
||||
#include <fcntl.h>
|
||||
#include <io.h>
|
||||
#include <locale.h>
|
||||
#include <stdio.h>
|
||||
#include "windows.h"
|
||||
|
@ -63,29 +65,25 @@ static const WCHAR *find_class( const WCHAR *alias )
|
|||
return NULL;
|
||||
}
|
||||
|
||||
static int WINAPIV output_string( HANDLE handle, const WCHAR *msg, ... )
|
||||
static int WINAPIV output_string( const WCHAR *msg, ... )
|
||||
{
|
||||
static const WCHAR bomW[] = {0xfeff};
|
||||
int count, bom_count = 0;
|
||||
static BOOL bom;
|
||||
va_list va_args;
|
||||
int len;
|
||||
DWORD count, bom_count = 0;
|
||||
WCHAR buffer[8192];
|
||||
|
||||
va_start( va_args, msg );
|
||||
len = vswprintf( buffer, ARRAY_SIZE(buffer), msg, va_args );
|
||||
va_end( va_args );
|
||||
|
||||
if (!WriteConsoleW( handle, buffer, len, &count, NULL ))
|
||||
if (!bom)
|
||||
{
|
||||
if (!bom)
|
||||
if (GetFileType((HANDLE)_get_osfhandle( STDOUT_FILENO )) == FILE_TYPE_DISK)
|
||||
{
|
||||
WriteFile( handle, bomW, sizeof(bomW), &bom_count, FALSE );
|
||||
bom = TRUE;
|
||||
_setmode( STDOUT_FILENO, _O_U16TEXT );
|
||||
bom_count = wprintf( L"\xfeff" );
|
||||
}
|
||||
WriteFile( handle, buffer, len * sizeof(WCHAR), &count, FALSE );
|
||||
bom = TRUE;
|
||||
}
|
||||
|
||||
va_start( va_args, msg );
|
||||
count = vwprintf( msg, va_args );
|
||||
va_end( va_args );
|
||||
return count + bom_count;
|
||||
}
|
||||
|
||||
|
@ -99,12 +97,12 @@ static int output_error( int msg )
|
|||
|
||||
static int output_text( const WCHAR *str, ULONG column_width )
|
||||
{
|
||||
return output_string( GetStdHandle(STD_OUTPUT_HANDLE), L"%-*s", column_width, str );
|
||||
return output_string( L"%-*s", column_width, str );
|
||||
}
|
||||
|
||||
static int output_newline( void )
|
||||
{
|
||||
return output_string( GetStdHandle(STD_OUTPUT_HANDLE), L"\r\n" );
|
||||
return output_string( L"\n" );
|
||||
}
|
||||
|
||||
static WCHAR * strip_spaces(WCHAR *start)
|
||||
|
|
Loading…
Reference in a new issue