X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=tools%2Fccanlint%2Ftests%2Flicense_comment.c;h=9548d87cbb17af759c5e173e8ab0966990168b54;hb=6aa2f4e347e5d66a392b879fe901bc582099a552;hp=18a60813fdead9db0a5ef47fc6a4bc55a2fa784c;hpb=dc8042b42500f79f613b1197df6cdf739615a89f;p=ccan diff --git a/tools/ccanlint/tests/license_comment.c b/tools/ccanlint/tests/license_comment.c index 18a60813..9548d87c 100644 --- a/tools/ccanlint/tests/license_comment.c +++ b/tools/ccanlint/tests/license_comment.c @@ -57,10 +57,49 @@ static void check_license_comment(struct manifest *m, } } +static void add_license_comment(struct manifest *m, struct score *score) +{ + struct file_error *e; + const char *license_desc = get_license_oneliner(score, m->license); + char *files = tal_strdup(score, ""), *q; + + list_for_each(&score->per_file_errors, e, list) + tal_append_fmt(&files, " %s\n", e->file->name); + + q = tal_fmt(score, "The following files don't have a comment:\n%s\n" + "Should I prepend '%s'?", files, license_desc); + if (!ask(q)) + return; + + list_for_each(&score->per_file_errors, e, list) { + char *tmpname; + FILE *out; + unsigned int i; + + tmpname = temp_file(score, ".licensed", e->file->name); + out = fopen(tmpname, "w"); + if (!out) + err(1, "Opening %s", tmpname); + if (fprintf(out, "%s\n", license_desc) < 0) + err(1, "Writing %s", tmpname); + + for (i = 0; e->file->lines[i]; i++) + if (fprintf(out, "%s\n", e->file->lines[i]) < 0) + err(1, "Writing %s", tmpname); + + if (fclose(out) != 0) + err(1, "Closing %s", tmpname); + + if (!move_file(tmpname, e->file->fullname)) + err(1, "Moving %s to %s", tmpname, e->file->fullname); + } +} + struct ccanlint license_comment = { .key = "license_comment", .name = "Source and header files refer to LICENSE", .check = check_license_comment, + .handle = add_license_comment, .needs = "license_exists" }; REGISTER_TEST(license_comment);