From c561b6795036cd294540323d6e05a51d4170c63b Mon Sep 17 00:00:00 2001 From: Eric Pouech Date: Fri, 4 Nov 2011 21:14:05 +0100 Subject: [PATCH] expand: No longer use Unix stdio functions, but rather the kernel32 equivalent. --- programs/expand/expand.c | 39 +++++++++++++++++++++++++++------------ 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/programs/expand/expand.c b/programs/expand/expand.c index 3107ff6be73..2bede0854ec 100644 --- a/programs/expand/expand.c +++ b/programs/expand/expand.c @@ -26,6 +26,21 @@ #include #include +static int myprintf(const char* format, ...) +{ + va_list va; + char tmp[8192]; + DWORD w; + int len; + + va_start(va, format); + len = vsnprintf(tmp, sizeof(tmp), format, va); + if (len > 0) + WriteFile(GetStdHandle(STD_ERROR_HANDLE), tmp, len, &w, NULL); + va_end(va); + return w; +} + static UINT CALLBACK set_outfile( PVOID context, UINT notification, UINT_PTR param1, UINT_PTR param2 ) { FILE_IN_CABINET_INFO_A *info = (FILE_IN_CABINET_INFO_A *)param1; @@ -83,9 +98,9 @@ int main(int argc, char *argv[]) if (argc < 3) { - fprintf( stderr, "Usage:\n" ); - fprintf( stderr, "\t%s infile outfile\n", argv[0] ); - fprintf( stderr, "\t%s /r infile\n", argv[0] ); + myprintf( "Usage:\n" ); + myprintf( "\t%s infile outfile\n", argv[0] ); + myprintf( "\t%s /r infile\n", argv[0] ); return 1; } @@ -96,7 +111,7 @@ int main(int argc, char *argv[]) if (!SetupGetFileCompressionInfoExA( infile, actual_name, sizeof(actual_name), NULL, NULL, NULL, &comp )) { - fprintf( stderr, "%s: can't open input file %s\n", argv[0], infile ); + myprintf( "%s: can't open input file %s\n", argv[0], infile ); return 1; } @@ -108,7 +123,7 @@ int main(int argc, char *argv[]) outfile_basename[0] = 0; if (!SetupIterateCabinetA( infile, 0, set_outfile, outfile_basename )) { - fprintf( stderr, "%s: can't determine original name\n", argv[0] ); + myprintf( "%s: can't determine original name\n", argv[0] ); return 1; } GetFullPathNameA( infile, sizeof(outfile), outfile, &basename_index ); @@ -119,7 +134,7 @@ int main(int argc, char *argv[]) GetExpandedNameA( infile, outfile_basename ); break; default: - fprintf( stderr, "%s: can't determine original\n", argv[0] ); + myprintf( "%s: can't determine original\n", argv[0] ); return 1; } } @@ -128,7 +143,7 @@ int main(int argc, char *argv[]) if (!lstrcmpiA( infile, outfile )) { - fprintf( stderr, "%s: can't expand file to itself\n", argv[0] ); + myprintf( "%s: can't expand file to itself\n", argv[0] ); return 1; } @@ -137,7 +152,7 @@ int main(int argc, char *argv[]) case FILE_COMPRESSION_MSZIP: if (!SetupIterateCabinetA( infile, 0, extract_callback, outfile )) { - fprintf( stderr, "%s: cabinet extraction failed\n", argv[0] ); + myprintf( "%s: cabinet extraction failed\n", argv[0] ); return 1; } break; @@ -149,13 +164,13 @@ int main(int argc, char *argv[]) if ((hin = LZOpenFileA( infile, &ofin, OF_READ )) < 0) { - fprintf( stderr, "%s: can't open input file %s\n", argv[0], infile ); + myprintf( "%s: can't open input file %s\n", argv[0], infile ); return 1; } if ((hout = LZOpenFileA( outfile, &ofout, OF_CREATE | OF_WRITE )) < 0) { LZClose( hin ); - fprintf( stderr, "%s: can't open output file %s\n", argv[0], outfile ); + myprintf( "%s: can't open output file %s\n", argv[0], outfile ); return 1; } error = LZCopy( hin, hout ); @@ -165,7 +180,7 @@ int main(int argc, char *argv[]) if (error < 0) { - fprintf( stderr, "%s: LZCopy failed, error is %d\n", argv[0], error ); + myprintf( "%s: LZCopy failed, error is %d\n", argv[0], error ); return 1; } break; @@ -173,7 +188,7 @@ int main(int argc, char *argv[]) default: if (!CopyFileA( infile, outfile, FALSE )) { - fprintf( stderr, "%s: CopyFileA failed\n", argv[0] ); + myprintf( "%s: CopyFileA failed\n", argv[0] ); return 1; } break; -- 2.11.4.GIT