diff options
Diffstat (limited to 'src/hostname/hostnamectl.c')
-rw-r--r-- | src/hostname/hostnamectl.c | 41 |
1 files changed, 19 insertions, 22 deletions
diff --git a/src/hostname/hostnamectl.c b/src/hostname/hostnamectl.c index c996fc04a0..0724fcc16d 100644 --- a/src/hostname/hostnamectl.c +++ b/src/hostname/hostnamectl.c @@ -19,21 +19,21 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>. ***/ -#include <stdlib.h> -#include <stdbool.h> #include <getopt.h> #include <locale.h> +#include <stdbool.h> +#include <stdlib.h> #include <string.h> #include "sd-bus.h" #include "sd-id128.h" -#include "hostname-util.h" -#include "bus-util.h" + +#include "architecture.h" #include "bus-error.h" -#include "util.h" +#include "bus-util.h" +#include "hostname-util.h" #include "spawn-polkit-agent.h" -#include "build.h" -#include "architecture.h" +#include "util.h" static bool arg_ask_password = true; static BusTransport arg_transport = BUS_TRANSPORT_LOCAL; @@ -252,7 +252,7 @@ static int set_simple_string(sd_bus *bus, const char *method, const char *value) static int set_hostname(sd_bus *bus, char **args, unsigned n) { _cleanup_free_ char *h = NULL; - const char *hostname = args[1]; + char *hostname = args[1]; int r; assert(args); @@ -270,17 +270,16 @@ static int set_hostname(sd_bus *bus, char **args, unsigned n) { * just set the passed hostname as static/dynamic * hostname. */ - h = strdup(hostname); - if (!h) - return log_oom(); - - hostname_cleanup(h, true); - - if (arg_static && streq(h, hostname)) + if (arg_static && hostname_is_valid(hostname, true)) { p = ""; - else { - p = hostname; - hostname = h; + /* maybe get rid of trailing dot */ + hostname = hostname_cleanup(hostname); + } else { + p = h = strdup(hostname); + if (!p) + return log_oom(); + + hostname_cleanup(hostname); } r = set_simple_string(bus, "SetPrettyHostname", p); @@ -388,9 +387,7 @@ static int parse_argv(int argc, char *argv[]) { return 0; case ARG_VERSION: - puts(PACKAGE_STRING); - puts(SYSTEMD_FEATURES); - return 0; + return version(); case 'H': arg_transport = BUS_TRANSPORT_REMOTE; @@ -520,7 +517,7 @@ int main(int argc, char *argv[]) { if (r <= 0) goto finish; - r = bus_open_transport(arg_transport, arg_host, false, &bus); + r = bus_connect_transport(arg_transport, arg_host, false, &bus); if (r < 0) { log_error_errno(r, "Failed to create bus connection: %m"); goto finish; |