]> code.delx.au - gnu-emacs/blobdiff - lisp/net/net-utils.el
Merge from emacs--rel--22
[gnu-emacs] / lisp / net / net-utils.el
index 581a070134d5101e02f9c007bacf7af52d8a622b..cdd77dead43b41fe19c573499a707febb8935b83 100644 (file)
@@ -1,6 +1,7 @@
 ;;; net-utils.el --- network functions
 
 ;;; net-utils.el --- network functions
 
-;; Copyright (C) 1998, 1999, 2000, 2001  Free Software Foundation, Inc.
+;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+;;   2005, 2006, 2007, 2008 Free Software Foundation, Inc.
 
 ;; Author:  Peter Breton <pbreton@cs.umb.edu>
 ;; Created: Sun Mar 16 1997
 
 ;; Author:  Peter Breton <pbreton@cs.umb.edu>
 ;; Created: Sun Mar 16 1997
@@ -8,10 +9,10 @@
 
 ;; This file is part of GNU Emacs.
 
 
 ;; This file is part of GNU Emacs.
 
-;; GNU Emacs is free software; you can redistribute it and/or modify
+;; GNU Emacs is free software: you can redistribute it and/or modify
 ;; it under the terms of the GNU General Public License as published by
 ;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 2, or (at your option)
-;; any later version.
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
 
 ;; GNU Emacs is distributed in the hope that it will be useful,
 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
 
 ;; GNU Emacs is distributed in the hope that it will be useful,
 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -19,9 +20,7 @@
 ;; GNU General Public License for more details.
 
 ;; You should have received a copy of the GNU General Public License
 ;; GNU General Public License for more details.
 
 ;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
 
 ;;; Commentary:
 
 
 ;;; Commentary:
 
@@ -45,8 +44,6 @@
 
 
 ;;; Code:
 
 
 ;;; Code:
-(eval-when-compile
-  (require 'comint))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Customization Variables
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Customization Variables
@@ -92,7 +89,9 @@ These options can be used to limit how many ICMP packets are emitted."
   :group 'net-utils
   :type  '(repeat string))
 
   :group 'net-utils
   :type  '(repeat string))
 
-(defcustom ipconfig-program
+(define-obsolete-variable-alias 'ipconfig-program 'ifconfig-program "22.2")
+
+(defcustom ifconfig-program
   (if (eq system-type 'windows-nt)
       "ipconfig"
     "ifconfig")
   (if (eq system-type 'windows-nt)
       "ipconfig"
     "ifconfig")
@@ -100,33 +99,48 @@ These options can be used to limit how many ICMP packets are emitted."
   :group 'net-utils
   :type  'string)
 
   :group 'net-utils
   :type  'string)
 
-(defcustom ipconfig-program-options
+(defcustom ifconfig-program-options
   (list
    (if (eq system-type 'windows-nt)
        "/all" "-a"))
   (list
    (if (eq system-type 'windows-nt)
        "/all" "-a"))
-  "Options for ipconfig-program."
+  "Options for the ifconfig program."
   :group 'net-utils
   :type  '(repeat string))
 
   :group 'net-utils
   :type  '(repeat string))
 
-(defcustom netstat-program  "netstat"
+(defcustom iwconfig-program "iwconfig"
+  "Program to print wireless network configuration information."
+  :group 'net-utils
+  :type 'string
+  :version "23.1")
+
+(define-obsolete-variable-alias 'ipconfig-program-options
+  'ifconfig-program-options "22.2")
+
+(defcustom iwconfig-program-options nil
+ "Options for the iwconfig program."
+ :group 'net-utils
+ :type '(repeat string)
+ :version "23.1")
+
+(defcustom netstat-program "netstat"
   "Program to print network statistics."
   :group 'net-utils
   :type  'string)
 
 (defcustom netstat-program-options
   (list "-a")
   "Program to print network statistics."
   :group 'net-utils
   :type  'string)
 
 (defcustom netstat-program-options
   (list "-a")
-  "Options for netstat-program."
+  "Options for the netstat program."
   :group 'net-utils
   :type  '(repeat string))
 
   :group 'net-utils
   :type  '(repeat string))
 
-(defcustom arp-program  "arp"
+(defcustom arp-program "arp"
   "Program to print IP to address translation tables."
   :group 'net-utils
   :type  'string)
 
 (defcustom arp-program-options
   (list "-a")
   "Program to print IP to address translation tables."
   :group 'net-utils
   :type  'string)
 
 (defcustom arp-program-options
   (list "-a")
-  "Options for arp-program."
+  "Options for the arp program."
   :group 'net-utils
   :type  '(repeat string))
 
   :group 'net-utils
   :type  '(repeat string))
 
@@ -142,17 +156,17 @@ These options can be used to limit how many ICMP packets are emitted."
   (if (eq system-type 'windows-nt)
       (list "print")
     (list "-r"))
   (if (eq system-type 'windows-nt)
       (list "print")
     (list "-r"))
-  "Options for route-program."
+  "Options for the route program."
   :group 'net-utils
   :type  '(repeat string))
 
   :group 'net-utils
   :type  '(repeat string))
 
-(defcustom nslookup-program  "nslookup"
+(defcustom nslookup-program "nslookup"
   "Program to interactively query DNS information."
   :group 'net-utils
   :type  'string)
 
   "Program to interactively query DNS information."
   :group 'net-utils
   :type  'string)
 
-(defcustom nslookup-program-options  nil
-  "List of options to pass to the nslookup program."
+(defcustom nslookup-program-options nil
+  "Options for the nslookup program."
   :group 'net-utils
   :type  '(repeat string))
 
   :group 'net-utils
   :type  '(repeat string))
 
@@ -160,22 +174,22 @@ These options can be used to limit how many ICMP packets are emitted."
   "Regexp to match the nslookup prompt.
 
 This variable is only used if the variable
   "Regexp to match the nslookup prompt.
 
 This variable is only used if the variable
-`comint-use-prompt-regexp-instead-of-fields' is non-nil."
+`comint-use-prompt-regexp' is non-nil."
   :group 'net-utils
   :type  'regexp)
 
   :group 'net-utils
   :type  'regexp)
 
-(defcustom dig-program  "dig"
+(defcustom dig-program "dig"
   "Program to query DNS information."
   :group 'net-utils
   :type  'string)
 
 (defcustom ftp-program "ftp"
   "Program to query DNS information."
   :group 'net-utils
   :type  'string)
 
 (defcustom ftp-program "ftp"
-  "Progam to run to do FTP transfers."
+  "Program to run to do FTP transfers."
   :group 'net-utils
   :type  'string)
 
 (defcustom ftp-program-options nil
   :group 'net-utils
   :type  'string)
 
 (defcustom ftp-program-options nil
-  "List of options to pass to the FTP program."
+  "Options for the ftp program."
   :group 'net-utils
   :type  '(repeat string))
 
   :group 'net-utils
   :type  '(repeat string))
 
@@ -183,7 +197,7 @@ This variable is only used if the variable
   "Regexp which matches the FTP program's prompt.
 
 This variable is only used if the variable
   "Regexp which matches the FTP program's prompt.
 
 This variable is only used if the variable
-`comint-use-prompt-regexp-instead-of-fields' is non-nil."
+`comint-use-prompt-regexp' is non-nil."
   :group 'net-utils
   :type  'regexp)
 
   :group 'net-utils
   :type  'regexp)
 
@@ -193,7 +207,7 @@ This variable is only used if the variable
   :type  'string)
 
 (defcustom smbclient-program-options nil
   :type  'string)
 
 (defcustom smbclient-program-options nil
-  "List of options to pass to the smbclient program."
+  "Options for the smbclient program."
   :group 'net-utils
   :type  '(repeat string))
 
   :group 'net-utils
   :type  '(repeat string))
 
@@ -201,21 +215,19 @@ This variable is only used if the variable
   "Regexp which matches the smbclient program's prompt.
 
 This variable is only used if the variable
   "Regexp which matches the smbclient program's prompt.
 
 This variable is only used if the variable
-`comint-use-prompt-regexp-instead-of-fields' is non-nil."
+`comint-use-prompt-regexp' is non-nil."
   :group 'net-utils
   :type  'regexp)
 
   :group 'net-utils
   :type  'regexp)
 
-(defcustom dns-lookup-program  "host"
+(defcustom dns-lookup-program "host"
   "Program to interactively query DNS information."
   :group 'net-utils
   "Program to interactively query DNS information."
   :group 'net-utils
-  :type  'string
-  )
+  :type  'string)
 
 
-(defcustom dns-lookup-program-options  nil
-  "List of options to pass to the dns-lookup program."
+(defcustom dns-lookup-program-options nil
+  "Options for the dns-lookup program."
   :group 'net-utils
   :group 'net-utils
-  :type  '(repeat string)
-  )
+  :type  '(repeat string))
 
 ;; Internal variables
 (defvar network-connection-service nil)
 
 ;; Internal variables
 (defvar network-connection-service nil)
@@ -226,30 +238,25 @@ This variable is only used if the variable
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 (defconst nslookup-font-lock-keywords
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 (defconst nslookup-font-lock-keywords
-  (progn
-    (defvar font-lock-type-face)
-    (defvar font-lock-keyword-face)
-    (defvar font-lock-variable-name-face)
-    (require 'font-lock)
-    (list
-     (list "^[A-Za-z0-9 _]+:"     0 font-lock-type-face)
-     (list "\\<\\(SOA\\|NS\\|MX\\|A\\|CNAME\\)\\>"
-          1 font-lock-keyword-face)
-     ;; Dotted quads
-     (list
-      (mapconcat 'identity
-                (make-list 4 "[0-9]+")
-                "\\.")
-      0 font-lock-variable-name-face)
-     ;; Host names
-     (list
-      (let ((host-expression "[-A-Za-z0-9]+"))
-       (concat
-        (mapconcat 'identity
-                   (make-list 2 host-expression)
-                   "\\.")
-        "\\(\\." host-expression "\\)*"))
-      0 font-lock-variable-name-face)))
+  (list
+   (list "^[A-Za-z0-9 _]+:" 0 'font-lock-type-face)
+   (list "\\<\\(SOA\\|NS\\|MX\\|A\\|CNAME\\)\\>"
+         1 'font-lock-keyword-face)
+   ;; Dotted quads
+   (list
+    (mapconcat 'identity
+               (make-list 4 "[0-9]+")
+               "\\.")
+    0 'font-lock-variable-name-face)
+   ;; Host names
+   (list
+    (let ((host-expression "[-A-Za-z0-9]+"))
+      (concat
+       (mapconcat 'identity
+                  (make-list 2 host-expression)
+                  "\\.")
+       "\\(\\." host-expression "\\)*"))
+    0 'font-lock-variable-name-face))
   "Expressions to font-lock for nslookup.")
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   "Expressions to font-lock for nslookup.")
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -303,17 +310,17 @@ This variable is only used if the variable
          (if moving (goto-char (process-mark process))))
       (set-buffer old-buffer))))
 
          (if moving (goto-char (process-mark process))))
       (set-buffer old-buffer))))
 
-(defmacro net-utils-run-program (name header program &rest args)
+(defun net-utils-run-program (name header program args)
   "Run a network information program."
   "Run a network information program."
-  ` (let ((buf (get-buffer-create (concat "*" ,name "*"))))
-      (set-buffer buf)
-      (erase-buffer)
-      (insert ,header "\n")
-      (set-process-filter
-       (apply 'start-process ,name buf ,program ,@args)
-       'net-utils-remove-ctrl-m-filter)
-      (display-buffer buf)
-      buf))
+  (let ((buf (get-buffer-create (concat "*" name "*"))))
+    (set-buffer buf)
+    (erase-buffer)
+    (insert header "\n")
+    (set-process-filter
+     (apply 'start-process name buf program args)
+     'net-utils-remove-ctrl-m-filter)
+    (display-buffer buf)
+    buf))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Wrappers for external network programs
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Wrappers for external network programs
@@ -351,18 +358,28 @@ If your system's ping continues until interrupted, you can try setting
      options)))
 
 ;;;###autoload
      options)))
 
 ;;;###autoload
-(defun ipconfig ()
-  "Run ipconfig program."
+(defun ifconfig ()
+  "Run ifconfig program."
   (interactive)
   (net-utils-run-program
   (interactive)
   (net-utils-run-program
-   "Ipconfig"
-   (concat "** Ipconfig ** " ipconfig-program " ** ")
-   ipconfig-program
-   ipconfig-program-options))
+   "Ifconfig"
+   (concat "** Ifconfig ** " ifconfig-program " ** ")
+   ifconfig-program
+   ifconfig-program-options))
+
+;; Windows uses this name.
+;;;###autoload
+(defalias 'ipconfig 'ifconfig)
 
 
-;; This is the normal name on most Unixes.
 ;;;###autoload
 ;;;###autoload
-(defalias 'ifconfig 'ipconfig)
+(defun iwconfig ()
+  "Run iwconfig program."
+  (interactive)
+  (net-utils-run-program
+   "Iwconfig"
+   (concat "** Iwconfig ** " iwconfig-program " ** ")
+   iwconfig-program
+   iwconfig-program-options))
 
 ;;;###autoload
 (defun netstat ()
 
 ;;;###autoload
 (defun netstat ()
@@ -376,7 +393,7 @@ If your system's ping continues until interrupted, you can try setting
 
 ;;;###autoload
 (defun arp ()
 
 ;;;###autoload
 (defun arp ()
-  "Run the arp program."
+  "Run arp program."
   (interactive)
   (net-utils-run-program
    "Arp"
   (interactive)
   (net-utils-run-program
    "Arp"
@@ -386,7 +403,7 @@ If your system's ping continues until interrupted, you can try setting
 
 ;;;###autoload
 (defun route ()
 
 ;;;###autoload
 (defun route ()
-  "Run the route program."
+  "Run route program."
   (interactive)
   (net-utils-run-program
    "Route"
   (interactive)
   (net-utils-run-program
    "Route"
@@ -425,10 +442,14 @@ If your system's ping continues until interrupted, you can try setting
 (defun nslookup ()
   "Run nslookup program."
   (interactive)
 (defun nslookup ()
   "Run nslookup program."
   (interactive)
-  (require 'comint)
   (comint-run nslookup-program)
   (nslookup-mode))
 
   (comint-run nslookup-program)
   (nslookup-mode))
 
+(defvar comint-prompt-regexp)
+(defvar comint-input-autoexpand)
+
+(autoload 'comint-mode "comint" nil t)
+
 ;; Using a derived mode gives us keymaps, hooks, etc.
 (define-derived-mode nslookup-mode comint-mode "Nslookup"
   "Major mode for interacting with the nslookup program."
 ;; Using a derived mode gives us keymaps, hooks, etc.
 (define-derived-mode nslookup-mode comint-mode "Nslookup"
   "Major mode for interacting with the nslookup program."
@@ -456,19 +477,17 @@ If your system's ping continues until interrupted, you can try setting
                (list "DNS Lookup" host dns-lookup-program)
                " ** "))
      dns-lookup-program
                (list "DNS Lookup" host dns-lookup-program)
                " ** "))
      dns-lookup-program
-     options
-     )))
+     options)))
+
+(autoload 'ffap-string-at-point "ffap")
 
 ;;;###autoload
 
 ;;;###autoload
-(defun dig (host)
+(defun run-dig (host)
   "Run dig program."
   (interactive
    (list
   "Run dig program."
   (interactive
    (list
-    (progn
-      (require 'ffap)
-      (read-from-minibuffer
-       "Lookup host: "
-       (or (ffap-string-at-point 'machine) "")))))
+    (read-from-minibuffer "Lookup host: "
+                          (or (ffap-string-at-point 'machine) ""))))
   (net-utils-run-program
    "Dig"
    (concat "** "
   (net-utils-run-program
    "Dig"
    (concat "** "
@@ -478,6 +497,8 @@ If your system's ping continues until interrupted, you can try setting
    dig-program
    (list host)))
 
    dig-program
    (list host)))
 
+(autoload 'comint-exec "comint")
+
 ;; This is a lot less than ange-ftp, but much simpler.
 ;;;###autoload
 (defun ftp (host)
 ;; This is a lot less than ange-ftp, but much simpler.
 ;;;###autoload
 (defun ftp (host)
@@ -486,7 +507,6 @@ If your system's ping continues until interrupted, you can try setting
    (list
     (read-from-minibuffer
      "Ftp to Host: " (net-utils-machine-at-point))))
    (list
     (read-from-minibuffer
      "Ftp to Host: " (net-utils-machine-at-point))))
-  (require 'comint)
   (let ((buf (get-buffer-create (concat "*ftp [" host "]*"))))
     (set-buffer buf)
     (ftp-mode)
   (let ((buf (get-buffer-create (concat "*ftp [" host "]*"))))
     (set-buffer buf)
     (ftp-mode)
@@ -521,7 +541,6 @@ If your system's ping continues until interrupted, you can try setting
     (read-from-minibuffer
      "Connect to Host: " (net-utils-machine-at-point))
     (read-from-minibuffer "SMB Service: ")))
     (read-from-minibuffer
      "Connect to Host: " (net-utils-machine-at-point))
     (read-from-minibuffer "SMB Service: ")))
-  (require 'comint)
   (let* ((name (format "smbclient [%s\\%s]" host service))
         (buf (get-buffer-create (concat "*" name "*")))
         (service-name (concat "\\\\" host "\\" service)))
   (let* ((name (format "smbclient [%s\\%s]" host service))
         (buf (get-buffer-create (concat "*" name "*")))
         (service-name (concat "\\\\" host "\\" service)))
@@ -595,27 +614,22 @@ If your system's ping continues until interrupted, you can try setting
   "Alist of services and associated TCP port numbers.
 This list is not complete.")
 
   "Alist of services and associated TCP port numbers.
 This list is not complete.")
 
-;; Workhorse macro
-(defmacro run-network-program (process-name host port
-                                           &optional initial-string)
-  `(let ((tcp-connection)
-        (buf))
-    (setq buf (get-buffer-create (concat "*" ,process-name "*")))
+;; Workhorse routine
+(defun run-network-program (process-name host port &optional initial-string)
+  (let ((tcp-connection)
+       (buf))
+    (setq buf (get-buffer-create (concat "*" process-name "*")))
     (set-buffer buf)
     (or
      (setq tcp-connection
     (set-buffer buf)
     (or
      (setq tcp-connection
-          (open-network-stream
-           ,process-name
-           buf
-           ,host
-           ,port))
-     (error "Could not open connection to %s" ,host))
+          (open-network-stream process-name buf host port))
+     (error "Could not open connection to %s" host))
     (erase-buffer)
     (set-marker (process-mark tcp-connection) (point-min))
     (set-process-filter tcp-connection 'net-utils-remove-ctrl-m-filter)
     (erase-buffer)
     (set-marker (process-mark tcp-connection) (point-min))
     (set-process-filter tcp-connection 'net-utils-remove-ctrl-m-filter)
-    (and ,initial-string
+    (and initial-string
         (process-send-string tcp-connection
         (process-send-string tcp-connection
-                             (concat ,initial-string "\r\n")))
+                             (concat initial-string "\r\n")))
     (display-buffer buf)))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
     (display-buffer buf)))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -672,6 +686,7 @@ queries of the form USER@HOST, and wants a query containing USER only."
 (defcustom whois-server-list
   '(("whois.arin.net")     ; Networks, ASN's, and related POC's (numbers)
     ("rs.internic.net")  ; domain related info
 (defcustom whois-server-list
   '(("whois.arin.net")     ; Networks, ASN's, and related POC's (numbers)
     ("rs.internic.net")  ; domain related info
+    ("whois.publicinterestregistry.net")
     ("whois.abuse.net")
     ("whois.apnic.net")
     ("nic.ddn.mil")
     ("whois.abuse.net")
     ("whois.apnic.net")
     ("nic.ddn.mil")
@@ -682,9 +697,12 @@ queries of the form USER@HOST, and wants a query containing USER only."
   :group 'net-utils
   :type '(repeat (list string)))
 
   :group 'net-utils
   :type '(repeat (list string)))
 
+;; FIXME: modern whois clients include a much better tld <-> whois server
+;; list, Emacs should probably avoid specifying the server as the client
+;; will DTRT anyway... -rfr
 (defcustom whois-server-tld
   '(("rs.internic.net" . "com")
 (defcustom whois-server-tld
   '(("rs.internic.net" . "com")
-    ("rs.internic.net" . "org")
+    ("whois.publicinterestregistry.net" . "org")
     ("whois.ripe.net" . "be")
     ("whois.ripe.net" . "de")
     ("whois.ripe.net" . "dk")
     ("whois.ripe.net" . "be")
     ("whois.ripe.net" . "de")
     ("whois.ripe.net" . "dk")
@@ -705,7 +723,7 @@ queries of the form USER@HOST, and wants a query containing USER only."
 (defcustom whois-guess-server t
   "If non-nil then whois will try to deduce the appropriate whois
 server from the query.  If the query doesn't look like a domain or hostname
 (defcustom whois-guess-server t
   "If non-nil then whois will try to deduce the appropriate whois
 server from the query.  If the query doesn't look like a domain or hostname
-then the server named by whois-server-name is used."
+then the server named by `whois-server-name' is used."
   :group 'net-utils
   :type 'boolean)
 
   :group 'net-utils
   :type 'boolean)
 
@@ -794,7 +812,6 @@ from SEARCH-STRING.  With argument, prompt for whois server."
 
 (defun network-service-connection (host service)
   "Open a network connection to SERVICE on HOST."
 
 (defun network-service-connection (host service)
   "Open a network connection to SERVICE on HOST."
-  (require 'comint)
   (let* ((process-name (concat "Network Connection [" host " " service "]"))
         (portnum (string-to-number service))
         (buf (get-buffer-create (concat "*" process-name "*"))))
   (let* ((process-name (concat "Network Connection [" host " " service "]"))
         (portnum (string-to-number service))
         (buf (get-buffer-create (concat "*" process-name "*"))))
@@ -807,6 +824,8 @@ from SEARCH-STRING.  With argument, prompt for whois server."
     (network-connection-mode-setup host service)
     (pop-to-buffer buf)))
 
     (network-connection-mode-setup host service)
     (pop-to-buffer buf)))
 
+(defvar comint-input-ring)
+
 (defun network-connection-reconnect  ()
   "Reconnect a network connection, preserving the old input ring."
   (interactive)
 (defun network-connection-reconnect  ()
   "Reconnect a network connection, preserving the old input ring."
   (interactive)
@@ -828,5 +847,5 @@ from SEARCH-STRING.  With argument, prompt for whois server."
 
 (provide 'net-utils)
 
 
 (provide 'net-utils)
 
-;;; arch-tag: 97119e91-9edb-4376-838b-bf7058fa1314
+;; arch-tag: 97119e91-9edb-4376-838b-bf7058fa1314
 ;;; net-utils.el ends here
 ;;; net-utils.el ends here