static char * get_regexp_name (const char *regexp, const char *path, gboolean dir) { MateVFSResult result; GList *list, *node; MateVFSFileInfo *info; char *res = NULL; result = mate_vfs_directory_list_load ( &list, path, MATE_VFS_FILE_INFO_DEFAULT); if (show_if_error (result, "open directory ", path)) return NULL; for (node = list; node != NULL; node = node->next) { info = node->data; if (simple_regexp (regexp, info->name)) { if (info->valid_fields & MATE_VFS_FILE_INFO_FIELDS_TYPE) { if ((dir && info->type == MATE_VFS_FILE_TYPE_DIRECTORY) || (!dir && info->type != MATE_VFS_FILE_TYPE_DIRECTORY)) { res = g_strdup (info->name); break; } } else { fprintf (vfserr, "Can't cope with no type data"); res = g_strdup (info->name); break; } } } mate_vfs_file_info_list_free (list); return res; }
static gboolean validate_path (const char *path) { MateVFSResult result; GList *list; result = mate_vfs_directory_list_load ( &list, path, MATE_VFS_FILE_INFO_DEFAULT); if (show_if_error (result, "open directory ", path)) { return FALSE; } mate_vfs_file_info_list_free (list); return TRUE; }
int main (int argc, char **argv) { GList *list; MateVFSResult result; GTimer *timer; gchar *text_uri; GOptionContext *ctx = NULL; GError *error = NULL; ctx = g_option_context_new("test-directory"); g_option_context_add_main_entries(ctx, options, NULL); if (!g_option_context_parse(ctx, &argc, &argv, &error)) { g_printerr("main: %s\n", error->message); g_error_free(error); g_option_context_free(ctx); return 1; } g_option_context_free(ctx); if (argc != 2 || argv[1] == NULL) { g_printerr("Usage: %s [<options>] <uri>\n", argv[0]); return 1; } text_uri = g_strdup(argv[1]); mate_vfs_init (); printf ("Loading directory..."); fflush (stdout); if (measure_speed) { timer = g_timer_new (); g_timer_start (timer); } else { timer = NULL; } /* Load with without requesting any metadata. */ result = mate_vfs_directory_list_load (&list, text_uri, (MATE_VFS_FILE_INFO_GET_MIME_TYPE | MATE_VFS_FILE_INFO_FORCE_FAST_MIME_TYPE | MATE_VFS_FILE_INFO_FOLLOW_LINKS)); if (result == MATE_VFS_OK && measure_speed) { gdouble elapsed_seconds; guint num_entries; g_timer_stop (timer); elapsed_seconds = g_timer_elapsed (timer, NULL); num_entries = g_list_length (list); printf ("\n%.5f seconds for %d unsorted entries, %.5f entries/sec.\n", elapsed_seconds, num_entries, (double) num_entries / elapsed_seconds); } if (!measure_speed) { printf ("Ok\n"); show_result (result, "load_directory", text_uri); printf ("Listing for `%s':\n", text_uri); print_list (list); } printf ("Destroying.\n"); mate_vfs_file_info_list_free (list); printf ("Done.\n"); g_free (text_uri); return 0; }
static void do_ls (void) { MateVFSResult result; GList *list, *node; MateVFSFileInfo *info; const char *path; if (!arg_data [arg_cur]) path = cur_dir; else path = arg_data [arg_cur++]; result = mate_vfs_directory_list_load (&list, path, MATE_VFS_FILE_INFO_DEFAULT | MATE_VFS_FILE_INFO_GET_MIME_TYPE); if (show_if_error (result, "open directory ", cur_dir)) return; for (node = list; node != NULL; node = node->next) { char prechar = '\0', postchar = '\0'; info = node->data; if (info->valid_fields & MATE_VFS_FILE_INFO_FIELDS_TYPE) { switch (info->type) { case MATE_VFS_FILE_TYPE_DIRECTORY: prechar = '['; postchar = ']'; break; case MATE_VFS_FILE_TYPE_UNKNOWN: prechar = '?'; break; case MATE_VFS_FILE_TYPE_FIFO: prechar = '|'; break; case MATE_VFS_FILE_TYPE_SOCKET: prechar = '-'; break; case MATE_VFS_FILE_TYPE_CHARACTER_DEVICE: case MATE_VFS_FILE_TYPE_BLOCK_DEVICE: prechar = '@'; break; case MATE_VFS_FILE_TYPE_SYMBOLIC_LINK: prechar = '#'; break; default: prechar = '\0'; break; } if (!postchar) postchar = prechar; } printf ("%c%s%c", prechar, info->name, postchar); if (strlen (info->name) < 40) { int i, pad; pad = 40 - strlen (info->name) - (prechar?1:0) - (postchar?1:0); for (i = 0; i < pad; i++) printf (" "); } if (info->valid_fields & MATE_VFS_FILE_INFO_FIELDS_SIZE) { long i = info->size; printf (" : %ld bytes", i); } if (info->valid_fields & MATE_VFS_FILE_INFO_FIELDS_MIME_TYPE) { printf (", type '%s'", info->mime_type); } printf ("\n"); } mate_vfs_file_info_list_free (list); }