(2nd) Janitorial W->A cleanup objects/metafile.c dlls/gdi/mfdrv/init.c

Tony Lambregts tony_lambregts at telusplanet.net
Sun Mar 23 23:26:54 CST 2003


With Dmitry's help...

Change Log: convert MF_CreateMetaHeaderDisk to unicode and W->A clean up

Files Changed: objects/metafile.c dlls/gdi/mfdrv/init.c

-- 

Tony Lambregts

-------------- next part --------------
Index: objects/metafile.c
===================================================================
RCS file: /home/wine/wine/objects/metafile.c,v
retrieving revision 1.57
diff -u -r1.57 metafile.c
--- objects/metafile.c	27 Feb 2003 21:09:45 -0000	1.57
+++ objects/metafile.c	24 Mar 2003 05:30:24 -0000
@@ -54,6 +54,9 @@
 #include "global.h"
 #include "wownt32.h"
 #include "wine/debug.h"
+#include "file.h"
+#include "winternl.h"
+#include "wine/unicode.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(metafile);
 
@@ -62,7 +65,7 @@
 {
     DWORD dw1, dw2, dw3;
     WORD w4;
-    CHAR filename[0x100];
+    WCHAR filename[MAX_PATH];
 } METAHEADERDISK;
 #include "poppack.h"
 
@@ -352,7 +355,7 @@
     }
     mhd = (METAHEADERDISK *)((char *)mh + sizeof(METAHEADER));
 
