From 263d91efb54624e871cf612e2a0562dc9a2d6a47 Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Sun, 2 Jun 2024 14:57:09 +0200 Subject: Handle ListTimezones errors --- src/slack-timedate.cpp | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) (limited to 'src/slack-timedate.cpp') diff --git a/src/slack-timedate.cpp b/src/slack-timedate.cpp index e800236..5752f79 100644 --- a/src/slack-timedate.cpp +++ b/src/slack-timedate.cpp @@ -85,11 +85,18 @@ static void slack_method_call (GDBusConnection *connection, const gchar *sender, } else if (g_strcmp0(method_name, "ListTimezones") == 0) { - auto return_tuple = Glib::Variant>::create_tuple({ - dlackware::timedate::list_timezones() - }); - - g_dbus_method_invocation_return_value(invocation, return_tuple.gobj()); + try + { + auto return_tuple = Glib::Variant>::create_tuple({ + dlackware::timedate::list_timezones() + }); + g_dbus_method_invocation_return_value(invocation, return_tuple.gobj()); + } + catch (const std::exception& exception) + { + g_dbus_method_invocation_return_error(invocation, G_IO_ERROR, G_IO_ERROR_FAILED, + "List time zones: %s", exception.what()); + } } } @@ -170,8 +177,8 @@ namespace dlackware::timedate { void list_timezones(const std::string& prefix, std::vector& accumulator) { - Glib::FileTest is_directory = Glib::FILE_TEST_IS_DIR; - Glib::FileTest is_regular = Glib::FILE_TEST_IS_REGULAR; + constexpr Glib::FileTest is_directory = Glib::FILE_TEST_IS_DIR; + constexpr Glib::FileTest is_regular = Glib::FILE_TEST_IS_REGULAR; auto zoneinfo_path = std::filesystem::path(zoneinfo_database) / prefix; auto zoneinfo_directory = Glib::Dir(zoneinfo_path); -- cgit v1.2.3