]> git.wh0rd.org - fontconfig.git/blobdiff - fc-cache/fc-cache.c
Sleep for two seconds before exiting to make sure timestamps for future
[fontconfig.git] / fc-cache / fc-cache.c
index be8b962596cbdadb20a7a8d85a4447ade22b11b6..41609a1bffd3b315048849e249a52aa2f5b02b69 100644 (file)
@@ -67,16 +67,29 @@ extern int optind, opterr, optopt;
 static void
 usage (char *program)
 {
-    fprintf (stderr, "usage: %s [-fvV?] [--force] [--verbose] [--version] [--help] [dirs]\n",
+#if HAVE_GETOPT_LONG
+    fprintf (stderr, "usage: %s [-fsvV?] [--force] [--system-only] [--verbose] [--version] [--help] [dirs]\n",
+            program);
+#else
+    fprintf (stderr, "usage: %s [-fsvV?] [dirs]\n",
             program);
+#endif
     fprintf (stderr, "Build font information caches in [dirs]\n"
             "(all directories in font configuration by default).\n");
     fprintf (stderr, "\n");
+#if HAVE_GETOPT_LONG
     fprintf (stderr, "  -f, --force          scan directories with apparently valid caches\n");
     fprintf (stderr, "  -s, --system-only    scan system-wide directories only\n");
     fprintf (stderr, "  -v, --verbose        display status information while busy\n");
     fprintf (stderr, "  -V, --version        display font config version and exit\n");
     fprintf (stderr, "  -?, --help           display this help and exit\n");
+#else
+    fprintf (stderr, "  -f         (force)   scan directories with apparently valid caches\n");
+    fprintf (stderr, "  -s         (system)  scan system-wide directories only\n");
+    fprintf (stderr, "  -v         (verbose) display status information while busy\n");
+    fprintf (stderr, "  -V         (version) display font config version and exit\n");
+    fprintf (stderr, "  -?         (help)    display this help and exit\n");
+#endif
     exit (1);
 }
 
@@ -216,9 +229,9 @@ main (int argc, char **argv)
     int                c;
 
 #if HAVE_GETOPT_LONG
-    while ((c = getopt_long (argc, argv, "fVv?", longopts, NULL)) != -1)
+    while ((c = getopt_long (argc, argv, "fsVv?", longopts, NULL)) != -1)
 #else
-    while ((c = getopt (argc, argv, "fVv?")) != -1)
+    while ((c = getopt (argc, argv, "fsVv?")) != -1)
 #endif
     {
        switch (c) {
@@ -276,6 +289,14 @@ main (int argc, char **argv)
     else
        list = FcConfigGetConfigDirs (config);
     ret = scanDirs (list, config, argv[0], force, verbose);
+    /* 
+     * Now we need to sleep a second  (or two, to be extra sure), to make
+     * sure that timestamps for changes after this run of fc-cache are later
+     * then any timestamps we wrote.  We don't use gettimeofday() because
+     * sleep(3) can't be interrupted by a signal here -- this isn't in the
+     * library, and there aren't any signals flying around here.
+     */
+    sleep (2);
     if (verbose)
        printf ("%s: %s\n", argv[0], ret ? "failed" : "succeeded");
     return ret;