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