repo-config: deconvolute logics
authorJohannes Schindelin <Johannes.Schindelin@gmx.de>
Wed, 3 May 2006 12:41:03 +0000 (14:41 +0200)
committerJunio C Hamano <junkio@cox.net>
Wed, 3 May 2006 23:26:29 +0000 (16:26 -0700)
It was rightly noticed that the logic is quite convoluted. Fix that.

Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
repo-config.c

index 7e06d1a..63eda1b 100644 (file)
@@ -27,36 +27,38 @@ static int show_config(const char* key_, const char* value_)
 {
        char value[256];
        const char *vptr = value;
+       int dup_error = 0;
 
        if (value_ == NULL)
                value_ = "";
 
-       if ((use_key_regexp || !strcmp(key_, key)) &&
-                       (!use_key_regexp ||
-                        !regexec(key_regexp, key_, 0, NULL, 0)) &&
-                       (regexp == NULL ||
+       if (!use_key_regexp && strcmp(key_, key))
+               return 0;
+       if (use_key_regexp && regexec(key_regexp, key_, 0, NULL, 0))
+               return 0;
+       if (regexp != NULL &&
                         (do_not_match ^
-                         !regexec(regexp, value_, 0, NULL, 0)))) {
-               int dup_error = 0;
-               if (show_keys)
-                       printf("%s ", key_);
-               if (seen && !do_all)
-                       dup_error = 1;
-               if (type == T_INT)
-                       sprintf(value, "%d", git_config_int(key_, value_));
-               else if (type == T_BOOL)
-                       sprintf(value, "%s", git_config_bool(key_, value_)
-                                            ? "true" : "false");
-               else
-                       vptr = value_;
-               seen++;
-               if (dup_error) {
-                       error("More than one value for the key %s: %s",
-                             key_, vptr);
-               }
-               else
-                       printf("%s\n", vptr);
+                         regexec(regexp, value_, 0, NULL, 0)))
+               return 0;
+
+       if (show_keys)
+               printf("%s ", key_);
+       if (seen && !do_all)
+               dup_error = 1;
+       if (type == T_INT)
+               sprintf(value, "%d", git_config_int(key_, value_));
+       else if (type == T_BOOL)
+               vptr = git_config_bool(key_, value_) ? "true" : "false";
+       else
+               vptr = value_;
+       seen++;
+       if (dup_error) {
+               error("More than one value for the key %s: %s",
+                               key_, vptr);
        }
+       else
+               printf("%s\n", vptr);
+
        return 0;
 }