diff options
-rwxr-xr-x | Meta/build-root-filesystem.sh | 4 | ||||
-rw-r--r-- | Userland/Utilities/CMakeLists.txt | 1 | ||||
-rw-r--r-- | Userland/Utilities/timezone.cpp | 33 |
3 files changed, 38 insertions, 0 deletions
diff --git a/Meta/build-root-filesystem.sh b/Meta/build-root-filesystem.sh index 8cc8be1112..fe26f63944 100755 --- a/Meta/build-root-filesystem.sh +++ b/Meta/build-root-filesystem.sh @@ -101,6 +101,10 @@ if [ -f mnt/bin/utmpupdate ]; then chown 0:$utmp_gid mnt/bin/utmpupdate chmod 2755 mnt/bin/utmpupdate fi +if [ -f mnt/bin/timezone ]; then + chown 0:$phys_gid mnt/bin/timezone + chmod 4750 mnt/bin/timezone +fi if [ -f mnt/usr/Tests/Kernel/TestMemoryDeviceMmap ]; then chown 0:0 mnt/usr/Tests/Kernel/TestMemoryDeviceMmap chmod 4755 mnt/usr/Tests/Kernel/TestMemoryDeviceMmap diff --git a/Userland/Utilities/CMakeLists.txt b/Userland/Utilities/CMakeLists.txt index 5c106a8f14..0dd3e06f47 100644 --- a/Userland/Utilities/CMakeLists.txt +++ b/Userland/Utilities/CMakeLists.txt @@ -156,6 +156,7 @@ target_link_libraries(telws LibProtocol LibLine) target_link_libraries(test-fuzz LibCore LibGemini LibGfx LibHTTP LibIPC LibJS LibMarkdown LibShell) target_link_libraries(test-imap LibIMAP LibMain) target_link_libraries(test-pthread LibThreading) +target_link_libraries(timezone LibMain) target_link_libraries(top LibMain) target_link_libraries(touch LibMain) target_link_libraries(truncate LibMain) diff --git a/Userland/Utilities/timezone.cpp b/Userland/Utilities/timezone.cpp new file mode 100644 index 0000000000..3c2c008c26 --- /dev/null +++ b/Userland/Utilities/timezone.cpp @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2022, Tim Flynn <trflynn89@pm.me> + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#include <AK/StringView.h> +#include <AK/Try.h> +#include <LibCore/ArgsParser.h> +#include <LibCore/System.h> +#include <LibMain/Main.h> +#include <LibTimeZone/TimeZone.h> + +ErrorOr<int> serenity_main(Main::Arguments arguments) +{ + TRY(Core::System::pledge("stdio rpath wpath cpath")); + TRY(Core::System::unveil("/etc/timezone", "rwc")); + TRY(Core::System::unveil(nullptr, nullptr)); + + StringView time_zone; + + Core::ArgsParser args_parser; + args_parser.add_positional_argument(time_zone, "The time zone to set", "time-zone", Core::ArgsParser::Required::No); + args_parser.parse(arguments); + + if (time_zone.is_empty()) { + outln("{}", TimeZone::current_time_zone()); + return 0; + } + + TRY(TimeZone::change_time_zone(time_zone)); + return 0; +} |