int hostname_setup(void) { int r; char *b = NULL; const char *hn = NULL; bool enoent = false; r = read_hostname(&b); if (r < 0) { hn = NULL; if (r == -ENOENT) enoent = true; else log_warning("Failed to read configured hostname: %s", strerror(-r)); } else hn = b; if (isempty(hn)) { /* Don't override the hostname if it is already set * and not explicitly configured */ if (hostname_is_set()) goto finish; if (enoent) log_info("No hostname configured."); hn = "localhost"; } if (sethostname(hn, strlen(hn)) < 0) { log_warning("Failed to set hostname to <%s>: %m", hn); r = -errno; } else log_info("Set hostname to <%s>.", hn); finish: free(b); return r; }
int hostname_setup(void) { int r; _cleanup_free_ char *b = NULL; const char *hn; bool enoent = false; r = read_hostname_config("/etc/hostname", &b); if (r < 0) { if (r == -ENOENT) enoent = true; else log_warning_errno(r, "Failed to read configured hostname: %m"); hn = NULL; } else hn = b; if (isempty(hn)) { /* Don't override the hostname if it is already set * and not explicitly configured */ if (hostname_is_set()) return 0; if (enoent) log_info("No hostname configured."); hn = "localhost"; } r = sethostname_idempotent(hn); if (r < 0) return log_warning_errno(r, "Failed to set hostname to <%s>: %m", hn); log_info("Set hostname to <%s>.", hn); return 0; }