[Libguestfs] [libnbd PATCH v2 1/2] generator/C: print_wrapper: use helper variable for permitted state check

Laszlo Ersek lersek at redhat.com
Tue May 2 17:04:25 UTC 2023


Use a local boolean flag for unnesting the *_in_permitted_state() function
call.

The one place where this change currently matters is [lib/api.c]:

> @@ -4787,29 +4925,31 @@ aio_connect_systemd_socket_activation_in
>    return true;
>  }
>
>  int
>  nbd_aio_connect_systemd_socket_activation (struct nbd_handle *h,
>                                             char **argv)
>  {
> +  bool p;
>    int ret;
>
>    nbd_internal_set_error_context ("nbd_aio_connect_systemd_socket_activation");
>
>    pthread_mutex_lock (&h->lock);
>    if_debug (h) {
>      char *argv_printable =
>          nbd_internal_printable_string_list (argv);
>      debug (h,
>             "enter: argv=%s",
>             argv_printable ? argv_printable : "");
>      free (argv_printable);
>    }
>
> -  if (unlikely (!aio_connect_systemd_socket_activation_in_permitted_state (h))) {
> +  p = aio_connect_systemd_socket_activation_in_permitted_state (h);
> +  if (unlikely (!p)) {
>      ret = -1;
>      goto out;
>    }
>    if (argv == NULL) {
>      set_error (EFAULT, "%s cannot be NULL", "argv");
>      ret = -1;
>      goto out;

Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2172516
Signed-off-by: Laszlo Ersek <lersek at redhat.com>
---

Notes:
    v2:
    
    - declare "p" near the top of the function [Eric]

 generator/C.ml | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/generator/C.ml b/generator/C.ml
index cf44424517de..e68fd70382cf 100644
--- a/generator/C.ml
+++ b/generator/C.ml
@@ -569,6 +569,8 @@ let
     print_arg_list ~wrap:true ~handle:true args optargs;
     pr "\n";
     pr "{\n";
+    if permitted_states <> [] then
+      pr "  bool p;\n";
     pr "  %s ret;\n" ret_c_type;
     pr "\n";
     if may_set_error then (
@@ -599,7 +601,8 @@ let
       let value = match errcode with
         | Some value -> value
         | None -> assert false in
-      pr "  if (unlikely (!%s_in_permitted_state (h))) {\n" name;
+      pr "  p = %s_in_permitted_state (h);\n" name;
+      pr "  if (unlikely (!p)) {\n";
       pr "    ret = %s;\n" value;
       pr "    goto out;\n";
       pr "  }\n";



More information about the Libguestfs mailing list