+/* Sleep long enough to notice a timestamp difference on the file
+ system in the current directory. */
+static void
+nap (void)
+{
+#if !HAVE_USLEEP
+ /* Assume the worst case file system of FAT, which has a granularity
+ of 2 seconds. */
+ sleep (2);
+#else /* HAVE_USLEEP */
+ static long delay;
+ if (!delay)
+ {
+ /* Initialize only once, by sleeping for 1 millisecond. If that
+ was enough to observe a difference, then we are set;
+ otherwise fall back to 2 seconds. */
+ struct stat st1;
+ struct stat st2;
+ ASSERT (stat ("t-stt-stamp1", &st1) == 0);
+ ASSERT (unlink ("t-stt-stamp1") == 0);
+ usleep (delay = 1000);
+ create_file ("t-stt-stamp1");
+ ASSERT (stat ("t-stt-stamp1", &st2) == 0);
+ if (! (st1.st_mtime < st2.st_mtime
+ || (st1.st_mtime == st2.st_mtime
+ && get_stat_mtime_ns (&st1) < get_stat_mtime_ns (&st2))))
+ delay = 2000000;
+ }
+ usleep (delay);
+#endif /* HAVE_USLEEP */
+}
+