annotate lisp/net/dig.el @ 98007:883843ca3292

* verilog-mode.el (verilog-library-extensions): Enable .sv filename extensions to call verilog-mode. (verilog-auto, verilog-auto-inst, verilog-faq) (verilog-submit-bug-report): Update author support URLs. (verilog-delete-auto, verilog-auto-inout-module) (verilog-auto-inout-comp, verilog-auto): Add AUTOINOUTCOMP for creating complemented testbench modules. Suggested by Yishay Belkind. (verilog-auto-inst-port, verilog-simplify-range-expression): When verilog-auto-inst-param-value is set, don't require a AUTO_TEMPLATE to expand parameter substitutions. Suggested by Yishay Belkind. (verilog-auto-inst-param-value): Add safe variable. (verilog-re-search-forward, verilog-re-search-backward): Fix returning wrong search results on Emacs 22.1. (verilog-modi-cache-results, verilog-auto): Fix warning message about "toggling font-lock-mode." (verilog-auto): Fix loosing font-lock on errors. (verilog-auto-inst-param-value, verilog-mode-version) (verilog-mode-version-date, verilog-read-inst-param-value) (verilog-auto-inst, verilog-auto-inst-param) (verilog-auto-inst-port, verilog-simplify-range-expression): Allow parameters to be replaced with their values, on the expansion of an AUTOINST with Verilog 2001 style parameter settings. Suggested by David Rogoff. * verilog-mode.el (verilog-beg-block-re-ordered, verilog-calc-1): Better support for the property statement. Sometimes this keyword introduces a statement which requires an endproperty keyword, and sometimes it doesn't, dependening on the work before the property word. If property is prefixed with assert, assume or cover keyword, then the statement is ended with a ';' Otherwise, property is like task or specify, and is followed by some number of statements, which are ended with an endproperty keyword. (electric-verilog-tab): Support Emacs 22.2 style handling of tab in a highlighted region: indent each line in region according to mode. Supply this so it works in XEmacs and older Emacs.
author Dan Nicolaescu <dann@ics.uci.edu>
date Fri, 05 Sep 2008 22:13:55 +0000
parents 91e5880a36c1
children a9dc0e7c3f2b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
86911
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1 ;;; dig.el --- Domain Name System dig interface
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3 ;; Copyright (C) 2000, 2001, 2002, 2003, 2004,
87649
107ccd98fa12 Merge from emacs--rel--22
Miles Bader <miles@gnu.org>
parents: 86913
diff changeset
4 ;; 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
86911
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
5
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
6 ;; Author: Simon Josefsson <simon@josefsson.org>
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
7 ;; Keywords: DNS BIND dig
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
8
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
9 ;; This file is part of GNU Emacs.
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
10
94677
91e5880a36c1 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
11 ;; GNU Emacs is free software: you can redistribute it and/or modify
91e5880a36c1 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
12 ;; it under the terms of the GNU General Public License as published by
91e5880a36c1 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
13 ;; the Free Software Foundation, either version 3 of the License, or
91e5880a36c1 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
14 ;; (at your option) any later version.
86911
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
15
94677
91e5880a36c1 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
16 ;; GNU Emacs is distributed in the hope that it will be useful,
91e5880a36c1 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
91e5880a36c1 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
91e5880a36c1 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
19 ;; GNU General Public License for more details.
86911
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
20
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
21 ;; You should have received a copy of the GNU General Public License
94677
91e5880a36c1 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
22 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
86911
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
23
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
24 ;;; Commentary:
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
25
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
26 ;; This provide an interface for "dig".
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
27 ;;
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
28 ;; For interactive use, try M-x dig and type a hostname. Use `q' to quit
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
29 ;; dig buffer.
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
30 ;;
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
31 ;; For use in elisp programs, call `dig-invoke' and use
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
32 ;; `dig-extract-rr' to extract resource records.
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
33
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
34 ;;; Release history:
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
35
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
36 ;; 2000-10-28 posted on gnu.emacs.sources
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
37
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
38 ;;; Code:
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
39
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
40 (eval-when-compile (require 'cl))
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
41
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
42 (defgroup dig nil
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
43 "Dig configuration."
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
44 :group 'comm)
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
45
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
46 (defcustom dig-program "dig"
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
47 "Name of dig (domain information groper) binary."
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
48 :type 'file
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
49 :group 'dig)
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
50
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
51 (defcustom dig-dns-server nil
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
52 "DNS server to query.
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
53 If nil, use system defaults."
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
54 :type '(choice (const :tag "System defaults")
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
55 string)
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
56 :group 'dig)
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
57
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
58 (defcustom dig-font-lock-keywords
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
59 '(("^;; [A-Z]+ SECTION:" 0 font-lock-keyword-face)
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
60 ("^;;.*" 0 font-lock-comment-face)
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
61 ("^; <<>>.*" 0 font-lock-type-face)
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
62 ("^;.*" 0 font-lock-function-name-face))
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
63 "Default expressions to highlight in dig mode."
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
64 :type 'sexp
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
65 :group 'dig)
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
66
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
67 (defun dig-invoke (domain &optional
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
68 query-type query-class query-option
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
69 dig-option server)
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
70 "Call dig with given arguments and return buffer containing output.
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
71 DOMAIN is a string with a DNS domain. QUERY-TYPE is an optional string
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
72 with a DNS type. QUERY-CLASS is an optional string with a DNS class.
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
73 QUERY-OPTION is an optional string with dig \"query options\".
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
74 DIG-OPTIONS is an optional string with parameters for the dig program.
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
75 SERVER is an optional string with a domain name server to query.
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
76
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
77 Dig is an external program found in the BIND name server distribution,
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
78 and is a commonly available debugging tool."
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
79 (let (buf cmdline)
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
80 (setq buf (generate-new-buffer "*dig output*"))
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
81 (if dig-option (push dig-option cmdline))
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
82 (if query-option (push query-option cmdline))
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
83 (if query-class (push query-class cmdline))
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
84 (if query-type (push query-type cmdline))
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
85 (push domain cmdline)
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
86 (if server (push (concat "@" server) cmdline)
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
87 (if dig-dns-server (push (concat "@" dig-dns-server) cmdline)))
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
88 (apply 'call-process dig-program nil buf nil cmdline)
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
89 buf))
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
90
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
91 (defun dig-extract-rr (domain &optional type class)
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
92 "Extract resource records for DOMAIN, TYPE and CLASS from buffer.
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
93 Buffer should contain output generated by `dig-invoke'."
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
94 (save-excursion
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
95 (goto-char (point-min))
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
96 (if (re-search-forward
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
97 (concat domain "\\.?[\t ]+[0-9wWdDhHmMsS]+[\t ]+"
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
98 (upcase (or class "IN")) "[\t ]+" (upcase (or type "A")))
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
99 nil t)
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
100 (let (b e)
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
101 (end-of-line)
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
102 (setq e (point))
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
103 (beginning-of-line)
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
104 (setq b (point))
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
105 (when (search-forward " (" e t)
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
106 (search-forward " )"))
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
107 (end-of-line)
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
108 (setq e (point))
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
109 (buffer-substring b e))
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
110 (and (re-search-forward (concat domain "\\.?[\t ]+[0-9wWdDhHmMsS]+[\t ]+"
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
111 (upcase (or class "IN"))
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
112 "[\t ]+CNAME[\t ]+\\(.*\\)$") nil t)
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
113 (dig-extract-rr (match-string 1) type class)))))
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
114
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
115 (defun dig-rr-get-pkix-cert (rr)
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
116 (let (b e str)
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
117 (string-match "[^\t ]+[\t ]+[0-9wWdDhHmMsS]+[\t ]+IN[\t ]+CERT[\t ]+\\(1\\|PKIX\\)[\t ]+[0-9]+[\t ]+[0-9]+[\t ]+(?" rr)
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
118 (setq b (match-end 0))
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
119 (string-match ")" rr)
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
120 (setq e (match-beginning 0))
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
121 (setq str (substring rr b e))
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
122 (while (string-match "[\t \n\r]" str)
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
123 (setq str (replace-match "" nil nil str)))
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
124 str))
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
125
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
126 ;; XEmacs does it like this. For Emacs, we have to set the
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
127 ;; `font-lock-defaults' buffer-local variable.
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
128 (put 'dig-mode 'font-lock-defaults '(dig-font-lock-keywords t))
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
129
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
130 (put 'dig-mode 'mode-class 'special)
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
131
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
132 (defvar dig-mode-map nil)
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
133 (unless dig-mode-map
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
134 (setq dig-mode-map (make-sparse-keymap))
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
135 (suppress-keymap dig-mode-map)
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
136
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
137 (define-key dig-mode-map "q" 'dig-exit))
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
138
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
139 (defun dig-mode ()
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
140 "Major mode for displaying dig output."
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
141 (interactive)
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
142 (kill-all-local-variables)
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
143 (setq mode-name "dig")
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
144 (setq major-mode 'dig-mode)
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
145 (use-local-map dig-mode-map)
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
146 (buffer-disable-undo)
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
147 (unless (featurep 'xemacs)
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
148 (set (make-local-variable 'font-lock-defaults)
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
149 '(dig-font-lock-keywords t)))
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
150 (when (featurep 'font-lock)
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
151 (font-lock-set-defaults))
86913
0ead56f6db1c (dig-mode): Replace gnus-run-mode-hooks with equivalent expansion.
Glenn Morris <rgm@gnu.org>
parents: 86911
diff changeset
152 (save-current-buffer
0ead56f6db1c (dig-mode): Replace gnus-run-mode-hooks with equivalent expansion.
Glenn Morris <rgm@gnu.org>
parents: 86911
diff changeset
153 (if (fboundp 'run-mode-hooks)
0ead56f6db1c (dig-mode): Replace gnus-run-mode-hooks with equivalent expansion.
Glenn Morris <rgm@gnu.org>
parents: 86911
diff changeset
154 (run-mode-hooks 'dig-mode-hook)
0ead56f6db1c (dig-mode): Replace gnus-run-mode-hooks with equivalent expansion.
Glenn Morris <rgm@gnu.org>
parents: 86911
diff changeset
155 (run-hooks 'dig-mode-hook))))
86911
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
156
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
157 (defun dig-exit ()
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
158 "Quit dig output buffer."
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
159 (interactive)
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
160 (kill-buffer (current-buffer)))
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
161
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
162 (defun dig (domain &optional
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
163 query-type query-class query-option dig-option server)
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
164 "Query addresses of a DOMAIN using dig, by calling `dig-invoke'.
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
165 Optional arguments are passed to `dig-invoke'."
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
166 (interactive "sHost: ")
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
167 (switch-to-buffer
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
168 (dig-invoke domain query-type query-class query-option dig-option server))
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
169 (goto-char (point-min))
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
170 (and (search-forward ";; ANSWER SECTION:" nil t)
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
171 (forward-line))
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
172 (dig-mode)
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
173 (setq buffer-read-only t)
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
174 (set-buffer-modified-p nil))
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
175
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
176 ;; named for consistency with query-dns in dns.el
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
177 (defun query-dig (domain &optional
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
178 query-type query-class query-option dig-option server)
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
179 "Query addresses of a DOMAIN using dig.
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
180 It works by calling `dig-invoke' and `dig-extract-rr'. Optional
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
181 arguments are passed to `dig-invoke' and `dig-extract-rr'. Returns
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
182 nil for domain/class/type queries that results in no data."
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
183 (let ((buffer (dig-invoke domain query-type query-class
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
184 query-option dig-option server)))
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
185 (when buffer
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
186 (switch-to-buffer buffer)
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
187 (let ((digger (dig-extract-rr domain query-type query-class)))
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
188 (kill-buffer buffer)
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
189 digger))))
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
190
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
191 (provide 'dig)
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
192
93975
1e3a407766b9 Fix up comment convention on the arch-tag lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 87649
diff changeset
193 ;; arch-tag: 1d61726e-9400-4013-9ae7-4035e0c7f7d6
86911
716ac63fa774 Move here from ../gnus.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
194 ;;; dig.el ends here