Several additions and bug fixes.
diff --git a/tools/winapi/config.pm b/tools/winapi/config.pm
index 9b46378..6e7aa8e 100644
--- a/tools/winapi/config.pm
+++ b/tools/winapi/config.pm
@@ -12,7 +12,7 @@
&file_absolutize &file_normalize
&file_type &files_filter
&file_skip &files_skip
- &get_spec_files
+ &get_c_files &get_h_files &get_spec_files
);
@EXPORT_OK = qw(
$current_dir $wine_dir $winapi_dir $winapi_check_dir
@@ -98,20 +98,27 @@
return $_;
}
-sub get_spec_files {
- $output->progress("$wine_dir: searching for *.spec");
+sub _get_files {
+ my $extension = shift;
+ my $type = shift;
- my @spec_files = map {
+ $output->progress("$wine_dir: searching for *.$extension");
+
+ my @files = map {
s%^\./%%;
s%^$wine_dir/%%;
- if(file_type($_) eq "winelib") {
+ if(file_type($_) eq $type) {
$_;
} else {
();
}
- } split(/\n/, `find $wine_dir -name \\*.spec`);
+ } split(/\n/, `find $wine_dir -name \\*.$extension`);
- return @spec_files;
+ return @files;
}
+sub get_c_files { return _get_files("c", @_); }
+sub get_h_files { return _get_files("h", @_); }
+sub get_spec_files { return _get_files("spec", @_); }
+
1;
diff --git a/tools/winapi/output.pm b/tools/winapi/output.pm
index 6234d6c..1b46172 100644
--- a/tools/winapi/output.pm
+++ b/tools/winapi/output.pm
@@ -34,11 +34,13 @@
my $progress = \${$self->{PROGRESS}};
my $last_progress = \${$self->{LAST_PROGRESS}};
+ my $last_time = \${$self->{LAST_TIME}};
my $progress_count = \${$self->{PROGRESS_COUNT}};
my $prefix = \${$self->{PREFIX}};
$$progress = "";
$$last_progress = "";
+ $$last_time = 0;
$$progress_count = 0;
$$prefix = "";
@@ -107,10 +109,26 @@
sub progress {
my $self = shift;
my $progress = \${$self->{PROGRESS}};
+ my $last_time = \${$self->{LAST_TIME}};
$$progress = shift;
$self->update_progress;
+ $$last_time = 0;
+}
+
+sub lazy_progress {
+ my $self = shift;
+ my $progress = \${$self->{PROGRESS}};
+ my $last_time = \${$self->{LAST_TIME}};
+
+ $$progress = shift;
+
+ my $time = time();
+ if($time - $$last_time > 0) {
+ $self->update_progress;
+ $$last_time = $time;
+ }
}
sub prefix {
diff --git a/tools/winapi/setup.pm b/tools/winapi/setup.pm
index 15d2e16..9c0961f 100644
--- a/tools/winapi/setup.pm
+++ b/tools/winapi/setup.pm
@@ -50,9 +50,7 @@
exit 1;
}
- push @INC, ($winapi_check_dir, $winapi_dir) if $tool eq "winapi_check";
- push @INC, ($winapi_dir, $winapi_check_dir) if $tool eq "winapi_extract";
- push @INC, ($winapi_dir, $winapi_check_dir) if $tool eq "winapi_fixup";
+ push @INC, ($winapi_dir, $winapi_check_dir);
}
1;
diff --git a/tools/winapi/winapi_extract b/tools/winapi/winapi_extract
index 981a4b4..3680bdb 100755
--- a/tools/winapi/winapi_extract
+++ b/tools/winapi/winapi_extract
@@ -55,7 +55,7 @@
{
local $_;
- foreach my $spec_file (get_spec_files) {
+ foreach my $spec_file (get_spec_files("winelib")) {
my $module;
my $type;
@@ -177,13 +177,15 @@
}
}
-my @files = files_skip($options->c_files);
+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(@files);
+my $progress_max = scalar(@c_files);
-foreach my $file (@files) {
+foreach my $file (@c_files) {
my %functions;
$progress_current++;