🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

1 total messages Started by Dirk Lutzebaeck Fri, 08 Jan 1993 15:02
Source: description of newsgroups via NNRP
#588
Author: Dirk Lutzebaeck
Date: Fri, 08 Jan 1993 15:02
81 lines
3705 bytes
Hi all,

The NNRP protocol (which is a variation of the NNTP protocol used in
the INN news administration package, I think) provides a command named
`XGTITLE'.  This command takes a newsgroup as an argument and returns
a short description of it. I made this available to GNUS, i.e. if you
press `i' in the group, subject or killed groups buffer it looks for a
newsgroup at the current point and prints the description in the
minibuffer.  A prefix `C-u i' asks for a newsgroup name. Another
command `I' in the group buffer gives you the description of all
available newsgroups of your NNRP server.

REMEMBER: THIS ONLY WORKS IF YOU'RE RUNNING GNUS VIA A *NNRP* SERVER!
(probably an INN 1.2 site)
NNTP AND NNSPOOL WILL NOT WORK!

HINT: If you DO NOT KNOW if your news server is an NNRP or an NNTP server
simply connect to the server via telnet and check the init message
from the server: `telnet <your-nn[tr]p-server-address> 119' 
It should read something like this:

"200 mailgzrz.TU-Berlin.DE InterNetNews NNRP server INN 1.2 10-Sep-92 ready."

So here is the code which you can put in your .emacs or your favorite
gnus setup file:

-----------------------------------------------------------------------------

(define-key gnus-Group-mode-map "i" 'gnus-Group-describe)
(define-key gnus-Group-mode-map "I" 'gnus-Group-describe-all)
(define-key gnus-Subject-mode-map "i" 'gnus-Group-describe)
(define-key gnus-Browse-killed-mode-map "i" 'gnus-Group-describe)


(defun gnus-Group-describe (&optional group)
  "Describe current newsgroup.
If optional argument GROUP is non-nil ask for a newsgroup, otherwise
search around point for a newsgroup. If no newsgroup found take
current newsgroup."
  (interactive "P")
  (cond
   ((not group)
    (setq group (gnus-Group-group-name))) ; search around point
   ((listp group)
    (setq group
	  (completing-read "Newsgroup: "
			   gnus-newsrc-assoc nil 'require-match))))
  (if (not group)
      (setq group gnus-newsgroup-name))	; otherwise set current newsgroup name
  (if (nntp-request-xgtitle group)
      (save-excursion
	(set-buffer nntp-server-buffer)
	(if (> (point-max) (point-min))
	    (message (buffer-substring (point-min) (- (point-max) 1)))
	  (message "%s    no description." group)))
    (message "cannot find description for %s." group)))


(defun gnus-Group-describe-all ()
  "Describe all newsgroups."
  (interactive)
  (switch-to-buffer (get-buffer-create " *GNUS newsgroup descriptions*"))
  (erase-buffer)
  (if (nntp-request-xgtitle "*")
      (insert-buffer-substring nntp-server-buffer))
  (goto-char (point-min)))


(defun nntp-request-xgtitle (group)
  "Get description of a group via XGTITLE NNRP-command."
  (prog1
      (nntp-send-command "^\\.\r$" "XGTITLE" group)
    (nntp-decode-text)))

--------------------------------------------------------------------------------
--
Dirk Lutzebaeck       | Email: lutzeb@cs.tu-berlin.de |  (**( )
TU Berlin, Sekr. 6-10 | Tel:   +49-30-314-25586       | (**( . ) I don't think,
Franklinstr. 28-29    | FAX:   +49-30-314-73622       | (*.*)  )    so I am.
D-1000 Berlin 12      | Room:  FR6079                 |  (*)  )
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads