Update of /cvsroot/izpack/izpack-src/src/native/win/COIOSHelper
In directory sheep:/tmp/cvs-serv10466
Modified Files:
COIOSHelper.cxx COIOSHelper.dsp COIOSHelper.h RegistryImpl.cxx
RegistryInternal.cxx WinLibEnv.cxx WinLibEnv.h
Log Message:
Unicode support for registry stuff added.
Index: COIOSHelper.cxx
===================================================================
RCS file:
/cvsroot/izpack/izpack-src/src/native/win/COIOSHelper/COIOSHelper.cxx,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- COIOSHelper.cxx 6 May 2005 20:09:12 -0000 1.2
+++ COIOSHelper.cxx 2 Sep 2005 10:51:35 -0000 1.3
@@ -19,7 +19,7 @@
* limitations under the License.
*/
-
+#include "UnicodeHelper.h"
#include <windows.h>
#include <jni.h>
#include "com_coi_tools_os_izpack_COIOSHelper.h"
@@ -57,13 +57,13 @@
(JNIEnv *env, jobject obj, jstring name)
{
// convert the name from Java string type
- const char *libraryName = env->GetStringUTFChars (name, 0);
+ const TCHAR *libraryName = env->GET_STRING_CHARS (name, 0);
// get a module handle
HMODULE handle = GetModuleHandle (libraryName);
// release the string object
- env->ReleaseStringUTFChars (name, libraryName);
+ env->RELEASE_STRING_CHARS (name, libraryName);
// destroy the acl factory
// now we are rady to free the library
Index: COIOSHelper.dsp
===================================================================
RCS file:
/cvsroot/izpack/izpack-src/src/native/win/COIOSHelper/COIOSHelper.dsp,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- COIOSHelper.dsp 3 May 2005 13:36:15 -0000 1.1
+++ COIOSHelper.dsp 2 Sep 2005 10:51:36 -0000 1.2
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-CFG=COIOSHelper - Win32 Debug
+CFG=COIOSHelper - Win32 Debug Unicode
!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit
NMAKE
!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den
Befehl
!MESSAGE
@@ -13,12 +13,14 @@
!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben
!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel:
!MESSAGE
-!MESSAGE NMAKE /f "COIOSHelper.mak" CFG="COIOSHelper - Win32 Debug"
+!MESSAGE NMAKE /f "COIOSHelper.mak" CFG="COIOSHelper - Win32 Debug Unicode"
!MESSAGE
!MESSAGE Für die Konfiguration stehen zur Auswahl:
!MESSAGE
!MESSAGE "COIOSHelper - Win32 Release" (basierend auf "Win32 (x86)
Dynamic-Link Library")
!MESSAGE "COIOSHelper - Win32 Debug" (basierend auf "Win32 (x86) Dynamic-Link
Library")
+!MESSAGE "COIOSHelper - Win32 Debug Unicode" (basierend auf "Win32 (x86)
Dynamic-Link Library")
+!MESSAGE "COIOSHelper - Win32 Release Unicode" (basierend auf "Win32 (x86)
Dynamic-Link Library")
!MESSAGE
# Begin Project
@@ -66,8 +68,8 @@
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D
"_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "COIOSHELPER_EXPORTS" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D
"_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "COIOSHELPER_EXPORTS" /YX /FD /GZ /c
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D
"_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "COIOSHELPER_EXPORTS" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D
"_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "COIOSHELPER_EXPORTS" /YX /FD /GZ /c
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x407 /d "_DEBUG"
@@ -79,12 +81,65 @@
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib
advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib
odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib
advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib
odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+!ELSEIF "$(CFG)" == "COIOSHelper - Win32 Debug Unicode"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug_Unicode"
+# PROP BASE Intermediate_Dir "Debug_Unicode"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_Unicode"
+# PROP Intermediate_Dir "Debug_Unicode"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D
"_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "COIOSHELPER_EXPORTS" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D
"_WINDOWS" /D "_UNICODE" /D "_USRDLL" /D "COIOSHELPER_EXPORTS" /YX /FD /GZ /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x407 /d "_DEBUG"
+# ADD RSC /l 0x407 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib
advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib
odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib
advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib
odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+
+!ELSEIF "$(CFG)" == "COIOSHelper - Win32 Release Unicode"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_Unicode"
+# PROP BASE Intermediate_Dir "Release_Unicode"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_Unicode"
+# PROP Intermediate_Dir "Release_Unicode"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D
"_MBCS" /D "_USRDLL" /D "COIOSHELPER_EXPORTS" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D
"_UNICODE" /D "_USRDLL" /D "COIOSHELPER_EXPORTS" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x407 /d "NDEBUG"
+# ADD RSC /l 0x407 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib
advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib
odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib
advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib
odbccp32.lib /nologo /dll /machine:I386
+
!ENDIF
# Begin Target
# Name "COIOSHelper - Win32 Release"
# Name "COIOSHelper - Win32 Debug"
+# Name "COIOSHelper - Win32 Debug Unicode"
+# Name "COIOSHelper - Win32 Release Unicode"
# Begin Group "Quellcodedateien"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
@@ -111,6 +166,10 @@
# Begin Source File
SOURCE=.\COIOSHelper.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\UnicodeHelper.h
# End Source File
# Begin Source File
Index: COIOSHelper.h
===================================================================
RCS file: /cvsroot/izpack/izpack-src/src/native/win/COIOSHelper/COIOSHelper.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- COIOSHelper.h 6 May 2005 20:09:12 -0000 1.2
+++ COIOSHelper.h 2 Sep 2005 10:51:36 -0000 1.3
@@ -19,6 +19,7 @@
* limitations under the License.
*/
+
#include <jni.h>
#include "WinLibEnv.h"
@@ -50,20 +51,20 @@
// in RegistryInternal.c
-extern jboolean regKeyExist(WinLibEnv *libEnv, int root, const char *key );
-extern void setRegValue(WinLibEnv *libEnv, int root, const char *key,
- const char *value, jint type, LPBYTE contents, jint length );
-extern void createRegKey(WinLibEnv *libEnv, int root, const char *key );
-extern jint getRegValueType( WinLibEnv *libEnv, int root, const char *key ,
const char *value );
-extern LPBYTE getRegValue( WinLibEnv *libEnv, int root, const char *key ,
const char *value, DWORD *type, DWORD *length);
-extern void deleteRegValue(WinLibEnv *libEnv, int root, const char *key, const
char *value );
-extern void deleteRegKey(WinLibEnv *libEnv, int root, const char *key );
-extern jboolean isKeyEmpty(WinLibEnv *libEnv, int root, const char *key );
-extern void determineCounts( WinLibEnv *libEnv, int root, const char *key,
DWORD *subkeys, DWORD *values );
-extern char *getSubkeyName( WinLibEnv *libEnv, int root, const char *key , int
valueId );
-extern char *getValueName( WinLibEnv *libEnv, int root, const char *key , int
keyId );
-extern int getValueNames( WinLibEnv *libEnv, int root, const char *key , char
***names );
-extern int getSubkeyNames( WinLibEnv *libEnv, int root, const char *key , char
***names );
+extern jboolean regKeyExist(WinLibEnv *libEnv, int root, const TCHAR *key );
+extern void setRegValue(WinLibEnv *libEnv, int root, const TCHAR *key,
+ const TCHAR *value, jint type, LPBYTE contents, jint length );
+extern void createRegKey(WinLibEnv *libEnv, int root, const TCHAR *key );
+extern jint getRegValueType( WinLibEnv *libEnv, int root, const TCHAR *key ,
const TCHAR *value );
+extern LPBYTE getRegValue( WinLibEnv *libEnv, int root, const TCHAR *key ,
const TCHAR *value, DWORD *type, DWORD *length);
+extern void deleteRegValue(WinLibEnv *libEnv, int root, const TCHAR *key,
const TCHAR *value );
+extern void deleteRegKey(WinLibEnv *libEnv, int root, const TCHAR *key );
+extern jboolean isKeyEmpty(WinLibEnv *libEnv, int root, const TCHAR *key );
+extern void determineCounts( WinLibEnv *libEnv, int root, const TCHAR *key,
DWORD *subkeys, DWORD *values );
+extern TCHAR *getSubkeyName( WinLibEnv *libEnv, int root, const TCHAR *key ,
int valueId );
+extern TCHAR *getValueName( WinLibEnv *libEnv, int root, const TCHAR *key ,
int keyId );
+extern int getValueNames( WinLibEnv *libEnv, int root, const TCHAR *key ,
TCHAR ***names );
+extern int getSubkeyNames( WinLibEnv *libEnv, int root, const TCHAR *key ,
TCHAR ***names );
Index: RegistryImpl.cxx
===================================================================
RCS file:
/cvsroot/izpack/izpack-src/src/native/win/COIOSHelper/RegistryImpl.cxx,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- RegistryImpl.cxx 6 May 2005 20:09:12 -0000 1.2
+++ RegistryImpl.cxx 2 Sep 2005 10:51:36 -0000 1.3
@@ -19,6 +19,7 @@
* limitations under the License.
*/
+#include "UnicodeHelper.h"
#include "com_coi_tools_os_win_RegistryImpl.h"
#include <windows.h>
#include "COIOSHelper.h"
@@ -53,10 +54,10 @@
jboolean retval = false;
if( libEnv.verifyNullObjects(jKey ))
{
- const char *key = env->GetStringUTFChars( jKey , 0);
+ const TCHAR *key = env->GET_STRING_CHARS( jKey , 0);
retval = regKeyExist(&libEnv, jRoot, key );
- env->ReleaseStringUTFChars( jKey, key);
+ env->RELEASE_STRING_CHARS( jKey, key);
}
libEnv.verifyAndThrowAtError();
return( retval );
@@ -75,9 +76,9 @@
WinLibEnv libEnv( env, obj );
if( libEnv.verifyNullObjects(jKey ))
{
- const char *key = env->GetStringUTFChars( jKey , 0);
+ const TCHAR *key = env->GET_STRING_CHARS( jKey , 0);
createRegKey(&libEnv, jRoot, key );
- env->ReleaseStringUTFChars( jKey, key);
+ env->RELEASE_STRING_CHARS( jKey, key);
}
libEnv.verifyAndThrowAtError();
}
@@ -96,9 +97,9 @@
WinLibEnv *plibEnv = &libEnv;
if( libEnv.verifyNullObjects(jKey, jValue, jContents ))
{
- const char *key = env->GetStringUTFChars( jKey , 0);
- const char *value = env->GetStringUTFChars( jValue , 0);
- const char *buf = NULL;
+ const TCHAR *key = env->GET_STRING_CHARS( jKey , 0);
+ const TCHAR *value = env->GET_STRING_CHARS( jValue , 0);
+ const TCHAR *buf = NULL;
jint type = 0;
int i;
LPBYTE contents = NULL;
@@ -110,21 +111,21 @@
jboolean isCopy = false;
jstring *jMultiStr = NULL;
jint multiSize = 0;
- const char ** intermedMulti = NULL;;
+ const TCHAR ** intermedMulti = NULL;;
while( 1 )
{
jmethodID mid = NULL;
jclass clazz = env->GetObjectClass( jContents );
if( clazz == NULL ) // oops, class not bound ??
- ERROR_BREAK("registry.MissingRegDataContainer",
plibEnv);
+
ERROR_BREAK(_T("registry.MissingRegDataContainer"), plibEnv);
if( (mid = env->GetMethodID( clazz, "getType", "()I" )
) == NULL )
-
ERROR_BREAK("registry.MalformedRegDataContainer", plibEnv);
+
ERROR_BREAK(_T("registry.MalformedRegDataContainer"), plibEnv);
type = env->CallIntMethod( jContents, mid );
switch( type )
{
case REG_DWORD:
if( (mid = env->GetMethodID( clazz,
"getDwordData", "()J" ) ) == NULL )
-
ERROR_BREAK("registry.MalformedRegDataContainer", plibEnv);
+
ERROR_BREAK(_T("registry.MalformedRegDataContainer"), plibEnv);
ddata = (DWORD) env->CallLongMethod(
jContents, mid );
contents = (LPBYTE) &ddata;
length = 4;
@@ -132,51 +133,52 @@
case REG_SZ:
case REG_EXPAND_SZ:
if( (mid = env->GetMethodID( clazz,
"getStringData", "()Ljava/lang/String;" ) ) == NULL )
-
ERROR_BREAK("registry.MalformedRegDataContainer", plibEnv);
+
ERROR_BREAK(_T("registry.MalformedRegDataContainer"), plibEnv);
if( (jStr = (jstring) env->CallObjectMethod(
jContents, mid )) == NULL )
-
ERROR_BREAK("registry.MalformedRegDataContainer", plibEnv);
- buf = env->GetStringUTFChars( jStr , 0);
+
ERROR_BREAK(_T("registry.MalformedRegDataContainer"), plibEnv);
+ buf = env->GET_STRING_CHARS( jStr , 0);
contents = (LPBYTE) buf;
- length = strlen( buf) + 1;
+ length = (_tcslen( buf) + 1) * sizeof(TCHAR);
break;
case REG_BINARY:
if( (mid = env->GetMethodID( clazz,
"getBinData", "()[B" ) ) == NULL )
-
ERROR_BREAK("registry.MalformedRegDataContainer", plibEnv);
+
ERROR_BREAK(_T("registry.MalformedRegDataContainer"), plibEnv);
if( (jBin = (jbyteArray) env->CallObjectMethod(
jContents, mid )) == NULL )
-
ERROR_BREAK("registry.MalformedRegDataContainer", plibEnv);
+
ERROR_BREAK(_T("registry.MalformedRegDataContainer"), plibEnv);
contents = (LPBYTE) env->GetByteArrayElements(
jBin, &isCopy );
length = (DWORD) env->GetArrayLength( jBin );
break;
case REG_MULTI_SZ:
if( (mid = env->GetMethodID( clazz,
"getMultiStringData", "()[Ljava/lang/String;" ) ) == NULL )
-
ERROR_BREAK("registry.MalformedRegDataContainer", plibEnv);
+
ERROR_BREAK(_T("registry.MalformedRegDataContainer"), plibEnv);
if( (jObj = (jobjectArray)
env->CallObjectMethod( jContents, mid)) == NULL )
-
ERROR_BREAK("registry.MalformedRegDataContainer", plibEnv);
+
ERROR_BREAK(_T("registry.MalformedRegDataContainer"), plibEnv);
multiSize = env->GetArrayLength( jObj );
LPBYTE pos;
jMultiStr = new jstring[multiSize];
- intermedMulti = new const char *[multiSize];
- length = 2;
+ intermedMulti = new const TCHAR *[multiSize];
+ length = 2 ;
for( i = 0; i < multiSize; ++i )
{
jMultiStr[i] = (jstring)
env->GetObjectArrayElement( jObj, i );
- intermedMulti[i] =
env->GetStringUTFChars( jMultiStr[i], 0);
- length += strlen( intermedMulti[i] ) +
1;
+ intermedMulti[i] =
env->GET_STRING_CHARS( jMultiStr[i], 0);
+ length += _tcslen( intermedMulti[i] ) +
1 ;
}
- pos = contents = (LPBYTE) new char[length];
+ pos = contents = (LPBYTE) new TCHAR[length];
int monoLength;
for( i = 0; i < multiSize; ++i )
{
- monoLength = strlen(intermedMulti[i] )
+ 1;
+ monoLength = (_tcslen(intermedMulti[i]
) + 1) * sizeof(TCHAR);
memcpy( pos, intermedMulti[i],
monoLength);
pos += monoLength;
}
*pos++ = 0;
*pos = 0;
+ length *= sizeof(TCHAR);
break;
default:
- ERROR_BREAK("registry.DataTypeNotSupported",
plibEnv);
+
ERROR_BREAK(_T("registry.DataTypeNotSupported"), plibEnv);
}
if( ! libEnv.good() ) // Today not necessary, but may
be someone add a line ...
@@ -187,7 +189,7 @@
setRegValue(plibEnv, jRoot, key, value, type, contents,
length );
if( buf )
- env->ReleaseStringUTFChars( jStr, buf);
+ env->RELEASE_STRING_CHARS( jStr, buf);
if( jBin )
{
env->ReleaseByteArrayElements( jBin, (jbyte *)
contents, JNI_ABORT );
@@ -196,7 +198,7 @@
{
for( i = 0; i < multiSize; ++i )
{
- env->ReleaseStringUTFChars(jMultiStr[i],
intermedMulti[i]);
+ env->RELEASE_STRING_CHARS(jMultiStr[i],
intermedMulti[i]);
env->DeleteLocalRef( jMultiStr[i] );
}
delete [] jMultiStr;
@@ -204,8 +206,8 @@
delete contents;
}
- env->ReleaseStringUTFChars( jKey, key);
- env->ReleaseStringUTFChars( jValue, value);
+ env->RELEASE_STRING_CHARS( jKey, key);
+ env->RELEASE_STRING_CHARS( jValue, value);
}
libEnv.verifyAndThrowAtError();
return;
@@ -224,11 +226,11 @@
jint retval = 0;
if( libEnv.verifyNullObjects(jKey, jValue ))
{
- const char *key = env->GetStringUTFChars( jKey , 0);
- const char *value = env->GetStringUTFChars( jValue , 0);
+ const TCHAR *key = env->GET_STRING_CHARS( jKey , 0);
+ const TCHAR *value = env->GET_STRING_CHARS( jValue , 0);
retval = getRegValueType(&libEnv, jRoot, key, value );
- env->ReleaseStringUTFChars( jKey, key);
- env->ReleaseStringUTFChars( jValue, value);
+ env->RELEASE_STRING_CHARS( jKey, key);
+ env->RELEASE_STRING_CHARS( jValue, value);
}
libEnv.verifyAndThrowAtError();
return( retval );
@@ -249,8 +251,8 @@
jobject retval = NULL;
if( libEnv.verifyNullObjects(jKey, jValue ))
{
- const char *key = env->GetStringUTFChars( jKey , 0);
- const char *value = env->GetStringUTFChars( jValue , 0);
+ const TCHAR *key = env->GET_STRING_CHARS( jKey , 0);
+ const TCHAR *value = env->GET_STRING_CHARS( jValue , 0);
DWORD type;
DWORD length;
@@ -261,11 +263,11 @@
jmethodID mid = NULL;
jclass clazz = NULL;
if( (clazz =
env->FindClass("com/coi/tools/os/win/RegDataContainer") ) == NULL )
- ERROR_BREAK("registry.MissingRegDataContainer",
plibEnv);
+
ERROR_BREAK(_T("registry.MissingRegDataContainer"), plibEnv);
if( strlen( TYPE_INIT_SIGNATURE_TABLE[type] ) < 1 )
- ERROR_BREAK("registry.UnsupportedDataType",
plibEnv);
+ ERROR_BREAK(_T("registry.UnsupportedDataType"),
plibEnv);
if( (mid = env->GetMethodID( clazz, "<init>",
TYPE_INIT_SIGNATURE_TABLE[type] ) ) == NULL )
-
ERROR_BREAK("registry.MalformedRegDataContainer", plibEnv);
+
ERROR_BREAK(_T("registry.MalformedRegDataContainer"), plibEnv);
switch( type )
{
@@ -277,7 +279,7 @@
break;
case REG_SZ:
case REG_EXPAND_SZ:
- retval = env->NewObject( clazz, mid,
env->NewStringUTF( (char *) winData) );
+ retval = env->NewObject( clazz, mid,
env->NEW_STRING( (TCHAR *) winData) );
break;
case REG_BINARY:
{
@@ -288,22 +290,22 @@
break;
case REG_MULTI_SZ:
{
- char *pos = (char *) winData;
+ TCHAR *pos = (TCHAR *) winData;
int count = 0;
jclass claString;
while( *pos )
{
count++;
- pos += strlen(pos) + 1;
+ pos += _tcslen(pos) + 1;
}
if( (claString =
env->FindClass("java/lang/String") ) == NULL )
-
ERROR_BREAK("registry.StringClassNotFound", plibEnv);
+
ERROR_BREAK(_T("registry.StringClassNotFound"), plibEnv);
jobjectArray joa = env->NewObjectArray(
count, claString, 0 );
- pos = (char *) winData;
+ pos = (TCHAR *) winData;
for( int i = 0; i < count; ++i )
{
- env->SetObjectArrayElement(
joa, i, env->NewStringUTF( pos ) );
- pos += strlen(pos) + 1;
+ env->SetObjectArrayElement(
joa, i, env->NEW_STRING( pos ) );
+ pos += _tcslen(pos) + 1;
}
retval = env->NewObject( clazz, mid,
joa );
}
@@ -315,8 +317,8 @@
}
if( winData )
delete [] winData;
- env->ReleaseStringUTFChars( jKey, key);
- env->ReleaseStringUTFChars( jValue, value);
+ env->RELEASE_STRING_CHARS( jKey, key);
+ env->RELEASE_STRING_CHARS( jValue, value);
}
libEnv.verifyAndThrowAtError();
return( retval );
@@ -334,11 +336,11 @@
WinLibEnv libEnv( env, obj );
if( libEnv.verifyNullObjects(jKey, jValue ))
{
- const char *key = env->GetStringUTFChars( jKey , 0);
- const char *value = env->GetStringUTFChars( jValue , 0);
+ const TCHAR *key = env->GET_STRING_CHARS( jKey , 0);
+ const TCHAR *value = env->GET_STRING_CHARS( jValue , 0);
deleteRegValue(&libEnv, jRoot, key, value );
- env->ReleaseStringUTFChars( jKey, key);
- env->ReleaseStringUTFChars( jValue, value);
+ env->RELEASE_STRING_CHARS( jKey, key);
+ env->RELEASE_STRING_CHARS( jValue, value);
}
libEnv.verifyAndThrowAtError();
}
@@ -356,10 +358,10 @@
WinLibEnv libEnv( env, obj );
if( libEnv.verifyNullObjects(jKey ))
{
- const char *key = env->GetStringUTFChars( jKey , 0);
+ const TCHAR *key = env->GET_STRING_CHARS( jKey , 0);
deleteRegKey(&libEnv, jRoot, key );
- env->ReleaseStringUTFChars( jKey, key);
+ env->RELEASE_STRING_CHARS( jKey, key);
}
libEnv.verifyAndThrowAtError();
}
@@ -378,10 +380,10 @@
jboolean retval = false;
if( libEnv.verifyNullObjects(jKey ))
{
- const char *key = env->GetStringUTFChars( jKey , 0);
+ const TCHAR *key = env->GET_STRING_CHARS( jKey , 0);
retval = isKeyEmpty(&libEnv, jRoot, key );
- env->ReleaseStringUTFChars( jKey, key);
+ env->RELEASE_STRING_CHARS( jKey, key);
}
libEnv.verifyAndThrowAtError();
return( retval );
@@ -400,11 +402,11 @@
DWORD subkeys = 0;
if( libEnv.verifyNullObjects(jKey ))
{
- const char *key = env->GetStringUTFChars( jKey , 0);
+ const TCHAR *key = env->GET_STRING_CHARS( jKey , 0);
DWORD values = 1;
determineCounts(&libEnv, jRoot, key, &subkeys, &values );
- env->ReleaseStringUTFChars( jKey, key);
+ env->RELEASE_STRING_CHARS( jKey, key);
}
libEnv.verifyAndThrowAtError();
return( subkeys );
@@ -423,11 +425,11 @@
DWORD values = 0;
if( libEnv.verifyNullObjects(jKey ))
{
- const char *key = env->GetStringUTFChars( jKey , 0);
+ const TCHAR *key = env->GET_STRING_CHARS( jKey , 0);
DWORD subkeys = 1;
determineCounts(&libEnv, jRoot, key, &subkeys, &values );
- env->ReleaseStringUTFChars( jKey, key);
+ env->RELEASE_STRING_CHARS( jKey, key);
}
libEnv.verifyAndThrowAtError();
return( values );
@@ -447,12 +449,12 @@
WinLibEnv libEnv( env, obj );
if( libEnv.verifyNullObjects(jKey ))
{
- const char *key = env->GetStringUTFChars( jKey , 0);
- char *name = getSubkeyName(&libEnv, jRoot, key, jKeyId );
- env->ReleaseStringUTFChars( jKey, key);
+ const TCHAR *key = env->GET_STRING_CHARS( jKey , 0);
+ TCHAR *name = getSubkeyName(&libEnv, jRoot, key, jKeyId );
+ env->RELEASE_STRING_CHARS( jKey, key);
libEnv.verifyAndThrowAtError();
if( libEnv.good() )
- retval = env->NewStringUTF( name );
+ retval = env->NEW_STRING( name );
if( name )
delete [] name;
}
@@ -474,12 +476,12 @@
WinLibEnv libEnv( env, obj );
if( libEnv.verifyNullObjects(jKey ))
{
- const char *key = env->GetStringUTFChars( jKey , 0);
- char *name = getValueName(&libEnv, jRoot, key, jKeyId );
- env->ReleaseStringUTFChars( jKey, key);
+ const TCHAR *key = env->GET_STRING_CHARS( jKey , 0);
+ TCHAR *name = getValueName(&libEnv, jRoot, key, jKeyId );
+ env->RELEASE_STRING_CHARS( jKey, key);
libEnv.verifyAndThrowAtError();
if( libEnv.good() )
- retval = env->NewStringUTF( name );
+ retval = env->NEW_STRING( name );
if( name )
delete [] name;
}
@@ -502,9 +504,9 @@
jobjectArray newArr = NULL;
if( libEnv.verifyNullObjects(jKey ))
{
- const char *key = env->GetStringUTFChars( jKey , 0);
+ const TCHAR *key = env->GET_STRING_CHARS( jKey , 0);
jclass clazz;
- char **names;
+ TCHAR **names;
LONG length = 0;
jstring utf_str;
int i;
@@ -514,7 +516,7 @@
newArr = env->NewObjectArray( length, clazz, NULL);
for( i = 0; i < length; ++i )
{
- utf_str = env->NewStringUTF( names[i] );
+ utf_str = env->NEW_STRING( names[i] );
env->SetObjectArrayElement( newArr, i, utf_str);
env->DeleteLocalRef( utf_str );
delete [] names[i];
@@ -524,7 +526,7 @@
delete [] names;
//LocalFree( groups );
}
- env->ReleaseStringUTFChars( jKey, key);
+ env->RELEASE_STRING_CHARS( jKey, key);
}
libEnv.verifyAndThrowAtError();
if( libEnv.good() )
@@ -546,9 +548,9 @@
jobjectArray newArr = NULL;
if( libEnv.verifyNullObjects(jKey ))
{
- const char *key = env->GetStringUTFChars( jKey , 0);
+ const TCHAR *key = env->GET_STRING_CHARS( jKey , 0);
jclass clazz;
- char **names;
+ TCHAR **names;
LONG length = 0;
jstring utf_str;
int i;
@@ -558,7 +560,7 @@
newArr = env->NewObjectArray( length, clazz, NULL);
for( i = 0; i < length; ++i )
{
- utf_str = env->NewStringUTF( names[i] );
+ utf_str = env->NEW_STRING( names[i] );
env->SetObjectArrayElement( newArr, i, utf_str);
env->DeleteLocalRef( utf_str );
delete [] names[i];
@@ -568,7 +570,7 @@
delete [] names;
//LocalFree( groups );
}
- env->ReleaseStringUTFChars( jKey, key);
+ env->RELEASE_STRING_CHARS( jKey, key);
}
libEnv.verifyAndThrowAtError();
if( libEnv.good() )
Index: RegistryInternal.cxx
===================================================================
RCS file:
/cvsroot/izpack/izpack-src/src/native/win/COIOSHelper/RegistryInternal.cxx,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- RegistryInternal.cxx 6 May 2005 20:09:12 -0000 1.2
+++ RegistryInternal.cxx 2 Sep 2005 10:51:36 -0000 1.3
@@ -19,6 +19,7 @@
* limitations under the License.
*/
+#include "UnicodeHelper.h"
#include <windows.h>
#include "COIOSHelper.h"
@@ -26,12 +27,12 @@
// A "lookup table" to get root names for error handling.
//----------------------------------------------------------------//
-static char *HKEY_LOOKUP[] =
+static TCHAR *HKEY_LOOKUP[] =
{
- "HKEY_CLASSES_ROOT","HKEY_CURRENT_USER",
- "HKEY_LOCAL_MACHINE","HKEY_USERS",
- "HKEY_PERFORMANCE_DATA","HKEY_CURRENT_CONFIG",
- "HKEY_DYN_DATA", "UNDEFINED"
+ _T("HKEY_CLASSES_ROOT"),_T("HKEY_CURRENT_USER"),
+ _T("HKEY_LOCAL_MACHINE"),_T("HKEY_USERS"),
+ _T("HKEY_PERFORMANCE_DATA"),_T("HKEY_CURRENT_CONFIG"),
+ _T("HKEY_DYN_DATA"),_T("UNDEFINED")
};
@@ -49,7 +50,7 @@
* @param key - the registry key which should be used
*/
-jboolean regKeyExist(WinLibEnv *libEnv, int root, const char *key )
+jboolean regKeyExist(WinLibEnv *libEnv, int root, const TCHAR *key )
{
HKEY hKey = 0;
bool ok = false;
@@ -69,7 +70,7 @@
* @param key - the registry key which should be used
*/
-jboolean isKeyEmpty(WinLibEnv *libEnv, int root, const char *key )
+jboolean isKeyEmpty(WinLibEnv *libEnv, int root, const TCHAR *key )
{
HKEY hKey = 0;
DWORD subkeys = 1;
@@ -89,17 +90,17 @@
* @param values - [out] number of values
*/
-void determineCounts( WinLibEnv *libEnv, int root, const char *key, DWORD
*subkeys, DWORD *values )
+void determineCounts( WinLibEnv *libEnv, int root, const TCHAR *key, DWORD
*subkeys, DWORD *values )
{
HKEY hKey = 0;
LONG retval;
while(1)
{
if( (retval = RegOpenKeyEx( (HKEY) root, key, 0,
KEY_QUERY_VALUE , &hKey)) != ERROR_SUCCESS )
- ERROR_BREAK_CODE_A2( "functionFailed.RegOpenKeyEx",
Root2Char(root) , key, libEnv,retval );
+ ERROR_BREAK_CODE_A2( _T("functionFailed.RegOpenKeyEx"),
Root2Char(root) , key, libEnv,retval );
if( hKey && (retval = RegQueryInfoKey( hKey, NULL, NULL, NULL,
subkeys, NULL, NULL, values, NULL, NULL, NULL, NULL )) !=
ERROR_SUCCESS )
- ERROR_BREAK_CODE_A2( "functionFailed.RegQueryInfoKey",
Root2Char(root) , key, libEnv,retval );
+ ERROR_BREAK_CODE_A2( _T("functionFailed.RegQueryInfoKey"),
Root2Char(root) , key, libEnv,retval );
break;
}
if( hKey )
@@ -118,7 +119,7 @@
* @param contents - the data which should be set
* @param length - length of buffer contents
*/
-void setRegValue(WinLibEnv *libEnv, int root, const char *key, const char
*value, jint type, LPBYTE contents, jint length )
+void setRegValue(WinLibEnv *libEnv, int root, const TCHAR *key, const TCHAR
*value, jint type, LPBYTE contents, jint length )
{
HKEY hKey = 0;
LONG retval;
@@ -126,9 +127,9 @@
while(1)
{
if( (retval = RegOpenKeyEx( (HKEY) root, key, 0, KEY_SET_VALUE
, &hKey)) != ERROR_SUCCESS )
- ERROR_BREAK_CODE_A2( "functionFailed.RegOpenKeyEx",
Root2Char(root) , key, libEnv,retval );
+ ERROR_BREAK_CODE_A2( _T("functionFailed.RegOpenKeyEx"),
Root2Char(root) , key, libEnv,retval );
if( hKey && (retval = RegSetValueEx( hKey, value, 0, type,
contents, length )) != ERROR_SUCCESS )
- ERROR_BREAK_CODE_A3( "functionFailed.RegSetValueEx",
Root2Char(root) , key, value, libEnv,retval );
+ ERROR_BREAK_CODE_A3( _T("functionFailed.RegSetValueEx"),
Root2Char(root) , key, value, libEnv,retval );
break;
}
if( hKey )
@@ -145,7 +146,7 @@
* @param root - key for the registry root e.g. HKEY_LOCAL_MACHINE
* @param key - the registry key which should be used
*/
-void createRegKey(WinLibEnv *libEnv, int root, const char *key )
+void createRegKey(WinLibEnv *libEnv, int root, const TCHAR *key )
{
HKEY hKey = 0;
DWORD disposition;
@@ -153,10 +154,10 @@
while(1)
{
if( (retval = RegOpenKeyEx( (HKEY) root, key, 0, KEY_WRITE,
&hKey)) == ERROR_SUCCESS )
- ERROR_BREAK_CODE_A2( "registry.KeyExist", Root2Char(root) ,
key, libEnv,retval );
+ ERROR_BREAK_CODE_A2( _T("registry.KeyExist"), Root2Char(root) ,
key, libEnv,retval );
if( (retval = RegCreateKeyEx((HKEY) root, key, 0,NULL,
REG_OPTION_NON_VOLATILE,
KEY_ALL_ACCESS, NULL, &hKey, &disposition)) !=
ERROR_SUCCESS )
- ERROR_BREAK_CODE_A2( "functionFailed.RegCreateKeyEx",
Root2Char(root) , key, libEnv,retval );
+ ERROR_BREAK_CODE_A2( _T("functionFailed.RegCreateKeyEx"),
Root2Char(root) , key, libEnv,retval );
break;
}
if( hKey )
@@ -172,19 +173,19 @@
* @param root - key for the registry root e.g. HKEY_LOCAL_MACHINE
* @param key - the registry key which should be deleted
*/
-void deleteRegKey(WinLibEnv *libEnv, int root, const char *key )
+void deleteRegKey(WinLibEnv *libEnv, int root, const TCHAR *key )
{
HKEY hKey = 0;
LONG retval;
- char *keycopy = new char[ strlen( key ) + 1];
- char *pos;
- char *subPos;
+ TCHAR *keycopy = new TCHAR[ _tcslen( key ) + 1];
+ TCHAR *pos;
+ TCHAR *subPos;
while(1)
{
if( ! keycopy )
- ERROR_BREAK_VAR( "", libEnv , "OutOfMemoryError");
+ ERROR_BREAK_VAR( _T(""), libEnv , "OutOfMemoryError");
// Determine rootkey and subkey.
- strcpy( keycopy, key ); // Because it is const ...
+ _tcscpy( keycopy, key ); // Because it is const ...
for( pos = keycopy; *pos; ++pos )
if( *pos == '\\' )
subPos = pos;
@@ -193,9 +194,9 @@
subPos++;
if( (retval = RegOpenKeyEx( (HKEY) root, keycopy, 0, DELETE,
&hKey)) != ERROR_SUCCESS )
// Not found or no rights for delete.
- ERROR_BREAK_CODE_A2( "functionFailed.RegOpenKeyEx",
Root2Char(root) , key, libEnv,retval );
+ ERROR_BREAK_CODE_A2( _T("functionFailed.RegOpenKeyEx"),
Root2Char(root) , key, libEnv,retval );
if( (retval = RegDeleteKey(hKey, subPos)) != ERROR_SUCCESS )
- ERROR_BREAK_CODE_A2( "functionFailed.RegDeleteKey",
Root2Char(root) , key, libEnv,retval );
+ ERROR_BREAK_CODE_A2( _T("functionFailed.RegDeleteKey"),
Root2Char(root) , key, libEnv,retval );
break;
}
if( hKey )
@@ -214,7 +215,7 @@
* @param key - the registry key
* @param key - value which should be deleted
*/
-void deleteRegValue(WinLibEnv *libEnv, int root, const char *key, const char
*value )
+void deleteRegValue(WinLibEnv *libEnv, int root, const TCHAR *key, const TCHAR
*value )
{
HKEY hKey = 0;
LONG retval;
@@ -222,9 +223,9 @@
{
if( (retval = RegOpenKeyEx( (HKEY) root, key, 0, KEY_SET_VALUE
, &hKey)) != ERROR_SUCCESS )
// Not found or no rights for delete.
- ERROR_BREAK_CODE_A2( "functionFailed.RegOpenKeyEx",
Root2Char(root) , key, libEnv,retval );
+ ERROR_BREAK_CODE_A2( _T("functionFailed.RegOpenKeyEx"),
Root2Char(root) , key, libEnv,retval );
if( (retval = RegDeleteValue(hKey, value)) != ERROR_SUCCESS )
- ERROR_BREAK_CODE_A3( "functionFailed.RegDeleteValue",
Root2Char(root) , key, value, libEnv,retval );
+ ERROR_BREAK_CODE_A3( _T("functionFailed.RegDeleteValue"),
Root2Char(root) , key, value, libEnv,retval );
break;
}
if( hKey )
@@ -240,7 +241,7 @@
* @param value - the registry value which should be used
*/
-jint getRegValueType( WinLibEnv *libEnv, int root, const char *key , const
char *value )
+jint getRegValueType( WinLibEnv *libEnv, int root, const TCHAR *key , const
TCHAR *value )
{
HKEY hKey = 0;
DWORD type = 0;
@@ -249,10 +250,10 @@
while(1)
{
if( (retval = RegOpenKeyEx( (HKEY) root, key, 0, KEY_READ,
&hKey) ) != ERROR_SUCCESS )
- ERROR_BREAK_CODE_A2( "functionFailed.RegOpenKeyEx",
Root2Char(root) , key, libEnv,retval );
+ ERROR_BREAK_CODE_A2( _T("functionFailed.RegOpenKeyEx"),
Root2Char(root) , key, libEnv,retval );
if( ( retval = RegQueryValueEx( hKey, value, 0, &type, 0,
&length )) != ERROR_SUCCESS &&
retval != ERROR_MORE_DATA)
- ERROR_BREAK_CODE_A3( "functionFailed.RegQueryValueEx",
Root2Char(root) , key, value, libEnv,retval );
+ ERROR_BREAK_CODE_A3( _T("functionFailed.RegQueryValueEx"),
Root2Char(root) , key, value, libEnv,retval );
}
if( hKey )
RegCloseKey( hKey );
@@ -270,7 +271,7 @@
* @param type - [out] type of data
*/
-LPBYTE getRegValue( WinLibEnv *libEnv, int root, const char *key , const char
*value, DWORD *type, DWORD *length)
+LPBYTE getRegValue( WinLibEnv *libEnv, int root, const TCHAR *key , const
TCHAR *value, DWORD *type, DWORD *length)
{
HKEY hKey = 0;
LPBYTE contents = NULL;
@@ -278,14 +279,14 @@
while(1)
{
if( (retval = RegOpenKeyEx( (HKEY) root, key, 0, KEY_READ,
&hKey) ) != ERROR_SUCCESS )
- ERROR_BREAK_CODE_A2( "functionFailed.RegOpenKeyEx",
Root2Char(root) , key, libEnv,retval );
+ ERROR_BREAK_CODE_A2( _T("functionFailed.RegOpenKeyEx"),
Root2Char(root) , key, libEnv,retval );
if( ( retval = RegQueryValueEx( hKey, value, 0, type, 0, length
)) != ERROR_SUCCESS &&
retval != ERROR_MORE_DATA)
- ERROR_BREAK_CODE_A3( "functionFailed.RegQueryValueEx",
Root2Char(root) , key, value, libEnv,retval );
+ ERROR_BREAK_CODE_A3( _T("functionFailed.RegQueryValueEx"),
Root2Char(root) , key, value, libEnv,retval );
if( ( contents = new unsigned char[ (int) *length + 1 ] ) ==
NULL )
- ERROR_BREAK_VAR( "", libEnv , "OutOfMemoryError");
+ ERROR_BREAK_VAR( _T(""), libEnv , "OutOfMemoryError");
if( ( retval = RegQueryValueEx( hKey, value, 0, type, (LPBYTE)
contents, length )) != ERROR_SUCCESS )
- ERROR_BREAK_CODE_A3( "functionFailed.RegQueryValueEx",
Root2Char(root) , key, value, libEnv,retval );
+ ERROR_BREAK_CODE_A3( _T("functionFailed.RegQueryValueEx"),
Root2Char(root) , key, value, libEnv,retval );
break;
}
if( hKey )
@@ -302,25 +303,25 @@
* @param key - the registry key which should be used
* @param keyId - id of the key for which the name should be returned
*/
-char *getSubkeyName( WinLibEnv *libEnv, int root, const char *key , int keyId )
+TCHAR *getSubkeyName( WinLibEnv *libEnv, int root, const TCHAR *key , int
keyId )
{
HKEY hKey = 0;
LONG retval;
DWORD length = 0;
- char *name = NULL;
+ TCHAR *name = NULL;
while(1)
{
if( (retval = RegOpenKeyEx( (HKEY) root, key, 0,
KEY_ENUMERATE_SUB_KEYS, &hKey)) != ERROR_SUCCESS )
- ERROR_BREAK_CODE_A2( "functionFailed.RegOpenKeyEx",
Root2Char(root) , key, libEnv,retval );
+ ERROR_BREAK_CODE_A2( _T("functionFailed.RegOpenKeyEx"),
Root2Char(root) , key, libEnv,retval );
if( hKey && (retval = RegEnumKeyEx( hKey, keyId, NULL, &length,
NULL, NULL, NULL, NULL )) != ERROR_SUCCESS && retval !=
ERROR_MORE_DATA)
- ERROR_BREAK_CODE_A2( "functionFailed.RegEnumKeyEx",
Root2Char(root) , key, libEnv,retval );
+ ERROR_BREAK_CODE_A2( _T("functionFailed.RegEnumKeyEx"),
Root2Char(root) , key, libEnv,retval );
length++;
- if(( name = new char[ length]) == NULL )
- ERROR_BREAK_VAR( "", libEnv , "OutOfMemoryError");
+ if(( name = new TCHAR[ length]) == NULL )
+ ERROR_BREAK_VAR( _T(""), libEnv , "OutOfMemoryError");
if( hKey && (retval = RegEnumKeyEx( hKey, keyId, name, &length,
NULL, NULL, NULL, NULL )) != ERROR_SUCCESS )
- ERROR_BREAK_CODE_A2( "functionFailed.RegEnumKeyEx",
Root2Char(root) , key, libEnv,retval );
+ ERROR_BREAK_CODE_A2( _T("functionFailed.RegEnumKeyEx"),
Root2Char(root) , key, libEnv,retval );
break;
}
@@ -337,7 +338,7 @@
* @param key - the registry key which should be used
* @param names - [out] the founded names
*/
-int getSubkeyNames( WinLibEnv *libEnv, int root, const char *key , char
***names )
+int getSubkeyNames( WinLibEnv *libEnv, int root, const TCHAR *key , TCHAR
***names )
{
HKEY hKey = 0;
LONG retval;
@@ -348,21 +349,21 @@
while(1)
{
if( (retval = RegOpenKeyEx( (HKEY) root, key, 0,
KEY_QUERY_VALUE | KEY_ENUMERATE_SUB_KEYS, &hKey)) != ERROR_SUCCESS )
- ERROR_BREAK_CODE_A2( "functionFailed.RegOpenKeyEx",
Root2Char(root) , key, libEnv,retval );
+ ERROR_BREAK_CODE_A2( _T("functionFailed.RegOpenKeyEx"),
Root2Char(root) , key, libEnv,retval );
if( hKey && (retval = RegQueryInfoKey( hKey, NULL, NULL, NULL,
&subkeys, &maxLength, NULL, &values, NULL, NULL, NULL, NULL ))
!= ERROR_SUCCESS )
- ERROR_BREAK_CODE_A2( "functionFailed.RegQueryInfoKey",
Root2Char(root) , key, libEnv,retval );
+ ERROR_BREAK_CODE_A2( _T("functionFailed.RegQueryInfoKey"),
Root2Char(root) , key, libEnv,retval );
maxLength++;
- if (((*names)= new char *[subkeys])==NULL)
- ERROR_BREAK_VAR( "", libEnv , "OutOfMemoryError");
+ if (((*names)= new TCHAR *[subkeys])==NULL)
+ ERROR_BREAK_VAR( _T(""), libEnv , "OutOfMemoryError");
for( DWORD i = 0; i < subkeys; ++i )
{
- if (((*names)[i]= new char [maxLength])==NULL)
- ERROR_BREAK_VAR( "", libEnv ,
"OutOfMemoryError");
+ if (((*names)[i]= new TCHAR [maxLength])==NULL)
+ ERROR_BREAK_VAR( _T(""), libEnv ,
"OutOfMemoryError");
length = maxLength;
if( hKey && (retval = RegEnumKeyEx( hKey, i,
(*names)[i], &length,
NULL, NULL, NULL, NULL )) != ERROR_SUCCESS )
- ERROR_BREAK_CODE_A2(
"functionFailed.RegEnumKeyEx", Root2Char(root) , key, libEnv,retval );
+ ERROR_BREAK_CODE_A2(
_T("functionFailed.RegEnumKeyEx"), Root2Char(root) , key, libEnv,retval );
}
if( ! libEnv->good() )
break;
@@ -381,27 +382,26 @@
* @param key - the registry key which should be used
* @param valueId - id of the value for which the name should be returned
*/
-char *getValueName( WinLibEnv *libEnv, int root, const char *key , int valueId
)
+TCHAR *getValueName( WinLibEnv *libEnv, int root, const TCHAR *key , int
valueId )
{
HKEY hKey = 0;
LONG retval;
DWORD length = 0;
- char *name = NULL;
+ TCHAR *name = NULL;
while(1)
{
if( (retval = RegOpenKeyEx( (HKEY) root, key, 0,
KEY_ENUMERATE_SUB_KEYS, &hKey)) != ERROR_SUCCESS )
- ERROR_BREAK_CODE_A2( "functionFailed.RegOpenKeyEx",
Root2Char(root) , key, libEnv,retval );
+ ERROR_BREAK_CODE_A2( _T("functionFailed.RegOpenKeyEx"),
Root2Char(root) , key, libEnv,retval );
if( hKey && (retval = RegEnumValue( hKey, valueId, NULL, &length,
NULL, NULL, NULL, NULL )) != ERROR_SUCCESS && retval !=
ERROR_MORE_DATA)
- ERROR_BREAK_CODE_A2( "functionFailed.RegEnumValue",
Root2Char(root) , key, libEnv,retval );
+ ERROR_BREAK_CODE_A2( _T("functionFailed.RegEnumValue"),
Root2Char(root) , key, libEnv,retval );
length++;
- if(( name = new char[ length]) == NULL )
- ERROR_BREAK_VAR( "", libEnv , "OutOfMemoryError");
+ if(( name = new TCHAR[ length]) == NULL )
+ ERROR_BREAK_VAR( _T(""), libEnv , "OutOfMemoryError");
if( hKey && (retval = RegEnumValue( hKey, valueId, name, &length,
NULL, NULL, NULL, NULL )) != ERROR_SUCCESS )
- ERROR_BREAK_CODE( "functionFailed.RegEnumValue",
libEnv,retval );
- ERROR_BREAK_CODE_A2(
"functionFailed.RegEnumValue", Root2Char(root) , key, libEnv,retval );
+ ERROR_BREAK_CODE_A2( _T("functionFailed.RegEnumValue"),
Root2Char(root) , key, libEnv,retval );
break;
}
@@ -418,7 +418,7 @@
* @param key - the registry key which should be used
* @param names - [out] the founded names
*/
-int getValueNames( WinLibEnv *libEnv, int root, const char *key , char
***names )
+int getValueNames( WinLibEnv *libEnv, int root, const TCHAR *key , TCHAR
***names )
{
HKEY hKey = 0;
LONG retval;
@@ -429,21 +429,21 @@
while(1)
{
if( (retval = RegOpenKeyEx( (HKEY) root, key, 0,
KEY_QUERY_VALUE | KEY_ENUMERATE_SUB_KEYS, &hKey)) != ERROR_SUCCESS )
- ERROR_BREAK_CODE_A2( "functionFailed.RegOpenKeyEx",
Root2Char(root) , key, libEnv,retval );
+ ERROR_BREAK_CODE_A2( _T("functionFailed.RegOpenKeyEx"),
Root2Char(root) , key, libEnv,retval );
if( hKey && (retval = RegQueryInfoKey( hKey, NULL, NULL, NULL,
&subkeys, NULL, NULL, &values, &maxLength, NULL, NULL, NULL ))
!= ERROR_SUCCESS )
- ERROR_BREAK_CODE_A2( "functionFailed.RegQueryInfoKey",
Root2Char(root) , key, libEnv,retval );
+ ERROR_BREAK_CODE_A2( _T("functionFailed.RegQueryInfoKey"),
Root2Char(root) , key, libEnv,retval );
maxLength++;
- if (((*names)= new char *[values])==NULL)
- ERROR_BREAK_VAR( "", libEnv , "OutOfMemoryError");
+ if (((*names)= new TCHAR *[values])==NULL)
+ ERROR_BREAK_VAR( _T(""), libEnv , "OutOfMemoryError");
for( DWORD i = 0; i < values; ++i )
{
- if (((*names)[i]= new char [maxLength])==NULL)
- ERROR_BREAK_VAR( "", libEnv ,
"OutOfMemoryError");
+ if (((*names)[i]= new TCHAR [maxLength])==NULL)
+ ERROR_BREAK_VAR( _T(""), libEnv ,
"OutOfMemoryError");
length = maxLength;
if( hKey && (retval = RegEnumValue( hKey, i,
(*names)[i], &length,
NULL, NULL, NULL, NULL )) != ERROR_SUCCESS )
- ERROR_BREAK_CODE_A2(
"functionFailed.RegEnumValue", Root2Char(root) , key, libEnv,retval );
+ ERROR_BREAK_CODE_A2(
_T("functionFailed.RegEnumValue"), Root2Char(root) , key, libEnv,retval );
}
if( ! libEnv->good() )
break;
Index: WinLibEnv.cxx
===================================================================
RCS file: /cvsroot/izpack/izpack-src/src/native/win/COIOSHelper/WinLibEnv.cxx,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- WinLibEnv.cxx 6 May 2005 20:09:12 -0000 1.2
+++ WinLibEnv.cxx 2 Sep 2005 10:51:36 -0000 1.3
@@ -20,6 +20,7 @@
*/
+#include "UnicodeHelper.h"
#include "jni.h"
#include <windows.h>
#include "WinLibEnv.h"
@@ -117,15 +118,15 @@
ret->setError( winLibErrorText, exceptionTypeName);
if( win32ErrorText )
{
- ret->win32ErrorText = new char[ strlen(win32ErrorText) + 2];
- strcpy( ret->win32ErrorText,win32ErrorText );
+ ret->win32ErrorText = new TCHAR[ _tcslen(win32ErrorText) + 2];
+ _tcscpy( ret->win32ErrorText,win32ErrorText );
}
for( int i = 0; i < STD_ARRAY_LENGTH; ++i)
{
if( args[i] )
{
- ret->args[i] = new char[ strlen(args[i]) + 2];
- strcpy( ret->args[i], args[i] );
+ ret->args[i] = new TCHAR[ _tcslen(args[i]) + 2];
+ _tcscpy( ret->args[i], args[i] );
}
}
return( ret);
@@ -148,8 +149,8 @@
winLibErrorText = NULL;
if( from->win32ErrorText )
{
- win32ErrorText = new char[ strlen(from->win32ErrorText) + 2];
- strcpy( win32ErrorText,from->win32ErrorText );
+ win32ErrorText = new TCHAR[ _tcslen(from->win32ErrorText) + 2];
+ _tcscpy( win32ErrorText,from->win32ErrorText );
}
else
win32ErrorText = NULL;
@@ -157,8 +158,8 @@
{
if( from->args[i] )
{
- args[i] = new char[ strlen(from->args[i]) + 2];
- strcpy( args[i], from->args[i] );
+ args[i] = new TCHAR[ _tcslen(from->args[i]) + 2];
+ _tcscpy( args[i], from->args[i] );
}
}
}
@@ -167,14 +168,14 @@
// Sets an error. Previos existent string will be deleted.
// The given messages will be copied.
// --------------------------------------------------------------------------
-void WinLibEnv::setError( char *err, char *errType )
+void WinLibEnv::setError( TCHAR *err, char *errType )
{
status = WLES_ERROR;
exceptionTypeName = errType;
if( winLibErrorText )
delete [] winLibErrorText;
- winLibErrorText = new char[ strlen(err) + 2];
- strcpy( winLibErrorText, err );
+ winLibErrorText = new TCHAR[ _tcslen(err) + 2];
+ _tcscpy( winLibErrorText, err );
}
@@ -182,12 +183,12 @@
// Adds a copy of the given string into the internal argument array.
// Only 16 arguments are supported, more will be ignored.
// --------------------------------------------------------------------------
-void WinLibEnv::addArg( const char *arg )
+void WinLibEnv::addArg( const TCHAR *arg )
{
if( currentArg > STD_ARRAY_LENGTH || ! arg)
return;
- args[currentArg] = new char[ strlen(arg) + 2];
- strcpy( args[currentArg++], arg );
+ args[currentArg] = new TCHAR[ _tcslen(arg) + 2];
+ _tcscpy( args[currentArg++], arg );
}
@@ -214,8 +215,8 @@
}
if( win32ErrorText )
delete [] win32ErrorText;
- win32ErrorText = new char[ strlen((LPTSTR) lpMsgBuf) + 2];
- strcpy( win32ErrorText, (LPTSTR) lpMsgBuf );
+ win32ErrorText = new TCHAR[ _tcslen((LPTSTR) lpMsgBuf) + 2];
+ _tcscpy( win32ErrorText, (LPTSTR) lpMsgBuf );
// Free the buffer.
LocalFree( lpMsgBuf );
@@ -230,7 +231,7 @@
{
if( obj1 == NULL || obj2 == NULL || obj3 == NULL || obj4 == NULL )
{
- setError( "", "NullPointerException" );
+ setError( _T(""), "NullPointerException" );
return( false );
}
return( true );
@@ -271,9 +272,9 @@
break;
// 4. Transform given error messages to Java.
if( winLibErrorText )
- jliberr = jniEnv->NewStringUTF( winLibErrorText );
+ jliberr = jniEnv->NEW_STRING( winLibErrorText );
else
- jliberr = jniEnv->NewStringUTF( "" );
+ jliberr = jniEnv->NEW_STRING( _T("") );
// 5. Handle exception dependant to the type id. Create throw
object.
// This is the place to add more different exceptions. It is
not necessary
// to define a different type id for every exception, else only
for one which has
@@ -297,7 +298,7 @@
if( win32Error )
getOSMessage();
if( win32ErrorText )
- jwin32 = jniEnv->NewStringUTF(
win32ErrorText );
+ jwin32 = jniEnv->NEW_STRING(
win32ErrorText );
throwObj = (jthrowable) jniEnv->NewObject(
clazz, mid, winLibError,
win32Error, jliberr, jwin32 );
// Set additional arguments to the throw object
if exist.
@@ -305,7 +306,7 @@
for( int i = 0; i < currentArg; ++i )
{
if( args[i] )
- jarg = jniEnv->NewStringUTF(
args[i] );
+ jarg = jniEnv->NEW_STRING(
args[i] );
else
jarg = NULL;
if( jarg == NULL )
Index: WinLibEnv.h
===================================================================
RCS file: /cvsroot/izpack/izpack-src/src/native/win/COIOSHelper/WinLibEnv.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- WinLibEnv.h 6 May 2005 20:09:12 -0000 1.2
+++ WinLibEnv.h 2 Sep 2005 10:51:36 -0000 1.3
@@ -59,14 +59,14 @@
static ExceptionNameRecord ExceptionNameMap[];
unsigned long win32Error;
unsigned long externCode;
- char *win32ErrorText;
+ TCHAR *win32ErrorText;
int winLibError;
- char *winLibErrorText;
+ TCHAR *winLibErrorText;
JNIEnv *jniEnv;
jobject jniObj;
WinLibEnvStatus_e status;
char *exceptionTypeName;
- char *args[STD_ARRAY_LENGTH];
+ TCHAR *args[STD_ARRAY_LENGTH];
int currentArg;
void getOSMessage();
ExceptionNameRecord *getExceptionNameRecord( char *exName );
@@ -78,21 +78,21 @@
jboolean good() { return(status < WLES_WARNING ? true :
false);};
JNIEnv *getJNIEnv() { return(jniEnv);};
- void setError( char *err, char *errType);
- void setError( char *err) { setError(err,
ExceptionNameMap[1].getShortName());};
- void setError( char *err, unsigned long errCode) {
setError( err ); win32Error = errCode;};
+ void setError( TCHAR *err, char *errType);
+ void setError( TCHAR *err) { setError(err,
ExceptionNameMap[1].getShortName());};
+ void setError( TCHAR *err, unsigned long errCode) {
setError( err ); win32Error = errCode;};
void setError( int err)
{ winLibError = err; status =
WLES_ERROR;exceptionTypeName = ExceptionNameMap[1].getShortName();};
void setErrorWithOS( int err ) { setError(err); win32Error =
GetLastError();};
- void setErrorWithOS( char *err) { setErrorWithOS( err,
ExceptionNameMap[1].getShortName() );};
- void setErrorWithOS( char *err, char *errType)
+ void setErrorWithOS( TCHAR *err) { setErrorWithOS( err,
ExceptionNameMap[1].getShortName() );};
+ void setErrorWithOS( TCHAR *err, char *errType)
{ setError( err, errType );win32Error =
GetLastError();};
- void addArg( const char *arg1 );
- void addArgs( const char *arg1, const char *arg2) {
addArg(arg1); addArg(arg2); };
- void addArgs( const char *arg1, const char *arg2, const char
*arg3) { addArgs(arg1, arg2); addArg(arg3); };
- void addArgs( const char *arg1, const char *arg2, const char
*arg3, const char *arg4)
+ void addArg( const TCHAR *arg1 );
+ void addArgs( const TCHAR *arg1, const TCHAR *arg2) {
addArg(arg1); addArg(arg2); };
+ void addArgs( const TCHAR *arg1, const TCHAR *arg2, const
TCHAR *arg3) { addArgs(arg1, arg2); addArg(arg3); };
+ void addArgs( const TCHAR *arg1, const TCHAR *arg2, const
TCHAR *arg3, const TCHAR *arg4)
{ addArgs(arg1, arg2); addArgs(arg3, arg4); };
void reset();
|