diff options
author | Akira TAGOH <akira@tagoh.org> | 2012-03-28 17:28:06 +0900 |
---|---|---|
committer | Akira TAGOH <akira@tagoh.org> | 2012-04-23 11:26:32 +0900 |
commit | 06d6b7c3120cd417af5ff47e9735aed577978354 (patch) | |
tree | 77e31078ce2c3c4cd6c738fb886a8bf7a22d442c /fc-cache | |
parent | 25ccc3f3d27d8affd45c4b0a8041ef757dbb20dd (diff) |
Create CACHEDIR.TAG when fc-cache is run or only when the cache directory is created at the runtime.
Also add FcCacheCreateTagFile() API to do create CACHEDIR.TAG on the cache
directory.
Diffstat (limited to 'fc-cache')
-rw-r--r-- | fc-cache/fc-cache.c | 73 |
1 files changed, 1 insertions, 72 deletions
diff --git a/fc-cache/fc-cache.c b/fc-cache/fc-cache.c index b42fd354..9fb383be 100644 --- a/fc-cache/fc-cache.c +++ b/fc-cache/fc-cache.c @@ -42,14 +42,6 @@ #include <dirent.h> #include <string.h> -#ifndef FC_DIR_SEPARATOR_S -# ifdef _WIN32 -# define FC_DIR_SEPARATOR_S "\\" -# else -# define FC_DIR_SEPARATOR_S "/" -# endif -#endif - #if defined (_WIN32) #define STRICT #include <windows.h> @@ -122,69 +114,6 @@ usage (char *program, int error) static FcStrSet *processed_dirs; -/* Create CACHEDIR.TAG */ -static FcBool -create_tag_file (FcConfig *config, FcBool verbose) -{ - FcChar8 *cache_tag; - FcChar8 *cache_dir = NULL; - FcStrList *list; - int fd; - FILE *fp; - FcAtomic *atomic; - static const FcChar8 cache_tag_contents[] = - "Signature: 8a477f597d28d172789f06886806bc55\n" - "# This file is a cache directory tag created by fontconfig.\n" - "# For information about cache directory tags, see:\n" - "# http://www.brynosaurus.com/cachedir/\n"; - static size_t cache_tag_contents_size = sizeof (cache_tag_contents) - 1; - FcBool ret = FcTrue; - - list = FcConfigGetCacheDirs(config); - if (!list) - return FcFalse; - - while ((cache_dir = FcStrListNext (list))) - { - if (access ((char *) cache_dir, W_OK|X_OK) == 0) - { - if (verbose) - printf ("Create CACHEDIR.TAG at %s\n", cache_dir); - /* Create CACHEDIR.TAG */ - cache_tag = FcStrPlus (cache_dir, (const FcChar8 *) FC_DIR_SEPARATOR_S "CACHEDIR.TAG"); - if (!cache_tag) - return FcFalse; - atomic = FcAtomicCreate ((FcChar8 *)cache_tag); - if (!atomic) - goto bail1; - if (!FcAtomicLock (atomic)) - goto bail2; - fd = open((char *)FcAtomicNewFile (atomic), O_RDWR | O_CREAT, 0644); - if (fd == -1) - goto bail3; - fp = fdopen(fd, "wb"); - if (fp == NULL) - goto bail3; - - fwrite(cache_tag_contents, cache_tag_contents_size, sizeof (FcChar8), fp); - fclose(fp); - - if (!FcAtomicReplaceOrig(atomic)) - goto bail3; - - bail3: - FcAtomicUnlock (atomic); - bail2: - FcAtomicDestroy (atomic); - bail1: - FcStrFree (cache_tag); - } - } - FcStrListDone (list); - - return ret; -} - static int scanDirs (FcStrList *list, FcConfig *config, FcBool force, FcBool really_force, FcBool verbose, int *changed) { @@ -435,7 +364,7 @@ main (int argc, char **argv) * This expects the fontconfig cache directory already exists. * If it doesn't, it won't be simply created. */ - create_tag_file (config, verbose); + FcCacheCreateTagFile (config); FcStrSetDestroy (processed_dirs); |