ccanlint: fix idempotent handler
authorRusty Russell <rusty@rustcorp.com.au>
Mon, 15 Nov 2010 02:23:00 +0000 (12:53 +1030)
committerRusty Russell <rusty@rustcorp.com.au>
Mon, 15 Nov 2010 02:23:00 +0000 (12:53 +1030)
Test for inserting idempotent header was wrong way around, and we check
all headers at once, rather than finishing after one.

Also, turn - into _ rather than removing.

tools/ccanlint/tests/idempotent.c

index bf21b22621339022c17f52448cd213bd5631c4b2..e39cc2ac2e7ba696f16077c8b2d0724ce1f3e9fd 100644 (file)
@@ -24,13 +24,14 @@ static const char explain[]
 
 static void fix_name(char *name)
 {
-       unsigned int i, j;
+       unsigned int i;
 
-       for (i = j = 0; name[i]; i++) {
-               if (isalnum(name[i]) || name[i] == '_')
-                       name[j++] = toupper(name[i]);
+       for (i = 0; name[i]; i++) {
+               if (isalnum(name[i]))
+                       name[i] = toupper(name[i]);
+               else
+                       name[i] = '_';
        }
-       name[j] = '\0';
 }
 
 static void handle_idem(struct manifest *m, struct score *score)
@@ -44,10 +45,10 @@ static void handle_idem(struct manifest *m, struct score *score)
 
                /* Main header gets CCAN_FOO_H, others CCAN_FOO_XXX_H */
                if (strstarts(e->file->name, m->basename)
-                   || strlen(e->file->name) != strlen(m->basename) + 2)
+                   || strlen(e->file->name) == strlen(m->basename) + 2)
                        name = talloc_asprintf(score, "CCAN_%s_H", m->basename);
                else
-                       name = talloc_asprintf(score, "CCAN_%s_%s_H",
+                       name = talloc_asprintf(score, "CCAN_%s_%s",
                                               m->basename, e->file->name);
                fix_name(name);
 
@@ -183,13 +184,13 @@ static void check_idempotent(struct manifest *m,
        struct ccan_file *f;
 
        list_for_each(&m->h_files, f, list) {
-               if (!check_idem(f, score)) {
+               if (!check_idem(f, score))
                        score->error = "Headers are not idempotent";
-                       return;
-               }
        }
-       score->pass = true;
-       score->score = score->total;
+       if (!score->error) {
+               score->pass = true;
+               score->score = score->total;
+       }
 }
 
 struct ccanlint idempotent = {