VirtualBox

Changeset 108141 in vbox


Ignore:
Timestamp:
Feb 10, 2025 2:25:10 PM (11 days ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
167442
Message:

Runtime/RTAcpi*: Some new helpers to allow format strings for name strings and string objects, bugref:10733

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/iprt/acpi.h

    r108131 r108141  
    406406
    407407/**
     408 * Appends a new String object - format string variant.
     409 *
     410 * @returns IPRT status code.
     411 * @param   hAcpiTbl            The ACPI table handle.
     412 * @param   pszNameFmt          The format string to build the name string from.
     413 * @param   ...                 Arguments for the format string.
     414 */
     415RTDECL(int) RTAcpiTblNameStringAppendF(RTACPITBL hAcpiTbl, const char *pszNameFmt, ...) RT_IPRT_FORMAT_ATTR(2, 3);
     416
     417
     418/**
     419 * Appends a new String object - format string variant.
     420 *
     421 * @returns IPRT status code.
     422 * @param   hAcpiTbl            The ACPI table handle.
     423 * @param   pszNameFmt          The format string to build the name string from.
     424 * @param   va                  The format arguments.
     425 */
     426RTDECL(int) RTAcpiTblNameStringAppendV(RTACPITBL hAcpiTbl, const char *pszNameFmt, va_list va) RT_IPRT_FORMAT_ATTR(2, 0);
     427
     428
     429/**
    408430 * Appends a new String object.
    409431 *
     
    413435 */
    414436RTDECL(int) RTAcpiTblStringAppend(RTACPITBL hAcpiTbl, const char *psz);
     437
     438
     439/**
     440 * Appends a new String object - format string variant.
     441 *
     442 * @returns IPRT status code.
     443 * @param   hAcpiTbl            The ACPI table handle.
     444 * @param   pszFmt              The format string to build the string from.
     445 * @param   ...                 Arguments for the format string.
     446 */
     447RTDECL(int) RTAcpiTblStringAppendF(RTACPITBL hAcpiTbl, const char *pszFmt, ...) RT_IPRT_FORMAT_ATTR(2, 3);
     448
     449
     450/**
     451 * Appends a new String object - format string variant.
     452 *
     453 * @returns IPRT status code.
     454 * @param   hAcpiTbl            The ACPI table handle.
     455 * @param   pszFmt              The format string to build the string from.
     456 * @param   va                  The format arguments.
     457 */
     458RTDECL(int) RTAcpiTblStringAppendV(RTACPITBL hAcpiTbl, const char *pszFmt, va_list va) RT_IPRT_FORMAT_ATTR(2, 0);
    415459
    416460
  • trunk/include/iprt/mangling.h

    r108131 r108141  
    418418# define RTAcpiTblNameAppend                            RT_MANGLER(RTAcpiTblNameAppend)
    419419# define RTAcpiTblNameStringAppend                      RT_MANGLER(RTAcpiTblNameStringAppend)
     420# define RTAcpiTblNameStringAppendF                     RT_MANGLER(RTAcpiTblNameStringAppendF)
     421# define RTAcpiTblNameStringAppendV                     RT_MANGLER(RTAcpiTblNameStringAppendV)
    420422# define RTAcpiTblNullNameAppend                        RT_MANGLER(RTAcpiTblNullNameAppend)
    421423# define RTAcpiTblOpRegionAppend                        RT_MANGLER(RTAcpiTblOpRegionAppend)
     
    433435# define RTAcpiTblStringAppend                          RT_MANGLER(RTAcpiTblStringAppend)
    434436# define RTAcpiTblStringAppendAsUtf16                   RT_MANGLER(RTAcpiTblStringAppendAsUtf16)
     437# define RTAcpiTblStringAppendF                         RT_MANGLER(RTAcpiTblStringAppendF)
     438# define RTAcpiTblStringAppendV                         RT_MANGLER(RTAcpiTblStringAppendV)
    435439# define RTAcpiTblUuidAppend                            RT_MANGLER(RTAcpiTblUuidAppend)
    436440# define RTAcpiTblUuidAppendFromStr                     RT_MANGLER(RTAcpiTblUuidAppendFromStr)
  • trunk/src/VBox/Runtime/common/acpi/acpi.cpp

    r108131 r108141  
    981981
    982982
     983RTDECL(int) RTAcpiTblNameStringAppendF(RTACPITBL hAcpiTbl, const char *pszNameFmt, ...)
     984{
     985    va_list va;
     986    va_start(va, pszNameFmt);
     987    int rc = RTAcpiTblNameStringAppendV(hAcpiTbl, pszNameFmt, va);
     988    va_end(va);
     989    return rc;
     990}
     991
     992
     993RTDECL(int) RTAcpiTblNameStringAppendV(RTACPITBL hAcpiTbl, const char *pszNameFmt, va_list va)
     994{
     995    char szName[512];
     996    ssize_t cch = RTStrPrintf2V(&szName[0], sizeof(szName), pszNameFmt, va);
     997    if (cch <= 0)
     998        return VERR_BUFFER_OVERFLOW;
     999
     1000    return RTAcpiTblNameStringAppend(hAcpiTbl, &szName[0]);
     1001}
     1002
     1003
    9831004RTDECL(int) RTAcpiTblStringAppend(RTACPITBL hAcpiTbl, const char *psz)
    9841005{
     
    9891010    rtAcpiTblAppendData(pThis, psz, (uint32_t)strlen(psz) + 1);
    9901011    return pThis->rcErr;
     1012}
     1013
     1014
     1015RTDECL(int) RTAcpiTblStringAppendF(RTACPITBL hAcpiTbl, const char *pszNameFmt, ...)
     1016{
     1017    va_list va;
     1018    va_start(va, pszNameFmt);
     1019    int rc = RTAcpiTblStringAppendV(hAcpiTbl, pszNameFmt, va);
     1020    va_end(va);
     1021    return rc;
     1022}
     1023
     1024
     1025RTDECL(int) RTAcpiTblStringAppendV(RTACPITBL hAcpiTbl, const char *pszNameFmt, va_list va)
     1026{
     1027    char szName[512];
     1028    ssize_t cch = RTStrPrintf2V(&szName[0], sizeof(szName), pszNameFmt, va);
     1029    if (cch <= 0)
     1030        return VERR_BUFFER_OVERFLOW;
     1031
     1032    return RTAcpiTblStringAppend(hAcpiTbl, &szName[0]);
    9911033}
    9921034
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