expand: No longer use Unix stdio functions, but rather the kernel32 equivalent.
This commit is contained in:
parent
60460147ee
commit
c561b67950
|
@ -26,6 +26,21 @@
|
|||
#include <lzexpand.h>
|
||||
#include <setupapi.h>
|
||||
|
||||
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;
|
||||
|
|
Loading…
Reference in New Issue