diff options
Diffstat (limited to 'regen')
-rw-r--r-- | regen/HeaderParser.pm | 18 | ||||
-rwxr-xr-x | regen/embed.pl | 7 |
2 files changed, 17 insertions, 8 deletions
diff --git a/regen/HeaderParser.pm b/regen/HeaderParser.pm index 0089ae7035..7272a596c8 100644 --- a/regen/HeaderParser.pm +++ b/regen/HeaderParser.pm @@ -502,7 +502,7 @@ sub _normalize_if_elif { # calls parse_fh() sub parse_text { my ($self, $text)= @_; - local $self->{parse_source} = "(buffer)"; + local $self->{parse_source}= "(buffer)"; open my $fh, "<", \$text or die "Failed to open buffer for read: $!"; return $self->parse_fh($fh); @@ -517,7 +517,7 @@ sub parse_fh { my @cond; my @cond_line; my $last_cond; - local $self->{parse_source} = $self->{parse_source} || "(unknown)"; + local $self->{parse_source}= $self->{parse_source} || "(unknown)"; my $cb= $self->{pre_process_content}; $self->{orig_content}= ""; my $line_num= 1; @@ -689,6 +689,20 @@ sub tidy_embed_fnc_entry { $line =~ s/\s+\z//; ($line)= expand($line); my ($flags, $ret, $name, @args)= split /\s*\|\s*/, $line; + my %flag_seen; + $flags= join "", grep !$flag_seen{$_}++, sort split //, $flags; + if ($flags =~ s/^#//) { + $flags .= "#"; + } + if ($flags eq "#") { + die "Not allowed to use only '#' for flags" + . "in 'embed.fnc' at line $line_data->{start_line_num}"; + } + if (!$flags) { + die "Missing flags in function definition" + . " in 'embed.fnc' at line $line_data->{start_line_num}\n" + . "Did you a forget a line continuation on the previous line?\n"; + } for ($ret, @args) { s/(\w)\*/$1 */g; s/\*\s+(\w)/*$1/g; diff --git a/regen/embed.pl b/regen/embed.pl index 81798816de..1c2fe4a5f9 100755 --- a/regen/embed.pl +++ b/regen/embed.pl @@ -128,12 +128,7 @@ sub generate_proto_h { die_at_end "$plain_func: u flag only usable with m" if $flags =~ /u/ && $flags !~ /m/; - my ($static_flag, @extra_static_flags)= do { - # the seen filter can be removed once flag dedupe - # is done in tidy_embed.pl - my %seen; - grep !$seen{$_}++, $flags =~/([SsIi])/g; - }; + my ($static_flag, @extra_static_flags)= $flags =~/([SsIi])/g; if (@extra_static_flags) { my $flags_str = join ", ", $static_flag, @extra_static_flags; |