]> git.eshelyaron.com Git - emacs.git/commitdiff
Allow giving "ping" flags with `C-u M-x ping`
authorTomas Fabrizio Orsi <torsi@fi.uba.ar>
Sat, 8 Jun 2024 15:11:18 +0000 (12:11 -0300)
committerEshel Yaron <me@eshelyaron.com>
Fri, 21 Jun 2024 19:01:10 +0000 (21:01 +0200)
* lisp/net/net-utils.el (ping): With a prefix argument, prompt the user
for flags to pass to the "ping" command.  (Bug#71438)
* etc/NEWS: Document the above change.

Copyright-paperwork-exempt: yes
(cherry picked from commit 72f2b01e318054e2e040f7de676e9c4919533161)

etc/NEWS
lisp/net/net-utils.el

index 88e03202db8a7cec1339e944c0b0a2b5de2e3a57..9b7d8447d8712ca3f43a667b1a1138a0b3101c4e 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -2054,6 +2054,11 @@ The following new XML schemas are now supported:
 
 ** color.el now supports the Oklab color representation.
 
+---
+** 'M-x ping' can now give "ping" additional flags.
+Typing 'C-u M-x ping' prompts first for the host, and then for the flags
+to give to "ping".
+
 \f
 * New Modes and Packages in Emacs 30.1
 
index 83842cd6788e2aea444ee91c3632bf6ca32fa1a5..fe68054af3ed45b2b89eeb563d3955fe1d611a83 100644 (file)
@@ -425,22 +425,35 @@ This variable is only used if the variable
      options)))
 
 ;;;###autoload
-(defun ping (host)
-  "Ping HOST.
-If your system's ping continues until interrupted, you can try setting
-`ping-program-options'."
+(defun ping (host &optional flags)
+  "Ping HOST using `ping-program'.
+
+The user option `ping-program-options' is passed as flags to
+`ping-program'.  With a \\[universal-argument] prefix arg, prompt the
+user for the flags to pass.
+
+When called from Lisp, the optional argument FLAGS, if non-nil, is a
+list of strings that will be passed as flags for the `ping-program'.  If
+FLAGS is nil, `ping-program-options' will be used.
+
+If your system's ping continues until interrupted, you can try using a
+prefix argument or setting `ping-program-options'."
   (interactive
    (list (let ((default (ffap-machine-at-point)))
-           (read-string (format-prompt "Ping host" default) nil nil default))))
-  (let ((options
-        (if ping-program-options
+           (read-string (format-prompt "Ping host" default) nil nil default))
+         (when current-prefix-arg
+           (split-string
+            (read-string (format-prompt "Ping options" ping-program-options)
+                         nil nil ping-program-options)))))
+  (let ((full-command
+        (if (or (equal flags (list "")) (not flags))
             (append ping-program-options (list host))
-          (list host))))
+          (append flags (list host)))))
     (net-utils-run-program
      (concat "Ping" " " host)
      (concat "** Ping ** " ping-program " ** " host)
      ping-program
-     options)))
+     full-command)))
 
 ;;;###autoload
 (defun nslookup-host (host &optional name-server)