#include "nntp-thread.h"
#include "news.h"
-#include "news.h"
#include "news_gtk.h"
#include "socket.h"
#include "recv.h"
static int news_remove_msg (Folder *folder,
FolderItem *item,
gint msgnum);
+static gint news_rename_folder (Folder *folder,
+ FolderItem *item,
+ const gchar *name);
static gint news_remove_folder (Folder *folder,
FolderItem *item);
static FolderClass news_class;
news_class.item_get_path = news_item_get_path;
news_class.get_num_list = news_get_num_list;
news_class.scan_required = news_scan_required;
+ news_class.rename_folder = news_rename_folder;
news_class.remove_folder = news_remove_folder;
/* Message functions */
filename = g_strconcat(path, G_DIR_SEPARATOR_S, itos(msgnum), NULL);
g_free(path);
- g_unlink(filename);
+ claws_unlink(filename);
g_free(filename);
return 0;
}
log_message(LOG_PROTOCOL, _("creating NNTP connection to %s:%d ...\n"), server, port);
session = g_new0(NewsSession, 1);
- session_init(SESSION(session));
+ session_init(SESSION(session), folder->account, FALSE);
SESSION(session)->type = SESSION_NEWS;
SESSION(session)->server = g_strdup(server);
SESSION(session)->sock = NULL;
g_free(path);
if (is_file_exist(filename)) {
- g_unlink(filename);
+ claws_unlink(filename);
}
g_free(filename);
}
gint news_post(Folder *folder, const gchar *file)
{
gint ok;
- char *contents = file_read_to_str(file);
+ char *contents = file_read_to_str_no_recode(file);
NewsSession *session;
g_return_val_if_fail(folder != NULL, -1);
}
ok = nntp_threaded_post(folder, contents, strlen(contents));
-
+
+ if (ok != NEWSNNTP_NO_ERROR && ok != NEWSNNTP_ERROR_STREAM) {
+ ok = nntp_threaded_mode_reader(folder);
+ if (ok == NEWSNNTP_NO_ERROR)
+ ok = nntp_threaded_post(folder, contents, strlen(contents));
+ }
g_free(contents);
+
if (ok == NEWSNNTP_ERROR_STREAM) {
session_destroy(SESSION(session));
REMOTE_FOLDER(folder)->session = NULL;
}
- return ok;
+ return (ok == NEWSNNTP_NO_ERROR ? 0 : -1);
}
static gint news_get_article(Folder *folder, gint num, gchar *filename)
if (r == NEWSNNTP_NO_ERROR) {
if (str_write_to_file(result, filename) < 0)
return -1;
+ g_free(result);
}
- g_free(result);
return r;
}
FILE * tmpfp;
gchar buf[BUFFSIZE];
- tmp = g_strdup_printf("%s%ctmp%p", g_get_tmp_dir(),
+ tmp = g_strdup_printf("%s%ccancel%p", get_tmp_dir(),
G_DIR_SEPARATOR, msginfo);
if (tmp == NULL)
return -1;
buf) < 0) {
FILE_OP_ERROR(tmp, "fprintf");
fclose(tmpfp);
- g_unlink(tmp);
+ claws_unlink(tmp);
g_free(tmp);
return -1;
}
if (fclose(tmpfp) == EOF) {
FILE_OP_ERROR(tmp, "fclose");
- g_unlink(tmp);
+ claws_unlink(tmp);
g_free(tmp);
return -1;
}
news_gtk_synchronise(item, days);
}
+static gint news_rename_folder(Folder *folder, FolderItem *item,
+ const gchar *name)
+{
+ gchar *path;
+
+ g_return_val_if_fail(folder != NULL, -1);
+ g_return_val_if_fail(item != NULL, -1);
+ g_return_val_if_fail(item->path != NULL, -1);
+ g_return_val_if_fail(name != NULL, -1);
+
+ path = folder_item_get_path(item);
+ if (!is_dir_exist(path))
+ make_dir_hier(path);
+
+ g_free(item->name);
+ item->name = g_strdup(name);
+
+ return 0;
+}
+
static gint news_remove_folder(Folder *folder, FolderItem *item)
{
gchar *path;