]> sourceware.org Git - glibc.git/blame - io/test-utime.c
i386: memcpy functions with SSE2 unaligned load/store
[glibc.git] / io / test-utime.c
CommitLineData
d4697bc9 1/* Copyright (C) 1994-2014 Free Software Foundation, Inc.
c84142e8 2 This file is part of the GNU C Library.
28f540f4 3
c84142e8 4 The GNU C Library is free software; you can redistribute it and/or
41bdb6e2
AJ
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
28f540f4 8
c84142e8
UD
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
41bdb6e2 12 Lesser General Public License for more details.
28f540f4 13
41bdb6e2 14 You should have received a copy of the GNU Lesser General Public
59ba27a6
PE
15 License along with the GNU C Library; if not, see
16 <http://www.gnu.org/licenses/>. */
28f540f4 17
11336c16 18#include <fcntl.h>
28f540f4 19#include <stdio.h>
3e1f480e 20#include <stdlib.h>
28f540f4
RM
21#include <sys/stat.h>
22#include <unistd.h>
11336c16 23#include <utime.h>
274aead3 24#include <time.h>
28f540f4
RM
25
26int
cccda09f 27main (int argc, char *argv[])
28f540f4
RM
28{
29 char file[L_tmpnam];
30 struct utimbuf ut;
31 struct stat st;
274aead3
GM
32 struct stat stnow;
33 time_t now1, now2;
28f540f4
RM
34 int fd;
35
36 if (tmpnam (file) == 0)
37 {
38 perror ("tmpnam");
bf4de8f3 39 return 1;
28f540f4
RM
40 }
41
42 fd = creat (file, 0666);
43 if (fd < 0)
44 {
45 perror ("creat");
bf4de8f3 46 return 1;
28f540f4
RM
47 }
48 close (fd);
49
274aead3 50 /* Test utime with arg */
28f540f4
RM
51 ut.actime = 500000000;
52 ut.modtime = 500000001;
53 if (utime (file, &ut))
54 {
55 perror ("utime");
56 remove (file);
bf4de8f3 57 return 1;
28f540f4
RM
58 }
59
60 if (stat (file, &st))
61 {
62 perror ("stat");
63 remove (file);
bf4de8f3 64 return 1;
28f540f4
RM
65 }
66
274aead3
GM
67 /* Test utime with NULL.
68 Since there's a race condition possible here, we check
69 the time before and after the call to utime. */
70 now1 = time (NULL);
71 if (now1 == (time_t)-1)
72 {
73 perror ("time");
74 remove (file);
bf4de8f3 75 return 1;
274aead3
GM
76 }
77
dade1ade
UD
78 /* The clocks used to set the modification time and that used in the
79 time() call need not be the same. They need not have the same
80 precision. Therefore we delay the following operation by one
81 second which makes sure we can compare with second precision. */
82 sleep (1);
83
274aead3
GM
84 if (utime (file, NULL))
85 {
86 perror ("utime NULL");
87 remove (file);
bf4de8f3 88 return 1;
274aead3
GM
89 }
90
dade1ade
UD
91 sleep (1);
92
274aead3
GM
93 now2 = time (NULL);
94 if (now2 == (time_t)-1)
95 {
96 perror ("time");
97 remove (file);
bf4de8f3 98 return 1;
274aead3
GM
99 }
100
101 if (stat (file, &stnow))
102 {
103 perror ("stat");
104 remove (file);
bf4de8f3 105 return 1;
274aead3
GM
106 }
107
28f540f4
RM
108 remove (file);
109
110 if (st.st_mtime != ut.modtime)
111 {
112 printf ("modtime %ld != %ld\n", st.st_mtime, ut.modtime);
bf4de8f3 113 return 1;
28f540f4
RM
114 }
115
116 if (st.st_atime != ut.actime)
117 {
118 printf ("actime %ld != %ld\n", st.st_atime, ut.actime);
bf4de8f3 119 return 1;
28f540f4
RM
120 }
121
dade1ade 122 if (stnow.st_mtime < now1 || stnow.st_mtime > now2)
274aead3 123 {
688e7bfe 124 printf ("modtime %ld <%ld >%ld\n", stnow.st_mtime, now1, now2);
bf4de8f3 125 return 1;
274aead3
GM
126 }
127
128 if (stnow.st_atime < now1 || stnow.st_atime > now2)
129 {
688e7bfe 130 printf ("actime %ld <%ld >%ld\n", stnow.st_atime, now1, now2);
bf4de8f3 131 return 1;
274aead3
GM
132 }
133
28f540f4 134 puts ("Test succeeded.");
bf4de8f3 135 return 0;
28f540f4 136}
This page took 0.49034 seconds and 5 git commands to generate.