chiark / gitweb /
wip topbloke-merge-lists
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 21 Jan 2012 11:44:00 +0000 (11:44 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 21 Jan 2012 11:44:00 +0000 (11:44 +0000)
topbloke-merge-lists

index 42737e0..efdd52b 100755 (executable)
@@ -5,7 +5,8 @@ use warnings;
 use IO::Handle;
 
 our %flag;
-our @order, @order_final_maybe;
+our (@order, @order_final_maybe);
+our $verbose=0;
 
 while (@ARGV && $ARGV[0] =~ m/^\-/) {
     $_ = shift @ARGV;
@@ -15,6 +16,8 @@ while (@ARGV && $ARGV[0] =~ m/^\-/) {
     } elsif (s/^-D//) {
        $flag{$_}{Result} = 1;
        push @order_final_maybe, $_;
+    } elsif (m/^-v$/) {
+       $verbose = 1;
     } elsif (m/^--$/) {
        last;
     } else {
@@ -37,9 +40,11 @@ foreach my $ix (qw(0 1 2)) {
 }
 
 foreach $_ (@order_final_maybe) {
-    push @order, $_ unless $flags{$_}{InOrder}++;
+    push @order, $_ unless $flag{$_}{InOrder}++;
 }
 
+my $current = $ARGV[0];
+
 open O, '>', "$current.tmp" or die "$current.tmp $!";
 
 foreach $_ (@order) {
@@ -47,13 +52,16 @@ foreach $_ (@order) {
     if (!defined $ff->{Result}) {
        my $s = '';
        foreach my $ix (qw(0 1 2)) {
-           $ff->{Input}[$ix] ||= 1;
+           $ff->{Input}[$ix] ||= 0;
            $s .= $ff->{Input}[$ix];
        }
+       if ($verbose) {
+           print STDERR "MERGE-LISTS $s $_\n" or die $!;
+       }
        $ff->{Result} =
            $s eq '000' ? '000' :
            $s eq '111' ? '111' :
-           $ff->{Input}[1];
+           !$ff->{Input}[1];
     }
     if ($ff->{Result}) {
        print O "$_\n" or die $!;