headers: Add missing APIs in winnls.h.

Signed-off-by: Biswapriyo Nath <nathbappai@gmail.com>
Signed-off-by: Liu Hao <lh_mouse@126.com>
diff --git a/mingw-w64-headers/include/winnls.h b/mingw-w64-headers/include/winnls.h
index 0e338e0..cd8c602 100644
--- a/mingw-w64-headers/include/winnls.h
+++ b/mingw-w64-headers/include/winnls.h
@@ -346,6 +346,8 @@
 #define LOCALE_IDEFAULTANSICODEPAGE 0x00001004
 #define LOCALE_IDEFAULTMACCODEPAGE 0x00001011
 
+#define LOCALE_IDIALINGCODE 0x00000005
+
 #define LOCALE_SLIST 0x0000000c
 #define LOCALE_IMEASURE 0x0000000d
 
@@ -372,6 +374,8 @@
 #define LOCALE_SSHORTDATE 0x0000001f
 #define LOCALE_SLONGDATE 0x00000020
 #define LOCALE_STIMEFORMAT 0x00001003
+#define LOCALE_SAM 0x00000028
+#define LOCALE_SPM 0x00000029
 #define LOCALE_IDATE 0x00000021
 #define LOCALE_ILDATE 0x00000022
 #define LOCALE_ITIME 0x00000023
@@ -485,6 +489,15 @@
 #define LOCALE_SSORTLOCALE 0x0000007b
 #endif
 
+#if WINVER >= _WIN32_WINNT_WIN8
+#define LOCALE_SRELATIVELONGDATE 0x0000007c
+#endif
+
+#if WINVER >= _WIN32_WINNT_WIN10
+#define LOCALE_SSHORTESTAM 0x0000007e
+#define LOCALE_SSHORTESTPM 0x0000007f
+#endif
+
 #define TIME_NOMINUTESORSECONDS 0x00000001
 #define TIME_NOSECONDS 0x00000002
 #define TIME_NOTIMEMARKER 0x00000004
@@ -500,6 +513,9 @@
 #if WINVER >= 0x0601
 #define DATE_AUTOLAYOUT 0x00000040
 #endif
+#if WINVER >= _WIN32_WINNT_WINTHRESHOLD
+#define DATE_MONTHDAY 0x00000080
+#endif
 
 #define CAL_NOUSEROVERRIDE LOCALE_NOUSEROVERRIDE
 #define CAL_USE_CP_ACP LOCALE_USE_CP_ACP
@@ -570,6 +586,14 @@
 #define CAL_SMONTHDAY 0x00000038
 #define CAL_SABBREVERASTRING 0x00000039
 #endif
+#if WINVER >= _WIN32_WINNT_WIN8
+#define CAL_SRELATIVELONGDATE 0x0000003a
+#endif
+#if NTDDI_VERSION >= NTDDI_WIN10_RS2
+#define CAL_SENGLISHERANAME 0x0000003b
+#define CAL_SENGLISHABBREVERANAME 0x0000003c
+#endif
+#define CAL_SJAPANESEERAFIRSTYEAR 0x0000003d
 
 #define ENUM_ALL_CALENDARS 0xffffffff
 
@@ -766,7 +790,14 @@
     GEO_TIMEZONES = 0x000a,
     GEO_OFFICIALLANGUAGES = 0x000b,
     GEO_ISO_UN_NUMBER = 0x000c,
