Commit b2fa4208 authored by Hans Leidekker's avatar Hans Leidekker Committed by Alexandre Julliard

Get rid of the static module list.

parent 6e775f89
% dlls/advapi32/advapi32.spec
dlls/advapi32
misc
% dlls/avicap32/avicap32.spec
dlls/avicap32
% dlls/avifil32/avifil32.spec
dlls/avifil32
% dlls/avifil32/avifile.spec
dlls/avifil32
% dlls/cabinet/cabinet.spec
dlls/cabinet
% dlls/capi2032/capi2032.spec
dlls/capi2032
% dlls/cfgmgr32/cfgmgr32.spec
dlls/cfgmgr32
% dlls/comcat/comcat.spec
dlls/comcat
% dlls/comctl32/comctl32.spec
dlls/comctl32
% dlls/commdlg/comdlg32.spec
dlls/commdlg
% dlls/commdlg/commdlg.spec
dlls/commdlg
% dlls/crtdll/crtdll.spec
dlls/crtdll
% dlls/crypt32/crypt32.spec
dlls/crypt32
% dlls/ctl3d/ctl3d.spec
dlls/ctl3d
% dlls/ctl3d/ctl3d32.spec
dlls/ctl3d
% dlls/ctl3d/ctl3dv2.spec
dlls/ctl3d
% dlls/d3dim/d3dim.spec
dlls/d3dim
% dlls/d3d8/d3d8.spec
dlls/d3d8
% dlls/d3d9/d3d9.spec
dlls/d3d9
% dlls/d3dim/d3dim.spec
dlls/d3dim
% dlls/d3dx8/d3dx8.spec
dlls/d3dx8
% dlls/dciman32/dciman32.spec
dlls/dciman32
% dlls/ddraw/ddraw.spec
dlls/ddraw
dlls/ddraw/dclipper
% dlls/devenum/devenum.spec
dlls/devenum
% dlls/dinput/dinput.spec
dlls/dinput
% dlls/dinput8/dinput8.spec
dlls/dinput8
% dlls/dmband/dmband.spec
dlls/dmband
% dlls/dmcompos/dmcompos.spec
dlls/dmcompos
% dlls/dmime/dmime.spec
dlls/dmime
% dlls/dmloader/dmloader.spec
dlls/dmloader
% dlls/dmscript/dmscript.spec
dlls/dmscript
% dlls/dmstyle/dmstyle.spec
dlls/dmstyle
% dlls/dmsynth/dmsynth.spec
dlls/dmsynth
% dlls/dmusic/dmusic.spec
dlls/dmusic
% dlls/dmusic32/dmusic32.spec
dlls/dmusic32
% dlls/dplay/dplay.spec
% dlls/dplayx/dplayx.spec
dlls/dplayx
% dlls/dpnhpast/dpnhpast.spec
dlls/dpnhpast
% dlls/dsound/dsound.spec
dlls/dsound
% dlls/gdi/dispdib.spec
graphics
% dlls/gdi/gdi.exe.spec
dlls/gdi
dlls/gdi/enhmfdrv
dlls/gdi/mfdrv
graphics
objects
% dlls/gdi/gdi32.spec
dlls/gdi
dlls/gdi/enhmfdrv
dlls/gdi/mfdrv
graphics
objects
% dlls/gdi/wing.spec
dlls/gdi
% dlls/glu32/glu32.spec
dlls/glu32
% dlls/glut32/glut32.spec
dlls/glut32
% dlls/iccvid/iccvid.spec
dlls/iccvid
% dlls/icmp/icmp.spec
dlls/icmp
% dlls/imagehlp/imagehlp.spec
dlls/imagehlp
% dlls/imm32/imm.spec
% dlls/imm32/imm32.spec
dlls/imm32
% dlls/iphlpapi/iphlpapi.spec
dlls/iphlpapi
% dlls/kernel/comm.drv.spec
% dlls/kernel/krnl386.exe.spec
dlls/kernel
files
misc
% dlls/kernel/kernel32.spec
dlls/kernel
files
misc
% dlls/mapi32/mapi32.spec
dlls/mapi32
% dlls/msimg32/msimg32.spec
dlls/msimg32
% dlls/msisys/msisys.ocx.spec
dlls/msisys
% dlls/msvideo/msrle32/msrle32.spec
dlls/msvideo/msrle32
% dlls/msvcrt/msvcrt.spec
dlls/msvcrt
% dlls/msvcrt20/msvcrt20.spec
dlls/msvcrt20
% dlls/msvcrt40/msvcrt40.spec
dlls/msvcrt40
% dlls/msvcrtd/msvcrtd.spec
dlls/msvcrtd
% dlls/mswsock/mswsock.spec
dlls/mswsock
% dlls/kernel/stress.spec
dlls/kernel
% dlls/kernel/system.drv.spec
misc
% dlls/kernel/toolhelp.spec
dlls/kernel
% dlls/kernel/win87em.spec
dlls/kernel
% dlls/kernel/windebug.spec
dlls/kernel
% dlls/lzexpand/lz32.spec
dlls/lzexpand
% dlls/lzexpand/lzexpand.spec
dlls/lzexpand
% dlls/msdmo/msdmo.spec
dlls/msdmo
% dlls/mpr/mpr.spec
dlls/mpr
% dlls/msacm/msacm.spec
dlls/msacm
% dlls/msacm/msacm32.spec
dlls/msacm
% dlls/msacm/imaadp32/imaadp32.acm.spec
dlls/msacm/imaadp32
% dlls/msacm/msadp32/msadp32.acm.spec
dlls/msacm/msadp32
% dlls/msacm/msg711/msg711.acm.spec
dlls/msacm/msg711
% dlls/msacm/winemp3/winemp3.acm.spec
dlls/msacm/winemp3
% dlls/mshtml/mshtml.spec
dlls/mshtml
% dlls/msi/msi.spec
dlls/msi
% dlls/msnet32/msnet32.spec
dlls/msnet32
% dlls/msvideo/msvfw32.spec
dlls/msvideo
% dlls/msvideo/msvideo.spec
dlls/msvideo
% dlls/netapi32/netapi32.spec
dlls/netapi32
% dlls/newdev/newdev.spec
dlls/newdev
% dlls/ntdll/ntdll.spec
dlls/ntdll
% dlls/odbc32/odbc32.spec
dlls/odbc32
% dlls/ole32/compobj.spec
dlls/ole32
% dlls/ole32/ole2.spec
dlls/ole32
% dlls/ole32/ole32.spec
dlls/ole32
% dlls/ole32/ole2conv.spec
% dlls/ole32/ole2nls.spec
dlls/ole32
% dlls/ole32/ole2prox.spec
% dlls/ole32/ole2thk.spec
% dlls/ole32/storage.spec
dlls/ole32
% dlls/oleacc/oleacc.spec
dlls/oleacc
% dlls/oleaut32/ole2disp.spec
dlls/oleaut32
% dlls/oleaut32/oleaut32.spec
dlls/oleaut32
% dlls/qcap/qcap.spec
dlls/qcap
% dlls/oleaut32/typelib.spec
dlls/oleaut32
% dlls/olecli/olecli.spec
dlls/olecli
% dlls/olecli/olecli32.spec
dlls/olecli
% dlls/oledlg/oledlg.spec
dlls/oledlg
% dlls/olepro32/olepro32.spec
dlls/olepro32
% dlls/olesvr/olesvr.spec
dlls/olesvr
% dlls/olesvr/olesvr32.spec
dlls/olesvr
% dlls/opengl32/opengl32.spec
dlls/opengl32
% dlls/psapi/psapi.spec
dlls/psapi
% dlls/quartz/quartz.spec
dlls/quartz
% dlls/rasapi32/rasapi16.spec
% dlls/rasapi32/rasapi32.spec
dlls/rasapi32
% dlls/richedit/riched32.spec
dlls/richedit
% dlls/rpcrt4/rpcrt4.spec
dlls/rpcrt4
% dlls/serialui/serialui.spec
dlls/serialui
% dlls/setupapi/setupapi.spec
dlls/setupapi
% dlls/setupapi/setupx.spec
dlls/setupapi
% dlls/shell32/shell.spec
dlls/shell32
misc
% dlls/shell32/shell32.spec
dlls/shell32
% dlls/shdocvw/shdocvw.spec
dlls/shdocvw
% dlls/shfolder/shfolder.spec
% dlls/shlwapi/shlwapi.spec
dlls/shlwapi
% dlls/snmpapi/snmpapi.spec
dlls/snmpapi
% dlls/tapi32/tapi32.spec
dlls/tapi32
% dlls/sti/sti.spec
dlls/sti
% dlls/ttydrv/ttydrv.spec
dlls/ttydrv
% dlls/twain/twain_32.spec
dlls/twain
% dlls/unicows/unicows.spec
dlls/unicows
% dlls/urlmon/urlmon.spec
dlls/urlmon
% dlls/user/ddeml.spec
dlls/user/dde
% dlls/user/display.drv.spec
dlls/user
objects
% dlls/user/keyboard.drv.spec
dlls/user
windows
% dlls/user/mouse.drv.spec
dlls/user
% dlls/url/url.spec
dlls/url
% dlls/user/user.exe.spec
controls
dlls/user
misc
windows
% dlls/user/user32.spec
controls
dlls/user
dlls/user/dde
objects
windows
% dlls/uxtheme/uxtheme.spec
dlls/uxtheme
% dlls/version/ver.spec
dlls/version
% dlls/version/version.spec
dlls/version
% dlls/win32s/w32skrnl.spec
dlls/win32s
% dlls/win32s/w32sys.spec
dlls/win32s
% dlls/win32s/win32s16.spec
dlls/win32s
% dlls/winaspi/winaspi.spec
dlls/winaspi
% dlls/winaspi/wnaspi32.spec
dlls/winaspi
% dlls/wined3d/wined3d.spec
dlls/wined3d
% dlls/winedos/winedos.spec
dlls/winedos
% dlls/wineps/wineps.spec
dlls/wineps
% dlls/wineps/wineps16.drv.spec
dlls/wineps
% dlls/wininet/wininet.spec
dlls/wininet
% dlls/winmm/sound.spec
dlls/winmm
% dlls/winmm/joystick/joystick.drv.spec
dlls/winmm/joystick
% dlls/winmm/mcianim/mcianim.drv.spec
dlls/winmm/mcianim
% dlls/winmm/mciavi/mciavi.drv.spec
dlls/winmm/mciavi
% dlls/winmm/mcicda/mcicda.drv.spec
dlls/winmm/mcicda
% dlls/winmm/mciseq/mciseq.drv.spec
dlls/winmm/mciseq
% dlls/winmm/mciwave/mciwave.drv.spec
dlls/winmm/mciwave
% dlls/winmm/midimap/midimap.drv.spec
dlls/winmm/midimap
% dlls/winmm/wavemap/msacm.drv.spec
dlls/winmm/wavemap
% dlls/winmm/winearts/winearts.drv.spec
dlls/winmm/winearts
% dlls/winmm/winealsa/winealsa.drv.spec
dlls/winmm/winealsa
% dlls/winmm/wineaudioio/wineaudioio.drv.spec
dlls/winmm/wineaudioio
% dlls/winmm/winejack/winejack.drv.spec
dlls/winmm/winejack
% dlls/winmm/winenas/winenas.drv.spec
dlls/winmm/winenas
% dlls/winmm/wineoss/wineoss.drv.spec
dlls/winmm/wineoss
% dlls/winmm/mmsystem.spec
dlls/winmm
% dlls/winmm/winmm.spec
dlls/winmm
% dlls/winnls/winnls.spec
dlls/winnls
% dlls/winnls/winnls32.spec
% dlls/winsock/winsock.spec
dlls/winsock
% dlls/wintab32/wintab.spec
dlls/wintab32
% dlls/wintab32/wintab32.spec
dlls/wintab32
% dlls/winsock/ws2_32.spec
dlls/winsock
% dlls/wsock32/wsock32.spec
dlls/wsock32
% dlls/winedos/wprocs.spec
dlls/winedos
% dlls/winspool/winspool.drv.spec
dlls/winspool
% dlls/wintrust/wintrust.spec
dlls/wintrust
% dlls/wow32/wow32.spec
% dlls/x11drv/x11drv.spec
dlls/x11drv
......@@ -95,54 +95,35 @@ sub new {
my $self = {};
bless ($self, $class);
my $spec_file_found = $self->read_module_file();
my $spec_file_found = $self->find_spec_files();
$self->read_spec_files($spec_file_found);
return $self;
}
sub read_module_file {
sub find_spec_files {
my $self = shift;
my $dir2spec_file = \%{$self->{DIR2SPEC_FILE}};
my $spec_file2dir = \%{$self->{SPEC_FILE2DIR}};
my $module_file = "$winapi_check_dir/modules.dat";
$output->progress("modules.dat");
$output->progress("modules");
my $spec_file_found = {};
my $allowed_dir;
my $spec_file;
open(IN, "< $module_file");
local $/ = "\n";
while(<IN>) {
s/^\s*?(.*?)\s*$/$1/; # remove whitespace at begining and end of line
s/^(.*?)\s*#.*$/$1/; # remove comments
/^$/ && next; # skip empty lines
my @spec_files = <{dlls/*/*.spec,dlls/*/*/*.spec}>;
if(/^%\s+(.*?)$/) {
$spec_file = $1;
foreach $spec_file (@spec_files) {
$spec_file =~ /(.*)\/.*\.spec/;
if(!-f "$wine_dir/$spec_file") {
$output->write("modules.dat: $spec_file: file ($spec_file) doesn't exist or is no file\n");
}
$allowed_dir = $1;
$$spec_file_found{$spec_file}++;
$$spec_file2dir{$spec_file} = {};
next;
} else {
$allowed_dir = $1;
$$spec_file2dir{$spec_file}{$allowed_dir}++;
}
$$dir2spec_file{$allowed_dir}{$spec_file}++;
if(!-d "$wine_dir/$allowed_dir") {
$output->write("modules.dat: $spec_file: directory ($allowed_dir) doesn't exist or is no directory\n");
}
$$spec_file_found{$spec_file}++;
$$spec_file2dir{$spec_file}{$allowed_dir}++;
$$dir2spec_file{$allowed_dir}{$spec_file}++;
}
close(IN);
return $spec_file_found;
}
......@@ -192,7 +173,7 @@ sub read_spec_files {
foreach my $spec_file (@spec_files) {
if(!$$spec_file_found{$spec_file} && $spec_file !~ m%tests/[^/]+$%) {
$output->write("modules.dat: $spec_file: exists but is not specified\n");
$output->write("modules: $spec_file: exists but is not specified\n");
}
}
}
......@@ -359,7 +340,7 @@ sub global_report {
foreach my $module ($self->all_modules) {
if(!$$used_module_dirs{$module}{$dir}) {
my $spec_file = $$module2spec_file{$module};
push @messages, "modules.dat: $spec_file: directory ($dir) is not used\n";
push @messages, "modules: $spec_file: directory ($dir) is not used\n";
}
}
}
......
......@@ -41,9 +41,10 @@ sub check_modules {
next if $internal_name =~ /\./;
my $function = $functions->{$internal_name};
if(!defined($function) && !$nativeapi->is_function($internal_name) &&
!($module eq "user" && $internal_name =~
/^(?:GlobalAddAtomA|GlobalDeleteAtom|GlobalFindAtomA|
GlobalGetAtomNameA|lstrcmpiA)$/x))
# FIXME: remove these when DLL separation is complete
!($module eq "user32" || $module eq "gdi32" || $module eq "kernel32" ||
$module eq "user.exe" || $module eq "keyboard.drv" || $module eq "ddeml" ||
$module eq "gdi.exe" || $module eq "dispdib" || $module eq "krnl386.exe"))
{
$output->write("*.c: $module: $internal_name: " .
"function declared but not implemented or declared external\n");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment