Have fc-cache skip directories without write access

This commit is contained in:
Keith Packard 2003-02-12 20:35:32 +00:00
parent b7a2e1e27b
commit 565a919e80
1 changed files with 19 additions and 7 deletions

View File

@ -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);