#include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <dirent.h> #define _DTIFY(DT) [DT] #DT const char * const types[] = { _DTIFY(DT_UNKNOWN), _DTIFY(DT_FIFO), _DTIFY(DT_CHR), _DTIFY(DT_DIR), _DTIFY(DT_BLK), _DTIFY(DT_REG), _DTIFY(DT_LNK), _DTIFY(DT_SOCK), _DTIFY(DT_WHT) }; int main(int argc, char *argv[]) { DIR *dirh; struct dirent *de; const char *mydir = (argc == 1 ? "/" : argv[1]); if ((dirh = opendir(mydir)) == NULL) { perror("opendir"); return 1; } printf("readdir() says:\n"); while ((de = readdir(dirh)) != NULL) printf("\tdir entry %s: %s\n", types[de->d_type], de->d_name); closedir(dirh); return 0; }