1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
|
#!/usr/bin/env perl
## Copyright © 2011 by Birte Kristina Friesel <derf@finalrewind.org>
## License: WTFPL:
## 0. You just DO WHAT THE FUCK YOU WANT TO.
use strict;
use warnings;
use 5.010;
use autodie;
my $fh;
my $keys;
my $re_struct = qr{
struct \s __fehkey \s (?<action> [^;]+ ) ;
}x;
my $re_set = qr{
feh_set_kb \( \& keys \. (?<action> [^ ,]+ ) \s* ,
\s* (?<mod1> \d+ ) ,
\s* (?<key1> [^ ,]+ ) \s* ,
\s* (?<mod2> \d+ ) ,
\s* (?<key2> [^ ,]+ ) \s* ,
\s* (?<mod3> \d+ ) ,
\s* (?<key3> [^ ,]+ ) \s* \) ;
}x;
my $re_parse_action = qr{
if \s \( \! strcmp \( action , \s " (?<action> [^"]+ ) " \) \)
}x;
my $re_parse_conf = qr{
cur_kb \s = \s \& keys \. (?<str> [^;]+ ) ;
}x;
my $re_man = qr{
^ \. It \s (?<keys> .+ ) \s Bq \s (?<action> .+ ) $
}x;
my $re_skip = qr{
^ ( action | orient ) _
}x;
open($fh, '<', 'src/options.h');
while (my $line = <$fh>) {
if ($line =~ $re_struct) {
$keys->{ $+{action} }->{struct} = 1;
}
}
close($fh);
open($fh, '<', 'src/keyevents.c');
while (my $line = <$fh>) {
if ($line =~ $re_set) {
$keys->{ $+{action} }->{default}
= [@+{'mod1', 'key1', 'mod2', 'key2', 'mod3', 'key3'}];
}
elsif ($line =~ $re_parse_action) {
$keys->{ $+{action} }->{parse} = 1;
}
}
close($fh);
open($fh, '<', 'man/feh.pre');
while (my $line = <$fh>) {
if ($line =~ $re_man) {
$keys->{ $+{action} }->{man} = 1;
}
}
close($fh);
for my $action (sort keys %{$keys}) {
my $k = $keys->{$action};
if ($action =~ $re_skip) {
next;
}
if (not defined $k->{struct}) {
say "$action missing in struct";
}
if (not defined $k->{default}) {
say "$action missing in defaults";
}
if (not defined $k->{parse}) {
say "$action missing in parser";
}
if (not defined $k->{man}) {
say "$action missing in manual";
}
}
|