GList * nautilus_directory_match_pattern (NautilusDirectory *directory, const char *pattern) { GList *files, *l, *ret; GPatternSpec *spec; ret = NULL; spec = g_pattern_spec_new (pattern); files = nautilus_directory_get_file_list (directory); for (l = files; l; l = l->next) { NautilusFile *file; char *name; file = NAUTILUS_FILE (l->data); name = nautilus_file_get_display_name (file); if (g_pattern_match_string (spec, name)) { ret = g_list_prepend(ret, nautilus_file_ref (file)); } g_free (name); } g_pattern_spec_free (spec); nautilus_file_list_free (files); return ret; }
static GList * desktop_get_file_list (NautilusDirectory *directory) { GList *real_dir_file_list, *desktop_dir_file_list = NULL; real_dir_file_list = nautilus_directory_get_file_list (NAUTILUS_DESKTOP_DIRECTORY (directory)->details->real_directory); desktop_dir_file_list = NAUTILUS_DIRECTORY_CLASS (nautilus_desktop_directory_parent_class)->get_file_list (directory); return g_list_concat (real_dir_file_list, desktop_dir_file_list); }
static GList * desktop_get_file_list (NautilusDirectory *directory) { GList *real_dir_file_list, *desktop_dir_file_list = NULL; real_dir_file_list = nautilus_directory_get_file_list (NAUTILUS_DESKTOP_DIRECTORY (directory)->details->real_directory); desktop_dir_file_list = EEL_CALL_PARENT_WITH_RETURN_VALUE (NAUTILUS_DIRECTORY_CLASS, get_file_list, (directory)); return g_list_concat (real_dir_file_list, desktop_dir_file_list); }
static gboolean search_directory_file_get_item_count (NautilusFile *file, guint *count, gboolean *count_unreadable) { GList *file_list; if (count) { file_list = nautilus_directory_get_file_list (file->details->directory); *count = g_list_length (file_list); nautilus_file_list_free (file_list); } return TRUE; }
static NautilusRequestStatus search_directory_file_get_deep_counts (NautilusFile *file, guint *directory_count, guint *file_count, guint *unreadable_directory_count, goffset *total_size) { NautilusSearchDirectory *search_dir; NautilusFile *dir_file; GList *file_list, *l; guint dirs, files; GFileType type; search_dir = NAUTILUS_SEARCH_DIRECTORY (file->details->directory); file_list = nautilus_directory_get_file_list (file->details->directory); dirs = files = 0; for (l = file_list; l != NULL; l = l->next) { dir_file = NAUTILUS_FILE (l->data); type = nautilus_file_get_file_type (dir_file); if (type == G_FILE_TYPE_DIRECTORY) { dirs++; } else { files++; } } if (directory_count != NULL) { *directory_count = dirs; } if (file_count != NULL) { *file_count = files; } if (unreadable_directory_count != NULL) { *unreadable_directory_count = 0; } if (total_size != NULL) { /* FIXME: Maybe we want to calculate this? */ *total_size = 0; } nautilus_file_list_free (file_list); return NAUTILUS_REQUEST_DONE; }
static gboolean search_directory_file_get_item_count (NautilusFile *file, guint *count, gboolean *count_unreadable) { NautilusSearchDirectory *search_dir; GList *file_list; if (count) { search_dir = NAUTILUS_SEARCH_DIRECTORY (file->details->directory); file_list = nautilus_directory_get_file_list (file->details->directory); *count = g_list_length (file_list); nautilus_file_list_free (file_list); } return TRUE; }
NautilusFile* nautilus_directory_get_file_by_name (NautilusDirectory *directory, const gchar *name) { GList *files; GList *l; NautilusFile *result = NULL; files = nautilus_directory_get_file_list (directory); for (l = files; l != NULL; l = l->next) { if (nautilus_file_compare_display_name (l->data, name) == 0) { result = nautilus_file_ref (l->data); break; } } nautilus_file_list_free (files); return result; }