diff --git a/utils/ls.cpp b/utils/ls.cpp index 8253deef..b806d174 100644 --- a/utils/ls.cpp +++ b/utils/ls.cpp @@ -4,38 +4,30 @@ #include #include #include -#include -#include -#include - -using namespace Maxsi; +#include int ls(const char* path) { - int fd = open(path, O_SEARCH | O_DIRECTORY); - if ( fd < 0 ) { error(2, errno, "%s", path); return 2; } - - const size_t BUFFER_SIZE = 512; - char buffer[BUFFER_SIZE]; - sortix_dirent* dirent = (sortix_dirent*) buffer; + DIR* dir = opendir(path); + if ( !dir ) { error(2, errno, "%s", path); return 2; } // TODO: Hack until mountpoints work correctly. if ( strcmp(path, "/") == 0 ) { printf("bin\ndev\n"); } - while ( true ) + struct dirent* entry; + while ( (entry = readdir(dir)) ) { - if ( readdirents(fd, dirent, BUFFER_SIZE) ) - { - error(2, errno, "readdirents: %s", path); - return 1; - } - - for ( sortix_dirent* iter = dirent; iter; iter = iter->d_next ) - { - if ( iter->d_namelen == 0 ) { return 0; } - printf("%s\n", iter->d_name); - } + printf("%s\n", entry->d_name); } + + if ( derror(dir) ) + { + error(2, errno, "readdir: %s", path); + } + + closedir(dir); + + return 0; } int main(int argc, char* argv[])