From 565a919e80bf2d801078cbd83eee8caf9c057519 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Wed, 12 Feb 2003 20:35:32 +0000 Subject: [PATCH] Have fc-cache skip directories without write access --- fc-cache/fc-cache.c | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) 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); -- 2.39.5