/*
* Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2002 Hiroyuki Yamamoto
+ * Copyright (C) 1999-2003 Hiroyuki Yamamoto
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
gint news_post_stream (Folder *folder,
FILE *fp);
+FolderClass news_class =
+{
+ F_NEWS,
+ "news",
+ "News",
+
+ /* Folder functions */
+ news_folder_new,
+ news_folder_destroy,
+ NULL,
+ NULL,
+
+ /* FolderItem functions */
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ news_get_num_list,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+
+ /* Message functions */
+ news_get_msginfo,
+ news_get_msginfos,
+ news_fetch_msg,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ news_remove_msg,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+};
+
+FolderClass *news_get_class()
+{
+ return &news_class;
+}
+
Folder *news_folder_new(const gchar *name, const gchar *path)
{
Folder *folder;
folder = (Folder *)g_new0(NewsFolder, 1);
+ folder->class = &news_class;
news_folder_init(folder, name, path);
return folder;
static void news_folder_init(Folder *folder, const gchar *name,
const gchar *path)
{
- folder->type = F_NEWS;
-
folder_remote_folder_init(folder, name, path);
-
-/*
- folder->get_msg_list = news_get_article_list;
-*/
- folder->fetch_msg = news_fetch_msg;
-/*
- folder->scan = news_scan_group;
-*/
- folder->destroy = news_folder_destroy;
- folder->remove_msg = news_remove_msg;
- folder->get_num_list = news_get_num_list;
- folder->get_msginfo = news_get_msginfo;
- folder->get_msginfos = news_get_msginfos;
}
#if USE_OPENSSL
return NULL;
session = g_new(NNTPSession, 1);
+ session_init(SESSION(session));
SESSION(session)->type = SESSION_NEWS;
SESSION(session)->server = g_strdup(server);
session->nntp_sock = nntp_sock;
SESSION(session)->sock = nntp_sock->sock;
- SESSION(session)->connected = TRUE;
- SESSION(session)->phase = SESSION_READY;
- SESSION(session)->last_access_time = time(NULL);
SESSION(session)->data = NULL;
SESSION(session)->destroy = news_session_destroy;
RemoteFolder *rfolder = REMOTE_FOLDER(folder);
g_return_val_if_fail(folder != NULL, NULL);
- g_return_val_if_fail(folder->type == F_NEWS, NULL);
+ g_return_val_if_fail(FOLDER_CLASS(folder) == &news_class, NULL);
g_return_val_if_fail(folder->account != NULL, NULL);
if (!rfolder->session) {
gchar buf[NNTPBUFSIZE];
g_return_val_if_fail(folder != NULL, NULL);
- g_return_val_if_fail(folder->type == F_NEWS, NULL);
+ g_return_val_if_fail(FOLDER_CLASS(folder) == &news_class, NULL);
path = folder_item_get_path(FOLDER_ITEM(folder->node->data));
if (!is_dir_exist(path))
gchar *path, *filename;
g_return_if_fail(folder != NULL);
- g_return_if_fail(folder->type == F_NEWS);
+ g_return_if_fail(FOLDER_CLASS(folder) == &news_class);
path = folder_item_get_path(FOLDER_ITEM(folder->node->data));
filename = g_strconcat(path, G_DIR_SEPARATOR_S, NEWSGROUP_LIST, NULL);
gint ok;
g_return_val_if_fail(folder != NULL, -1);
- g_return_val_if_fail(folder->type == F_NEWS, -1);
+ g_return_val_if_fail(FOLDER_CLASS(folder) == &news_class, -1);
g_return_val_if_fail(file != NULL, -1);
if ((fp = fopen(file, "rb")) == NULL) {
gint ok;
g_return_val_if_fail(folder != NULL, -1);
- g_return_val_if_fail(folder->type == F_NEWS, -1);
+ g_return_val_if_fail(FOLDER_CLASS(folder) == &news_class, -1);
g_return_val_if_fail(fp != NULL, -1);
session = news_session_get(folder);
g_return_val_if_fail(item != NULL, -1);
g_return_val_if_fail(item->folder != NULL, -1);
- g_return_val_if_fail(item->folder->type == F_NEWS, -1);
+ g_return_val_if_fail(FOLDER_CLASS(folder) == &news_class, -1);
session = news_session_get(folder);
g_return_val_if_fail(session != NULL, -1);
g_return_val_if_fail(session != NULL, NULL);
g_return_val_if_fail(item != NULL, NULL);
g_return_val_if_fail(item->folder != NULL, NULL);
- g_return_val_if_fail(item->folder->type == F_NEWS, NULL);
+ g_return_val_if_fail(FOLDER_CLASS(item->folder) == &news_class, NULL);
log_message(_("getting xover %d in %s...\n"),
num, item->path);
guint tofetch, fetched;
g_return_val_if_fail(folder != NULL, NULL);
- g_return_val_if_fail(folder->type == F_NEWS, NULL);
+ g_return_val_if_fail(FOLDER_CLASS(folder) == &news_class, NULL);
g_return_val_if_fail(msgnum_list != NULL, NULL);
g_return_val_if_fail(item != NULL, NULL);