#!/usr/bin/perl

$plik_charsetA_utf8 = shift;
$plik_charsetB_utf8 = shift;

foreach (map chr, 32 .. 126) {$charsetB_utf8{$_} = $_}
if ($plik_charsetB_utf8 ne "ascii")
{
	open CHARSETB_UTF8, $plik_charsetB_utf8;
	while (<CHARSETB_UTF8>)
	{
		$charsetB_utf8{$2} = $1
			if /^\t(\S+)\t(\S+)$/ && !exists $charsetB_utf8{$2};
	}
	close CHARSETB_UTF8;
}

%utf8_charsetB1 = %charsetB_utf8;

open UTF8_CHARSET, shift;
while (<UTF8_CHARSET>)
{
	@alt = split;
	$utf8 = $alt[0];
	$jest = 0;
	foreach (@alt)
	{
		@znakiist = /[^\200-\377]|[\300-\377][\200-\277]+/g;
		s/\\\).*?$//;
		@znaki = /[^\200-\377]|[\300-\377][\200-\277]+/g;
		if (!grep {!exists $charsetB_utf8{$_}} @znakiist)
		{
			if (@znaki == 1 || /^\\[^!]$/)
			{
				$utf8_charsetB1{$utf8} = join "",
					map {$charsetB_utf8{$_}} @znaki;
				last;
			}
			elsif (!$jest)
			{
				$utf8_charsetB{$utf8} = join "",
					map {$charsetB_utf8{$_}} @znaki;
				$jest = 1;
			}
		}
	}
}
close UTF8_CHARSET;

open CHARSETA_UTF8, $plik_charsetA_utf8;
while (<CHARSETA_UTF8>)
{
	if (/^\t(\S+)\t(\S+)$/)
	{
		if (exists $utf8_charsetB{$2})
		{
			$charsetB_utf8 .= "\t$1\t$utf8_charsetB{$2}\n";
		}
		if (exists $utf8_charsetB1{$2})
		{
			$charsetB1_utf8 .= "\t$1\t$utf8_charsetB1{$2}\n"
				if $1 ne $utf8_charsetB1{$2};
		}
		else {$brak .= $1}
	}
}
close CHARSET1_UTF8;

$charsetB_utf8  =~ s/'/'\\''/g;
$charsetB1_utf8 =~ s/'/'\\''/g;
($reszta = $utf8_charsetB1{"\357\277\275"}) =~ s/'/'\\''/g;

print "TRS='\n${charsetB_utf8}' TRS1='\n$charsetB1_utf8";
print "\\[$brak\\] $reszta\n" if $brak ne "";
print "'";
