mirror of
https://github.com/RGBCube/serenity
synced 2025-05-14 08:44:58 +00:00
Userland: Invoke tzset in applications that care about time zones
In most applications, we invoke tzset once at startup for now. Most of these are short lived and don't need to know about time zone changes. The exception is the ClockWidget in the taskbar. Here, we invoke tzset each time we update the system time. This way, any time zone changes can take effect immediately.
This commit is contained in:
parent
010ec36d20
commit
ede5c9548e
11 changed files with 33 additions and 1 deletions
|
@ -14,6 +14,7 @@
|
|||
#include <LibGUI/Menubar.h>
|
||||
#include <LibGUI/Window.h>
|
||||
#include <LibMain/Main.h>
|
||||
#include <time.h>
|
||||
|
||||
ErrorOr<int> serenity_main(Main::Arguments arguments)
|
||||
{
|
||||
|
@ -24,6 +25,8 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
|||
TRY(Core::System::unveil("/res", "r"));
|
||||
TRY(Core::System::unveil(nullptr, nullptr));
|
||||
|
||||
tzset();
|
||||
|
||||
auto app_icon = TRY(GUI::Icon::try_create_default_icon("app-analog-clock"));
|
||||
auto window = TRY(GUI::Window::try_create());
|
||||
window->set_title(Core::DateTime::now().to_string("%Y-%m-%d"));
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#include <LibGUI/Icon.h>
|
||||
#include <LibGUI/TabWidget.h>
|
||||
#include <LibMain/Main.h>
|
||||
#include <time.h>
|
||||
#include <unistd.h>
|
||||
|
||||
namespace Browser {
|
||||
|
@ -82,6 +83,8 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
|||
TRY(Core::System::unveil("/tmp/portal/request", "rw"));
|
||||
TRY(Core::System::unveil(nullptr, nullptr));
|
||||
|
||||
tzset();
|
||||
|
||||
auto app_icon = GUI::Icon::default_icon("app-browser");
|
||||
|
||||
Browser::g_home_url = Config::read_string("Browser", "Preferences", "Home", "file:///res/html/misc/welcome.html");
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
#include <LibGUI/Toolbar.h>
|
||||
#include <LibGUI/Window.h>
|
||||
#include <LibMain/Main.h>
|
||||
#include <time.h>
|
||||
|
||||
ErrorOr<int> serenity_main(Main::Arguments arguments)
|
||||
{
|
||||
|
@ -31,6 +32,8 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
|||
TRY(Core::System::unveil("/res", "r"));
|
||||
TRY(Core::System::unveil(nullptr, nullptr));
|
||||
|
||||
tzset();
|
||||
|
||||
auto app_icon = TRY(GUI::Icon::try_create_default_icon("app-calendar"));
|
||||
auto window = TRY(GUI::Window::try_create());
|
||||
window->set_title("Calendar");
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
#include <RequestServer/HttpProtocol.h>
|
||||
#include <RequestServer/HttpsProtocol.h>
|
||||
#include <signal.h>
|
||||
#include <time.h>
|
||||
|
||||
ErrorOr<int> serenity_main(Main::Arguments)
|
||||
{
|
||||
|
@ -32,6 +33,8 @@ ErrorOr<int> serenity_main(Main::Arguments)
|
|||
TRY(Core::System::unveil("/etc/timezone", "r"));
|
||||
TRY(Core::System::unveil(nullptr, nullptr));
|
||||
|
||||
tzset();
|
||||
|
||||
[[maybe_unused]] auto gemini = make<RequestServer::GeminiProtocol>();
|
||||
[[maybe_unused]] auto http = make<RequestServer::HttpProtocol>();
|
||||
[[maybe_unused]] auto https = make<RequestServer::HttpsProtocol>();
|
||||
|
|
|
@ -30,7 +30,11 @@ private:
|
|||
virtual void paint_event(GUI::PaintEvent&) override;
|
||||
virtual void mousedown_event(GUI::MouseEvent&) override;
|
||||
|
||||
void tick_clock() { update(); }
|
||||
void tick_clock()
|
||||
{
|
||||
tzset();
|
||||
update();
|
||||
}
|
||||
|
||||
void open();
|
||||
void close();
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
#include <LibIPC/SingleServer.h>
|
||||
#include <LibMain/Main.h>
|
||||
#include <WebContent/ClientConnection.h>
|
||||
#include <time.h>
|
||||
|
||||
ErrorOr<int> serenity_main(Main::Arguments)
|
||||
{
|
||||
|
@ -22,6 +23,8 @@ ErrorOr<int> serenity_main(Main::Arguments)
|
|||
TRY(Core::System::unveil("/tmp/portal/websocket", "rw"));
|
||||
TRY(Core::System::unveil(nullptr, nullptr));
|
||||
|
||||
tzset();
|
||||
|
||||
auto client = TRY(IPC::take_over_accepted_client_from_system_server<WebContent::ClientConnection>());
|
||||
return event_loop.exec();
|
||||
}
|
||||
|
|
|
@ -29,6 +29,8 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
|||
args_parser.add_option(print_rfc_5322, "Print date in RFC 5322 format", "rfc-5322", 'R');
|
||||
args_parser.parse(arguments);
|
||||
|
||||
tzset();
|
||||
|
||||
if (set_date != nullptr) {
|
||||
auto number = String(set_date).to_uint();
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
#include <LibCore/DateTime.h>
|
||||
#include <LibCore/System.h>
|
||||
#include <LibMain/Main.h>
|
||||
#include <time.h>
|
||||
#include <unistd.h>
|
||||
|
||||
class DiscordianDate {
|
||||
|
@ -104,6 +105,8 @@ ErrorOr<int> serenity_main(Main::Arguments)
|
|||
{
|
||||
TRY(Core::System::pledge("stdio rpath"));
|
||||
|
||||
tzset();
|
||||
|
||||
auto date = Core::DateTime::now();
|
||||
outln("Today is {}", DiscordianDate(date).to_string());
|
||||
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
#include <LibMain/Main.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
#include <unistd.h>
|
||||
|
||||
class Quote {
|
||||
|
@ -87,6 +88,8 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
|||
TRY(Core::System::unveil("/etc/timezone", "r"));
|
||||
TRY(Core::System::unveil(nullptr, nullptr));
|
||||
|
||||
tzset();
|
||||
|
||||
auto file_contents = file->read_all();
|
||||
auto json = TRY(JsonValue::from_string(file_contents));
|
||||
if (!json.is_array()) {
|
||||
|
|
|
@ -68,6 +68,7 @@
|
|||
#include <fcntl.h>
|
||||
#include <signal.h>
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
#include <unistd.h>
|
||||
|
||||
RefPtr<JS::VM> vm;
|
||||
|
@ -1287,6 +1288,8 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
|||
args_parser.add_positional_argument(script_paths, "Path to script files", "scripts", Core::ArgsParser::Required::No);
|
||||
args_parser.parse(arguments);
|
||||
|
||||
tzset();
|
||||
|
||||
bool syntax_highlight = !disable_syntax_highlight;
|
||||
|
||||
vm = JS::VM::create();
|
||||
|
|
|
@ -25,6 +25,8 @@ ErrorOr<int> serenity_main(Main::Arguments)
|
|||
TRY(Core::System::unveil("/proc", "r"));
|
||||
TRY(Core::System::unveil(nullptr, nullptr));
|
||||
|
||||
tzset();
|
||||
|
||||
auto file = TRY(Core::File::open("/var/run/utmp", Core::OpenMode::ReadOnly));
|
||||
auto json = TRY(JsonValue::from_string(file->read_all()));
|
||||
if (!json.is_object()) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue