summaryrefslogtreecommitdiff
path: root/lisp/net/net-utils.el
diff options
context:
space:
mode:
authorGlenn Morris <rgm@gnu.org>2015-12-04 19:49:07 -0500
committerGlenn Morris <rgm@gnu.org>2015-12-04 19:49:07 -0500
commit156ad50b9146b4b517bcb7908cb75cc3863ba2c4 (patch)
tree86413063b7b63b8c208f432e7b78601862b6a073 /lisp/net/net-utils.el
parent15b050eca91bc1da879acf5fabdc7f7d9c326008 (diff)
downloademacs-156ad50b9146b4b517bcb7908cb75cc3863ba2c4.tar.gz
* lisp/net/net-utils.el: Small improvements.
(net-utils--executable-find-sbin): New function. (ifconfig-program): Check sbin directories. Fallback to "ip". (Bug#22091) (ifconfig-program-options): Check the actual program in use. (arp-program): Check sbin directories.
Diffstat (limited to 'lisp/net/net-utils.el')
-rw-r--r--lisp/net/net-utils.el35
1 files changed, 22 insertions, 13 deletions
diff --git a/lisp/net/net-utils.el b/lisp/net/net-utils.el
index c6d40b62415..c43d48e514c 100644
--- a/lisp/net/net-utils.el
+++ b/lisp/net/net-utils.el
@@ -35,15 +35,19 @@
;; * Support connections to HOST/PORT, generally for debugging and the like.
;; In other words, for doing much the same thing as "telnet HOST PORT", and
;; then typing commands.
-;;
-;; PATHS
-;;
-;; On some systems, some of these programs are not in normal user path,
-;; but rather in /sbin, /usr/sbin, and so on.
-
;;; Code:
+;; On some systems, programs like ifconfig are not in normal user
+;; path, but rather in /sbin, /usr/sbin, etc (but non-root users can
+;; still use them for queries). Actually the trend these
+;; day is for /sbin to be a symlink to /usr/sbin, but we still need to
+;; search both for older systems.
+(defun net-utils--executable-find-sbin (command)
+ "Return absolute name of COMMAND if found in an sbin directory."
+ (let ((exec-path '("/sbin" "/usr/sbin" "/usr/local/sbin")))
+ (executable-find command)))
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Customization Variables
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -85,10 +89,13 @@ These options can be used to limit how many ICMP packets are emitted."
(define-obsolete-variable-alias 'ipconfig-program 'ifconfig-program "22.2")
(defcustom ifconfig-program
- (if (eq system-type 'windows-nt)
- "ipconfig"
- "ifconfig")
+ (cond ((eq system-type 'windows-nt) "ipconfig")
+ ((executable-find "ifconfig") "ifconfig")
+ ((net-utils--executable-find-sbin "ifconfig"))
+ ((net-utils--executable-find-sbin "ip"))
+ (t "ip"))
"Program to print network configuration information."
+ :version "25.1" ; add ip
:group 'net-utils
:type 'string)
@@ -96,10 +103,12 @@ These options can be used to limit how many ICMP packets are emitted."
'ifconfig-program-options "22.2")
(defcustom ifconfig-program-options
- (list
- (if (eq system-type 'windows-nt)
- "/all" "-a"))
+ (cond ((string-match "ipconfig\\'" ifconfig-program) '("/all"))
+ ((string-match "ifconfig\\'" ifconfig-program) '("-a"))
+ ((string-match "ip\\'" ifconfig-program) '("addr")))
"Options for the ifconfig program."
+ :version "25.1"
+ :set-after '(ifconfig-program)
:group 'net-utils
:type '(repeat string))
@@ -126,7 +135,7 @@ These options can be used to limit how many ICMP packets are emitted."
:group 'net-utils
:type '(repeat string))
-(defcustom arp-program "arp"
+(defcustom arp-program (or (net-utils--executable-find-sbin "arp") "arp")
"Program to print IP to address translation tables."
:group 'net-utils
:type 'string)