static void infinoted_autosave_walk_directory(InfinotedAutosave* autosave, InfdDirectoryIter* iter) { InfdDirectoryIter child; InfdSessionProxy* session; if(infd_directory_iter_get_node_type(autosave->directory, iter) == INFD_STORAGE_NODE_SUBDIRECTORY) { if(infd_directory_iter_get_explored(autosave->directory, iter) == TRUE) { /* Errors can't happen as the directory is already explored */ if(infd_directory_iter_get_child(autosave->directory, &child, NULL)) { do { infinoted_autosave_walk_directory(autosave, &child); } while(infd_directory_iter_get_next(autosave->directory, &child)); } } } else { session = infd_directory_iter_peek_session(autosave->directory, iter); if(session != NULL) infinoted_autosave_add_session(autosave, iter); } }
static void infinoted_directory_sync_walk_directory(InfinotedDirectorySync* dsync, InfdDirectoryIter* iter) { InfdDirectoryIter child; InfdSessionProxy* session; GError* error; gchar* path; if(infd_directory_iter_get_node_type(dsync->directory, iter) == INFD_STORAGE_NODE_SUBDIRECTORY) { if(infd_directory_iter_get_explored(dsync->directory, iter) == TRUE) { /* Errors can't happen as the directory is already explored */ child = *iter; if(infd_directory_iter_get_child(dsync->directory, &child, NULL)) { do { infinoted_directory_sync_walk_directory(dsync, &child); } while(infd_directory_iter_get_next(dsync->directory, &child)); } } } else { session = infd_directory_iter_peek_session(dsync->directory, iter); if(session != NULL) { error = NULL; if(!infinoted_directory_sync_add_session(dsync, iter, &error)) { path = infd_directory_iter_get_path(dsync->directory, iter); infinoted_util_log_warning( _("Failed to synchronize session \"%s\" to disk: %s"), path, error->message ); g_free(path); g_error_free(error); } } } }