source: git/lib/checkshortcut.pl @ be891ea

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

Copy changes over from 1.0 branch

git-svn-id: file:///home/survex-svn/survex/branches/survex-1_1@2865 4b37db11-9a0c-4f06-9ece-9ab7cdaee568

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