VirtualBox

Changeset 42598 in vbox for trunk/src/VBox/Runtime/common


Ignore:
Timestamp:
Aug 5, 2012 11:47:01 AM (12 years ago)
Author:
vboxsync
Message:

strformat.cpp: Added support for microsoft I64, I32 and I as well as the BSD q type size specifiers.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/common/string/strformat.cpp

    r40938 r42598  
    451451                }
    452452
    453                 /* argsize */
     453                /*
     454                 * Argument size.
     455                 */
    454456                chArgSize = *pszFormat;
    455                 if (chArgSize != 'l' && chArgSize != 'L' && chArgSize != 'h' && chArgSize != 'j' && chArgSize != 'z' && chArgSize != 't')
    456                     chArgSize = 0;
    457                 else
     457                switch (chArgSize)
    458458                {
    459                     pszFormat++;
    460                     if (*pszFormat == 'l' && chArgSize == 'l')
    461                     {
     459                    default:
     460                        chArgSize = 0;
     461                        break;
     462
     463                    case 'z':
     464                    case 'L':
     465                    case 'j':
     466                    case 't':
     467                        pszFormat++;
     468                        break;
     469
     470                    case 'l':
     471                        pszFormat++;
     472                        if (*pszFormat == 'l')
     473                        {
     474                            chArgSize = 'L';
     475                            pszFormat++;
     476                        }
     477                        break;
     478
     479                    case 'h':
     480                        pszFormat++;
     481                        if (*pszFormat == 'h')
     482                        {
     483                            chArgSize = 'H';
     484                            pszFormat++;
     485                        }
     486                        break;
     487
     488                    case 'I': /* Used by Win32/64 compilers. */
     489                        if (   pszFormat[1] == '6'
     490                            && pszFormat[2] == '4')
     491                        {
     492                            pszFormat += 3;
     493                            chArgSize = 'L';
     494                        }
     495                        else if (   pszFormat[1] == '3'
     496                                 && pszFormat[2] == '2')
     497                        {
     498                            pszFormat += 3;
     499                            chArgSize = 0;
     500                        }
     501                        else
     502                        {
     503                            pszFormat += 1;
     504                            chArgSize = 'j';
     505                        }
     506                        break;
     507
     508                    case 'q': /* Used on BSD platforms. */
     509                        pszFormat++;
    462510                        chArgSize = 'L';
    463                         pszFormat++;
    464                     }
    465                     else if (*pszFormat == 'h' && chArgSize == 'h')
    466                     {
    467                         chArgSize = 'H';
    468                         pszFormat++;
    469                     }
     511                        break;
    470512                }
    471513
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette