2008-09-22 [colin] 3.5.0cvs122
[claws.git] / src / news.c
index 7d1a87fd2c31db469740f59960ab0792c595ab35..f0a9f1afc03f79cb28084e4509ffbea3c504c937 100644 (file)
@@ -338,8 +338,9 @@ static Session *news_session_new_for_folder(Folder *folder)
                if (ac->passwd && ac->passwd[0])
                        passwd = g_strdup(ac->passwd);
                else
-                       passwd = input_dialog_query_password(ac->nntp_server,
-                                                            userid);
+                       passwd = input_dialog_query_password_keep(ac->nntp_server,
+                                                                 userid,
+                                                                 &(ac->session_passwd));
        }
 
 #if (defined(USE_OPENSSL) || defined (USE_GNUTLS))
@@ -371,6 +372,10 @@ static Session *news_session_new_for_folder(Folder *folder)
                        log_error(LOG_PROTOCOL, _("Error authenticating to %s:%d ...\n"), ac->nntp_server, port);
                        session_destroy(SESSION(session));
                        g_free(passwd);
+                       if (ac->session_passwd) {
+                               g_free(ac->session_passwd);
+                               ac->session_passwd = NULL;
+                       }
                        return NULL;
                }
        }
@@ -545,7 +550,7 @@ GSList *news_get_group_list(Folder *folder)
                gint ok;
                clist *grouplist = NULL;
                clistiter *cur;
-               fp = fopen(filename, "wb");
+               fp = g_fopen(filename, "wb");
                
                if (!fp) {
                        g_free(filename);
@@ -712,9 +717,9 @@ 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;
 }
 
@@ -926,7 +931,7 @@ static gchar *news_item_get_path(Folder *folder, FolderItem *item)
        folder_path = news_folder_get_path(folder);
 
         g_return_val_if_fail(folder_path != NULL, NULL);
-        if (folder_path[0] == G_DIR_SEPARATOR) {
+        if (g_path_is_absolute(folder_path)) {
                 if (item->path)
                         path = g_strconcat(folder_path, G_DIR_SEPARATOR_S,
                                            item->path, NULL);
@@ -942,7 +947,10 @@ static gchar *news_item_get_path(Folder *folder, FolderItem *item)
                                            folder_path, NULL);
         }
         g_free(folder_path);
-
+#ifdef G_OS_WIN32
+       while (strchr(path, '/'))
+               *strchr(path, '/') = '\\';
+#endif
        return path;
 }