chiark / gitweb /
condition: fix reversed tests if path does not exist at all
authorMichal Schmidt <mschmidt@redhat.com>
Fri, 23 Sep 2011 00:10:00 +0000 (02:10 +0200)
committerMichal Schmidt <mschmidt@redhat.com>
Fri, 23 Sep 2011 00:10:00 +0000 (02:10 +0200)
CONDITION_PATH_IS_DIRECTORY, CONDITION_PATH_IS_SYMBOLIC_LINK and
CONDITION_FILE_IS_EXECUTABLE gave reversed results when the path
did not exist at all.

src/condition.c

index f84c81bd811cd48d2b8abbbf5424bd697a6f7db2..1438ea85a0c52ed25e82969e16fbd3470e7a1aa0 100644 (file)
@@ -163,7 +163,7 @@ bool condition_test(Condition *c) {
                 struct stat st;
 
                 if (stat(c->parameter, &st) < 0)
                 struct stat st;
 
                 if (stat(c->parameter, &st) < 0)
-                        return !c->negate;
+                        return c->negate;
                 return S_ISDIR(st.st_mode) == !c->negate;
         }
 
                 return S_ISDIR(st.st_mode) == !c->negate;
         }
 
@@ -171,7 +171,7 @@ bool condition_test(Condition *c) {
                 struct stat st;
 
                 if (lstat(c->parameter, &st) < 0)
                 struct stat st;
 
                 if (lstat(c->parameter, &st) < 0)
-                        return !c->negate;
+                        return c->negate;
                 return S_ISLNK(st.st_mode) == !c->negate;
         }
 
                 return S_ISLNK(st.st_mode) == !c->negate;
         }
 
@@ -189,7 +189,7 @@ bool condition_test(Condition *c) {
                 struct stat st;
 
                 if (stat(c->parameter, &st) < 0)
                 struct stat st;
 
                 if (stat(c->parameter, &st) < 0)
-                        return !c->negate;
+                        return c->negate;
 
                 return (S_ISREG(st.st_mode) && (st.st_mode & 0111)) == !c->negate;
         }
 
                 return (S_ISREG(st.st_mode) && (st.st_mode & 0111)) == !c->negate;
         }