From 107ad1872359378dd1f67a75f7a4cf6795df7a05 Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Sun, 16 Jan 2011 17:24:41 +0100 Subject: Add checkkeys helper script --- scripts/checkkeys.pl | 91 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100755 scripts/checkkeys.pl diff --git a/scripts/checkkeys.pl b/scripts/checkkeys.pl new file mode 100755 index 0000000..54978c5 --- /dev/null +++ b/scripts/checkkeys.pl @@ -0,0 +1,91 @@ +#!/usr/bin/env perl +## Copyright © 2011 by Daniel Friesel +## 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 (? [^;]+ ) ; +}x; + +my $re_set = qr{ + feh_set_kb \( \& keys \. (? [^ ,]+ ) \s* , + \s* (? \d+ ) , + \s* (? [^ ,]+ ) \s* , + \s* (? \d+ ) , + \s* (? [^ ,]+ ) \s* , + \s* (? \d+ ) , + \s* (? [^ ,]+ ) \s* \) ; +}x; + +my $re_parse_action = qr{ + if \s \( \! strcmp \( action , \s " (? [^"]+ ) " \) \) +}x; + +my $re_parse_conf = qr{ + cur_kb \s = \s \& keys \. (? [^;]+ ) ; +}x; + +my $re_man = qr{ + ^ \. It \s (? .+ ) \s Bq \s (? .+ ) $ +}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"; + } +} -- cgit v1.2.3