Home | History | Annotate | Download | only in patches
      1 Index: source/common/udata.cpp
      2 ===================================================================
      3 --- source/common/udata.cpp	(revision 68397)
      4 +++ source/common/udata.cpp	(working copy)
      5 @@ -610,7 +610,7 @@
      6   *      our common data.                                                *
      7   *                                                                      *
      8   *----------------------------------------------------------------------*/
      9 -extern "C" const DataHeader U_DATA_API U_ICUDATA_ENTRY_POINT;
     10 +extern "C" const ICU_Data_Header U_DATA_API U_ICUDATA_ENTRY_POINT;
     11  
     12  /*
     13   * This would be a good place for weak-linkage declarations of
     14 @@ -656,7 +656,7 @@
     15          if(gCommonICUDataArray[commonDataIndex] == NULL) {
     16              int32_t i;
     17              for(i = 0; i < commonDataIndex; ++i) {
     18 -                if(gCommonICUDataArray[i]->pHeader == &U_ICUDATA_ENTRY_POINT) {
     19 +                if(gCommonICUDataArray[i]->pHeader == &U_ICUDATA_ENTRY_POINT.hdr) {
     20                      /* The linked-in data is already in the list. */
     21                      return NULL;
     22                  }
     23 @@ -675,7 +675,7 @@
     24                  setCommonICUDataPointer(uprv_getICUData_conversion(), FALSE, pErrorCode);
     25              }
     26              */
     27 -            setCommonICUDataPointer(&U_ICUDATA_ENTRY_POINT, FALSE, pErrorCode);
     28 +            setCommonICUDataPointer(&U_ICUDATA_ENTRY_POINT.hdr, FALSE, pErrorCode);
     29          }
     30          return gCommonICUDataArray[commonDataIndex];
     31      }
     32 Index: source/common/ucmndata.h
     33 ===================================================================
     34 --- source/common/ucmndata.h	(revision 68397)
     35 +++ source/common/ucmndata.h	(working copy)
     36 @@ -44,6 +44,20 @@
     37  } DataHeader;
     38  
     39  typedef struct {
     40 +    DataHeader hdr;
     41 +    char padding[8];
     42 +    uint32_t count, reserved;
     43 +    /*
     44 +    const struct {
     45 +    const char *const name; 
     46 +    const void *const data;
     47 +    } toc[1];
     48 +    */
     49 +   int   fakeNameAndData[4];       /* TODO:  Change this header type from */
     50 +                                   /*        pointerTOC to OffsetTOC.     */
     51 +} ICU_Data_Header;
     52 +
     53 +typedef struct {
     54      uint32_t nameOffset;
     55      uint32_t dataOffset;
     56  } UDataOffsetTOCEntry;
     57 Index: source/stubdata/stubdata.c
     58 ===================================================================
     59 --- source/stubdata/stubdata.c	(revision 68397)
     60 +++ source/stubdata/stubdata.c	(working copy)
     61 @@ -20,45 +20,34 @@
     62  #include "unicode/utypes.h"
     63  #include "unicode/udata.h"
     64  #include "unicode/uversion.h"
     65 +#include "ucmndata.h"
     66  
     67  
     68 -typedef struct {
     69 -    uint16_t headerSize;
     70 -    uint8_t magic1, magic2;
     71 -    UDataInfo info;
     72 -    char padding[8];
     73 -    uint32_t count, reserved;
     74 -    /*
     75 -    const struct {
     76 -    const char *const name; 
     77 -    const void *const data;
     78 -    } toc[1];
     79 -    */
     80 -   int   fakeNameAndData[4];       /* TODO:  Change this header type from */
     81 -                                   /*        pointerTOC to OffsetTOC.     */
     82 -} ICU_Data_Header;
     83 -
     84  U_EXPORT const ICU_Data_Header U_ICUDATA_ENTRY_POINT = {
     85 -    32,          /* headerSize */
     86 -    0xda,        /* magic1,  (see struct MappedData in udata.c)  */
     87 -    0x27,        /* magic2     */
     88 -    {            /*UDataInfo   */
     89 -        sizeof(UDataInfo),      /* size        */
     90 -        0,                      /* reserved    */
     91 +    {            /* DataHeader */
     92 +        {            /* MappedData */
     93 +            32,          /* headerSize */
     94 +            0xda,        /* magic1,  (see struct MappedData in udata.c)  */
     95 +            0x27,        /* magic2     */
     96 +        },
     97 +        {            /*UDataInfo   */
     98 +            sizeof(UDataInfo),      /* size        */
     99 +            0,                      /* reserved    */
    100  
    101  #if U_IS_BIG_ENDIAN
    102 -        1,
    103 +            1,
    104  #else
    105 -        0,
    106 +            0,
    107  #endif
    108  
    109 -        U_CHARSET_FAMILY,
    110 -        sizeof(UChar),   
    111 -        0,               /* reserved      */
    112 -        {                /* data format identifier */
    113 -           0x54, 0x6f, 0x43, 0x50}, /* "ToCP" */
    114 -           {1, 0, 0, 0},   /* format version major, minor, milli, micro */
    115 -           {0, 0, 0, 0}    /* dataVersion   */
    116 +            U_CHARSET_FAMILY,
    117 +            sizeof(UChar),   
    118 +            0,               /* reserved      */
    119 +            {                /* data format identifier */
    120 +               0x54, 0x6f, 0x43, 0x50}, /* "ToCP" */
    121 +               {1, 0, 0, 0},   /* format version major, minor, milli, micro */
    122 +               {0, 0, 0, 0}    /* dataVersion   */
    123 +        },
    124      },
    125      {0,0,0,0,0,0,0,0},  /* Padding[8]   */ 
    126      0,                  /* count        */
    127