summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@neko.keithp.com>2006-09-02 14:52:37 -0700
committerKeith Packard <keithp@neko.keithp.com>2006-09-02 14:52:37 -0700
commit9b511b290548ad2920cda94507a3311efc461e8a (patch)
tree70364fc6cd2261b99f4f22277ad0a4bf9ec81140
parent813258dc8e3a8c964af49abe810e76a95241926d (diff)
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.
-rw-r--r--fc-cache/fc-cache.c2
-rw-r--r--fc-cat/fc-cat.c2
-rw-r--r--src/fcdir.c17
-rw-r--r--src/fcstr.c24
4 files changed, 17 insertions, 28 deletions
diff --git a/fc-cache/fc-cache.c b/fc-cache/fc-cache.c
index 0686481..f20d3a7 100644
--- a/fc-cache/fc-cache.c
+++ b/fc-cache/fc-cache.c
@@ -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;
diff --git a/fc-cat/fc-cat.c b/fc-cat/fc-cat.c
index 71b416f..bb804ab 100644
--- a/fc-cat/fc-cat.c
+++ b/fc-cat/fc-cat.c
@@ -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;
diff --git a/src/fcdir.c b/src/fcdir.c
index 0b7c8d8..8da50e9 100644
--- a/src/fcdir.c
+++ b/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;
}
diff --git a/src/fcstr.c b/src/fcstr.c
index b83a709..3309014 100644
--- a/src/fcstr.c
+++ b/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 (;;) {