From 9a8344b2cd849a5506ca5e93bfc30665fb35acab Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Fri, 5 Feb 2016 14:09:45 +1030 Subject: [PATCH] ccanlint: make _info ported an empty string on success. Otherwise it describes what we need. Signed-off-by: Rusty Russell --- ccan/altstack/_info | 4 ++-- tools/ccanlint/tests/info_ported.c | 7 +++++-- tools/depends.c | 33 ++++++++++++++++-------------- tools/tools.h | 4 ++-- 4 files changed, 27 insertions(+), 21 deletions(-) diff --git a/ccan/altstack/_info b/ccan/altstack/_info index a33af2ce..2713bd0e 100644 --- a/ccan/altstack/_info +++ b/ccan/altstack/_info @@ -124,9 +124,9 @@ int main(int argc, char *argv[]) if (strcmp(argv[1], "ported") == 0) { #ifdef __x86_64__ - printf("1\n"); + printf("\n"); #else - printf("0\n"); + printf("Only x86-64 supported\n"); #endif } diff --git a/tools/ccanlint/tests/info_ported.c b/tools/ccanlint/tests/info_ported.c index f58f2f34..44360089 100644 --- a/tools/ccanlint/tests/info_ported.c +++ b/tools/ccanlint/tests/info_ported.c @@ -15,13 +15,16 @@ static const char *can_build(struct manifest *m) { + char *msg; + /* FIXME: In safe mode, we'd need complex guesstiparsing. */ if (safe_mode) return NULL; - if (get_ported(m, m->dir, true, get_or_compile_info)) + msg = get_ported(m, m->dir, true, get_or_compile_info); + if (!msg) return NULL; - return "'_info ported' says not supported"; + return tal_fmt(m, "'_info ported' says '%s'", msg); } static void check_info_ported(struct manifest *m, diff --git a/tools/depends.c b/tools/depends.c index 53fed44b..f1ff3090 100644 --- a/tools/depends.c +++ b/tools/depends.c @@ -282,31 +282,33 @@ char **get_cflags(const void *ctx, const char *dir, return flags; } -static bool get_one_ported(const void *ctx, const char *dir, - char *(*get_info)(const void *ctx, const char *dir)) +static char *get_one_ported(const void *ctx, const char *dir, + char *(*get_info)(const void *ctx, const char *dir)) { char **ported = get_one_prop(ctx, dir, "ported", get_info); /* No news is good news. */ if (!ported || tal_count(ported) == 0) - return true; + return NULL; if (tal_count(ported) != 1) errx(1, "%s/_info ported gave %zu lines, not one", dir, tal_count(ported)); - - if (streq(ported[0], "1")) - return true; - else if (streq(ported[0], "0")) - return false; - errx(1, "%s/_info ported gave invalid output '%s'", dir, ported[0]); + + if (streq(ported[0], "")) + return NULL; + else + return ported[0]; } -bool get_ported(const void *ctx, const char *dir, bool recurse, +char *get_ported(const void *ctx, const char *dir, bool recurse, char *(*get_info)(const void *ctx, const char *dir)) { - if (!get_one_ported(ctx, dir, get_info)) - return false; + char *msg; + + msg = get_one_ported(ctx, dir, get_info); + if (msg) + return msg; if (recurse) { size_t i; @@ -317,11 +319,12 @@ bool get_ported(const void *ctx, const char *dir, bool recurse, continue; subdir = path_join(ctx, find_ccan_dir(dir), deps[i]); - if (!get_one_ported(ctx, subdir, get_info)) - return false; + msg = get_one_ported(ctx, subdir, get_info); + if (msg) + return msg; } } - return true; + return NULL; } char **get_libs(const void *ctx, const char *dir, const char *style, diff --git a/tools/tools.h b/tools/tools.h index 7e2598c3..3b5c4bed 100644 --- a/tools/tools.h +++ b/tools/tools.h @@ -46,8 +46,8 @@ char **get_libs(const void *ctx, const char *dir, const char *style, char **get_cflags(const void *ctx, const char *dir, char *(*get_info)(const void *ctx, const char *dir)); -bool get_ported(const void *ctx, const char *dir, bool recurse, - char *(*get_info)(const void *ctx, const char *dir)); +char *get_ported(const void *ctx, const char *dir, bool recurse, + char *(*get_info)(const void *ctx, const char *dir)); /* From tools.c */ /* If set, print all commands run, all output they give and exit status. */ -- 2.39.2