]> git.wh0rd.org Git - fontconfig.git/commitdiff
Bug 25152 Don't sleep(2) if all caches were uptodate
authorBehdad Esfahbod <behdad@behdad.org>
Fri, 26 Feb 2010 06:47:56 +0000 (01:47 -0500)
committerBehdad Esfahbod <behdad@behdad.org>
Fri, 26 Feb 2010 06:47:56 +0000 (01:47 -0500)
fc-cache/fc-cache.c

index 19e9d0df6637d7fbd74501aaba1168386eab3875..73777656d2c2e3c0594c1c9897cb15c638a0defa 100644 (file)
@@ -117,7 +117,7 @@ usage (char *program, int error)
 static FcStrSet *processed_dirs;
 
 static int
-scanDirs (FcStrList *list, FcConfig *config, FcBool force, FcBool really_force, FcBool verbose)
+scanDirs (FcStrList *list, FcConfig *config, FcBool force, FcBool really_force, FcBool verbose, int *changed)
 {
     int                    ret = 0;
     const FcChar8   *dir;
@@ -190,6 +190,7 @@ scanDirs (FcStrList *list, FcConfig *config, FcBool force, FcBool really_force,
        
        if (!cache)
        {
+           (*changed)++;
            cache = FcDirCacheRead (dir, FcTrue, config);
            if (!cache)
            {
@@ -241,7 +242,7 @@ scanDirs (FcStrList *list, FcConfig *config, FcBool force, FcBool really_force,
            continue;
        }
        FcStrSetAdd (processed_dirs, dir);
-       ret += scanDirs (sublist, config, force, really_force, verbose);
+       ret += scanDirs (sublist, config, force, really_force, verbose, changed);
     }
     FcStrListDone (list);
     return ret;
@@ -369,6 +370,7 @@ main (int argc, char **argv)
     FcBool     systemOnly = FcFalse;
     FcConfig   *config;
     int                i;
+    int                changed;
     int                ret;
 #if HAVE_GETOPT_LONG || HAVE_GETOPT
     int                c;
@@ -446,7 +448,8 @@ main (int argc, char **argv)
        return 1;
     }
        
-    ret = scanDirs (list, config, force, really_force, verbose);
+    changed = 0;
+    ret = scanDirs (list, config, force, really_force, verbose, &changed);
 
     FcStrSetDestroy (processed_dirs);
 
@@ -461,7 +464,8 @@ main (int argc, char **argv)
      */
     FcConfigDestroy (config);
     FcFini ();
-    sleep (2);
+    if (changed)
+       sleep (2);
     if (verbose)
        printf ("%s: %s\n", argv[0], ret ? "failed" : "succeeded");
     return ret;