Module: wine Branch: master Commit: dcade8526185e67b3e2e2eceff2de7244a2980bc URL: http://source.winehq.org/git/wine.git/?a=commit;h=dcade8526185e67b3e2e2eceff...
Author: Alexander Nicolaysen Sørnes alex@thehandofagony.com Date: Tue Jun 16 15:46:33 2009 +0200
regedit: Fix reading from stdin.
---
programs/regedit/regproc.c | 14 +++++++++++--- 1 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/programs/regedit/regproc.c b/programs/regedit/regproc.c index 55b0d5f..c46edc6 100644 --- a/programs/regedit/regproc.c +++ b/programs/regedit/regproc.c @@ -610,20 +610,29 @@ static void processRegEntry(WCHAR* stdInput, BOOL isUnicode) * * Parameters: * in - input stream to read from + * first_chars - beginning of stream, read due to Unicode check */ -static void processRegLinesA(FILE *in) +static void processRegLinesA(FILE *in, char* first_chars) { LPSTR line = NULL; /* line read from input stream */ ULONG lineSize = REG_VAL_BUF_SIZE;
line = HeapAlloc(GetProcessHeap(), 0, lineSize); CHECK_ENOUGH_MEMORY(line); + memcpy(line, first_chars, 2);
while (!feof(in)) { LPSTR s; /* The pointer into line for where the current fgets should read */ LPSTR check; WCHAR* lineW; s = line; + + if(first_chars) + { + s += 2; + first_chars = NULL; + } + for (;;) { size_t size_remaining; int size_to_get; @@ -1373,8 +1382,7 @@ BOOL import_registry_file(FILE* reg_file) processRegLinesW(reg_file); } else { - rewind(reg_file); - processRegLinesA(reg_file); + processRegLinesA(reg_file, (char*)s); } } return TRUE;