From: Aida JonikienÄ— aidas957@gmail.com
__std_tzdb_get_time_zones() is a stub until ICU can be compiled. --- dlls/msvcp140_atomic_wait/main.c | 63 +++++++++++++++++++ .../msvcp140_atomic_wait.spec | 4 +- 2 files changed, 65 insertions(+), 2 deletions(-)
diff --git a/dlls/msvcp140_atomic_wait/main.c b/dlls/msvcp140_atomic_wait/main.c index 52ecae486eb..6bfcebe5c5c 100644 --- a/dlls/msvcp140_atomic_wait/main.c +++ b/dlls/msvcp140_atomic_wait/main.c @@ -175,3 +175,66 @@ void __stdcall __std_free_crt(void *ptr) { free(ptr); } + +typedef enum _std_tzdb_error { + success = 0, + win_error = 1, + icu_error = 2, +} __std_tzdb_error; + +typedef struct { + __std_tzdb_error err; + + const char* version; + size_t num_timezones; + const char** names; + const char** links; +} __std_tzdb_time_zones_info; + +__std_tzdb_time_zones_info* __stdcall __std_tzdb_get_time_zones(void) +{ + __std_tzdb_time_zones_info *info; + + FIXME("stub\n"); + + info = calloc(1, sizeof(*info)); + if (!info) + { + ERR("Failed to allocate struct\n"); + return NULL; + } + + /* TODO: Add real timezone info from ICU. */ + info->version = strdup("2024a"); + info->num_timezones = 1; + info->names = calloc(1, sizeof(char *) * info->num_timezones); + info->links = calloc(1, sizeof(char *) * info->num_timezones); + info->names[0] = strdup("Europe/London"); + info->links[0] = strdup("Europe/London"); + return info; +} + +void __stdcall __std_tzdb_delete_time_zones(__std_tzdb_time_zones_info* info) +{ + int i; + + TRACE("(%p)\n", info); + + if (info) + { + if (info->names) + { + for (i = 0; i < info->num_timezones; i++) + free((char *)info->names[i]); + free((char *)info->names); + } + if (info->links) + { + for (i = 0; i < info->num_timezones; i++) + free((char *)info->links[i]); + free((char *)info->links); + } + free((char *)info->version); + } + free(info); +} diff --git a/dlls/msvcp140_atomic_wait/msvcp140_atomic_wait.spec b/dlls/msvcp140_atomic_wait/msvcp140_atomic_wait.spec index 88ed59adad9..08ccb27fcf7 100644 --- a/dlls/msvcp140_atomic_wait/msvcp140_atomic_wait.spec +++ b/dlls/msvcp140_atomic_wait/msvcp140_atomic_wait.spec @@ -24,9 +24,9 @@ @ stub __std_tzdb_delete_current_zone @ stub __std_tzdb_delete_leap_seconds @ stub __std_tzdb_delete_sys_info -@ stub __std_tzdb_delete_time_zones +@ stdcall __std_tzdb_delete_time_zones(ptr) @ stub __std_tzdb_get_current_zone @ stub __std_tzdb_get_leap_seconds @ stub __std_tzdb_get_sys_info -@ stub __std_tzdb_get_time_zones +@ stdcall __std_tzdb_get_time_zones() @ stdcall __std_wait_for_threadpool_work_callbacks(ptr long)