emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/gnus/nnheader.el [lexbind]


From: Miles Bader
Subject: [Emacs-diffs] Changes to emacs/lisp/gnus/nnheader.el [lexbind]
Date: Wed, 15 Sep 2004 20:39:08 -0400

Index: emacs/lisp/gnus/nnheader.el
diff -c emacs/lisp/gnus/nnheader.el:1.14.8.2 
emacs/lisp/gnus/nnheader.el:1.14.8.3
*** emacs/lisp/gnus/nnheader.el:1.14.8.2        Tue Oct 14 23:34:51 2003
--- emacs/lisp/gnus/nnheader.el Thu Sep 16 00:12:16 2004
***************
*** 1,11 ****
  ;;; nnheader.el --- header access macros for Gnus and its backends
  
  ;; Copyright (C) 1987, 1988, 1989, 1990, 1993, 1994, 1995, 1996,
! ;;        1997, 1998, 2000, 2001
  ;;        Free Software Foundation, Inc.
  
  ;; Author: Masanobu UMEDA <address@hidden>
! ;;    Lars Magne Ingebrigtsen <address@hidden>
  ;; Keywords: news
  
  ;; This file is part of GNU Emacs.
--- 1,11 ----
  ;;; nnheader.el --- header access macros for Gnus and its backends
  
  ;; Copyright (C) 1987, 1988, 1989, 1990, 1993, 1994, 1995, 1996,
! ;;        1997, 1998, 2000, 2001, 2002, 2003
  ;;        Free Software Foundation, Inc.
  
  ;; Author: Masanobu UMEDA <address@hidden>
! ;;    Lars Magne Ingebrigtsen <address@hidden>
  ;; Keywords: news
  
  ;; This file is part of GNU Emacs.
***************
*** 33,60 ****
  
  ;; Requiring `gnus-util' at compile time creates a circular
  ;; dependency between nnheader.el and gnus-util.el.
! ;(eval-when-compile (require 'gnus-util))
  
  (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.")
  
  (defvar nnheader-head-chop-length 2048
    "*Length of each read operation when trying to fetch HEAD headers.")
  
  (defvar nnheader-file-name-translation-alist
    (let ((case-fold-search t))
      (cond
!      ((string-match "windows-nt\\|os/2\\|emx\\|cygwin32"
                    (symbol-name system-type))
        (append (mapcar (lambda (c) (cons c ?_))
                      '(?: ?* ?\" ?< ?> ??))
!             (if (string-match "windows-nt\\|cygwin32"
                                (symbol-name system-type))
                  nil
                '((?+ . ?-)))))
--- 33,92 ----
  
  ;; Requiring `gnus-util' at compile time creates a circular
  ;; dependency between nnheader.el and gnus-util.el.
