diff options
-rw-r--r-- | usr.bin/kdump/mksubr | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/usr.bin/kdump/mksubr b/usr.bin/kdump/mksubr index ece75fc967c..8771356341a 100644 --- a/usr.bin/kdump/mksubr +++ b/usr.bin/kdump/mksubr @@ -1,5 +1,5 @@ #!/bin/sh -# $OpenBSD: mksubr,v 1.32 2017/04/28 13:53:05 mpi Exp $ +# $OpenBSD: mksubr,v 1.33 2017/11/29 15:53:44 guenther Exp $ # # Copyright (c) 2006 David Kirchner <dpk@dpk.net> # @@ -375,18 +375,25 @@ cat <<_EOF_ void fcntlcmdname (int arg) { + int noarg = 0; + switch (arg1) { _EOF_ egrep "^#[[:space:]]*define[[:space:]]+F_[A-Z_]+[[:space:]]+[0-9]+[[:space:]]*" \ $include_dir/sys/fcntl.h | \ - awk 'BEGIN { o=0 } { for (i = 1; i <= NF; i++) \ + awk 'BEGIN { o=0; \ + noarg["F_GETFD"] = 1; \ + noarg["F_GETFL"] = 1; \ + noarg["F_ISATTY"] = 1; \ + noarg["F_GETOWN"] = 1; \ + }{ for (i = 1; i <= NF; i++) \ if ($i ~ /define/) \ break; \ ++i; \ - if (o <= $(i+1)) \ - printf "\tcase %s:\n\t\t(void)printf(\"%s\");\n\t\tbreak;\n", $i, $i; \ - else \ + if (o > $(i+1)) \ exit; \ + printf "\tcase %s:\n\t\t(void)printf(\"%s\");%s\n\t\tbreak;\n", $i, $i, \ + noarg[$i] ? "\n\t\tnoarg = 1;" : ""; \ o = $(i+1) }' cat <<_EOF_ default: /* Should not reach */ @@ -404,7 +411,7 @@ cat <<_EOF_ } else if (arg1 == F_SETFL) { (void)putchar(','); doflagsname(arg, 0); - } else if (!fancy || (arg1 != F_GETFD && arg1 != F_GETFL && arg1 != F_ISATTY)) + } else if (!fancy || !noarg) (void)printf(",%#x", arg); } |