#include #include #include #include #include #include #include void joinPath(char *result, const char *base, const char *rel) { strcpy(result, base); strcat(result, "/"); strcat(result, rel); } int main(int argc, char *argv[]) { char dirp[128] = "."; if (argc > 1) { strcpy(dirp, argv[1]); } char newpath[128] = {0}; char newresolvedpath[128] = {0}; if (dirp[0] == '/') { strcpy(newresolvedpath, dirp); } else { joinPath(newpath, ".", dirp); realpath(newpath, newresolvedpath); } if (!access(newresolvedpath, F_OK)) { struct stat statResult; stat(newresolvedpath, &statResult); if (!S_ISDIR(statResult.st_mode)) { write(1, "uuuuh das not a dir\n", 21); exit(1); } } else { write(1, "uuuuh das not a dir\n", 21); exit(1); } DIR *d; struct dirent *dir; d = opendir(dirp); //TODO - sort if (d) { while ((dir = readdir(d)) != NULL) { printf("%s\n", dir->d_name); } closedir(d); } exit(0); }