From: Keith Packard Date: Wed, 12 Feb 2003 20:35:32 +0000 (+0000) Subject: Have fc-cache skip directories without write access X-Git-Tag: fc-2_1_91~26 X-Git-Url: https://git.wh0rd.org/?a=commitdiff_plain;h=565a919e80bf2d801078cbd83eee8caf9c057519;p=fontconfig.git Have fc-cache skip directories without write access --- diff --git a/fc-cache/fc-cache.c b/fc-cache/fc-cache.c index c7485aa..53eddbb 100644 --- a/fc-cache/fc-cache.c +++ b/fc-cache/fc-cache.c @@ -129,21 +129,33 @@ scanDirs (FcStrList *list, FcConfig *config, char *program, FcBool force, FcBool continue; } - if (stat ((char *) dir, &statb) == -1) + if (access ((char *) dir, W_OK) < 0) { - if (errno == ENOENT || errno == ENOTDIR) - { + switch (errno) { + case ENOENT: + case ENOTDIR: if (verbose) - printf ("no such directory, skipping\n"); - } - else - { + printf ("skipping, no such directory\n"); + break; + case EACCES: + case EROFS: + if (verbose) + printf ("skipping, no write access\n"); + break; + default: fprintf (stderr, "\"%s\": ", dir); perror (""); ret++; } continue; } + if (stat ((char *) dir, &statb) == -1) + { + fprintf (stderr, "\"%s\": ", dir); + perror (""); + ret++; + continue; + } if (!S_ISDIR (statb.st_mode)) { fprintf (stderr, "\"%s\": not a directory, skipping\n", dir);