Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/date/date.c

    r465ac5e r09ab0a9a  
    11/*
    2  * Copyright (c) 2025 Wayne Michael Thornton (WMT) <wmthornton-dev@outlook.com>
    32 * Copyright (c) 2012 Maurizio Lombardi
    43 * All rights reserved.
     
    196195
    197196/** Read the day, month and year from a string
    198  *  with the following format: DD/MM/YYYY or MM/DD/YYYY
     197 *  with the following format: DD/MM/YYYY
    199198 */
    200199static errno_t
     
    203202        errno_t rc;
    204203        uint32_t tmp;
    205         uint32_t first_num;
    206         uint32_t second_num;
    207204
    208205        if (str_size(wdate) != 10) /* str_size("DD/MM/YYYY") == 10 */
     
    214211        }
    215212
    216         /* Parse first number */
    217         rc = str_uint32_t(&wdate[0], NULL, 10, false, &first_num);
     213        rc = str_uint32_t(&wdate[0], NULL, 10, false, &tmp);
    218214        if (rc != EOK)
    219215                return rc;
    220216
    221         /* Parse second number */
    222         rc = str_uint32_t(&wdate[3], NULL, 10, false, &second_num);
     217        t->tm_mday = tmp;
     218
     219        rc = str_uint32_t(&wdate[3], NULL, 10, false, &tmp);
    223220        if (rc != EOK)
    224221                return rc;
    225222
    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         }
     223        t->tm_mon = tmp - 1;
    240224
    241225        rc = str_uint32_t(&wdate[6], NULL, 10, false, &tmp);
    242         if (rc != EOK)
    243                 return rc;
    244 
    245226        t->tm_year = tmp - 1900;
    246227
    247         return EOK;
     228        return rc;
    248229}
    249230
     
    350331usage(void)
    351332{
    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");
     333        printf("Usage: date [-d DD/MM/YYYY] [-t HH:MM[:SS]]\n");
     334        printf("       -d   Change the current date\n");
    354335        printf("       -t   Change the current time\n");
    355336        printf("       -h   Display this information\n");
Note: See TracChangeset for help on using the changeset viewer.