Ignore:
Timestamp:
2010-05-21T07:50:04Z (16 years ago)
Author:
Lenka Trochtova <trochtova.lenka@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
d51ee2b
Parents:
cf8cc36 (diff), 15b592b (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

merge mainline changes (rev. 451)

File:
1 moved

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/generic/io/printf_core.c

    rcf8cc36 rc47e1a8  
    4141#include <io/printf_core.h>
    4242#include <ctype.h>
    43 #include <string.h>
     43#include <str.h>
    4444
    4545/** show prefixes 0x or 0 */
    4646#define __PRINTF_FLAG_PREFIX       0x00000001
     47
    4748/** signed / unsigned number */
    4849#define __PRINTF_FLAG_SIGNED       0x00000002
     50
    4951/** print leading zeroes */
    5052#define __PRINTF_FLAG_ZEROPADDED   0x00000004
     53
    5154/** align to left */
    5255#define __PRINTF_FLAG_LEFTALIGNED  0x00000010
     56
    5357/** always show + sign */
    5458#define __PRINTF_FLAG_SHOWPLUS     0x00000020
     59
    5560/** print space instead of plus */
    5661#define __PRINTF_FLAG_SPACESIGN    0x00000040
     62
    5763/** show big characters */
    5864#define __PRINTF_FLAG_BIGCHARS     0x00000080
     65
    5966/** number has - sign */
    6067#define __PRINTF_FLAG_NEGATIVE     0x00000100
     
    7885} qualifier_t;
    7986
    80 static char nullstr[] = "(NULL)";
    81 static char digits_small[] = "0123456789abcdef";
    82 static char digits_big[] = "0123456789ABCDEF";
    83 static char invalch = U_SPECIAL;
     87static const char *nullstr = "(NULL)";
     88static const char *digits_small = "0123456789abcdef";
     89static const char *digits_big = "0123456789ABCDEF";
     90static const char invalch = U_SPECIAL;
    8491
    8592/** Print one or more characters without adding newline.
     
    253260        if (str == NULL)
    254261                return printf_putstr(nullstr, ps);
    255 
     262       
    256263        /* Print leading spaces. */
    257264        size_t strw = str_length(str);
    258265        if (precision == 0)
    259266                precision = strw;
    260 
     267       
    261268        /* Left padding */
    262269        size_t counter = 0;
     
    268275                }
    269276        }
    270 
     277       
    271278        /* Part of @a str fitting into the alloted space. */
    272279        int retval;
     
    350357    uint32_t flags, printf_spec_t *ps)
    351358{
    352         char *digits;
     359        const char *digits;
    353360        if (flags & __PRINTF_FLAG_BIGCHARS)
    354361                digits = digits_big;
     
    383390         */
    384391        if (flags & __PRINTF_FLAG_PREFIX) {
    385                 switch(base) {
     392                switch (base) {
    386393                case 2:
    387394                        /* Binary formating is not standard, but usefull */
     
    447454        /* Print prefix */
    448455        if (flags & __PRINTF_FLAG_PREFIX) {
    449                 switch(base) {
     456                switch (base) {
    450457                case 2:
    451458                        /* Binary formating is not standard, but usefull */
     
    562569 *
    563570 *  - P, p Print value of a pointer. Void * value is expected and it is
    564  *         printed in hexadecimal notation with prefix (as with \%#X / \%#x
    565  *         for 32-bit or \%#X / \%#x for 64-bit long pointers).
     571 *         printed in hexadecimal notation with prefix (as with
     572 *         \%#0.8X / \%#0.8x for 32-bit or \%#0.16lX / \%#0.16lx for 64-bit
     573 *         long pointers).
    566574 *
    567575 *  - b Print value as unsigned binary number. Prefix is not printed by
     
    776784                        case 'p':
    777785                                flags |= __PRINTF_FLAG_PREFIX;
     786                                flags |= __PRINTF_FLAG_ZEROPADDED;
    778787                                base = 16;
    779788                                qualifier = PrintfQualifierPointer;
     
    838847                        case PrintfQualifierPointer:
    839848                                size = sizeof(void *);
    840                                 number = (uint64_t) (unsigned long) va_arg(ap, void *);
     849                                precision = size << 1;
     850                                number = (uint64_t) (uintptr_t) va_arg(ap, void *);
    841851                                break;
    842852                        default:
Note: See TracChangeset for help on using the changeset viewer.