aboutsummaryrefslogtreecommitdiffstats
path: root/lib/kernel
diff options
context:
space:
mode:
authorMicael Karlberg <[email protected]>2019-06-24 09:43:58 +0200
committerMicael Karlberg <[email protected]>2019-06-24 12:38:32 +0200
commit878741953069a8d0a7d683cf2b7cbbfe957e880d (patch)
treedfc12435fe1a196b84c4e121400bf6cea647b4ac /lib/kernel
parent55685630a4c2edccda1954e4bfb2ee590a4467f9 (diff)
downloadotp-878741953069a8d0a7d683cf2b7cbbfe957e880d.tar.gz
otp-878741953069a8d0a7d683cf2b7cbbfe957e880d.tar.bz2
otp-878741953069a8d0a7d683cf2b7cbbfe957e880d.zip
[esock] More doc woes
Also needed to take care of the specs files (in erts and kernel docs). Also, ifdef'ing the net module adjusted (again).
Diffstat (limited to 'lib/kernel')
-rw-r--r--lib/kernel/doc/src/Makefile8
-rw-r--r--lib/kernel/doc/src/specs.xml.src (renamed from lib/kernel/doc/src/specs.xml)2
-rw-r--r--lib/kernel/src/net.erl81
3 files changed, 75 insertions, 16 deletions
diff --git a/lib/kernel/doc/src/Makefile b/lib/kernel/doc/src/Makefile
index 817f592ad4..70623ab9aa 100644
--- a/lib/kernel/doc/src/Makefile
+++ b/lib/kernel/doc/src/Makefile
@@ -41,8 +41,10 @@ XML_APPLICATION_FILES = ref_man.xml
ifeq ($(USE_ESOCK),yes)
XML_REF3_ESOCK_FILES = net.xml
ESOCK_USE_NET_XML=<xi:include href="net.xml"\/>
+ESOCK_USE_NET_SPECS_XML=<xi:include href="../specs/specs_net.xml"/>
else
XML_REF3_ESOCK_FILES =
+ESOCK_USE_NET_SPECS_XML =
ESOCK_USE_NET_XML =
endif
@@ -150,7 +152,7 @@ SPECS_FLAGS = -I../../include
$(HTMLDIR)/%: %
$(INSTALL_DATA) $< $@
-docs: ref_man man pdf html
+docs: ref_man specs man pdf html
$(TOP_PDF_FILE): $(XML_FILES)
@@ -161,6 +163,7 @@ html: images $(HTML_REF_MAN_FILE)
man: $(MAN3_FILES) $(MAN4_FILES) $(MAN6_FILES)
ref_man: ref_man.xml
+specs: specs.xml
images: $(IMAGE_FILES:%=$(HTMLDIR)/%)
@@ -202,6 +205,9 @@ $(SPECDIR)/specs_zlib_stub.xml:
ref_man.xml: ref_man.xml.src
($(PERL) -p -e 's?%ESOCK_USE_NET_XML%?$(ESOCK_USE_NET_XML)?' \
$<) > $@
+specs.xml: specs.xml.src
+ ($(PERL) -p -e 's?%ESOCK_USE_NET_SPECS_XML%?$(ESOCK_USE_NET_SPECS_XML)?' \
+ $<) > $@
# ----------------------------------------------------
diff --git a/lib/kernel/doc/src/specs.xml b/lib/kernel/doc/src/specs.xml.src
index 9e258910db..ccb26b9458 100644
--- a/lib/kernel/doc/src/specs.xml
+++ b/lib/kernel/doc/src/specs.xml.src
@@ -26,7 +26,7 @@
<xi:include href="../specs/specs_logger_formatter.xml"/>
<xi:include href="../specs/specs_logger_std_h.xml"/>
<xi:include href="../specs/specs_logger_disk_log_h.xml"/>
- <xi:include href="../specs/specs_net.xml"/>
+ %ESOCK_USE_NET_SPECS_XML%
<xi:include href="../specs/specs_net_adm.xml"/>
<xi:include href="../specs/specs_net_kernel.xml"/>
<xi:include href="../specs/specs_os.xml"/>
diff --git a/lib/kernel/src/net.erl b/lib/kernel/src/net.erl
index 01409c736a..b8ffa64043 100644
--- a/lib/kernel/src/net.erl
+++ b/lib/kernel/src/net.erl
@@ -20,7 +20,13 @@
-module(net).
--ifdef(USE_ESOCK).
+%% We should really ifdef this module depending on if we actually built
+%% the system with esock support (socket and prim_net), but our doc-building
+%% can't handle the "variables" we need (USE_ESOCK). So instead, we just
+%% leave everything hanging...
+%% If one of the "hanging" functions is called when esock has been disabled,
+%% the function will through a 'notsup' error (erlang:error/1).
+
%% Administrative and utility functions
-export([
info/0,
@@ -36,7 +42,6 @@
if_index2name/1,
if_names/0
]).
--endif.
%% Deprecated functions from the "old" net module
-export([call/4,
@@ -46,8 +51,6 @@
relay/1,
sleep/1]).
--ifdef(USE_ESOCK).
-
%% Should we define these here or refer to the prim_net module
-export_type([
address_info/0,
@@ -60,7 +63,7 @@
network_interface_name/0,
network_interface_index/0
]).
--endif.
+
-deprecated({call, 4, eventually}).
-deprecated({cast, 4, eventually}).
@@ -70,8 +73,6 @@
-deprecated({sleep, 1, eventually}).
--ifdef(USE_ESOCK).
-
-type name_info_flags() :: [name_info_flag()|name_info_flag_ext()].
-type name_info_flag() :: namereqd |
dgram |
@@ -90,8 +91,6 @@
-type network_interface_name() :: string().
-type network_interface_index() :: non_neg_integer().
--endif.
-
%% ===========================================================================
%%
@@ -107,8 +106,6 @@ sleep(T) -> receive after T -> ok end.
relay(X) -> slave:relay(X).
--ifdef(USE_ESOCK).
-
%% ===========================================================================
%%
%% Administrative and utility API
@@ -117,14 +114,26 @@ relay(X) -> slave:relay(X).
-spec info() -> list().
+-ifdef(USE_ESOCK).
info() ->
prim_net:info().
+-else.
+-dialyzer({nowarn_function, info/0}).
+info() ->
+ erlang:error(notsup).
+-endif.
-spec command(Cmd :: term()) -> term().
+-ifdef(USE_ESOCK).
command(Cmd) ->
prim_net:command(Cmd).
+-else.
+-dialyzer({nowarn_function, command/1}).
+command(_Cmd) ->
+ erlang:error(notsup).
+-endif.
@@ -144,8 +153,14 @@ command(Cmd) ->
HostName :: string(),
Reason :: term().
+-ifdef(USE_ESOCK).
gethostname() ->
prim_net:gethostname().
+-else.
+-dialyzer({nowarn_function, gethostname/0}).
+gethostname() ->
+ erlang:error(notsup).
+-endif.
%% ===========================================================================
@@ -168,6 +183,7 @@ getnameinfo(SockAddr) ->
Info :: name_info(),
Reason :: term().
+-ifdef(USE_ESOCK).
getnameinfo(SockAddr, [] = _Flags) ->
getnameinfo(SockAddr, undefined);
getnameinfo(#{family := Fam, addr := _Addr} = SockAddr, Flags)
@@ -177,7 +193,18 @@ getnameinfo(#{family := Fam, addr := _Addr} = SockAddr, Flags)
getnameinfo(#{family := Fam, path := _Path} = SockAddr, Flags)
when (Fam =:= local) andalso (is_list(Flags) orelse (Flags =:= undefined)) ->
prim_net:getnameinfo(SockAddr, Flags).
-
+-else.
+-dialyzer({nowarn_function, getnameinfo/2}).
+getnameinfo(SockAddr, [] = _Flags) ->
+ getnameinfo(SockAddr, undefined);
+getnameinfo(#{family := Fam, addr := _Addr} = _SockAddr, Flags)
+ when ((Fam =:= inet) orelse (Fam =:= inet6)) andalso
+ (is_list(Flags) orelse (Flags =:= undefined)) ->
+ erlang:error(notsup);
+getnameinfo(#{family := Fam, path := _Path} = _SockAddr, Flags)
+ when (Fam =:= local) andalso (is_list(Flags) orelse (Flags =:= undefined)) ->
+ erlang:error(notsup).
+-endif.
%% ===========================================================================
@@ -209,11 +236,21 @@ getaddrinfo(Host) when is_list(Host) ->
Info :: [address_info()],
Reason :: term().
+-ifdef(USE_ESOCK).
getaddrinfo(Host, Service)
when (is_list(Host) orelse (Host =:= undefined)) andalso
(is_list(Service) orelse (Service =:= undefined)) andalso
(not ((Service =:= undefined) andalso (Host =:= undefined))) ->
prim_net:getaddrinfo(Host, Service).
+-else.
+-dialyzer({nowarn_function, getaddrinfo/2}).
+getaddrinfo(Host, Service)
+ when (is_list(Host) orelse (Host =:= undefined)) andalso
+ (is_list(Service) orelse (Service =:= undefined)) andalso
+ (not ((Service =:= undefined) andalso (Host =:= undefined))) ->
+ erlang:error(notsup).
+-endif.
+
@@ -229,8 +266,14 @@ getaddrinfo(Host, Service)
Idx :: network_interface_index(),
Reason :: term().
+-ifdef(USE_ESOCK).
if_name2index(If) when is_list(If) ->
prim_net:if_name2index(If).
+-else.
+-dialyzer({nowarn_function, if_name2index/1}).
+if_name2index(If) when is_list(If) ->
+ erlang:error(notsup).
+-endif.
@@ -246,8 +289,14 @@ if_name2index(If) when is_list(If) ->
Name :: network_interface_name(),
Reason :: term().
+-ifdef(USE_ESOCK).
if_index2name(Idx) when is_integer(Idx) ->
prim_net:if_index2name(Idx).
+-else.
+-dialyzer({nowarn_function, if_index2name/1}).
+if_index2name(Idx) when is_integer(Idx) ->
+ erlang:error(notsup).
+-endif.
@@ -263,9 +312,13 @@ if_index2name(Idx) when is_integer(Idx) ->
If :: network_interface_name(),
Reason :: term().
+-ifdef(USE_ESOCK).
if_names() ->
prim_net:if_names().
+-else.
+-dialyzer({nowarn_function, if_names/0}).
+if_names() ->
+ erlang:error(notsup).
+-endif.
-
--endif.