|
@@ -1,25 +1,47 @@
|
|
|
#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;
|
|
|
+ struct dirent64 *de64;
|
|
|
+ const char const mydir[] = ".";
|
|
|
|
|
|
- DIR *dirh;
|
|
|
- struct dirent *dirp;
|
|
|
- static char mydir[20] = "/tmp";
|
|
|
+ if ((dirh = opendir(mydir)) == NULL) {
|
|
|
+ perror("opendir");
|
|
|
+ return 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);
|
|
|
|
|
|
- for (dirp = readdir(dirh); dirp != NULL; dirp = readdir(dirh)) {
|
|
|
- printf("Got dir entry: %s\n",dirp->d_name);
|
|
|
- }
|
|
|
+ rewinddir(dirh);
|
|
|
|
|
|
- closedir(dirh);
|
|
|
- return 0;
|
|
|
-}
|
|
|
+ printf("readdir64() says:\n");
|
|
|
+ while ((de64 = readdir64(dirh)) != NULL)
|
|
|
+ printf("\tdir entry %s: %s\n", types[de64->d_type], de64->d_name);
|
|
|
+
|
|
|
+ closedir(dirh);
|
|
|
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|