#include "stat-time.h"
+#include <fcntl.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
-#include <sys/fcntl.h>
#include <unistd.h>
-#define ASSERT(condition) if (!(condition)) abort ()
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ abort (); \
+ } \
+ } \
+ while (0)
enum { NFILES = 4 };
unlink ("t-stt-stamp2");
unlink ("t-stt-renamed");
unlink ("t-stt-stamp3");
+
+ if (sig != 0)
+ _exit (1);
}
static int
sleep (2);
create_file ("t-stt-stamp2");
sleep (2);
- ASSERT (rename ("t-stt-testfile", "t-stt-renamed") == 0);
+ ASSERT (chmod ("t-stt-testfile", 0400) == 0);
sleep (2);
create_file ("t-stt-stamp3");
do_stat ("t-stt-stamp1", &statinfo[0]);
- do_stat ("t-stt-renamed", &statinfo[1]);
+ do_stat ("t-stt-testfile", &statinfo[1]);
do_stat ("t-stt-stamp2", &statinfo[2]);
do_stat ("t-stt-stamp3", &statinfo[3]);
/* Collect the birth times.. */
for (i = 0; i < NFILES; ++i)
{
- if (!get_stat_birthtime (&statinfo[i], &birthtimes[i]))
- {
- return;
- }
+ birthtimes[i] = get_stat_birthtime (&statinfo[i]);
+ if (birthtimes[i].tv_nsec < 0)
+ return;
}
ASSERT (modtimes[0].tv_sec < birthtimes[1].tv_sec); /* mtime(stamp1) < birthtime(renamed) */
signal (SIGTERM, cleanup);
#endif
+ cleanup (0);
prepare_test (statinfo, modtimes);
test_mtime (statinfo, modtimes);
test_birthtime (statinfo, modtimes, birthtimes);