From: Sami Kerola Date: Tue, 16 May 2017 08:18:24 +0000 (+0100) Subject: misc: fix ggc-7 fallthrough warnings X-Git-Tag: v2.31-rc1~305^2^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3a5ce6e7efe62e1f583c090f907bf8518ce2f4ba;p=thirdparty%2Futil-linux.git misc: fix ggc-7 fallthrough warnings (Original patch and commit message edited by Rudi.) gcc-7 adds -Wimplicit-fallthrough=3 to our default flag -Wextra. This warning can be silenced by using comment /* fallthrough */ which is also recognized by other tools like coverity. There are also other valid comments (see man gcc-7) but we consolidate this style now. We could have also used __attribute__((fallthrough)) but the comment looks nice and does not need to be ifdef'ed for compatibility. Reference: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=7652 Reference: https://developers.redhat.com/blog/2017/03/10/wimplicit-fallthrough-in-gcc-7/ Reviewed-by: Ruediger Meier Suggested-by: Karel Zak Signed-off-by: Sami Kerola --- diff --git a/disk-utils/mkfs.cramfs.c b/disk-utils/mkfs.cramfs.c index f277aaf230..77b4467e7a 100644 --- a/disk-utils/mkfs.cramfs.c +++ b/disk-utils/mkfs.cramfs.c @@ -123,7 +123,7 @@ struct entry { #define CRAMFS_OFFSET_WIDTH 26 /* Input status of 0 to print help and exit without an error. */ -static void +static void __attribute__((__noreturn__)) usage(int status) { FILE *stream = status ? stderr : stdout; diff --git a/login-utils/last.c b/login-utils/last.c index f93ec7fbfc..d230deb7c7 100644 --- a/login-utils/last.c +++ b/login-utils/last.c @@ -830,7 +830,7 @@ static void process_wtmp_file(const struct last_control *ctl, c = whydown; quit = list(ctl, &ut, lastboot, c); } - /* FALLTHRU */ + /* fallthrough */ case DEAD_PROCESS: /* diff --git a/login-utils/su-common.c b/login-utils/su-common.c index 0999795c8b..032d62f9fe 100644 --- a/login-utils/su-common.c +++ b/login-utils/su-common.c @@ -899,6 +899,7 @@ su_main (int argc, char **argv, int mode) /* fallthrough if -u is not specified, then follow * traditional su(1) behavior */ + /* fallthrough */ case SU_MODE: if (optind < argc) new_user = argv[optind++]; diff --git a/login-utils/sulogin.c b/login-utils/sulogin.c index 2487838e70..72bba623a2 100644 --- a/login-utils/sulogin.c +++ b/login-utils/sulogin.c @@ -267,11 +267,11 @@ static void tcfinal(struct console *con) break; case 1: /* odd parity */ tio->c_cflag |= PARODD; - /* fall through */ + /* fallthrough */ case 2: /* even parity */ tio->c_cflag |= PARENB; tio->c_iflag |= (INPCK | ISTRIP); - /* fall through */ + /* fallthrough */ case (1 | 2): /* no parity bit */ tio->c_cflag &= ~CSIZE; tio->c_cflag |= CS7; @@ -971,7 +971,6 @@ int main(int argc, char **argv) switch ((con->pid = fork())) { case 0: mask_signal(SIGCHLD, SIG_DFL, NULL); - /* fall through */ nofork: setup(con); while (1) { @@ -1024,7 +1023,7 @@ int main(int argc, char **argv) exit(0); case -1: warn(_("fork failed")); - /* fall through */ + /* fallthrough */ default: break; } diff --git a/misc-utils/cal.c b/misc-utils/cal.c index 604eb26a76..86e159bfa1 100644 --- a/misc-utils/cal.c +++ b/misc-utils/cal.c @@ -431,7 +431,7 @@ int main(int argc, char **argv) ctl.req.day = strtos32_or_err(*argv++, _("illegal day value")); if (ctl.req.day < 1 || DAYS_IN_MONTH < ctl.req.day) errx(EXIT_FAILURE, _("illegal day value: use 1-%d"), DAYS_IN_MONTH); - /* FALLTHROUGH */ + /* fallthrough */ case 2: if (isdigit(**argv)) ctl.req.month = strtos32_or_err(*argv++, _("illegal month value: use 1-12")); @@ -443,7 +443,7 @@ int main(int argc, char **argv) } if (ctl.req.month < 1 || MONTHS_IN_YEAR < ctl.req.month) errx(EXIT_FAILURE, _("illegal month value: use 1-12")); - /* FALLTHROUGH */ + /* fallthrough */ case 1: ctl.req.year = strtos32_or_err(*argv++, _("illegal year value")); if (ctl.req.year < SMALLEST_YEAR) diff --git a/misc-utils/rename.c b/misc-utils/rename.c index 65ac543ef5..b06a2d969b 100644 --- a/misc-utils/rename.c +++ b/misc-utils/rename.c @@ -189,7 +189,6 @@ int main(int argc, char **argv) return EXIT_SUCCESS; case 'h': usage(stdout); - /* fallthrough */ default: errtryhelp(EXIT_FAILURE); } diff --git a/sys-utils/flock.c b/sys-utils/flock.c index 8af1e8ade0..50194bdb93 100644 --- a/sys-utils/flock.c +++ b/sys-utils/flock.c @@ -305,7 +305,7 @@ int main(int argc, char *argv[]) if (open_flags & O_RDWR) break; } - /* go through */ + /* fallthrough */ default: /* Other errors */ if (filename) diff --git a/sys-utils/hwclock.c b/sys-utils/hwclock.c index 6031460796..c76f25d2e3 100644 --- a/sys-utils/hwclock.c +++ b/sys-utils/hwclock.c @@ -1209,7 +1209,8 @@ static void out_version(void) * fmt, ... ), show a usage information and terminate the program * afterwards. */ -static void usage(const struct hwclock_control *ctl, const char *fmt, ...) +static void __attribute__((__noreturn__)) +usage(const struct hwclock_control *ctl, const char *fmt, ...) { FILE *usageto; va_list ap; diff --git a/sys-utils/ipcrm.c b/sys-utils/ipcrm.c index 0432b224f2..5b71f7d813 100644 --- a/sys-utils/ipcrm.c +++ b/sys-utils/ipcrm.c @@ -346,6 +346,7 @@ int main(int argc, char **argv) ret++; break; } + /* fallthrough */ case 'm': if (!iskey) id = strtos32_or_err(optarg, _("failed to parse argument")); @@ -359,6 +360,7 @@ int main(int argc, char **argv) ret++; break; } + /* fallthrough */ case 'q': if (!iskey) id = strtos32_or_err(optarg, _("failed to parse argument")); @@ -372,6 +374,7 @@ int main(int argc, char **argv) ret++; break; } + /* fallthrough */ case 's': if (!iskey) id = strtos32_or_err(optarg, _("failed to parse argument")); diff --git a/sys-utils/nsenter.c b/sys-utils/nsenter.c index afa1b9c502..6ad0b0fe0b 100644 --- a/sys-utils/nsenter.c +++ b/sys-utils/nsenter.c @@ -65,7 +65,7 @@ static struct namespace_file { { .nstype = 0, .name = NULL, .fd = -1 } }; -static void usage(int status) +static void __attribute__((__noreturn__)) usage(int status) { FILE *out = status == EXIT_SUCCESS ? stdout : stderr; diff --git a/sys-utils/unshare.c b/sys-utils/unshare.c index bccd75f3a1..6c5c2e2f93 100644 --- a/sys-utils/unshare.c +++ b/sys-utils/unshare.c @@ -238,7 +238,7 @@ static void bind_ns_files_from_child(pid_t *child, int fds[2]) } } -static void usage(int status) +static void __attribute__((__noreturn__)) usage(int status) { FILE *out = status == EXIT_SUCCESS ? stdout : stderr; diff --git a/term-utils/agetty.c b/term-utils/agetty.c index 93a3843c77..938fa2f97b 100644 --- a/term-utils/agetty.c +++ b/term-utils/agetty.c @@ -2041,12 +2041,12 @@ static void termio_final(struct options *op, struct termios *tp, struct chardata case 1: /* odd parity */ tp->c_cflag |= PARODD; - /* do not break */ + /* fallthrough */ case 2: /* even parity */ tp->c_cflag |= PARENB; tp->c_iflag |= INPCK | ISTRIP; - /* do not break */ + /* fallthrough */ case (1 | 2): /* no parity bit */ tp->c_cflag &= ~CSIZE; diff --git a/text-utils/hexdump-parse.c b/text-utils/hexdump-parse.c index c60a4d06b6..2b2735bf73 100644 --- a/text-utils/hexdump-parse.c +++ b/text-utils/hexdump-parse.c @@ -351,7 +351,7 @@ isint: cs[3] = '\0'; case 'A': endfu = fu; fu->flags |= F_IGNORE; - /* FALLTHROUGH */ + /* fallthrough */ case 'a': pr->flags = F_ADDRESS; ++p2; diff --git a/text-utils/more.c b/text-utils/more.c index 72dd96bf42..c0c2e8743e 100644 --- a/text-utils/more.c +++ b/text-utils/more.c @@ -1270,7 +1270,7 @@ int command(char *filename, register FILE *f) break; } lastp++; - /* fall through */ + /* fallthrough */ case '/': if (nlines == 0) nlines++; @@ -1368,7 +1368,7 @@ int command(char *filename, register FILE *f) (char *)0); break; } - /* fall through */ + /* fallthrough */ default: if (dum_opt) { kill_line(); @@ -2023,6 +2023,7 @@ int expand(char **outbuf, char *inbuf) *outstr++ = *inpstr++; break; } + /* fallthrough */ default: *outstr++ = c; } diff --git a/text-utils/pg.c b/text-utils/pg.c index 1b9b8d7dd9..50fd3c3799 100644 --- a/text-utils/pg.c +++ b/text-utils/pg.c @@ -659,7 +659,7 @@ static void prompt(long long pageno) break; case SEARCH_FIN: state = SEARCH; - /* FALLTHRU */ + /* fallthrough */ case SEARCH: if (cmd.cmdline[cmd.cmdlen - 1] == '\\') { escape = 1; @@ -738,7 +738,7 @@ static void prompt(long long pageno) continue; } state = COUNT; - /* FALLTHRU */ + /* fallthrough */ case COUNT: break; case ADDON_FIN: diff --git a/text-utils/ul.c b/text-utils/ul.c index 3986b42060..736483ef48 100644 --- a/text-utils/ul.c +++ b/text-utils/ul.c @@ -208,7 +208,7 @@ int main(int argc, char **argv) default: warnx(_("trouble reading terminfo")); - /* fall through to ... */ + /* fallthrough */ case 0: if (tflag) @@ -317,7 +317,7 @@ static void filter(FILE *f) } obuf[col].c_char = '_'; obuf[col].c_width = 1; - /* fall through */ + /* fallthrough */ case ' ': setcol(col + 1); continue;