chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Remove support for auto-spawning VTs
[elogind.git]
/
src
/
libelogind
/
sd-bus
/
bus-message.c
diff --git
a/src/libelogind/sd-bus/bus-message.c
b/src/libelogind/sd-bus/bus-message.c
index 85882c1811d24ef7d8cb517e0600ba063158784a..378d1af1a0e82e8d6d673adbb5bb3febcb43f8bb 100644
(file)
--- a/
src/libelogind/sd-bus/bus-message.c
+++ b/
src/libelogind/sd-bus/bus-message.c
@@
-1030,7
+1030,9
@@
_public_ const char *sd_bus_message_get_sender(sd_bus_message *m) {
_public_ const sd_bus_error *sd_bus_message_get_error(sd_bus_message *m) {
assert_return(m, NULL);
_public_ const sd_bus_error *sd_bus_message_get_error(sd_bus_message *m) {
assert_return(m, NULL);
- assert_return(sd_bus_error_is_set(&m->error), NULL);
+
+ if (!sd_bus_error_is_set(&m->error))
+ return NULL;
return &m->error;
}
return &m->error;
}
@@
-2706,7
+2708,7
@@
_public_ int sd_bus_message_append_array_memfd(
int r;
assert_return(m, -EINVAL);
int r;
assert_return(m, -EINVAL);
- assert_return(memfd >= 0, -E
INVAL
);
+ assert_return(memfd >= 0, -E
BADF
);
assert_return(bus_type_is_trivial(type), -EINVAL);
assert_return(size > 0, -EINVAL);
assert_return(!m->sealed, -EPERM);
assert_return(bus_type_is_trivial(type), -EINVAL);
assert_return(size > 0, -EINVAL);
assert_return(!m->sealed, -EPERM);
@@
-2782,7
+2784,7
@@
_public_ int sd_bus_message_append_string_memfd(
int r;
assert_return(m, -EINVAL);
int r;
assert_return(m, -EINVAL);
- assert_return(memfd >= 0, -E
INVAL
);
+ assert_return(memfd >= 0, -E
BADF
);
assert_return(size > 0, -EINVAL);
assert_return(!m->sealed, -EPERM);
assert_return(!m->poisoned, -ESTALE);
assert_return(size > 0, -EINVAL);
assert_return(!m->sealed, -EPERM);
assert_return(!m->poisoned, -ESTALE);
@@
-5642,21
+5644,23
@@
_public_ int sd_bus_message_read_strv(sd_bus_message *m, char ***l) {
return 1;
}
return 1;
}
-int bus_message_get_arg(sd_bus_message *m, unsigned i, const char **str, char ***strv) {
- const char *contents;
+static int bus_message_get_arg_skip(
+ sd_bus_message *m,
+ unsigned i,
+ char *_type,
+ const char **_contents) {
+
unsigned j;
unsigned j;
- char type;
int r;
int r;
- assert(m);
- assert(str);
- assert(strv);
-
r = sd_bus_message_rewind(m, true);
if (r < 0)
return r;
for (j = 0;; j++) {
r = sd_bus_message_rewind(m, true);
if (r < 0)
return r;
for (j = 0;; j++) {
+ const char *contents;
+ char type;
+
r = sd_bus_message_peek_type(m, &type, &contents);
if (r < 0)
return r;
r = sd_bus_message_peek_type(m, &type, &contents);
if (r < 0)
return r;
@@
-5668,31
+5672,56
@@
int bus_message_get_arg(sd_bus_message *m, unsigned i, const char **str, char **
!(type == SD_BUS_TYPE_ARRAY && STR_IN_SET(contents, "s", "o", "g")))
return -ENXIO;
!(type == SD_BUS_TYPE_ARRAY && STR_IN_SET(contents, "s", "o", "g")))
return -ENXIO;
- if (j >= i)
- break;
+ if (j >= i) {
+ if (_contents)
+ *_contents = contents;
+ if (_type)
+ *_type = type;
+ return 0;
+ }
r = sd_bus_message_skip(m, NULL);
if (r < 0)
return r;
}
r = sd_bus_message_skip(m, NULL);
if (r < 0)
return r;
}
- if (type == SD_BUS_TYPE_ARRAY) {
+}
+
+int bus_message_get_arg(sd_bus_message *m, unsigned i, const char **str) {
+ char type;
+ int r;
+
+ assert(m);
+ assert(str);
-
r = sd_bus_message_read_strv(m, strv
);
+
r = bus_message_get_arg_skip(m, i, &type, NULL
);
if (r < 0)
return r;
if (r < 0)
return r;
- *str = NULL;
+ if (!IN_SET(type, SD_BUS_TYPE_STRING, SD_BUS_TYPE_OBJECT_PATH, SD_BUS_TYPE_SIGNATURE))
+ return -ENXIO;
+
+ return sd_bus_message_read_basic(m, type, str);
+}
- } else {
- r = sd_bus_message_read_basic(m, type, str);
+int bus_message_get_arg_strv(sd_bus_message *m, unsigned i, char ***strv) {
+ const char *contents;
+ char type;
+ int r;
+
+ assert(m);
+ assert(strv);
+
+ r = bus_message_get_arg_skip(m, i, &type, &contents);
if (r < 0)
return r;
if (r < 0)
return r;
- *strv = NULL;
- }
+ if (type != SD_BUS_TYPE_ARRAY)
+ return -ENXIO;
+ if (!STR_IN_SET(contents, "s", "o", "g"))
+ return -ENXIO;
- return
0
;
+ return
sd_bus_message_read_strv(m, strv)
;
}
_public_ int sd_bus_message_get_errno(sd_bus_message *m) {
}
_public_ int sd_bus_message_get_errno(sd_bus_message *m) {