diff --git a/Meta/gn/secondary/Userland/Libraries/LibCore/BUILD.gn b/Meta/gn/secondary/Userland/Libraries/LibCore/BUILD.gn index 8417b153c31..9c8221b8e61 100644 --- a/Meta/gn/secondary/Userland/Libraries/LibCore/BUILD.gn +++ b/Meta/gn/secondary/Userland/Libraries/LibCore/BUILD.gn @@ -156,6 +156,7 @@ shared_library("LibCore") { "//Meta/gn/build/libs/crypt", "//Meta/gn/build/libs/pthread", "//Userland/Libraries/LibSystem", + "//Userland/Libraries/LibTimeZone", "//Userland/Libraries/LibURL", ] } diff --git a/Meta/gn/secondary/Userland/Libraries/LibTimeZone/BUILD.gn b/Meta/gn/secondary/Userland/Libraries/LibTimeZone/BUILD.gn index 8111b693a6f..d3824e2d622 100644 --- a/Meta/gn/secondary/Userland/Libraries/LibTimeZone/BUILD.gn +++ b/Meta/gn/secondary/Userland/Libraries/LibTimeZone/BUILD.gn @@ -69,16 +69,12 @@ source_set("LibTimeZone") { "$target_gen_dir/..", ] sources = [ - "DateTime.cpp", - "DateTime.h", "Forward.h", "TimeZone.cpp", "TimeZone.h", ] - deps = [ - "//AK", - "//Userland/Libraries/LibCore", - ] + deps = [ "//AK" ] + if (enable_timezone_database_download) { deps += [ ":generate_timezone_sources" ] sources += get_target_outputs(":generate_timezone_sources") diff --git a/Userland/Libraries/LibCore/CMakeLists.txt b/Userland/Libraries/LibCore/CMakeLists.txt index 0520d444934..88d5e38391d 100644 --- a/Userland/Libraries/LibCore/CMakeLists.txt +++ b/Userland/Libraries/LibCore/CMakeLists.txt @@ -70,7 +70,7 @@ else() endif() serenity_lib(LibCore core) -target_link_libraries(LibCore PRIVATE LibCoreMinimal LibCrypt LibSystem LibURL) +target_link_libraries(LibCore PRIVATE LibCoreMinimal LibCrypt LibSystem LibTimeZone LibURL) if (APPLE) target_link_libraries(LibCore PUBLIC "-framework CoreFoundation") diff --git a/Userland/Libraries/LibCore/DateTime.cpp b/Userland/Libraries/LibCore/DateTime.cpp index fd0acace756..a4e7dca263f 100644 --- a/Userland/Libraries/LibCore/DateTime.cpp +++ b/Userland/Libraries/LibCore/DateTime.cpp @@ -11,14 +11,36 @@ #include #include #include -#include +#include #include #include namespace Core { -Optional __attribute__((weak)) parse_time_zone_name(GenericLexer&) { return {}; } -void __attribute__((weak)) apply_time_zone_offset(StringView, UnixDateTime&) { } +static Optional parse_time_zone_name(GenericLexer& lexer) +{ + auto start_position = lexer.tell(); + + Optional canonicalized_time_zone; + + lexer.ignore_until([&](auto) { + auto time_zone = lexer.input().substring_view(start_position, lexer.tell() - start_position + 1); + + canonicalized_time_zone = TimeZone::canonicalize_time_zone(time_zone); + return canonicalized_time_zone.has_value(); + }); + + if (canonicalized_time_zone.has_value()) + lexer.ignore(); + + return canonicalized_time_zone; +} + +static void apply_time_zone_offset(StringView time_zone, UnixDateTime& time) +{ + if (auto offset = TimeZone::get_time_zone_offset(time_zone, time); offset.has_value()) + time -= Duration::from_seconds(offset->seconds); +} DateTime DateTime::now() { diff --git a/Userland/Libraries/LibTimeZone/CMakeLists.txt b/Userland/Libraries/LibTimeZone/CMakeLists.txt index 34a47124a80..c1cf99953ba 100644 --- a/Userland/Libraries/LibTimeZone/CMakeLists.txt +++ b/Userland/Libraries/LibTimeZone/CMakeLists.txt @@ -2,7 +2,6 @@ include(${SerenityOS_SOURCE_DIR}/Meta/CMake/time_zone_data.cmake) set(SOURCES ${TIME_ZONE_DATA_SOURCES} - DateTime.cpp TimeZone.cpp ) set(GENERATED_SOURCES ${CURRENT_LIB_GENERATED}) diff --git a/Userland/Libraries/LibTimeZone/DateTime.cpp b/Userland/Libraries/LibTimeZone/DateTime.cpp deleted file mode 100644 index f1ae4b14d1c..00000000000 --- a/Userland/Libraries/LibTimeZone/DateTime.cpp +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (c) 2023, Tim Flynn - * - * SPDX-License-Identifier: BSD-2-Clause - */ - -#include -#include -#include - -namespace Core { - -Optional parse_time_zone_name(GenericLexer& lexer) -{ - auto start_position = lexer.tell(); - - Optional canonicalized_time_zone; - - lexer.ignore_until([&](auto) { - auto time_zone = lexer.input().substring_view(start_position, lexer.tell() - start_position + 1); - - canonicalized_time_zone = TimeZone::canonicalize_time_zone(time_zone); - return canonicalized_time_zone.has_value(); - }); - - if (canonicalized_time_zone.has_value()) - lexer.ignore(); - - return canonicalized_time_zone; -} - -void apply_time_zone_offset(StringView time_zone, UnixDateTime& time) -{ - if (auto offset = TimeZone::get_time_zone_offset(time_zone, time); offset.has_value()) - time -= Duration::from_seconds(offset->seconds); -} - -} diff --git a/Userland/Libraries/LibTimeZone/DateTime.h b/Userland/Libraries/LibTimeZone/DateTime.h deleted file mode 100644 index e1827553b58..00000000000 --- a/Userland/Libraries/LibTimeZone/DateTime.h +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright (c) 2023, Tim Flynn - * - * SPDX-License-Identifier: BSD-2-Clause - */ - -#pragma once - -#include -#include -#include - -// This file contains definitions of Core::DateTime methods which require TZDB data. -namespace Core { - -Optional parse_time_zone_name(GenericLexer&); -void apply_time_zone_offset(StringView time_zone, UnixDateTime& time); - -}