emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: improving network utility calls in lisp/net/net-utils.el


From: Yoni Rabkin
Subject: Re: improving network utility calls in lisp/net/net-utils.el
Date: Sat, 08 Aug 2009 11:05:09 +0300
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1.50 (gnu/linux)

Chong Yidong <address@hidden> writes:

> Yoni Rabkin <address@hidden> writes:
>
>> Does anyone have time to install this?
>
> Terribly sorry for the delay, I haven't had time to review your patch
> till just now.

No problem at all. Thank you for maintaining Emacs.

> Once you make these changes, just send me the revised patch with a
> ChangeLog entry, and I'll install it.  Thanks for your patience.

lisp/ChangeLog entry:

2009-08-08 Chong Yidong <address@hidden>

        * net/net-utils.el: Add a read-only mode for viewing,
        font-locking and burying diagnostic network commands.
        (nslookup-font-lock-keywords): Change to defvar.
        (net-utils-font-lock-keywords): New var.
        (net-utils-mode): New mode for viewing diagnostic networkd
        command output.
        (net-utils-remove-ctrl-m-filter): inhibit-read-only <= t.
        (net-utils-run-simple): New function.
        (ifconfig, iwconfig, netstat, arp, route): Use
        net-utils-run-simple.
        Patch by Yoni Rabkin <address@hidden>.

