libdns: Avoid using compound literals (5).
authorNIIBE Yutaka <gniibe@fsij.org>
Tue, 26 Feb 2019 02:43:10 +0000 (11:43 +0900)
committerNIIBE Yutaka <gniibe@fsij.org>
Tue, 26 Feb 2019 02:53:41 +0000 (11:53 +0900)
* dirmngr/dns.h (dns_rr_foreach): Don't use dns_rr_i_new.
Call dns_rr_grep with NULL.
* dirmngr/dns.c (dns_rr_grep): Support NULL for error_.

--

Here we still use C99 feature of struct member initialization in
dns_rr_foreach, for struct dns_rr_i.  Note that in C99, it guarantees
non-specified member fields are initialized by zero.  So, there's no
need to use dns_rr_i_new at all.

Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
dirmngr/dns.c
dirmngr/dns.h

index f6a1587..85fd37f 100644 (file)
@@ -3266,7 +3266,8 @@ unsigned dns_rr_grep(struct dns_rr *rr, unsigned lim, struct dns_rr_i *i, struct
 
        return count;
 error:
-       *error_ = error;
+       if (error_)
+               *error_ = error;
 
        return count;
 } /* dns_rr_grep() */
index 0953228..da450c6 100644 (file)
@@ -542,7 +542,7 @@ DNS_PUBLIC struct dns_rr_i *dns_rr_i_init(struct dns_rr_i *, struct dns_packet *
 DNS_PUBLIC unsigned dns_rr_grep(struct dns_rr *, unsigned, struct dns_rr_i *, struct dns_packet *, int *);
 
 #define dns_rr_foreach_(rr, P, ...)    \
-       for (struct dns_rr_i DNS_PP_XPASTE(i, __LINE__) = *dns_rr_i_new((P), __VA_ARGS__); dns_rr_grep((rr), 1, &DNS_PP_XPASTE(i, __LINE__), (P), &(int){ 0 }); )
+       for (struct dns_rr_i DNS_PP_XPASTE(i, __LINE__) = { __VA_ARGS__ }; dns_rr_grep((rr), 1, &DNS_PP_XPASTE(i, __LINE__), (P), NULL); )
 
 #define dns_rr_foreach(...)    dns_rr_foreach_(__VA_ARGS__)