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