unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#22091: [PATCH 1/2] * lisp/env.el: Add (whereis-command)
@ 2015-12-04  6:25 lu4nx
  2015-12-04  6:25 ` bug#22091: [PATCH 2/2] * lisp/net/net-utils.el: (ifconfig) function support `ip` command lu4nx
  2015-12-04  8:03 ` bug#22091: [PATCH 1/2] * lisp/env.el: Add (whereis-command) Glenn Morris
  0 siblings, 2 replies; 5+ messages in thread
From: lu4nx @ 2015-12-04  6:25 UTC (permalink / raw)
  To: 22091; +Cc: lu4nx

---
 lisp/env.el | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/lisp/env.el b/lisp/env.el
index 3966ab1..a16f534 100644
--- a/lisp/env.el
+++ b/lisp/env.el
@@ -218,6 +218,13 @@ in the environment list of the selected frame."
       (message "%s" (if value value "Not set")))
     value))
 
+(defun whereis-command (command)
+  (let ((paths (split-string (getenv "PATH") ":")))
+    (remove-if-not
+     (lambda (path)
+       (file-exists-p (format "%s/%s" path command)))
+     paths)))
+
 (provide 'env)
 
 ;;; env.el ends here
-- 
2.5.0








^ permalink raw reply related	[flat|nested] 5+ messages in thread

* bug#22091: [PATCH 2/2] * lisp/net/net-utils.el: (ifconfig) function support `ip` command.
  2015-12-04  6:25 bug#22091: [PATCH 1/2] * lisp/env.el: Add (whereis-command) lu4nx
@ 2015-12-04  6:25 ` lu4nx
  2015-12-04  8:03 ` bug#22091: [PATCH 1/2] * lisp/env.el: Add (whereis-command) Glenn Morris
  1 sibling, 0 replies; 5+ messages in thread
From: lu4nx @ 2015-12-04  6:25 UTC (permalink / raw)
  To: 22091; +Cc: lu4nx

In some Linux distribution default not found `ifconfig` command, such as CentOS7.

- `ifconfig-program` and `ifconfig-program-options` add support `ip` command.
---
 lisp/net/net-utils.el | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/lisp/net/net-utils.el b/lisp/net/net-utils.el
index c6d40b6..74e832a 100644
--- a/lisp/net/net-utils.el
+++ b/lisp/net/net-utils.el
@@ -87,7 +87,9 @@ These options can be used to limit how many ICMP packets are emitted."
 (defcustom ifconfig-program
   (if (eq system-type 'windows-nt)
       "ipconfig"
-    "ifconfig")
+    (if (whereis-command "ifconfig")
+        "ifconfig"
+      "ip"))
   "Program to print network configuration information."
   :group 'net-utils
   :type  'string)
@@ -97,8 +99,10 @@ These options can be used to limit how many ICMP packets are emitted."
 
 (defcustom ifconfig-program-options
   (list
-   (if (eq system-type 'windows-nt)
-       "/all" "-a"))
+   (cond ((eq system-type 'windows-nt) "/all")
+         ((and (whereis-command "ip")
+               (not (whereis-command "ifconfig"))) "addr")
+         (t "-a")))
   "Options for the ifconfig program."
   :group 'net-utils
   :type  '(repeat string))
-- 
2.5.0






^ permalink raw reply related	[flat|nested] 5+ messages in thread

* bug#22091: [PATCH 1/2] * lisp/env.el: Add (whereis-command)
  2015-12-04  6:25 bug#22091: [PATCH 1/2] * lisp/env.el: Add (whereis-command) lu4nx
  2015-12-04  6:25 ` bug#22091: [PATCH 2/2] * lisp/net/net-utils.el: (ifconfig) function support `ip` command lu4nx
@ 2015-12-04  8:03 ` Glenn Morris
  2015-12-04  8:17   ` bug#22091: �ظ���bug#22091: " lux
  1 sibling, 1 reply; 5+ messages in thread
From: Glenn Morris @ 2015-12-04  8:03 UTC (permalink / raw)
  To: lu4nx; +Cc: 22091

lu4nx wrote:

> +(defun whereis-command (command)
> +  (let ((paths (split-string (getenv "PATH") ":")))
> +    (remove-if-not
> +     (lambda (path)
> +       (file-exists-p (format "%s/%s" path command)))
> +     paths)))

You use a CL function without requiring CL.
But 'executable-find' already exists anyway, so this isn't needed.

Also, you sent 4 or 5 identical copies of each of your mails in rapid
succession (filtered out by list moderation). Please fix your mailer.





^ permalink raw reply	[flat|nested] 5+ messages in thread

* bug#22091: �ظ���bug#22091: [PATCH 1/2] * lisp/env.el: Add (whereis-command)
  2015-12-04  8:03 ` bug#22091: [PATCH 1/2] * lisp/env.el: Add (whereis-command) Glenn Morris
@ 2015-12-04  8:17   ` lux
  2015-12-05  0:53     ` bug#22091: " Glenn Morris
  0 siblings, 1 reply; 5+ messages in thread
From: lux @ 2015-12-04  8:17 UTC (permalink / raw)
  To: Glenn Morris; +Cc: 22091


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.1: Type: text/plain; charset="gb18030", Size: 1835 bytes --]

I'm sorry, his is new patch, thank you Glenn Morris:


diff --git a/lisp/net/net-utils.el b/lisp/net/net-utils.el
index c6d40b6..0a4693f 100644
--- a/lisp/net/net-utils.el
+++ b/lisp/net/net-utils.el
@@ -87,7 +87,9 @@ These options can be used to limit how many ICMP packets are emitted."
 (defcustom ifconfig-program
   (if (eq system-type 'windows-nt)
       "ipconfig"
-    "ifconfig")
+    (if (executable-find "ifconfig")
+        "ifconfig"
+      "ip"))
   "Program to print network configuration information."
   :group 'net-utils
   :type  'string)
@@ -97,8 +99,10 @@ These options can be used to limit how many ICMP packets are emitted."
 
 (defcustom ifconfig-program-options
   (list
-   (if (eq system-type 'windows-nt)
-       "/all" "-a"))
+   (cond ((eq system-type 'windows-nt) "/all")
+         ((and (executable-find "ip")
+               (not (executable-find "ifconfig"))) "addr")
+         (t "-a")))
   "Options for the ifconfig program."
   :group 'net-utils
   :type  '(repeat string))
-- 
2.5.0







------------------ ԭʼÓʼþ ------------------
·¢¼þÈË: "Glenn Morris";<rgm@gnu.org>;
·¢ËÍʱ¼ä: 2015Äê12ÔÂ4ÈÕ(ÐÇÆÚÎå) ÏÂÎç4:03
ÊÕ¼þÈË: "lux"<lx@shellcodes.org>; 
³­ËÍ: "22091"<22091@debbugs.gnu.org>; 
Ö÷Ìâ: bug#22091: [PATCH 1/2] * lisp/env.el: Add (whereis-command)



lu4nx wrote:

> +(defun whereis-command (command)
> +  (let ((paths (split-string (getenv "PATH") ":")))
> +    (remove-if-not
> +     (lambda (path)
> +       (file-exists-p (format "%s/%s" path command)))
> +     paths)))

You use a CL function without requiring CL.
But 'executable-find' already exists anyway, so this isn't needed.

Also, you sent 4 or 5 identical copies of each of your mails in rapid
succession (filtered out by list moderation). Please fix your mailer.

[-- Attachment #1.2: Type: text/html, Size: 3017 bytes --]

[-- Attachment #2: 0001-lisp-net-net-utils.el-ifconfig-function-support-ip.patch --]
[-- Type: application/octet-stream, Size: 1437 bytes --]

From 27b9af13c9662abad4a252b0e28bb5d40ef4e9ea Mon Sep 17 00:00:00 2001
From: lu4nx <lx@shellcodes.org>
Date: Fri, 4 Dec 2015 16:13:31 +0800
Subject: [PATCH] * lisp/net/net-utils.el: (ifconfig) function support `ip`

In some Linux distribution default not found `ifconfig` command, such as CentOS7.

- `ifconfig-program` and `ifconfig-program-options` add support `ip` command.
---
 lisp/net/net-utils.el | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/lisp/net/net-utils.el b/lisp/net/net-utils.el
index c6d40b6..0a4693f 100644
--- a/lisp/net/net-utils.el
+++ b/lisp/net/net-utils.el
@@ -87,7 +87,9 @@ These options can be used to limit how many ICMP packets are emitted."
 (defcustom ifconfig-program
   (if (eq system-type 'windows-nt)
       "ipconfig"
-    "ifconfig")
+    (if (executable-find "ifconfig")
+        "ifconfig"
+      "ip"))
   "Program to print network configuration information."
   :group 'net-utils
   :type  'string)
@@ -97,8 +99,10 @@ These options can be used to limit how many ICMP packets are emitted."
 
 (defcustom ifconfig-program-options
   (list
-   (if (eq system-type 'windows-nt)
-       "/all" "-a"))
+   (cond ((eq system-type 'windows-nt) "/all")
+         ((and (executable-find "ip")
+               (not (executable-find "ifconfig"))) "addr")
+         (t "-a")))
   "Options for the ifconfig program."
   :group 'net-utils
   :type  '(repeat string))
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* bug#22091: [PATCH 1/2] * lisp/env.el: Add (whereis-command)
  2015-12-04  8:17   ` bug#22091: �ظ���bug#22091: " lux
@ 2015-12-05  0:53     ` Glenn Morris
  0 siblings, 0 replies; 5+ messages in thread
From: Glenn Morris @ 2015-12-05  0:53 UTC (permalink / raw)
  To: 22091-done

Version: 25.1

Thanks for the report and the patch(es).
I installed something slightly different into emacs-25, to take care of
a few other related bits at the same time:

--- 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)





^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2015-12-05  0:53 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-12-04  6:25 bug#22091: [PATCH 1/2] * lisp/env.el: Add (whereis-command) lu4nx
2015-12-04  6:25 ` bug#22091: [PATCH 2/2] * lisp/net/net-utils.el: (ifconfig) function support `ip` command lu4nx
2015-12-04  8:03 ` bug#22091: [PATCH 1/2] * lisp/env.el: Add (whereis-command) Glenn Morris
2015-12-04  8:17   ` bug#22091: �ظ���bug#22091: " lux
2015-12-05  0:53     ` bug#22091: " Glenn Morris

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).