]> git.wh0rd.org - fontconfig.git/commitdiff
Unify directory canonicalization into FcStrAddFilename.
authorKeith Packard <keithp@neko.keithp.com>
Sat, 2 Sep 2006 21:52:37 +0000 (14:52 -0700)
committerKeith Packard <keithp@neko.keithp.com>
Sat, 2 Sep 2006 21:52:37 +0000 (14:52 -0700)
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.

fc-cache/fc-cache.c
fc-cat/fc-cat.c
src/fcdir.c
src/fcstr.c

index 06864810446271c8da03caab9a79caeceb087fd5..f20d3a7c07203903d0aa5336b27450c075252860 100644 (file)
@@ -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;
index 71b416f1222365c988b55dbecb482a36a30089c6..bb804ab0271c1af7d8dfc2f59d976c138ddd9622 100644 (file)
@@ -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;
index 0b7c8d8c9290401dd4149fe05e9abc6ac897c8f0..8da50e93c282f75eeb8c60f23783861e4bfcafd0 100644 (file)
@@ -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;
 }
index b83a7094768803996709b39f8f03bf25d63aa653..33090140b4fc799a22212470316a8c6742015aca 100644 (file)
@@ -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 (;;) {