diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el index 51e15af2ef..b79fb54573 100644 --- a/lisp/net/tramp-sh.el +++ b/lisp/net/tramp-sh.el @@ -4927,7 +4927,7 @@ tramp-maybe-open-connection (setenv "PS1" tramp-initial-end-of-output) (unless (stringp tramp-encoding-shell) (tramp-error vec 'file-error "`tramp-encoding-shell' not set")) - (let* ((current-host (system-name)) + (let* ((current-host tramp-system-name) (target-alist (tramp-compute-multi-hops vec)) ;; We will apply `tramp-ssh-controlmaster-options' ;; only for the first hop. diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index 55f652fa9a..2e32481198 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el @@ -175,6 +175,12 @@ tramp-encoding-command-interactive :version "24.1" :type '(choice (const nil) string)) +;; Since Emacs 26.1, `system-name' can return `nil' at build time if +;; Emacs is compiled with "--no-build-details". We do expect it to be +;; a string. (Bug#44481) +(defconst tramp-system-name (or (system-name) "") + "The system name Tramp is running locally.") + (defvar tramp-methods nil "Alist of methods for remote files. This is a list of entries of the form (NAME PARAM1 PARAM2 ...). @@ -416,7 +422,7 @@ tramp-default-user-alist (choice :tag " Host regexp" regexp sexp) (choice :tag " User name" string (const nil))))) -(defcustom tramp-default-host (system-name) +(defcustom tramp-default-host tramp-system-name "Default host to use for transferring files. Useful for su and sudo methods mostly." :type 'string) @@ -471,8 +477,8 @@ tramp-save-ad-hoc-proxies (defcustom tramp-restricted-shell-hosts-alist (when (memq system-type '(windows-nt)) (list (format "\\`\\(%s\\|%s\\)\\'" - (regexp-quote (downcase (system-name))) - (regexp-quote (upcase (system-name)))))) + (regexp-quote (downcase tramp-system-name)) + (regexp-quote (upcase tramp-system-name))))) "List of hosts, which run a restricted shell. This is a list of regular expressions, which denote hosts running a restricted shell like \"rbash\". Those hosts can be used as @@ -485,7 +491,7 @@ tramp-local-host-regexp (concat "\\`" (regexp-opt - (list "localhost" "localhost6" (system-name) "127.0.0.1" "::1") t) + (list "localhost" "localhost6" tramp-system-name "127.0.0.1" "::1") t) "\\'") "Host names which are regarded as local host. If the local host runs a chrooted environment, set this to nil."