#!/usr/bin/perl -w # Copyright 2001 Patrik Stridvall use strict; BEGIN { $0 =~ m%^(.*?/?tools)/winapi/winapi_fixup$%; require "$1/winapi/setup.pm"; } use config qw( &file_type &files_filter &file_skip &files_skip &file_normalize &get_spec_files $current_dir $wine_dir $winapi_dir $winapi_check_dir ); use output qw($output); use winapi_fixup_options qw($options); if($options->progress) { $output->enable_progress; } else { $output->disable_progress; } use c_parser; use type; use winapi_fixup_documentation qw(&fixup_documentation); use winapi_fixup_editor; use winapi_fixup_statements qw(&fixup_statements); my @c_files = $options->c_files; @c_files = files_skip(@c_files); @c_files = files_filter("winelib", @c_files); my $progress_output; my $progress_current = 0; my $progress_max = scalar(@c_files); foreach my $file (@c_files) { my $editor = new winapi_fixup_editor($file); $progress_current++; $output->progress("$file (file $progress_current of $progress_max)"); $output->prefix("$file:"); { open(IN, "< $file"); local $/ = undef; $_ = ; close(IN); } my $parser = new c_parser($file); my $found_preprocessor = sub { my $begin_line = shift; my $begin_column = shift; my $preprocessor = shift; # $output->write("$begin_line.$begin_column: preprocessor: $preprocessor\n"); return 1; }; $parser->set_found_preprocessor_callback($found_preprocessor); my $found_comment = sub { my $begin_line = shift; my $begin_column = shift; my $comment = shift; # $output->write("$begin_line.$begin_column: comment: $comment\n"); return 1; }; $parser->set_found_comment_callback($found_comment); my $found_declaration = sub { my $begin_line = shift; my $begin_column = shift; my $end_line = shift; my $end_column = shift; my $declaration = shift; # $output->write("$begin_line.$begin_column-$end_line.$end_column: declaration: \\\n$declaration\n"); return 1; }; $parser->set_found_declaration_callback($found_declaration); my $function; my $found_function = sub { $function = shift; my $name = $function->name; my $begin_line = $function->begin_line; my $begin_column = $function->begin_column; $output->progress("$file (file $progress_current of $progress_max): $name"); $output->prefix("$file:$begin_line: function $name: "); # $output->prefix_callback(sub { return $function->prefix; }); if($options->documentation) { # fixup_documentation($function, $editor); } if($options->statements) { fixup_statements($function, $editor); } my $statements = $function->statements; if(!defined($statements)) { $function = undef; $output->prefix("$file: "); } return 0; }; $parser->set_found_function_callback($found_function); my $found_variable = sub { my $begin_line = shift; my $begin_column = shift; my $linkage = shift; my $type = shift; my $name = shift; # $output->write("$begin_line.$begin_column: $linkage $type $name\n"); return 1; }; $parser->set_found_variable_callback($found_variable); my $line = 1; my $column = 0; if(!$parser->parse_c_file(\$_, \$line, \$column)) { $output->write("can't parse file\n"); } $output->prefix(""); $editor->flush; }