Alexandre Julliard : include: Add some structures for the undocumented locale.nls layout.

Alexandre Julliard julliard at winehq.org
Tue Mar 22 16:46:29 CDT 2022


Module: wine
Branch: master
Commit: f161195859f1f851f43c709f08838ace4f38b0b6
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=f161195859f1f851f43c709f08838ace4f38b0b6

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Tue Mar 22 10:29:34 2022 +0100

include: Add some structures for the undocumented locale.nls layout.

Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 include/winternl.h | 139 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 139 insertions(+)

diff --git a/include/winternl.h b/include/winternl.h
index 3fa5fad9b46..d4f360bd2a7 100644
--- a/include/winternl.h
+++ b/include/winternl.h
@@ -4739,6 +4739,145 @@ typedef struct
     WCHAR           curdir_buffer[MAX_PATH];
 } WIN16_SUBSYSTEM_TIB;
 
+/* Undocumented: layout of the locale data in the locale.nls file */
+
+typedef struct
+{
+    UINT   sname;                  /* 000 LOCALE_SNAME */
+    UINT   sopentypelanguagetag;   /* 004 LOCALE_SOPENTYPELANGUAGETAG */
+    USHORT ilanguage;              /* 008 LOCALE_ILANGUAGE */
+    USHORT unique_lcid;            /* 00a unique id if lcid == 0x1000 */
+    USHORT idigits;                /* 00c LOCALE_IDIGITS */
+    USHORT inegnumber;             /* 00e LOCALE_INEGNUMBER */
+    USHORT icurrdigits;            /* 010 LOCALE_ICURRDIGITS*/
+    USHORT icurrency;              /* 012 LOCALE_ICURRENCY */
+    USHORT inegcurr;               /* 014 LOCALE_INEGCURR */
+    USHORT ilzero;                 /* 016 LOCALE_ILZERO */
+    USHORT inotneutral;            /* 018 LOCALE_INEUTRAL (inverted) */
+    USHORT ifirstdayofweek;        /* 01a LOCALE_IFIRSTDAYOFWEEK (monday=0) */
+    USHORT ifirstweekofyear;       /* 01c LOCALE_IFIRSTWEEKOFYEAR */
+    USHORT icountry;               /* 01e LOCALE_ICOUNTRY */
+    USHORT imeasure;               /* 020 LOCALE_IMEASURE */
+    USHORT idigitsubstitution;     /* 022 LOCALE_IDIGITSUBSTITUTION */
+    UINT   sgrouping;              /* 024 LOCALE_SGROUPING (as binary string) */
+    UINT   smongrouping;           /* 028 LOCALE_SMONGROUPING  (as binary string) */
+    UINT   slist;                  /* 02c LOCALE_SLIST */
+    UINT   sdecimal;               /* 030 LOCALE_SDECIMAL */
+    UINT   sthousand;              /* 034 LOCALE_STHOUSAND */
+    UINT   scurrency;              /* 038 LOCALE_SCURRENCY */
+    UINT   smondecimalsep;         /* 03c LOCALE_SMONDECIMALSEP */
+    UINT   smonthousandsep;        /* 040 LOCALE_SMONTHOUSANDSEP */
+    UINT   spositivesign;          /* 044 LOCALE_SPOSITIVESIGN */
+    UINT   snegativesign;          /* 048 LOCALE_SNEGATIVESIGN */
+    UINT   s1159;                  /* 04c LOCALE_S1159 */
+    UINT   s2359;                  /* 050 LOCALE_S2359 */
+    UINT   snativedigits;          /* 054 LOCALE_SNATIVEDIGITS (array of single digits) */
+    UINT   stimeformat;            /* 058 LOCALE_STIMEFORMAT (array of formats) */
+    UINT   sshortdate;             /* 05c LOCALE_SSHORTDATE (array of formats) */
+    UINT   slongdate;              /* 060 LOCALE_SLONGDATE (array of formats) */
+    UINT   syearmonth;             /* 064 LOCALE_SYEARMONTH (array of formats) */
+    UINT   sduration;              /* 068 LOCALE_SDURATION (array of formats) */
+    USHORT idefaultlanguage;       /* 06c LOCALE_IDEFAULTLANGUAGE */
+    USHORT idefaultansicodepage;   /* 06e LOCALE_IDEFAULTANSICODEPAGE */
+    USHORT idefaultcodepage;       /* 070 LOCALE_IDEFAULTCODEPAGE */
+    USHORT idefaultmaccodepage;    /* 072 LOCALE_IDEFAULTMACCODEPAGE */
+    USHORT idefaultebcdiccodepage; /* 074 LOCALE_IDEFAULTEBCDICCODEPAGE */
+    USHORT old_geoid;              /* 076 LOCALE_IGEOID (older version?) */
+    USHORT ipapersize;             /* 078 LOCALE_IPAPERSIZE */
+    BYTE   islamic_cal[2];         /* 07a calendar id for islamic calendars (?) */
+    UINT   scalendartype;          /* 07c string, first char is LOCALE_ICALENDARTYPE, next chars are LOCALE_IOPTIONALCALENDAR */
+    UINT   sabbrevlangname;        /* 080 LOCALE_SABBREVLANGNAME */
+    UINT   siso639langname;        /* 084 LOCALE_SISO639LANGNAME */
+    UINT   senglanguage;           /* 088 LOCALE_SENGLANGUAGE */
+    UINT   snativelangname;        /* 08c LOCALE_SNATIVELANGNAME */
+    UINT   sengcountry;            /* 090 LOCALE_SENGCOUNTRY */
+    UINT   snativectryname;        /* 094 LOCALE_SNATIVECTRYNAME */
+    UINT   sabbrevctryname;        /* 098 LOCALE_SABBREVCTRYNAME */
+    UINT   siso3166ctryname;       /* 09c LOCALE_SISO3166CTRYNAME */
+    UINT   sintlsymbol;            /* 0a0 LOCALE_SINTLSYMBOL */
+    UINT   sengcurrname;           /* 0a4 LOCALE_SENGCURRNAME */
+    UINT   snativecurrname;        /* 0a8 LOCALE_SNATIVECURRNAME */
+    UINT   fontsignature;          /* 0ac LOCALE_FONTSIGNATURE (binary string) */
+    UINT   siso639langname2;       /* 0b0 LOCALE_SISO639LANGNAME2 */
+    UINT   siso3166ctryname2;      /* 0b4 LOCALE_SISO3166CTRYNAME2 */
+    UINT   sparent;                /* 0b8 LOCALE_SPARENT */
+    UINT   sdayname;               /* 0bc LOCALE_SDAYNAME1 (array of days 1..7) */
+    UINT   sabbrevdayname;         /* 0c0 LOCALE_SABBREVDAYNAME1  (array of days 1..7) */
+    UINT   smonthname;             /* 0c4 LOCALE_SMONTHNAME1 (array of months 1..13) */
+    UINT   sabbrevmonthname;       /* 0c8 LOCALE_SABBREVMONTHNAME1 (array of months 1..13) */
+    UINT   sgenitivemonth;         /* 0cc equivalent of LOCALE_SMONTHNAME1 for genitive months */
+    UINT   sabbrevgenitivemonth;   /* 0d0 equivalent of LOCALE_SABBREVMONTHNAME1 for genitive months */
+    UINT   calnames;               /* 0d4 array of calendar names */
+    UINT   customsorts;            /* 0d8 array of custom sort names */
+    USHORT inegativepercent;       /* 0dc LOCALE_INEGATIVEPERCENT */
+    USHORT ipositivepercent;       /* 0de LOCALE_IPOSITIVEPERCENT */
+    USHORT unknown1;               /* 0e0 */
+    USHORT ireadinglayout;         /* 0e2 LOCALE_IREADINGLAYOUT */
+    USHORT unknown2[2];            /* 0e4 */
+    UINT   unused1;                /* 0e8 unused? */
+    UINT   sengdisplayname;        /* 0ec LOCALE_SENGLISHDISPLAYNAME */
+    UINT   snativedisplayname;     /* 0f0 LOCALE_SNATIVEDISPLAYNAME */
+    UINT   spercent;               /* 0f4 LOCALE_SPERCENT */
+    UINT   snan;                   /* 0f8 LOCALE_SNAN */
+    UINT   sposinfinity;           /* 0fc LOCALE_SPOSINFINITY */
+    UINT   sneginfinity;           /* 100 LOCALE_SNEGINFINITY */
+    UINT   unused2;                /* 104 unused? */
+    UINT   serastring;             /* 108 CAL_SERASTRING */
+    UINT   sabbreverastring;       /* 10c CAL_SABBREVERASTRING */
+    UINT   unused3;                /* 110 unused? */
+    UINT   sconsolefallbackname;   /* 114 LOCALE_SCONSOLEFALLBACKNAME */
+    UINT   sshorttime;             /* 118 LOCALE_SSHORTTIME (array of formats) */
+    UINT   sshortestdayname;       /* 11c LOCALE_SSHORTESTDAYNAME1 (array of days 1..7) */
+    UINT   unused4;                /* 120 unused? */
+    UINT   ssortlocale;            /* 124 LOCALE_SSORTLOCALE */
+    UINT   skeyboardstoinstall;    /* 128 LOCALE_SKEYBOARDSTOINSTALL */
+    UINT   sscripts;               /* 12c LOCALE_SSCRIPTS */
+    UINT   srelativelongdate;      /* 130 LOCALE_SRELATIVELONGDATE */
+    UINT   igeoid;                 /* 134 LOCALE_IGEOID */
+    UINT   sshortestam;            /* 138 LOCALE_SSHORTESTAM */
+    UINT   sshortestpm;            /* 13c LOCALE_SSHORTESTPM */
+    UINT   smonthday;              /* 140 LOCALE_SMONTHDAY (array of formats) */
+    UINT   keyboard_layout;        /* 144 keyboard layouts */
+} NLS_LOCALE_DATA;
+
+typedef struct
+{
+    UINT   id;                     /* 00 lcid */
+    USHORT idx;                    /* 04 index in locales array */
+    USHORT name;                   /* 06 locale name */
+} NLS_LOCALE_LCID_INDEX;
+
+typedef struct
+{
+    USHORT name;                   /* 00 locale name */
+    USHORT idx;                    /* 02 index in locales array */
+    UINT   id;                     /* 04 lcid */
+} NLS_LOCALE_LCNAME_INDEX;
+
+typedef struct
+{
+    UINT   offset;                 /* 00 offset to version, always 8? */
+    UINT   unknown1;               /* 04 */
+    UINT   version;                /* 08 file format version */
+    UINT   magic;                  /* 0c magic 'NSDS' */
+    UINT   unknown2[3];            /* 10 */
+    USHORT header_size;            /* 1c size of this header (?) */
+    USHORT nb_lcids;               /* 1e number of lcids in index */
+    USHORT nb_locales;             /* 20 number of locales in array */
+    USHORT locale_size;            /* 22 size of NLS_LOCALE_DATA structure */
+    UINT   locales_offset;         /* 24 offset of locales array */
+    USHORT nb_lcnames;             /* 28 number of lcnames in index */
+    USHORT pad;                    /* 2a */
+    UINT   lcids_offset;           /* 2c offset of lcids index */
+    UINT   lcnames_offset;         /* 30 offset of lcnames index */
+    UINT   unknown3;               /* 34 */
+    USHORT nb_calendars;           /* 38 number of calendars in array */
+    USHORT calendar_size;          /* 3a size of calendar structure */
+    UINT   calendars_offset;       /* 3c offset of calendars array */
+    UINT   strings_offset;         /* 40 offset of strings data */
+    USHORT unknown4[4];            /* 44 */
+} NLS_LOCALE_HEADER;
+
 #endif /* __WINESRC__ */
 
 #ifdef __cplusplus




More information about the wine-cvs mailing list