blob: 03d207f63035f1131b698dd8a30eb29761c0f366 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
/* Test for stat() after 2038 year. */
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/stat.h>
#include <time.h>
#define assert(x) \
if (!(x)) \
{ \
fputs ("test failed: " #x "\n", stderr); \
retval = 1; \
goto the_end; \
}
int
main (int argc, char *argv[])
{
#if defined(__arc__) || defined(__arm__) || defined(__i386__) || defined(__microblaze__) || defined(__mips__) || defined(__or1k__) || defined(__powerpc__) || defined(__sh__) || defined(__sparc__) || defined(__xtensa__)
char name[PATH_MAX];
int retval = 0;
int fd;
struct stat st;
if (sizeof(time_t) == 8) {
memset(name, 0, PATH_MAX);
struct timespec y2090_ts = {
.tv_sec = 3786962400,
.tv_nsec = 0
};
assert(clock_settime (CLOCK_REALTIME, &y2090_ts) == 0);
/* hack to get a tempfile name w/out using tmpname()
* as that func causes a link time warning */
sprintf(name, "%s-uClibc-test.XXXXXX", __FILE__);
fd = mkstemp(name);
assert(stat (name, &st) == 0)
assert(st.st_atime >= 3786962400);
assert(st.st_mtime >= 3786962400);
assert(st.st_ctime >= 3786962400);
assert(fstat (fd, &st) == 0)
assert(st.st_atime >= 3786962400);
assert(st.st_mtime >= 3786962400);
assert(st.st_ctime >= 3786962400);
assert(lstat (name, &st) == 0)
assert(st.st_atime >= 3786962400);
assert(st.st_mtime >= 3786962400);
assert(st.st_ctime >= 3786962400);
close(fd);
retval = 0;
the_end:
unlink (name);
return retval;
}
else {
printf("Nothing to test.\n");
}
#else
printf("Nothing to test.\n");
return 0;
#endif
}
|