You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
1.1 KiB
81 lines
1.1 KiB
5 years ago
|
|
||
|
#
|
||
|
# Arguments parsing
|
||
|
#
|
||
|
|
||
|
local $script = $0;
|
||
|
|
||
|
while ( 1 )
|
||
|
{
|
||
|
local $arg = shift;
|
||
|
if ( $arg =~ /^-patch$/i )
|
||
|
{ goto RUN_PATCH; }
|
||
|
if ( $arg =~ /^-patchall$/i )
|
||
|
{ goto RUN_PATCH_ALL; }
|
||
|
|
||
|
# default mode - forward to -patch:
|
||
|
exit system( "dir /s /b *.vtf | perl $script -patchall" );
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
RUN_PATCH_ALL:
|
||
|
#
|
||
|
# ----------- Patch a list of VTF files --------
|
||
|
#
|
||
|
|
||
|
while ( <> )
|
||
|
{
|
||
|
local $line = $_;
|
||
|
$line =~ s/^\s*(.*)\s*$/$1/;
|
||
|
PatchVtfFile( $line );
|
||
|
}
|
||
|
exit 0;
|
||
|
|
||
|
|
||
|
RUN_PATCH:
|
||
|
#
|
||
|
# ----------- Patch a VTF file --------
|
||
|
#
|
||
|
|
||
|
local $filename = shift;
|
||
|
exit PatchVtfFile( $filename );
|
||
|
|
||
|
sub PatchVtfFile
|
||
|
{
|
||
|
|
||
|
local *fileptr;
|
||
|
local $filename = shift;
|
||
|
local $vtfFlags;
|
||
|
|
||
|
print "$filename ... ";
|
||
|
`p4 edit "$filename" >nul 2>&1`;
|
||
|
|
||
|
if ( !open( fileptr, "+<$filename" ) )
|
||
|
{
|
||
|
print "ERROR!\n";
|
||
|
return 1;
|
||
|
}
|
||
|
binmode( fileptr );
|
||
|
|
||
|
seek( fileptr, 5 * 4, 0 );
|
||
|
read( fileptr, $vtfFlags, 4 );
|
||
|
$vtfFlags = unpack( "I", $vtfFlags );
|
||
|
|
||
|
# dropping the NOCOMPRESS flag that will be used for SRGB
|
||
|
# dropping all the removed flags too
|
||
|
$vtfFlags = $vtfFlags & 0x2E87FFBF; # mask and
|
||
|
|
||
|
seek( fileptr, 5 * 4, 0 );
|
||
|
print fileptr pack( "I", $vtfFlags );
|
||
|
|
||
|
close( fileptr );
|
||
|
|
||
|
print "ok.\n";
|
||
|
return 0;
|
||
|
|
||
|
}
|
||
|
|
||
|
|