2-1.c revision ec6edca7aa42b6affd989ef91b5897f96795e40f
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 210dc076565f772bb1953209fb69ea150b494aaa40robbiewint main () { 220dc076565f772bb1953209fb69ea150b494aaa40robbiew 230dc076565f772bb1953209fb69ea150b494aaa40robbiew /* current time */ 240dc076565f772bb1953209fb69ea150b494aaa40robbiew time_t t = time(NULL); 250dc076565f772bb1953209fb69ea150b494aaa40robbiew struct tm* local_t = localtime(&t); 26ae20cfd389f1e686b9f83d2f46bce8841f16e975subrata_modak char text[100]; 270dc076565f772bb1953209fb69ea150b494aaa40robbiew int result; 280dc076565f772bb1953209fb69ea150b494aaa40robbiew 290dc076565f772bb1953209fb69ea150b494aaa40robbiew setlocale(LC_TIME, ""); 300dc076565f772bb1953209fb69ea150b494aaa40robbiew strftime(text, 256, nl_langinfo (D_T_FMT), local_t); 310dc076565f772bb1953209fb69ea150b494aaa40robbiew printf("STRING IS: %s\n\n", text); 320dc076565f772bb1953209fb69ea150b494aaa40robbiew 330dc076565f772bb1953209fb69ea150b494aaa40robbiew/* use format controls to print the various date/time components. */ 340dc076565f772bb1953209fb69ea150b494aaa40robbiew 350dc076565f772bb1953209fb69ea150b494aaa40robbiew/* This section has been commented for known bug in gcc: 360dc076565f772bb1953209fb69ea150b494aaa40robbiew * result = strftime(text, 256, "%Ec", local_t); 370dc076565f772bb1953209fb69ea150b494aaa40robbiew * printf("Ec Bytes %i %s ", result, text); 388fb1cdb0538640f295691929650408688537fb7fGarrett Cooper * if (result != 31) { 390dc076565f772bb1953209fb69ea150b494aaa40robbiew * puts("Test Failed: \%Ec doesn't equal at least 31 bytes"); 400dc076565f772bb1953209fb69ea150b494aaa40robbiew * return PTS_FAIL; 410dc076565f772bb1953209fb69ea150b494aaa40robbiew * } else { 420dc076565f772bb1953209fb69ea150b494aaa40robbiew * puts("PASS"); 430dc076565f772bb1953209fb69ea150b494aaa40robbiew * } 440dc076565f772bb1953209fb69ea150b494aaa40robbiew */ 450dc076565f772bb1953209fb69ea150b494aaa40robbiew 460dc076565f772bb1953209fb69ea150b494aaa40robbiew result = strftime(text, 256, "%EC", local_t); 470dc076565f772bb1953209fb69ea150b494aaa40robbiew printf("EC Bytes %i %s ", result, text); 488fb1cdb0538640f295691929650408688537fb7fGarrett Cooper if (result != 2) { 490dc076565f772bb1953209fb69ea150b494aaa40robbiew puts("Test Failed: \%EC doesn't equal to 2 bytes"); 500dc076565f772bb1953209fb69ea150b494aaa40robbiew return PTS_FAIL; 510dc076565f772bb1953209fb69ea150b494aaa40robbiew } else { 520dc076565f772bb1953209fb69ea150b494aaa40robbiew puts ("PASS"); 530dc076565f772bb1953209fb69ea150b494aaa40robbiew } 540dc076565f772bb1953209fb69ea150b494aaa40robbiew 550dc076565f772bb1953209fb69ea150b494aaa40robbiew/* This section has been commented for known bug in gcc: 560dc076565f772bb1953209fb69ea150b494aaa40robbiew * result = strftime(text, 256 , "%Ex", local_t); 570dc076565f772bb1953209fb69ea150b494aaa40robbiew * printf("Ex Bytes %i %s ", result, text); 588fb1cdb0538640f295691929650408688537fb7fGarrett Cooper * if (result != 10) { 590dc076565f772bb1953209fb69ea150b494aaa40robbiew * puts("Test Failed: \%Ex doesn't equal to 10 bytes"); 600dc076565f772bb1953209fb69ea150b494aaa40robbiew * return PTS_FAIL; 610dc076565f772bb1953209fb69ea150b494aaa40robbiew * } else { 620dc076565f772bb1953209fb69ea150b494aaa40robbiew * puts ("PASS"); 630dc076565f772bb1953209fb69ea150b494aaa40robbiew * } 640dc076565f772bb1953209fb69ea150b494aaa40robbiew */ 650dc076565f772bb1953209fb69ea150b494aaa40robbiew 660dc076565f772bb1953209fb69ea150b494aaa40robbiew result = strftime(text, 256, "%EX", local_t); 670dc076565f772bb1953209fb69ea150b494aaa40robbiew printf("EX Bytes %i %s ", result, text); 688fb1cdb0538640f295691929650408688537fb7fGarrett Cooper if (result <= 3) { 690dc076565f772bb1953209fb69ea150b494aaa40robbiew puts("Test Failed: \%EX doesn't equal to 3 bytes"); 700dc076565f772bb1953209fb69ea150b494aaa40robbiew return PTS_FAIL; 710dc076565f772bb1953209fb69ea150b494aaa40robbiew } else { 720dc076565f772bb1953209fb69ea150b494aaa40robbiew puts ("PASS"); 730dc076565f772bb1953209fb69ea150b494aaa40robbiew } 740dc076565f772bb1953209fb69ea150b494aaa40robbiew 750dc076565f772bb1953209fb69ea150b494aaa40robbiew/* This section has been commented for known bug in gcc: 760dc076565f772bb1953209fb69ea150b494aaa40robbiew * result = strftime(text, 256, "%Ey", local_t); 770dc076565f772bb1953209fb69ea150b494aaa40robbiew * printf("Ey Bytes %i %s ", result, text); 788fb1cdb0538640f295691929650408688537fb7fGarrett Cooper * if (result != 2) { 790dc076565f772bb1953209fb69ea150b494aaa40robbiew * puts("Test Failed: \%Ey doesn't equal at least 2 bytes"); 800dc076565f772bb1953209fb69ea150b494aaa40robbiew * return PTS_FAIL; 810dc076565f772bb1953209fb69ea150b494aaa40robbiew * } else { 820dc076565f772bb1953209fb69ea150b494aaa40robbiew * puts ("PASS"); 830dc076565f772bb1953209fb69ea150b494aaa40robbiew * } 840dc076565f772bb1953209fb69ea150b494aaa40robbiew */ 850dc076565f772bb1953209fb69ea150b494aaa40robbiew 860dc076565f772bb1953209fb69ea150b494aaa40robbiew result = strftime(text, 256, "%EY", local_t); 870dc076565f772bb1953209fb69ea150b494aaa40robbiew printf("EY Bytes %i %s ", result, text); 888fb1cdb0538640f295691929650408688537fb7fGarrett Cooper if (result != 4) { 890dc076565f772bb1953209fb69ea150b494aaa40robbiew puts("Test Failed: \%EY doesn't equal at least 4 bytes"); 900dc076565f772bb1953209fb69ea150b494aaa40robbiew return PTS_FAIL; 910dc076565f772bb1953209fb69ea150b494aaa40robbiew } else { 920dc076565f772bb1953209fb69ea150b494aaa40robbiew puts ("PASS"); 930dc076565f772bb1953209fb69ea150b494aaa40robbiew } 940dc076565f772bb1953209fb69ea150b494aaa40robbiew 950dc076565f772bb1953209fb69ea150b494aaa40robbiew result = strftime(text, 256, "%Od", local_t); 960dc076565f772bb1953209fb69ea150b494aaa40robbiew printf("Od Bytes %i %s ", result, text); 978fb1cdb0538640f295691929650408688537fb7fGarrett Cooper if (result != 2) { 980dc076565f772bb1953209fb69ea150b494aaa40robbiew puts("Test Failed: \%Od doesn't equal at least 2 bytes"); 990dc076565f772bb1953209fb69ea150b494aaa40robbiew return PTS_FAIL; 1000dc076565f772bb1953209fb69ea150b494aaa40robbiew } else { 1010dc076565f772bb1953209fb69ea150b494aaa40robbiew puts ("PASS"); 1020dc076565f772bb1953209fb69ea150b494aaa40robbiew } 1030dc076565f772bb1953209fb69ea150b494aaa40robbiew 1040dc076565f772bb1953209fb69ea150b494aaa40robbiew result = strftime(text, 256, "%Oe", local_t); 1050dc076565f772bb1953209fb69ea150b494aaa40robbiew printf("Oe Bytes %i %s ", result, text); 1068fb1cdb0538640f295691929650408688537fb7fGarrett Cooper if (result != 2) { 1070dc076565f772bb1953209fb69ea150b494aaa40robbiew puts("Test Failed: \%Oe doesn't equal at least 2 bytes"); 1080dc076565f772bb1953209fb69ea150b494aaa40robbiew return PTS_FAIL; 1090dc076565f772bb1953209fb69ea150b494aaa40robbiew } else { 1100dc076565f772bb1953209fb69ea150b494aaa40robbiew puts ("PASS"); 1110dc076565f772bb1953209fb69ea150b494aaa40robbiew } 1120dc076565f772bb1953209fb69ea150b494aaa40robbiew 1130dc076565f772bb1953209fb69ea150b494aaa40robbiew result = strftime(text, 256, "%OH", local_t); 1140dc076565f772bb1953209fb69ea150b494aaa40robbiew printf("OH Bytes %i %s ", result, text); 1158fb1cdb0538640f295691929650408688537fb7fGarrett Cooper if (result != 2) { 1160dc076565f772bb1953209fb69ea150b494aaa40robbiew puts("Test Failed: \%OH doesn't equal at least 2 bytes"); 1170dc076565f772bb1953209fb69ea150b494aaa40robbiew return PTS_FAIL; 1180dc076565f772bb1953209fb69ea150b494aaa40robbiew } else { 1190dc076565f772bb1953209fb69ea150b494aaa40robbiew puts ("PASS"); 1200dc076565f772bb1953209fb69ea150b494aaa40robbiew } 1210dc076565f772bb1953209fb69ea150b494aaa40robbiew 1220dc076565f772bb1953209fb69ea150b494aaa40robbiew result = strftime(text, 256, "%OI", local_t); 1230dc076565f772bb1953209fb69ea150b494aaa40robbiew printf("OI Bytes %i %s ", result, text); 1248fb1cdb0538640f295691929650408688537fb7fGarrett Cooper if (result != 2) { 1250dc076565f772bb1953209fb69ea150b494aaa40robbiew puts("Test Failed: \%OI doesn't equal at least 2 bytes"); 1260dc076565f772bb1953209fb69ea150b494aaa40robbiew return PTS_FAIL; 1270dc076565f772bb1953209fb69ea150b494aaa40robbiew } else { 1280dc076565f772bb1953209fb69ea150b494aaa40robbiew puts ("PASS"); 1290dc076565f772bb1953209fb69ea150b494aaa40robbiew } 1300dc076565f772bb1953209fb69ea150b494aaa40robbiew 1310dc076565f772bb1953209fb69ea150b494aaa40robbiew result = strftime(text, 256, "%Om", local_t); 1320dc076565f772bb1953209fb69ea150b494aaa40robbiew printf("Om Bytes %i %s ", result, text); 1338fb1cdb0538640f295691929650408688537fb7fGarrett Cooper if (result != 2) { 1340dc076565f772bb1953209fb69ea150b494aaa40robbiew puts("Test Failed: \%Om doesn't equal at least 2 bytes"); 1350dc076565f772bb1953209fb69ea150b494aaa40robbiew return PTS_FAIL; 1360dc076565f772bb1953209fb69ea150b494aaa40robbiew } else { 1370dc076565f772bb1953209fb69ea150b494aaa40robbiew puts ("PASS"); 1380dc076565f772bb1953209fb69ea150b494aaa40robbiew } 1390dc076565f772bb1953209fb69ea150b494aaa40robbiew 1400dc076565f772bb1953209fb69ea150b494aaa40robbiew result = strftime(text, 256, "%OM", local_t); 1410dc076565f772bb1953209fb69ea150b494aaa40robbiew printf("OM Bytes %i %s ", result, text); 1428fb1cdb0538640f295691929650408688537fb7fGarrett Cooper if (result != 2) { 1430dc076565f772bb1953209fb69ea150b494aaa40robbiew puts("Test Failed: \%OM doesn't equal at least 2 bytes"); 1440dc076565f772bb1953209fb69ea150b494aaa40robbiew return PTS_FAIL; 1450dc076565f772bb1953209fb69ea150b494aaa40robbiew } else { 1460dc076565f772bb1953209fb69ea150b494aaa40robbiew puts ("PASS"); 1470dc076565f772bb1953209fb69ea150b494aaa40robbiew } 1480dc076565f772bb1953209fb69ea150b494aaa40robbiew 1490dc076565f772bb1953209fb69ea150b494aaa40robbiew result = strftime(text, 256, "%OS", local_t); 1500dc076565f772bb1953209fb69ea150b494aaa40robbiew printf("OS Bytes %i %s ", result, text); 1518fb1cdb0538640f295691929650408688537fb7fGarrett Cooper if (result != 2) { 1520dc076565f772bb1953209fb69ea150b494aaa40robbiew puts("Test Failed: \%OS doesn't equal at least 2 bytes"); 1530dc076565f772bb1953209fb69ea150b494aaa40robbiew return PTS_FAIL; 1540dc076565f772bb1953209fb69ea150b494aaa40robbiew } else { 1550dc076565f772bb1953209fb69ea150b494aaa40robbiew puts ("PASS"); 1560dc076565f772bb1953209fb69ea150b494aaa40robbiew } 1570dc076565f772bb1953209fb69ea150b494aaa40robbiew 1580dc076565f772bb1953209fb69ea150b494aaa40robbiew result = strftime(text, 256, "%Ou", local_t); 1590dc076565f772bb1953209fb69ea150b494aaa40robbiew printf("Ou Bytes %i %s ", result, text); 1608fb1cdb0538640f295691929650408688537fb7fGarrett Cooper if (result != 1) { 1610dc076565f772bb1953209fb69ea150b494aaa40robbiew puts("Test Failed: \%Ou doesn't equal at least 1 bytes"); 1620dc076565f772bb1953209fb69ea150b494aaa40robbiew return PTS_FAIL; 1630dc076565f772bb1953209fb69ea150b494aaa40robbiew } else { 1640dc076565f772bb1953209fb69ea150b494aaa40robbiew puts ("PASS"); 1650dc076565f772bb1953209fb69ea150b494aaa40robbiew } 1660dc076565f772bb1953209fb69ea150b494aaa40robbiew 1670dc076565f772bb1953209fb69ea150b494aaa40robbiew result = strftime(text, 256, "%OU", local_t); 1680dc076565f772bb1953209fb69ea150b494aaa40robbiew printf("OU Bytes %i %s ", result, text); 1698fb1cdb0538640f295691929650408688537fb7fGarrett Cooper if (result != 2) { 1700dc076565f772bb1953209fb69ea150b494aaa40robbiew puts("Test Failed: \%OU doesn't equal at least 2 bytes"); 1710dc076565f772bb1953209fb69ea150b494aaa40robbiew return PTS_FAIL; 1720dc076565f772bb1953209fb69ea150b494aaa40robbiew } else { 1730dc076565f772bb1953209fb69ea150b494aaa40robbiew puts ("PASS"); 1740dc076565f772bb1953209fb69ea150b494aaa40robbiew } 1750dc076565f772bb1953209fb69ea150b494aaa40robbiew 1760dc076565f772bb1953209fb69ea150b494aaa40robbiew result = strftime(text, 256, "%OV", local_t); 1770dc076565f772bb1953209fb69ea150b494aaa40robbiew printf("OV Bytes %i %s ", result, text); 1788fb1cdb0538640f295691929650408688537fb7fGarrett Cooper if (result != 2) { 1790dc076565f772bb1953209fb69ea150b494aaa40robbiew puts("Test Failed: \%OV doesn't equal at least 2 bytes"); 1800dc076565f772bb1953209fb69ea150b494aaa40robbiew return PTS_FAIL; 1810dc076565f772bb1953209fb69ea150b494aaa40robbiew } else { 1820dc076565f772bb1953209fb69ea150b494aaa40robbiew puts ("PASS"); 1830dc076565f772bb1953209fb69ea150b494aaa40robbiew } 1840dc076565f772bb1953209fb69ea150b494aaa40robbiew 1850dc076565f772bb1953209fb69ea150b494aaa40robbiew result = strftime(text, 256, "%Ow", local_t); 1860dc076565f772bb1953209fb69ea150b494aaa40robbiew printf("Ow Bytes %i %s ", result, text); 1878fb1cdb0538640f295691929650408688537fb7fGarrett Cooper if (result != 1) { 1880dc076565f772bb1953209fb69ea150b494aaa40robbiew puts("Test Failed: \%Ow doesn't equal at least 1 bytes"); 1890dc076565f772bb1953209fb69ea150b494aaa40robbiew return PTS_FAIL; 1900dc076565f772bb1953209fb69ea150b494aaa40robbiew } else { 1910dc076565f772bb1953209fb69ea150b494aaa40robbiew puts ("PASS"); 1920dc076565f772bb1953209fb69ea150b494aaa40robbiew } 1930dc076565f772bb1953209fb69ea150b494aaa40robbiew 1940dc076565f772bb1953209fb69ea150b494aaa40robbiew result = strftime(text, 256, "%OW", local_t); 1950dc076565f772bb1953209fb69ea150b494aaa40robbiew printf("OW Bytes %i %s ", result, text); 1968fb1cdb0538640f295691929650408688537fb7fGarrett Cooper if (result != 2) { 1970dc076565f772bb1953209fb69ea150b494aaa40robbiew puts("Test Failed: \%OW doesn't equal at least 2 bytes"); 1980dc076565f772bb1953209fb69ea150b494aaa40robbiew return PTS_FAIL; 1990dc076565f772bb1953209fb69ea150b494aaa40robbiew } else { 2000dc076565f772bb1953209fb69ea150b494aaa40robbiew puts ("PASS"); 2010dc076565f772bb1953209fb69ea150b494aaa40robbiew } 2020dc076565f772bb1953209fb69ea150b494aaa40robbiew 2030dc076565f772bb1953209fb69ea150b494aaa40robbiew/* This section has been commented for known bug in gcc: 2040dc076565f772bb1953209fb69ea150b494aaa40robbiew * result = strftime(text, 256, "%Oy", local_t); 2050dc076565f772bb1953209fb69ea150b494aaa40robbiew * printf("Oy Bytes %i %s ", result, text); 2068fb1cdb0538640f295691929650408688537fb7fGarrett Cooper * if (result != 2) { 2070dc076565f772bb1953209fb69ea150b494aaa40robbiew * puts("Test Failed: \%Oy doesn't equal at least 2 bytes"); 2080dc076565f772bb1953209fb69ea150b494aaa40robbiew * return PTS_FAIL; 2090dc076565f772bb1953209fb69ea150b494aaa40robbiew * } else { 2100dc076565f772bb1953209fb69ea150b494aaa40robbiew * puts ("PASS"); 2110dc076565f772bb1953209fb69ea150b494aaa40robbiew * } 2120dc076565f772bb1953209fb69ea150b494aaa40robbiew */ 2130dc076565f772bb1953209fb69ea150b494aaa40robbiew 2140dc076565f772bb1953209fb69ea150b494aaa40robbiew printf("\n"); 2150dc076565f772bb1953209fb69ea150b494aaa40robbiew 2160dc076565f772bb1953209fb69ea150b494aaa40robbiewreturn PTS_PASS; 217ec6edca7aa42b6affd989ef91b5897f96795e40fChris Dearman} 218