From: Zbigniew Jędrzejewski-Szmek Date: Sat, 19 Nov 2016 17:53:29 +0000 (-0500) Subject: sd-dhcp-client: use free_and_strdup X-Git-Tag: v233~402^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ef8b0084552e05f28b9132d5dfc75edae164a991;p=thirdparty%2Fsystemd.git sd-dhcp-client: use free_and_strdup This changes the return value a bit: 1 will be returned if the value is changed. But the return value was not documented, and the change should be for the good anyway. Current callers don't care. --- diff --git a/src/libsystemd-network/sd-dhcp-client.c b/src/libsystemd-network/sd-dhcp-client.c index 9716168c1ea..14232648068 100644 --- a/src/libsystemd-network/sd-dhcp-client.c +++ b/src/libsystemd-network/sd-dhcp-client.c @@ -386,49 +386,23 @@ int sd_dhcp_client_set_hostname( sd_dhcp_client *client, const char *hostname) { - char *new_hostname = NULL; - assert_return(client, -EINVAL); - if (!hostname) { - client->hostname = mfree(client->hostname); - return 0; - } - /* Refuse hostnames that neither qualify as DNS nor as Linux hosntames */ - if (!hostname_is_valid(hostname, false) && !dns_name_is_valid(hostname)) + if (hostname && + !(hostname_is_valid(hostname, false) || dns_name_is_valid(hostname) > 0)) return -EINVAL; - if (streq_ptr(client->hostname, hostname)) - return 0; - - new_hostname = strdup(hostname); - if (!new_hostname) - return -ENOMEM; - - free(client->hostname); - client->hostname = new_hostname; - - return 0; + return free_and_strdup(&client->hostname, hostname); } int sd_dhcp_client_set_vendor_class_identifier( sd_dhcp_client *client, const char *vci) { - char *new_vci = NULL; - assert_return(client, -EINVAL); - new_vci = strdup(vci); - if (!new_vci) - return -ENOMEM; - - free(client->vendor_class_identifier); - - client->vendor_class_identifier = new_vci; - - return 0; + return free_and_strdup(&client->vendor_class_identifier, vci); } int sd_dhcp_client_set_client_port(