From dcade8526185e67b3e2e2eceff2de7244a2980bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20Nicolaysen=20S=C3=B8rnes?= Date: Tue, 16 Jun 2009 15:46:33 +0200 Subject: [PATCH] regedit: Fix reading from stdin. --- programs/regedit/regproc.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/programs/regedit/regproc.c b/programs/regedit/regproc.c index 55b0d5fbdc7..c46edc6b369 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;