74e6d1cea33640d1922a1df2f96f5a6a766eeef9
[platform/upstream/glibc.git] / time / tst-ftime.c
1 /* Verify that ftime is sane.
2    Copyright (C) 2014-2018 Free Software Foundation, Inc.
3    This file is part of the GNU C Library.
4
5    The GNU C Library is free software; you can redistribute it and/or
6    modify it under the terms of the GNU Lesser General Public
7    License as published by the Free Software Foundation; either
8    version 2.1 of the License, or (at your option) any later version.
9
10    The GNU C Library is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13    Lesser General Public License for more details.
14
15    You should have received a copy of the GNU Lesser General Public
16    License along with the GNU C Library; if not, see
17    <http://www.gnu.org/licenses/>.  */
18
19 #include <sys/timeb.h>
20 #include <stdio.h>
21
22 static int
23 do_test (void)
24 {
25   struct timeb prev, curr = {.time = 0, .millitm = 0};
26   int sec = 0;
27
28   while (sec != 3)
29     {
30       prev = curr;
31
32       if (ftime (&curr))
33         {
34           printf ("ftime returned an error\n");
35           return 1;
36         }
37
38       if (curr.time < prev.time)
39         {
40           printf ("ftime's time flowed backwards\n");
41           return 1;
42         }
43
44       if (curr.time == prev.time
45           && curr.millitm < prev.millitm)
46         {
47           printf ("ftime's millitm flowed backwards\n");
48           return 1;
49         }
50
51       if (curr.time > prev.time)
52         sec ++;
53     }
54   return 0;
55 }
56
57 #define TIMEOUT 3
58 #define TEST_FUNCTION do_test ()
59 #include "../test-skeleton.c"