static int moddir_cd( INSTANCE * my, int * params ) { char * d = dir_current() ; int r = string_new( d ) ; string_use( r ) ; if ( d ) free( d ) ; return r ; }
isc_result_t isc_file_absolutepath(const char *filename, char *path, size_t pathlen) { isc_result_t result; result = dir_current(path, pathlen); if (result != ISC_R_SUCCESS) return (result); if (strlen(path) + strlen(filename) + 1 > pathlen) return (ISC_R_NOSPACE); strcat(path, filename); return (ISC_R_SUCCESS); }
bool dir_list(const char *dir, list<String> &lst, bool full_path, bool show_hidden, bool show_dots) { E_ASSERT(dir != NULL); DIR *dirp = opendir(dir); E_RETURN_VAL_IF_FAIL(dirp != NULL, false); /* make sure the list is empty */ lst.clear(); String dirstr, tmp; if(full_path) { /* resolve full name if given folder in form: './file' */ dirstr = (dir[0] == '.' && dir[1] == '\0') ? dir_current() : dir; if(!str_ends(dirstr.c_str(), E_DIR_SEPARATOR_STR)) dirstr += E_DIR_SEPARATOR_STR; } for(dirent *dp = readdir(dirp); dp != NULL; dp = readdir(dirp)) { if(!show_hidden && dp->d_name[0] == '.' && !DOT_OR_DOTDOT(dp->d_name)) continue; if(!show_dots && DOT_OR_DOTDOT(dp->d_name)) continue; if(full_path) { tmp = dirstr; tmp += dp->d_name; lst.push_back(tmp); } else { lst.push_back(dp->d_name); } } lst.sort(); closedir(dirp); return true; }
UT_VERIFY( dir_readable("/root") == false ); UT_VERIFY( dir_writeable("/root") == false ); UT_VERIFY( dir_exists("/we/dont/have/this/directory") == false ); UT_VERIFY( dir_readable("/we/dont/have/this/directory") == false ); UT_VERIFY( dir_writeable("/we/dont/have/this/directory") == false ); UT_VERIFY( dir_exists("Jamfile") == false ); UT_VERIFY( dir_exists("../Jamfile") == false ); UT_VERIFY( dir_exists("../../src/File.cpp") == false ); UT_VERIFY( dir_writeable("../../src/File.cpp") == false ); UT_VERIFY( dir_exists("../edelib") ); #endif UT_VERIFY( dir_home() != "" ); UT_VERIFY( dir_current() != "" ); list<String> dlist; UT_VERIFY( dir_list("/this/directory/should/not/exist", dlist) == false ); UT_VERIFY( dir_list(".", dlist) == true ); UT_VERIFY( dlist.size() != 0 ); } UT_FUNC(DirectoryOperations, "Test Directory operations") { UT_VERIFY( dir_create("FooDir") == true ); #if 0 UT_VERIFY( dir_exists("FooDir") == true ); #endif UT_VERIFY( dir_rename("FooDir", "BazDir") == true );