+2002-10-05 [christoph] 0.8.3claws48
+
+ * src/imap.c
+ * src/news.c
+ * src/utils.c
+ * src/utils.h
+ implement cache cleanups for claws' folder system
+
2002-10-05 [melvin] 0.8.3claws47
* src/prefs_actions.c
MICRO_VERSION=3
INTERFACE_AGE=0
BINARY_AGE=0
-EXTRA_VERSION=claws47
+EXTRA_VERSION=claws48
VERSION=$MAJOR_VERSION.$MINOR_VERSION.$MICRO_VERSION$EXTRA_VERSION
dnl set $target
guint32 uid_validity = 0;
GPtrArray *argbuf;
gchar *cmdbuf = NULL;
+ gchar *dir;
g_return_val_if_fail(folder != NULL, NULL);
g_return_val_if_fail(item != NULL, NULL);
}
}
+ dir = folder_item_get_path((FolderItem *)item);
+ debug_print("removing old messages from %s\n", dir);
+ remove_numbered_files_not_in_list(dir, msgnum_list);
+ g_free(dir);
+
return msgnum_list;
}
NNTPSession *session;
gint i, ok, num, first, last;
GSList *msgnum_list = NULL;
+ gchar *dir;
session = news_session_get(folder);
g_return_val_if_fail(session != NULL, NULL);
msgnum_list = g_slist_prepend(msgnum_list, GINT_TO_POINTER(i));
}
+ dir = folder_item_get_path(item);
+ 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);
+
return msgnum_list;
}
return 0;
}
+gint remove_numbered_files_not_in_list(const gchar *dir, GSList *numberlist)
+{
+ DIR *dp;
+ struct dirent *d;
+ gchar *prev_dir;
+ gint fileno;
+
+ prev_dir = g_get_current_dir();
+
+ if (chdir(dir) < 0) {
+ FILE_OP_ERROR(dir, "chdir");
+ g_free(prev_dir);
+ return -1;
+ }
+
+ if ((dp = opendir(".")) == NULL) {
+ FILE_OP_ERROR(dir, "opendir");
+ g_free(prev_dir);
+ return -1;
+ }
+
+ while ((d = readdir(dp)) != NULL) {
+ fileno = to_number(d->d_name);
+ if (fileno >= 0 && (g_slist_find(numberlist, GINT_TO_POINTER(fileno)) == NULL)) {
+ debug_print("removing unwanted file %d from %s\n", fileno, dir);
+ if (is_dir_exist(d->d_name))
+ continue;
+ if (unlink(d->d_name) < 0)
+ FILE_OP_ERROR(d->d_name, "unlink");
+ }
+ }
+
+ closedir(dp);
+
+ if (chdir(prev_dir) < 0) {
+ FILE_OP_ERROR(prev_dir, "chdir");
+ g_free(prev_dir);
+ return -1;
+ }
+
+ g_free(prev_dir);
+
+ return 0;
+}
+
gint remove_all_numbered_files(const gchar *dir)
{
return remove_numbered_files(dir, 0, UINT_MAX);
gint remove_numbered_files (const gchar *dir,
guint first,
guint last);
+gint remove_numbered_files_not_in_list(const gchar *dir,
+ GSList *numberlist);
gint remove_all_numbered_files (const gchar *dir);
gint remove_expired_files (const gchar *dir,
guint hours);