pespin has submitted this change and it was merged. ( 
https://gerrit.osmocom.org/c/libosmocore/+/14428 )

Change subject: vty: command.c: Get rid of huge indentation block
......................................................................

vty: command.c: Get rid of huge indentation block

Huge conditional block inside for loop is negated in this patch
together with a "continue" keyword, similar to what was already done
recently in 4742526645d6137dd90ef369f0415afdb91736dc.

Change-Id: I803c4ed38e9ab09bf929528c75a60e6f65da3928
---
M src/vty/command.c
1 file changed, 101 insertions(+), 98 deletions(-)

Approvals:
  fixeria: Looks good to me, approved
  osmith: Looks good to me, but someone else must approve
  Jenkins Builder: Verified



diff --git a/src/vty/command.c b/src/vty/command.c
index 104053f..4189c7c 100644
--- a/src/vty/command.c
+++ b/src/vty/command.c
@@ -1510,109 +1510,112 @@
         * or ambiguities to cause a noticeable memory footprint from keeping 
all allocations. */
        void *cmd_deopt_ctx = NULL;

-       for (i = 0; i < vector_active(v); i++)
-               if ((cmd_element = vector_slot(v, i)) != NULL) {
-                       int match = 0;
+       for (i = 0; i < vector_active(v); i++) {
+               cmd_element = vector_slot(v, i);
+               if (!cmd_element)
+                       continue;

-                       descvec = vector_slot(cmd_element->strvec, index);
+               int match = 0;

-                       for (j = 0; j < vector_active(descvec); j++) {
-                               desc = vector_slot(descvec, j);
-                               if (!desc)
+               descvec = vector_slot(cmd_element->strvec, index);
+
+               for (j = 0; j < vector_active(descvec); j++) {
+                       desc = vector_slot(descvec, j);
+                       if (!desc)
+                               continue;
+
+                       enum match_type mtype;
+                       const char *str = desc->cmd;
+
+                       if (CMD_OPTION(str)) {
+                               if (!cmd_deopt_ctx)
+                                       cmd_deopt_ctx =
+                                               
talloc_named_const(tall_vty_cmd_ctx, 0,
+                                                                  __func__);
+                               str = cmd_deopt(cmd_deopt_ctx, str);
+                               if (str == NULL)
                                        continue;
-
-                               enum match_type mtype;
-                               const char *str = desc->cmd;
-
-                               if (CMD_OPTION(str)) {
-                                       if (!cmd_deopt_ctx)
-                                               cmd_deopt_ctx =
-                                                       
talloc_named_const(tall_vty_cmd_ctx, 0,
-                                                                          
__func__);
-                                       str = cmd_deopt(cmd_deopt_ctx, str);
-                                       if (str == NULL)
-                                               continue;
-                               }
-
-                               switch (type) {
-                               case EXACT_MATCH:
-                                       if (!(CMD_VARIABLE (str))
-                                          && strcmp(command, str) == 0)
-                                               match++;
-                                       break;
-                               case PARTLY_MATCH:
-                                       if (!(CMD_VARIABLE (str))
-                                          && strncmp(command, str, strlen 
(command)) == 0)
-                                       {
-                                               if (matched
-                                                   && strcmp(matched,
-                                                             str) != 0) {
-                                                       ret = 1; /* There is 
ambiguous match. */
-                                                       goto free_and_return;
-                                               } else
-                                                       matched = str;
-                                               match++;
-                                       }
-                                       break;
-                               case RANGE_MATCH:
-                                       if (cmd_range_match
-                                           (str, command)) {
-                                               if (matched
-                                                   && strcmp(matched,
-                                                             str) != 0) {
-                                                       ret = 1;
-                                                       goto free_and_return;
-                                               } else
-                                                       matched = str;
-                                               match++;
-                                       }
-                                       break;
-#ifdef HAVE_IPV6
-                               case IPV6_MATCH:
-                                       if (CMD_IPV6(str))
-                                               match++;
-                                       break;
-                               case IPV6_PREFIX_MATCH:
-                                       if ((mtype =
-                                            cmd_ipv6_prefix_match
-                                            (command)) != NO_MATCH) {
-                                               if (mtype == PARTLY_MATCH) {
-                                                       ret = 2;        /* 
There is incomplete match. */
-                                                       goto free_and_return;
-                                               }
-
-                                               match++;
-                                       }
-                                       break;
-#endif                         /* HAVE_IPV6 */
-                               case IPV4_MATCH:
-                                       if (CMD_IPV4(str))
-                                               match++;
-                                       break;
-                               case IPV4_PREFIX_MATCH:
-                                       if ((mtype =
-                                            cmd_ipv4_prefix_match
-                                            (command)) != NO_MATCH) {
-                                               if (mtype == PARTLY_MATCH) {
-                                                       ret = 2;        /* 
There is incomplete match. */
-                                                       goto free_and_return;
-                                               }
-
-                                               match++;
-                                       }
-                                       break;
-                               case EXTEND_MATCH:
-                                       if (CMD_VARIABLE (str))
-                                               match++;
-                                       break;
-                               case NO_MATCH:
-                               default:
-                                       break;
-                               }
                        }
-                       if (!match)
-                               vector_slot(v, i) = NULL;
+
+                       switch (type) {
+                       case EXACT_MATCH:
+                               if (!(CMD_VARIABLE (str))
+                                  && strcmp(command, str) == 0)
+                                       match++;
+                               break;
+                       case PARTLY_MATCH:
+                               if (!(CMD_VARIABLE (str))
+                                  && strncmp(command, str, strlen (command)) 
== 0)
+                               {
+                                       if (matched
+                                           && strcmp(matched,
+                                                     str) != 0) {
+                                               ret = 1; /* There is ambiguous 
match. */
+                                               goto free_and_return;
+                                       } else
+                                               matched = str;
+                                       match++;
+                               }
+                               break;
+                       case RANGE_MATCH:
+                               if (cmd_range_match
+                                   (str, command)) {
+                                       if (matched
+                                           && strcmp(matched,
+                                                     str) != 0) {
+                                               ret = 1;
+                                               goto free_and_return;
+                                       } else
+                                               matched = str;
+                                       match++;
+                               }
+                               break;
+#ifdef HAVE_IPV6
+                       case IPV6_MATCH:
+                               if (CMD_IPV6(str))
+                                       match++;
+                               break;
+                       case IPV6_PREFIX_MATCH:
+                               if ((mtype =
+                                    cmd_ipv6_prefix_match
+                                    (command)) != NO_MATCH) {
+                                       if (mtype == PARTLY_MATCH) {
+                                               ret = 2;        /* There is 
incomplete match. */
+                                               goto free_and_return;
+                                       }
+
+                                       match++;
+                               }
+                               break;
+#endif                         /* HAVE_IPV6 */
+                       case IPV4_MATCH:
+                               if (CMD_IPV4(str))
+                                       match++;
+                               break;
+                       case IPV4_PREFIX_MATCH:
+                               if ((mtype =
+                                    cmd_ipv4_prefix_match
+                                    (command)) != NO_MATCH) {
+                                       if (mtype == PARTLY_MATCH) {
+                                               ret = 2;        /* There is 
incomplete match. */
+                                               goto free_and_return;
+                                       }
+
+                                       match++;
+                               }
+                               break;
+                       case EXTEND_MATCH:
+                               if (CMD_VARIABLE (str))
+                                       match++;
+                               break;
+                       case NO_MATCH:
+                       default:
+                               break;
+                       }
                }
+               if (!match)
+                       vector_slot(v, i) = NULL;
+       }

 free_and_return:
        if (cmd_deopt_ctx)

--
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/14428
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Change-Id: I803c4ed38e9ab09bf929528c75a60e6f65da3928
Gerrit-Change-Number: 14428
Gerrit-PatchSet: 2
Gerrit-Owner: pespin <[email protected]>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <[email protected]>
Gerrit-Reviewer: osmith <[email protected]>
Gerrit-Reviewer: pespin <[email protected]>
Gerrit-MessageType: merged

Reply via email to