When I was trying to compile this code for hostprogs-y notation of Kbuild, I was hit by the following error. error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode This is because KBUILD_HOSTCFLAGS specifies -std=gnu89 whereas the tools Makefile compiles it with -std=gnu99. Of course, it would be possible to pass -std=gnu99 per file, but it shouldn't hurt to fix the C code. Signed-off-by: Masahiro Yamada <yamada.masahiro@xxxxxxxxxxxxx> --- tools/lib/subcmd/parse-options.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tools/lib/subcmd/parse-options.c b/tools/lib/subcmd/parse-options.c index dbb9efb..1bd858a2 100644 --- a/tools/lib/subcmd/parse-options.c +++ b/tools/lib/subcmd/parse-options.c @@ -630,6 +630,7 @@ int parse_options_subcommand(int argc, const char **argv, const struct option *o const char *const subcommands[], const char *usagestr[], int flags) { struct parse_opt_ctx_t ctx; + int i; /* build usage string if it's not provided */ if (subcommands && !usagestr[0]) { @@ -637,7 +638,7 @@ int parse_options_subcommand(int argc, const char **argv, const struct option *o astrcatf(&buf, "%s %s [<options>] {", subcmd_config.exec_name, argv[0]); - for (int i = 0; subcommands[i]; i++) { + for (i = 0; subcommands[i]; i++) { if (i) astrcat(&buf, "|"); astrcat(&buf, subcommands[i]); @@ -663,7 +664,7 @@ int parse_options_subcommand(int argc, const char **argv, const struct option *o exit(130); case PARSE_OPT_LIST_SUBCMDS: if (subcommands) { - for (int i = 0; subcommands[i]; i++) + for (i = 0; subcommands[i]; i++) printf("%s ", subcommands[i]); } putchar('\n'); -- 2.7.4