From: Arvin Schnell Date: Wed, 6 Jun 2012 08:02:53 +0000 (+0200) Subject: - work on dbus interface X-Git-Tag: v0.1.3~221 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=bf236439dce633cd63459276684891134e256945;p=thirdparty%2Fsnapper.git - work on dbus interface --- diff --git a/client/snapper.cc b/client/snapper.cc index 4191c6db..e3a95be2 100644 --- a/client/snapper.cc +++ b/client/snapper.cc @@ -1220,7 +1220,9 @@ main(int argc, char** argv) } catch (const DBus::ErrorException& e) { - if (strcmp(e.name(), "error.no_permissions") == 0) + if (strcmp(e.name(), "error.unknown_config") == 0) + cerr << _("Unknown config.") << endl; + else if (strcmp(e.name(), "error.no_permissions") == 0) cerr << _("No permissions.") << endl; else if (strcmp(e.name(), "error.invalid_userdata") == 0) cerr << _("Invalid userdata.") << endl; diff --git a/server/snapperd.cc b/server/snapperd.cc index 52f6665c..0a0cb130 100644 --- a/server/snapperd.cc +++ b/server/snapperd.cc @@ -205,6 +205,13 @@ reply_to_introspect(DBus::Connection& conn, DBus::Message& msg) } +struct UnknownConfig : public std::exception +{ + explicit UnknownConfig() throw() {} + virtual const char* what() const throw() { return "unknown config"; } +}; + + struct Permissions : public std::exception { explicit Permissions() throw() {} @@ -241,11 +248,11 @@ check_permission(DBus::Connection& conn, DBus::Message& msg, const string& confi if (find(it->users.begin(), it->users.end(), username) != it->users.end()) return; - break; + throw Permissions(); } } - throw Permissions(); + throw UnknownConfig(); } @@ -1048,6 +1055,11 @@ dispatch(DBus::Connection& conn, DBus::Message& msg) DBus::MessageError reply(msg, "error.marshalling", DBUS_ERROR_FAILED); conn.send(reply); } + catch (const UnknownConfig& e) + { + DBus::MessageError reply(msg, "error.unknown_config", DBUS_ERROR_FAILED); + conn.send(reply); + } catch (const Permissions& e) { DBus::MessageError reply(msg, "error.no_permissions", DBUS_ERROR_FAILED);