--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/extract Wed Nov 19 21:41:17 2014 +0100
@@ -0,0 +1,23 @@
+#! /usr/bin/perl
+use 5.014;
+use strict;
+use warnings;
+use List::MoreUtils qw(uniq);
+
+my $what = shift // die "$0: Usage {main} [spec.xfpt]\n";
+
+@ARGV = "$ENV{HOME}/src/exim/doc/doc-docbook/spec.xfpt"
+ if not @ARGV;
+
+my $pattern = do {
+ given ($what) {
+ when ('main') { qr/^\.option\s(")?(?<item>\S+)(?(1)\1)\smain/ }
+ when ('vars') { qr/^\.vitem\s&(?<item>\$\w+)/ }
+ when ('ops') { qr/^\.vitem\s&\*(?<item>\$\{\w+:)/ }
+ when ('conds') { qr/^\.vitem\s&\*(?<item>\w+)\&~\{/ }
+ when ('funcs') { qr/^\.vitem\s(")?&\*(?<item>\$\{\w+)\{/ }
+ default { die "$0: unknown search pattern\n" }
+ }
+};
+
+say join "\n", sort uniq map { /$pattern/ ? $+{item} : () } <>;