Alexandre Julliard : ole32: Get rid of WINE_StringFromCLSID and A-> W conversions.

Alexandre Julliard julliard at winehq.org
Thu Mar 12 09:54:18 CDT 2009


Module: wine
Branch: master
Commit: 7b6dd2c9f8339a0bc14aa7f466f5c5a0bb03da06
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=7b6dd2c9f8339a0bc14aa7f466f5c5a0bb03da06

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Wed Mar 11 17:28:21 2009 +0100

ole32: Get rid of WINE_StringFromCLSID and A->W conversions.

---

 dlls/ole32/compobj.c         |   69 ++++++++++--------------------------------
 dlls/ole32/compobj_private.h |    3 --
 2 files changed, 16 insertions(+), 56 deletions(-)

diff --git a/dlls/ole32/compobj.c b/dlls/ole32/compobj.c
index 0faaf7e..3eb0182 100644
--- a/dlls/ole32/compobj.c
+++ b/dlls/ole32/compobj.c
@@ -1429,40 +1429,6 @@ HRESULT WINAPI CLSIDFromString(LPOLESTR idstr, CLSID *id )
     return ret;
 }
 
-/* Converts a GUID into the respective string representation. */
-HRESULT WINE_StringFromCLSID(
-	const CLSID *id,	/* [in] GUID to be converted */
-	LPSTR idstr		/* [out] pointer to buffer to contain converted guid */
-) {
-  static const char hex[] = "0123456789ABCDEF";
-  char *s;
-  int	i;
-
-  if (!id)
-	{ ERR("called with id=Null\n");
-	  *idstr = 0x00;
-	  return E_FAIL;
-	}
-
-  sprintf(idstr, "{%08X-%04X-%04X-%02X%02X-",
-	  id->Data1, id->Data2, id->Data3,
-	  id->Data4[0], id->Data4[1]);
-  s = &idstr[25];
-
-  /* 6 hex bytes */
-  for (i = 2; i < 8; i++) {
-    *s++ = hex[id->Data4[i]>>4];
-    *s++ = hex[id->Data4[i] & 0xf];
-  }
-
-  *s++ = '}';
-  *s++ = '\0';
-
-  TRACE("%p->%s\n", id, idstr);
-
-  return S_OK;
-}
-
 
 /******************************************************************************
  *		StringFromCLSID	[OLE32.@]
@@ -1484,20 +1450,13 @@ HRESULT WINE_StringFromCLSID(
  */
 HRESULT WINAPI StringFromCLSID(REFCLSID id, LPOLESTR *idstr)
 {
-	char            buf[80];
-	HRESULT       ret;
-	LPMALLOC	mllc;
-
-	if ((ret = CoGetMalloc(0,&mllc)))
-		return ret;
+    HRESULT ret;
+    LPMALLOC mllc;
 
-	ret=WINE_StringFromCLSID(id,buf);
-	if (ret == S_OK) {
-            DWORD len = MultiByteToWideChar( CP_ACP, 0, buf, -1, NULL, 0 );
-            *idstr = IMalloc_Alloc( mllc, len * sizeof(WCHAR) );
-            MultiByteToWideChar( CP_ACP, 0, buf, -1, *idstr, len );
-	}
-	return ret;
+    if ((ret = CoGetMalloc(0,&mllc))) return ret;
+    if (!(*idstr = IMalloc_Alloc( mllc, CHARS_IN_GUID * sizeof(WCHAR) ))) return E_OUTOFMEMORY;
+    StringFromGUID2( id, *idstr, CHARS_IN_GUID );
+    return S_OK;
 }
 
 /******************************************************************************
@@ -1517,11 +1476,15 @@ HRESULT WINAPI StringFromCLSID(REFCLSID id, LPOLESTR *idstr)
  */
 INT WINAPI StringFromGUID2(REFGUID id, LPOLESTR str, INT cmax)
 {
-  char		xguid[80];
-
-  if (WINE_StringFromCLSID(id,xguid))
-  	return 0;
-  return MultiByteToWideChar( CP_ACP, 0, xguid, -1, str, cmax );
+    static const WCHAR formatW[] = { '{','%','0','8','X','-','%','0','4','X','-',
+                                     '%','0','4','X','-','%','0','2','X','%','0','2','X','-',
+                                     '%','0','2','X','%','0','2','X','%','0','2','X','%','0','2','X',
+                                     '%','0','2','X','%','0','2','X','}',0 };
+    if (cmax < CHARS_IN_GUID) return 0;
+    sprintfW( str, formatW, id->Data1, id->Data2, id->Data3,
+              id->Data4[0], id->Data4[1], id->Data4[2], id->Data4[3],
+              id->Data4[4], id->Data4[5], id->Data4[6], id->Data4[7] );
+    return CHARS_IN_GUID;
 }
 
 /* open HKCR\\CLSID\\{string form of clsid}\\{keyname} key */
diff --git a/dlls/ole32/compobj_private.h b/dlls/ole32/compobj_private.h
index 38a6475..65d459f 100644
--- a/dlls/ole32/compobj_private.h
+++ b/dlls/ole32/compobj_private.h
@@ -196,9 +196,6 @@ extern void* StdGlobalInterfaceTable_Construct(void);
 extern HRESULT StdGlobalInterfaceTable_GetFactory(LPVOID *ppv);
 extern void* StdGlobalInterfaceTableInstance;
 
-/* FIXME: these shouldn't be needed, except for 16-bit functions */
-extern HRESULT WINE_StringFromCLSID(const CLSID *id,LPSTR idstr);
-
 HRESULT COM_OpenKeyForCLSID(REFCLSID clsid, LPCWSTR keyname, REGSAM access, HKEY *key);
 HRESULT COM_OpenKeyForAppIdFromCLSID(REFCLSID clsid, REGSAM access, HKEY *subkey);
 HRESULT MARSHAL_GetStandardMarshalCF(LPVOID *ppv);




More information about the wine-cvs mailing list