X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fshared%2Fdbus-common.h;h=e49c3b5258816dcd05f0da3b26cf354cf3ad9a9e;hb=b5b46d599524341ddd7407e5dff1021af8ff5089;hp=2bfcdfa5d412f6ee0eaef0acaf69fc070e75eafc;hpb=c757a65b6afb462bde082b5362bbb5a074b5bb7b;p=elogind.git diff --git a/src/shared/dbus-common.h b/src/shared/dbus-common.h index 2bfcdfa5d..e49c3b525 100644 --- a/src/shared/dbus-common.h +++ b/src/shared/dbus-common.h @@ -1,7 +1,6 @@ /*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ -#ifndef foodbuscommonhfoo -#define foodbuscommonhfoo +#pragma once /*** This file is part of systemd. @@ -91,6 +90,7 @@ int bus_connect_system_ssh(const char *user, const char *host, DBusConnection ** int bus_connect_system_polkit(DBusConnection **_bus, DBusError *error); const char *bus_error_message(const DBusError *error); +const char *bus_error_message_or_strerror(const DBusError *error, int err); typedef int (*BusPropertyCallback)(DBusMessageIter *iter, const char *property, void *data); typedef int (*BusPropertySetCallback)(DBusMessageIter *iter, const char *property, void *data); @@ -155,7 +155,7 @@ int bus_property_set_uint64(DBusMessageIter *i, const char *property, void *data assert(i); \ assert(property); \ \ - value = name##_to_string(*field); \ + value = strempty(name##_to_string(*field)); \ \ if (!dbus_message_iter_append_basic(i, DBUS_TYPE_STRING, &value)) \ return -ENOMEM; \ @@ -166,15 +166,18 @@ int bus_property_set_uint64(DBusMessageIter *i, const char *property, void *data #define DEFINE_BUS_PROPERTY_SET_ENUM(function,name,type) \ int function(DBusMessageIter *i, const char *property, void *data) { \ const char *value; \ - type *field = data; \ + type f, *field = data; \ \ assert(i); \ assert(property); \ \ dbus_message_iter_get_basic(i, &value); \ \ - *field = name##_from_string(value); \ + f = name##_from_string(value); \ + if (f < 0) \ + return f; \ \ + *field = f; \ return 0; \ } @@ -199,4 +202,14 @@ void bus_async_unregister_and_exit(DBusConnection *bus, const char *name); DBusHandlerResult bus_exit_idle_filter(DBusConnection *bus, DBusMessage *m, void *userdata); -#endif +pid_t bus_get_unix_process_id(DBusConnection *connection, const char *name, DBusError *error); + +bool bus_error_is_no_service(const DBusError *error); +int bus_method_call_with_reply(DBusConnection *bus, + const char *destination, + const char *path, + const char *interface, + const char *method, + DBusMessage **return_reply, + DBusError *return_error, + int first_arg_type, ...);