9 open FILE, "<$filename" or die "Failed to open $filename: $!\n";
15 # Clear out trailing whitespace
25 # Suppress multiple blank lines
28 next if ($blank == 1);
37 if (/^VENDOR\s+([\w-]+)\s+(\w+)(.*)/) {
41 $pname =~ tr/[a-z].-/[A-Z]__/;
43 $vvalue = "FR_VENDOR_$pname";
44 push @output, "#define $vvalue $2\n";
45 push @output, "#define ${vvalue}_H ($2 << 16)\n";
51 # Remember if we did begin-vendor.
53 if (/^BEGIN-VENDOR\s+([\w-]+)/) {
55 if (!defined $vendor) {
57 } elsif ($vendor ne $1) {
67 if (/^ATTRIBUTE\s+([\w-]+)\s+(\w+)\s+(\w+)(.*)/) {
76 # See if it's old format, with the vendor at the end of
77 # the line. If so, make it the new format.
79 if ($stuff =~ /$vendor/) {
80 if ($begin_vendor == 0) {
83 $stuff =~ s/$vendor//;
89 $pname =~ tr/[a-z].-/[A-Z]__/;
91 next if (defined $attr{$pname});
94 push @output, "#define FR_ATTR_$pname (${vvalue}_H | $value)\n";
96 push @output, "#define FR_ATTR_$pname ($value)\n";
107 if (/^VALUE\s+([\w-]+)\s+([\w-\/,.]+)\s+(\w+)(.*)/) {
112 $pattr =~ tr/[a-z].\/-/[A-Z]___/;
114 # FIXME: check if vendor name is in attribute name.
118 $pname =~ tr/[a-z].\/,-/[A-Z]____/;
120 push @output, "#define FR_VALUE_${pattr}_${pname} ($3)\n";
125 # Remember if we did this.
132 if (/^\$INCLUDE ([a-z0-9.A-Z_]+)/) {
133 push @output, "#include <freeradius-devel/dict/${1}.h>\n";
140 print "/* AUTO-GENERATED HEADER - DO NOT EDIT */\n";