Alexander Nicolaysen Sørnes : wordpad: Improve file reading code.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Jun 4 08:14:26 CDT 2007


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

Author: Alexander Nicolaysen Sørnes <alex at thehandofagony.com>
Date:   Sat Jun  2 00:19:37 2007 +0200

wordpad: Improve file reading code.

---

 programs/wordpad/wordpad.c |   51 +++++++++----------------------------------
 1 files changed, 11 insertions(+), 40 deletions(-)

diff --git a/programs/wordpad/wordpad.c b/programs/wordpad/wordpad.c
index 13c33c8..e6bf42a 100644
--- a/programs/wordpad/wordpad.c
+++ b/programs/wordpad/wordpad.c
@@ -100,17 +100,16 @@ static void AddSeparator(HWND hwndToolBar)
     SendMessage(hwndToolBar, TB_ADDBUTTONS, 1, (LPARAM)&button);
 }
 
-static LPSTR stream_buffer;
-static LONG  stream_buffer_size;
-
 static DWORD CALLBACK stream_in(DWORD_PTR cookie, LPBYTE buffer, LONG cb, LONG *pcb)
 {
-    LONG size = min(stream_buffer_size, cb);
+    HANDLE hFile = (HANDLE)cookie;
+    DWORD read;
+
+    if(!ReadFile(hFile, buffer, cb, &read, 0))
+        return 1;
+
+    *pcb = read;
 
-    memcpy(buffer, stream_buffer, size);
-    stream_buffer_size -= size;
-    stream_buffer += size;
-    *pcb = size;
     return 0;
 }
 
@@ -152,9 +151,6 @@ static void set_caption(LPCWSTR wszNewFileName)
 static void DoOpenFile(LPCWSTR szOpenFileName)
 {
     HANDLE hFile;
-    LPSTR pTemp;
-    DWORD size;
-    DWORD dwNumRead;
     EDITSTREAM es;
 
     hFile = CreateFileW(szOpenFileName, GENERIC_READ, FILE_SHARE_READ, NULL,
@@ -162,38 +158,13 @@ static void DoOpenFile(LPCWSTR szOpenFileName)
     if (hFile == INVALID_HANDLE_VALUE)
         return;
 
-    size = GetFileSize(hFile, NULL);
-    if (size == INVALID_FILE_SIZE)
-    {
-        CloseHandle(hFile);
-        return;
-    }
-    size++;
-
-    pTemp = HeapAlloc(GetProcessHeap(), 0, size);
-    if (!pTemp)
-    {
-        CloseHandle(hFile);
-        return;
-    }
-
-    if (!ReadFile(hFile, pTemp, size, &dwNumRead, NULL))
-    {
-        CloseHandle(hFile);
-        HeapFree(GetProcessHeap(), 0, pTemp);
-        return;
-    }
-    CloseHandle(hFile);
-    pTemp[dwNumRead] = 0;
-
-    memset(&es, 0, sizeof(es));
+    es.dwCookie = (DWORD_PTR)hFile;
     es.pfnCallback = stream_in;
 
-    stream_buffer = pTemp;
-    stream_buffer_size = size;
+    /* FIXME: Handle different file formats */
+    SendMessageW(hEditorWnd, EM_STREAMIN, SF_RTF, (LPARAM)&es);
 
-    SendMessage(hEditorWnd, EM_STREAMIN, SF_RTF, (LPARAM)&es);
-    HeapFree(GetProcessHeap(), 0, pTemp);
+    CloseHandle(hFile);
 
     SetFocus(hEditorWnd);
 




More information about the wine-cvs mailing list