static int xplayer_pl_parser_dir_compare (GFileInfo *a, GFileInfo *b) { const char *name_1, *name_2; char *key_1, *key_2; gboolean sort_last_1, sort_last_2; int compare; name_1 = g_file_info_get_name (a); name_2 = g_file_info_get_name (b); if (name_1 == NULL) { if (name_2 == NULL) compare = 0; else compare = -1; } else { sort_last_1 = name_1[0] == SORT_LAST_CHAR1 || name_1[0] == SORT_LAST_CHAR2; sort_last_2 = name_2[0] == SORT_LAST_CHAR1 || name_2[0] == SORT_LAST_CHAR2; if (sort_last_1 && !sort_last_2) { compare = +1; } else if (!sort_last_1 && sort_last_2) { compare = -1; } else { key_1 = g_utf8_collate_key_for_filename (name_1, -1); key_2 = g_utf8_collate_key_for_filename (name_2, -1); compare = strcmp (key_1, key_2); g_free (key_1); g_free (key_2); } } return compare; }
static SoupBuffer * webkit_soup_directory_input_stream_parse_info (WebKitSoupDirectoryInputStream * stream, GFileInfo * info) { SoupBuffer *buffer; GString *string; const char *s; char *escaped, *path, *xml_string; if (!g_file_info_get_name (info)) return NULL; s = g_file_info_get_display_name (info); if (!s) { s = g_file_info_get_name (info); /* FIXME: convert somehow? */ if (!g_utf8_validate (s, -1, NULL)) return NULL; } string = g_string_new ("<tr>"); xml_string = g_markup_escape_text (s, -1); escaped = g_uri_escape_string (g_file_info_get_name (info), NULL, FALSE); path = g_strconcat (stream->uri, "/", escaped, NULL); g_free (escaped); g_string_append_printf (string, "<td><a href=\"%s\">%s</a></td>", path, xml_string); g_free (path); g_free (xml_string); g_string_append (string, "</tr>"); buffer = soup_buffer_new (SOUP_MEMORY_TAKE, string->str, string->len); g_string_free (string, FALSE); return buffer; }
/** * Sort function compares according to file type (directory/file) * and alphabethical order * @param a pointer to GFileInfo object to compare * @param b pointer to GFileInfo object to compare * @return -1 when first object should be before the second, 0 when equal, * +1 when second object should be before the first */ static gint FileInfoComparator(gconstpointer a, gconstpointer b) { GFileInfo *ia = ( GFileInfo *) a; GFileInfo *ib = ( GFileInfo *) b; if (g_file_info_get_file_type(ia) == G_FILE_TYPE_DIRECTORY && g_file_info_get_file_type(ib) != G_FILE_TYPE_DIRECTORY) return -1; if (g_file_info_get_file_type(ib) == G_FILE_TYPE_DIRECTORY && g_file_info_get_file_type(ia) != G_FILE_TYPE_DIRECTORY) return 1; return strcasecmp(g_file_info_get_name(ia), g_file_info_get_name(ib)); }
static void add_themes_from_dir (DialogData *data, GFile *dir) { GFileEnumerator *enumerator; GFileInfo *file_info; enumerator = g_file_enumerate_children (dir, (G_FILE_ATTRIBUTE_STANDARD_NAME "," G_FILE_ATTRIBUTE_STANDARD_TYPE "," G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME), G_FILE_QUERY_INFO_NONE, NULL, NULL); if (enumerator == NULL) return; while ((file_info = g_file_enumerator_next_file (enumerator, NULL, NULL)) != NULL) { GFile *file; char *filename; GdkPixbuf *preview; if (g_file_info_get_file_type (file_info) != G_FILE_TYPE_DIRECTORY) { g_object_unref (file_info); continue; } file = _g_file_get_child (dir, g_file_info_get_name (file_info), "preview.png", NULL); filename = g_file_get_path (file); preview = gdk_pixbuf_new_from_file_at_size (filename, 128, 128, NULL); if (preview != NULL) { GtkTreeIter iter; gtk_list_store_append (GTK_LIST_STORE (GET_WIDGET ("theme_liststore")), &iter); gtk_list_store_set (GTK_LIST_STORE (GET_WIDGET ("theme_liststore")), &iter, THEME_COLUMN_ID, g_file_info_get_name (file_info), THEME_COLUMN_NAME, g_file_info_get_display_name (file_info), THEME_COLUMN_PREVIEW, preview, -1); } g_object_unref (preview); g_free (filename); g_object_unref (file); g_object_unref (file_info); } g_object_unref (enumerator); }
QStringList Dir::m_entry_list() { QStringList entries; if(m_info->isDir()) { GError *err = NULL; GFileEnumerator *enumerator = g_file_enumerate_children(m_file, "*", G_FILE_QUERY_INFO_NONE, NULL, &err); if(!enumerator) { g_object_unref(enumerator); return entries; } for(GFileInfo *info = g_file_enumerator_next_file(enumerator, NULL, &err); !(info == 0); info = g_file_enumerator_next_file(enumerator , NULL, &err)) { entries.append(QString(g_file_get_uri(m_file)) + "/" + QString(g_file_info_get_name(info))); g_object_unref(info); } g_file_enumerator_close(enumerator, NULL, &err); g_object_unref(enumerator); } return entries; }
static void g_zlib_compressor_set_gzheader (GZlibCompressor *compressor) { /* On win32, these functions were not exported before 1.2.4 */ #if !defined (G_OS_WIN32) || ZLIB_VERNUM >= 0x1240 const gchar *filename; if (compressor->format != G_ZLIB_COMPRESSOR_FORMAT_GZIP || compressor->file_info == NULL) return; memset (&compressor->gzheader, 0, sizeof (gz_header)); compressor->gzheader.os = 0x03; /* Unix */ filename = g_file_info_get_name (compressor->file_info); compressor->gzheader.name = (Bytef *) filename; compressor->gzheader.name_max = filename ? strlen (filename) + 1 : 0; compressor->gzheader.time = (uLong) g_file_info_get_attribute_uint64 (compressor->file_info, G_FILE_ATTRIBUTE_TIME_MODIFIED); if (deflateSetHeader (&compressor->zstream, &compressor->gzheader) != Z_OK) g_warning ("unexpected zlib error: %s\n", compressor->zstream.msg); #endif /* !G_OS_WIN32 || ZLIB >= 1.2.4 */ }
/* * Called for each file in a directory. Checks if the file is some * sort of image. If so, it creates an image object and adds it to the * list. */ static void directory_visit (GFile *directory, GFileInfo *children_info, EogListStore *store) { GFile *child; gboolean load_uri = FALSE; const char *mime_type, *name; mime_type = g_file_info_get_content_type (children_info); name = g_file_info_get_name (children_info); if (!g_str_has_prefix (name, ".")) { if (eog_image_is_supported_mime_type (mime_type)) { load_uri = TRUE; } } if (load_uri) { const gchar *caption; child = g_file_get_child (directory, name); caption = g_file_info_get_display_name (children_info); eog_list_store_append_image_from_file (store, child, caption); } }
static GList * get_description_files (GFile *dir) { GFileEnumerator *enumerator; GFileInfo *info; GFile *desc_file; GList *files; const gchar *name; enumerator = g_file_enumerate_children (dir, G_FILE_ATTRIBUTE_STANDARD_NAME, G_FILE_QUERY_INFO_NONE, NULL, NULL); if (!enumerator) { return NULL; } files = NULL; while ((info = g_file_enumerator_next_file (enumerator, NULL, NULL)) != NULL) { name = g_file_info_get_name (info); if (g_str_has_suffix (name, ".description")) { desc_file = g_file_enumerator_get_child (enumerator, info); files = g_list_insert_sorted (files, desc_file, compare_files); } g_object_unref (info); } g_object_unref (enumerator); return files; }
static void _delete_trash_file (GFile *file, gboolean del_file, gboolean del_children) { GFileInfo *info; GFile *child; GFileEnumerator *enumerator; if (del_children) { enumerator = g_file_enumerate_children (file, G_FILE_ATTRIBUTE_STANDARD_NAME "," G_FILE_ATTRIBUTE_STANDARD_TYPE, G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, NULL, NULL); if (enumerator) { while ((info = g_file_enumerator_next_file (enumerator, NULL, NULL)) != NULL) { child = g_file_get_child (file, g_file_info_get_name (info)); _delete_trash_file (child, TRUE, g_file_info_get_file_type (info) == G_FILE_TYPE_DIRECTORY); g_object_unref (child); g_object_unref (info); } g_file_enumerator_close (enumerator, NULL, NULL); g_object_unref (enumerator); } } if (del_file) { g_file_delete (file, NULL, NULL); } }
/*Recursively delete the file.*/ void codeslayer_utils_file_delete (GFile *file, GError **error) { GFileEnumerator *enumerator; enumerator = g_file_enumerate_children (file, "standard::*", G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, NULL, NULL); if (enumerator != NULL) { GFileInfo *file_info; while ((file_info = g_file_enumerator_next_file (enumerator, NULL, NULL)) != NULL) { GFile *child; const char *file_name = g_file_info_get_name (file_info); child = g_file_get_child (file, file_name); if (g_file_info_get_file_type (file_info) == G_FILE_TYPE_DIRECTORY) codeslayer_utils_file_delete (child, error); g_file_delete (child, NULL, error); g_object_unref(child); g_object_unref (file_info); } g_object_unref (enumerator); } g_file_delete (file, NULL, error); }
static void updater_find_sub_directories (updater_t *updater, GFile *file) { GFileEnumerator *enumerator; GFileInfo *info; GError *err = NULL; g_return_if_fail (updater); g_return_if_fail (file); enumerator = g_file_enumerate_children (file, G_FILE_ATTRIBUTE_STANDARD_NAME, G_FILE_QUERY_INFO_NONE, NULL, &err); g_clear_error (&err); while ((info = g_file_enumerator_next_file (enumerator, NULL, &err)) != NULL) { const gchar *name; GFile *child; name = g_file_info_get_name (info); child = g_file_get_child (file, name); g_object_unref (info); updater_add_watcher (updater, child); g_object_unref (child); } g_object_unref (enumerator); }
int main (int argc, char **argv) { GFile *dir; GFileEnumerator *fenum; GFileInfo *info; GError *error = NULL; g_type_init(); dir = g_file_new_for_uri ("file:///home/gabriel/Fotos/Festa%20D%C3%A9ia"); fenum = g_file_enumerate_children (dir, "*", G_FILE_QUERY_INFO_NONE, NULL, &error); if (error) g_printerr ("FUDEU: %s\n", error->message); while ((info = g_file_enumerator_next_file(fenum, NULL, NULL))){ g_print ("LISTANDO: %s\n", g_file_info_get_name (info)); g_object_unref (info); } return 0; }
static void directory_foreach (GFile *file, gchar *suffix, GFunc func, gpointer user_data) { GFileEnumerator *enumerator; GFileInfo *info; GFile *child; enumerator = g_file_enumerate_children (file, G_FILE_ATTRIBUTE_STANDARD_NAME, G_FILE_QUERY_INFO_NONE, NULL, NULL); if (!enumerator) { return; } while ((info = g_file_enumerator_next_file (enumerator, NULL, NULL)) != NULL) { if (!suffix || g_str_has_suffix (g_file_info_get_name (info), suffix)) { child = g_file_enumerator_get_child (enumerator, info); (func) (child, user_data); g_object_unref (child); } g_object_unref (info); } g_object_unref (enumerator); }
static void rb_psp_source_create_playlists (RBGenericPlayerSource *source) { GMount *mount; GFile *music_dir; g_object_get (source, "mount", &mount, NULL); music_dir = find_music_dir (mount); g_object_unref (mount); if (music_dir != NULL) { GFileEnumerator *e; GFileInfo *info; e = g_file_enumerate_children (music_dir, G_FILE_ATTRIBUTE_STANDARD_NAME","G_FILE_ATTRIBUTE_STANDARD_TYPE, G_FILE_QUERY_INFO_NONE, NULL, NULL); if (e != NULL) { while ((info = g_file_enumerator_next_file (e, NULL, NULL)) != NULL) { GFile *file; const char *name; if (g_file_info_get_file_type (info) != G_FILE_TYPE_DIRECTORY) { g_object_unref (info); continue; } name = g_file_info_get_name (info); file = g_file_resolve_relative_path (music_dir, name); visit_playlist_dirs (RB_PSP_SOURCE (source), file); g_object_unref (file); g_object_unref (info); } g_object_unref (e); } g_object_unref (music_dir); } }
static gint sort_info_by_name (GFileInfo *a, GFileInfo *b) { const char *na; const char *nb; na = g_file_info_get_name (a); nb = g_file_info_get_name (b); if (na == NULL) na = ""; if (nb == NULL) nb = ""; return strcmp (na, nb); }
/* Asserts that all files in @included are also in @including */ static void scan_directory (GFile *directory, FileScannedCallback scanned_callback, gpointer callback_data) { GQueue *files; GQueue *file_infos; GFileEnumerator *enumerator; files = g_queue_new (); file_infos = g_queue_new (); g_queue_push_tail (files, g_object_ref (directory)); g_queue_push_tail (file_infos, g_file_query_info (directory, G_FILE_ATTRIBUTE_STANDARD_NAME"," G_FILE_ATTRIBUTE_STANDARD_TYPE, G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, NULL, NULL)); while (!g_queue_is_empty (files)) { g_autoptr (GFile) file; g_autoptr (GFileInfo) file_info; file = g_queue_pop_tail (files); file_info = g_queue_pop_tail (file_infos); if (scanned_callback) { scanned_callback (file, file_info, callback_data); } if (g_file_info_get_file_type (file_info) == G_FILE_TYPE_DIRECTORY) { enumerator = g_file_enumerate_children (file, G_FILE_ATTRIBUTE_STANDARD_NAME"," G_FILE_ATTRIBUTE_STANDARD_TYPE, G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, NULL, NULL); if (enumerator) { GFile *child; GFileInfo *child_info; child_info = g_file_enumerator_next_file (enumerator, NULL, NULL); while (child_info != NULL) { child = g_file_get_child (file, g_file_info_get_name (child_info)); g_queue_push_tail (files, child); g_queue_push_tail (file_infos, child_info); child_info = g_file_enumerator_next_file (enumerator, NULL, NULL); } g_object_unref (enumerator); } } } g_queue_free_full (files, g_object_unref); g_queue_free_full (file_infos, g_object_unref); }
static GArray * _get_ref_frame_cache (GstValidateSsim * self, const gchar * ref_file) { GFile *ref_dir_file = NULL; GFileInfo *info; GFileEnumerator *fenum; GArray *frames = NULL; gchar *ref_dir = NULL; ref_dir = g_path_get_dirname (ref_file); frames = g_hash_table_lookup (self->priv->ref_frames_cache, ref_file); if (frames) goto done; ref_dir_file = g_file_new_for_path (ref_dir); if (!(fenum = g_file_enumerate_children (ref_dir_file, "standard::*", G_FILE_QUERY_INFO_NONE, NULL, NULL))) { GST_INFO ("%s is not a folder", ref_dir); goto done; } for (info = g_file_enumerator_next_file (fenum, NULL, NULL); info; info = g_file_enumerator_next_file (fenum, NULL, NULL)) { Frame iframe; const gchar *display_name = g_file_info_get_display_name (info); if (!_filename_get_timestamp (self, display_name, &iframe.ts)) { g_object_unref (info); continue; } iframe.path = g_build_path (G_DIR_SEPARATOR_S, ref_dir, g_file_info_get_name (info), NULL); g_object_unref (info); if (!frames) { frames = g_array_new (TRUE, TRUE, sizeof (Frame)); g_array_set_clear_func (frames, (GDestroyNotify) _free_frame); } g_array_append_val (frames, iframe); } if (frames) { g_array_sort (frames, (GCompareFunc) _sort_frames); g_hash_table_insert (self->priv->ref_frames_cache, g_strdup (ref_dir), frames); } done: g_clear_object (&ref_dir_file); g_free (ref_dir); return frames; }
/** * ostree_repo_checkout_gc: * @self: Repo * @cancellable: Cancellable * @error: Error * * Call this after finishing a succession of checkout operations; it * will delete any currently-unused uncompressed objects from the * cache. */ gboolean ostree_repo_checkout_gc (OstreeRepo *self, GCancellable *cancellable, GError **error) { gboolean ret = FALSE; g_autoptr(GHashTable) to_clean_dirs = NULL; GHashTableIter iter; gpointer key, value; g_mutex_lock (&self->cache_lock); to_clean_dirs = self->updated_uncompressed_dirs; self->updated_uncompressed_dirs = g_hash_table_new (NULL, NULL); g_mutex_unlock (&self->cache_lock); if (to_clean_dirs) g_hash_table_iter_init (&iter, to_clean_dirs); while (to_clean_dirs && g_hash_table_iter_next (&iter, &key, &value)) { g_autoptr(GFile) objdir = NULL; g_autoptr(GFileEnumerator) enumerator = NULL; g_autofree char *objdir_name = NULL; objdir_name = g_strdup_printf ("%02x", GPOINTER_TO_UINT (key)); objdir = g_file_get_child (self->uncompressed_objects_dir, objdir_name); enumerator = g_file_enumerate_children (objdir, "standard::name,standard::type,unix::inode,unix::nlink", G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, cancellable, error); if (!enumerator) goto out; while (TRUE) { GFileInfo *file_info; guint32 nlinks; if (!gs_file_enumerator_iterate (enumerator, &file_info, NULL, cancellable, error)) goto out; if (file_info == NULL) break; nlinks = g_file_info_get_attribute_uint32 (file_info, "unix::nlink"); if (nlinks == 1) { g_autoptr(GFile) objpath = NULL; objpath = g_file_get_child (objdir, g_file_info_get_name (file_info)); if (!gs_file_unlink (objpath, cancellable, error)) goto out; } } } ret = TRUE; out: return ret; }
static void delete_batch (GObject *source, GAsyncResult *res, gpointer user_data) { GFileEnumerator *enumerator = G_FILE_ENUMERATOR (source); DeleteData *data = user_data; GList *files, *f; GFile *child_file; DeleteData *child; GFileInfo *info; GError *error = NULL; files = g_file_enumerator_next_files_finish (enumerator, res, &error); g_debug ("GsdHousekeeping: purging %d children of %s", g_list_length (files), data->name); if (files) { for (f = files; f; f = f->next) { if (g_cancellable_is_cancelled (data->cancellable)) break; info = f->data; child_file = g_file_get_child (data->file, g_file_info_get_name (info)); child = delete_data_new (child_file, data->cancellable, data->old, data->dry_run, data->trash, data->depth + 1); delete_recursively_by_age (child); delete_data_unref (child); g_object_unref (child_file); } g_list_free_full (files, g_object_unref); if (!g_cancellable_is_cancelled (data->cancellable)) { g_file_enumerator_next_files_async (enumerator, 20, 0, data->cancellable, delete_batch, data); return; } } g_file_enumerator_close (enumerator, data->cancellable, NULL); g_object_unref (enumerator); if (data->depth > 0 && !g_cancellable_is_cancelled (data->cancellable)) { if ((data->trash && data->depth > 1) || should_purge_file (data->file, data->cancellable, data->old)) { g_debug ("GsdHousekeeping: purging %s\n", data->name); if (!data->dry_run) { g_file_delete (data->file, data->cancellable, NULL); } } } delete_data_unref (data); }
void test_utils_add_test_for_all_files (const gchar *prefix, GFile *base, GFile *file, GTestDataFunc test_func, AddTestFunc add_test_func) { GFileEnumerator *enumerator; GFileInfo *info; GList *l, *files; GError *error = NULL; if (g_file_query_file_type (file, 0, NULL) != G_FILE_TYPE_DIRECTORY) { gchar *test_path; gchar *relative_path; if (base) relative_path = g_file_get_relative_path (base, file); else relative_path = g_file_get_path (file); test_path = g_strconcat (prefix, "/", relative_path, NULL); g_test_add_data_func_full (test_path, g_object_ref (file), test_func, g_object_unref); return; } enumerator = g_file_enumerate_children (file, G_FILE_ATTRIBUTE_STANDARD_NAME, 0, NULL, &error); g_assert_no_error (error); files = NULL; while ((info = g_file_enumerator_next_file (enumerator, NULL, &error))) { GFile *next_file = g_file_get_child (file, g_file_info_get_name (info)); if (add_test_func == NULL || add_test_func (next_file)) { files = g_list_prepend (files, g_object_ref (next_file)); } g_object_unref (next_file); g_object_unref (info); } g_assert_no_error (error); g_object_unref (enumerator); files = g_list_sort (files, compare_files); for (l = files; l; l = l->next) { test_utils_add_test_for_all_files (prefix, base, l->data, test_func, add_test_func); } g_list_free_full (files, g_object_unref); }
static GFile * find_dir_no_case (GFile *root, gboolean look_for_psp) { GFileEnumerator *e; GFileInfo *info; GFile *ret; GFile *music_dir; ret = music_dir = NULL; e = g_file_enumerate_children (root, G_FILE_ATTRIBUTE_STANDARD_NAME","G_FILE_ATTRIBUTE_STANDARD_TYPE, G_FILE_QUERY_INFO_NONE, NULL, NULL); if (e == NULL) return ret; while ((info = g_file_enumerator_next_file (e, NULL, NULL)) != NULL) { const char *name; name = g_file_info_get_name (info); if (g_file_info_get_file_type (info) != G_FILE_TYPE_DIRECTORY) { g_object_unref (info); continue; } if (g_ascii_strcasecmp (name, "MUSIC") == 0) { music_dir = g_file_resolve_relative_path (root, name); g_object_unref (info); if (look_for_psp) continue; else break; } if (look_for_psp) { if (g_ascii_strcasecmp (name, "PSP") == 0) { GFile *psp_dir; psp_dir = g_file_resolve_relative_path (root, name); ret = find_dir_no_case (psp_dir, FALSE); g_object_unref (psp_dir); if (ret != NULL) { g_object_unref (info); if (music_dir != NULL) g_object_unref (music_dir); music_dir = NULL; break; } } } g_object_unref (info); } g_object_unref (e); if (ret == NULL) ret = music_dir; return ret; }
bool recursive_delete_path( GFile * file ) { bool result = false; GFileInfo * info = g_file_query_info( file, "standard::*", G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, NULL, NULL ); if ( info ) { if ( g_file_info_get_file_type( info ) == G_FILE_TYPE_DIRECTORY ) { GFileEnumerator * enumerator = g_file_enumerate_children( file, "standard::*", G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, NULL, NULL ); if ( enumerator ) { while ( true ) { GError * error = NULL; GFileInfo * child_info = g_file_enumerator_next_file( enumerator, NULL, &error ); if ( ! child_info ) { g_clear_error( &error ); break; } GFile * child = g_file_resolve_relative_path( file, g_file_info_get_name( child_info ) ); bool child_deleted = recursive_delete_path( child ); g_object_unref( G_OBJECT( child_info ) ); g_object_unref( G_OBJECT( child ) ); if ( ! child_deleted ) { break; } } g_object_unref( G_OBJECT( enumerator ) ); } } g_object_unref( G_OBJECT( info ) ); gchar * s = g_file_get_path( file ); g_debug( "DELETING '%s'", s ); g_free( s ); // Will delete the file or directory result = g_file_delete( file, NULL, NULL ); } return result; }
/* Search the documentation pages for the string 'text', building the index if necessary */ void i7_search_window_search_documentation(I7SearchWindow *self) { GError *err; if(doc_index == NULL) { /* documentation index hasn't been built yet */ GFile *doc_file = i7_app_get_data_file_va(i7_app_get(), "Documentation", NULL); GFileEnumerator *docdir; if((docdir = g_file_enumerate_children(doc_file, "standard::*", G_FILE_QUERY_INFO_NONE, NULL, &err)) == NULL) { IO_ERROR_DIALOG(GTK_WINDOW(self), doc_file, err, _("opening documentation directory")); g_object_unref(doc_file); return; } start_spinner(self); GFileInfo *info; while((info = g_file_enumerator_next_file(docdir, NULL, &err)) != NULL) { const char *basename = g_file_info_get_name(info); const char *displayname = g_file_info_get_display_name(info); if(!g_str_has_suffix(basename, ".html") || (!g_str_has_prefix(basename, "doc") && !g_str_has_prefix(basename, "Rdoc"))) continue; char *label = g_strdup_printf(_("Please be patient, indexing %s..."), displayname); gtk_label_set_text(GTK_LABEL(self->search_text), label); g_free(label); while(gtk_events_pending()) gtk_main_iteration(); GFile *file = g_file_get_child(doc_file, basename); GSList *doctexts = html_to_ascii(file, g_str_has_prefix(basename, "R")); g_object_unref(file); if(doctexts != NULL) { GSList *iter; /* Append the entries to the documentation index and search them right now while we're at it */ for(iter = doctexts; iter != NULL; iter = g_slist_next(iter)) { doc_index = g_list_prepend(doc_index, iter->data); search_documentation(iter->data, self); } g_slist_free(doctexts); } } g_object_unref(doc_file); stop_spinner(self); update_label(self); } else { start_spinner(self); g_list_foreach(doc_index, (GFunc)search_documentation, self); stop_spinner(self); } return; }
void locke_appmanager_scan_for_deploys(LockeAppManager *lam, GFile *deployDir) { if (g_file_query_file_type(deployDir, G_FILE_QUERY_INFO_NONE, NULL) != G_FILE_TYPE_DIRECTORY) { g_log(LSVR_DOMAIN, G_LOG_LEVEL_WARNING, "Hey, autodeploy dir '%s' does not exist!! Create it to be able to make deploys. ", g_file_get_path(deployDir)); return; } g_log(LSVR_DOMAIN, G_LOG_LEVEL_INFO, "Scanning folder '%s' for application deployments", g_file_get_path(deployDir)); /* Get file enumerator */ GError *err = NULL; GFileEnumerator *files = g_file_enumerate_children(deployDir, "*", G_FILE_QUERY_INFO_NONE, NULL, &err); if (err != NULL) { /* Report error to user, and free error */ g_log(LSVR_DOMAIN, G_LOG_LEVEL_ERROR, "Unable to get file list for directory '%s': %s", g_file_get_path(deployDir), err->message); g_error_free(err); goto scan_for_deploys_finally; } /* process each file individually */ GFileInfo *fileInfo = NULL; do { fileInfo = g_file_enumerator_next_file(files, NULL, &err); if (err != NULL) { /* Report error to user, and free error */ g_log(LSVR_DOMAIN, G_LOG_LEVEL_ERROR, "Unable to get file for directory '%s': %s", g_file_get_path(deployDir), err->message); g_error_free(err); goto scan_for_deploys_finally; } /* stop condition */ if (fileInfo == NULL) break; /* finally, process the file */ g_log(LSVR_DOMAIN, G_LOG_LEVEL_INFO, " =========> Processing file '%s'", g_file_info_get_display_name(fileInfo)); locke_appmanager_add_application(lam, g_file_get_path(deployDir), g_file_info_get_name(fileInfo)); } while (TRUE); /* Close open things */ g_file_enumerator_close(files, NULL, &err); if (err != NULL) { /* Report error to user, and free error */ g_log(LSVR_DOMAIN, G_LOG_LEVEL_ERROR, "Error closing file enumerator for directory '%s': %s", g_file_get_path(deployDir), err->message); g_error_free(err); goto scan_for_deploys_finally; } /* Free allocated memory */ scan_for_deploys_finally: g_object_unref(files); }
static gboolean relabel_recursively (OstreeSePolicy *sepolicy, GFile *dir, GFileInfo *dir_info, GPtrArray *path_parts, GCancellable *cancellable, GError **error) { gboolean ret = FALSE; g_autoptr(GFileEnumerator) direnum = NULL; if (!relabel_one_path (sepolicy, dir, dir_info, path_parts, cancellable, error)) goto out; direnum = g_file_enumerate_children (dir, OSTREE_GIO_FAST_QUERYINFO, G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, cancellable, error); if (!direnum) goto out; while (TRUE) { GFileInfo *file_info; GFile *child; GFileType ftype; if (!g_file_enumerator_iterate (direnum, &file_info, &child, cancellable, error)) goto out; if (file_info == NULL) break; g_ptr_array_add (path_parts, (char*)g_file_info_get_name (file_info)); ftype = g_file_info_get_file_type (file_info); if (ftype == G_FILE_TYPE_DIRECTORY) { if (!relabel_recursively (sepolicy, child, file_info, path_parts, cancellable, error)) goto out; } else { if (!relabel_one_path (sepolicy, child, file_info, path_parts, cancellable, error)) goto out; } g_ptr_array_remove_index (path_parts, path_parts->len - 1); } ret = TRUE; out: return ret; }
static GList * ephy_web_application_get_application_list_internal (gboolean only_legacy) { GFileEnumerator *children = NULL; GFileInfo *info; GList *applications = NULL; g_autofree char *parent_directory_path = NULL; g_autoptr(GFile) parent_directory = NULL; if (only_legacy) parent_directory_path = g_build_filename (g_get_user_config_dir (), "epiphany", NULL); else parent_directory_path = g_strdup (g_get_user_data_dir ()); parent_directory = g_file_new_for_path (parent_directory_path); children = g_file_enumerate_children (parent_directory, "standard::name", 0, NULL, NULL); if (!children) return NULL; info = g_file_enumerator_next_file (children, NULL, NULL); while (info) { const char *name; name = g_file_info_get_name (info); if ((only_legacy && g_str_has_prefix (name, "app-")) || (!only_legacy && g_str_has_prefix (name, EPHY_WEB_APP_PROGRAM_NAME_PREFIX))) { EphyWebApplication *app; char *profile_dir; profile_dir = g_build_filename (parent_directory_path, name, NULL); app = ephy_web_application_for_profile_directory (profile_dir); if (app) { if (!only_legacy) { g_autofree char *app_file = g_build_filename (profile_dir, ".app", NULL); if (g_file_test (app_file, G_FILE_TEST_EXISTS)) applications = g_list_prepend (applications, app); else g_object_unref (app); } else applications = g_list_prepend (applications, app); } g_free (profile_dir); } g_object_unref (info); info = g_file_enumerator_next_file (children, NULL, NULL); } g_object_unref (children); return g_list_reverse (applications); }
static gboolean clean_yumdb_extraneous_files (GFile *dir, GCancellable *cancellable, GError **error) { gboolean ret = FALSE; gs_unref_object GFileEnumerator *direnum = NULL; direnum = g_file_enumerate_children (dir, "standard::name,standard::type", G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, cancellable, error); if (!direnum) goto out; while (TRUE) { GFileInfo *file_info; GFile *child; if (!gs_file_enumerator_iterate (direnum, &file_info, &child, cancellable, error)) goto out; if (!file_info) break; if (g_file_info_get_file_type (file_info) == G_FILE_TYPE_DIRECTORY) { if (!clean_yumdb_extraneous_files (child, cancellable, error)) goto out; } else if (strcmp (g_file_info_get_name (file_info), "var_uuid") == 0 || strcmp (g_file_info_get_name (file_info), "from_repo_timestamp") == 0 || strcmp (g_file_info_get_name (file_info), "from_repo_revision") == 0) { if (!g_file_delete (child, cancellable, error)) goto out; } } ret = TRUE; out: return ret; }
static void set_name_from_file (GsfInput *input, GFile *file) { GFileInfo *info = g_file_query_info (file, G_FILE_ATTRIBUTE_STANDARD_NAME, 0, NULL, NULL); if (info) { gsf_input_set_name (input, g_file_info_get_name (info)); g_object_unref (info); } }
static void ide_build_system_get_build_flags_for_dir_cb (GObject *object, GAsyncResult *result, gpointer user_data) { GFile *dir = (GFile *)object; g_autoptr(IdeTask) task = user_data; g_autoptr(GError) error = NULL; g_autoptr(GPtrArray) infos = NULL; g_autoptr(GPtrArray) files = NULL; IdeBuildSystem *self; GCancellable *cancellable; IdeContext *context; IdeVcs *vcs; g_assert (G_IS_FILE (dir)); g_assert (G_IS_ASYNC_RESULT (result)); g_assert (IDE_IS_TASK (task)); infos = ide_g_file_get_children_finish (dir, result, &error); IDE_PTR_ARRAY_SET_FREE_FUNC (infos, g_object_unref); if (infos == NULL) { ide_task_return_error (task, g_steal_pointer (&error)); return; } self = ide_task_get_source_object (task); context = ide_object_get_context (IDE_OBJECT (self)); vcs = ide_vcs_from_context (context); cancellable = ide_task_get_cancellable (task); files = g_ptr_array_new_with_free_func (g_object_unref); for (guint i = 0; i < infos->len; i++) { GFileInfo *file_info = g_ptr_array_index (infos, i); GFileType file_type = g_file_info_get_file_type (file_info); if (file_type == G_FILE_TYPE_REGULAR) { const gchar *name = g_file_info_get_name (file_info); g_autoptr(GFile) child = g_file_get_child (dir, name); if (!ide_vcs_is_ignored (vcs, child, NULL)) g_ptr_array_add (files, g_steal_pointer (&child)); } } ide_build_system_get_build_flags_for_files_async (self, files, cancellable, ide_build_system_get_build_flags_for_dir_cb2, g_steal_pointer (&task)); }
static gboolean dir_project_list_directory (DirProject *project, DirGroup* parent, GError **error) { gboolean ok; GFileEnumerator *enumerator; enumerator = g_file_enumerate_children (DIR_GROUP_DATA (parent)->base.directory, G_FILE_ATTRIBUTE_STANDARD_NAME, G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, NULL, error); ok = enumerator != NULL; if (ok) { GFileInfo *info; while ((info = g_file_enumerator_next_file (enumerator, NULL, error)) != NULL) { const gchar *name; GFile *file; name = g_file_info_get_name (info); file = g_file_get_child (DIR_GROUP_DATA (parent)->base.directory, name); g_object_unref (info); /* Check if file is a source */ if (!dir_pattern_stack_is_match (project->sources, file)) continue; if (g_file_query_file_type (file, G_FILE_QUERY_INFO_NONE, NULL) == G_FILE_TYPE_DIRECTORY) { /* Create a group for directory */ DirGroup *group; group = dir_group_new (file); g_hash_table_insert (project->groups, g_file_get_uri (file), group); anjuta_project_node_append (parent, group); ok = dir_project_list_directory (project, group, error); if (!ok) break; } else { /* Create a source for files */ DirSource *source; source = dir_source_new (file); anjuta_project_node_append (parent, source); } } g_file_enumerator_close (enumerator, NULL, NULL); g_object_unref (enumerator); } return ok; }