[comp.emacs] GNUS patch#1

umerin@photon.stars.flab.Fujitsu.JUNET (Masanobu UMEDA) (06/28/88)

This is an official patch to GNUS recently posted to comp.emacs. The 
changes are as follows:  

(1) Bug fixes of post news (in gnus.el and nnspool.el)
(2) Variable gnus-use-generic-from is introduced.
(3) Variable gnus-force-nntp is introduced. GNUS won't look up local 
    news spool if the variable is set to T.
(4) Variable gnus-auto-select-next is introduced. You can go to next 
    unread news group directly without returning to group selection 
    mode if the variable is set to T.  

Masanobu UMEDA
---------------------------------------------------------------------------
*** /tmp/,RCSt1a00811	Tue Jun 28 13:42:38 1988
--- gnus.el	Tue Jun 28 13:38:51 1988
***************
*** 1,7 ****
  ;;; GNUS: NNTP-based News Reader for GNU Emacs
  ;; Copyright (C) 1987, 1988 Fujitsu Laboratoris LTD.
  ;; Copyright (C) 1987, 1988 Masanobu UMEDA (umerin@flab.flab.Fujitsu.JUNET)
! ;; $Header: gnus.el,v 3.3 88/06/16 09:58:09 umerin Exp $
  
  ;; This file is part of GNU Emacs.
  
--- 1,7 ----
  ;;; GNUS: NNTP-based News Reader for GNU Emacs
  ;; Copyright (C) 1987, 1988 Fujitsu Laboratoris LTD.
  ;; Copyright (C) 1987, 1988 Masanobu UMEDA (umerin@flab.flab.Fujitsu.JUNET)
! ;; $Header: gnus.el,v 3.5 88/06/28 13:36:38 umerin Exp $
  
  ;; This file is part of GNU Emacs.
  
***************
*** 63,68 ****
--- 63,75 ----
    "*A little bit verbose in posting mode if T.
  Ask you news group name, subject, and distribution.")
  
+ (defvar gnus-auto-select-next t
+   "*Select next news group automagically if T.
+ Experimental feature. Send me your comments.")
+ 
+ (defvar gnus-force-nntp nil
+   "*Use NNTP even if local news spool is available if T.")
+ 
  (defvar gnus-Group-mode-hook nil
    "*Hooks for GNUS Group mode.")
  
***************
*** 87,94 ****
    "*Your organization.
  If environment variable `ORGANIZATION' is defined, it's instead used.")
  
! (defvar gnus-your-time-zone -9
!   "*Difference between GMT and your time zone.")
  
  ;; Internal variables.
  
--- 94,101 ----
    "*Your organization.
  If environment variable `ORGANIZATION' is defined, it's instead used.")
  
! (defvar gnus-use-generic-from nil
!   "*Don't insert local host name to From: field value if T.")
  
  ;; Internal variables.
  
***************
*** 244,252 ****
  and distribution when posting a new news if the value is set to
  non-NIL (defalut).
  
! If news server is your local host, GNUS won't use NNTP but go to local
! news spool directly after loading `nnspool' by itself.
  
  Entry to this mode calls the value of gnus-Group-mode-hook with no arguments,
  if that value is non-nil."
    (interactive)
--- 251,264 ----
  and distribution when posting a new news if the value is set to
  non-NIL (defalut).
  
! If your local host has a news spool, GNUS won't use NNTP but go to the 
! spool directly after loading `nnspool' by itself. You can disable this 
! feature by setting `gnus-force-nntp' to T.
  
+ Select next news group automagically in subject selection mode if 
+ variable `gnus-auto-select-next' is T (default). You don't have to 
+ exit subject selection mode explicitly.
+ 
  Entry to this mode calls the value of gnus-Group-mode-hook with no arguments,
  if that value is non-nil."
    (interactive)
***************
*** 276,290 ****
  
  (defun gnus-Group-startup-message ()
    (insert "\n\n\n\n
! 			   GNUS Version 3.3
  
  		 NNTP-based News Reader for GNU Emacs
  
  
! 	If you have any troubles with this software, please let me
! 	know. I would fix your problems in the next release.
  
! 	Any comment, suggestion, and bug fix are welcome.
  
  	Masanobu UMEDA
  	umerin@flab.Fujitsu.JUNET"))
--- 288,302 ----
  
  (defun gnus-Group-startup-message ()
    (insert "\n\n\n\n
! 			   GNUS Version 3.5
  
  		 NNTP-based News Reader for GNU Emacs
  
  
! 	If you have any trouble with this software, please let me
! 	know. I will fix your problems in the next release.
  
! 	Comments, suggestions, and bug fixes are welcome.
  
  	Masanobu UMEDA
  	umerin@flab.Fujitsu.JUNET"))
***************
*** 936,953 ****
        )
      ))
  
  (defun gnus-Subject-next-article (unread &optional subject)
    "Select article after current one.
  If argument UNREAD is non-nil, only unread article is selected."
    (interactive "P")
!   (cond ((gnus-Subject-display-article
! 	  (gnus-Subject-search-forward unread subject)))
! 	(unread
! 	 (message "No more unread articles."))
! 	(t
! 	 (message "No more articles."))
! 	))
  
  (defun gnus-Subject-next-unread-article ()
    "Select unread article after current one."
    (interactive)
--- 948,1023 ----
        )
      ))
  
