Alexander Nicolaysen Sørnes : regedit: Fix reading from stdin.
Alexandre Julliard
julliard at winehq.org
Wed Jun 17 10:43:22 CDT 2009
Module: wine
Branch: master
Commit: dcade8526185e67b3e2e2eceff2de7244a2980bc
URL: http://source.winehq.org/git/wine.git/?a=commit;h=dcade8526185e67b3e2e2eceff2de7244a2980bc
Author: Alexander Nicolaysen Sørnes <alex at 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;
More information about the wine-cvs
mailing list