busctl: improve error messages on duplicate members/interfaces

Prompted by: #15833
This commit is contained in:
Lennart Poettering 2020-05-19 09:04:03 +02:00
parent 9600c27c41
commit f17153a721
1 changed files with 16 additions and 8 deletions

View File

@ -870,8 +870,10 @@ static int on_interface(const char *interface, uint64_t flags, void *userdata) {
return log_oom();
r = set_put(members, m);
if (r <= 0)
return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Duplicate interface");
if (r == -EEXIST)
return log_error_errno(r, "Invalid introspection data: duplicate interface '%s'.", interface);
if (r < 0)
return log_oom();
m = NULL;
return 0;
@ -911,8 +913,10 @@ static int on_method(const char *interface, const char *name, const char *signat
return log_oom();
r = set_put(members, m);
if (r <= 0)
return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Duplicate method");
if (r == -EEXIST)
return log_error_errno(r, "Invalid introspection data: duplicate method '%s' on interface '%s'.", name, interface);
if (r < 0)
return log_oom();
m = NULL;
return 0;
@ -948,8 +952,10 @@ static int on_signal(const char *interface, const char *name, const char *signat
return log_oom();
r = set_put(members, m);
if (r <= 0)
return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Duplicate signal");
if (r == -EEXIST)
return log_error_errno(r, "Invalid introspection data: duplicate signal '%s' on interface '%s'.", name, interface);
if (r < 0)
return log_oom();
m = NULL;
return 0;
@ -986,8 +992,10 @@ static int on_property(const char *interface, const char *name, const char *sign
return log_oom();
r = set_put(members, m);
if (r <= 0)
return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Duplicate property");
if (r == -EEXIST)
return log_error_errno(r, "Invalid introspection data: duplicate property '%s' on interface '%s'.", name, interface);
if (r < 0)
return log_oom();
m = NULL;
return 0;