(require 'mail-utils)
(require 'mm-util)
+(eval-and-compile
+ (autoload 'gnus-intersection "gnus-range")
+ (autoload 'gnus-sorted-complement "gnus-range"))
(defvar nnheader-max-head-length 4096
"*Max length of the head of articles.")
;; From.
(progn
(goto-char p)
- (if (search-forward "\nfrom: " nil t)
+ (if (or (search-forward "\nfrom: " nil t)
+ (search-forward "\nfrom:" nil t))
(nnheader-header-value) "(nobody)"))
;; Date.
(progn
2 0))
;; We translate -- but only the file name. We leave the directory
;; alone.
- (if (string-match "/[^/]+\\'" file)
- ;; This is needed on NT's and stuff.
- (setq leaf (substring file (1+ (match-beginning 0)))
- path (substring file 0 (1+ (match-beginning 0))))
- ;; Fall back on this.
+ (if (and (featurep 'xemacs)
+ (memq system-type '(win32 w32 mswindows windows-nt)))
+ ;; This is needed on NT and stuff, because
+ ;; file-name-nondirectory is not enough to split
+ ;; file names, containing ':', e.g.
+ ;; "d:\\Work\\News\\nntp+news.fido7.ru:fido7.ru.gnu.SCORE"
+ ;;
+ ;; we are trying to correctly split such names:
+ ;; "d:file.name" -> "a:" "file.name"
+ ;; "aaa:bbb.ccc" -> "" "aaa:bbb.ccc"
+ ;; "d:aaa\\bbb:ccc" -> "d:aaa\\" "bbb:ccc"
+ ;; etc.
+ ;; to translate then only the file name part.
+ (progn
+ (setq leaf file
+ path "")
+ (if (string-match "\\(^\\w:\\|[/\\]\\)\\([^/\\]+\\)$" file)
+ (setq leaf (substring file (match-beginning 2))
+ path (substring file 0 (match-beginning 2)))))
+ ;; Emacs DTRT, says andrewi.
(setq leaf (file-name-nondirectory file)
path (file-name-directory file))))
(setq len (length leaf))
(apply 'insert format args))
t))
-(if (fboundp 'subst-char-in-string)
- (defsubst nnheader-replace-chars-in-string (string from to)
- (subst-char-in-string from to string))
- (defun nnheader-replace-chars-in-string (string from to)
- "Replace characters in STRING from FROM to TO."
- (let ((string (substring string 0)) ;Copy string.
- (len (length string))
- (idx 0))
- ;; Replace all occurrences of FROM with TO.
- (while (< idx len)
- (when (= (aref string idx) from)
- (aset string idx to))
- (setq idx (1+ idx)))
- string)))
+(eval-and-compile
+ (if (fboundp 'subst-char-in-string)
+ (defsubst nnheader-replace-chars-in-string (string from to)
+ (subst-char-in-string from to string))
+ (defun nnheader-replace-chars-in-string (string from to)
+ "Replace characters in STRING from FROM to TO."
+ (let ((string (substring string 0)) ;Copy string.
+ (len (length string))
+ (idx 0))
+ ;; Replace all occurrences of FROM with TO.
+ (while (< idx len)
+ (when (= (aref string idx) from)
+ (aset string idx to))
+ (setq idx (1+ idx)))
+ string))))
(defun nnheader-replace-duplicate-chars-in-string (string from to)
"Replace characters in STRING from FROM to TO."
(setq path (cdr path))))
result))
-(defvar ange-ftp-path-format)
-(defvar efs-path-regexp)
+(eval-when-compile
+ (defvar ange-ftp-path-format)
+ (defvar efs-path-regexp))
(defun nnheader-re-read-dir (path)
"Re-read directory PATH if PATH is on a remote system."
(if (and (fboundp 'efs-re-read-dir) (boundp 'efs-path-regexp))
(defalias 'nnheader-cancel-timer 'cancel-timer)
(defalias 'nnheader-cancel-function-timers 'cancel-function-timers)
-(when (string-match "XEmacs" emacs-version)
+(when (featurep 'xemacs)
(require 'nnheaderxm))
(run-hooks 'nnheader-load-hook)