+++ /dev/null
-#!/usr/bin/perl
-
-for $filename (@ARGV) {
- open(SRC, $filename) || die "$filename: $!";
- $state = 0;
- delete @tvars{keys %tvars};
- while(<SRC>) {
- chomp;
- if(/struct configvar/ && /\[\]/) {
- $state = 1;
- }
- if(($state == 1) && /^\s*\/\*\*/) {
- $curdoc = "";
- $state = 2;
- s/^\s*\/\*//;
- }
- if(($state == 1) && /\{CONF_VAR_(\w+), \"([^\"]*)\"/) {
- $var = $2; $type = $1; $def = "";
- if($type eq "INT") {
- ($def) = /\.num = (\d+)/;
- } elsif($type eq "BOOL") {
- ($def) = /\.num = (\d+)/;
- if($def) {
- $def = "true";
- } else {
- $def = "false";
- }
- } elsif($type eq "STRING") {
- ($def) = /\.str = L\"([^\"]*)\"/;
- $def = "\"$def\"";
- }
- $tvars{$var} = {"doc" => $curdoc, "type" => $type, "def" => $def};
- $curdoc = "";
- }
- if(($state == 1) && /\s*\};$/) {
- $state = 0;
- }
- if($state == 2) {
- if(/\*\/$/) {
- $state = 1;
- s/\*\/$//;
- }
- s/^\s*\*\s*//;
- s/\s*$//;
- if(length($curdoc) > 0) {
- $curdoc .= " ";
- }
- $curdoc .= $_;
- }
- }
- close SRC;
- $module = $filename;
- $module =~ s/^.*\///;
- $module =~ s/\..*$//;
- for $var (keys %tvars) {
- $vars{"$module.$var"} = $tvars{$var};
- }
-}
-
-$types{"BOOL"} = "boolean";
-$types{"INT"} = "integer";
-$types{"STRING"} = "string";
-$types{"IPV4"} = "IPv4 address";
-while(<STDIN>) {
- if(/\@DATE\@/) {
- @lt = localtime time;
- $date = sprintf("%04i-%02i-%02i", $lt[5] + 1900, $lt[4] + 1, $lt[3]);
- s/\@DATE\@/$date/;
- }
- if(/\@VARIABLES\@/) {
- $_ = "";
- for $var (sort keys %vars) {
- $_ .= ".TP\n.BI $var \" ";
- $_ .= $types{$vars{$var}->{"type"}};
- $_ .= "\"\n";
- $_ .= $vars{$var}->{"doc"};
- if(!($vars{$var}->{"type"} eq "IPV4")) {
- $_ .= "\n\nDefault value: ";
- $_ .= $vars{$var}->{"def"};
- }
- $_ .= "\n";
- }
- }
- print;
-}