diff options
| author | Eugen Wissner <belka@caraus.de> | 2024-06-02 14:57:09 +0200 |
|---|---|---|
| committer | Eugen Wissner <belka@caraus.de> | 2024-06-02 14:57:09 +0200 |
| commit | 263d91efb54624e871cf612e2a0562dc9a2d6a47 (patch) | |
| tree | fd56bbfa3828aed5b7a1f00f6d1b86f9a0fbd252 /src | |
| parent | c6036e4d2df4e1498dcf84a73582454ed00cd3ad (diff) | |
| download | slack-timedate-263d91efb54624e871cf612e2a0562dc9a2d6a47.tar.gz | |
Handle ListTimezones errors
Diffstat (limited to 'src')
| -rw-r--r-- | src/slack-timedate.cpp | 21 | ||||
| -rw-r--r-- | src/slack-timedate.h | 1 |
2 files changed, 15 insertions, 7 deletions
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<std::vector<Glib::ustring>>::create_tuple({ - dlackware::timedate::list_timezones() - }); - - g_dbus_method_invocation_return_value(invocation, return_tuple.gobj()); + try + { + auto return_tuple = Glib::Variant<std::vector<Glib::ustring>>::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<Glib::ustring>& 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); diff --git a/src/slack-timedate.h b/src/slack-timedate.h index 61ee8d5..f833387 100644 --- a/src/slack-timedate.h +++ b/src/slack-timedate.h @@ -63,6 +63,7 @@ namespace dlackware::timedate { constexpr const char *zoneinfo_database = "/usr/share/zoneinfo"; + void list_timezones(const std::string& prefix, std::vector<Glib::ustring>& accumulator); Glib::Variant<std::vector<Glib::ustring>> list_timezones(); } |