! ;;(eval-when-compile (require 'gnus-util))
  
  (require 'mail-utils)
  (require 'mm-util)
+ (require 'gnus-util)
  (eval-and-compile
+   (autoload 'gnus-sorted-intersection "gnus-range")
    (autoload 'gnus-intersection "gnus-range")
!   (autoload 'gnus-sorted-complement "gnus-range")
!   (autoload 'gnus-sorted-difference "gnus-range"))
! 
! (defcustom gnus-verbose-backends 7
!   "Integer that says how verbose the Gnus backends should be.
! The higher the number, the more messages the Gnus backends will flash
! to say what it's doing.  At zero, the Gnus backends will be totally
! mute; at five, they will display most important messages; and at ten,
! they will keep on jabbering all the time."
!   :group 'gnus-start
!   :type 'integer)
! 
! (defcustom gnus-nov-is-evil nil
!   "If non-nil, Gnus backends will never output headers in the NOV format."
!   :group 'gnus-server
!   :type 'boolean)
  
  (defvar nnheader-max-head-length 4096
!   "*Max length of the head of articles.
! 
! Value is an integer, nil, or t.  nil means read in chunks of a file
! indefinitely until a complete head is found\; t means always read the
! entire file immediately, disregarding `nnheader-head-chop-length'.
! 
! Integer values will in effect be rounded up to the nearest multiple of
! `nnheader-head-chop-length'.")
  
  (defvar nnheader-head-chop-length 2048
    "*Length of each read operation when trying to fetch HEAD headers.")
  
+ (defvar nnheader-read-timeout
+   (if (string-match "windows-nt\\|os/2\\|emx\\|cygwin"
+                   (symbol-name system-type))
+       1.0                             ; why?
+     0.1)
+   "How long nntp should wait between checking for the end of output.
+ Shorter values mean quicker response, but are more CPU intensive.")
+ 
  (defvar nnheader-file-name-translation-alist
    (let ((case-fold-search t))
      (cond
!      ((string-match "windows-nt\\|os/2\\|emx\\|cygwin"
                    (symbol-name system-type))
        (append (mapcar (lambda (c) (cons c ?_))
                      '(?: ?* ?\" ?< ?> ??))
!             (if (string-match "windows-nt\\|cygwin"
                                (symbol-name system-type))
                  nil
                '((?+ . ?-)))))
***************
*** 65,76 ****
  
  \(setq nnheader-file-name-translation-alist '((?: . ?_)))")
  
  (eval-and-compile
    (autoload 'nnmail-message-id "nnmail")
    (autoload 'mail-position-on-field "sendmail")
    (autoload 'message-remove-header "message")
    (autoload 'gnus-point-at-eol "gnus-util")
-   (autoload 'gnus-delete-line "gnus-util" nil nil 'macro)
    (autoload 'gnus-buffer-live-p "gnus-util"))
  
  ;;; Header access macros.
--- 97,111 ----
  
  \(setq nnheader-file-name-translation-alist '((?: . ?_)))")
  
+ (defvar nnheader-directory-separator-character
+   (string-to-char (substring (file-name-as-directory ".") -1))
+   "*A character used to a directory separator.")
+ 
  (eval-and-compile
    (autoload 'nnmail-message-id "nnmail")
    (autoload 'mail-position-on-field "sendmail")
    (autoload 'message-remove-header "message")
    (autoload 'gnus-point-at-eol "gnus-util")
    (autoload 'gnus-buffer-live-p "gnus-util"))
  
  ;;; Header access macros.
***************
*** 186,310 ****
    (concat "fake+none+" (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)))
  
  ;; Parsing headers and NOV lines.
  
  (defsubst nnheader-header-value ()
!   (buffer-substring (match-end 0) (gnus-point-at-eol)))
  
! (defun nnheader-parse-head (&optional naked)
    (let ((case-fold-search t)
-       (cur (current-buffer))
        (buffer-read-only nil)
!       in-reply-to lines p ref)
!     (goto-char (point-min))
!     (when naked
!       (insert "\n"))
!     ;; Search to the beginning of the next header.  Error messages
!     ;; do not begin with 2 or 3.
      (prog1
!       (when (or naked (re-search-forward "^[23][0-9]+ " nil t))
!         ;; This implementation of this function, with nine
!         ;; search-forwards instead of the one re-search-forward and
!         ;; a case (which basically was the old function) is actually
!         ;; about twice as fast, even though it looks messier.  You
!         ;; can't have everything, I guess.  Speed and elegance
!         ;; don't always go hand in hand.
!         (vector
!          ;; Number.
!          (if naked
!              (progn
!                (setq p (point-min))
!                0)
!            (prog1
!                (read cur)
!              (end-of-line)
!              (setq p (point))
!              (narrow-to-region (point)
!                                (or (and (search-forward "\n.\n" nil t)
!                                         (- (point) 2))
!                                    (point)))))
!          ;; Subject.
!          (progn
!            (goto-char p)
!            (if (search-forward "\nsubject: " nil t)
!                (nnheader-header-value) "(none)"))
!          ;; From.
!          (progn
!            (goto-char p)
!            (if (or (search-forward "\nfrom: " nil t)
!                    (search-forward "\nfrom:" nil t))
!                (nnheader-header-value) "(nobody)"))
!          ;; Date.
!          (progn
!            (goto-char p)
!            (if (search-forward "\ndate: " nil t)
!                (nnheader-header-value) ""))
!          ;; Message-ID.
!          (progn
!            (goto-char p)
!            (if (search-forward "\nmessage-id:" nil t)
!                (buffer-substring
!                 (1- (or (search-forward "<" (gnus-point-at-eol) t)
!                         (point)))
!                 (or (search-forward ">" (gnus-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)))
!          ;; References.
!          (progn
!            (goto-char p)
!            (if (search-forward "\nreferences: " nil t)
!                (nnheader-header-value)
!              ;; Get the references from the in-reply-to header if there
!              ;; were no references and the in-reply-to header looks
!              ;; promising.
!              (if (and (search-forward "\nin-reply-to: " nil t)
!                       (setq in-reply-to (nnheader-header-value))
!                       (string-match "<[^\n>]+>" in-reply-to))
!                  (let (ref2)
!                    (setq ref (substring in-reply-to (match-beginning 0)
!                                         (match-end 0)))
!                    (while (string-match "<[^\n>]+>"
!                                         in-reply-to (match-end 0))
!                      (setq ref2 (substring in-reply-to (match-beginning 0)
!                                            (match-end 0)))
!                      (when (> (length ref2) (length ref))
!                        (setq ref ref2)))
!                      ref)
!                nil)))
!          ;; Chars.
!          0
!          ;; Lines.
!          (progn
!            (goto-char p)
!            (if (search-forward "\nlines: " nil t)
!                (if (numberp (setq lines (read cur)))
!                    lines 0)
!              0))
!          ;; Xref.
!          (progn
!            (goto-char p)
!            (and (search-forward "\nxref: " nil t)
!                 (nnheader-header-value)))
! 
!          ;; Extra.
!          (when nnmail-extra-headers
!            (let ((extra nnmail-extra-headers)
!                  out)
!              (while extra
!                (goto-char p)
!                (when (search-forward
!                       (concat "\n" (symbol-name (car extra)) ": ") nil t)
!                  (push (cons (car extra) (nnheader-header-value))
!                        out))
!                (pop extra))
!              out))))
!       (when naked
!       (goto-char (point-min))
!       (delete-char 1)))))
  
  (defmacro nnheader-nov-skip-field ()
    '(search-forward "\t" eol 'move))
--- 221,360 ----
    (concat "fake+none+" (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)))
  
  ;; Parsing headers and NOV lines.
  
+ (defsubst nnheader-remove-cr-followed-by-lf ()
+   (goto-char (point-max))
+   (while (search-backward "\r\n" nil t)
+     (delete-char 1)))
+ 
  (defsubst nnheader-header-value ()
!   (skip-chars-forward " \t")
!   (buffer-substring (point) (gnus-point-at-eol)))
  
! (defun nnheader-parse-naked-head (&optional number)
!   ;; This function unfolds continuation lines in this buffer
!   ;; destructively.  When this side effect is unwanted, use
!   ;; `nnheader-parse-head' instead of this function.
    (let ((case-fold-search t)
        (buffer-read-only nil)
!       (cur (current-buffer))
!       (p (point-min))
!       in-reply-to lines ref)
!     (nnheader-remove-cr-followed-by-lf)
!     (ietf-drums-unfold-fws)
!     (subst-char-in-region (point-min) (point-max) ?\t ? )
!     (goto-char p)
!     (insert "\n")
      (prog1
!       ;; This implementation of this function, with nine
!       ;; search-forwards instead of the one re-search-forward and a
!       ;; case (which basically was the old function) is actually
!       ;; about twice as fast, even though it looks messier.  You
!       ;; can't have everything, I guess.  Speed and elegance don't
!       ;; always go hand in hand.
!       (vector
!        ;; Number.
!        (or number 0)
!        ;; Subject.
!        (progn
!          (goto-char p)
!          (if (search-forward "\nsubject:" nil t)
!              (nnheader-header-value) "(none)"))
!        ;; From.
!        (progn
!          (goto-char p)
!          (if (search-forward "\nfrom:" nil t)
!              (nnheader-header-value) "(nobody)"))
!        ;; Date.
!        (progn
!          (goto-char p)
!          (if (search-forward "\ndate:" nil t)
!              (nnheader-header-value) ""))
!        ;; Message-ID.
!        (progn
!          (goto-char p)
!          (if (search-forward "\nmessage-id:" nil t)
!              (buffer-substring
!               (1- (or (search-forward "<" (gnus-point-at-eol) t)
!                       (point)))
!               (or (search-forward ">" (gnus-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)))
!        ;; References.
!        (progn
!          (goto-char p)
!          (if (search-forward "\nreferences:" nil t)
!              (nnheader-header-value)
!            ;; Get the references from the in-reply-to header if
!            ;; there were no references and the in-reply-to header
!            ;; looks promising.
!            (if (and (search-forward "\nin-reply-to:" nil t)
!                     (setq in-reply-to (nnheader-header-value))
!                     (string-match "<[^\n>]+>" in-reply-to))
!                (let (ref2)
!                  (setq ref (substring in-reply-to (match-beginning 0)
!                                       (match-end 0)))
!                  (while (string-match "<[^\n>]+>"
!                                       in-reply-to (match-end 0))
!                    (setq ref2 (substring in-reply-to (match-beginning 0)
!                                          (match-end 0)))
!                    (when (> (length ref2) (length ref))
!                      (setq ref ref2)))
!                  ref)
!              nil)))
!        ;; Chars.
!        0
!        ;; Lines.
!        (progn
!          (goto-char p)
!          (if (search-forward "\nlines: " nil t)
!              (if (numberp (setq lines (read cur)))
!                  lines 0)
!            0))
!        ;; Xref.
!        (progn
!          (goto-char p)
!          (and (search-forward "\nxref:" nil t)
!               (nnheader-header-value)))
!        ;; Extra.
!        (when nnmail-extra-headers
!          (let ((extra nnmail-extra-headers)
!                out)
!            (while extra
!              (goto-char p)
!              (when (search-forward
!                     (concat "\n" (symbol-name (car extra)) ":") nil t)
!                (push (cons (car extra) (nnheader-header-value))
!                      out))
!              (pop extra))
!            out)))
!       (goto-char p)
!       (delete-char 1))))
! 
! (defun nnheader-parse-head (&optional naked)
!   (let ((cur (current-buffer)) num beg end)
!     (when (if naked
!             (setq num 0
!                   beg (point-min)
!                   end (point-max))
!           (goto-char (point-min))
!           ;; Search to the beginning of the next header.  Error
!           ;; messages do not begin with 2 or 3.
!           (when (re-search-forward "^[23][0-9]+ " nil t)
!             (end-of-line)
!             (setq num (read cur)
!                   beg (point)
!                   end (if (search-forward "\n.\n" nil t)
!                           (- (point) 2)
!                         (point)))))
!       (with-temp-buffer
!       (insert-buffer-substring cur beg end)
!       (nnheader-parse-naked-head num)))))
  
  (defmacro nnheader-nov-skip-field ()
    '(search-forward "\t" eol 'move))
***************
*** 389,394 ****
--- 439,460 ----
        (delete-char 1))
      (forward-line 1)))
  
+ (defun nnheader-parse-overview-file (file)
+   "Parse FILE and return a list of headers."
+   (mm-with-unibyte-buffer
+     (nnheader-insert-file-contents file)
+     (goto-char (point-min))
+     (let (headers)
+       (while (not (eobp))
+       (push (nnheader-parse-nov) headers)
+       (forward-line 1))
+       (nreverse headers))))
+ 
+ (defun nnheader-write-overview-file (file headers)
+   "Write HEADERS to FILE."
+   (with-temp-file file
+     (mapcar 'nnheader-insert-nov headers)))
+ 
  (defun nnheader-insert-header (header)
    (insert
     "Subject: " (or (mail-header-subject header) "(none)") "\n"
***************
*** 432,438 ****
        (prev (point-min))
        num found)
      (while (not found)
!       (goto-char (/ (+ max min) 2))
        (beginning-of-line)
        (if (or (= (point) prev)
              (eobp))
--- 498,504 ----
        (prev (point-min))
        num found)
      (while (not found)
!       (goto-char (+ min (/ (- max min) 2)))
        (beginning-of-line)
        (if (or (= (point) prev)
              (eobp))
***************
*** 471,480 ****
  ;; Various cruft the backends and Gnus need to communicate.
  
  (defvar nntp-server-buffer nil)
! (defvar gnus-verbose-backends 7
!   "*A number that says how talkative the Gnus backends should be.")
! (defvar gnus-nov-is-evil nil
!   "If non-nil, Gnus backends will never output headers in the NOV format.")
  (defvar news-reply-yank-from nil)
  (defvar news-reply-yank-message-id nil)
  
--- 537,543 ----
  ;; Various cruft the backends and Gnus need to communicate.
  
  (defvar nntp-server-buffer nil)
! (defvar nntp-process-response nil)
  (defvar news-reply-yank-from nil)
  (defvar news-reply-yank-message-id nil)
  
***************
*** 490,495 ****
--- 553,559 ----
      (erase-buffer)
      (kill-all-local-variables)
      (setq case-fold-search t)         ;Should ignore case.
+     (set (make-local-variable 'nntp-process-response) nil)
      t))
  
  ;;; Various functions the backends use.
***************
*** 544,550 ****
        ;; This is invalid, but not all articles have Message-IDs.
        ()
      (mail-position-on-field "References")
!     (let ((begin (save-excursion (beginning-of-line) (point)))
          (fill-column 78)
          (fill-prefix "\t"))
        (when references
--- 608,614 ----
        ;; This is invalid, but not all articles have Message-IDs.
        ()
      (mail-position-on-field "References")
!     (let ((begin (gnus-point-at-bol))
          (fill-column 78)
          (fill-prefix "\t"))
        (when references
***************
*** 578,583 ****
--- 642,653 ----
       (point-max)))
    (goto-char (point-min)))
  
+ (defun nnheader-remove-body ()
+   "Remove the body from an article in this current buffer."
+   (goto-char (point-min))
+   (when (re-search-forward "\n\r?\n" nil t)
+     (delete-region (point) (point-max))))
+ 
  (defun nnheader-set-temp-buffer (name &optional noerase)
    "Set-buffer to an empty (possibly new) buffer called NAME with undo 
disabled."
    (set-buffer (get-buffer-create name))
***************
*** 609,619 ****
      (string-match nnheader-numerical-short-files file)
      (string-to-int (match-string 0 file))))
  
  (defun nnheader-directory-files-safe (&rest args)
!   ;; It has been reported numerous times that `directory-files'
!   ;; fails with an alarming frequency on NFS mounted file systems.
!   ;; This function executes that function twice and returns
!   ;; the longest result.
    (let ((first (apply 'directory-files args))
        (second (apply 'directory-files args)))
      (if (> (length first) (length second))
--- 679,695 ----
      (string-match nnheader-numerical-short-files file)
      (string-to-int (match-string 0 file))))
  
+ (defvar nnheader-directory-files-is-safe
+   (or (eq system-type 'windows-nt)
+       (and (not (featurep 'xemacs))
+          (> emacs-major-version 20)))
+   "If non-nil, Gnus believes `directory-files' is safe.
+ It has been reported numerous times that `directory-files' fails with
+ an alarming frequency on NFS mounted file systems. If it is nil,
+ `nnheader-directory-files-safe' is used.")
+ 
  (defun nnheader-directory-files-safe (&rest args)
!   "Execute `directory-files' twice and returns the longer result."
    (let ((first (apply 'directory-files args))
        (second (apply 'directory-files args)))
      (if (> (length first) (length second))
***************
*** 623,636 ****
  (defun nnheader-directory-articles (dir)
    "Return a list of all article files in directory DIR."
    (mapcar 'nnheader-file-to-number
!         (nnheader-directory-files-safe
!          dir nil nnheader-numerical-short-files t)))
  
  (defun nnheader-article-to-file-alist (dir)
    "Return an alist of article/file pairs in DIR."
    (mapcar (lambda (file) (cons (nnheader-file-to-number file) file))
!         (nnheader-directory-files-safe
!          dir nil nnheader-numerical-short-files t)))
  
  (defun nnheader-fold-continuation-lines ()
    "Fold continuation lines in the current buffer."
--- 699,718 ----
  (defun nnheader-directory-articles (dir)
    "Return a list of all article files in directory DIR."
    (mapcar 'nnheader-file-to-number
!         (if nnheader-directory-files-is-safe
!             (directory-files
!              dir nil nnheader-numerical-short-files t)
!           (nnheader-directory-files-safe
!            dir nil nnheader-numerical-short-files t))))
  
  (defun nnheader-article-to-file-alist (dir)
    "Return an alist of article/file pairs in DIR."
    (mapcar (lambda (file) (cons (nnheader-file-to-number file) file))
!         (if nnheader-directory-files-is-safe
!             (directory-files
!              dir nil nnheader-numerical-short-files t)
!           (nnheader-directory-files-safe
!            dir nil nnheader-numerical-short-files t))))
  
  (defun nnheader-fold-continuation-lines ()
    "Fold continuation lines in the current buffer."
***************
*** 653,659 ****
        ;; We translate -- but only the file name.  We leave the directory
        ;; alone.
        (if (and (featurep 'xemacs)
!                (memq system-type '(win32 w32 mswindows windows-nt cygwin)))
            ;; This is needed on NT and stuff, because
            ;; file-name-nondirectory is not enough to split
            ;; file names, containing ':', e.g.
--- 735,742 ----
        ;; We translate -- but only the file name.  We leave the directory
        ;; alone.
        (if (and (featurep 'xemacs)
!                (memq system-type '(cygwin32 win32 w32 mswindows windows-nt
!                                             cygwin)))
            ;; This is needed on NT and stuff, because
            ;; file-name-nondirectory is not enough to split
            ;; file names, containing ':', e.g.
***************
*** 710,730 ****
        (apply 'insert format args))
      t))
  
! (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."
--- 793,800 ----
        (apply 'insert format args))
      t))
  
! (defsubst nnheader-replace-chars-in-string (string from to)
!   (mm-subst-char-in-string from to string))
  
  (defun nnheader-replace-duplicate-chars-in-string (string from to)
    "Replace characters in STRING from FROM to TO."
***************
*** 752,758 ****
                     (expand-file-name
                      (file-name-as-directory top))))
         (error "")))
!    ?/ ?.))
  
  (defun nnheader-message (level &rest args)
    "Message if the Gnus backends are talkative."
--- 822,828 ----
                     (expand-file-name
                      (file-name-as-directory top))))
         (error "")))
!    nnheader-directory-separator-character ?.))
  
  (defun nnheader-message (level &rest args)
    "Message if the Gnus backends are talkative."
***************
*** 766,773 ****
    (or (not (numberp gnus-verbose-backends))
        (<= level gnus-verbose-backends)))
  
! (defvar nnheader-pathname-coding-system 'binary
!   "*Coding system for file names.")
  
  (defun nnheader-group-pathname (group dir &optional file)
    "Make file name for GROUP."
--- 836,843 ----
    (or (not (numberp gnus-verbose-backends))
        (<= level gnus-verbose-backends)))
  
! (defvar nnheader-pathname-coding-system 'iso-8859-1
!   "*Coding system for file name.")
  
  (defun nnheader-group-pathname (group dir &optional file)
    "Make file name for GROUP."
***************
*** 780,796 ****
        ;; If not, we translate dots into slashes.
        (expand-file-name (mm-encode-coding-string
                           (nnheader-replace-chars-in-string group ?. ?/)
!                         nnheader-pathname-coding-system)
                          dir))))
     (cond ((null file) "")
         ((numberp file) (int-to-string file))
         (t file))))
  
- (defun nnheader-functionp (form)
-   "Return non-nil if FORM is funcallable."
-   (or (and (symbolp form) (fboundp form))
-       (and (listp form) (eq (car form) 'lambda))))
- 
  (defun nnheader-concat (dir &rest files)
    "Concat DIR as directory to FILES."
    (apply 'concat (file-name-as-directory dir) files))
--- 850,861 ----
        ;; If not, we translate dots into slashes.
        (expand-file-name (mm-encode-coding-string
                           (nnheader-replace-chars-in-string group ?. ?/)
!                          nnheader-pathname-coding-system)
                          dir))))
     (cond ((null file) "")
         ((numberp file) (int-to-string file))
         (t file))))
  
  (defun nnheader-concat (dir &rest files)
    "Concat DIR as directory to FILES."
    (apply 'concat (file-name-as-directory dir) files))
***************
*** 798,816 ****
  (defun nnheader-ms-strip-cr ()
    "Strip ^M from the end of all lines."
    (save-excursion
!     (goto-char (point-min))
!     (while (re-search-forward "\r$" nil t)
!       (delete-backward-char 1))))
  
  (defun nnheader-file-size (file)
    "Return the file size of FILE or 0."
    (or (nth 7 (file-attributes file)) 0))
  
! (defun nnheader-find-etc-directory (package &optional file)
!   "Go through the path and find the \".../etc/PACKAGE\" directory.
! If FILE, find the \".../etc/PACKAGE\" file instead."
    (let ((path load-path)
!       dir result)
      ;; We try to find the dir by looking at the load path,
      ;; stripping away the last component and adding "etc/".
      (while path
--- 863,883 ----
  (defun nnheader-ms-strip-cr ()
    "Strip ^M from the end of all lines."
    (save-excursion
!     (nnheader-remove-cr-followed-by-lf)))
  
  (defun nnheader-file-size (file)
    "Return the file size of FILE or 0."
    (or (nth 7 (file-attributes file)) 0))
  
! (defun nnheader-find-etc-directory (package &optional file first)
!   "Go through `load-path' and find the \"../etc/PACKAGE\" directory.
! This function will look in the parent directory of each `load-path'
! entry, and look for the \"etc\" directory there.
! If FILE, find the \".../etc/PACKAGE\" file instead.
! If FIRST is non-nil, return the directory or the file found at the
! first.  Otherwise, find the newest one, though it may take a time."
    (let ((path load-path)
!       dir results)
      ;; We try to find the dir by looking at the load path,
      ;; stripping away the last component and adding "etc/".
      (while path
***************
*** 822,831 ****
                           "etc/" package
                           (if file "" "/"))))
               (or file (file-directory-p dir)))
!         (setq result dir
!               path nil)
        (setq path (cdr path))))
!     result))
  
  (eval-when-compile
    (defvar ange-ftp-path-format)
--- 889,902 ----
                           "etc/" package
                           (if file "" "/"))))
               (or file (file-directory-p dir)))
!         (progn
!           (or (member dir results)
!               (push dir results))
!           (setq path (if first nil (cdr path))))
        (setq path (cdr path))))
!     (if (or first (not (cdr results)))
!       (car results)
!       (car (sort results 'file-newer-than-file-p)))))
  
  (eval-when-compile
    (defvar ange-ftp-path-format)
***************
*** 851,862 ****
    (let ((coding-system-for-read nnheader-file-coding-system))
      (mm-insert-file-contents filename visit beg end replace)))
  
  (defun nnheader-find-file-noselect (&rest args)
    (let ((format-alist nil)
        (auto-mode-alist (mm-auto-mode-alist))
        (default-major-mode 'fundamental-mode)
        (enable-local-variables nil)
!         (after-insert-file-functions nil)
        (enable-local-eval nil)
        (find-file-hooks nil)
        (coding-system-for-read nnheader-file-coding-system))
--- 922,953 ----
    (let ((coding-system-for-read nnheader-file-coding-system))
      (mm-insert-file-contents filename visit beg end replace)))
  
+ (defun nnheader-insert-nov-file (file first)
+   (let ((size (nth 7 (file-attributes file)))
+       (cutoff (* 32 1024)))
+     (when size
+       (if (< size cutoff)
+           ;; If the file is small, we just load it.
+           (nnheader-insert-file-contents file)
+         ;; We start on the assumption that FIRST is pretty recent.  If
+         ;; not, we just insert the rest of the file as well.
+         (let (current)
+           (nnheader-insert-file-contents file nil (- size cutoff) size)
+           (goto-char (point-min))
+           (delete-region (point) (or (search-forward "\n" nil 'move) (point)))
+           (setq current (ignore-errors (read (current-buffer))))
+           (if (and (numberp current)
+                    (< current first))
+               t
+             (delete-region (point-min) (point-max))
+             (nnheader-insert-file-contents file)))))))
+ 
  (defun nnheader-find-file-noselect (&rest args)
    (let ((format-alist nil)
        (auto-mode-alist (mm-auto-mode-alist))
        (default-major-mode 'fundamental-mode)
        (enable-local-variables nil)
!       (after-insert-file-functions nil)
        (enable-local-eval nil)
        (find-file-hooks nil)
        (coding-system-for-read nnheader-file-coding-system))
***************
*** 917,922 ****
--- 1008,1022 ----
  (defalias 'nnheader-run-at-time 'run-at-time)
  (defalias 'nnheader-cancel-timer 'cancel-timer)
  (defalias 'nnheader-cancel-function-timers 'cancel-function-timers)
+ (defalias 'nnheader-string-as-multibyte 'string-as-multibyte)
+ 
+ (defun nnheader-accept-process-output (process)
+   (accept-process-output
+    process
+    (truncate nnheader-read-timeout)
+    (truncate (* (- nnheader-read-timeout
+                  (truncate nnheader-read-timeout))
+               1000))))
  
  (when (featurep 'xemacs)
    (require 'nnheaderxm))




reply via email to

[Prev in Thread] Current Thread [Next in Thread]