[PATCH 16/26] [DbgHelp]: get rid of temporary module_get_type_by_nameA

Eric Pouech eric.pouech at wanadoo.fr
Wed Feb 21 14:55:51 CST 2007




A+
---

 dlls/dbghelp/dbghelp_private.h |    2 --
 dlls/dbghelp/module.c          |   43 ----------------------------------------
 dlls/dbghelp/path.c            |   24 ++++++++++++++--------
 dlls/dbghelp/pe_module.c       |    2 +-
 4 files changed, 16 insertions(+), 55 deletions(-)

diff --git a/dlls/dbghelp/dbghelp_private.h b/dlls/dbghelp/dbghelp_private.h
index cd5c9c6..2af44ea 100644
--- a/dlls/dbghelp/dbghelp_private.h
+++ b/dlls/dbghelp/dbghelp_private.h
@@ -456,8 +456,6 @@ extern struct module*
                                          const struct module* inner);
 extern enum module_type
                     module_get_type_by_name(const WCHAR* name);
-extern enum module_type
-                    module_get_type_by_nameA(const char* name);
 extern void         module_reset_debug_info(struct module* module);
 extern BOOL         module_remove(struct process* pcs, 
                                   struct module* module);
diff --git a/dlls/dbghelp/module.c b/dlls/dbghelp/module.c
index d4f3fad..1c55ec5 100644
--- a/dlls/dbghelp/module.c
+++ b/dlls/dbghelp/module.c
@@ -403,36 +403,6 @@ enum module_type module_get_type_by_name
     return DMT_PE;
 }
 
-/******************************************************************
- *		module_get_type_by_nameA
- *
- * Guesses a filename type from its extension
- */
-enum module_type module_get_type_by_nameA(const char* name)
-{
-    const char* ptr;
-    int         len = strlen(name);
-
-    /* check for terminating .so or .so.[digit] */
-    ptr = strrchr(name, '.');
-    if (ptr)
-    {
-        if (!strcmp(ptr, ".so") ||
-            (isdigit(ptr[1]) && !ptr[2] && ptr >= name + 3 && !memcmp(ptr - 3, ".so", 3)))
-            return DMT_ELF;
-        else if (!strcasecmp(ptr, ".pdb"))
-            return DMT_PDB;
-    }
-    /* wine-[kp]thread is also an ELF module */
-    else if (((len > 12 && name[len - 13] == '/') || len == 12) && 
-             (!strcasecmp(name + len - 12, "wine-pthread") || 
-              !strcasecmp(name + len - 12, "wine-kthread")))
-    {
-        return DMT_ELF;
-    }
-    return DMT_PE;
-}
-
 /***********************************************************************
  *			SymLoadModule (DBGHELP.@)
  */
@@ -489,8 +459,6 @@ DWORD64 WINAPI  SymLoadModuleExW(HANDLE 
 {
     struct process*     pcs;
     struct module*	module = NULL;
-    char                ImageName[MAX_PATH], amodname[MAX_PATH], *ModuleName;
-
 
     TRACE("(%p %p %s %s %s %08x %p %08x)\n",
           hProcess, hFile, debugstr_w(wImageName), debugstr_w(wModuleName),
@@ -505,8 +473,6 @@ DWORD64 WINAPI  SymLoadModuleExW(HANDLE 
 
     if (Flags & SLMFLAG_VIRTUAL)
     {
-        WideCharToMultiByte(CP_ACP,0, wImageName, -1, ImageName, MAX_PATH,
-                            NULL, NULL);
         module = module_new(pcs, wImageName, module_get_type_by_name(wImageName),
                             TRUE, (DWORD)BaseOfDll, SizeOfDll, 0, 0);
         if (!module) return FALSE;
@@ -524,15 +490,6 @@ DWORD64 WINAPI  SymLoadModuleExW(HANDLE 
     /* this is a Wine extension to the API just to redo the synchronisation */
     if (!wImageName && !hFile) return 0;
 
-    WideCharToMultiByte(CP_ACP,0, wImageName, -1, ImageName, MAX_PATH,
-                        NULL, NULL);
-
-    if (wModuleName)
-        WideCharToMultiByte(CP_ACP,0, wModuleName, -1, ModuleName = amodname, MAX_PATH,
-                            NULL, NULL);
-    else
-        ModuleName = NULL;
-
     if (module_is_elf_container_loaded(pcs, wImageName, wModuleName))
     {
         /* force the loading of DLL as builtin */
diff --git a/dlls/dbghelp/path.c b/dlls/dbghelp/path.c
index d051feb..5dda1c6 100644
--- a/dlls/dbghelp/path.c
+++ b/dlls/dbghelp/path.c
@@ -392,20 +392,26 @@ static BOOL CALLBACK sffip_cb(LPCWSTR bu
         }
         break;
     case DMT_ELF:
-        if (elf_fetch_file_info(buffer, 0, &size, &checksum))
         {
-            if (checksum != (DWORD_PTR)s->id)
+            char                fn[MAX_PATH];
+
+            WideCharToMultiByte(CP_ACP, 0, buffer, -1, fn, MAX_PATH, NULL, NULL);
+
+            if (elf_fetch_file_info(fn, 0, &size, &checksum))
+            {
+                if (checksum != (DWORD_PTR)s->id)
+                {
+                    WARN("Found %s, but wrong checksums: %08x %08lx\n",
+                         debugstr_w(buffer), checksum, (DWORD_PTR)s->id);
+                    return FALSE;
+                }
+            }
+            else
             {
-                WARN("Found %s, but wrong checksums: %08x %08lx\n",
-                     debugstr_w(buffer), checksum, (DWORD_PTR)s->id);
+                WARN("Couldn't read %s\n", debugstr_w(buffer));
                 return FALSE;
             }
         }
-        else
-        {
-            WARN("Couldn't read %s\n", debugstr_w(buffer));
-            return FALSE;
-        }
         break;
     case DMT_PDB:
         {
diff --git a/dlls/dbghelp/pe_module.c b/dlls/dbghelp/pe_module.c
index 800692a..58cfb6f 100644
--- a/dlls/dbghelp/pe_module.c
+++ b/dlls/dbghelp/pe_module.c
@@ -77,7 +77,7 @@ static BOOL pe_load_stabs(const struct p
     return ret;
 }
 
-static BOOL CALLBACK dbg_match(char* file, void* user)
+static BOOL CALLBACK dbg_match(const char* file, void* user)
 {
     /* accept first file */
     return FALSE;



More information about the wine-patches mailing list