+ int fd;
+ int j;
+ off_t size;
+ intptr_t *cache_dirs;
+
+ if (FcFileIsDir ((const FcChar8 *)argv[i]))
+ fd = FcDirCacheOpen (config, (const FcChar8 *) argv[i], &size);
+ else
+ fd = FcCacheFileOpen (argv[i], &size);
+ if (fd < 0)
+ {
+ perror (argv[i]);
+ ret++;
+ continue;
+ }
+
+ cache = FcDirCacheMap (fd, size);
+ close (fd);
+ if (!cache)
+ {
+ fprintf (stderr, "%s: cannot map cache\n", argv[i]);
+ ret++;
+ continue;
+ }
+ dirs = FcStrSetCreate ();
+ fs = FcCacheSet (cache);
+ cache_dirs = FcCacheDirs (cache);
+ for (j = 0; j < cache->dirs_count; j++)
+ FcStrSetAdd (dirs, FcOffsetToPtr (cache_dirs,
+ cache_dirs[j],
+ FcChar8));
+
+ if (verbose)
+ printf ("Name: %s\nDirectory: %s\n", argv[i], FcCacheDir(cache));
+ FcCachePrintSet (fs, dirs, FcCacheDir (cache));