]> granicus.if.org Git - graphviz/commitdiff
simplify twoDots
authorMatthew Fernandez <matthew.fernandez@gmail.com>
Sat, 10 Jul 2021 15:59:25 +0000 (08:59 -0700)
committerMatthew Fernandez <matthew.fernandez@gmail.com>
Sat, 17 Jul 2021 17:46:24 +0000 (10:46 -0700)
The compiler can likely see this equivalence already. But this change makes the
code clearer to both it and to human readers.

lib/cgraph/scan.l

index 8968e4c571a0b6d3ecdaf2ed8f8156e9777fd8ae..2c9259508a5172602c5e1e5af8ba6ce51d878c1e 100644 (file)
@@ -27,7 +27,9 @@
 #include <cghdr.h>
 #include <agxbuf.h>
 #include <ctype.h>
+#include <stdbool.h>
 #include <stddef.h>
+#include <string.h>
 // #define YY_BUF_SIZE 128000
 #define GRAPH_EOF_TOKEN                '@'             /* lex class must be defined below */
        /* this is a workaround for linux flex */
@@ -146,14 +148,10 @@ static void ppDirective (void)
  * Return true if token has more than one '.';
  * we know the last character is a '.'.
  */
-static int twoDots(void)
-{
-    int i;
-    for (i = aagleng-2; i >= 0; i--) {
-       if ((unsigned char)aagtext[i] == '.')
-           return 1;
-    }
-    return 0;
+static bool twoDots(void) {
+  const char *dot = strchr(aagtext, '.');
+  // was there a dot and was it not the last character?
+  return dot != NULL && dot != &aagtext[aagleng - 1];
 }
 
 /* chkNum: