#!/usr/bin/perl # Simple check of a stateful encoding. # Usage: check-stateful BUILDDIR SRCDIR CHARSET use warnings; use strict; if (@ARGV < 3) { print "Usage: check-stateful \n"; exit; } my $builddir = shift @ARGV; my $exeext = shift @ARGV; my $srcdir = shift @ARGV; my $charset = shift @ARGV; # charset, modified for use in filenames. my $charsetf = $charset; $charsetf =~ s/:/-/g; command("$builddir/module_iconv$exeext -f $charset -t UTF-8 -o $builddir/tmp-snippet $srcdir/$charsetf-snippet"); command("cmp $srcdir/$charsetf-snippet.UTF-8 $builddir/tmp-snippet"); command("$builddir/module_iconv$exeext -f UTF-8 -t $charset -o $builddir/tmp-snippet $srcdir/$charsetf-snippet.UTF-8"); command("cmp $srcdir/$charsetf-snippet $builddir/tmp-snippet"); command("rm -f $builddir/tmp-snippet"); sub command { my $cmd = shift; print "> $cmd\n"; my @output = `$cmd 2>&1`; foreach my $line (@output) { print "| $line"; } my $status = $? / 256; die "$cmd:\nexit status $status\n" if $status; return @output; }