summaryrefslogtreecommitdiff
path: root/lisp/nndir.el
diff options
context:
space:
mode:
authorLars Magne Ingebrigtsen <larsi@gnus.org>1995-11-04 03:54:42 +0000
committerLars Magne Ingebrigtsen <larsi@gnus.org>1995-11-04 03:54:42 +0000
commit6b76bab63643f58d366b3f0df1623bb9200d89b8 (patch)
tree5f4a6290051a012b4b91c032889342879ca76dbe /lisp/nndir.el
parent56ec0cbb180cf6068a00c1eca7f1a5cd73f0b753 (diff)
downloademacs-6b76bab63643f58d366b3f0df1623bb9200d89b8.tar.gz
entered into RCS
Diffstat (limited to 'lisp/nndir.el')
-rw-r--r--lisp/nndir.el141
1 files changed, 141 insertions, 0 deletions
diff --git a/lisp/nndir.el b/lisp/nndir.el
new file mode 100644
index 00000000000..4e6ffb82eff
--- /dev/null
+++ b/lisp/nndir.el
@@ -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