File 2262-ssh-Types-and-spec-fixes-to-conform-to-the-ref-manua.patch of Package erlang

From 7e2ceb5d44dc5004ea4d8271ee1e961bfa4987fd Mon Sep 17 00:00:00 2001
From: Hans Nilsson <hans@erlang.org>
Date: Thu, 23 Feb 2017 15:57:12 +0100
Subject: [PATCH 2/4] ssh: Types and spec fixes to conform to the ref manual

---
 lib/ssh/src/ssh.erl            | 34 ++++++++++++++++++++++++----------
 lib/ssh/src/ssh.hrl            | 18 ++++++++++++++++++
 lib/ssh/src/ssh_connect.hrl    |  4 ++--
 lib/ssh/src/ssh_connection.erl | 30 +++++++++++++++---------------
 lib/ssh/src/ssh_options.erl    |  2 --
 5 files changed, 59 insertions(+), 29 deletions(-)

diff --git a/lib/ssh/src/ssh.erl b/lib/ssh/src/ssh.erl
index 0186ac792..53aba1445 100644
--- a/lib/ssh/src/ssh.erl
+++ b/lib/ssh/src/ssh.erl
@@ -40,11 +40,24 @@
 	]).
 
 %%% Type exports
--export_type([connection_ref/0,
-	      channel_id/0,
-              role/0
+-export_type([ssh_daemon_ref/0,
+              ssh_connection_ref/0,
+	      ssh_channel_id/0,
+              role/0,
+              subsystem_spec/0,
+              subsystem_name/0,
+              channel_callback/0,
+              channel_init_args/0,
+              algs_list/0,
+              alg_entry/0,
+              simple_algs/0,
+              double_algs/0
 	     ]).
 
+-opaque ssh_daemon_ref()     :: daemon_ref() .
+-opaque ssh_connection_ref() :: connection_ref() .
+-opaque ssh_channel_id()     :: channel_id().
+
 %%--------------------------------------------------------------------
 -spec start() -> ok | {error, term()}.
 -spec start(permanent | transient | temporary) -> ok | {error, term()}.
@@ -157,10 +170,10 @@ channel_info(ConnectionRef, ChannelId, Options) ->
     ssh_connection_handler:channel_info(ConnectionRef, ChannelId, Options).
 
 %%--------------------------------------------------------------------
--spec daemon(inet:port_number()) ->  ok_error(pid()).
--spec daemon(inet:port_number()|inet:socket(), proplists:proplist()) -> ok_error(pid()).
--spec daemon(any | inet:ip_address(), inet:port_number(), proplists:proplist()) -> ok_error(pid())
-           ;(socket, inet:socket(), proplists:proplist()) -> ok_error(pid())
+-spec daemon(inet:port_number()) ->  ok_error(daemon_ref()).
+-spec daemon(inet:port_number()|inet:socket(), proplists:proplist()) -> ok_error(daemon_ref()).
+-spec daemon(any | inet:ip_address(), inet:port_number(), proplists:proplist()) -> ok_error(daemon_ref())
+           ;(socket, inet:socket(), proplists:proplist()) -> ok_error(daemon_ref())
             .
 
 %% Description: Starts a server listening for SSH connections
@@ -182,7 +195,7 @@ daemon(Host0, Port, UserOptions0) ->
     start_daemon(Host, Port, ssh_options:handle_options(server, UserOptions)).
 
 %%--------------------------------------------------------------------
--spec daemon_info(pid()) -> ok_error( [{atom(), term()}] ).
+-spec daemon_info(daemon_ref()) -> ok_error( [{atom(), term()}] ).
 
 daemon_info(Pid) ->
     case catch ssh_system_sup:acceptor_supervisor(Pid) of
@@ -197,7 +210,7 @@ daemon_info(Pid) ->
     end.
 
 %%--------------------------------------------------------------------
--spec stop_listener(pid()) -> ok.
+-spec stop_listener(daemon_ref()) -> ok.
 -spec stop_listener(inet:ip_address(), inet:port_number()) -> ok.
 %%
 %% Description: Stops the listener, but leaves
@@ -211,7 +224,7 @@ stop_listener(Address, Port, Profile) ->
     ssh_system_sup:stop_listener(Address, Port, Profile).
 
 %%--------------------------------------------------------------------
--spec stop_daemon(pid()) -> ok.
+-spec stop_daemon(daemon_ref()) -> ok.
 -spec stop_daemon(inet:ip_address(), inet:port_number()) -> ok.
 -spec stop_daemon(inet:ip_address(), inet:port_number(), atom()) -> ok.
 %%
@@ -269,6 +282,7 @@ start_shell(Error) ->
     Error.
 
 %%--------------------------------------------------------------------
+-spec default_algorithms() -> algs_list() .
 %%--------------------------------------------------------------------
 default_algorithms() ->
     ssh_transport:default_algorithms().
diff --git a/lib/ssh/src/ssh.hrl b/lib/ssh/src/ssh.hrl
index 475534f57..c1ba58ed4 100644
--- a/lib/ssh/src/ssh.hrl
+++ b/lib/ssh/src/ssh.hrl
@@ -90,7 +90,25 @@
 -define(PUT_SOCKET_OPT(KeyVal,Opts),    ?do_put_opt(socket_options,  KeyVal,Opts) ).
 
 %% Types
+-type role()                :: client | server .
 -type ok_error(SuccessType) :: {ok, SuccessType} | {error, any()} .
+-type daemon_ref()          :: pid() .
+
+-type subsystem_spec()      :: {subsystem_name(), {channel_callback(), channel_init_args()}} .
+-type subsystem_name()      :: string() .
+-type channel_callback()    :: atom() .
+-type channel_init_args()   :: list() .
+
+-type algs_list()           :: list( alg_entry() ).
+-type alg_entry()           :: {kex, simple_algs()} 
+                             | {public_key, simple_algs()}
+                             | {cipher, double_algs()}
+                             | {mac, double_algs()}
+                             | {compression, double_algs()} .
+-type simple_algs()         :: list( atom() ) .
+-type double_algs()         :: list( {client2serverlist,simple_algs()} | {server2client,simple_algs()} )
+                             | simple_algs() .
+
 
 %% Records
 -record(ssh,
diff --git a/lib/ssh/src/ssh_connect.hrl b/lib/ssh/src/ssh_connect.hrl
index 4fb6bc39f..c91c56435 100644
--- a/lib/ssh/src/ssh_connect.hrl
+++ b/lib/ssh/src/ssh_connect.hrl
@@ -22,9 +22,9 @@
 
 %%% Description : SSH connection protocol 
 
--type role()               :: client | server .
--type connection_ref()     :: pid().
 -type channel_id()         :: pos_integer().
+-type connection_ref()     :: pid().
+
 
 -define(DEFAULT_PACKET_SIZE, 65536).
 -define(DEFAULT_WINDOW_SIZE, 10*?DEFAULT_PACKET_SIZE).
diff --git a/lib/ssh/src/ssh_connection.erl b/lib/ssh/src/ssh_connection.erl
index 6a48ed581..930ccecb4 100644
--- a/lib/ssh/src/ssh_connection.erl
+++ b/lib/ssh/src/ssh_connection.erl
@@ -56,8 +56,8 @@
 %%--------------------------------------------------------------------
 
 %%--------------------------------------------------------------------
--spec session_channel(pid(), timeout()) -> {ok, channel_id()} | {error, timeout | closed}.
--spec session_channel(pid(), integer(), integer(), timeout()) -> {ok, channel_id()} | {error, timeout | closed}.
+-spec session_channel(connection_ref(), timeout()) -> {ok, channel_id()} | {error, timeout | closed}.
+-spec session_channel(connection_ref(), integer(), integer(), timeout()) -> {ok, channel_id()} | {error, timeout | closed}.
 
 %% Description: Opens a channel for a ssh session. A session is a
 %% remote execution of a program. The program may be a shell, an
@@ -81,7 +81,7 @@ session_channel(ConnectionHandler, InitialWindowSize,
     end.
 
 %%--------------------------------------------------------------------
--spec exec(pid(), channel_id(), string(), timeout()) -> 
+-spec exec(connection_ref(), channel_id(), string(), timeout()) -> 
 		  success | failure | {error, timeout | closed}.
 
 %% Description: Will request that the server start the
@@ -92,7 +92,7 @@ exec(ConnectionHandler, ChannelId, Command, TimeOut) ->
 				   true, [?string(Command)], TimeOut).
 
 %%--------------------------------------------------------------------
--spec shell(pid(), channel_id()) -> _.
+-spec shell(connection_ref(), channel_id()) -> _.
 
 %% Description: Will request that the user's default shell (typically
 %% defined in /etc/passwd in UNIX systems) be started at the other
@@ -102,7 +102,7 @@ shell(ConnectionHandler, ChannelId) ->
     ssh_connection_handler:request(ConnectionHandler, self(), ChannelId,
  				   "shell", false, <<>>, 0).
 %%--------------------------------------------------------------------
--spec subsystem(pid(), channel_id(), string(), timeout()) -> 
+-spec subsystem(connection_ref(), channel_id(), string(), timeout()) -> 
 		       success | failure | {error, timeout | closed}.
 %%
 %% Description: Executes a predefined subsystem.
@@ -112,11 +112,11 @@ subsystem(ConnectionHandler, ChannelId, SubSystem, TimeOut) ->
 				    ChannelId, "subsystem", 
 				    true, [?string(SubSystem)], TimeOut).
 %%--------------------------------------------------------------------
--spec send(pid(), channel_id(), iodata()) ->
+-spec send(connection_ref(), channel_id(), iodata()) ->
 		  ok | {error, closed}.
--spec send(pid(), channel_id(), integer()| iodata(), timeout() | iodata()) ->
+-spec send(connection_ref(), channel_id(), integer()| iodata(), timeout() | iodata()) ->
 		  ok | {error, timeout} | {error, closed}.
--spec send(pid(), channel_id(), integer(), iodata(), timeout()) ->
+-spec send(connection_ref(), channel_id(), integer(), iodata(), timeout()) ->
 		  ok | {error, timeout} | {error, closed}.
 %%
 %%
@@ -134,7 +134,7 @@ send(ConnectionHandler, ChannelId, Type, Data, TimeOut) ->
     ssh_connection_handler:send(ConnectionHandler, ChannelId,
 				Type, Data, TimeOut).
 %%--------------------------------------------------------------------
--spec send_eof(pid(), channel_id()) -> ok | {error, closed}.
+-spec send_eof(connection_ref(), channel_id()) -> ok | {error, closed}.
 %%
 %%
 %% Description: Sends eof on the channel <ChannelId>.
@@ -143,7 +143,7 @@ send_eof(ConnectionHandler, Channel) ->
     ssh_connection_handler:send_eof(ConnectionHandler, Channel).
 
 %%--------------------------------------------------------------------
--spec adjust_window(pid(), channel_id(), integer()) -> ok |  {error, closed}.
+-spec adjust_window(connection_ref(), channel_id(), integer()) -> ok |  {error, closed}.
 %%
 %%
 %% Description: Adjusts the ssh flowcontrol window.
@@ -152,7 +152,7 @@ adjust_window(ConnectionHandler, Channel, Bytes) ->
     ssh_connection_handler:adjust_window(ConnectionHandler, Channel, Bytes).
 
 %%--------------------------------------------------------------------
--spec setenv(pid(), channel_id(), string(), string(), timeout()) ->  
+-spec setenv(connection_ref(), channel_id(), string(), string(), timeout()) ->  
 		    success | failure | {error, timeout | closed}.
 %%
 %%
@@ -165,7 +165,7 @@ setenv(ConnectionHandler, ChannelId, Var, Value, TimeOut) ->
 
 
 %%--------------------------------------------------------------------
--spec close(pid(), channel_id()) -> ok.
+-spec close(connection_ref(), channel_id()) -> ok.
 %%
 %%
 %% Description: Sends a close message on the channel <ChannelId>.
@@ -174,7 +174,7 @@ close(ConnectionHandler, ChannelId) ->
     ssh_connection_handler:close(ConnectionHandler, ChannelId).
 
 %%--------------------------------------------------------------------
--spec reply_request(pid(), boolean(), success | failure, channel_id()) -> ok.
+-spec reply_request(connection_ref(), boolean(), success | failure, channel_id()) -> ok.
 %%
 %%
 %% Description: Send status replies to requests that want such replies.
@@ -185,9 +185,9 @@ reply_request(_,false, _, _) ->
     ok.
 
 %%--------------------------------------------------------------------
--spec ptty_alloc(pid(), channel_id(), proplists:proplist()) -> 
+-spec ptty_alloc(connection_ref(), channel_id(), proplists:proplist()) -> 
 			success | failiure | {error, closed}.
--spec ptty_alloc(pid(), channel_id(), proplists:proplist(), timeout()) -> 
+-spec ptty_alloc(connection_ref(), channel_id(), proplists:proplist(), timeout()) -> 
 			success | failiure | {error, timeout} | {error, closed}.
 
 %%
diff --git a/lib/ssh/src/ssh_options.erl b/lib/ssh/src/ssh_options.erl
index 52dea5d18..395be6b22 100644
--- a/lib/ssh/src/ssh_options.erl
+++ b/lib/ssh/src/ssh_options.erl
@@ -58,8 +58,6 @@
 
 -type option_declarations() :: #{ {option_key(),def} := option_declaration() }.
 
--type role() :: client | server .
-
 -type error() :: {error,{eoptions,any()}} .
 
 %%%================================================================
-- 
2.12.0

openSUSE Build Service is sponsored by