10dc076565f772bb1953209fb69ea150b494aaa40robbiew/* 20dc076565f772bb1953209fb69ea150b494aaa40robbiew * Copyright (c) 2003, Intel Corporation. All rights reserved. 30dc076565f772bb1953209fb69ea150b494aaa40robbiew * Created by: majid.awad REMOVE-THIS AT intel DOT com 40dc076565f772bb1953209fb69ea150b494aaa40robbiew * This file is licensed under the GPL license. For the full content 50dc076565f772bb1953209fb69ea150b494aaa40robbiew * of this license, see the COPYING file at the top level of this 60dc076565f772bb1953209fb69ea150b494aaa40robbiew * source tree. 70dc076565f772bb1953209fb69ea150b494aaa40robbiew * 80dc076565f772bb1953209fb69ea150b494aaa40robbiew * 92c28215423293e443469a07ae7011135d058b671Garrett Cooper * Modified by the E or O indicate that an alternative format or 102c28215423293e443469a07ae7011135d058b671Garrett Cooper * specification should be used rather than the one normally used by the 110dc076565f772bb1953209fb69ea150b494aaa40robbiew * unmodified conversion specifier (1-1.c). 120dc076565f772bb1953209fb69ea150b494aaa40robbiew */ 130dc076565f772bb1953209fb69ea150b494aaa40robbiew 140dc076565f772bb1953209fb69ea150b494aaa40robbiew#include <stdio.h> 150dc076565f772bb1953209fb69ea150b494aaa40robbiew#include <stdlib.h> 160dc076565f772bb1953209fb69ea150b494aaa40robbiew#include <locale.h> 170dc076565f772bb1953209fb69ea150b494aaa40robbiew#include <langinfo.h> 182c28215423293e443469a07ae7011135d058b671Garrett Cooper#include <time.h> 190dc076565f772bb1953209fb69ea150b494aaa40robbiew#include "posixtest.h" 200dc076565f772bb1953209fb69ea150b494aaa40robbiew 214ca2bbdcd3003f3c8df4e6129e9c7b2bd1514f87Cyril Hrubisint main(void) 22354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao{ 230dc076565f772bb1953209fb69ea150b494aaa40robbiew 24354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao /* current time */ 25354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao time_t t = time(NULL); 26354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao struct tm *local_t = localtime(&t); 27fdc26181550464dd842e65286529a124aa4fab5eJan Stancek char text[256]; 28354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao int result; 290dc076565f772bb1953209fb69ea150b494aaa40robbiew 30354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao setlocale(LC_TIME, ""); 31fdc26181550464dd842e65286529a124aa4fab5eJan Stancek strftime(text, sizeof(text), nl_langinfo(D_T_FMT), local_t); 32354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao printf("STRING IS: %s\n\n", text); 330dc076565f772bb1953209fb69ea150b494aaa40robbiew 340dc076565f772bb1953209fb69ea150b494aaa40robbiew/* use format controls to print the various date/time components. */ 350dc076565f772bb1953209fb69ea150b494aaa40robbiew 360dc076565f772bb1953209fb69ea150b494aaa40robbiew/* This section has been commented for known bug in gcc: 37fdc26181550464dd842e65286529a124aa4fab5eJan Stancek * result = strftime(text, sizeof(text), "%Ec", local_t); 380dc076565f772bb1953209fb69ea150b494aaa40robbiew * printf("Ec Bytes %i %s ", result, text); 398fb1cdb0538640f295691929650408688537fb7fGarrett Cooper * if (result != 31) { 400dc076565f772bb1953209fb69ea150b494aaa40robbiew * puts("Test Failed: \%Ec doesn't equal at least 31 bytes"); 410dc076565f772bb1953209fb69ea150b494aaa40robbiew * return PTS_FAIL; 420dc076565f772bb1953209fb69ea150b494aaa40robbiew * } else { 430dc076565f772bb1953209fb69ea150b494aaa40robbiew * puts("PASS"); 440dc076565f772bb1953209fb69ea150b494aaa40robbiew * } 450dc076565f772bb1953209fb69ea150b494aaa40robbiew */ 460dc076565f772bb1953209fb69ea150b494aaa40robbiew 47fdc26181550464dd842e65286529a124aa4fab5eJan Stancek result = strftime(text, sizeof(text), "%EC", local_t); 48354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao printf("EC Bytes %i %s ", result, text); 49354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao if (result != 2) { 50354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao puts("Test Failed: \%EC doesn't equal to 2 bytes"); 51354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao return PTS_FAIL; 52354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } else { 53354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao puts("PASS"); 54354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } 550dc076565f772bb1953209fb69ea150b494aaa40robbiew 560dc076565f772bb1953209fb69ea150b494aaa40robbiew/* This section has been commented for known bug in gcc: 57fdc26181550464dd842e65286529a124aa4fab5eJan Stancek * result = strftime(text, sizeof(text) , "%Ex", local_t); 580dc076565f772bb1953209fb69ea150b494aaa40robbiew * printf("Ex Bytes %i %s ", result, text); 598fb1cdb0538640f295691929650408688537fb7fGarrett Cooper * if (result != 10) { 600dc076565f772bb1953209fb69ea150b494aaa40robbiew * puts("Test Failed: \%Ex doesn't equal to 10 bytes"); 610dc076565f772bb1953209fb69ea150b494aaa40robbiew * return PTS_FAIL; 620dc076565f772bb1953209fb69ea150b494aaa40robbiew * } else { 630dc076565f772bb1953209fb69ea150b494aaa40robbiew * puts ("PASS"); 640dc076565f772bb1953209fb69ea150b494aaa40robbiew * } 650dc076565f772bb1953209fb69ea150b494aaa40robbiew */ 660dc076565f772bb1953209fb69ea150b494aaa40robbiew 67fdc26181550464dd842e65286529a124aa4fab5eJan Stancek result = strftime(text, sizeof(text), "%EX", local_t); 68354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao printf("EX Bytes %i %s ", result, text); 69354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao if (result <= 3) { 70354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao puts("Test Failed: \%EX doesn't equal to 3 bytes"); 71354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao return PTS_FAIL; 72354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } else { 73354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao puts("PASS"); 74354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } 750dc076565f772bb1953209fb69ea150b494aaa40robbiew 760dc076565f772bb1953209fb69ea150b494aaa40robbiew/* This section has been commented for known bug in gcc: 77fdc26181550464dd842e65286529a124aa4fab5eJan Stancek * result = strftime(text, sizeof(text), "%Ey", local_t); 780dc076565f772bb1953209fb69ea150b494aaa40robbiew * printf("Ey Bytes %i %s ", result, text); 798fb1cdb0538640f295691929650408688537fb7fGarrett Cooper * if (result != 2) { 800dc076565f772bb1953209fb69ea150b494aaa40robbiew * puts("Test Failed: \%Ey doesn't equal at least 2 bytes"); 810dc076565f772bb1953209fb69ea150b494aaa40robbiew * return PTS_FAIL; 820dc076565f772bb1953209fb69ea150b494aaa40robbiew * } else { 830dc076565f772bb1953209fb69ea150b494aaa40robbiew * puts ("PASS"); 840dc076565f772bb1953209fb69ea150b494aaa40robbiew * } 850dc076565f772bb1953209fb69ea150b494aaa40robbiew */ 860dc076565f772bb1953209fb69ea150b494aaa40robbiew 87fdc26181550464dd842e65286529a124aa4fab5eJan Stancek result = strftime(text, sizeof(text), "%EY", local_t); 88354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao printf("EY Bytes %i %s ", result, text); 89354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao if (result != 4) { 90354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao puts("Test Failed: \%EY doesn't equal at least 4 bytes"); 91354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao return PTS_FAIL; 92354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } else { 93354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao puts("PASS"); 94354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } 95354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao 96fdc26181550464dd842e65286529a124aa4fab5eJan Stancek result = strftime(text, sizeof(text), "%Od", local_t); 97354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao printf("Od Bytes %i %s ", result, text); 98354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao if (result != 2) { 99354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao puts("Test Failed: \%Od doesn't equal at least 2 bytes"); 100354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao return PTS_FAIL; 101354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } else { 102354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao puts("PASS"); 103354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } 104354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao 105fdc26181550464dd842e65286529a124aa4fab5eJan Stancek result = strftime(text, sizeof(text), "%Oe", local_t); 106354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao printf("Oe Bytes %i %s ", result, text); 107354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao if (result != 2) { 108354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao puts("Test Failed: \%Oe doesn't equal at least 2 bytes"); 109354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao return PTS_FAIL; 110354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } else { 111354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao puts("PASS"); 112354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } 113354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao 114fdc26181550464dd842e65286529a124aa4fab5eJan Stancek result = strftime(text, sizeof(text), "%OH", local_t); 115354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao printf("OH Bytes %i %s ", result, text); 116354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao if (result != 2) { 117354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao puts("Test Failed: \%OH doesn't equal at least 2 bytes"); 118354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao return PTS_FAIL; 119354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } else { 120354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao puts("PASS"); 121354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } 122354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao 123fdc26181550464dd842e65286529a124aa4fab5eJan Stancek result = strftime(text, sizeof(text), "%OI", local_t); 124354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao printf("OI Bytes %i %s ", result, text); 125354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao if (result != 2) { 126354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao puts("Test Failed: \%OI doesn't equal at least 2 bytes"); 127354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao return PTS_FAIL; 128354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } else { 129354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao puts("PASS"); 130354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } 131354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao 132fdc26181550464dd842e65286529a124aa4fab5eJan Stancek result = strftime(text, sizeof(text), "%Om", local_t); 133354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao printf("Om Bytes %i %s ", result, text); 134354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao if (result != 2) { 135354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao puts("Test Failed: \%Om doesn't equal at least 2 bytes"); 136354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao return PTS_FAIL; 137354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } else { 138354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao puts("PASS"); 139354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } 140354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao 141fdc26181550464dd842e65286529a124aa4fab5eJan Stancek result = strftime(text, sizeof(text), "%OM", local_t); 142354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao printf("OM Bytes %i %s ", result, text); 143354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao if (result != 2) { 144354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao puts("Test Failed: \%OM doesn't equal at least 2 bytes"); 145354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao return PTS_FAIL; 146354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } else { 147354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao puts("PASS"); 148354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } 149354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao 150fdc26181550464dd842e65286529a124aa4fab5eJan Stancek result = strftime(text, sizeof(text), "%OS", local_t); 151354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao printf("OS Bytes %i %s ", result, text); 152354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao if (result != 2) { 153354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao puts("Test Failed: \%OS doesn't equal at least 2 bytes"); 154354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao return PTS_FAIL; 155354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } else { 156354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao puts("PASS"); 157354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } 158354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao 159fdc26181550464dd842e65286529a124aa4fab5eJan Stancek result = strftime(text, sizeof(text), "%Ou", local_t); 160354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao printf("Ou Bytes %i %s ", result, text); 161354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao if (result != 1) { 162354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao puts("Test Failed: \%Ou doesn't equal at least 1 bytes"); 163354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao return PTS_FAIL; 164354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } else { 165354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao puts("PASS"); 166354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } 167354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao 168fdc26181550464dd842e65286529a124aa4fab5eJan Stancek result = strftime(text, sizeof(text), "%OU", local_t); 169354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao printf("OU Bytes %i %s ", result, text); 170354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao if (result != 2) { 171354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao puts("Test Failed: \%OU doesn't equal at least 2 bytes"); 172354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao return PTS_FAIL; 173354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } else { 174354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao puts("PASS"); 175354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } 176354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao 177fdc26181550464dd842e65286529a124aa4fab5eJan Stancek result = strftime(text, sizeof(text), "%OV", local_t); 178354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao printf("OV Bytes %i %s ", result, text); 179354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao if (result != 2) { 180354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao puts("Test Failed: \%OV doesn't equal at least 2 bytes"); 181354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao return PTS_FAIL; 182354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } else { 183354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao puts("PASS"); 184354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } 185354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao 186fdc26181550464dd842e65286529a124aa4fab5eJan Stancek result = strftime(text, sizeof(text), "%Ow", local_t); 187354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao printf("Ow Bytes %i %s ", result, text); 188354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao if (result != 1) { 189354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao puts("Test Failed: \%Ow doesn't equal at least 1 bytes"); 190354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao return PTS_FAIL; 191354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } else { 192354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao puts("PASS"); 193354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } 194354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao 195fdc26181550464dd842e65286529a124aa4fab5eJan Stancek result = strftime(text, sizeof(text), "%OW", local_t); 196354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao printf("OW Bytes %i %s ", result, text); 197354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao if (result != 2) { 198354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao puts("Test Failed: \%OW doesn't equal at least 2 bytes"); 199354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao return PTS_FAIL; 200354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } else { 201354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao puts("PASS"); 202354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } 2030dc076565f772bb1953209fb69ea150b494aaa40robbiew 2040dc076565f772bb1953209fb69ea150b494aaa40robbiew/* This section has been commented for known bug in gcc: 205fdc26181550464dd842e65286529a124aa4fab5eJan Stancek * result = strftime(text, sizeof(text), "%Oy", local_t); 2060dc076565f772bb1953209fb69ea150b494aaa40robbiew * printf("Oy Bytes %i %s ", result, text); 2078fb1cdb0538640f295691929650408688537fb7fGarrett Cooper * if (result != 2) { 2080dc076565f772bb1953209fb69ea150b494aaa40robbiew * puts("Test Failed: \%Oy doesn't equal at least 2 bytes"); 2090dc076565f772bb1953209fb69ea150b494aaa40robbiew * return PTS_FAIL; 2100dc076565f772bb1953209fb69ea150b494aaa40robbiew * } else { 2110dc076565f772bb1953209fb69ea150b494aaa40robbiew * puts ("PASS"); 2120dc076565f772bb1953209fb69ea150b494aaa40robbiew * } 2130dc076565f772bb1953209fb69ea150b494aaa40robbiew */ 2140dc076565f772bb1953209fb69ea150b494aaa40robbiew 215354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao printf("\n"); 2160dc076565f772bb1953209fb69ea150b494aaa40robbiew 217354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao return PTS_PASS; 218ec6edca7aa42b6affd989ef91b5897f96795e40fChris Dearman} 219