-/* internal functions */
-int nntp_get_active (NNTP_SERVER *);
-int nntp_get_cache_all (NNTP_SERVER *);
-int nntp_save_cache_index (NNTP_SERVER *);
-int nntp_check_newgroups (NNTP_SERVER *, int);
-int nntp_save_cache_group (CONTEXT *);
-int nntp_parse_url (const char *, ACCOUNT *, char *, size_t);
-void newsrc_gen_entries (CONTEXT *);
-void nntp_get_status (CONTEXT *, HEADER *, char *, int);
-void mutt_newsgroup_stat (NNTP_DATA *);
-void nntp_delete_cache (NNTP_DATA *);
-void nntp_add_to_list (NNTP_SERVER *, NNTP_DATA *);
-void nntp_cache_expand (char *, const char *);
-void nntp_delete_data (void *);
+struct nntp_data_t {
+ struct nntp_data_t *next;
+
+ NEWSRC_ENTRY *entries;
+ int num; /* number of used entries */
+ int max; /* number of allocated entries */
+ int unread;
+ int firstMessage;
+ int lastMessage;
+ int lastLoaded;
+ int lastCached;
+ unsigned subscribed:1;
+ unsigned rc:1;
+ unsigned new:1;
+ unsigned allowed:1;
+ unsigned deleted:1;
+ char *group;
+ char *desc;
+ char *cache;
+ NNTP_SERVER *nserv;
+ NNTP_CACHE acache[NNTP_CACHE_LEN];
+};
+
+DO_INIT(nntp_data_t, nntp_data);
+void nntp_data_wipe(nntp_data_t *);
+DO_NEW(nntp_data_t, nntp_data);
+DO_DELETE(nntp_data_t, nntp_data);
+DO_SLIST(nntp_data_t, nntp_data, nntp_data_delete);