File 2642-snmp-manager-Dialyzer-related-changes.patch of Package erlang

From 331a5f531326da2d0ac23a1fa40c8a51a749c464 Mon Sep 17 00:00:00 2001
From: Micael Karlberg <bmk@erlang.org>
Date: Thu, 13 Jun 2019 16:12:11 +0200
Subject: [PATCH 2/6] [snmp|manager] Dialyzer related changes

Changes to satisfy dialyzer. Including changing the definition
of the snmpm_network_interface behaviour (use the '-callback'
attribute instead of an explicit behaviour_info/1 function).

OTP-15932
---
 lib/snmp/src/app/snmp.erl                        |  6 ++
 lib/snmp/src/manager/snmpm_conf.erl              |  1 +
 lib/snmp/src/manager/snmpm_config.erl            | 12 ++--
 lib/snmp/src/manager/snmpm_network_interface.erl | 74 +++++++++++++++++++-----
 4 files changed, 71 insertions(+), 22 deletions(-)

diff --git a/lib/snmp/src/app/snmp.erl b/lib/snmp/src/app/snmp.erl
index 490d2b9810..7598f936c9 100644
--- a/lib/snmp/src/app/snmp.erl
+++ b/lib/snmp/src/app/snmp.erl
@@ -95,6 +95,9 @@
 	      dir/0, 
 	      snmp_timer/0, 
 
+              atl_type/0,
+              verbosity/0,
+
 	      engine_id/0, 
 	      tdomain/0, 
 	      community/0, 
@@ -188,6 +191,9 @@
 -type dir()           :: string().
 -type snmp_timer()    :: #snmp_incr_timer{}.
 
+-type atl_type()      :: read | write | read_write.
+-type verbosity()     :: info | log | debug | trace | silence.
+
 -type engine_id()     :: string().
 -type tdomain()       :: transportDomainUdpIpv4 | transportDomainUdpIpv6.
 -type community()     :: string().
diff --git a/lib/snmp/src/manager/snmpm_conf.erl b/lib/snmp/src/manager/snmpm_conf.erl
index 0421f49c88..9b1d03d645 100644
--- a/lib/snmp/src/manager/snmpm_conf.erl
+++ b/lib/snmp/src/manager/snmpm_conf.erl
@@ -356,6 +356,7 @@ read_config_file(Dir, File, Order, Check) ->
 
 %% ---- config file utility functions ----
 
+-dialyzer({nowarn_function, check_ok/1}). % Future compat
 check_ok(ok) ->
     ok;
 check_ok({ok, _}) ->
diff --git a/lib/snmp/src/manager/snmpm_config.erl b/lib/snmp/src/manager/snmpm_config.erl
index cd9fecd4d4..4653d9822d 100644
--- a/lib/snmp/src/manager/snmpm_config.erl
+++ b/lib/snmp/src/manager/snmpm_config.erl
@@ -2738,16 +2738,16 @@ dets_backup(close, _Cont, _D, B) ->
     ok;
 dets_backup(read, Cont1, D, B) ->
     case dets:bchunk(D, Cont1) of
+        {error, _} = ERROR ->
+            ERROR;
+        '$end_of_table' ->
+            dets:close(B),
+            end_of_input;
         {Cont2, Data} ->
             F = fun(Arg) ->
                         dets_backup(Arg, Cont2, D, B)
                 end,
-            {Data, F};
-        '$end_of_table' ->
-            dets:close(B),
-            end_of_input;
-        Error ->
-            Error
+            {Data, F}
     end.
 
 
diff --git a/lib/snmp/src/manager/snmpm_network_interface.erl b/lib/snmp/src/manager/snmpm_network_interface.erl
index d0f6f709d3..7123bb94f0 100644
--- a/lib/snmp/src/manager/snmpm_network_interface.erl
+++ b/lib/snmp/src/manager/snmpm_network_interface.erl
@@ -1,7 +1,7 @@
 %% 
 %% %CopyrightBegin%
 %% 
-%% Copyright Ericsson AB 2004-2016. All Rights Reserved.
+%% Copyright Ericsson AB 2004-2019. All Rights Reserved.
 %% 
 %% Licensed under the Apache License, Version 2.0 (the "License");
 %% you may not use this file except in compliance with the License.
@@ -20,19 +20,61 @@
 
 -module(snmpm_network_interface).
 
--export([behaviour_info/1]).
-
-behaviour_info(callbacks) ->
-    [{start_link,          2}, 
-     {stop,                1},
-     {send_pdu,            7},
-     {inform_response,     4},
-     {note_store,          2},
-     {info,                1},
-     {verbosity,           2},
-     %% {system_info_updated, 2},
-     {get_log_type,        1},
-     {set_log_type,        2}];
-behaviour_info(_) ->
-    undefined.
+-callback start_link(Server, NoteStore) ->
+    {ok, Pid} | {error, Reason} when
+      Server    :: pid(),
+      NoteStore :: pid(),
+      Pid       :: pid(),
+      Reason    :: term().
+
+-callback stop(Pid) ->
+    snmp:void() when
+      Pid :: pid().
+
+-callback send_pdu(Pid, Pdu, Vsn, MsgData, Domain, Addr, ExtraInfo) ->
+    snmp:void() when
+      Pid       :: pid(),
+      Pdu       :: snmp:pdu(),
+      Vsn       :: 'version-1' | 'version-2' | 'version-3',
+      MsgData   :: term(),
+      Domain    :: snmp:tdomain(),
+      Addr      :: {inet:ip_address(), inet:port_number()},
+      ExtraInfo :: term().
+
+-callback inform_response(Pid, Ref, Addr, Port) ->
+    snmp:void() when
+      Pid  :: pid(),
+      Ref  :: term(),
+      Addr :: inet:ip_address(),
+      Port :: inet:port_number().
+
+-callback note_store(Pid, NoteStore) ->
+    snmp:void() when
+      Pid       :: pid(),
+      NoteStore :: pid().
+
+-callback info(Pid) ->
+    Info when
+      Pid   :: pid(),
+      Info  :: [{Key, Value}],
+      Key   :: term(),
+      Value :: term().
+
+-callback verbosity(Pid, Verbosity) ->
+    snmp:void() when
+      Pid       :: pid(),
+      Verbosity :: snmp:verbosity().
+
+-callback get_log_type(Pid) ->
+    {ok, LogType} | {error, Reason} when
+      Pid     :: pid(),
+      LogType :: snmp:atl_type(),
+      Reason  :: term().
+
+-callback set_log_type(Pid, NewType) ->
+    {ok, OldType} | {error, Reason} when
+      Pid     :: pid(),
+      NewType :: snmp:atl_type(),
+      OldType :: snmp:atl_type(),
+      Reason  :: term().
 
-- 
2.16.4

openSUSE Build Service is sponsored by