Ignore:
Timestamp:
2010-11-26T01:03:29Z (14 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
d16fc78
Parents:
96b89acb
Message:
  • reimplement the 'z' modifier (%zu for size_t, %zd for ssize_t)
  • make sure %lc actually takes wint_t argument (compliance with C99)
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/src/printf/printf_core.c

    r96b89acb r1e27d85  
    8383        PrintfQualifierLong,
    8484        PrintfQualifierLongLong,
    85         PrintfQualifierPointer
     85        PrintfQualifierPointer,
     86        PrintfQualifierSize
    8687} qualifier_t;
    8788
     
    553554 *  - ""   Signed or unsigned int (default value).@n
    554555 *  - "l"  Signed or unsigned long int.@n
    555  *         If conversion is "c", the character is wchar_t (wide character).@n
     556 *         If conversion is "c", the character is wint_t (wide character).@n
    556557 *         If conversion is "s", the string is wchar_t * (wide string).@n
    557558 *  - "ll" Signed or unsigned long long int.@n
     559 *  - "z"  Signed or unsigned ssize_t or site_t.@n
    558560 *
    559561 * CONVERSION:@n
     
    737739                                }
    738740                                break;
     741                        case 'z':
     742                                qualifier = PrintfQualifierSize;
     743                                i = nxt;
     744                                uc = str_decode(fmt, &nxt, STR_NO_LIMIT);
     745                                break;
    739746                        default:
    740747                                /* Default type */
     
    764771                        case 'c':
    765772                                if (qualifier == PrintfQualifierLong)
    766                                         retval = print_wchar(va_arg(ap, wchar_t), width, flags, ps);
     773                                        retval = print_wchar(va_arg(ap, wint_t), width, flags, ps);
    767774                                else
    768775                                        retval = print_char(va_arg(ap, unsigned int), width, flags, ps);
     
    850857                                precision = size << 1;
    851858                                number = (uint64_t) (uintptr_t) va_arg(ap, void *);
     859                                break;
     860                        case PrintfQualifierSize:
     861                                size = sizeof(size_t);
     862                                number = (uint64_t) va_arg(ap, size_t);
    852863                                break;
    853864                        default:
Note: See TracChangeset for help on using the changeset viewer.