diff options
author | Akira TAGOH <akira@tagoh.org> | 2013-10-22 15:00:29 +0900 |
---|---|---|
committer | Akira TAGOH <akira@tagoh.org> | 2013-10-22 15:01:11 +0900 |
commit | 76ea9af816a50c6bb0b3dc2960460a90fadd9cdb (patch) | |
tree | 9c6d0970f373c57134fd119b1e7b0995a39512fe /test | |
parent | 5e029db4971e37437cfe6147d52d00136dfb8cb5 (diff) |
Use stat() if there are no d_type in struct dirent
Reported by Thomas Klausner
Diffstat (limited to 'test')
-rw-r--r-- | test/test-migration.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/test/test-migration.c b/test/test-migration.c index a0ab8390..97096518 100644 --- a/test/test-migration.c +++ b/test/test-migration.c @@ -4,6 +4,11 @@ #include <unistd.h> #include <sys/types.h> #include <dirent.h> +#ifndef HAVE_STRUCT_DIRENT_D_TYPE +#include <sys/types.h> +#include <sys/stat.h> +#include <unistd.h> +#endif #include <fontconfig/fontconfig.h> FcBool @@ -36,6 +41,9 @@ unlink_dirs(const char *dir) size_t len = strlen (dir); char *n = NULL; FcBool ret = FcTrue; +#ifndef HAVE_STRUCT_DIRENT_D_TYPE + struct stat statb; +#endif if (!d) return FcFalse; @@ -53,7 +61,17 @@ unlink_dirs(const char *dir) strcpy (n, dir); n[len] = '/'; strcpy (&n[len + 1], e->d_name); +#ifdef HAVE_STRUCT_DIRENT_D_TYPE if (e->d_type == DT_DIR) +#else + if (stat (n, &statb) == -1) + { + fprintf (stderr, "E: %s\n", n); + ret = FcFalse; + break; + } + if (S_ISDIR (statb.st_mode)) +#endif { if (!unlink_dirs (n)) { |