Alexander Nicolaysen Sørnes : regedit: Convert remaining registry import code to Unicode.
Alexandre Julliard
julliard at winehq.org
Thu Jul 10 14:07:24 CDT 2008
Module: wine
Branch: master
Commit: 9d60849037ee3b466c7a174d3d1ddacdbc8d4dc5
URL: http://source.winehq.org/git/wine.git/?a=commit;h=9d60849037ee3b466c7a174d3d1ddacdbc8d4dc5
Author: Alexander Nicolaysen Sørnes <alex at thehandofagony.com>
Date: Wed Jul 9 22:41:26 2008 +0200
regedit: Convert remaining registry import code to Unicode.
---
programs/regedit/regproc.c | 56 +++++++++++++++++++++++--------------------
1 files changed, 30 insertions(+), 26 deletions(-)
diff --git a/programs/regedit/regproc.c b/programs/regedit/regproc.c
index bbced33..a42ee5c 100644
--- a/programs/regedit/regproc.c
+++ b/programs/regedit/regproc.c
@@ -475,13 +475,10 @@ static void closeKey(void)
* line - registry file unwrapped line. Should have the registry value name and
* complete registry value data.
*/
-static void processSetValue(LPSTR line)
+static void processSetValue(WCHAR* line)
{
- LPSTR val_name; /* registry value name */
- LPSTR val_data; /* registry value data */
- WCHAR* val_nameW;
- WCHAR* val_dataW;
-
+ WCHAR* val_name; /* registry value name */
+ WCHAR* val_data; /* registry value data */
int line_idx = 0; /* current character under analysis */
LONG res;
@@ -508,37 +505,44 @@ static void processSetValue(LPSTR line)
}
}
if (line[line_idx] != '=') {
+ char* lineA;
line[line_idx] = '\"';
- fprintf(stderr,"Warning! unrecognized line:\n%s\n", line);
+ lineA = GetMultiByteString(line);
+ fprintf(stderr,"Warning! unrecognized line:\n%s\n", lineA);
+ HeapFree(GetProcessHeap(), 0, lineA);
return;
}
} else {
- fprintf(stderr,"Warning! unrecognized line:\n%s\n", line);
+ char* lineA = GetMultiByteString(line);
+ fprintf(stderr,"Warning! unrecognized line:\n%s\n", lineA);
+ HeapFree(GetProcessHeap(), 0, lineA);
return;
}
line_idx++; /* skip the '=' character */
val_data = line + line_idx;
- val_nameW = GetWideString(val_name);
- val_dataW = GetWideString(val_data);
- REGPROC_unescape_string(val_nameW);
- res = setValue(val_nameW, val_dataW);
- HeapFree(GetProcessHeap(), 0, val_nameW);
- HeapFree(GetProcessHeap(), 0, val_dataW);
+ REGPROC_unescape_string(val_name);
+ res = setValue(val_name, val_data);
if ( res != ERROR_SUCCESS )
+ {
+ char* val_nameA = GetMultiByteString(val_name);
+ char* val_dataA = GetMultiByteString(val_data);
fprintf(stderr,"%s: ERROR Key %s not created. Value: %s, Data: %s\n",
getAppName(),
currentKeyName,
- val_name,
- val_data);
+ val_nameA,
+ val_dataA);
+ HeapFree(GetProcessHeap(), 0, val_nameA);
+ HeapFree(GetProcessHeap(), 0, val_dataA);
+ }
}
/******************************************************************************
* This function receives the currently read entry and performs the
* corresponding action.
*/
-static void processRegEntry(LPSTR stdInput)
+static void processRegEntry(WCHAR* stdInput)
{
/*
* We encountered the end of the file, make sure we
@@ -551,28 +555,24 @@ static void processRegEntry(LPSTR stdInput)
if ( stdInput[0] == '[') /* We are reading a new key */
{
- LPSTR keyEnd;
- WCHAR* stdInputW;
+ WCHAR* keyEnd;
closeKey(); /* Close the previous key */
/* Get rid of the square brackets */
stdInput++;
- keyEnd = strrchr(stdInput, ']');
+ keyEnd = strrchrW(stdInput, ']');
if (keyEnd)
*keyEnd='\0';
- stdInputW = GetWideString(stdInput);
-
/* delete the key if we encounter '-' at the start of reg key */
if ( stdInput[0] == '-')
{
- delete_registry_key(stdInputW + 1);
- } else if ( openKeyW(stdInputW) != ERROR_SUCCESS )
+ delete_registry_key(stdInput + 1);
+ } else if ( openKeyW(stdInput) != ERROR_SUCCESS )
{
fprintf(stderr,"%s: setValue failed to open key %s\n",
getAppName(), stdInput);
}
- HeapFree(GetProcessHeap(), 0, stdInputW);
} else if( currentKeyHandle &&
(( stdInput[0] == '@') || /* reading a default @=data pair */
( stdInput[0] == '\"'))) /* reading a new value=data pair */
@@ -606,6 +606,7 @@ void processRegLines(FILE *in)
while (!feof(in)) {
LPSTR s; /* The pointer into line for where the current fgets should read */
LPSTR check;
+ WCHAR* lineW;
s = line;
for (;;) {
size_t size_remaining;
@@ -711,10 +712,13 @@ void processRegLines(FILE *in)
continue;
}
+ lineW = GetWideString(line);
+
break; /* That is the full virtual line */
}
- processRegEntry(line);
+ processRegEntry(lineW);
+ HeapFree(GetProcessHeap(), 0, lineW);
}
processRegEntry(NULL);
More information about the wine-cvs
mailing list