Function: dns-read-name

dns-read-name is a byte-compiled function defined in dns.el.gz.

Signature

(dns-read-name &optional BUFFER)

Source Code

;; Defined in /usr/src/emacs/lisp/net/dns.el.gz
(defun dns-read-name (&optional buffer)
  (let ((ended nil)
	(name nil)
	length)
    (while (not ended)
      (setq length (dns-read-bytes 1))
      (if (= 192 (logand length (ash 3 6)))
	  (let ((offset (+ (* (logand 63 length) 256)
			   (dns-read-bytes 1))))
	    (save-excursion
	      (when buffer
		(set-buffer buffer))
	      (goto-char (1+ offset))
	      (setq ended (dns-read-name buffer))))
	(if (zerop length)
	    (setq ended t)
	  (push (buffer-substring (point)
				  (progn (forward-char length) (point)))
		name))))
    (if (stringp ended)
	(if (null name)
	    ended
	  (concat (mapconcat #'identity (nreverse name) ".") "." ended))
      (mapconcat #'identity (nreverse name) "."))))