Changeset 89230 in vbox
- Timestamp:
- May 23, 2021 1:21:26 AM (4 years ago)
- Location:
- trunk/src/VBox/Devices/Audio
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Audio/AudioTest.cpp
r89139 r89230 334 334 static int audioTestManifestWriteV(PAUDIOTESTSET pSet, const char *pszFormat, va_list args) 335 335 { 336 /** @todo r=bird: Use RTStrmOpen + RTStrmPrintf instead of this slow 337 * do-it-all-yourself stuff. */ 336 338 char *psz = NULL; 337 339 if (RTStrAPrintfV(&psz, pszFormat, args) == -1) … … 396 398 397 399 /** @todo Keep it as simple as possible for now. Improve this later. */ 398 int rc = audioTestManifestWrite(pSet, "["); 399 AssertRC(rc); 400 401 rc = audioTestManifestWriteV(pSet, pszSection, va); 402 AssertRC(rc); 403 404 rc = audioTestManifestWrite(pSet, "]\n"); 405 AssertRC(rc); 400 int rc = audioTestManifestWrite(pSet, "[%N]", pszSection, &va); 406 401 407 402 va_end(va); … … 604 599 * @returns VBox status code. 605 600 * @param pSet Test set to create. 606 * @param pszPath Absolute path to use for the test set's temporary directory.607 * If NULL, the OS'temporary directory will be used.601 * @param pszPath Where to store the set set data. If NULL, the 602 * temporary directory will be used. 608 603 * @param pszTag Tag name to use for this test set. 609 604 */ … … 615 610 AssertRCReturn(rc, rc); 616 611 612 /* 613 * Test set directory. 614 */ 617 615 if (pszPath) 618 616 { 619 rc = RT StrCopy(pSet->szPathAbs, sizeof(pSet->szPathAbs), pszPath);617 rc = RTPathAbs(pszPath, pSet->szPathAbs, sizeof(pSet->szPathAbs)); 620 618 AssertRCReturn(rc, rc); 621 619 … … 626 624 AssertRCReturn(rc, rc); 627 625 628 if (RT_SUCCESS(rc)) 629 { 630 char szManifest[RTPATH_MAX]; 631 rc = RTStrCopy(szManifest, sizeof(szManifest), pSet->szPathAbs); 632 AssertRCReturn(rc, rc); 633 634 rc = RTPathAppend(szManifest, sizeof(szManifest), AUDIOTEST_MANIFEST_FILE_STR); 635 AssertRCReturn(rc, rc); 636 637 rc = RTFileOpen(&pSet->f.hFile, szManifest, 638 RTFILE_O_CREATE | RTFILE_O_WRITE | RTFILE_O_DENY_WRITE); 639 AssertRCReturn(rc, rc); 640 641 rc = audioTestManifestWriteSectionHdr(pSet, "header"); 642 AssertRCReturn(rc, rc); 643 644 rc = audioTestManifestWrite(pSet, "magic=vkat_ini\n"); /* VKAT Manifest, .INI-style. */ 645 AssertRCReturn(rc, rc); 646 rc = audioTestManifestWrite(pSet, "ver=%d\n", AUDIOTEST_MANIFEST_VER); 647 AssertRCReturn(rc, rc); 648 rc = audioTestManifestWrite(pSet, "tag=%s\n", pSet->szTag); 649 AssertRCReturn(rc, rc); 650 651 char szVal[64]; 652 RTTIMESPEC time; 653 if (!RTTimeSpecToString(RTTimeNow(&time), szVal, sizeof(szVal))) 654 AssertFailedReturn(VERR_BUFFER_OVERFLOW); 655 656 rc = audioTestManifestWrite(pSet, "date_created=%s\n", szVal); 657 AssertRCReturn(rc, rc); 658 659 rc = RTSystemQueryOSInfo(RTSYSOSINFO_PRODUCT, szVal, sizeof(szVal)); 660 AssertRCReturn(rc, rc); 661 rc = audioTestManifestWrite(pSet, "os_product=%s\n", szVal); 662 AssertRCReturn(rc, rc); 663 rc = RTSystemQueryOSInfo(RTSYSOSINFO_RELEASE, szVal, sizeof(szVal)); 664 AssertRCReturn(rc, rc); 665 rc = audioTestManifestWrite(pSet, "os_rel=%s\n", szVal); 666 AssertRCReturn(rc, rc); 667 rc = RTSystemQueryOSInfo(RTSYSOSINFO_VERSION, szVal, sizeof(szVal)); 668 AssertRCReturn(rc, rc); 669 rc = audioTestManifestWrite(pSet, "os_ver=%s\n", szVal); 670 AssertRCReturn(rc, rc); 671 rc = audioTestManifestWrite(pSet, "vbox_ver=%s r%u %s (%s %s)\n", 672 VBOX_VERSION_STRING, RTBldCfgRevision(), 673 RTBldCfgTargetDotArch(), __DATE__, __TIME__); 674 AssertRCReturn(rc, rc); 675 676 rc = audioTestManifestWrite(pSet, "test_count="); 677 AssertRCReturn(rc, rc); 678 pSet->offTestCount = audioTestManifestGetOffsetAbs(pSet); 679 rc = audioTestManifestWrite(pSet, "0000\n"); /* A bit messy, but does the trick for now. */ 680 AssertRCReturn(rc, rc); 681 682 pSet->enmMode = AUDIOTESTSETMODE_TEST; 683 } 626 /* 627 * Create the manifest file. 628 */ 629 char szTmp[RTPATH_MAX]; 630 rc = RTPathJoin(szTmp, sizeof(szTmp), pSet->szPathAbs, AUDIOTEST_MANIFEST_FILE_STR); 631 AssertRCReturn(rc, rc); 632 633 rc = RTFileOpen(&pSet->f.hFile, szTmp, RTFILE_O_CREATE | RTFILE_O_WRITE | RTFILE_O_DENY_WRITE); 634 AssertRCReturn(rc, rc); 635 636 rc = audioTestManifestWriteSectionHdr(pSet, "header"); 637 AssertRCReturn(rc, rc); 638 639 rc = audioTestManifestWrite(pSet, "magic=vkat_ini\n"); /* VKAT Manifest, .INI-style. */ 640 AssertRCReturn(rc, rc); 641 rc = audioTestManifestWrite(pSet, "ver=%d\n", AUDIOTEST_MANIFEST_VER); 642 AssertRCReturn(rc, rc); 643 rc = audioTestManifestWrite(pSet, "tag=%s\n", pSet->szTag); 644 AssertRCReturn(rc, rc); 645 646 AssertCompile(sizeof(szTmp) > RTTIME_STR_LEN); 647 RTTIMESPEC Now; 648 rc = audioTestManifestWrite(pSet, "date_created=%s\n", RTTimeSpecToString(RTTimeNow(&Now), szTmp, sizeof(szTmp))); 649 AssertRCReturn(rc, rc); 650 651 RTSystemQueryOSInfo(RTSYSOSINFO_PRODUCT, szTmp, sizeof(szTmp)); /* do NOT return on failure. */ 652 rc = audioTestManifestWrite(pSet, "os_product=%s\n", szTmp); 653 AssertRCReturn(rc, rc); 654 655 RTSystemQueryOSInfo(RTSYSOSINFO_RELEASE, szTmp, sizeof(szTmp)); /* do NOT return on failure. */ 656 rc = audioTestManifestWrite(pSet, "os_rel=%s\n", szTmp); 657 AssertRCReturn(rc, rc); 658 659 RTSystemQueryOSInfo(RTSYSOSINFO_VERSION, szTmp, sizeof(szTmp)); /* do NOT return on failure. */ 660 rc = audioTestManifestWrite(pSet, "os_ver=%s\n", szTmp); 661 AssertRCReturn(rc, rc); 662 663 rc = audioTestManifestWrite(pSet, "vbox_ver=%s r%u %s (%s %s)\n", 664 VBOX_VERSION_STRING, RTBldCfgRevision(), RTBldCfgTargetDotArch(), __DATE__, __TIME__); 665 AssertRCReturn(rc, rc); 666 667 rc = audioTestManifestWrite(pSet, "test_count="); 668 AssertRCReturn(rc, rc); 669 pSet->offTestCount = audioTestManifestGetOffsetAbs(pSet); 670 rc = audioTestManifestWrite(pSet, "0000\n"); /* A bit messy, but does the trick for now. */ 671 AssertRCReturn(rc, rc); 672 673 pSet->enmMode = AUDIOTESTSETMODE_TEST; 684 674 685 675 return rc; -
trunk/src/VBox/Devices/Audio/AudioTest.h
r89139 r89230 232 232 union 233 233 { 234 /** @todo r=bird: RTSTREAM not RTFILE. That means you don't have to check 235 * every write status code and it's buffered and thus faster. Also, 236 * you don't have to re-invent fprintf-style RTFileWrite wrappers. */ 234 237 RTFILE hFile; 235 238 RTINIFILE hIniFile;
Note:
See TracChangeset
for help on using the changeset viewer.