static gint mh_remove_all_msg(Folder *folder, FolderItem *item) { gchar *path; gint val; cm_return_val_if_fail(item != NULL, -1); path = folder_item_get_path(item); cm_return_val_if_fail(path != NULL, -1); val = remove_all_numbered_files(path); g_free(path); mh_write_sequences(item, TRUE); return val; }
static gint news_get_num_list(Folder *folder, FolderItem *item, GSList **msgnum_list, gboolean *old_uids_valid) { NewsSession *session; gint i, ok, num, first, last, nummsgs = 0; gchar *dir; cm_return_val_if_fail(item != NULL, -1); cm_return_val_if_fail(item->folder != NULL, -1); cm_return_val_if_fail(FOLDER_CLASS(folder) == &news_class, -1); session = news_session_get(folder); cm_return_val_if_fail(session != NULL, -1); *old_uids_valid = TRUE; news_folder_lock(NEWS_FOLDER(item->folder)); ok = news_select_group(folder, item->path, &num, &first, &last); if (ok != NEWSNNTP_NO_ERROR) { log_warning(LOG_PROTOCOL, _("couldn't set group: %s\n"), item->path); news_folder_unlock(NEWS_FOLDER(item->folder)); return -1; } dir = news_folder_get_path(folder); if (num <= 0) remove_all_numbered_files(dir); else if (last < first) log_warning(LOG_PROTOCOL, _("invalid article range: %d - %d\n"), first, last); else { for (i = first; i <= last; i++) { *msgnum_list = g_slist_prepend(*msgnum_list, GINT_TO_POINTER(i)); nummsgs++; } debug_print("removing old messages from %d to %d in %s\n", first, last, dir); remove_numbered_files(dir, 1, first - 1); } g_free(dir); news_folder_unlock(NEWS_FOLDER(item->folder)); return nummsgs; }