commctrl.h cleanup
Alexandre Julliard
julliard at winehq.org
Thu Sep 4 18:08:42 CDT 2003
"Dimitrie O. Paun" <dimi at intelliware.ca> writes:
> I have a lot more changes (cleanup of winnt.h), do you want me to drop
> them all? Fixing _all_ headers is a big task, I don't understand why
> we can't do it in distinct chunks....
Because such large scale changes are a real pain for everybody who has
local changes; we can't really avoid changing every file, but we can
avoid changing every file 10 times. Besides, we'll need a script to
fix winbase.h, so we might as well use it for the others too.
Anyway, just to show it can be done here's the beginning of such a
script; you can do 'fix-includes windef.h winbase.h <files>' and it
will make sure all the files listed include windef.h before winbase.h
without making unnecessary changes. It's not perfect yet, but it sure
beats doing everything by hand...
--
Alexandre Julliard
julliard at winehq.com
-------------- next part --------------
#!/usr/bin/perl
#
# usage: fix-includes file_to_add.h before_file.h <files>
#
$toadd = shift @ARGV;
$before = shift @ARGV;
# build the dependency list
system("./tools/makedep -fdeps -Iinclude -Idlls/ddraw `find . -name \\*.h`");
open DEPS, "deps" or die "cannot open deps";
while (<DEPS>)
{
chomp;
while (/\\$/) { chop; $_ .= <DEPS>; }
my ($obj, at deps) = split;
for (my $i = 0; $i <= $#deps; $i++) { $deps[$i] =~ s/.*\///; }
my $header = $deps[0];
foreach my $f (@deps) { $includes{$header}{$f} = 1; }
}
close DEPS;
unlink "deps";
foreach $file (@ARGV)
{
open IN, "$file" or die "cannot open $file";
@lines = ();
$added = 0;
while (<IN>)
{
chomp;
if (/^\s*\#\s*include\s+([<"])(.*)[>"]/)
{
my $quote = $1;
my $incl = $2;
if ($includes{$incl}{$toadd})
{
# the header includes the one we want
last unless $added; # not added yet, nothing to do
next if ($incl eq $toadd); # don't add it twice
}
elsif ($includes{$incl}{$before})
{
push @lines, ($quote eq "<") ? "#include <$toadd>\n" : "#include \"$toadd\"\n" unless $added;
$added = 1;
}
}
push @lines, $_ . "\n";
}
close IN;
if ($added)
{
open OUT, ">$file.new" or die "cannot create $file.new";
print OUT @lines;
close OUT;
print "changed $file\n";
system "chmod --reference=$file $file.new";
system "diff -u $file $file.new";
rename "$file.new", "$file";
}
}
More information about the wine-devel
mailing list