Changeset 1531


Ignore:
Timestamp:
Sep 28, 2004, 5:24:16 AM (21 years ago)
Author:
bird
Message:

New size prefixes.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/emx/src/lib/io/_output.c

    • Property cvs2svn:cvs-rev changed from 1.5 to 1.6
    r1530 r1531  
    1717#define FALSE           0
    1818#define TRUE            1
     19
     20#define SIZE_HH         (('h' << 8) | 'h')
     21#define SIZE_LL         (('l' << 8) | 'l')
    1922
    2023#define DEFAULT_PREC    6
     
    695698{
    696699  olocal v;
    697   char size, cont;
     700  int size;
     701  char cont;
    698702  unsigned char c;
    699703  int mbn, shift;
     
    818822        /* Size */
    819823
    820         if (*format == 'h' || *format == 'l' || *format == 'L')
     824        if (   *format == 'h' || *format == 'l' || *format == 'L'
     825            || *format == 'j' || *format == 'z' || *format == 't'
     826            || *format == 'q' || *format == 'Z' )
    821827          {
    822828            size = *format++;
    823829            if (size == 'l' && *format == 'l')
    824830              {
    825                 size = 'L'; ++format;
    826               }
     831                size = SIZE_LL; ++format;
     832              }
     833            else if (size == 'h' && *format == 'h')
     834              {
     835                size = SIZE_HH; ++format;
     836              }
     837            else if (size == 'q' || size == 'j')
     838                size = SIZE_LL;
     839            else if (size == 'z' || size == 'Z' || size == 't')
     840                size = 'l';
    827841          }
    828842
     
    835849
    836850          case 'n':
    837             if (size == 'L')
     851            if (size == SIZE_LL || size == 'L')
    838852              {
    839853                long long *ptr = va_arg (arg_ptr, long long *);
     
    843857              {
    844858                short *ptr = va_arg (arg_ptr, short *);
     859                *ptr = v.count;
     860              }
     861            else if (size == SIZE_HH)
     862              {
     863                char *ptr = va_arg (arg_ptr, char *);
    845864                *ptr = v.count;
    846865              }
     
    868887          case 'd':
    869888          case 'i':
    870             if (size == 'L')
     889            if (size == SIZE_LL || size == 'L')
    871890              {
    872891                long long n = va_arg (arg_ptr, long long);
     
    881900                if (size == 'h')
    882901                  n = (short)n;
     902                else if (size == SIZE_HH)
     903                  n = (char)n;
    883904                if (n < 0)
    884905                  CHECK (cvt_dec_32 (&v, -n, TRUE, TRUE));
     
    889910
    890911          case 'u':
    891             if (size == 'L')
     912            if (size == SIZE_LL || size == 'L')
    892913              CHECK (cvt_dec_64 (&v, va_arg (arg_ptr, unsigned long long),
    893914                                 FALSE, FALSE));
     
    897918                if (size == 'h')
    898919                  n = (unsigned short)n;
     920                else if (size == SIZE_HH)
     921                  n = (unsigned char)n;
    899922                CHECK (cvt_dec_32 (&v, n, FALSE, FALSE));
    900923              }
     
    908931          case 'x':
    909932          case 'X':
    910             if (size == 'L')
     933            if (size == SIZE_LL || size == 'L')
    911934              CHECK (cvt_hex_64 (&v, va_arg (arg_ptr, unsigned long long),
    912935                                 *format));
     
    916939                if (size == 'h')
    917940                  n = (unsigned short)n;
     941                else if (size == SIZE_HH)
     942                  n = (unsigned char)n;
    918943                CHECK (cvt_hex_32 (&v, n, *format));
    919944              }
     
    921946
    922947          case 'o':
    923             if (size == 'L')
     948            if (size == SIZE_LL || size == 'L')
    924949              CHECK (cvt_oct_64 (&v, va_arg (arg_ptr, unsigned long long)));
    925950            else
     
    928953                if (size == 'h')
    929954                  n = (unsigned short)n;
     955                else if (size == SIZE_HH)
     956                  n = (unsigned char)n;
    930957                CHECK (cvt_oct_32 (&v, n));
    931958              }
Note: See TracChangeset for help on using the changeset viewer.