]> git.ipfire.org Git - thirdparty/git.git/commitdiff
config: restructure format_config() for better control flow
authorSZEDER Gábor <szeder@ira.uka.de>
Thu, 20 Aug 2015 14:14:22 +0000 (16:14 +0200)
committerJunio C Hamano <gitster@pobox.com>
Thu, 20 Aug 2015 20:15:17 +0000 (13:15 -0700)
Commit 578625fa91 (config: add '--name-only' option to list only
variable names, 2015-08-10) modified format_config() such that it
returned from the middle of the function when showing only keys,
resulting in ugly code structure.

Reorganize the if statements and dealing with the key-value delimiter to
make the function easier to read.

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/config.c

index 631db458ec12b87d115bcbcf26caadf9137962f4..810e104224d11236ed5aa6a2bf7345df69347807 100644 (file)
@@ -108,52 +108,48 @@ struct strbuf_list {
 
 static int format_config(struct strbuf *buf, const char *key_, const char *value_)
 {
-       int must_free_vptr = 0;
-       int must_print_delim = 0;
-       char value[256];
-       const char *vptr = value;
-
        strbuf_init(buf, 0);
 
-       if (show_keys) {
+       if (show_keys)
                strbuf_addstr(buf, key_);
-               must_print_delim = 1;
-       }
-       if (omit_values) {
-               strbuf_addch(buf, term);
-               return 0;
-       }
-       if (types == TYPE_INT)
-               sprintf(value, "%"PRId64,
-                       git_config_int64(key_, value_ ? value_ : ""));
-       else if (types == TYPE_BOOL)
-               vptr = git_config_bool(key_, value_) ? "true" : "false";
-       else if (types == TYPE_BOOL_OR_INT) {
-               int is_bool, v;
-               v = git_config_bool_or_int(key_, value_, &is_bool);
-               if (is_bool)
-                       vptr = v ? "true" : "false";
-               else
-                       sprintf(value, "%d", v);
-       } else if (types == TYPE_PATH) {
-               if (git_config_pathname(&vptr, key_, value_) < 0)
-                       return -1;
-               must_free_vptr = 1;
-       } else if (value_) {
-               vptr = value_;
-       } else {
-               /* Just show the key name */
-               vptr = "";
-               must_print_delim = 0;
-       }
+       if (!omit_values) {
+               int must_free_vptr = 0;
+               int must_add_delim = show_keys;
+               char value[256];
+               const char *vptr = value;
+
+               if (types == TYPE_INT)
+                       sprintf(value, "%"PRId64,
+                               git_config_int64(key_, value_ ? value_ : ""));
+               else if (types == TYPE_BOOL)
+                       vptr = git_config_bool(key_, value_) ? "true" : "false";
+               else if (types == TYPE_BOOL_OR_INT) {
+                       int is_bool, v;
+                       v = git_config_bool_or_int(key_, value_, &is_bool);
+                       if (is_bool)
+                               vptr = v ? "true" : "false";
+                       else
+                               sprintf(value, "%d", v);
+               } else if (types == TYPE_PATH) {
+                       if (git_config_pathname(&vptr, key_, value_) < 0)
+                               return -1;
+                       must_free_vptr = 1;
+               } else if (value_) {
+                       vptr = value_;
+               } else {
+                       /* Just show the key name */
+                       vptr = "";
+                       must_add_delim = 0;
+               }
 
-       if (must_print_delim)
-               strbuf_addch(buf, key_delim);
-       strbuf_addstr(buf, vptr);
-       strbuf_addch(buf, term);
+               if (must_add_delim)
+                       strbuf_addch(buf, key_delim);
+               strbuf_addstr(buf, vptr);
 
-       if (must_free_vptr)
-               free((char *)vptr);
+               if (must_free_vptr)
+                       free((char *)vptr);
+       }
+       strbuf_addch(buf, term);
        return 0;
 }