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