diff src/config/settings-get.pl @ 10107:dcda7c495eb6 HEAD

struct setting_parser_info now specifies the module name.
author Timo Sirainen <tss@iki.fi>
date Tue, 20 Oct 2009 17:36:06 -0400
parents d7ccdbb58a03
children d589d568a19d
line wrap: on
line diff
--- a/src/config/settings-get.pl	Tue Oct 20 17:15:01 2009 -0400
+++ b/src/config/settings-get.pl	Tue Oct 20 17:36:06 2009 -0400
@@ -22,6 +22,7 @@
   my $externs = "";
   my $code = "";
   my %funcs;
+  my $cur_name = "";
   
   while (<$f>) {
     my $write = 0;
@@ -32,8 +33,7 @@
 	$state++;
       } elsif (/^(static )?struct setting_parser_info (.*) = {/) {
 	$state++;
-	my $name = $2;
-	$parsers{$name} = 1 if ($name !~ /\*/);
+	$cur_name = $2;
       } elsif (/^extern struct setting_parser_info (.*);/) {
 	$externs .= "extern struct setting_parser_info $1;\n";
       } elsif (/\/\* <settings checks> \*\//) {
@@ -55,6 +55,9 @@
     
     if ($state == 1 || $state == 3) {
       if ($state == 1) {
+	if (/MEMBER\(module_name\) "(.*)"/) {
+	  $parsers{$cur_name} = $1;
+	}
 	if (/DEFLIST.*".*",(.*)$/) {
 	  my $value = $1;
 	  if ($value =~ /.*&(.*)\)/) {
@@ -87,15 +90,12 @@
   close $f;
 }
 
-print "const struct all_settings_root all_roots[] = {\n";
+print "const struct setting_parser_info *all_roots[] = {\n";
 foreach my $name (keys %parsers) {
-  next if (!$parsers{$name});
+  my $module = $parsers{$name};
+  next if (!$module);
 
-  my $module = "";
-  if ($name =~ /^([^_]*)/) {
-    $module = $1;
-  }
-  print "  { \"$module\", &".$name." }, \n";
+  print "\t&".$name.", \n";
 }
-print "  { NULL, NULL }\n";
+print "\tNULL\n";
 print "};\n";