+ ;;(defun gnus-Subject-next-article (unread &optional subject)
+ ;;  "Select article after current one.
+ ;;If argument UNREAD is non-nil, only unread article is selected."
+ ;;  (interactive "P")
+ ;;  (cond ((gnus-Subject-display-article
+ ;;	  (gnus-Subject-search-forward unread subject)))
+ ;;	(unread
+ ;;	 (message "No more unread articles."))
+ ;;	(t
+ ;;	 (message "No more articles."))
+ ;;	))
+ 
  (defun gnus-Subject-next-article (unread &optional subject)
    "Select article after current one.
  If argument UNREAD is non-nil, only unread article is selected."
    (interactive "P")
!   (if (gnus-Subject-display-article
!        (gnus-Subject-search-forward unread subject))
!       nil
!     (let* ((keyseq (this-command-keys))
! 	   (cmd (string-to-char keyseq))
! 	   (group (gnus-Subject-next-group-name))
! 	   (auto-select
! 	    (and gnus-auto-select-next
! 		 (or (null subject)
! 		     (null gnus-current-group-unread-articles))
! 		 (memq (key-binding keyseq)
! 		       '(gnus-Subject-next-unread-article
! 			 gnus-Subject-next-article
! 			 gnus-Subject-next-page))
! 		 )))
!       (message "No more%s articles%s"
! 	       (if unread " unread" "")
! 	       (if auto-select
! 		   (if group
! 		       (format " (Type %s to %s [%d])"
! 			       (if (string-equal keyseq " ")
! 				   "SPACE" keyseq)
! 			       group
! 			       (nth 1 (assoc group gnus-unread-assoc)))
! 		     (format " (Type %s to exit %s)"
! 			     (if (string-equal keyseq " ")
! 				 "SPACE" keyseq)
! 			     gnus-current-news-group
! 			     ))
! 		 "."))
!       ;; Select next unread news group automagically.
!       (if auto-select
! 	  (let ((char nil))
! 	    (setq char (read-char))
! 	    (message "")
! 	    (if (eq char cmd)
! 		(if (null group)
! 		    (call-interactively 'gnus-Subject-exit)
! 		  (gnus-Subject-exit)
! 		  (gnus-Subject-read-group group nil nil))
! 	      (setq unread-command-char char))
! 	    ))
!       )))
  
