Explicitly chmod() directories (bug #18934)
Two changes: - after mkdir(), we immediately chmod(), such that we are not affected by stupid umask's. - if a directory we want to use is not writable but exists, we try a chmod on it. This is to recover from stupid umask's having affected us with older versions.
This commit is contained in:
parent
b6cf885a0a
commit
8ae1e3d5dc
|
@ -817,9 +817,9 @@ FcMakeDirectory (const FcChar8 *dir)
|
||||||
if (!parent)
|
if (!parent)
|
||||||
return FcFalse;
|
return FcFalse;
|
||||||
if (access ((char *) parent, F_OK) == 0)
|
if (access ((char *) parent, F_OK) == 0)
|
||||||
ret = mkdir ((char *) dir, 0777) == 0;
|
ret = mkdir ((char *) dir, 0755) == 0 && chmod ((char *) dir, 0755) == 0;
|
||||||
else if (access ((char *) parent, F_OK) == -1)
|
else if (access ((char *) parent, F_OK) == -1)
|
||||||
ret = FcMakeDirectory (parent) && (mkdir ((char *) dir, 0777) == 0);
|
ret = FcMakeDirectory (parent) && (mkdir ((char *) dir, 0755) == 0) && chmod ((char *) dir, 0755) == 0;
|
||||||
else
|
else
|
||||||
ret = FcFalse;
|
ret = FcFalse;
|
||||||
FcStrFree (parent);
|
FcStrFree (parent);
|
||||||
|
@ -849,7 +849,7 @@ FcDirCacheWrite (FcCache *cache, FcConfig *config)
|
||||||
if (!list)
|
if (!list)
|
||||||
return FcFalse;
|
return FcFalse;
|
||||||
while ((test_dir = FcStrListNext (list))) {
|
while ((test_dir = FcStrListNext (list))) {
|
||||||
if (access ((char *) test_dir, W_OK) == 0)
|
if (access ((char *) test_dir, W_OK|X_OK) == 0)
|
||||||
{
|
{
|
||||||
cache_dir = test_dir;
|
cache_dir = test_dir;
|
||||||
break;
|
break;
|
||||||
|
@ -866,6 +866,14 @@ FcDirCacheWrite (FcCache *cache, FcConfig *config)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
|
* Otherwise, try making it writable
|
||||||
|
*/
|
||||||
|
else if (chmod ((char *) test_dir, 0755) == 0)
|
||||||
|
{
|
||||||
|
cache_dir = test_dir;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
FcStrListDone (list);
|
FcStrListDone (list);
|
||||||
|
|
Loading…
Reference in New Issue