OSDN Git Service

Replace FSF snail mail address with URLs
[uclinux-h8/uClibc.git] / test / time / test_time.c
1 /* Copyright (C) 1991, 1992, 1994, 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 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.
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    Lesser General Public License for more details.
13
14    You should have received a copy of the GNU Lesser General Public
15    License along with the GNU C Library; if not, see
16    <http://www.gnu.org/licenses/>.  */
17
18 #include <stdio.h>
19 #include <stdlib.h>
20 #include <time.h>
21
22
23 int
24 main (int argc, char **argv)
25 {
26   time_t t;
27   register struct tm *tp;
28   struct tm tbuf;
29   int lose = 0;
30
31   --argc;
32   ++argv;
33
34   do
35     {
36       char buf[BUFSIZ];
37       if (argc > 0)
38         {
39           static char tzenvbuf[BUFSIZ];
40           sprintf(tzenvbuf, "TZ=%s", *argv);
41           if (putenv(tzenvbuf))
42             {
43               puts("putenv failed.");
44               lose = 1;
45             }
46           else
47             puts (tzenvbuf);
48         }
49       tzset();
50       tbuf.tm_year = 72;
51       tbuf.tm_mon = 0;
52       tbuf.tm_mday = 31;
53       tbuf.tm_hour = 6;
54       tbuf.tm_min = 14;
55       tbuf.tm_sec = 50;
56       tbuf.tm_isdst = -1;
57     doit:;
58       t = mktime(&tbuf);
59       if (t == (time_t) -1)
60         {
61           puts("mktime() failed?");
62           lose = 1;
63         }
64       tp = localtime(&t);
65       if (tp == NULL)
66         {
67           puts("localtime() failed.");
68           lose = 1;
69         }
70       else if (strftime(buf, sizeof(buf), "%a %b %d %X %Z %Y", tp) == 0)
71         {
72           puts("strftime() failed.");
73           lose = 1;
74         }
75       else
76         puts(buf);
77       if (tbuf.tm_year == 101)
78         {
79           tbuf.tm_year = 97;
80           tbuf.tm_mon = 0;
81           goto doit;
82         }
83       ++argv;
84     } while (--argc > 0);
85
86   {
87 #define SIZE    256
88     char buffer[SIZE];
89     time_t curtime;
90     struct tm *loctime;
91
92     curtime = time (NULL);
93
94     loctime = localtime (&curtime);
95
96     fputs (asctime (loctime), stdout);
97
98     strftime (buffer, SIZE, "Today is %A, %B %d.\n", loctime);
99     fputs (buffer, stdout);
100     strftime (buffer, SIZE, "The time is %I:%M %p.\n", loctime);
101     fputs (buffer, stdout);
102
103     loctime->tm_year = 72;
104     loctime->tm_mon = 8;
105     loctime->tm_mday = 12;
106     loctime->tm_hour = 20;
107     loctime->tm_min = 49;
108     loctime->tm_sec = 05;
109     curtime = mktime (loctime);
110     strftime (buffer, SIZE, "%D %T was %w the %jth.\n", loctime);
111     fputs (buffer, stdout);
112   }
113
114   return (lose ? EXIT_FAILURE : EXIT_SUCCESS);
115 }