]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
busctl-introspect: use _cleanup_
authorDavid Tardon <dtardon@redhat.com>
Wed, 30 Nov 2022 15:02:11 +0000 (16:02 +0100)
committerDavid Tardon <dtardon@redhat.com>
Wed, 14 Dec 2022 08:56:33 +0000 (09:56 +0100)
src/busctl/busctl-introspect.c

index a248205f3f30cceb559dd7a17aecd20821073710..3da4a1390b989a83888aa7f6e77c28085e79bae0 100644 (file)
@@ -676,7 +676,7 @@ static int parse_xml_node(Context *context, const char *prefix, unsigned n_depth
 }
 
 int parse_xml_introspect(const char *prefix, const char *xml, const XMLIntrospectOps *ops, void *userdata) {
-        Context context = {
+        _cleanup_(context_reset_interface) Context context = {
                 .ops = ops,
                 .userdata = userdata,
                 .current = xml,
@@ -692,36 +692,24 @@ int parse_xml_introspect(const char *prefix, const char *xml, const XMLIntrospec
                 _cleanup_free_ char *name = NULL;
 
                 r = xml_tokenize(&context.current, &name, &context.xml_state, NULL);
-                if (r < 0) {
-                        log_error("XML parse error");
-                        goto finish;
-                }
+                if (r < 0)
+                        return log_error_errno(r, "XML parse error");
 
-                if (r == XML_END) {
-                        r = 0;
+                if (r == XML_END)
                         break;
-                }
 
                 if (r == XML_TAG_OPEN) {
 
                         if (streq(name, "node")) {
                                 r = parse_xml_node(&context, prefix, 0);
                                 if (r < 0)
-                                        goto finish;
-                        } else {
-                                log_error("Unexpected tag '%s' in introspection data.", name);
-                                r = -EBADMSG;
-                                goto finish;
-                        }
-                } else if (r != XML_TEXT || !in_charset(name, WHITESPACE)) {
-                        log_error("Unexpected token.");
-                        r = -EBADMSG;
-                        goto finish;
-                }
+                                        return r;
+                        } else
+                                return log_error_errno(SYNTHETIC_ERRNO(EBADMSG),
+                                                       "Unexpected tag '%s' in introspection data.", name);
+                } else if (r != XML_TEXT || !in_charset(name, WHITESPACE))
+                        return log_error_errno(SYNTHETIC_ERRNO(EBADMSG), "Unexpected token.");
         }
 
-finish:
-        context_reset_interface(&context);
-
-        return r;
+        return 0;
 }