From 4a1a9a5e53499d9655f0d68c17c5c569bc277a83 Mon Sep 17 00:00:00 2001 From: Alex Kotov Date: Tue, 14 Dec 2021 01:51:49 +0500 Subject: [PATCH] Enable CFLAGS "-pedantic" --- Makefile.am | 1 + tests/test_cmdline.c | 68 +++++++++++++++++++++----------------------- 2 files changed, 34 insertions(+), 35 deletions(-) diff --git a/Makefile.am b/Makefile.am index f750e68..cbbed1a 100644 --- a/Makefile.am +++ b/Makefile.am @@ -4,6 +4,7 @@ AM_CFLAGS = \ -std=c99 \ -Wall \ -Wextra \ + -pedantic \ -Wno-gnu-variable-sized-type-not-at-end \ -I$(top_srcdir)/include diff --git a/tests/test_cmdline.c b/tests/test_cmdline.c index eca767b..c3c6651 100644 --- a/tests/test_cmdline.c +++ b/tests/test_cmdline.c @@ -23,8 +23,6 @@ static void test( const char *const *const expected_argv ); -static const char *const argv0[] = {}; - static const char *const argv_empty[] = {""}; static const char *const argv_empty_X2[] = {"", ""}; static const char *const argv_empty_X3[] = {"", "", ""}; @@ -76,8 +74,8 @@ static const char *const argv_foo_quotmarkbarquotmark[] = {"foo", "\"bar\""}; int main() { - test("", 0, 0, true, "", 0, argv0); - test(" ", 0, 0, true, "", 0, argv0); + test("", 0, 0, true, "", 0, NULL); + test(" ", 0, 0, true, "", 0, NULL); test("foo", 0, 0, true, "", 1, argv_foo); test("foo bar", 0, 0, true, "", 2, argv_foo_bar); test(" foo bar", 0, 0, true, "", 2, argv_foo_bar); @@ -107,17 +105,17 @@ int main() test("foo bar car", 0, 4, true, "", 3, argv_foo_bar_car); test("foo bar car", 3, 4, true, "", 3, argv_foo_bar_car); - test("foo bar car", 2, 0, false, "too many args", 0, argv0); - test("foo bar car", 0, 3, false, "arg too long", 0, argv0); - test("foo bar car", 2, 3, false, "arg too long", 0, argv0); + test("foo bar car", 2, 0, false, "too many args", 0, NULL); + test("foo bar car", 0, 3, false, "arg too long", 0, NULL); + test("foo bar car", 2, 3, false, "arg too long", 0, NULL); test("\"foo\" \"bar\" \"car\"", 3, 0, true, "", 3, argv_foo_bar_car); test("\"foo\" \"bar\" \"car\"", 0, 4, true, "", 3, argv_foo_bar_car); test("\"foo\" \"bar\" \"car\"", 3, 4, true, "", 3, argv_foo_bar_car); - test("\"foo\" \"bar\" \"car\"", 2, 0, false, "too many args", 0, argv0); - test("\"foo\" \"bar\" \"car\"", 0, 3, false, "arg too long", 0, argv0); - test("\"foo\" \"bar\" \"car\"", 2, 3, false, "arg too long", 0, argv0); + test("\"foo\" \"bar\" \"car\"", 2, 0, false, "too many args", 0, NULL); + test("\"foo\" \"bar\" \"car\"", 0, 3, false, "arg too long", 0, NULL); + test("\"foo\" \"bar\" \"car\"", 2, 3, false, "arg too long", 0, NULL); test("\\ ", 0, 0, true, "", 1, argv_space); test("\"\\ \"", 0, 0, true, "", 1, argv_space); @@ -203,35 +201,35 @@ int main() test("\\\\\\\\\\\\ \\\\\\\\\\\\ \\\\\\\\\\\\", 3, 4, true, "", 3, argv_backslashX3_X3); test("\\\"\\\"\\\" \\\"\\\"\\\" \\\"\\\"\\\"", 3, 4, true, "", 3, argv_quotmarkX3_X3); - test("\\ \\ \\ \\ \\ \\ \\ \\ \\ ", 2, 0, false, "too many args", 0, argv0); - test("\\\\\\\\\\\\ \\\\\\\\\\\\ \\\\\\\\\\\\", 2, 0, false, "too many args", 0, argv0); - test("\\\"\\\"\\\" \\\"\\\"\\\" \\\"\\\"\\\"", 2, 0, false, "too many args", 0, argv0); - test("\\ \\ \\ \\ \\ \\ \\ \\ \\ ", 0, 3, false, "arg too long", 0, argv0); - test("\\\\\\\\\\\\ \\\\\\\\\\\\ \\\\\\\\\\\\", 0, 3, false, "arg too long", 0, argv0); - test("\\\"\\\"\\\" \\\"\\\"\\\" \\\"\\\"\\\"", 0, 3, false, "arg too long", 0, argv0); - test("\\ \\ \\ \\ \\ \\ \\ \\ \\ ", 2, 3, false, "arg too long", 0, argv0); - test("\\\\\\\\\\\\ \\\\\\\\\\\\ \\\\\\\\\\\\", 2, 3, false, "arg too long", 0, argv0); - test("\\\"\\\"\\\" \\\"\\\"\\\" \\\"\\\"\\\"", 2, 3, false, "arg too long", 0, argv0); + test("\\ \\ \\ \\ \\ \\ \\ \\ \\ ", 2, 0, false, "too many args", 0, NULL); + test("\\\\\\\\\\\\ \\\\\\\\\\\\ \\\\\\\\\\\\", 2, 0, false, "too many args", 0, NULL); + test("\\\"\\\"\\\" \\\"\\\"\\\" \\\"\\\"\\\"", 2, 0, false, "too many args", 0, NULL); + test("\\ \\ \\ \\ \\ \\ \\ \\ \\ ", 0, 3, false, "arg too long", 0, NULL); + test("\\\\\\\\\\\\ \\\\\\\\\\\\ \\\\\\\\\\\\", 0, 3, false, "arg too long", 0, NULL); + test("\\\"\\\"\\\" \\\"\\\"\\\" \\\"\\\"\\\"", 0, 3, false, "arg too long", 0, NULL); + test("\\ \\ \\ \\ \\ \\ \\ \\ \\ ", 2, 3, false, "arg too long", 0, NULL); + test("\\\\\\\\\\\\ \\\\\\\\\\\\ \\\\\\\\\\\\", 2, 3, false, "arg too long", 0, NULL); + test("\\\"\\\"\\\" \\\"\\\"\\\" \\\"\\\"\\\"", 2, 3, false, "arg too long", 0, NULL); - test("\\", 0, 0, false, "EOL after backslash", 0, argv0); - test(" \\", 0, 0, false, "EOL after backslash", 0, argv0); - test("\\ \\", 0, 0, false, "EOL after backslash", 0, argv0); - test("\\\\\\", 0, 0, false, "EOL after backslash", 0, argv0); - test("\\\"\\", 0, 0, false, "EOL after backslash", 0, argv0); - test("foo\\", 0, 0, false, "EOL after backslash", 0, argv0); + test("\\", 0, 0, false, "EOL after backslash", 0, NULL); + test(" \\", 0, 0, false, "EOL after backslash", 0, NULL); + test("\\ \\", 0, 0, false, "EOL after backslash", 0, NULL); + test("\\\\\\", 0, 0, false, "EOL after backslash", 0, NULL); + test("\\\"\\", 0, 0, false, "EOL after backslash", 0, NULL); + test("foo\\", 0, 0, false, "EOL after backslash", 0, NULL); - test("\"\\", 0, 0, false, "EOL after backslash inside quote", 0, argv0); - test("\" \\", 0, 0, false, "EOL after backslash inside quote", 0, argv0); - test("\"\\ \\", 0, 0, false, "EOL after backslash inside quote", 0, argv0); - test("\"\\\\\\", 0, 0, false, "EOL after backslash inside quote", 0, argv0); - test("\"\\\"\\", 0, 0, false, "EOL after backslash inside quote", 0, argv0); - test("\"foo\\", 0, 0, false, "EOL after backslash inside quote", 0, argv0); + test("\"\\", 0, 0, false, "EOL after backslash inside quote", 0, NULL); + test("\" \\", 0, 0, false, "EOL after backslash inside quote", 0, NULL); + test("\"\\ \\", 0, 0, false, "EOL after backslash inside quote", 0, NULL); + test("\"\\\\\\", 0, 0, false, "EOL after backslash inside quote", 0, NULL); + test("\"\\\"\\", 0, 0, false, "EOL after backslash inside quote", 0, NULL); + test("\"foo\\", 0, 0, false, "EOL after backslash inside quote", 0, NULL); - test("foo\"", 0, 0, false, "unescaped quotation mark", 0, argv0); - test("foo\"bar", 0, 0, false, "unescaped quotation mark", 0, argv0); + test("foo\"", 0, 0, false, "unescaped quotation mark", 0, NULL); + test("foo\"bar", 0, 0, false, "unescaped quotation mark", 0, NULL); - test("\"", 0, 0, false, "EOL inside quote", 0, argv0); - test("\"foo", 0, 0, false, "EOL inside quote", 0, argv0); + test("\"", 0, 0, false, "EOL inside quote", 0, NULL); + test("\"foo", 0, 0, false, "EOL inside quote", 0, NULL); return 0; }