io_lib.erl

Klacke <>
Wed Oct 6 11:37:59 CEST 1999


The following diff has proved to be extremely valuable for us
at bluetail.


The idea is to let io:format's of ports to show a
little bit more than #Port. In particular the #Port<closed>
printouts ere very very good to have for debugging purposes.

/klacke



cvs diff -rstart io_lib.erl 
Index: io_lib.erl
===================================================================
RCS file: /home/share/erlang/cvsroot/ose/erlang-47.4.1/lib/stdlib/src/io_lib.erl,v
retrieving revision 1.1.1.1
retrieving revision 1.3
diff -u -r1.1.1.1 -r1.3
--- io_lib.erl  1999/05/10 13:24:09     1.1.1.1
+++ io_lib.erl  1999/09/22 06:11:21     1.3
@@ -20,7 +20,7 @@
 %% File    : io_lib.erl
 %% Author  : Robert Virding
 %% Purpose : Library of useful i/o functions.
-%% Revision: $Id: io_lib.erl,v 1.1.1.1 1999/05/10 13:24:09 erlang Exp $
+%% Revision: $Id: io_lib.erl,v 1.3 1999/09/22 06:11:21 magnus Exp $
 
 %% This module is a library of useful i/o functions. It is hoped that the
 %% functions defined in it are basic enough to be used without modification
@@ -88,6 +88,16 @@
 indentation(Chars, Current) ->
     io_lib_format:indentation(Chars, Current).
 
+
+fmt_port(P) when node(P) == node() ->
+    case erlang:port_info(P) of
+       undefined ->   "#Port<closed>";
+       L -> {value, {id, Id}} = lists:keysearch(id,1,L),
+            lists:flatten(format("#Port<~p>", [Id]))
+    end;
+fmt_port(P) ->
+    lists:flatten(format("#Port<~p>", [node(P)])).
+
 %% write(Term)
 %% write(Term, Depth)
 %% write(Term, Depth, Pretty)
@@ -105,7 +115,7 @@
 write(Term, D) when integer(Term) -> integer_to_list(Term);
 write(Term, D) when float(Term) -> io_lib_format:fwrite_g(Term);
 write(Atom, D) when atom(Atom) -> write_atom(Atom);
-write(Term, D) when port(Term) -> "#Port";
+write(Term, D) when port(Term) -> fmt_port(Term);  %% "#Port";
 write(Term, D) when pid(Term) -> pid_to_list(Term);
 write(Term, D) when reference(Term) -> "#Ref";
 write(Term, D) when binary(Term) -> "#Bin";




More information about the erlang-questions mailing list