-    if((hfile = CreateFileA(mhd->filename, GENERIC_READ, FILE_SHARE_READ, NULL,
+    if((hfile = CreateFileW(mhd->filename, GENERIC_READ, FILE_SHARE_READ, NULL,
 			    OPEN_EXISTING, 0, 0)) == INVALID_HANDLE_VALUE) {
         WARN("Can't open file of disk based metafile\n");
         return NULL;
@@ -368,7 +371,7 @@
  * Take a memory based METAHEADER and change it to a disk based METAHEADER
  * assosiated with filename.  Note: Trashes contents of old one.
  */
-METAHEADER *MF_CreateMetaHeaderDisk(METAHEADER *mh, LPCSTR filename)
+METAHEADER *MF_CreateMetaHeaderDisk(METAHEADER *mh, LPCWSTR filename)
 {
     METAHEADERDISK *mhd;
     DWORD size;
@@ -378,7 +381,7 @@
     mh->mtType = METAFILE_DISK;
     size = HeapSize( GetProcessHeap(), 0, mh );
     mhd = (METAHEADERDISK *)((char *)mh + sizeof(METAHEADER));
-    strcpy(mhd->filename, filename);
+    strcpyW(mhd->filename, filename);
     return mh;
 }
 
@@ -390,6 +393,7 @@
     METAHEADER *mh = MF_GetMetaHeader16( hSrcMetaFile );
     METAHEADER *mh2 = NULL;
     HANDLE hFile;
+    UNICODE_STRING FilenameW;
 
     TRACE("(%08x,%s)\n", hSrcMetaFile, lpFilename);
 
@@ -404,14 +408,15 @@
     MF_ReleaseMetaHeader16( hSrcMetaFile );
 
     if(lpFilename) {         /* disk based metafile */
-        if((hFile = CreateFileA(lpFilename, GENERIC_WRITE, 0, NULL,
-				CREATE_ALWAYS, 0, 0)) == INVALID_HANDLE_VALUE) {
+        RtlCreateUnicodeStringFromAsciiz(&FilenameW, lpFilename);
+        if((hFile = CreateFileW(FilenameW.Buffer, GENERIC_WRITE, 0, NULL,
+		CREATE_ALWAYS, 0, 0)) == INVALID_HANDLE_VALUE) {
 	    HeapFree( GetProcessHeap(), 0, mh2 );
 	    return 0;
 	}
 	WriteFile(hFile, mh2, mh2->mtSize * 2, NULL, NULL);
 	CloseHandle(hFile);
-	mh2 = MF_CreateMetaHeaderDisk(mh2, lpFilename);
+	mh2 = MF_CreateMetaHeaderDisk(mh2, FilenameW.Buffer);
     }
 
     return MF_Create_HMETAFILE16( mh2 );
@@ -419,7 +424,7 @@
 
 
 /******************************************************************
- *         CopyMetaFileA   (GDI32.@)
+ *         CopyMetaFileW   (GDI32.@)
  *
  *  Copies the metafile corresponding to hSrcMetaFile to either
  *  a disk file, if a filename is given, or to a new memory based
@@ -433,15 +438,15 @@
  *
  *  Copying to disk returns NULL even if successful.
  */
-HMETAFILE WINAPI CopyMetaFileA(
-		   HMETAFILE hSrcMetaFile, /* [in] handle of metafile to copy */
-		   LPCSTR lpFilename       /* [in] filename if copying to a file */
+HMETAFILE WINAPI CopyMetaFileW(
+	   HMETAFILE hSrcMetaFile, /* [in] handle of metafile to copy */
+	   LPCWSTR lpFilename       /* [in] filename if copying to a file */
 ) {
     METAHEADER *mh = MF_GetMetaHeader( hSrcMetaFile );
     METAHEADER *mh2 = NULL;
     HANDLE hFile;
 
-    TRACE("(%p,%s)\n", hSrcMetaFile, lpFilename);
+    TRACE("(%p,%s)\n", hSrcMetaFile, debugstr_w(lpFilename));
 
     if(!mh) return 0;
 
@@ -453,7 +458,7 @@
     }
 
     if(lpFilename) {         /* disk based metafile */
-        if((hFile = CreateFileA(lpFilename, GENERIC_WRITE, 0, NULL,
+        if((hFile = CreateFileW(lpFilename, GENERIC_WRITE, 0, NULL,
 				CREATE_ALWAYS, 0, 0)) == INVALID_HANDLE_VALUE) {
 	    HeapFree( GetProcessHeap(), 0, mh2 );
 	    return 0;
@@ -468,20 +473,19 @@
 
 
 /******************************************************************
- *         CopyMetaFileW   (GDI32.@)
+ *         CopyMetaFileA   (GDI32.@)
  */
-HMETAFILE WINAPI CopyMetaFileW( HMETAFILE hSrcMetaFile,
-                                    LPCWSTR lpFilename )
+HMETAFILE WINAPI CopyMetaFileA( HMETAFILE hSrcMetaFile,
+                                    LPCSTR lpFilename )
 {
+    UNICODE_STRING FilenameW;
     HMETAFILE ret = 0;
-    DWORD len = WideCharToMultiByte( CP_ACP, 0, lpFilename, -1, NULL, 0, NULL, NULL );
-    LPSTR p = HeapAlloc( GetProcessHeap(), 0, len );
 
-    if (p)
+    if(lpFilename)
     {
-        WideCharToMultiByte( CP_ACP, 0, lpFilename, -1, p, len, NULL, NULL );
-        ret = CopyMetaFileA( hSrcMetaFile, p );
-        HeapFree( GetProcessHeap(), 0, p );
+        RtlCreateUnicodeStringFromAsciiz(&FilenameW, lpFilename);
+        ret = CopyMetaFileW( hSrcMetaFile, FilenameW.Buffer);
+        RtlFreeUnicodeString(&FilenameW);
     }
     return ret;
 }
Index: dlls/gdi/mfdrv/init.c
===================================================================
RCS file: /home/wine/wine/dlls/gdi/mfdrv/init.c,v
retrieving revision 1.16
diff -u -r1.16 init.c
--- dlls/gdi/mfdrv/init.c	12 Feb 2003 01:17:25 -0000	1.16
+++ dlls/gdi/mfdrv/init.c	24 Mar 2003 05:30:24 -0000
@@ -205,7 +205,7 @@
 
 
 /**********************************************************************
- *	     CreateMetaFileA   (GDI32.@)
+ *	     CreateMetaFileW   (GDI32.@)
  *
  *  Create a new DC and associate it with a metafile. Pass a filename
  *  to create a disk-based metafile, NULL to create a memory metafile.
@@ -213,14 +213,14 @@
  * RETURNS
  *  A handle to the metafile DC if successful, NULL on failure.
  */
-HDC WINAPI CreateMetaFileA( LPCSTR filename ) /* [in] Filename of disk metafile */
+HDC WINAPI CreateMetaFileW( LPCWSTR filename ) /* [in] Filename of disk metafile */
 {
     HDC ret;
     DC *dc;
     METAFILEDRV_PDEVICE *physDev;
     HANDLE hFile;
 
-    TRACE("'%s'\n", filename );
+    TRACE("'%s'\n", debugstr_w(filename) );
 
     if (!(dc = MFDRV_AllocMetaFile())) return 0;
     physDev = (METAFILEDRV_PDEVICE *)dc->physDev;
@@ -228,8 +228,8 @@
     if (filename)  /* disk based metafile */
     {
         physDev->mh->mtType = METAFILE_DISK;
-        if ((hFile = CreateFileA(filename, GENERIC_WRITE, 0, NULL,
-				CREATE_ALWAYS, 0, 0)) == INVALID_HANDLE_VALUE) {
+        if ((hFile = CreateFileW(filename, GENERIC_WRITE, 0, NULL,
+		CREATE_ALWAYS, 0, 0)) == INVALID_HANDLE_VALUE) {
             MFDRV_DeleteDC( dc->physDev );
             return 0;
         }
@@ -253,25 +253,15 @@
 }
 
 /**********************************************************************
- *          CreateMetaFileW   (GDI32.@)
+ *          CreateMetaFileA   (GDI32.@)
  */
-HDC WINAPI CreateMetaFileW(LPCWSTR filename)
+HDC WINAPI CreateMetaFileA(LPCSTR filename)
 {
-    LPSTR filenameA;
-    DWORD len;
-    HDC hReturnDC;
-
-    len = WideCharToMultiByte( CP_ACP, 0, filename, -1, NULL, 0, NULL, NULL );
-    filenameA = HeapAlloc( GetProcessHeap(), 0, len );
-    WideCharToMultiByte( CP_ACP, 0, filename, -1, filenameA, len, NULL, NULL );
-
-    hReturnDC = CreateMetaFileA(filenameA);
-
-    HeapFree( GetProcessHeap(), 0, filenameA );
-
-    return hReturnDC;
+    WCHAR filenameW[MAX_PATH];
+    
+    MultiByteToWideChar(CP_ACP, 0, filename, -1, filenameW, MAX_PATH);
+    return CreateMetaFileW(filenameW);     
 }
-
 
 /**********************************************************************
  *          MFDRV_CloseMetaFile


More information about the wine-patches mailing list