"Return non-nil if SYM is a coding system."
(or (and (fboundp 'find-coding-system) (find-coding-system sym))
(and (fboundp 'coding-system-p) (coding-system-p sym))))
- (defalias 'mm-coding-system-p 'nnheader-coding-system-p))
+ (defalias 'mm-coding-system-p 'nnheader-coding-system-p)
+
+ (defalias 'mm-disable-multibyte
+ (static-if (featurep 'xemacs)
+ 'ignore
+ (lambda nil (set-buffer-multibyte nil))))
+ (defalias 'mm-enable-multibyte
+ (static-if (featurep 'xemacs)
+ 'ignore
+ ;; Why isn't it t but `to'? See mm-util.el.
+ (lambda nil (set-buffer-multibyte 'to))))
+
+ (defalias 'mm-encode-coding-region 'encode-coding-region)
+
+ (defalias 'mm-string-make-unibyte
+ (if (fboundp 'string-make-unibyte)
+ 'string-make-unibyte
+ 'identity)))
;; mail-parse stuff.
(unless (featurep 'mail-parse)
(defvar nnheader-fake-message-id 1)
-(defsubst nnheader-generate-fake-message-id ()
- (concat "fake+none+" (int-to-string (incf nnheader-fake-message-id))))
+(defsubst nnheader-generate-fake-message-id (&optional number)
+ (if (numberp number)
+ (format "fake+none+%s+%d" gnus-newsgroup-name number)
+ (format "fake+none+%s+%s"
+ gnus-newsgroup-name
+ (int-to-string (incf nnheader-fake-message-id)))))
(defsubst nnheader-fake-message-id-p (id)
(save-match-data ; regular message-id's are <.*>
- (string-match "\\`fake\\+none\\+[0-9]+\\'" id)))
+ (string-match "\\`fake\\+none\\+.*\\+[0-9]+\\'" id)))
;; Parsing headers and NOV lines.
(or (search-forward ">" (point-at-eol) t) (point)))
;; If there was no message-id, we just fake one to make
;; subsequent routines simpler.
- (nnheader-generate-fake-message-id)))
+ (nnheader-generate-fake-message-id number)))
;; References.
(progn
(goto-char p)
out)))
out))
-(defmacro nnheader-nov-read-message-id ()
- '(let ((id (nnheader-nov-field)))
+(defmacro nnheader-nov-read-message-id (&optional number)
+ `(let ((id (nnheader-nov-field)))
(if (string-match "^<[^>]+>$" id)
id
- (nnheader-generate-fake-message-id))))
+ (nnheader-generate-fake-message-id ,number))))
(defun nnheader-parse-nov ()
- (let ((eol (point-at-eol)))
+ (let ((eol (point-at-eol))
+ (number (nnheader-nov-read-integer)))
(make-full-mail-header
- (nnheader-nov-read-integer) ; number
+ number ; number
(nnheader-nov-field) ; subject
(nnheader-nov-field) ; from
(nnheader-nov-field) ; date
- (nnheader-nov-read-message-id) ; id
+ (nnheader-nov-read-message-id number) ; id
(nnheader-nov-field) ; refs
(nnheader-nov-read-integer) ; chars
(nnheader-nov-read-integer) ; lines
(point-max)))
(goto-char (point-min)))
+(defun nnheader-get-lines-and-char ()
+ "Return the number of lines and chars in the article body."
+ (goto-char (point-min))
+ (if (not (re-search-forward "\n\r?\n" nil t))
+ (list 0 0)
+ (list (count-lines (point) (point-max))
+ (- (point-max) (point)))))
+
(defun nnheader-remove-body ()
"Remove the body from an article in this current buffer."
(goto-char (point-min))