Home | History | Annotate | Download | only in strftime
      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 
     21 int 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