source: git/lib/checkshortcut.pl @ 6deca30

RELEASE/1.0RELEASE/1.1RELEASE/1.2debug-cidebug-ci-sanitisersstereowalls-data
Last change on this file since 6deca30 was 6deca30, checked in by Olly Betts <olly@…>, 22 years ago

Run checkshortcut.pl automatically for "make dist"

git-svn-id: file:///home/survex-svn/survex/trunk@1827 4b37db11-9a0c-4f06-9ece-9ab7cdaee568

  • Property mode set to 100755
File size: 1.2 KB
Line 
1#!/usr/bin/perl -w
2use strict;
3my %menu = ();
4my $srcdir = $ENV{'srcdir'};
5$srcdir .= '/' if defined $srcdir;
6
7open I, "<$srcdir../src/mainfrm.cc" or die $!;
8while (<I>) {
9    /(\w+)->Append\(.*\(\/\*.*?\*\/(\d+)/ && push @{$menu{$1}}, $2;
10}
11close I;
12
13my $exitcode = 0;
14for my $lang (@ARGV) {
15    $lang =~ s/\.msg$//; # allow en or en.msg
16    my $hdr = "Lang $lang:\n";
17    # .msg files could be in srcdir or build directory when building outside
18    # the source tree
19    open L, "<$srcdir$lang.msg" or open L, "<$lang.msg" or die $!;
20    my $buf;
21    read L, $buf, 20;
22    read L, $buf, 999999;
23    close L;
24    my @msg = split /\0/, $buf;
25    for my $menu (sort keys %menu) {
26        my %sc = ();
27        my $bad = 0;
28        for (@{$menu{$menu}}) {
29            my ($acc) = ($msg[$_] =~ /\@(.)/);
30            $acc = lc $acc;
31            if (exists $sc{$acc}) {
32                if (defined $hdr) {
33                    print $hdr;
34                    $hdr = undef;
35                }
36                print "Menu $menu : '$msg[$sc{$acc}]' and '$msg[$_]' clash\n";
37                $bad = 1;
38            } else {
39                $sc{$acc} = $_;
40            }
41        }
42        if ($bad) {
43            print "Unused letters: ", grep {!exists $sc{$_}} ('a' .. 'z'), "\n";
44            $exitcode = 1;
45        }
46    }
47    print "\n" unless defined $hdr;
48}
49exit $exitcode;
Note: See TracBrowser for help on using the repository browser.