X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=generate-command-parser.pl;h=01cbe462ec64d05c7a51c2d80da8e7b710c5820c;hb=f406f7187c9ed91ceb3029a8ce8e112576283a72;hp=175d7101592839e379b546845f347cd3df70187d;hpb=2daa8d422ae63d55e4b952070e8e894c0963618f;p=i3%2Fi3 diff --git a/generate-command-parser.pl b/generate-command-parser.pl index 175d7101..01cbe462 100755 --- a/generate-command-parser.pl +++ b/generate-command-parser.pl @@ -118,8 +118,7 @@ close($enumfh); # Third step: Generate the call function. open(my $callfh, '>', 'GENERATED_call.h'); -say $callfh 'static char *GENERATED_call(const int call_identifier) {'; -say $callfh ' char *output = NULL;'; +say $callfh 'static void GENERATED_call(const int call_identifier, struct CommandResult *result) {'; say $callfh ' switch (call_identifier) {'; my $call_id = 0; for my $state (@keys) { @@ -143,17 +142,17 @@ for my $state (@keys) { say $callfh '#ifndef TEST_PARSER'; my $real_cmd = $cmd; if ($real_cmd =~ /\(\)/) { - $real_cmd =~ s/\(/(¤t_match/; + $real_cmd =~ s/\(/(¤t_match, result/; } else { - $real_cmd =~ s/\(/(¤t_match, /; + $real_cmd =~ s/\(/(¤t_match, result, /; } - say $callfh " output = $real_cmd;"; + say $callfh " $real_cmd;"; say $callfh '#else'; # debug $cmd =~ s/[^(]+\(//; $cmd =~ s/\)$//; $cmd = ", $cmd" if length($cmd) > 0; - say $callfh qq| printf("$fmt\\n"$cmd);|; + say $callfh qq| fprintf(stderr, "$fmt\\n"$cmd);|; say $callfh '#endif'; say $callfh " state = $next_state;"; say $callfh " break;"; @@ -164,7 +163,6 @@ for my $state (@keys) { say $callfh ' default:'; say $callfh ' printf("BUG in the parser. state = %d\n", call_identifier);'; say $callfh ' }'; -say $callfh ' return output;'; say $callfh '}'; close($callfh);