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