File 3052-erts-Change-erlang-display_string-to-output-to-stdou.patch of Package erlang

From 646d79cd9df2757bffb0f9b0d2c702adf302ca0e Mon Sep 17 00:00:00 2001
From: Lukas Larsson <lukas@erlang.org>
Date: Tue, 3 May 2022 15:29:39 +0200
Subject: [PATCH 2/4] erts: Change erlang:display_string to output to stdout

Historically, display_string has been used to output to stderr
when the standard_error io device is not yet available. However
all usage of it for that purpose has been removed/rewritten and
now it is used to write a string together with erlang:display.
So we change it to write to stdout (as erlang:display does).
---
 erts/emulator/beam/bif.tab         |  1 -
 erts/preloaded/src/init.erl        |  2 +-
 lib/kernel/src/logger_simple_h.erl | 20 ++++++++++----------
 lib/kernel/src/net_kernel.erl      |  2 +-
 4 files changed, 12 insertions(+), 13 deletions(-)

diff --git a/erts/emulator/beam/bif.tab b/erts/emulator/beam/bif.tab
index cfeab13bd2..d0e97f126e 100644
--- a/erts/emulator/beam/bif.tab
+++ b/erts/emulator/beam/bif.tab
@@ -56,7 +56,6 @@ bif erlang:crc32_combine/3
 bif erlang:date/0
 bif erlang:delete_module/1
 bif erlang:display/1
-bif erlang:display_string/1
 bif erlang:display_string/2
 ubif erlang:element/2
 bif erlang:erase/0
diff --git a/erts/preloaded/src/init.erl b/erts/preloaded/src/init.erl
index a95df3741e..29a6766455 100644
--- a/erts/preloaded/src/init.erl
+++ b/erts/preloaded/src/init.erl
@@ -558,7 +558,7 @@ do_handle_msg(Msg,State) ->
                         true -> logger:info("init got unexpected: ~p", [X],
                                             #{ error_logger=>#{tag=>info_msg}});
                         false ->
-                            erlang:display_string("init got unexpected: "),
+                            erlang:display_string(stdout, "init got unexpected: "),
                             erlang:display(X)
                     end
             end
diff --git a/lib/kernel/src/logger_simple_h.erl b/lib/kernel/src/logger_simple_h.erl
index fe8db09e83..db0dce97a7 100644
--- a/lib/kernel/src/logger_simple_h.erl
+++ b/lib/kernel/src/logger_simple_h.erl
@@ -145,7 +145,7 @@ do_log(Log) ->
                  #{ legacy_header => true, single_line => false
                    ,depth => unlimited, time_offset => ""
                  }),
-        erlang:display_string(lists:flatten(unicode:characters_to_list(Str)))
+        erlang:display_string(stdout, lists:flatten(unicode:characters_to_list(Str)))
     catch _E:_R:_ST ->
         % erlang:display({_E,_R,_ST}),
         display_log(Log)
@@ -164,7 +164,7 @@ display_date(Timestamp) when is_integer(Timestamp) ->
     Sec = Timestamp div 1000000,
     {{Y,Mo,D},{H,Mi,S}} = erlang:universaltime_to_localtime(
                             erlang:posixtime_to_universaltime(Sec)),
-    erlang:display_string(
+    erlang:display_string(stdout,
       integer_to_list(Y) ++ "-" ++
 	  pad(Mo,2) ++ "-" ++
 	  pad(D,2)  ++ " " ++
@@ -182,7 +182,8 @@ pad(Str,Size) ->
 
 display({string,Chardata}) ->
     try unicode:characters_to_list(Chardata) of
-        String -> erlang:display_string(String), erlang:display_string("\n")
+        String -> erlang:display_string(stdout, String),
+                  erlang:display_string(stdout, "\n")
     catch _:_ -> erlang:display(Chardata)
     end;
 display({report,Report}) when is_map(Report) ->
@@ -190,9 +191,9 @@ display({report,Report}) when is_map(Report) ->
 display({report,Report}) ->
     display_report(Report);
 display({F, A}) when is_list(F), is_list(A) ->
-    erlang:display_string(F ++ "\n"),
+    erlang:display_string(stdout, F ++ "\n"),
     [begin
-	 erlang:display_string("\t"),
+	 erlang:display_string(stdout, "\t"),
 	 erlang:display(Arg)
      end || Arg <- A],
     ok.
@@ -203,7 +204,7 @@ display_report(Atom, A) when is_atom(Atom) ->
     AtomString = atom_to_list(Atom),
     AtomLength = length(AtomString),
     Padding = lists:duplicate(ColumnWidth - AtomLength, $\s),
-    erlang:display_string(AtomString ++ Padding),
+    erlang:display_string(stdout, AtomString ++ Padding),
     display_report(A);
 display_report(F, A) ->
     erlang:display({F, A}).
@@ -216,13 +217,12 @@ display_report([A, []]) ->
 display_report(A = [_|_]) ->
     case lists:all(fun({Key,_Value}) -> is_atom(Key); (_) -> false end, A) of
 	true ->
-	    erlang:display_string("\n"),
+	    erlang:display_string(stdout, "\n"),
 	    lists:foreach(
 	      fun({Key, Value}) ->
 		      erlang:display_string(
-			"    " ++
-			    atom_to_list(Key) ++
-			    ": "),
+                        stdout,
+                        "    " ++ atom_to_list(Key) ++ ": "),
 		      erlang:display(Value)
 	      end, A);
 	false ->
diff --git a/lib/kernel/src/net_kernel.erl b/lib/kernel/src/net_kernel.erl
index 0ecad9e393..7717438df3 100644
--- a/lib/kernel/src/net_kernel.erl
+++ b/lib/kernel/src/net_kernel.erl
@@ -2125,7 +2125,7 @@ register_error(false, Proto, Reason) ->
     proto_error(false, Proto, lists:flatten(S));
 register_error(true, Proto, Reason) ->
     S = "Protocol '" ++ Proto ++ "': register/listen error: ",
-    erlang:display_string(S),
+    erlang:display_string(stdout, S),
     erlang:display(Reason).
 
 proto_error(CleanHalt, Proto, String) ->
-- 
2.35.3

openSUSE Build Service is sponsored by