Module: wine Branch: master Commit: a747eca83c12909cfe4a41f65a342888c59f515f URL: http://source.winehq.org/git/wine.git/?a=commit;h=a747eca83c12909cfe4a41f65a...
Author: Alexander Nicolaysen Sørnes alex@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);