diff options
author | Lars Magne Ingebrigtsen <larsi@gnus.org> | 1999-02-20 14:11:41 +0000 |
---|---|---|
committer | Lars Magne Ingebrigtsen <larsi@gnus.org> | 1999-02-20 14:11:41 +0000 |
commit | df80b09f29a79103954c82fb1ed7c5bfd3293324 (patch) | |
tree | eec6082c24f2b421df9a230bd9058f46e68a642a /lisp/gnus/nnagent.el | |
parent | 6748645fc3dd1604ed57a883b7c346128af27d90 (diff) | |
download | emacs-df80b09f29a79103954c82fb1ed7c5bfd3293324.tar.gz emacs-df80b09f29a79103954c82fb1ed7c5bfd3293324.tar.bz2 emacs-df80b09f29a79103954c82fb1ed7c5bfd3293324.zip |
Initial revision
Diffstat (limited to 'lisp/gnus/nnagent.el')
-rw-r--r-- | lisp/gnus/nnagent.el | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/lisp/gnus/nnagent.el b/lisp/gnus/nnagent.el new file mode 100644 index 00000000000..8e89182aca5 --- /dev/null +++ b/lisp/gnus/nnagent.el @@ -0,0 +1,125 @@ +;;; nnagent.el --- offline backend for Gnus +;; Copyright (C) 1997,98 Free Software Foundation, Inc. + +;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org> +;; Keywords: news, mail + +;; 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, Inc., 59 Temple Place - Suite 330, +;; Boston, MA 02111-1307, USA. + +;;; Commentary: + +;;; Code: + +(require 'nnheader) +(require 'nnoo) +(eval-when-compile (require 'cl)) +(require 'gnus-agent) +(require 'nnml) + +(nnoo-declare nnagent + nnml) + + + +(defconst nnagent-version "nnagent 1.0") + +(defvoo nnagent-directory nil + "Internal variable." + nnml-directory) + +(defvoo nnagent-active-file nil + "Internal variable." + nnml-active-file) + +(defvoo nnagent-newsgroups-file nil + "Internal variable." + nnml-newsgroups-file) + +(defvoo nnagent-get-new-mail nil + "Internal variable." + nnml-get-new-mail) + +;;; Interface functions. + +(nnoo-define-basics nnagent) + +(deffoo nnagent-open-server (server &optional defs) + (setq defs + `((nnagent-directory ,(gnus-agent-directory)) + (nnagent-active-file ,(gnus-agent-lib-file "active")) + (nnagent-newsgroups-file ,(gnus-agent-lib-file "newsgroups")) + (nnagent-get-new-mail nil))) + (nnoo-change-server 'nnagent server defs) + (let ((dir (gnus-agent-directory)) + err) + (cond + ((not (condition-case arg + (file-exists-p dir) + (ftp-error (setq err (format "%s" arg))))) + (nnagent-close-server) + (nnheader-report + 'nnagent (or err + (format "No such file or directory: %s" dir)))) + ((not (file-directory-p (file-truename dir))) + (nnagent-close-server) + (nnheader-report 'nnagent "Not a directory: %s" dir)) + (t + (nnheader-report 'nnagent "Opened server %s using directory %s" + server dir) + t)))) + +(deffoo nnagent-retrieve-groups (groups &optional server) + (save-excursion + (cond + ((file-exists-p (gnus-agent-lib-file "groups")) + (nnmail-find-file (gnus-agent-lib-file "groups")) + 'groups) + ((file-exists-p (gnus-agent-lib-file "active")) + (nnmail-find-file (gnus-agent-lib-file "active")) + 'active) + (t nil)))) + +(defun nnagent-request-type (group article) + (unless (stringp article) + (let ((gnus-plugged t)) + (if (not (gnus-check-backend-function + 'request-type (car gnus-command-method))) + 'unknown + (funcall (gnus-get-function gnus-command-method 'request-type) + (gnus-group-real-name group) article))))) + +(deffoo nnagent-request-newgroups (date server) + nil) + +(deffoo nnagent-request-update-info (group info &optional server) + nil) + +(deffoo nnagent-request-post (&optional server) + (gnus-agent-insert-meta-information 'news gnus-command-method) + (gnus-request-accept-article "nndraft:queue")) + +;; Use nnml functions for just about everything. +(nnoo-import nnagent + (nnml)) + + +;;; Internal functions. + +(provide 'nnagent) + +;;; nnagent.el ends here |