]> xenbits.xensource.com Git - libvirt.git/commitdiff
vsh: Rework vshReadlineCommandGenerator()
authorMichal Privoznik <mprivozn@redhat.com>
Tue, 26 Jan 2021 16:22:00 +0000 (17:22 +0100)
committerMichal Privoznik <mprivozn@redhat.com>
Wed, 10 Feb 2021 10:51:59 +0000 (11:51 +0100)
Firstly, move variable declarations into the inner most block
they are used. Secondly, use for() loop instead of while so that
we don't have to advance loop counter explicitly on 'continue'.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Jonathon Jongsma <jjongsma@redhat.com>
tools/vsh.c

index a7ac0695cba17e332893d69693ac665349b65477..70f780087db88569fabd1accd02a07840ce34d1d 100644 (file)
@@ -2566,37 +2566,30 @@ vshTreePrint(vshControl *ctl, vshTreeLookup lookup, void *opaque,
 static char **
 vshReadlineCommandGenerator(const char *text G_GNUC_UNUSED)
 {
-    size_t grp_list_index = 0, cmd_list_index = 0;
-    const char *name;
+    size_t grp_list_index = 0;
     const vshCmdGrp *grp;
-    const vshCmdDef *cmds;
     size_t ret_size = 0;
     g_auto(GStrv) ret = NULL;
 
     grp = cmdGroups;
 
-    /* Return the next name which partially matches from the
-     * command list.
-     */
-    while (grp[grp_list_index].name) {
-        cmds = grp[grp_list_index].commands;
+    for (grp_list_index = 0; grp[grp_list_index].name; grp_list_index++) {
+        const vshCmdDef *cmds = grp[grp_list_index].commands;
+        size_t cmd_list_index;
 
-        if (cmds[cmd_list_index].name) {
-            while ((name = cmds[cmd_list_index].name)) {
-                if (cmds[cmd_list_index++].flags & VSH_CMD_FLAG_ALIAS)
-                    continue;
+        for (cmd_list_index = 0; cmds[cmd_list_index].name; cmd_list_index++) {
+            const char *name = cmds[cmd_list_index].name;
+
+            if (cmds[cmd_list_index].flags & VSH_CMD_FLAG_ALIAS)
+                continue;
 
-                if (VIR_REALLOC_N(ret, ret_size + 2) < 0)
-                    return NULL;
+            if (VIR_REALLOC_N(ret, ret_size + 2) < 0)
+                return NULL;
 
-                ret[ret_size] = g_strdup(name);
-                ret_size++;
-                /* Terminate the string list properly. */
-                ret[ret_size] = NULL;
-            }
-        } else {
-            cmd_list_index = 0;
-            grp_list_index++;
+            ret[ret_size] = g_strdup(name);
+            ret_size++;
+            /* Terminate the string list properly. */
+            ret[ret_size] = NULL;
         }
     }