#!/usr/bin/perl

$dobak=0;
$dopatch=0;
$startat=0.6; # 60 %
$lookup1="iso-2022-jp";
$lookup2="iso-8859-1";
$replace2="iso-8859-2";

foreach (@ARGV) {
	if (/^-b$/) { $dobak = 1; }
	elsif (/^-n$/) { $dopatch = 1; }
	else { $netscapefile = $_; }
}
($prgname=$0) =~ s,.*/,,;
if (not $netscapefile) {
	print "Pouziti:  $prgname  [-b] [-n]  netscape_binarka\n";
	print "\n  -b ... puvodni prejmenuj na .bak (jinak ponecha a novy je .new)\n";
	print "  -n ... nejedna se o uz opravenou binarku, opravdu proved nahradu\n";
	exit 1;
}

open(NS,"<$netscapefile") or die("Nejde cist soubor $netscapefile!");
binmode NS;
$nssize=(-s NS);
$|=1; #autoflush output
print "Ctu $netscapefile ($nssize bytu) ... ";
if (read(NS,$netscape,$nssize) < $nssize) { print "NEPODARILO se\n"; exit 2; }
close(NS);
print "ok\n";

$pos=int($nssize*$startat);
print "Zacinam na pozici $pos (".int($startat*100)."%)\n";
if (not ($pos=index($netscape,$lookup1,$pos))) {
	print "\"$lookup1\" NENALEZEN\n";
	exit 3;
}
print "\"$lookup1\" nalezen na pozici $pos\n";

print "Hledam \"$lookup2\" smerem k zacatku\n";
if (not ($p1=rindex($netscape,$lookup2,$pos))) {
	print "\"$lookup2\" NENALEZEN\n";
	exit 4;
}
print "\"$lookup2\" nalezen na pozici $p1\n";
if (($p2=rindex($netscape,$replace2,$pos)) and ($p2 > $p1)) {
	print "\"$replace2\" nalezen na pozici $p2, mozna jde o uz opravenou binarku\n";
	if ($dopatch) {
		print "byl zadan parametr '-n'  ->  pokracuji\n";
	}
	else {
		print "jestli chces opravdu nahradu provest, spust $prgname znovu s parametrem '-n'\n";
		exit 4;
	}
}
$pos=$p1;
substr($netscape,$pos,length($lookup2)) = $replace2;
print "\"$lookup2\" nahrazen \"$replace2\"\n";

($x1,$x2,$mode)=stat($netscapefile);
if ($dobak) {
	rename($netscapefile,"$netscapefile.bak") or die "Nejde prejmenovat $netscapefile na $netscapefile.bak!";
	print "$netscapefile prejmenovan na $netscapefile.bak\n";
	$newfile="$netscapefile";
}
else {
	$newfile="$netscapefile.new";
}

open(NS,">$newfile") or die("Nejde zapsat soubor $newfile!");
binmode NS;
print "Zapisuji $newfile ($nssize bytu) ... ";
print NS $netscape or die "NEPODARILO se\n";
close(NS);
chmod $mode,$newfile;
print "ok\n";


