File 0346-observer-What-to-do-with-bad-options.patch of Package erlang
From 90ba37e1086a0299ac7acb759c0af220a84d3c2a Mon Sep 17 00:00:00 2001
From: Micael Karlberg <bmk@erlang.org>
Date: Thu, 31 Mar 2022 18:52:58 +0200
Subject: [PATCH 4/5] [observer] What to do with "bad" options
Include "bad" options in the list, but not with a "value"
(since we did not get any). Instead with something that
will explain "something": A string; either "-",
"Not Supported" or "error: ..."
We can see what is missing and why (its better then nothing).
Also, this is approx like what is done for socket.
OTP-18012
---
lib/runtime_tools/src/observer_backend.erl | 17 +++++++++++------
1 file changed, 11 insertions(+), 6 deletions(-)
diff --git a/lib/runtime_tools/src/observer_backend.erl b/lib/runtime_tools/src/observer_backend.erl
index d4245d172c..5af565394c 100644
--- a/lib/runtime_tools/src/observer_backend.erl
+++ b/lib/runtime_tools/src/observer_backend.erl
@@ -63,7 +63,7 @@ vsn() ->
socket_info() ->
Info0 = socket:info(),
{Counters, Info1} = maps:take(counters, Info0),
- IovMax = maps:get(iov_max , Info1),
+ IovMax = maps:get(iov_max, Info1),
NumMons = socket:number_of_monitors(),
[{iov_max, IovMax}, {num_monitors, NumMons} | maps:to_list(Counters)].
@@ -240,14 +240,19 @@ get_sock_opts(Port, [Opt|Opts], Acc) ->
{ok, [Res]} ->
get_sock_opts(Port, Opts, [Res|Acc]);
{ok, []} -> % No value?
- get_sock_opts(Port, Opts, Acc);
+ Res = {Opt, "-"},
+ get_sock_opts(Port, Opts, [Res|Acc]);
{error, einval} ->
- get_sock_opts(Port, Opts, Acc);
+ Res = {Opt, "Not Supported"},
+ get_sock_opts(Port, Opts, [Res|Acc]);
%% If the option is "invalid", the reason would be 'einval',
- %% so this error must be something else => fail
- {error, _} = ERROR ->
- ERROR
+ %% so this error must be something else.
+ %% But if the option just vanish, we don't know what is
+ %% going on. So, do something similar to socket (see below).
+ {error, Reason} ->
+ Res = {Opt, f("error:~p", [Reason])},
+ get_sock_opts(Port, Opts, [Res|Acc])
end.
--
2.34.1