Module: wine Branch: master Commit: 59b5c52f1dc57cf7ef525d9d958e09684bb04e0d URL: http://source.winehq.org/git/wine.git/?a=commit;h=59b5c52f1dc57cf7ef525d9d95...
Author: Alexandre Julliard julliard@winehq.org Date: Wed Mar 23 16:50:44 2016 +0900
winebuild: Add a common helper to find an imported dll.
Signed-off-by: Alexandre Julliard julliard@winehq.org
---
tools/winebuild/import.c | 29 +++++++++-------------------- 1 file changed, 9 insertions(+), 20 deletions(-)
diff --git a/tools/winebuild/import.c b/tools/winebuild/import.c index 69d4765..1d561c4 100644 --- a/tools/winebuild/import.c +++ b/tools/winebuild/import.c @@ -154,15 +154,15 @@ static int is_delayed_import( const char *name ) return 0; }
-/* check whether a given dll has already been imported */ -static struct import *is_already_imported( const char *name ) +/* find an imported dll from its name */ +static struct import *find_import_dll( const char *name ) { struct import *import;
LIST_FOR_EACH_ENTRY( import, &dll_imports, struct import, entry ) - if (!strcmp( import->dll_name, name )) return import; + if (!strcasecmp( import->dll_name, name )) return import; LIST_FOR_EACH_ENTRY( import, &dll_delayed, struct import, entry ) - if (!strcmp( import->dll_name, name )) return import; + if (!strcasecmp( import->dll_name, name )) return import; return NULL; }
@@ -215,7 +215,7 @@ static DLLSPEC *read_import_lib( struct import *imp ) close_input_file( f );
/* check if we already imported that library from a different file */ - if ((prev_imp = is_already_imported( spec->file_name ))) + if ((prev_imp = find_import_dll( spec->file_name ))) { if (prev_imp->dev != imp->dev || prev_imp->ino != imp->ino) fatal_error( "%s and %s have the same export name '%s'\n", @@ -292,7 +292,7 @@ void add_delayed_import( const char *name ) char *fullname = get_dll_name( name, NULL );
strarray_add( &delayed_imports, fullname, NULL ); - if ((imp = is_already_imported( fullname ))) + if ((imp = find_import_dll( fullname ))) { list_remove( &imp->entry ); list_add_tail( &dll_delayed, &imp->entry ); @@ -389,25 +389,14 @@ static void check_undefined_forwards( DLLSPEC *spec ) api_name = p + 1; dll_name = get_dll_name( link_name, NULL );
- LIST_FOR_EACH_ENTRY( imp, &dll_imports, struct import, entry ) + if ((imp = find_import_dll( dll_name ))) { - if (strcasecmp( imp->dll_name, dll_name )) continue; if (!find_export( api_name, imp->exports, imp->nb_exports )) warning( "%s:%d: forward '%s' not found in %s\n", spec->src_name, odp->lineno, odp->link_name, imp->dll_name ); - goto done; } - LIST_FOR_EACH_ENTRY( imp, &dll_delayed, struct import, entry ) - { - if (strcasecmp( imp->dll_name, dll_name )) continue; - if (!find_export( api_name, imp->exports, imp->nb_exports )) - warning( "%s:%d: forward '%s' not found in %s\n", - spec->src_name, odp->lineno, odp->link_name, imp->dll_name ); - goto done; - } - warning( "%s:%d: forward '%s' not found in the imported dll list\n", - spec->src_name, odp->lineno, odp->link_name ); - done: + else warning( "%s:%d: forward '%s' not found in the imported dll list\n", + spec->src_name, odp->lineno, odp->link_name ); free( link_name ); free( dll_name ); }