* Makefile.in (install-package-ja): Compile and install lisp files first.
[elisp/gnus.git-] / lisp / nnheader.el
index c2100c4..922a9ba 100644 (file)
@@ -189,7 +189,7 @@ This variable is a substitute for `mm-text-coding-system-for-write'.")
 ;; Parsing headers and NOV lines.
 
 (defsubst nnheader-header-value ()
-  (buffer-substring (match-end 0) (gnus-point-at-eol)))
+  (buffer-substring (match-end 0) (std11-field-end)))
 
 (defun nnheader-parse-head (&optional naked)
   (let ((case-fold-search t)
@@ -231,7 +231,8 @@ This variable is a substitute for `mm-text-coding-system-for-write'.")
           ;; 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
@@ -348,7 +349,9 @@ This variable is a substitute for `mm-text-coding-system-for-write'.")
      (nnheader-nov-read-integer)       ; lines
      (if (eq (char-after) ?\n)
         nil
-       (nnheader-nov-field))           ; misc
+       (if (looking-at "Xref: ")
+          (goto-char (match-end 0)))
+       (nnheader-nov-field))           ; Xref
      (nnheader-nov-parse-extra))))     ; extra
 
 (defun nnheader-insert-nov (header)
@@ -834,11 +837,26 @@ If FULL, translate everything."
                      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))
@@ -1117,7 +1135,7 @@ find-file-hooks, etc.
       (message "%s(Y/n) Yes" prompt)
       t)))
 
-(when (string-match "XEmacs" emacs-version)
+(when (featurep 'xemacs)
   (require 'nnheaderxm))
 
 (run-hooks 'nnheader-load-hook)