use strict;
use warnings;
my $fname = shift;
my $tmpfname = $fname . ".tmp";
my $F;
my $OF;
open($F, $fname) || die "Could not open file $fname\n";
open($OF, ">$tmpfname") || die "Could not open file $tmpfname\n";
while (my $indata = <$F>)
{
$indata =~ s/(char \*yy_c_buf_p = \(char \*\) 0;)/THR_LOCAL $1/;
$indata =~ s/(char \*yy_c_buf_p = NULL;)/THR_LOCAL $1/;
$indata =~ s/(char \*yy_last_accepting_cpos;)/THR_LOCAL $1/;
$indata =~ s/(char \*yytext;)/THR_LOCAL $1/;
$indata =~ s/(char \*base_yytext;)/THR_LOCAL $1/;
$indata =~ s/(char \*plpgsql_base_yytext;)/THR_LOCAL $1/;
$indata =~ s/(char yy_hold_char;)/THR_LOCAL $1/;
$indata =~ s/(FILE \*yyin = \(FILE \*\) 0, \*yyout = \(FILE \*\) 0;)/THR_LOCAL $1/;
$indata =~ s/(FILE \*yyin, \*yyout;)/THR_LOCAL $1/;
$indata =~ s/(int \*yy_start_stack = 0;)/THR_LOCAL $1/;
$indata =~ s/(int yy_did_buffer_switch_on_eof;)/THR_LOCAL $1/;
$indata =~ s/(int yy_init = 1;)/THR_LOCAL $1/;
$indata =~ s/(int yy_start = 0;)/THR_LOCAL $1/;
$indata =~ s/(int yy_start_stack_depth = 0;)/THR_LOCAL $1/;
$indata =~ s/(int yy_start_stack_ptr = 0;)/THR_LOCAL $1/;
$indata =~ s/(int yychar;)/THR_LOCAL $1/;
$indata =~ s/(int yydebug;)/THR_LOCAL $1/;
$indata =~ s/(int yyleng;)/THR_LOCAL $1/;
$indata =~ s/(int yynerrs;)/THR_LOCAL $1/;
$indata =~ s/(YY_BUFFER_STATE yy_current_buffer = 0;)/THR_LOCAL $1/;
$indata =~ s/(yy_state_type yy_last_accepting_state;)/THR_LOCAL $1/;
$indata =~ s/(YYLTYPE base_yylloc;)/THR_LOCAL $1/;
$indata =~ s/(YYLTYPE yylloc;)/THR_LOCAL $1/;
$indata =~ s/(YYSTYPE base_yylval;)/THR_LOCAL $1/;
$indata =~ s/(YYSTYPE boot_yylval;)/THR_LOCAL $1/;
$indata =~ s/(YYSTYPE plpgsql_yylval;)/THR_LOCAL $1/;
$indata =~ s/(YYLTYPE plpgsql_yylloc;)/THR_LOCAL $1/;
$indata =~ s/(YYSTYPE yylval;)/THR_LOCAL $1/;
$indata =~ s/(static )(int yy_n_chars;)/$1THR_LOCAL $2/;
$indata =~ s/(static )(yy_size_t yy_n_chars;)/$1THR_LOCAL $2/;
$indata =~ s/(extern )(FILE \*replication_yyin, \*replication_yyout;)/$1THR_LOCAL $2/;
$indata =~ s/(extern )(int replication_yy_flex_debug;)/$1THR_LOCAL $2/;
$indata =~ s/(int replication_yyleng;)/THR_LOCAL $1/;
$indata =~ s/(static )(size_t yy_buffer_stack_top = 0;)/$1THR_LOCAL $2/;
$indata =~ s/(static )(size_t yy_buffer_stack_max = 0;)/$1THR_LOCAL $2/;
$indata =~ s/(static )(YY_BUFFER_STATE \* yy_buffer_stack = 0;)/$1THR_LOCAL $2/;
$indata =~ s/(static )(YY_BUFFER_STATE \* yy_buffer_stack = NULL;)/$1THR_LOCAL $2/;
$indata =~ s/(static )(int yy_init = 0;)/$1THR_LOCAL $2/;
$indata =~ s/(FILE \*replication_yyin = \(FILE \*\) 0, \*replication_yyout = \(FILE \*\) 0;)/THR_LOCAL $1/;
$indata =~ s/(int replication_yy_flex_debug = 0;)/THR_LOCAL $1/;
$indata =~ s/(char \*replication_yytext;)/THR_LOCAL $1/;
$indata =~ s/(FILE \*yyin = NULL, \*yyout = NULL;)/THR_LOCAL $1/;
$indata =~ s/(YYLTYPE yylloc)/THR_LOCAL $1/;
$indata =~ s/(extern )(YYSTYPE replication_yylval;)/$1THR_LOCAL $2/;
$indata =~ s/(YYSTYPE yylval YY_INITIAL_VALUE\(yyval_default\);)/THR_LOCAL $1/;
$indata =~ s/THR_LOCAL THR_LOCAL/THR_LOCAL/;
print $OF $indata;
}
close($F);
close($OF);
unlink($fname);
rename($tmpfname, $fname);