aboutsummaryrefslogtreecommitdiffstats
path: root/camel/providers/nntp/camel-nntp-folder.c
diff options
context:
space:
mode:
authorChris Toshok <toshok@helixcode.com>2000-09-06 06:32:49 +0800
committerChris Toshok <toshok@src.gnome.org>2000-09-06 06:32:49 +0800
commiteafd7dbe013871f1090e0179e99ca309626c2076 (patch)
tree0198b4af5bd69ee48a278d8acfed8cf52326dab9 /camel/providers/nntp/camel-nntp-folder.c
parent54a6d12d79b8d2e761866594e4f18dcd751125be (diff)
downloadgsoc2013-evolution-eafd7dbe013871f1090e0179e99ca309626c2076.tar
gsoc2013-evolution-eafd7dbe013871f1090e0179e99ca309626c2076.tar.gz
gsoc2013-evolution-eafd7dbe013871f1090e0179e99ca309626c2076.tar.bz2
gsoc2013-evolution-eafd7dbe013871f1090e0179e99ca309626c2076.tar.lz
gsoc2013-evolution-eafd7dbe013871f1090e0179e99ca309626c2076.tar.xz
gsoc2013-evolution-eafd7dbe013871f1090e0179e99ca309626c2076.tar.zst
gsoc2013-evolution-eafd7dbe013871f1090e0179e99ca309626c2076.zip
care about response code. (get_HEAD_headers): same.
2000-09-05 Chris Toshok <toshok@helixcode.com> * providers/nntp/camel-nntp-utils.c (get_OVER_headers): care about response code. (get_HEAD_headers): same. (camel_nntp_get_headers): same. * providers/nntp/camel-nntp-store.h: get rid of CAMEL_NNTP_OK/ERR/FAIL. * providers/nntp/camel-nntp-store.c (camel_nntp_store_get_extensions): take CamelException arg and pass along to camel_nntp_command. (camel_nntp_store_get_overview_fmt): same. (nntp_store_connect): convert to using constants in camel-nntp-resp-codes.h (nntp_store_get_folder): make use of camel_nntp_folder_new. (camel_nntp_command_send_recv): new function to deal with auth challenge. (camel_nntp_command): split out most of this function into camel_nntp_command_send_recv. also, return the actual response code instead of CAMEL_NNTP_OK/ERR/FAIL. * providers/nntp/camel-nntp-resp-codes.h: new file. * providers/nntp/camel-nntp-folder.h: prototype for camel_nntp_folder_new. * providers/nntp/camel-nntp-folder.c (camel_nntp_folder_new): new convenience function. (nntp_folder_get_message): care more about the actual response code. * providers/nntp/Makefile.am (libcamelnntp_la_SOURCES): add camel-nntp-auth.c. (libcamelnntpinclude_HEADERS): add camel-nntp-auth.h. * providers/nntp/camel-nntp-auth.h: new file. * providers/nntp/camel-nntp-auth.c: new file. svn path=/trunk/; revision=5212
Diffstat (limited to 'camel/providers/nntp/camel-nntp-folder.c')
-rw-r--r--camel/providers/nntp/camel-nntp-folder.c29
1 files changed, 21 insertions, 8 deletions
diff --git a/camel/providers/nntp/camel-nntp-folder.c b/camel/providers/nntp/camel-nntp-folder.c
index 43209758a7..6ab92923a2 100644
--- a/camel/providers/nntp/camel-nntp-folder.c
+++ b/camel/providers/nntp/camel-nntp-folder.c
@@ -35,6 +35,7 @@
#include <fcntl.h>
#include "camel-folder-summary.h"
+#include "camel-nntp-resp-codes.h"
#include "camel-nntp-store.h"
#include "camel-nntp-folder.h"
#include "camel-nntp-store.h"
@@ -85,12 +86,6 @@ nntp_folder_init (CamelFolder *folder, CamelStore *parent_store,
/* XX */
nntp_folder->group_name = g_strdup (strrchr (name, '/') + 1);
-
-#if 0
- /* get (or create) uid list */
- if (!(nntp_load_uid_list (nntp_folder) > 0))
- nntp_generate_uid_list (nntp_folder);
-#endif
}
static void
@@ -209,16 +204,21 @@ nntp_folder_get_message (CamelFolder *folder, const gchar *uid, CamelException *
parent_store = camel_folder_get_parent_store (folder);
message_id = strchr (uid, ',') + 1;
- status = camel_nntp_command (CAMEL_NNTP_STORE( parent_store ), NULL, "ARTICLE %s", message_id);
+ status = camel_nntp_command (CAMEL_NNTP_STORE( parent_store ), ex, NULL, "ARTICLE %s", message_id);
/* if the message_id was not found, raise an exception and return */
- if (status != CAMEL_NNTP_OK) {
+ if (status == NNTP_NO_SUCH_ARTICLE) {
camel_exception_setv (ex,
CAMEL_EXCEPTION_FOLDER_INVALID_UID,
"message %s not found.",
message_id);
return NULL;
}
+ else if (status != NNTP_ARTICLE_FOLLOWS) {
+ /* XXX */
+ g_warning ("weird nntp error %d\n", status);
+ return NULL;
+ }
/* XXX ick ick ick. read the entire message into a buffer and
then create a stream_mem for it. */
@@ -395,3 +395,16 @@ camel_nntp_folder_get_type (void)
return camel_nntp_folder_type;
}
+
+CamelFolder *
+camel_nntp_folder_new (CamelStore *parent, const char *folder_name, CamelException *ex)
+{
+ CamelFolder *new_folder = CAMEL_FOLDER (camel_object_new (CAMEL_NNTP_FOLDER_TYPE));
+
+ CF_CLASS (new_folder)->init (new_folder, parent, NULL,
+ folder_name, ".", FALSE, ex);
+
+ CF_CLASS (new_folder)->refresh_info (new_folder, ex);
+
+ return new_folder;
+}