From 475bf707b958f37844534b7b45c905521c7401a2 Mon Sep 17 00:00:00 2001 From: David Oberhollenzer Date: Thu, 21 Sep 2017 11:15:32 +0200 Subject: Mark or fix switch cases that fall through Now that C++17 introduced a special fallthrough keyword for explicitly tagging switch cases that are supposed to fall through, newer gcc versions also implement a feature request from 2002 to warn about maybe unwanted fall-throughs in switch cases in other languages (like C). For C code, we can either add a gcc specific attribute at the end of the switch case, or use a special comment that gcc checks for, indicating that the fall-through behaviour is indeed intended. This patch adds a "/* fall-through */" comment at the end of various case blocks to silence gcc warnings and in some cases a break, where fall-through was probably not intended. Signed-off-by: David Oberhollenzer --- misc-utils/flash_erase.c | 2 ++ misc-utils/mtd_debug.c | 1 + nand-utils/nanddump.c | 1 + tests/fs-tests/utils/fstest_monitor.c | 1 + ubi-utils/ubiblock.c | 1 + 5 files changed, 6 insertions(+) diff --git a/misc-utils/flash_erase.c b/misc-utils/flash_erase.c index 6db9fa3..0c9449f 100644 --- a/misc-utils/flash_erase.c +++ b/misc-utils/flash_erase.c @@ -155,8 +155,10 @@ int main(int argc, char *argv[]) default: case 0: errmsg("no MTD device specified"); + /* fall-through */ case 1: errmsg("no start erase block specified"); + /* fall-through */ case 2: errmsg("no erase block count specified"); error = 1; diff --git a/misc-utils/mtd_debug.c b/misc-utils/mtd_debug.c index d90a968..1fd6871 100644 --- a/misc-utils/mtd_debug.c +++ b/misc-utils/mtd_debug.c @@ -272,6 +272,7 @@ static int showinfo(int fd) break; case MTD_UBIVOLUME: printf("MTD_UBIVOLUME"); + break; default: printf("(unknown type - new MTD API maybe?)"); } diff --git a/nand-utils/nanddump.c b/nand-utils/nanddump.c index bebb48e..2f167bb 100644 --- a/nand-utils/nanddump.c +++ b/nand-utils/nanddump.c @@ -180,6 +180,7 @@ static void process_options(int argc, char * const argv[]) break; case 'c': canonical = true; + /* fall-through */ case 'p': pretty_print = true; break; diff --git a/tests/fs-tests/utils/fstest_monitor.c b/tests/fs-tests/utils/fstest_monitor.c index afb951b..db687c1 100644 --- a/tests/fs-tests/utils/fstest_monitor.c +++ b/tests/fs-tests/utils/fstest_monitor.c @@ -131,6 +131,7 @@ static int parse_command_line(char *cmdline, int *pargc, char ***pargv) break; } state = 1; + /* fall-through */ case 1: /* Not quoted */ if (c == '\\') { if (*p) diff --git a/ubi-utils/ubiblock.c b/ubi-utils/ubiblock.c index 8e36678..71e60b6 100644 --- a/ubi-utils/ubiblock.c +++ b/ubi-utils/ubiblock.c @@ -74,6 +74,7 @@ static int parse_opt(int argc, char * const argv[]) switch (key) { case 'c': args.create = 1; + /* fall-through */ case 'r': args.node = optarg; break; -- cgit v1.2.3