Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset 1e27d85 in mainline


Ignore:
Timestamp:
2010-11-26T01:03:29Z (11 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master
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)
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • boot/generic/src/printf_core.c

    r96b89acb r1e27d85  
    7979        PrintfQualifierLong,
    8080        PrintfQualifierLongLong,
    81         PrintfQualifierPointer
     81        PrintfQualifierPointer,
     82        PrintfQualifierSize
    8283} qualifier_t;
    8384
     
    431432 *  - ""   Signed or unsigned int (default value).@n
    432433 *  - "l"  Signed or unsigned long int.@n
    433  *         If conversion is "c", the character is wchar_t (wide character).@n
    434  *         If conversion is "s", the string is wchar_t * (wide string).@n
    435434 *  - "ll" Signed or unsigned long long int.@n
    436435 *
     
    612611                                }
    613612                                break;
     613                        case 'z':
     614                                qualifier = PrintfQualifierSize;
     615                                i = nxt;
     616                                uc = str_decode(fmt, &nxt, STR_NO_LIMIT);
     617                                break;
    614618                        default:
    615619                                /* Default type */
     
    720724                                number = (uint64_t) (uintptr_t) va_arg(ap, void *);
    721725                                break;
     726                        case PrintfQualifierSize:
     727                                size = sizeof(size_t);
     728                                number = (uint64_t) va_arg(ap, size_t);
     729                                break;
    722730                        default:
    723731                                /* Unknown qualifier */
  • 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:
  • uspace/lib/c/generic/io/printf_core.c

    r96b89acb r1e27d85  
    8282        PrintfQualifierLong,
    8383        PrintfQualifierLongLong,
    84         PrintfQualifierPointer
     84        PrintfQualifierPointer,
     85        PrintfQualifierSize
    8586} qualifier_t;
    8687
     
    552553 *  - ""   Signed or unsigned int (default value).@n
    553554 *  - "l"  Signed or unsigned long int.@n
    554  *         If conversion is "c", the character is wchar_t (wide character).@n
     555 *         If conversion is "c", the character is wint_t (wide character).@n
    555556 *         If conversion is "s", the string is wchar_t * (wide string).@n
    556557 *  - "ll" Signed or unsigned long long int.@n
     558 *  - "z"  Signed or unsigned ssize_t or site_t.@n
    557559 *
    558560 * CONVERSION:@n
     
    736738                                }
    737739                                break;
     740                        case 'z':
     741                                qualifier = PrintfQualifierSize;
     742                                i = nxt;
     743                                uc = str_decode(fmt, &nxt, STR_NO_LIMIT);
     744                                break;
    738745                        default:
    739746                                /* Default type */
     
    763770                        case 'c':
    764771                                if (qualifier == PrintfQualifierLong)
    765                                         retval = print_wchar(va_arg(ap, wchar_t), width, flags, ps);
     772                                        retval = print_wchar(va_arg(ap, wint_t), width, flags, ps);
    766773                                else
    767774                                        retval = print_char(va_arg(ap, unsigned int), width, flags, ps);
     
    849856                                precision = size << 1;
    850857                                number = (uint64_t) (uintptr_t) va_arg(ap, void *);
     858                                break;
     859                        case PrintfQualifierSize:
     860                                size = sizeof(size_t);
     861                                number = (uint64_t) va_arg(ap, size_t);
    851862                                break;
    852863                        default:
Note: See TracChangeset for help on using the changeset viewer.