From: Eugene Syromyatnikov Date: Mon, 31 Jul 2017 16:52:01 +0000 (+0200) Subject: Print enabled optional features in strace version output X-Git-Tag: v4.19~194 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=66731fe8fe908f738e69fe12212abbe29856d580;p=strace Print enabled optional features in strace version output In order to provide information to user what optionally built features are available. * strace.c (print_version): New variable "features". Print features string after non-liability disclaimer (or "(none)" in case it is empty). (print_version) [USE_LIBUNWIND]: Concatenate "stack-unwind" into features string. * tests/strace-V.tests (getoption): New function. Update check in accordance with updated output. --- diff --git a/strace.c b/strace.c index c503c3d1..0015ad50 100644 --- a/strace.c +++ b/strace.c @@ -193,11 +193,19 @@ strerror(int err_no) static void print_version(void) { + static const char features[] = +#ifdef USE_LIBUNWIND + " stack-unwind" +#endif /* USE_LIBUNWIND */ + ""; + printf("%s -- version %s\n" "Copyright (c) 1991-%s The strace developers <%s>.\n" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n", PACKAGE_NAME, PACKAGE_VERSION, COPYRIGHT_YEAR, PACKAGE_URL); + printf("\nOptional features enabled:%s\n", + features[0] ? features : " (none)"); } static void diff --git a/tests/strace-V.test b/tests/strace-V.test index 37da9d1a..ec1ca059 100755 --- a/tests/strace-V.test +++ b/tests/strace-V.test @@ -14,6 +14,23 @@ getstr() ../../config.h } +# getoption OPTION YES_STRING [NO_STRING] +# +# Returns YES_STRING in case OPTION is enabled (present in config.h and has +# a non-zero numeric value). Otherwise, NO_STRING (or empty string, if not +# specified) is returned. +getoption() +{ + local opt + opt=$(sed -r -n 's/#define[[:space:]]*'"$1"'[[:space:]]*([0-9]+)$/\1/p' \ + ../../config.h) + if [ -n "$opt" -a "$opt" -ne 0 ]; then + printf "%s" "$2" + else + printf "%s" "${3-}" + fi +} + config_year=$(getstr COPYRIGHT_YEAR) [ "$year" -ge "$config_year" ] && [ "$config_year" -ge 2017 ] || { @@ -21,11 +38,18 @@ config_year=$(getstr COPYRIGHT_YEAR) exit 1 } +option_unwind=$(getoption USE_LIBUNWIND " stack-unwind") + +features="${option_unwind}" +[ -n "$features" ] || features=" (none)" + cat > "$EXP" << __EOF__ $(getstr PACKAGE_NAME) -- version $(getstr PACKAGE_VERSION) Copyright (c) 1991-${config_year} The strace developers <$(getstr PACKAGE_URL)>. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +Optional features enabled:${features} __EOF__ match_diff "$LOG" "$EXP"