2 * Copyright (C) 1998 Brandon Long <blong@fiction.net>
3 * Copyright (C) 1999 Andrej Gritsenko <andrej@lucky.net>
4 * Copyright (C) 2000-2002 Vsevolod Volkov <vvv@mutt.org.ua>
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
24 #include "mutt_socket.h"
30 #define NNTP_SSL_PORT 563
32 /* number of entries in the hash table */
33 #define NNTP_CACHE_LEN 10
47 unsigned int hasXPAT:1;
48 unsigned int hasXGTITLE:1;
49 unsigned int hasXOVER:1;
50 unsigned int hasLISTGROUP:1;
51 unsigned int status:3;
57 time_t newgroups_time;
60 LIST *list; /* list of newsgroups */
61 LIST *tail; /* last entry of list */
71 NEWSRC_ENTRY *entries;
72 unsigned int num; /* number of used entries */
73 unsigned int max; /* number of allocated entries */
75 unsigned int firstMessage;
76 unsigned int lastMessage;
77 unsigned int lastLoaded;
78 unsigned int lastCached;
79 unsigned int subscribed:1;
82 unsigned int allowed:1;
83 unsigned int deleted:1;
88 NNTP_CACHE acache[NNTP_CACHE_LEN];
91 /* internal functions */
92 int nntp_get_active (NNTP_SERVER *);
93 int nntp_get_cache_all (NNTP_SERVER *);
94 int nntp_save_cache_index (NNTP_SERVER *);
95 int nntp_check_newgroups (NNTP_SERVER *, int);
96 int nntp_save_cache_group (CONTEXT *);
97 int nntp_parse_url (const char *, ACCOUNT *, char *, size_t);
98 void newsrc_gen_entries (CONTEXT *);
99 void nntp_get_status (CONTEXT *, HEADER *, char *, int);
100 void mutt_newsgroup_stat (NNTP_DATA *);
101 void nntp_delete_cache (NNTP_DATA *);
102 void nntp_add_to_list (NNTP_SERVER *, NNTP_DATA *);
103 void nntp_cache_expand (char *, const char *);
104 void nntp_delete_data (void *);
106 /* exposed interface */
107 NNTP_SERVER *mutt_select_newsserver (char *);
108 NNTP_DATA *mutt_newsgroup_subscribe (NNTP_SERVER *, char *);
109 NNTP_DATA *mutt_newsgroup_unsubscribe (NNTP_SERVER *, char *);
110 NNTP_DATA *mutt_newsgroup_catchup (NNTP_SERVER *, char *);
111 NNTP_DATA *mutt_newsgroup_uncatchup (NNTP_SERVER *, char *);
112 void nntp_clear_cacheindex (NNTP_SERVER *);
113 int mutt_newsrc_update (NNTP_SERVER *);
114 int nntp_open_mailbox (CONTEXT *);
115 int nntp_sync_mailbox (CONTEXT *);
116 int nntp_check_mailbox (CONTEXT *);
117 int nntp_close_mailbox (CONTEXT *);
118 void nntp_fastclose_mailbox (CONTEXT *);
119 int nntp_fetch_message (MESSAGE *, CONTEXT *, int);
120 int nntp_post (const char *);
121 int nntp_check_msgid (CONTEXT *, const char *);
122 int nntp_check_children (CONTEXT *, const char *);
123 void nntp_buffy (char *);
124 void nntp_expand_path (char *, size_t, ACCOUNT *);
125 void nntp_logout_all ();
126 const char *nntp_format_str (char *, size_t, char, const char *, const char *,
127 const char *, const char *, unsigned long,
130 NNTP_SERVER *CurrentNewsSrv INITVAL (NULL);
132 #endif /* _NNTP_H_ */