--- /dev/null
+#!/usr/bin/perl -n
+# NOTE the use of -n above; this script is called in a loop.
+use warnings;
+use strict;
+
+our $scanning;
+our %used_chars;
+BEGIN {
+ $scanning = 0;
+ %used_chars = ();
+
+ open STDIN, "../src/main.c" or die "main.c: $!\n";
+}
+
+if (/^static struct cmdline_option option_data/) {
+ $scanning = 1;
+}
+elsif (/[}];/) {
+ $scanning = 0;
+}
+elsif (
+ $scanning &&
+ /^[\t ]*\{ "[^"]*", '(.)', OPT_[A-Z0-9_]*, /
+) {
+ $used_chars{$1} = 1;
+}
+
+END {
+ my $cols = 0;
+ my $max_cols = 13;
+ my $opt_chars =
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789%+/";
+ print "Free chars:\n\t";
+ for (my $i = 0; $i < length $opt_chars; ++$i, ++$cols) {
+ if ($cols == $max_cols) {
+ $cols = 0;
+ print "\n\t";
+ }
+ my $opt = substr($opt_chars,$i,1);
+ print ' ';
+ if (!$used_chars{ $opt }) {
+ print $opt;
+ } else {
+ print ' ';
+ }
+ }
+ print "\n";
+}