From: Rusty Russell Date: Mon, 9 May 2016 01:16:53 +0000 (+0930) Subject: ccanlint: fix missing file. X-Git-Url: https://git.ozlabs.org/?p=ccan;a=commitdiff_plain;h=61c38f61b8a40dbd8fe48b7510e00cfcc5379378 ccanlint: fix missing file. Signed-off-by: Rusty Russell --- diff --git a/tools/ccanlint/tests/info_compiles.c b/tools/ccanlint/tests/info_compiles.c new file mode 100644 index 00000000..4ec07a0e --- /dev/null +++ b/tools/ccanlint/tests/info_compiles.c @@ -0,0 +1,70 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static void check_info_compiles(struct manifest *m, + unsigned int *timeleft, struct score *score) +{ + char *info_c_file, *info, *output; + int fd; + + /* We don't really fail if we're in safe mode: our dependencies + * still run. */ + if (safe_mode) { + score->pass = true; + score->score = 0; + return; + } + + /* Copy it to a file with proper .c suffix. */ + info = grab_file(score, m->info_file->fullname); + if (!info) { + score_file_error(score, m->info_file, 0, + "could not be read: %s", strerror(errno)); + return; + } + + info_c_file = temp_file(info, ".c", "_info"); + fd = open(info_c_file, O_WRONLY|O_CREAT|O_EXCL, 0600); + if (fd < 0 || !write_all(fd, info, tal_count(info)-1)) + err(1, "Copying _info file"); + + if (close(fd) != 0) + err(1, "Closing _info file"); + + m->info_file->compiled[COMPILE_NORMAL] = temp_file(m, "", "info"); + if (!compile_and_link(score, info_c_file, find_ccan_dir(m->dir), "", + compiler, cflags, "", + m->info_file->compiled[COMPILE_NORMAL], + &output)) { + score_file_error(score, m->info_file, 0, + "Errors compiling _info:\n%s", output); + return; + } + + score->pass = true; + score->score = 1; +} + +struct ccanlint info_compiles = { + .key = "info_compiles", + .name = "_info compiles", + .check = check_info_compiles, + .needs = "info_exists", + .compulsory = true +}; + +REGISTER_TEST(info_compiles);