[systemd-commits] src/network

Lennart Poettering lennart at kemper.freedesktop.org
Mon Aug 18 10:00:32 PDT 2014


 src/network/networkd-link.c |   49 ++++++++++++++++++++++++++------------------
 1 file changed, 29 insertions(+), 20 deletions(-)

New commits:
commit ea352b409eec5ea1a430fde176dd5ea57698a6a6
Author: Lennart Poettering <lennart at poettering.net>
Date:   Mon Aug 18 18:59:48 2014 +0200

    networkd: fix how we generate lists in link_save()
    
    https://bugs.freedesktop.org/show_bug.cgi?id=82721

diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c
index a37561a..2480221 100644
--- a/src/network/networkd-link.c
+++ b/src/network/networkd-link.c
@@ -1721,14 +1721,17 @@ int link_save(Link *link) {
                 admin_state, oper_state);
 
         if (link->network) {
-                char **address;
-                char **domain;
+                char **address, **domain;
+                bool space;
 
                 fputs("DNS=", f);
-
-                STRV_FOREACH(address, link->network->dns)
-                        fprintf(f, "%s%s", *address,
-                                (address + 1 ? " " : ""));
+                space = false;
+                STRV_FOREACH(address, link->network->dns) {
+                        if (space)
+                                fputc(' ', f);
+                        fputs(*address, f);
+                        space = true;
+                }
 
                 if (link->network->dhcp_dns &&
                     link->dhcp_lease) {
@@ -1736,19 +1739,22 @@ int link_save(Link *link) {
 
                         r = sd_dhcp_lease_get_dns(link->dhcp_lease, &addresses);
                         if (r > 0) {
+                                if (space)
+                                        fputc(' ', f);
                                 serialize_in_addrs(f, addresses, r);
-                                if (link->network->dns)
-                                        fputs(" ", f);
                         }
                 }
 
                 fputs("\n", f);
 
                 fprintf(f, "NTP=");
-
-                STRV_FOREACH(address, link->network->ntp)
-                        fprintf(f, "%s%s", *address,
-                                (address + 1 ? " " : ""));
+                space = false;
+                STRV_FOREACH(address, link->network->ntp) {
+                        if (space)
+                                fputc(' ', f);
+                        fputs(*address, f);
+                        space = true;
+                }
 
                 if (link->network->dhcp_ntp &&
                     link->dhcp_lease) {
@@ -1756,19 +1762,22 @@ int link_save(Link *link) {
 
                         r = sd_dhcp_lease_get_ntp(link->dhcp_lease, &addresses);
                         if (r > 0) {
+                                if (space)
+                                        fputc(' ', f);
                                 serialize_in_addrs(f, addresses, r);
-                                if (link->network->ntp)
-                                        fputs(" ", f);
                         }
                 }
 
                 fputs("\n", f);
 
                 fprintf(f, "DOMAINS=");
-
-                STRV_FOREACH(domain, link->network->domains)
-                        fprintf(f, "%s%s", *domain,
-                                (domain + 1 ? " " : ""));
+                space = false;
+                STRV_FOREACH(domain, link->network->domains) {
+                        if (space)
+                                fputc(' ', f);
+                        fputs(*domain, f);
+                        space = true;
+                }
 
                 if (link->network->dhcp_domains &&
                     link->dhcp_lease) {
@@ -1776,9 +1785,9 @@ int link_save(Link *link) {
 
                         r = sd_dhcp_lease_get_domainname(link->dhcp_lease, &domainname);
                         if (r >= 0) {
+                                if (space)
+                                        fputc(' ', f);
                                 fputs(domainname, f);
-                                if (link->network->domains)
-                                        fputs(" ", f);
                         }
                 }
 



More information about the systemd-commits mailing list