diff options
Diffstat (limited to 'upstream/mageia-cauldron/man3/sd_bus_call_method.3')
-rw-r--r-- | upstream/mageia-cauldron/man3/sd_bus_call_method.3 | 162 |
1 files changed, 162 insertions, 0 deletions
diff --git a/upstream/mageia-cauldron/man3/sd_bus_call_method.3 b/upstream/mageia-cauldron/man3/sd_bus_call_method.3 new file mode 100644 index 00000000..6690ecbf --- /dev/null +++ b/upstream/mageia-cauldron/man3/sd_bus_call_method.3 @@ -0,0 +1,162 @@ +'\" t +.TH "SD_BUS_CALL_METHOD" "3" "" "systemd 255" "sd_bus_call_method" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +sd_bus_call_method, sd_bus_call_methodv, sd_bus_call_method_async, sd_bus_call_method_asyncv \- Initialize a bus message object and invoke the corresponding D\-Bus method call +.SH "SYNOPSIS" +.sp +.ft B +.nf +#include <systemd/sd\-bus\&.h> +.fi +.ft +.HP \w'typedef\ int\ (*sd_bus_message_handler_t)('u +.BI "typedef int (*sd_bus_message_handler_t)(sd_bus_message\ *" "m" ", void\ *" "userdata" ", sd_bus_error\ *" "ret_error" ");" +.HP \w'int\ sd_bus_call_method('u +.BI "int sd_bus_call_method(sd_bus\ *" "bus" ", const\ char\ *" "destination" ", const\ char\ *" "path" ", const\ char\ *" "interface" ", const\ char\ *" "member" ", sd_bus_error\ *" "ret_error" ", sd_bus_message\ **" "reply" ", const\ char\ *" "types" ", \&.\&.\&.);" +.HP \w'int\ sd_bus_call_methodv('u +.BI "int sd_bus_call_methodv(sd_bus\ *" "bus" ", const\ char\ *" "destination" ", const\ char\ *" "path" ", const\ char\ *" "interface" ", const\ char\ *" "member" ", sd_bus_error\ *" "ret_error" ", sd_bus_message\ **" "reply" ", const\ char\ *" "types" ", va_list\ " "ap" ");" +.HP \w'int\ sd_bus_call_method_async('u +.BI "int sd_bus_call_method_async(sd_bus\ *" "bus" ", sd_bus_slot\ **" "slot" ", const\ char\ *" "destination" ", const\ char\ *" "path" ", const\ char\ *" "interface" ", const\ char\ *" "member" ", sd_bus_message_handler_t\ " "callback" ", void\ *" "userdata" ", const\ char\ *" "types" ", \&.\&.\&.);" +.HP \w'int\ sd_bus_call_method_asyncv('u +.BI "int sd_bus_call_method_asyncv(sd_bus\ *" "bus" ", sd_bus_slot\ **" "slot" ", const\ char\ *" "destination" ", const\ char\ *" "path" ", const\ char\ *" "interface" ", const\ char\ *" "member" ", sd_bus_message_handler_t\ " "callback" ", void\ *" "userdata" ", const\ char\ *" "types" ", va_list\ " "ap" ");" +.SH "DESCRIPTION" +.PP +\fBsd_bus_call_method()\fR +is a convenience function for initializing a bus message object and calling the corresponding D\-Bus method\&. It combines the +\fBsd_bus_message_new_method_call\fR(3), +\fBsd_bus_message_append\fR(3) +and +\fBsd_bus_call\fR(3) +functions into a single function call\&. +.PP +\fBsd_bus_call_method_async()\fR +is a convenience function for initializing a bus message object and calling the corresponding D\-Bus method asynchronously\&. It combines the +\fBsd_bus_message_new_method_call\fR(3), +\fBsd_bus_message_append\fR(3) +and +\fBsd_bus_call_async\fR(3) +functions into a single function call\&. +.SH "RETURN VALUE" +.PP +On success, these functions return a non\-negative integer\&. On failure, they return a negative errno\-style error code\&. +.SS "Errors" +.PP +See the man pages of +\fBsd_bus_message_new_method_call\fR(3), +\fBsd_bus_message_append\fR(3), +\fBsd_bus_call\fR(3) +and +\fBsd_bus_call_async\fR(3) +for a list of possible errors\&. +.SH "NOTES" +.PP +Functions described here are available as a shared library, which can be compiled against and linked to with the +\fBlibsystemd\fR\ \&\fBpkg-config\fR(1) +file\&. +.PP +The code described here uses +\fBgetenv\fR(3), which is declared to be not multi\-thread\-safe\&. This means that the code calling the functions described here must not call +\fBsetenv\fR(3) +from a parallel thread\&. It is recommended to only do calls to +\fBsetenv()\fR +from an early phase of the program when no other threads have been started\&. +.SH "EXAMPLES" +.PP +\fBExample\ \&1.\ \&Make a call to a D\-Bus method that takes a single parameter\fR +.sp +.if n \{\ +.RS 4 +.\} +.nf +/* SPDX\-License\-Identifier: MIT\-0 */ + +/* This is equivalent to: + * busctl call org\&.freedesktop\&.systemd1 /org/freedesktop/systemd1 \e + * org\&.freedesktop\&.systemd1\&.Manager GetUnitByPID $$ + * + * Compile with \*(Aqcc print\-unit\-path\-call\-method\&.c \-lsystemd\*(Aq + */ + +#include <errno\&.h> +#include <stdio\&.h> +#include <sys/types\&.h> +#include <unistd\&.h> + +#include <systemd/sd\-bus\&.h> + +#define _cleanup_(f) __attribute__((cleanup(f))) +#define DESTINATION "org\&.freedesktop\&.systemd1" +#define PATH "/org/freedesktop/systemd1" +#define INTERFACE "org\&.freedesktop\&.systemd1\&.Manager" +#define MEMBER "GetUnitByPID" + +static int log_error(int error, const char *message) { + errno = \-error; + fprintf(stderr, "%s: %m\en", message); + return error; +} + +int main(int argc, char **argv) { + _cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL; + _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; + _cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL; + int r; + + r = sd_bus_open_system(&bus); + if (r < 0) + return log_error(r, "Failed to acquire bus"); + + r = sd_bus_call_method(bus, DESTINATION, PATH, INTERFACE, MEMBER, &error, &reply, "u", (unsigned) getpid()); + if (r < 0) + return log_error(r, MEMBER " call failed"); + + const char *ans; + r = sd_bus_message_read(reply, "o", &ans); + if (r < 0) + return log_error(r, "Failed to read reply"); + + printf("Unit path is \e"%s\e"\&.\en", ans); + + return 0; +} +.fi +.if n \{\ +.RE +.\} +.PP +This defines a minimally useful program that will open a connection to the bus, call a method, wait for the reply, and finally extract and print the answer\&. It does error handling and proper memory management\&. +.SH "HISTORY" +.PP +\fBsd_bus_call_method()\fR, +\fBsd_bus_call_methodv()\fR, +\fBsd_bus_call_method_async()\fR, and +\fBsd_bus_call_method_asyncv()\fR +were added in version 246\&. +.SH "SEE ALSO" +.PP +\fBsystemd\fR(1), +\fBsd-bus\fR(3), +\fBsd_bus_message_new_method_call\fR(3), +\fBsd_bus_message_append\fR(3), +\fBsd_bus_call\fR(3), +\fBsd_bus_set_property\fR(3), +\fBsd_bus_emit_signal\fR(3) |