const char *e;
e = object_path_startswith(node, prefix);
- if (e)
+ if (e && e[0])
fprintf(i->f, " <node name=\"%s\"/>\n", e);
free(node);
fprintf(i->f, " <arg type=\"%.*s\"", (int) l, signature);
if (direction)
- fprintf(i->f, " direction=\"%s\">\n", direction);
+ fprintf(i->f, " direction=\"%s\"/>\n", direction);
else
- fputs(">\n", i->f);
+ fputs("/>\n", i->f);
signature += l;
}
}
-int introspect_write_interface(struct introspect *i, const char *interface, const sd_bus_vtable *v) {
+int introspect_write_interface(struct introspect *i, const sd_bus_vtable *v) {
assert(i);
- assert(interface);
assert(v);
- fprintf(i->f, " <interface name=\"%s\">\n", interface);
-
for (; v->type != _SD_BUS_VTABLE_END; v++) {
switch (v->type) {
case _SD_BUS_VTABLE_METHOD:
fprintf(i->f, " <method name=\"%s\">\n", v->x.method.member);
- introspect_write_arguments(i, v->x.method.signature, "in");
- introspect_write_arguments(i, v->x.method.result, "out");
+ introspect_write_arguments(i, strempty(v->x.method.signature), "in");
+ introspect_write_arguments(i, strempty(v->x.method.result), "out");
introspect_write_flags(i, v->type, v->flags);
fputs(" </method>\n", i->f);
break;
case _SD_BUS_VTABLE_SIGNAL:
fprintf(i->f, " <signal name=\"%s\">\n", v->x.signal.member);
- introspect_write_arguments(i, v->x.signal.signature, NULL);
+ introspect_write_arguments(i, strempty(v->x.signal.signature), NULL);
introspect_write_flags(i, v->type, v->flags);
fputs(" </signal>\n", i->f);
break;
}
- fputs(" </interface>\n", i->f);
return 0;
}
if (ferror(i->f))
return -ENOMEM;
- r = sd_bus_message_new_method_return(bus, m, &q);
+ r = sd_bus_message_new_method_return(m, &q);
if (r < 0)
return r;