gint mh_scan_folder (Folder *folder,
FolderItem *item);
-GSList *mh_get_num_list (Folder *folder,
- FolderItem *item);
+gint mh_get_num_list (Folder *folder,
+ FolderItem *item,
+ GSList **list);
void mh_scan_tree (Folder *folder);
gint mh_create_tree (Folder *folder);
item->last_num = max;
}
-GSList *mh_get_num_list(Folder *folder, FolderItem *item)
+gint mh_get_num_list(Folder *folder, FolderItem *item, GSList **list)
{
gchar *path;
DIR *dp;
struct dirent *d;
struct stat s;
- gint num;
- GSList *list = NULL;
+ gint num, nummsgs = 0;
- g_return_val_if_fail(item != NULL, NULL);
+ g_return_val_if_fail(item != NULL, -1);
debug_print("mh_get_last_num(): Scanning %s ...\n", item->path);
path = folder_item_get_path(item);
- g_return_val_if_fail(path != NULL, NULL);
+ g_return_val_if_fail(path != NULL, -1);
if (change_dir(path) < 0) {
g_free(path);
- return NULL;
+ return -1;
}
g_free(path);
if ((dp = opendir(".")) == NULL) {
FILE_OP_ERROR(item->path, "opendir");
- return NULL;
+ return -1;
}
while ((d = readdir(dp)) != NULL) {
if ((num = to_number(d->d_name)) >= 0 &&
stat(d->d_name, &s) == 0 &&
S_ISREG(s.st_mode)) {
- list = g_slist_prepend(list, GINT_TO_POINTER(num));
+ *list = g_slist_prepend(*list, GINT_TO_POINTER(num));
+ nummsgs++;
}
}
closedir(dp);
- return list;
+ return nummsgs;
}
GSList *mh_get_msg_list(Folder *folder, FolderItem *item, gboolean use_cache)