-    GEO_PARENT = 0x000d
+    GEO_PARENT = 0x000d,
+    GEO_DIALINGCODE = 0x000e,
+    GEO_CURRENCYCODE= 0x000f,
+    GEO_CURRENCYSYMBOL= 0x0010,
+#if NTDDI_VERSION >= NTDDI_WIN10_RS3
+    GEO_NAME = 0x0011,
+    GEO_ID = 0x0012
+#endif
   };
 
   enum SYSGEOCLASS {
@@ -816,6 +847,9 @@
   typedef WINBOOL (CALLBACK *CALINFO_ENUMPROCW) (LPWSTR);
   typedef WINBOOL (CALLBACK *CALINFO_ENUMPROCEXW) (LPWSTR, CALID);
   typedef WINBOOL (CALLBACK *GEO_ENUMPROC) (GEOID);
+  #if NTDDI_VERSION >= NTDDI_WIN10_RS3
+  typedef WINBOOL (CALLBACK *GEO_ENUMNAMEPROC) (PWSTR, LPARAM);
+  #endif
 #else
   typedef FARPROC LANGUAGEGROUP_ENUMPROCA;
   typedef FARPROC LANGGROUPLOCALE_ENUMPROCA;
@@ -838,6 +872,9 @@
   typedef FARPROC TIMEFMT_ENUMPROCW;
   typedef FARPROC CALINFO_ENUMPROCW;
   typedef FARPROC CALINFO_ENUMPROCEXW;
+  #if NTDDI_VERSION >= NTDDI_WIN10_RS3
+  typedef FARPROC GEO_ENUMNAMEPROC;
+  #endif
 #endif
 
 #ifdef UNICODE
@@ -987,6 +1024,7 @@
   WINBASEAPI int WINAPI GetGeoInfoW (GEOID Location, GEOTYPE GeoType, LPWSTR lpGeoData, int cchData, LANGID LangId);
   WINBASEAPI WINBOOL WINAPI EnumSystemGeoID (GEOCLASS GeoClass, GEOID ParentGeoId, GEO_ENUMPROC lpGeoEnumProc);
   WINBASEAPI GEOID WINAPI GetUserGeoID (GEOCLASS GeoClass);
+  WINBASEAPI int WINAPI GetUserDefaultGeoName (LPWSTR geoName, int geoNameCount);
   WINBASEAPI WINBOOL WINAPI GetCPInfo (UINT CodePage, LPCPINFO lpCPInfo);
   WINBASEAPI WINBOOL WINAPI GetCPInfoExA (UINT CodePage, DWORD dwFlags, LPCPINFOEXA lpCPInfoEx);
   WINBASEAPI WINBOOL WINAPI GetCPInfoExW (UINT CodePage, DWORD dwFlags, LPCPINFOEXW lpCPInfoEx);
@@ -996,6 +1034,11 @@
   WINBASEAPI LCID WINAPI LocaleNameToLCID (LPCWSTR lpName, DWORD dwFlags);
 #endif
 
+#if NTDDI_VERSION >= NTDDI_WIN10_RS3
+  WINBASEAPI int WINAPI GetGeoInfoEx (PWSTR location, GEOTYPE geoType, PWSTR geoData, int geoDataCount);
+  WINBASEAPI WINBOOL WINAPI SetUserGeoName (PWSTR geoName);
+#endif
+
 #define GetGeoInfo __MINGW_NAME_AW(GetGeoInfo)
 #define GetCPInfoEx __MINGW_NAME_AW(GetCPInfoEx)
 
@@ -1042,6 +1085,16 @@
 #define EnumLanguageGroupLocales __MINGW_NAME_AW(EnumLanguageGroupLocales)
 #define EnumUILanguages __MINGW_NAME_AW(EnumUILanguages)
 
+#if NTDDI_VERSION >= NTDDI_WIN10_RS3
+  WINBASEAPI WINBOOL WINAPI EnumSystemGeoNames (GEOCLASS geoClass, GEO_ENUMNAMEPROC geoEnumProc, LPARAM data);
+#endif
+
+#if NTDDI_VERSION >= NTDDI_WIN10_VB
+  DECLARE_HANDLE(HSAVEDUILANGUAGES);
+  WINBASEAPI WINBOOL WINAPI SetThreadPreferredUILanguages2 (ULONG flags, PCZZWSTR languages, PULONG numLanguagesSet, HSAVEDUILANGUAGES *snapshot);
+  WINBASEAPI void WINAPI RestoreThreadPreferredUILanguages (const HSAVEDUILANGUAGES snapshot);
+#endif /* NTDDI_WIN10_VB */
+
 #endif
 
 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP)