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.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2016-11-19 12:53:29 -05:00 committed by Lennart Poettering
parent 640be8806e
commit ef8b008455
1 changed files with 4 additions and 30 deletions

View File

@ -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(