diff lisp/nndir.el @ 13401:178d730efae2

entered into RCS
author Lars Magne Ingebrigtsen <larsi@gnus.org>
date Sat, 04 Nov 1995 03:54:42 +0000
parents
children 83f275dcd93a
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lisp/nndir.el	Sat Nov 04 03:54:42 1995 +0000
@@ -0,0 +1,141 @@
+;;; nndir.el --- single directory newsgroup access for Gnus
+;; Copyright (C) 1995 Free Software Foundation, Inc.
+
+;; Author: Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+;; 	Masanobu UMEDA <umerin@flab.flab.fujitsu.junet>
+;; Keywords: news
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to
+;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+;;; Commentary:
+
+;;; Code:
+
+(require 'nnheader)
+(require 'nnmh)
+(require 'nnml)
+
+(eval-and-compile
+  (autoload 'mail-send-and-exit "sendmail"))
+
+
+
+(defconst nndir-version "nndir 1.0")
+
+(defvar nndir-current-directory nil
+  "Current news group directory.")
+
+(defvar nndir-status-string "")
+
+(defvar nndir-nov-is-evil nil
+  "*Non-nil means that nndir will never retrieve NOV headers.")
+
+
+
+;;; Interface functions.
+
+
+(defun nndir-retrieve-headers (sequence &optional newsgroup server)
+  (nndir-execute-nnml-command
+   '(nnml-retrieve-headers sequence group server) server))
+
+(defun nndir-open-server (host &optional service)
+  "Open nndir backend."
+  (setq nndir-status-string "")
+  (nnheader-init-server-buffer))
+
+(defun nndir-close-server (&optional server)
+  "Close news server."
+  t)
+
+(defun nndir-server-opened (&optional server)
+  "Return server process status, T or NIL.
+If the stream is opened, return T, otherwise return NIL."
+  (and nntp-server-buffer
+       (get-buffer nntp-server-buffer)))
+
+(defun nndir-status-message (&optional server)
+  "Return server status response as string."
+  nndir-status-string)
+
+(defun nndir-request-article (id &optional newsgroup server buffer)
+  (nndir-execute-nnmh-command
+   '(nnmh-request-article id group server buffer) server))
+
+(defun nndir-request-group (group &optional server dont-check)
+  "Select news GROUP."
+  (nndir-execute-nnmh-command
+   '(nnmh-request-group group "" dont-check) server))
+
+(defun nndir-request-list (&optional server dir)
+  "Get list of active articles in all newsgroups."
+  (nndir-execute-nnmh-command
+   '(nnmh-request-list nil dir) server))
+
+(defun nndir-request-newgroups (date &optional server)
+  (nndir-execute-nnmh-command
+   '(nnmh-request-newgroups date server) server))
+
+(defun nndir-request-post (&optional server)
+  "Post a new news in current buffer."
+  (mail-send-and-exit nil))
+
+(defalias 'nndir-request-post-buffer 'nnmail-request-post-buffer)
+
+(defun nndir-request-expire-articles (articles newsgroup &optional server force)
+  "Expire all articles in the ARTICLES list in group GROUP."
+  (setq nndir-status-string "nndir: expire not possible")
+  nil)
+
+(defun nndir-close-group (group &optional server)
+  t)
+
+(defun nndir-request-move-article (article group server accept-form)
+  (setq nndir-status-string "nndir: move not possible")
+  nil)
+
+(defun nndir-request-accept-article (group)
+  (setq nndir-status-string "nndir: accept not possible")
+  nil)
+
+
+;;; Low-Level Interface
+
+(defun nndir-execute-nnmh-command (command server)
+  (let ((dir (expand-file-name server)))
+    (and (string-match "/$" dir)
+	 (setq dir (substring dir 0 (match-beginning 0))))
+    (string-match "/[^/]+$" dir)
+    (let ((group (substring dir (1+ (match-beginning 0))))
+	  (nnmh-directory (substring dir 0 (1+ (match-beginning 0))))
+	  (nnmh-get-new-mail nil))
+      (eval command))))
+
+(defun nndir-execute-nnml-command (command server)
+  (let ((dir (expand-file-name server)))
+    (and (string-match "/$" dir)
+	 (setq dir (substring dir 0 (match-beginning 0))))
+    (string-match "/[^/]+$" dir)
+    (let ((group (substring dir (1+ (match-beginning 0))))
+	  (nnml-directory (substring dir 0 (1+ (match-beginning 0))))
+	  (nnml-nov-is-evil nndir-nov-is-evil)
+	  (nnml-get-new-mail nil))
+      (eval command))))
+
+(provide 'nndir)
+
+;;; nndir.el ends here