*** net-utils.el.~1.37.~        2009-08-04 18:23:44.000000000 +0300
--- net-utils.el        2009-08-08 10:32:54.000000000 +0300
***************
*** 237,243 ****
  ;; Nslookup goodies
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  
! (defconst nslookup-font-lock-keywords
    (list
     (list "^[A-Za-z0-9 _]+:" 0 'font-lock-type-face)
     (list "\\<\\(SOA\\|NS\\|MX\\|A\\|CNAME\\)\\>"
--- 237,243 ----
  ;; Nslookup goodies
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  
! (defvar nslookup-font-lock-keywords
    (list
     (list "^[A-Za-z0-9 _]+:" 0 'font-lock-type-face)
     (list "\\<\\(SOA\\|NS\\|MX\\|A\\|CNAME\\)\\>"
***************
*** 260,265 ****
--- 260,296 ----
    "Expressions to font-lock for nslookup.")
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ ;; General network utilities mode
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ 
+ (defvar net-utils-font-lock-keywords
+   (list
+    ;; Dotted quads
+    (list
+     (mapconcat 'identity (make-list 4 "[0-9]+") "\\.")
+     0 'font-lock-variable-name-face)
+    ;; Simple rfc4291 addresses
+    (list (concat
+         "\\( \\([[:xdigit:]]+\\(:\\|::\\)\\)+[[:xdigit:]]+\\)"
+         "\\|"
+         "\\(::[[:xdigit:]]+\\)")
+     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 general network utilities.")
+ 
+ (define-derived-mode net-utils-mode special-mode "NetworkUtil"
+   "Major mode for interacting with an external network utility."
+   (set
+    (make-local-variable 'font-lock-defaults)
+    '((net-utils-font-lock-keywords))))
+ 
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;; Utility functions
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  
***************
*** 288,294 ****
         (skip-chars-backward ":;.,!?" pt)
         (point)))))
  
- 
  (defun net-utils-remove-ctrl-m-filter (process output-string)
    "Remove trailing control Ms."
    (let ((old-buffer (current-buffer))
--- 319,324 ----
***************
*** 296,312 ****
      (unwind-protect
        (let ((moving))
          (set-buffer (process-buffer process))
!         (setq moving (= (point) (process-mark process)))
  
!         (while (string-match "\r" filtered-string)
!              (setq filtered-string
!                    (replace-match "" nil nil filtered-string)))
! 
!         (save-excursion
!           ;; Insert the text, moving the process-marker.
!           (goto-char (process-mark process))
!           (insert filtered-string)
!           (set-marker (process-mark process) (point)))
          (if moving (goto-char (process-mark process))))
        (set-buffer old-buffer))))
  
--- 326,343 ----
      (unwind-protect
        (let ((moving))
          (set-buffer (process-buffer process))
!         (let ((inhibit-read-only t))
!           (setq moving (= (point) (process-mark process)))
  
!           (while (string-match "\r" filtered-string)
!             (setq filtered-string
!                   (replace-match "" nil nil filtered-string)))
! 
!           (save-excursion
!             ;; Insert the text, moving the process-marker.
!             (goto-char (process-mark process))
!             (insert filtered-string)
!             (set-marker (process-mark process) (point))))
          (if moving (goto-char (process-mark process))))
        (set-buffer old-buffer))))
  
***************
*** 323,328 ****
--- 354,425 ----
      buf))
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ ;; General network utilities (diagnostic)
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ 
+ (defun net-utils-run-simple (buffer-name program-name args)
+   "Run a network utility for diagnostic output only."
+   (interactive)
+   (when (get-buffer buffer-name)
+     (kill-buffer buffer-name))
+   (get-buffer-create buffer-name)
+   (with-current-buffer buffer-name
+     (net-utils-mode)
+     (set-process-filter
+      (apply 'start-process (format "%s" program-name)
+           buffer-name program-name args)
+      'net-utils-remove-ctrl-m-filter)
+     (goto-char (point-min)))
+   (display-buffer buffer-name))
+ 
+ ;;;###autoload
+ (defun ifconfig () 
+   "Run ifconfig and display diagnostic output." 
+   (interactive) 
+   (net-utils-run-simple 
+    (format "*%s*" ifconfig-program) 
+    ifconfig-program 
+    ifconfig-program-options))
+ 
+ (defalias 'ipconfig 'ifconfig)
+ 
+ ;;;###autoload
+ (defun iwconfig () 
+   "Run iwconfig and display diagnostic output." 
+   (interactive) 
+   (net-utils-run-simple 
+    (format "*%s*" iwconfig-program) 
+    iwconfig-program 
+    iwconfig-program-options))
+ 
+ ;;;###autoload
+ (defun netstat ()
+   "Run netstat and display diagnostic output." 
+   (interactive)
+   (net-utils-run-simple
+    (format "*%s*" netstat-program)
+    netstat-program
+    netstat-program-options))
+ 
+ ;;;###autoload
+ (defun arp ()
+   "Run arp and display diagnostic output." 
+   (interactive)
+   (net-utils-run-simple
+    (format "*%s*" arp-program)
+    arp-program
+    arp-program-options))
+ 
+ ;;;###autoload
+ (defun route ()
+   "Run route and display diagnostic output."
+   (interactive)
+   (net-utils-run-simple
+    (format "*%s*" route-program)
+    route-program
+    route-program-options))
+ 
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;; Wrappers for external network programs
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  
***************
*** 357,416 ****
       ping-program
       options)))
  
- ;;;###autoload
- (defun ifconfig ()
-   "Run ifconfig program."
-   (interactive)
-   (net-utils-run-program
-    "Ifconfig"
-    (concat "** Ifconfig ** " ifconfig-program " ** ")
-    ifconfig-program
-    ifconfig-program-options))
- 
- ;; Windows uses this name.
- ;;;###autoload
- (defalias 'ipconfig 'ifconfig)
- 
- ;;;###autoload
- (defun iwconfig ()
-   "Run iwconfig program."
-   (interactive)
-   (net-utils-run-program
-    "Iwconfig"
-    (concat "** Iwconfig ** " iwconfig-program " ** ")
-    iwconfig-program
-    iwconfig-program-options))
- 
- ;;;###autoload
- (defun netstat ()
-   "Run netstat program."
-   (interactive)
-   (net-utils-run-program
-    "Netstat"
-    (concat "** Netstat ** " netstat-program " ** ")
-    netstat-program
-    netstat-program-options))
- 
- ;;;###autoload
- (defun arp ()
-   "Run arp program."
-   (interactive)
-   (net-utils-run-program
-    "Arp"
-    (concat "** Arp ** " arp-program " ** ")
-    arp-program
-    arp-program-options))
- 
- ;;;###autoload
- (defun route ()
-   "Run route program."
-   (interactive)
-   (net-utils-run-program
-    "Route"
-    (concat "** Route ** " route-program " ** ")
-    route-program
-    route-program-options))
- 
  ;; FIXME -- Needs to be a process filter
  ;; (defun netstat-with-filter (filter)
  ;;   "Run netstat program."
--- 454,459 ----
-- 
   "Cut your own wood and it will warm you twice"

reply via email to

[Prev in Thread] Current Thread [Next in Thread]