Changeset 465ac5e in mainline for uspace/app/date/date.c
- Timestamp:
- 2025-04-12T15:49:45Z (3 days ago)
- Children:
- 1cea9c0
- Parents:
- b8b031f
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/date/date.c
rb8b031f r465ac5e 1 1 /* 2 * Copyright (c) 2025 Wayne Michael Thornton (WMT) <wmthornton-dev@outlook.com> 2 3 * Copyright (c) 2012 Maurizio Lombardi 3 4 * All rights reserved. … … 195 196 196 197 /** Read the day, month and year from a string 197 * with the following format: DD/MM/YYYY 198 * with the following format: DD/MM/YYYY or MM/DD/YYYY 198 199 */ 199 200 static errno_t … … 202 203 errno_t rc; 203 204 uint32_t tmp; 205 uint32_t first_num; 206 uint32_t second_num; 204 207 205 208 if (str_size(wdate) != 10) /* str_size("DD/MM/YYYY") == 10 */ … … 211 214 } 212 215 213 rc = str_uint32_t(&wdate[0], NULL, 10, false, &tmp); 214 if (rc != EOK) 215 return rc; 216 217 t->tm_mday = tmp; 218 219 rc = str_uint32_t(&wdate[3], NULL, 10, false, &tmp); 220 if (rc != EOK) 221 return rc; 222 223 t->tm_mon = tmp - 1; 216 /* Parse first number */ 217 rc = str_uint32_t(&wdate[0], NULL, 10, false, &first_num); 218 if (rc != EOK) 219 return rc; 220 221 /* Parse second number */ 222 rc = str_uint32_t(&wdate[3], NULL, 10, false, &second_num); 223 if (rc != EOK) 224 return rc; 225 226 /* Determine format based on first number */ 227 if (first_num > 12) { 228 /* First number is day (DD/MM/YYYY format) */ 229 t->tm_mday = first_num; 230 t->tm_mon = second_num - 1; 231 } else if (second_num > 12) { 232 /* Second number is day (MM/DD/YYYY format) */ 233 t->tm_mon = first_num - 1; 234 t->tm_mday = second_num; 235 } else { 236 /* Ambiguous case - assume DD/MM/YYYY format */ 237 t->tm_mday = first_num; 238 t->tm_mon = second_num - 1; 239 } 224 240 225 241 rc = str_uint32_t(&wdate[6], NULL, 10, false, &tmp); 242 if (rc != EOK) 243 return rc; 244 226 245 t->tm_year = tmp - 1900; 227 246 228 return rc;247 return EOK; 229 248 } 230 249 … … 331 350 usage(void) 332 351 { 333 printf("Usage: date [-d DD/MM/YYYY ] [-t HH:MM[:SS]]\n");334 printf(" -d Change the current date \n");352 printf("Usage: date [-d DD/MM/YYYY|MM/DD/YYYY] [-t HH:MM[:SS]]\n"); 353 printf(" -d Change the current date (supports both DD/MM/YYYY and MM/DD/YYYY formats)\n"); 335 354 printf(" -t Change the current time\n"); 336 355 printf(" -h Display this information\n");
Note:
See TracChangeset
for help on using the changeset viewer.