Ignore:
Timestamp:
Jan 13, 2021, 12:40:22 AM (3 years ago)
Author:
alain
Message:

Introduce the socket.c & socket.h files.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/libs/mini-libc/stdio.c

    r677 r684  
    142142            }
    143143            case ('x'):             // up to 8 digits hexa after "0x"
    144             case ('X'):             // exactly 8 digits hexa after "0x"
    145144            {
    146145                unsigned int val = va_arg( *args , unsigned int );
     
    150149                {
    151150                    buf[7 - i] = HexaTab[val & 0xF];
    152                     if( (*format == 'x') && ((val >> 4) == 0) )  break;
    153151                    val = val >> 4;
     152                    if( val == 0)  break;
    154153                }
    155154                len =  i + 1;
     
    157156                break;
    158157            }
     158            case ('X'):             // exactly 8 digits hexa after "0x"
     159            {
     160                unsigned int val = va_arg( *args , unsigned int );
     161                TO_STREAM( '0' );
     162                TO_STREAM( 'x' );
     163                for(i = 0 ; i < 8 ; i++)
     164                {
     165                    buf[7 - i] = (val != 0) ? HexaTab[val & 0xF] : '0';
     166                    val = val >> 4;
     167                }
     168                len = 8;
     169                pbuf = &buf[0];
     170                break;
     171            }
    159172            case ('l'):             // up to 16 digits hexa after "0x"
    160             case ('L'):             // exactly 16 digits hexa after "0x"
    161173            {
    162174                unsigned long long val = ((unsigned long long)va_arg( *args, unsigned int)) |
     
    167179                {
    168180                    buf[15 - i] = HexaTab[val & 0xF];
    169                     if( (*format == 'l') && ((val >> 4) == 0) )  break;
    170181                    val = val >> 4;
     182                    if( val == 0)  break;
    171183                }
    172184                len =  i + 1;
    173185                pbuf = &buf[15 - i];
     186                break;
     187            }
     188            case ('L'):             // exactly 16 digits hexa after "0x"
     189            {
     190                unsigned long long val = ((unsigned long long)va_arg( *args, unsigned int)) |
     191                                         ((unsigned long long)va_arg( *args, unsigned int) << 32);
     192                TO_STREAM( '0' );
     193                TO_STREAM( 'x' );
     194                for(i = 0 ; i < 16 ; i++)
     195                {
     196                    buf[15 - i] = (val != 0) ? HexaTab[val & 0xF] : '0';
     197                    val = val >> 4;
     198                }
     199                len =  16;
     200                pbuf = &buf[0];
    174201                break;
    175202            }
Note: See TracChangeset for help on using the changeset viewer.