+ (defun gnus-Subject-next-group-name ()
+   "Return next unread news group name."
+   (save-excursion
+     (set-buffer gnus-Group-display-buffer)
+     (save-excursion
+       ;; We don't want to alter current point of group selection buffer.
+       (if (gnus-Group-search-forward nil nil)
+ 	  (gnus-Group-group-name))
+       )))
+ 
  (defun gnus-Subject-next-unread-article ()
    "Select unread article after current one."
    (interactive)
***************
*** 1091,1112 ****
    "Mark articles which has the same subject as read.
  If argument NO-SELECT is non-nil, next unread article is not selected."
    (interactive "P")
!   (let* ((article (gnus-Subject-article-number))
! 	 (cntl (format "^.[ \t]+%d:" article))
! 	 (subject nil)
  	 (count 0))
      (save-excursion
!       (goto-char (point-min))
!       (if (re-search-forward cntl nil t)
! 	  (progn
! 	    (setq subject (gnus-Subject-subject-string))
! 	    (gnus-Subject-mark-read article)
! 	    (setq count (1+ count))
! 	    (while (and subject
! 			(gnus-Subject-search-forward t subject))
! 	      (gnus-Subject-mark-read (gnus-Subject-article-number))
! 	      (setq count (1+ count)))
! 	    ))
        )
      (if no-select
  	(gnus-Subject-next-subject t)
--- 1161,1175 ----
    "Mark articles which has the same subject as read.
  If argument NO-SELECT is non-nil, next unread article is not selected."
    (interactive "P")
!   (let* ((subject (gnus-Subject-subject-string))
  	 (count 0))
      (save-excursion
!       (gnus-Subject-mark-read)
!       (setq count (1+ count))
!       (while (and subject
! 		  (gnus-Subject-search-forward t subject))
! 	(gnus-Subject-mark-read)
! 	(setq count (1+ count)))
        )
      (if no-select
  	(gnus-Subject-next-subject t)
***************
*** 1120,1154 ****
    (interactive)
    (gnus-Subject-kill-same-subject t))
  
! (defun gnus-Subject-mark-unread-forward (&optional article)
!   "Mark current subject as unread, and then go forward.
! If optional argument ARTICLE is non-nil, the ARTICLE rather than
! current is marked as unread."
    (interactive)
!   (gnus-Subject-mark-unread (or article
! 				(gnus-Subject-article-number)))
    (gnus-Subject-next-subject nil))
  
! (defun gnus-Subject-mark-unread-backward (&optional article)
!   "Mark current subject as unread, and then go backward.
! If optional argument ARTICLE is non-nil, the ARTICLE rather than
! current is marked as unread."
    (interactive)
!   (gnus-Subject-mark-unread (or article
! 			       (gnus-Subject-article-number)))
    (gnus-Subject-prev-subject nil))
  
! (defun gnus-Subject-mark-unread (article)
    "Mark ARTICLE's subject as unread."
    (save-excursion
      (set-buffer gnus-Subject-display-buffer)
!     (let ((buffer-read-only nil))
        (if (not (memq article gnus-current-group-unread-articles))
  	  (progn
  	    ;; Add to list.
  	    (setq gnus-current-group-unread-articles
  		  (cons article gnus-current-group-unread-articles))
! 	    (if (gnus-Subject-goto-subject article)
  		(progn
  		  (beginning-of-line)
  		  (delete-region (point) (1+ (point)))
--- 1183,1214 ----
    (interactive)
    (gnus-Subject-kill-same-subject t))
  
! (defun gnus-Subject-mark-unread-forward ()
!   "Mark current subject as unread, and then go forward."
    (interactive)
!   (gnus-Subject-mark-unread)
    (gnus-Subject-next-subject nil))
  
! (defun gnus-Subject-mark-unread-backward ()
!   "Mark current subject as unread, and then go backward."
    (interactive)
!   (gnus-Subject-mark-unread)
    (gnus-Subject-prev-subject nil))
  
! (defun gnus-Subject-mark-unread (&optional article)
    "Mark ARTICLE's subject as unread."
    (save-excursion
      (set-buffer gnus-Subject-display-buffer)
!     (let* ((buffer-read-only nil)
! 	   (current (gnus-Subject-article-number))
! 	   (article (or article current)))
        (if (not (memq article gnus-current-group-unread-articles))
  	  (progn
  	    ;; Add to list.
  	    (setq gnus-current-group-unread-articles
  		  (cons article gnus-current-group-unread-articles))
! 	    (if (or (= article current)
! 		    (gnus-Subject-goto-subject article))
  		(progn
  		  (beginning-of-line)
  		  (delete-region (point) (1+ (point)))
***************
*** 1156,1190 ****
  	    ))
        )))
  
! (defun gnus-Subject-mark-read-forward (&optional article)
!   "Mark current subject as read, and then go forward.
! If optional argument ARTICLE is non-nil, the ARTICLE rather than
! current is marked as read."
    (interactive)
!   (gnus-Subject-mark-read (or article
! 			     (gnus-Subject-article-number)))
    (gnus-Subject-next-subject t))
  
! (defun gnus-Subject-mark-read-backward (&optional article)
!   "Mark current subject as read, and then go backward.
! If optional argument ARTICLE is non-nil, the ARTICLE rather than
! current is marked as read."
    (interactive)
!   (gnus-Subject-mark-read (or article
! 			     (gnus-Subject-article-number)))
    (gnus-Subject-prev-subject t))
  
! (defun gnus-Subject-mark-read (article)
    "Mark ARTICLE's subject as read."
    (save-excursion
      (set-buffer gnus-Subject-display-buffer)
!     (let ((buffer-read-only nil))
        (if (memq article gnus-current-group-unread-articles)
  	  (progn
  	    ;; Remove from list.
  	    (setq gnus-current-group-unread-articles
  		  (delq article gnus-current-group-unread-articles))
! 	    (if (gnus-Subject-goto-subject article)
  		(progn
  		  (beginning-of-line)
  		  (delete-region (point) (1+ (point)))
--- 1216,1247 ----
  	    ))
        )))
  
! (defun gnus-Subject-mark-read-forward ()
!   "Mark current subject as read, and then go forward."
    (interactive)
!   (gnus-Subject-mark-read)
    (gnus-Subject-next-subject t))
  
! (defun gnus-Subject-mark-read-backward ()
!   "Mark current subject as read, and then go backward."
    (interactive)
!   (gnus-Subject-mark-read)
    (gnus-Subject-prev-subject t))
  
! (defun gnus-Subject-mark-read (&optional article)
    "Mark ARTICLE's subject as read."
    (save-excursion
      (set-buffer gnus-Subject-display-buffer)
!     (let* ((buffer-read-only nil)
! 	   (current (gnus-Subject-article-number))
! 	   (article (or article current)))
        (if (memq article gnus-current-group-unread-articles)
  	  (progn
  	    ;; Remove from list.
  	    (setq gnus-current-group-unread-articles
  		  (delq article gnus-current-group-unread-articles))
! 	    (if (or (= article current)
! 		    (gnus-Subject-goto-subject article))
  		(progn
  		  (beginning-of-line)
  		  (delete-region (point) (1+ (point)))
***************
*** 1307,1314 ****
  	(bury-buffer gnus-Subject-display-buffer))
      (if (get-buffer gnus-Article-display-buffer)
  	(bury-buffer gnus-Article-display-buffer))
!     (switch-to-buffer gnus-Group-display-buffer)
!     (delete-other-windows)
      ;; Update cross referenced group info.
      (while updated
        (gnus-Group-update-group (car updated) t) ;Ignore non-visible group.
--- 1364,1375 ----
  	(bury-buffer gnus-Subject-display-buffer))
      (if (get-buffer gnus-Article-display-buffer)
  	(bury-buffer gnus-Article-display-buffer))
!     (if (interactive-p)
! 	(progn
! 	  (switch-to-buffer gnus-Group-display-buffer)
! 	  (delete-other-windows))
!       ;; Do not update windows but change buffer to work.
!       (set-buffer gnus-Group-display-buffer))
      ;; Update cross referenced group info.
      (while updated
        (gnus-Group-update-group (car updated) t) ;Ignore non-visible group.
***************
*** 1548,1554 ****
  	    (null gnus-server-host))
  	(setq gnus-server-host
  	      (read-string "News Server host: " gnus-server-host)))
!     (if (string-equal gnus-server-host (system-name))
  	(progn
  	  ;; Use local news spool.
  	  (require 'nnspool)
--- 1609,1616 ----
  	    (null gnus-server-host))
  	(setq gnus-server-host
  	      (read-string "News Server host: " gnus-server-host)))
!     (if (and (not gnus-force-nntp)
! 	     (string-equal gnus-server-host (system-name)))
  	(progn
  	  ;; Use local news spool.
  	  (require 'nnspool)
***************
*** 2040,2048 ****
  	     (condition-case nil
  		 (eval-current-buffer)
  	       (error
! 		(error "Too complicated, or erroneous lines included in %s"
! 		       newsrc-file))
! 	       )
  	     (kill-buffer (current-buffer))
  	     (message "Reading %s... Done." newsrc-file))
  	    ))))
--- 2102,2108 ----
  	     (condition-case nil
  		 (eval-current-buffer)
  	       (error
! 		(error "Too long or invalid lines in %s" newsrc-file)))
  	     (kill-buffer (current-buffer))
  	     (message "Reading %s... Done." newsrc-file))
  	    ))))
***************
*** 2107,2113 ****
  	(message "Saving %s..." gnus-current-startup-file)
  	(set-buffer (find-file-noselect gnus-current-startup-file))
  	(let ((make-backup-files t)
! 	      (version-control nil))
  	  ;; Make backup file of master newsrc.
  	  ;; You can stop or change version control of backup file.
  	  ;; Suggested by jason@violet.berkeley.edu.
--- 2167,2174 ----
  	(message "Saving %s..." gnus-current-startup-file)
  	(set-buffer (find-file-noselect gnus-current-startup-file))
  	(let ((make-backup-files t)
! 	      (version-control nil)
! 	      (require-final-newline t)) ;Don't ask even if requested.
  	  ;; Make backup file of master newsrc.
  	  ;; You can stop or change version control of backup file.
  	  ;; Suggested by jason@violet.berkeley.edu.
***************
*** 2117,2123 ****
  	(set-buffer (get-buffer-create " *GNUS-newsrc*"))
  	(erase-buffer)
  	(gnus-gnus-to-quick-newsrc-format)
! 	(write-file (concat gnus-current-startup-file ".el"))
  	(kill-buffer (current-buffer))
  	(message "Saving %s... Done." gnus-current-startup-file)
  	)
--- 2178,2187 ----
  	(set-buffer (get-buffer-create " *GNUS-newsrc*"))
  	(erase-buffer)
  	(gnus-gnus-to-quick-newsrc-format)
! 	(let ((make-backup-files nil)
! 	      (version-control nil)
! 	      (require-final-newline t)) ;Don't ask even if requested.
! 	  (write-file (concat gnus-current-startup-file ".el")))
  	(kill-buffer (current-buffer))
  	(message "Saving %s... Done." gnus-current-startup-file)
  	)
***************
*** 2392,2399 ****
  (defun gnus-inews ()
    "NNTP inews interface."
    (let ((signature (expand-file-name "~/.signature" nil))
! 	(distribution nil)
! 	(lines nil))
      (save-excursion
        (copy-to-buffer " *GNUS-posting*" (point-min) (point-max))
        (set-buffer " *GNUS-posting*")
--- 2456,2462 ----
  (defun gnus-inews ()
    "NNTP inews interface."
    (let ((signature (expand-file-name "~/.signature" nil))
! 	(distribution nil))
      (save-excursion
        (copy-to-buffer " *GNUS-posting*" (point-min) (point-max))
        (set-buffer " *GNUS-posting*")
***************
*** 2414,2429 ****
  	    (goto-char (point-max))
  	    (insert "--\n")
  	    (insert-file-contents signature)))
-       ;; Count lines of article body.
-       (goto-char (point-min))
-       (search-forward "\n\n")
-       (setq lines (count-lines (point) (point-max)))
        ;; Prepare article headers.
        (save-restriction
  	(goto-char (point-min))
  	(search-forward "\n\n")
  	(narrow-to-region (point-min) (point))
! 	(gnus-inews-insert-headers lines))
        (widen)
        ;; Save author copy of posted article. The article must be
        ;;  copied before being posted because `nntp-request-post'
--- 2477,2488 ----
  	    (goto-char (point-max))
  	    (insert "--\n")
  	    (insert-file-contents signature)))
        ;; Prepare article headers.
        (save-restriction
  	(goto-char (point-min))
  	(search-forward "\n\n")
  	(narrow-to-region (point-min) (point))
! 	(gnus-inews-insert-headers))
        (widen)
        ;; Save author copy of posted article. The article must be
        ;;  copied before being posted because `nntp-request-post'
***************
*** 2489,2495 ****
  		"Distribution: " (or distribution "") "\n"
  		)
  	;; Prepare article headers.
! 	(gnus-inews-insert-headers 0)
  	(goto-char (point-max))
  	;; Insert empty line.
  	(insert "\n")
--- 2548,2554 ----
  		"Distribution: " (or distribution "") "\n"
  		)
  	;; Prepare article headers.
! 	(gnus-inews-insert-headers)
  	(goto-char (point-max))
  	;; Insert empty line.
  	(insert "\n")
***************
*** 2502,2512 ****
  	))
      ))
  
! (defun gnus-inews-insert-headers (lines)
!   "Prepare article headers."
    (save-excursion
      (let* ((login-name (gnus-inews-login-name))
  	   (domain-name (gnus-inews-domain-name))
  	   (full-name (or (getenv "NAME")
  			  (user-full-name)))
  	   ;; Message-ID should not contain slash `/' and should be
--- 2561,2574 ----
  	))
      ))
  
! (defun gnus-inews-insert-headers ()
!   "Prepare article headers.
! Path:, From:, Subject:, Message-ID: and Distribution: are generated.
! Organization: is optional."
    (save-excursion
      (let* ((login-name (gnus-inews-login-name))
  	   (domain-name (gnus-inews-domain-name))
+ 	   (generic-name (gnus-inews-domain-name gnus-use-generic-from))
  	   (full-name (or (getenv "NAME")
  			  (user-full-name)))
  	   ;; Message-ID should not contain slash `/' and should be
***************
*** 2518,2524 ****
        ;; Insert from top of headers.
        (goto-char (point-min))
        (insert "Path: " gnus-server-host "!" login-name "\n"
! 	      "From: " login-name "@" domain-name
  	      (if (or (string-equal full-name "")
  		      (string-equal full-name "&"))
  		  "\n"
--- 2580,2586 ----
        ;; Insert from top of headers.
        (goto-char (point-min))
        (insert "Path: " gnus-server-host "!" login-name "\n"
! 	      "From: " login-name "@" generic-name
  	      (if (or (string-equal full-name "")
  		      (string-equal full-name "&"))
  		  "\n"
***************
*** 2528,2538 ****
        (or (mail-fetch-field "subject")
  	  (insert "Subject: \n"))
        ;; Insert random headers.
!       (insert "Message-ID: <" id "@" domain-name ">\n"
! 	      "Date: " (gnus-inews-date) "\n"
! 	      "Organization: " organization "\n"
! 	      "Lines: " (int-to-string lines) "\n"
! 	      )
        (or (mail-fetch-field "distribution")
  	  (insert "Distribution: \n"))
        )))
--- 2590,2598 ----
        (or (mail-fetch-field "subject")
  	  (insert "Subject: \n"))
        ;; Insert random headers.
!       (insert "Message-ID: <" id "@" domain-name ">\n")
!       (if organization
! 	  (insert "Organization: " organization "\n"))
        (or (mail-fetch-field "distribution")
  	  (insert "Distribution: \n"))
        )))
***************
*** 2543,2550 ****
        (getenv "LOGNAME")
        (user-login-name)))
  
! (defun gnus-inews-domain-name ()
!   "Return user's domain name"
    (let ((domain (or (getenv "DOMAINNAME")
  		    gnus-your-domain)))
      (if (or (null domain)
--- 2603,2612 ----
        (getenv "LOGNAME")
        (user-login-name)))
  
! (defun gnus-inews-domain-name (&optional genericfrom)
!   "Return user's domain name.
! If optional argument GENERICFROM is non-nil, don't insert local host 
! name to the domain name."  
    (let ((domain (or (getenv "DOMAINNAME")
  		    gnus-your-domain)))
      (if (or (null domain)
***************
*** 2552,2564 ****
  	(progn
  	  (setq domain (read-string "Your domain name (no host): "))
  	  (setq gnus-your-domain domain)))
!     (concat (system-name)
! 	    ;; Host name and domain name must be separated by
! 	    ;;  one period `.'.
! 	    (if (string-equal "." (substring domain 0 1)) "" ".")
! 	    domain
! 	    )
!     ))
  
  (defun gnus-inews-message-id (name)
    "Generate unique message-ID for NAMEd user."
--- 2614,2631 ----
  	(progn
  	  (setq domain (read-string "Your domain name (no host): "))
  	  (setq gnus-your-domain domain)))
!     (if genericfrom
! 	;; Support GENERICFROM as same as standard Bnews system.
! 	;; Suggested by ohm@kaba.junet.
! 	(if (string-equal "." (substring domain 0 1))
! 	    (substring domain 1) domain)
!       (concat (system-name)
! 	      ;; Host name and domain name must be separated by
! 	      ;;  one period `.'.
! 	      (if (string-equal "." (substring domain 0 1)) "" ".")
! 	      domain
! 	      )
!       )))
  
  (defun gnus-inews-message-id (name)
    "Generate unique message-ID for NAMEd user."
***************
*** 2574,2612 ****
  		(substring date (match-beginning 5) (match-end 5)) ;Second
  		)
        (error "GNUS: cannot understand current-time-string: %s." date))
-     ))
- 
- (defun gnus-inews-date ()
-   "News format date string of today."
-   (let ((date (current-time-string)))
-     (if (string-match "^[^ ]+ \\([^ ]+\\)[ ]+\\([0-9]+\\) \\([0-9:]+\\) [0-9][0-9]\\([0-9][0-9]\\)"
- 		      date)
- 	(concat (substring date (match-beginning 2) (match-end 2)) ;Day
- 		" "
- 		(substring date (match-beginning 1) (match-end 1)) ;Month
- 		" "
- 		(substring date (match-beginning 4) (match-end 4)) ;Year
- 		" "
- 		(gnus-unix-time-to-gmtime
- 		 gnus-your-time-zone
- 		 (substring date (match-beginning 3) (match-end 3))) ;Time
- 		" GMT")
-       (error "GNUS: cannot understand current-time-string: %s." date))
-     ))
- 
- (defun gnus-unix-time-to-gmtime (time-zone time)
-   "Convert unix time to GM time."
-   (if (string-match "^\\([0-9]+\\):\\(.*\\)$" time)
-       (concat
-        (format "%02d"
- 	       (+ time-zone (string-to-int (substring time
- 						      (match-beginning 1)
- 						      (match-end 1)))))
-        ":"
-        (substring time
- 		  (match-beginning 2)
- 		  (match-end 2)))
-     (error "GNUS: cannot understand `%s' as unix time format." time)
      ))
  
  
--- 2641,2646 ----
*** /tmp/,RCSt1a00823	Tue Jun 28 13:44:00 1988
--- nnspool.el	Tue Jun 28 13:38:47 1988
***************
*** 1,7 ****
  ;;; Spool patches to NNTP package for GNU Emacs
  ;; Copyright (C) 1988 Fujitsu Laboratoris LTD.
  ;; Copyright (C) 1988 Masanobu UMEDA (umerin@flab.flab.Fujitsu.JUNET)
! ;; $Header: nnspool.el,v 1.3 88/06/16 09:58:46 umerin Exp $
  
  ;; This file is part of GNU Emacs.
  
--- 1,7 ----
  ;;; Spool patches to NNTP package for GNU Emacs
  ;; Copyright (C) 1988 Fujitsu Laboratoris LTD.
  ;; Copyright (C) 1988 Masanobu UMEDA (umerin@flab.flab.Fujitsu.JUNET)
! ;; $Header: nnspool.el,v 1.4 88/06/28 13:38:07 umerin Exp $
  
  ;; This file is part of GNU Emacs.
  
***************
*** 215,222 ****
      			 nnspool-inews-program 'delete t nil
      			 "-h")
      (prog1
! 	;; If inews returns some strings, it must be error message.
! 	(zerop (buffer-size))
        ;; Make status message by unfolding lines.
        (subst-char-in-region (point-min) (point-max) ?\n ?\\ 'noundo)
        (setq nntp-status-message-string
--- 215,228 ----
      			 nnspool-inews-program 'delete t nil
      			 "-h")
      (prog1
! 	(or (zerop (buffer-size))
! 	    ;; If inews returns strings, it must be error message 
! 	    ;;  unless SPOOLNEWS is defined.  
! 	    ;; This condition is very week, but there is no good rule 
! 	    ;;  identifying errors when SPOOLNEWS is defined.  
! 	    ;; Suggested by ohm@kaba.junet.
! 	    (string-match "spooled"
! 			  (buffer-substring (point-min) (point-max))))
        ;; Make status message by unfolding lines.
        (subst-char-in-region (point-min) (point-max) ?\n ?\\ 'noundo)
        (setq nntp-status-message-string
--
Masanobu UMEDA
umerin@flab.flab.Fujitsu.JUNET
umerin%flab.flab.Fujitsu.JUNET@uunet.uu.NET