Include <sys/stat.h> also for __USE_XOPEN.
[kopensolaris-gnu/glibc.git] / io / test-utime.c
1 /* Copyright (C) 1994, 1996, 1997 Free Software Foundation, Inc.
2    This file is part of the GNU C Library.
3
4    The GNU C Library is free software; you can redistribute it and/or
5    modify it under the terms of the GNU Library General Public License as
6    published by the Free Software Foundation; either version 2 of the
7    License, or (at your option) any later version.
8
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
12    Library General Public License for more details.
13
14    You should have received a copy of the GNU Library General Public
15    License along with the GNU C Library; see the file COPYING.LIB.  If not,
16    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17    Boston, MA 02111-1307, USA.  */
18
19 #include <fcntl.h>
20 #include <stdio.h>
21 #include <sys/stat.h>
22 #include <unistd.h>
23 #include <utime.h>
24
25 int
26 main (int argc, char *argv[])
27 {
28   char file[L_tmpnam];
29   struct utimbuf ut;
30   struct stat st;
31   int fd;
32
33   if (tmpnam (file) == 0)
34     {
35       perror ("tmpnam");
36       exit (1);
37     }
38
39   fd = creat (file, 0666);
40   if (fd < 0)
41     {
42       perror ("creat");
43       exit (1);
44     }
45   close (fd);
46
47   ut.actime = 500000000;
48   ut.modtime = 500000001;
49   if (utime (file, &ut))
50     {
51       perror ("utime");
52       remove (file);
53       exit (1);
54     }
55
56   if (stat (file, &st))
57     {
58       perror ("stat");
59       remove (file);
60       exit (1);
61     }
62
63   remove (file);
64
65   if (st.st_mtime != ut.modtime)
66     {
67       printf ("modtime %ld != %ld\n", st.st_mtime, ut.modtime);
68       exit (1);
69     }
70
71   if (st.st_atime != ut.actime)
72     {
73       printf ("actime %ld != %ld\n", st.st_atime, ut.actime);
74       exit (1);
75     }
76
77   puts ("Test succeeded.");
78   exit (0);
79 }