FIXMEs in DllCanUnloadNow and friends (and how to handle them)
Michael Stefaniuc
mstefani at redhat.com
Thu Jan 7 07:03:43 CST 2010
Hello Reece,
Reece Dunn wrote:
> As a result of the "Wine FIXME Report 2009 Aug - Dec" thread, I
thanks for the patch. It is good to see that the FIXME report is useful
and generated some Wine commits.
> created the following to hunt for DllCanUnloadNow calls that were
> marked as being FIXME stubs:
>
> cat > DllCanUnloadNow.pl < EOF
> #!/usr/local/bin/perl
> # Based on http://www.unix.com/unix-dummies-questions-answers/56703-multiline-grep.html
>
> use strict;
>
> my $filename = shift;
>
> open (FILE, "<", $filename) or die "Failed to read file $filename : $! \n";
> my $whole_file;
> {
> local $/;
> $whole_file = <FILE>;
> }
> close(FILE);
>
> if ($whole_file =~ m#HRESULT WINAPI DllCanUnloadNow ?\( ?(void|VOID)
> ?\)[\n ]{\n\s+FIXME#sg)
> {
> print $filename . "\n";
> }
> EOF
>
> and used it with the following:
>
> $ grep -F DllCanUnloadNow -r dlls | grep -F HRESULT | sed -e
> 's/:.*//' | while read line ; do perl DllCanUnloadNow.pl $line ; done
> | sort | tee results.log
>
> This gives the following results:
Impressive script. Not sure if you have heard of coccinelle (semantic
patcher, http://coccinelle.lip6.fr/); it sees some usage in the Linux
Kernel project. As I would like to see it used on Wine too I've have
added the corresponding cocci file for this task. This task is a prime
example of coccinelle's intended usage.
------Snip DllCanUnloadNow.cocci------
@@ @@
DllCanUnloadNow( ... ) {
...
- FIXME( ... );
...
}
------Snip DllCanUnloadNow.cocci------
Run it with:
spatch -sp_file DllCanUnloadNow.cocci -patch $winesrcdir $winesrcdir/dlls
And you'll get a patch in git diff file format.
bye
michael
More information about the wine-devel
mailing list