static void infinoted_plugin_manager_walk_directory( InfinotedPluginManager* manager, const InfBrowserIter* iter, InfinotedPluginInstance* instance, InfinotedPluginManagerWalkDirectoryFunc func) { /* This function walks the whole directory tree recursively and * registers running sessions with the given plugin instance. */ InfBrowser* browser; InfBrowserIter child; InfSessionProxy* proxy; browser = INF_BROWSER(manager->directory); if(inf_browser_is_subdirectory(browser, iter) == TRUE) { if(inf_browser_get_explored(browser, iter) == TRUE) { child = *iter; inf_browser_get_child(browser, &child); do { infinoted_plugin_manager_walk_directory(manager, &child, instance, func); } while(inf_browser_get_next(browser, &child)); } } else { proxy = inf_browser_get_session(browser, iter); if(proxy != NULL) { func(manager, instance, iter, proxy); } } }
static void inf_test_browser_cmd_ls(InfTestBrowser* test, const gchar* param) { InfBrowserIter iter; gboolean result; if(inf_browser_get_explored(test->browser, &test->cwd) == FALSE) { fprintf( stderr, "Directory '%s' not yet explored\n", inf_browser_get_node_name(test->browser, &test->cwd) ); } else { iter = test->cwd; for(result = inf_browser_get_child(test->browser, &iter); result == TRUE; result = inf_browser_get_next(test->browser, &iter)) { printf("%s\n", inf_browser_get_node_name(test->browser, &iter)); } } }
static gboolean inf_test_browser_find_node(InfTestBrowser* test, const gchar* name, InfBrowserIter* result_iter) { InfBrowserIter iter; gboolean result; if(inf_browser_get_explored(test->browser, &test->cwd) == FALSE) { fprintf( stderr, "Directory '%s' not yet explored\n", inf_browser_get_node_name(test->browser, &test->cwd) ); } else { iter = test->cwd; for(result = inf_browser_get_child(test->browser, &iter); result == TRUE; result = inf_browser_get_next(test->browser, &iter)) { if(strcmp(inf_browser_get_node_name(test->browser, &iter), name) == 0) { *result_iter = iter; return TRUE; } } } return FALSE; }
static void inf_test_browser_cmd_explore(InfTestBrowser* test, const gchar* param) { InfBrowserIter iter; if(inf_test_browser_find_node(test, param, &iter) == FALSE) { fprintf( stderr, "Directory '%s' does not exist\n", param ); } else if(inf_browser_get_explored(test->browser, &iter) == TRUE) { fprintf( stderr, "Directory '%s' is already explored", inf_browser_get_node_name(test->browser, &iter) ); } else { inf_browser_explore(test->browser, &iter, NULL, NULL); } }
static void inf_test_browser_cmd_cd(InfTestBrowser* test, const gchar* param) { InfBrowserIter iter; if(strcmp(param, "..") == 0) { iter = test->cwd; if(inf_browser_get_parent(test->browser, &iter) == FALSE) { fprintf(stderr, "Already at the root directory\n"); } else { test->cwd = iter; } } else if(inf_test_browser_find_node(test, param, &iter) == FALSE) { fprintf( stderr, "Directory '%s' does not exist\n", param ); } else if(inf_browser_get_explored(test->browser, &iter) == FALSE) { fprintf( stderr, "Directory '%s' not yet explored\n", inf_browser_get_node_name(test->browser, &iter) ); } else { test->cwd = iter; } }
bool BrowserIter::isExplored() { if( m_infBrowser ) return inf_browser_get_explored( INF_BROWSER(m_infBrowser), &m_infBrowserIter ) != 0; return 0; }