2023-10-31 15:30:38

by Arnaldo Carvalho de Melo

[permalink] [raw]
Subject: [PATCH next 1/1] perf beauty socket/prctl_option: Cope with extended regexp complaint by grep

Noticed on fedora 38, the extended regexp that so far was ok for both
grep and sed now gets complaints by grep, that says '/' doesn't need to
be escaped with '\'.

So stop using '/' in sed, use '%' instead and remove the \ before / in
the common extended regexp.

Link: https://x.com/SMT_Solvers/status/1710380010098344192?s=20
Cc: Adrian Hunter <[email protected]>
Cc: Ian Rogers <[email protected]>
Cc: Jiri Olsa <[email protected]>
Cc: Namhyung Kim <[email protected]>
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
---
tools/perf/trace/beauty/prctl_option.sh | 4 ++--
tools/perf/trace/beauty/socket.sh | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/tools/perf/trace/beauty/prctl_option.sh b/tools/perf/trace/beauty/prctl_option.sh
index 8059342ca4126c38..9455d9672f140d13 100755
--- a/tools/perf/trace/beauty/prctl_option.sh
+++ b/tools/perf/trace/beauty/prctl_option.sh
@@ -4,9 +4,9 @@
[ $# -eq 1 ] && header_dir=$1 || header_dir=tools/include/uapi/linux/

printf "static const char *prctl_options[] = {\n"
-regex='^#define[[:space:]]{1}PR_(\w+)[[:space:]]*([[:xdigit:]]+)([[:space:]]*\/.*)?$'
+regex='^#define[[:space:]]{1}PR_(\w+)[[:space:]]*([[:xdigit:]]+)([[:space:]]*/.*)?$'
grep -E $regex ${header_dir}/prctl.h | grep -v PR_SET_PTRACER | \
- sed -r "s/$regex/\2 \1/g" | \
+ sed -E "s%$regex%\2 \1%g" | \
sort -n | xargs printf "\t[%s] = \"%s\",\n"
printf "};\n"

diff --git a/tools/perf/trace/beauty/socket.sh b/tools/perf/trace/beauty/socket.sh
index 8bc7ba62203e4a9d..670c6db298ae0298 100755
--- a/tools/perf/trace/beauty/socket.sh
+++ b/tools/perf/trace/beauty/socket.sh
@@ -18,10 +18,10 @@ grep -E $ipproto_regex ${uapi_header_dir}/in.h | \
printf "};\n\n"

printf "static const char *socket_level[] = {\n"
-socket_level_regex='^#define[[:space:]]+SOL_(\w+)[[:space:]]+([[:digit:]]+)([[:space:]]+\/.*)?'
+socket_level_regex='^#define[[:space:]]+SOL_(\w+)[[:space:]]+([[:digit:]]+)([[:space:]]+/.*)?'

grep -E $socket_level_regex ${beauty_header_dir}/socket.h | \
- sed -r "s/$socket_level_regex/\2 \1/g" | \
+ sed -E "s%$socket_level_regex%\2 \1%g" | \
sort -n | xargs printf "\t[%s] = \"%s\",\n"
printf "};\n\n"

--
2.41.0


2023-11-02 06:04:34

by Namhyung Kim

[permalink] [raw]
Subject: Re: [PATCH next 1/1] perf beauty socket/prctl_option: Cope with extended regexp complaint by grep

On Tue, Oct 31, 2023 at 8:30 AM Arnaldo Carvalho de Melo
<[email protected]> wrote:
>
> Noticed on fedora 38, the extended regexp that so far was ok for both
> grep and sed now gets complaints by grep, that says '/' doesn't need to
> be escaped with '\'.
>
> So stop using '/' in sed, use '%' instead and remove the \ before / in
> the common extended regexp.
>
> Link: https://x.com/SMT_Solvers/status/1710380010098344192?s=20
> Cc: Adrian Hunter <[email protected]>
> Cc: Ian Rogers <[email protected]>
> Cc: Jiri Olsa <[email protected]>
> Cc: Namhyung Kim <[email protected]>
> Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>

Acked-by: Namhyung Kim <[email protected]>

Thanks,
Namhyung

> ---
> tools/perf/trace/beauty/prctl_option.sh | 4 ++--
> tools/perf/trace/beauty/socket.sh | 4 ++--
> 2 files changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/tools/perf/trace/beauty/prctl_option.sh b/tools/perf/trace/beauty/prctl_option.sh
> index 8059342ca4126c38..9455d9672f140d13 100755
> --- a/tools/perf/trace/beauty/prctl_option.sh
> +++ b/tools/perf/trace/beauty/prctl_option.sh
> @@ -4,9 +4,9 @@
> [ $# -eq 1 ] && header_dir=$1 || header_dir=tools/include/uapi/linux/
>
> printf "static const char *prctl_options[] = {\n"
> -regex='^#define[[:space:]]{1}PR_(\w+)[[:space:]]*([[:xdigit:]]+)([[:space:]]*\/.*)?$'
> +regex='^#define[[:space:]]{1}PR_(\w+)[[:space:]]*([[:xdigit:]]+)([[:space:]]*/.*)?$'
> grep -E $regex ${header_dir}/prctl.h | grep -v PR_SET_PTRACER | \
> - sed -r "s/$regex/\2 \1/g" | \
> + sed -E "s%$regex%\2 \1%g" | \
> sort -n | xargs printf "\t[%s] = \"%s\",\n"
> printf "};\n"
>
> diff --git a/tools/perf/trace/beauty/socket.sh b/tools/perf/trace/beauty/socket.sh
> index 8bc7ba62203e4a9d..670c6db298ae0298 100755
> --- a/tools/perf/trace/beauty/socket.sh
> +++ b/tools/perf/trace/beauty/socket.sh
> @@ -18,10 +18,10 @@ grep -E $ipproto_regex ${uapi_header_dir}/in.h | \
> printf "};\n\n"
>
> printf "static const char *socket_level[] = {\n"
> -socket_level_regex='^#define[[:space:]]+SOL_(\w+)[[:space:]]+([[:digit:]]+)([[:space:]]+\/.*)?'
> +socket_level_regex='^#define[[:space:]]+SOL_(\w+)[[:space:]]+([[:digit:]]+)([[:space:]]+/.*)?'
>
> grep -E $socket_level_regex ${beauty_header_dir}/socket.h | \
> - sed -r "s/$socket_level_regex/\2 \1/g" | \
> + sed -E "s%$socket_level_regex%\2 \1%g" | \
> sort -n | xargs printf "\t[%s] = \"%s\",\n"
> printf "};\n\n"
>
> --
> 2.41.0
>