111 lines
4.0 KiB
Diff
111 lines
4.0 KiB
Diff
|
|
diff --git a/source/common/ucmndata.h b/source/common/ucmndata.h
|
||
|
|
index 486b4fd7..1e63833f 100644
|
||
|
|
--- a/source/common/ucmndata.h
|
||
|
|
+++ b/source/common/ucmndata.h
|
||
|
|
@@ -45,6 +45,20 @@ typedef struct {
|
||
|
|
UDataInfo info;
|
||
|
|
} DataHeader;
|
||
|
|
|
||
|
|
+typedef struct {
|
||
|
|
+ DataHeader hdr;
|
||
|
|
+ char padding[8];
|
||
|
|
+ uint32_t count, reserved;
|
||
|
|
+ /*
|
||
|
|
+ const struct {
|
||
|
|
+ const char *const name;
|
||
|
|
+ const void *const data;
|
||
|
|
+ } toc[1];
|
||
|
|
+ */
|
||
|
|
+ int fakeNameAndData[4]; /* TODO: Change this header type from */
|
||
|
|
+ /* pointerTOC to OffsetTOC. */
|
||
|
|
+} ICU_Data_Header;
|
||
|
|
+
|
||
|
|
typedef struct {
|
||
|
|
uint32_t nameOffset;
|
||
|
|
uint32_t dataOffset;
|
||
|
|
diff --git a/source/common/udata.cpp b/source/common/udata.cpp
|
||
|
|
index 2bc74c97..432a511e 100644
|
||
|
|
--- a/source/common/udata.cpp
|
||
|
|
+++ b/source/common/udata.cpp
|
||
|
|
@@ -643,7 +643,7 @@ U_NAMESPACE_END
|
||
|
|
*----------------------------------------------------------------------*/
|
||
|
|
#if !defined(ICU_DATA_DIR_WINDOWS)
|
||
|
|
// When using the Windows system data, we expect only a single data file.
|
||
|
|
-extern "C" const DataHeader U_DATA_API U_ICUDATA_ENTRY_POINT;
|
||
|
|
+extern "C" const ICU_Data_Header U_DATA_API U_ICUDATA_ENTRY_POINT;
|
||
|
|
#endif
|
||
|
|
|
||
|
|
/*
|
||
|
|
@@ -696,7 +696,7 @@ openCommonData(const char *path, /* Path from OpenChoice? */
|
||
|
|
// When using the Windows system data, we expect only a single data file.
|
||
|
|
int32_t i;
|
||
|
|
for(i = 0; i < commonDataIndex; ++i) {
|
||
|
|
- if(gCommonICUDataArray[i]->pHeader == &U_ICUDATA_ENTRY_POINT) {
|
||
|
|
+ if(gCommonICUDataArray[i]->pHeader == &U_ICUDATA_ENTRY_POINT.hdr) {
|
||
|
|
/* The linked-in data is already in the list. */
|
||
|
|
return NULL;
|
||
|
|
}
|
||
|
|
@@ -719,7 +719,7 @@ openCommonData(const char *path, /* Path from OpenChoice? */
|
||
|
|
*/
|
||
|
|
#if !defined(ICU_DATA_DIR_WINDOWS)
|
||
|
|
// When using the Windows system data, we expect only a single data file.
|
||
|
|
- setCommonICUDataPointer(&U_ICUDATA_ENTRY_POINT, false, pErrorCode);
|
||
|
|
+ setCommonICUDataPointer(&U_ICUDATA_ENTRY_POINT.hdr, false, pErrorCode);
|
||
|
|
{
|
||
|
|
Mutex lock;
|
||
|
|
return gCommonICUDataArray[commonDataIndex];
|
||
|
|
diff --git a/source/stubdata/stubdata.cpp b/source/stubdata/stubdata.cpp
|
||
|
|
index 3f336612..88449b57 100644
|
||
|
|
--- a/source/stubdata/stubdata.cpp
|
||
|
|
+++ b/source/stubdata/stubdata.cpp
|
||
|
|
@@ -20,29 +20,33 @@
|
||
|
|
*
|
||
|
|
*/
|
||
|
|
|
||
|
|
-#include "stubdata.h"
|
||
|
|
+#include "ucmndata.h"
|
||
|
|
|
||
|
|
extern "C" U_EXPORT const ICU_Data_Header U_ICUDATA_ENTRY_POINT = {
|
||
|
|
- 32, /* headerSize */
|
||
|
|
- 0xda, /* magic1, (see struct MappedData in udata.c) */
|
||
|
|
- 0x27, /* magic2 */
|
||
|
|
- { /*UDataInfo */
|
||
|
|
- sizeof(UDataInfo), /* size */
|
||
|
|
- 0, /* reserved */
|
||
|
|
+ { /* DataHeader */
|
||
|
|
+ { /* MappedData */
|
||
|
|
+ 32, /* headerSize */
|
||
|
|
+ 0xda, /* magic1, (see struct MappedData in udata.c) */
|
||
|
|
+ 0x27, /* magic2 */
|
||
|
|
+ },
|
||
|
|
+ { /*UDataInfo */
|
||
|
|
+ sizeof(UDataInfo), /* size */
|
||
|
|
+ 0, /* reserved */
|
||
|
|
|
||
|
|
#if U_IS_BIG_ENDIAN
|
||
|
|
- 1,
|
||
|
|
+ 1,
|
||
|
|
#else
|
||
|
|
- 0,
|
||
|
|
+ 0,
|
||
|
|
#endif
|
||
|
|
|
||
|
|
- U_CHARSET_FAMILY,
|
||
|
|
- sizeof(UChar),
|
||
|
|
- 0, /* reserved */
|
||
|
|
- { /* data format identifier */
|
||
|
|
- 0x54, 0x6f, 0x43, 0x50}, /* "ToCP" */
|
||
|
|
- {1, 0, 0, 0}, /* format version major, minor, milli, micro */
|
||
|
|
- {0, 0, 0, 0} /* dataVersion */
|
||
|
|
+ U_CHARSET_FAMILY,
|
||
|
|
+ sizeof(UChar),
|
||
|
|
+ 0, /* reserved */
|
||
|
|
+ { /* data format identifier */
|
||
|
|
+ 0x54, 0x6f, 0x43, 0x50}, /* "ToCP" */
|
||
|
|
+ {1, 0, 0, 0}, /* format version major, minor, milli, micro */
|
||
|
|
+ {0, 0, 0, 0} /* dataVersion */
|
||
|
|
+ },
|
||
|
|
},
|
||
|
|
{0,0,0,0,0,0,0,0}, /* Padding[8] */
|
||
|
|
0, /* count */
|