1/*
2 * Copyright (c) 2003, Intel Corporation. All rights reserved.
3 * Created by:  majid.awad REMOVE-THIS AT intel DOT com
4 * This file is licensed under the GPL license.  For the full content
5 * of this license, see the COPYING file at the top level of this
6 * source tree.
7 *
8 *
9 * Modified by the E or O indicate that an alternative format or
10 * specification should be used rather than the one normally used by the
11 * unmodified conversion specifier (1-1.c).
12 */
13
14#include <stdio.h>
15#include <stdlib.h>
16#include <locale.h>
17#include <langinfo.h>
18#include <time.h>
19#include "posixtest.h"
20
21int main(void)
22{
23
24	/* current time */
25	time_t t = time(NULL);
26	struct tm *local_t = localtime(&t);
27	char text[256];
28	int result;
29
30	setlocale(LC_TIME, "");
31	strftime(text, sizeof(text), nl_langinfo(D_T_FMT), local_t);
32	printf("STRING IS:   %s\n\n", text);
33
34/* use format controls to print the various date/time components. */
35
36/*  This section has been commented for known bug in gcc:
37 *  result = strftime(text, sizeof(text), "%Ec", local_t);
38 *  printf("Ec   Bytes %i           %s	", result, text);
39 *  if (result != 31) {
40 *    puts("Test Failed: \%Ec doesn't equal at least 31 bytes");
41 *    return PTS_FAIL;
42 *   } else {
43 *    puts("PASS");
44 *   }
45 */
46
47	result = strftime(text, sizeof(text), "%EC", local_t);
48	printf("EC   Bytes %i           %s	", result, text);
49	if (result != 2) {
50		puts("Test Failed: \%EC doesn't equal to 2 bytes");
51		return PTS_FAIL;
52	} else {
53		puts("PASS");
54	}
55
56/*  This section has been commented for known bug in gcc:
57 *  result = strftime(text, sizeof(text) , "%Ex", local_t);
58 *  printf("Ex   Bytes %i           %s	", result, text);
59 *  if (result != 10) {
60 *    puts("Test Failed: \%Ex doesn't equal to 10 bytes");
61 *    return PTS_FAIL;
62 *   } else {
63 *    puts ("PASS");
64 *   }
65 */
66
67	result = strftime(text, sizeof(text), "%EX", local_t);
68	printf("EX   Bytes %i           %s	", result, text);
69	if (result <= 3) {
70		puts("Test Failed: \%EX doesn't equal to 3 bytes");
71		return PTS_FAIL;
72	} else {
73		puts("PASS");
74	}
75
76/*  This section has been commented for known bug in gcc:
77 *  result = strftime(text, sizeof(text), "%Ey", local_t);
78 *  printf("Ey   Bytes %i           %s	", result, text);
79 *  if (result != 2) {
80 *    puts("Test Failed: \%Ey doesn't equal at least 2 bytes");
81 *    return PTS_FAIL;
82 *   } else {
83 *    puts ("PASS");
84 *   }
85 */
86
87	result = strftime(text, sizeof(text), "%EY", local_t);
88	printf("EY   Bytes %i           %s	", result, text);
89	if (result != 4) {
90		puts("Test Failed: \%EY doesn't equal at least 4 bytes");
91		return PTS_FAIL;
92	} else {
93		puts("PASS");
94	}
95
96	result = strftime(text, sizeof(text), "%Od", local_t);
97	printf("Od   Bytes %i           %s	", result, text);
98	if (result != 2) {
99		puts("Test Failed: \%Od doesn't equal at least 2 bytes");
100		return PTS_FAIL;
101	} else {
102		puts("PASS");
103	}
104
105	result = strftime(text, sizeof(text), "%Oe", local_t);
106	printf("Oe   Bytes %i           %s	", result, text);
107	if (result != 2) {
108		puts("Test Failed: \%Oe doesn't equal at least 2 bytes");
109		return PTS_FAIL;
110	} else {
111		puts("PASS");
112	}
113
114	result = strftime(text, sizeof(text), "%OH", local_t);
115	printf("OH   Bytes %i           %s	", result, text);
116	if (result != 2) {
117		puts("Test Failed: \%OH doesn't equal at least 2 bytes");
118		return PTS_FAIL;
119	} else {
120		puts("PASS");
121	}
122
123	result = strftime(text, sizeof(text), "%OI", local_t);
124	printf("OI   Bytes %i           %s	", result, text);
125	if (result != 2) {
126		puts("Test Failed: \%OI doesn't equal at least 2 bytes");
127		return PTS_FAIL;
128	} else {
129		puts("PASS");
130	}
131
132	result = strftime(text, sizeof(text), "%Om", local_t);
133	printf("Om   Bytes %i           %s	", result, text);
134	if (result != 2) {
135		puts("Test Failed: \%Om doesn't equal at least 2 bytes");
136		return PTS_FAIL;
137	} else {
138		puts("PASS");
139	}
140
141	result = strftime(text, sizeof(text), "%OM", local_t);
142	printf("OM   Bytes %i           %s	", result, text);
143	if (result != 2) {
144		puts("Test Failed: \%OM doesn't equal at least 2 bytes");
145		return PTS_FAIL;
146	} else {
147		puts("PASS");
148	}
149
150	result = strftime(text, sizeof(text), "%OS", local_t);
151	printf("OS   Bytes %i           %s	", result, text);
152	if (result != 2) {
153		puts("Test Failed: \%OS doesn't equal at least 2 bytes");
154		return PTS_FAIL;
155	} else {
156		puts("PASS");
157	}
158
159	result = strftime(text, sizeof(text), "%Ou", local_t);
160	printf("Ou   Bytes %i           %s	", result, text);
161	if (result != 1) {
162		puts("Test Failed: \%Ou doesn't equal at least 1 bytes");
163		return PTS_FAIL;
164	} else {
165		puts("PASS");
166	}
167
168	result = strftime(text, sizeof(text), "%OU", local_t);
169	printf("OU   Bytes %i           %s	", result, text);
170	if (result != 2) {
171		puts("Test Failed: \%OU doesn't equal at least 2 bytes");
172		return PTS_FAIL;
173	} else {
174		puts("PASS");
175	}
176
177	result = strftime(text, sizeof(text), "%OV", local_t);
178	printf("OV   Bytes %i           %s	", result, text);
179	if (result != 2) {
180		puts("Test Failed: \%OV doesn't equal at least 2 bytes");
181		return PTS_FAIL;
182	} else {
183		puts("PASS");
184	}
185
186	result = strftime(text, sizeof(text), "%Ow", local_t);
187	printf("Ow   Bytes %i           %s	", result, text);
188	if (result != 1) {
189		puts("Test Failed: \%Ow doesn't equal at least 1 bytes");
190		return PTS_FAIL;
191	} else {
192		puts("PASS");
193	}
194
195	result = strftime(text, sizeof(text), "%OW", local_t);
196	printf("OW   Bytes %i           %s	", result, text);
197	if (result != 2) {
198		puts("Test Failed: \%OW doesn't equal at least 2 bytes");
199		return PTS_FAIL;
200	} else {
201		puts("PASS");
202	}
203
204/*  This section has been commented for known bug in gcc:
205 *  result = strftime(text, sizeof(text), "%Oy", local_t);
206 *  printf("Oy   Bytes %i           %s	", result, text);
207 *  if (result != 2) {
208 *    puts("Test Failed: \%Oy doesn't equal at least 2 bytes");
209 *    return PTS_FAIL;
210 *   } else {
211 *    puts ("PASS");
212 *   }
213 */
214
215	printf("\n");
216
217	return PTS_PASS;
218}
219