Simplify calling code in ipaddr_list_flush_or_save() by introducing
intermediate variable of @struct nlmsghdr, drop duplicated code:
print_linkinfo_brief() never returns values other than <= 0 so we can
move print_selected_addrinfo() outside of each block.

Signed-off-by: Serhey Popovych <serhe.popov...@gmail.com>
---
 ip/ipaddress.c |   31 ++++++++++++++-----------------
 1 file changed, 14 insertions(+), 17 deletions(-)

diff --git a/ip/ipaddress.c b/ip/ipaddress.c
index 6ada993..1b4586c 100644
--- a/ip/ipaddress.c
+++ b/ip/ipaddress.c
@@ -753,7 +753,7 @@ static void print_link_stats(FILE *fp, struct nlmsghdr *n)
 }
 
 int print_linkinfo_brief(const struct sockaddr_nl *who,
-                               struct nlmsghdr *n, void *arg)
+                        struct nlmsghdr *n, void *arg)
 {
        FILE *fp = (FILE *)arg;
        struct ifinfomsg *ifi = NLMSG_DATA(n);
@@ -2012,24 +2012,21 @@ static int ipaddr_list_flush_or_save(int argc, char 
**argv, int action)
                ipaddr_filter(&linfo, ainfo);
 
        for (l = linfo.head; l; l = l->next) {
-               int res = 0;
-               struct ifinfomsg *ifi = NLMSG_DATA(&l->h);
+               struct nlmsghdr *n = &l->h;
+               struct ifinfomsg *ifi = NLMSG_DATA(n);
+               int res;
 
                open_json_object(NULL);
-               if (brief) {
-                       if (print_linkinfo_brief(NULL, &l->h, stdout) == 0)
-                               if (filter.family != AF_PACKET)
-                                       print_selected_addrinfo(ifi,
-                                                               ainfo->head,
-                                                               stdout);
-               } else if (no_link ||
-                          (res = print_linkinfo(NULL, &l->h, stdout)) >= 0) {
-                       if (filter.family != AF_PACKET)
-                               print_selected_addrinfo(ifi,
-                                                       ainfo->head, stdout);
-                       if (res > 0 && !do_link && show_stats)
-                               print_link_stats(stdout, &l->h);
-               }
+               if (brief)
+                       res = print_linkinfo_brief(NULL, n, stdout);
+               else if (no_link)
+                       res = 0;
+               else
+                       res = print_linkinfo(NULL, n, stdout);
+               if (res >= 0 && filter.family != AF_PACKET)
+                       print_selected_addrinfo(ifi, ainfo->head, stdout);
+               if (res > 0 && !do_link && show_stats)
+                       print_link_stats(stdout, n);
                close_json_object();
        }
        fflush(stdout);
-- 
1.7.10.4

Reply via email to