On Fri, 2 May 2003, Dave Miller wrote: [...]
The script is available at http://home.ptd.net/~compsol. Please make sure you get createdb.pl. There is another script, createwinedb.pl which will ONLY parse the wine spec files.
To run this you will need winedump, perl, and access to your windows directory from within Linux.
I mounted the Win95 filesystem using smbfs and all the files came out in uppercase. That's when I noticed that the script had trouble with uppercase filenames. I attached a patch below that should improve things.
I also noticed it does not give any warning if winedump is not in the path. It might be nice to do so.
The cleaner the windows install the better. We don't want to clutter the database with info from dlls not provided with windows. Usage is as follows:
createdb.pl -d -p <path to windows dir> -o <winver (ex. win98)
I ran it on a clean Win95 system which should be pretty clean (never been used, nothing installed on it). I ran the script as follows:
./createdb.pl -d -p /home/fgouget/wine/apidb/mnt/WINDOWS -o win95-4.00.950
(the script adds .ref automatically) And I sent you the resulting file in a separate email.
--- createdb.pl.orig 2003-05-01 21:43:20.000000000 -0700 +++ createdb.pl 2003-05-02 14:46:22.000000000 -0700 @@ -80,7 +80,7 @@ push @dir,$dirs."/".$_; } else {
- push (@dlllist,"$_ $dirs\n") if /.dll$/; + push (@dlllist,"$_ $dirs\n") if /.dll$/i; } } @dlllist = sort @dlllist; @@ -126,10 +126,10 @@ chomp($_); s/^\s*(.*?)\s*$/$1/; ($a,$b,$c,$d,$e)=split(/\s+/,$_); - $fullname = $c if ($a =~ /Contents/ & $c =~ /.dll|.DLL/); + $fullname = $c if ($a =~ /Contents/ & $c =~ /.dll/i); ($path,$name2)=split(/^.*//,$fullname);
- if ($c =~ /.dll|.DLL/ & $a =~ /Content/) { + if ($c =~ /.dll/i & $a =~ /Content/) { ($name,$junk)=split(/./,$name2); }
@@ -187,7 +187,7 @@ chomp($_); s/^\s*(.*?)\s*$/$1/; ($a,$b,$c,$d,$e)=split(/\s+/,$_); - $fullname = $c if ($c =~ /.dll$/ & $a =~ /Dump/); + $fullname = $c if ($c =~ /.dll$/i & $a =~ /Dump/); next LINE if (length $a == 0 | length $a == 2 & length $b == 2 & length $c == 2 & length $d == 2); next LINE if ($b =~ /^[0-9]+$/ & length $c == 0 | $a =~ /TimeDateStamp/); if ($a eq "Name:") {