Function: utf7-decode-internal

utf7-decode-internal is a byte-compiled function defined in utf7.el.gz.

Signature

(utf7-decode-internal &optional FOR-IMAP)

Documentation

Decode UTF-7 text in (temporary) buffer.

Use IMAP modification if FOR-IMAP is non-nil.

Source Code

;; Defined in /usr/src/emacs/lisp/international/utf7.el.gz
(defun utf7-decode-internal (&optional for-imap)
  "Decode UTF-7 text in (temporary) buffer.
Use IMAP modification if FOR-IMAP is non-nil."
  (let ((start (point-min)))
    (goto-char start)
    (let* ((esc-pattern (concat "^" (char-to-string (if for-imap ?& ?+))))
	   (base64-chars (concat "A-Za-z0-9+"
				 (char-to-string (if for-imap ?, ?/)))))
      (while (not (eobp))
	(skip-chars-forward esc-pattern)
	(unless (eobp)
	  (forward-char)
	  (let ((p (point))
		(run-length (skip-chars-forward base64-chars)))
	    (when (and (not (eobp)) (= (following-char) ?-))
	      (delete-char 1))
	    (unless (= run-length 0)	; Encoded lone esc-char?
	      (save-excursion
		(utf7-fragment-decode p (point) for-imap)
		(goto-char p)
		(delete-char -1)))))))))