summaryrefslogtreecommitdiff
path: root/docs-xml/scripts/find_missing_doc
diff options
context:
space:
mode:
Diffstat (limited to 'docs-xml/scripts/find_missing_doc')
-rwxr-xr-xdocs-xml/scripts/find_missing_doc62
1 files changed, 62 insertions, 0 deletions
diff --git a/docs-xml/scripts/find_missing_doc b/docs-xml/scripts/find_missing_doc
new file mode 100755
index 0000000000..6ce547be3e
--- /dev/null
+++ b/docs-xml/scripts/find_missing_doc
@@ -0,0 +1,62 @@
+#!/usr/bin/perl
+
+my %doc;
+
+$topdir = (shift @ARGV) or $topdir = ".";
+
+##################################################
+# Reading links from manpage
+
+$curdir = $ENV{PWD};
+
+chdir("smbdotconf");
+
+open(IN,"xsltproc --xinclude --param smb.context ALL generate-context.xsl parameters.all.xml|");
+
+while(<IN>) {
+ if( /<samba:parameter .*?name="([^"]*?)"/g ){
+ my $name = $1;
+ $name =~ s/ //g;
+ $doc{$name} = "NOTFOUND";
+ }
+}
+
+close(IN);
+
+chdir($curdir);
+
+#################################################
+# Reading entries from source code
+
+
+open(SOURCE,"$topdir/lib/param/param_table.c") or die("Can't open $topdir/lib/param/param_table.c: $!");
+
+while ($ln = <SOURCE>) {
+ last if $ln =~ m/^static\ struct\ parm_struct\ parm_table.*/;
+} #burn through the preceding lines
+
+while ($ln = <SOURCE>) {
+ last if $ln =~ m/^\s*\}\;\s*$/;
+ #pull in the param names only
+ next if $ln =~ m/.*P_SEPARATOR.*/;
+ next unless $ln =~ /\s*\.label\s*=\s*\"(.*)\".*/;
+
+ my $name = $1;
+ $name =~ s/ //g;
+
+ if($doc{lc($name)}) {
+ $doc{lc($name)} = "FOUND";
+ } else {
+ print "'$name' is not documented\n";
+ }
+}
+close SOURCE;
+
+##################################################
+# Trying to find missing references
+
+foreach (keys %doc) {
+ if($doc{$_} cmp "FOUND") {
+ print "'$_' is documented but is not a configuration option\n";
+ }
+}