]> granicus.if.org Git - graphviz/commitdiff
str_xor: [nfc] rewrite in more modern C99 style
authorMatthew Fernandez <matthew.fernandez@gmail.com>
Thu, 15 Jul 2021 03:58:50 +0000 (20:58 -0700)
committerMatthew Fernandez <matthew.fernandez@gmail.com>
Wed, 21 Jul 2021 14:45:42 +0000 (07:45 -0700)
Upcoming changes will improve the efficiency of this function and decrease its
coupling with other operations. Rather than introduce these new changes in a
differing style, this preparatory commit rewrites the existing functionality in
this style first, without affecting its behavior. Related to #1873, #1998.

lib/expr/exeval.c

index 50af824aad9afd64499b08113b71a88e3a87bd6c..5e2c9b86386db53473ea058a1dbf60cfeee3e523 100644 (file)
@@ -644,19 +644,19 @@ static char *str_and(Expr_t *ex, const char *l, const char *r) {
  * string xor
  */
 
-static char*
-str_xor(Expr_t* ex, char* l, char* r)
-{
-       int     c;
-       char*   s = l;
+static char *str_xor(Expr_t *ex, const char *l, const char *r) {
 
-       while ((c = *s++))
-               if (!strchr(r, c) && !strchr(s, c))
-                       sfputc(ex->tmp, c);
-       while ((c = *r++))
-               if (!strchr(l, c) && !strchr(r, c))
-                       sfputc(ex->tmp, c);
-       return exstash(ex->tmp, ex->ve);
+  for (const char *p = l; *p != '\0'; ++p) {
+    if (strchr(r, *p) == NULL && strchr(p + 1, *p) == NULL) {
+      sfputc(ex->tmp, *p);
+    }
+  }
+  for (const char *p = r; *p != '\0'; ++p) {
+    if (strchr(l, *p) == NULL && strchr(p + 1, *p) == NULL) {
+      sfputc(ex->tmp, *p);
+    }
+  }
+  return exstash(ex->tmp, ex->ve);
 }
 
 /*