Unify directory canonicalization into FcStrAddFilename.
Instead of making filename canonicalization occur in multiple places, it occurs only in FcStrAddFilename now, as all filenames pass through that function at one point.
This commit is contained in:
parent
813258dc8e
commit
9b511b2905
|
@ -452,7 +452,7 @@ main (int argc, char **argv)
|
|||
}
|
||||
while (argv[i])
|
||||
{
|
||||
if (!FcStrSetAdd (dirs, (FcChar8 *) argv[i]))
|
||||
if (!FcStrSetAddFilename (dirs, (FcChar8 *) argv[i]))
|
||||
{
|
||||
fprintf (stderr, "%s: Can't add directory\n", argv[0]);
|
||||
return 1;
|
||||
|
|
|
@ -321,7 +321,7 @@ main (int argc, char **argv)
|
|||
{
|
||||
for (; i < argc; i++)
|
||||
{
|
||||
if (!FcStrSetAdd (args, argv[i]))
|
||||
if (!FcStrSetAddFilename (args, argv[i]))
|
||||
{
|
||||
fprintf (stderr, "%s: malloc failure\n", argv[0]);
|
||||
return 1;
|
||||
|
|
17
src/fcdir.c
17
src/fcdir.c
|
@ -234,26 +234,17 @@ FcCache *
|
|||
FcDirCacheRead (const FcChar8 *dir, FcBool force, FcConfig *config)
|
||||
{
|
||||
FcCache *cache = NULL;
|
||||
FcChar8 *canon_dir;
|
||||
|
||||
canon_dir = FcStrCanonFilename (dir);
|
||||
if (!canon_dir) canon_dir = (FcChar8 *) dir;
|
||||
|
||||
if (config && !FcConfigAcceptFilename (config, canon_dir)) {
|
||||
goto bail;
|
||||
}
|
||||
if (config && !FcConfigAcceptFilename (config, dir))
|
||||
return NULL;
|
||||
|
||||
/* Try to use existing cache file */
|
||||
if (!force)
|
||||
cache = FcDirCacheLoad (canon_dir, config, NULL);
|
||||
cache = FcDirCacheLoad (dir, config, NULL);
|
||||
|
||||
/* Not using existing cache file, construct new cache */
|
||||
if (!cache)
|
||||
cache = FcDirCacheScan (canon_dir, config);
|
||||
|
||||
bail:
|
||||
if (canon_dir != dir)
|
||||
free (canon_dir);
|
||||
cache = FcDirCacheScan (dir, config);
|
||||
|
||||
return cache;
|
||||
}
|
||||
|
|
24
src/fcstr.c
24
src/fcstr.c
|
@ -764,26 +764,21 @@ FcStrCopyFilename (const FcChar8 *s)
|
|||
if (*s == '~')
|
||||
{
|
||||
FcChar8 *home = FcConfigHome ();
|
||||
FcChar8 *full;
|
||||
int size;
|
||||
if (!home)
|
||||
return 0;
|
||||
size = strlen ((char *) home) + strlen ((char *) s);
|
||||
new = (FcChar8 *) malloc (size);
|
||||
full = (FcChar8 *) malloc (size);
|
||||
if (!new)
|
||||
return 0;
|
||||
FcMemAlloc (FC_MEM_STRING, size);
|
||||
strcpy ((char *) new, (char *) home);
|
||||
strcat ((char *) new, (char *) s + 1);
|
||||
strcpy ((char *) full, (char *) home);
|
||||
strcat ((char *) full, (char *) s + 1);
|
||||
new = FcStrCanonFilename (full);
|
||||
free (full);
|
||||
}
|
||||
else
|
||||
{
|
||||
int size = strlen ((char *) s) + 1;
|
||||
new = (FcChar8 *) malloc (size);
|
||||
if (!new)
|
||||
return 0;
|
||||
FcMemAlloc (FC_MEM_STRING, size);
|
||||
memcpy (new, s, size);
|
||||
}
|
||||
new = FcStrCanonFilename (s);
|
||||
return new;
|
||||
}
|
||||
|
||||
|
@ -841,6 +836,7 @@ FcStrCanonFilename (const FcChar8 *s)
|
|||
FcChar8 *file;
|
||||
FcChar8 *f;
|
||||
const FcChar8 *slash;
|
||||
int size;
|
||||
|
||||
if (*s != '/')
|
||||
{
|
||||
|
@ -855,9 +851,11 @@ FcStrCanonFilename (const FcChar8 *s)
|
|||
FcStrFree (full);
|
||||
return file;
|
||||
}
|
||||
file = malloc (strlen ((char *) s) + 1);
|
||||
size = strlen ((char *) s) + 1;
|
||||
file = malloc (size);
|
||||
if (!file)
|
||||
return NULL;
|
||||
FcMemAlloc (FC_MEM_STRING, size);
|
||||
slash = NULL;
|
||||
f = file;
|
||||
for (;;) {
|
||||
|
|
Loading…
Reference in New Issue