#!/usr/bin/perl -w
use strict;
use warnings;
use Data::Dumper;

if (@ARGV == 0 || $ARGV[0] =~ /^-/) {
    die "usage: isql -a -u sysdba -p sysdba database.gdb | fix-sql-case original-sql-file-1.sql ...\n";
}

my %counts;
while(<>) {
    s{'.*?'|".*?"|--.*|/\*.*?\*/}{}g;
    for(split /\b/) {
        ++ $counts{uc $_}{$_} if /^[A-Za-z0-9_-]+$/;
        ++ $counts{lc $_}{$_} if /^[A-Za-z0-9_-]+$/;
    }
}

my %bests;
while (my ($uc, $hash) = each %counts) {
    my $best;
    my $best_count = 0;
    while (my ($mixed, $count) = each %$hash) {
        if ($count > $best_count) {
            $best = $mixed;
            $best_count = $count;
        }
    }
    $bests{$uc} = $best;
}

while (defined ($_ = <STDIN>)) {
    s{('.*?'|".*?"|\b[A-Z0-9_-]+\b)}{$bests{$1}||$1}ge;
    s{('.*?'|".*?"|--.*|/\*.*?\*/|\b[a-z0-9_-]+\b)}{$bests{$1}||$1}ge;
    print;
}
