static rc_t test_vprintf ( const char *expected, const char *fmt, va_list args ) { rc_t rc; size_t num_writ; char buff [ 4096 ]; rc = string_vprintf ( buff, sizeof buff, & num_writ, fmt, args ); if ( rc != 0 ) { /* report return code */ pLogErr ( klogErr, rc, "string_vprintf returned non-zero rc with format '$(fmt)'", "fmt=%s", fmt ); } else { size_t buff_size; /* verify results. they are: 1. string itself 2. number of characters in "num_writ" */ if ( strcmp ( buff, expected ) != 0 ) { /* set an appropriate return code */ rc = RC ( rcExe, rcString, rcFormatting, rcData, rcIncorrect ); /* report discrepancy */ pLogErr ( klogErr, rc, "string_vprintf result differs from expected:\n" " format - '$(format)'\n" " expected - '$(expected)'\n" " observed - '$(observed)'" , "format=%s,expected=%s,observed=%s" , fmt , expected , buff ); } buff_size = strlen ( buff ); if ( buff_size != num_writ ) { /* report discrepancy */ pLogMsg ( klogErr, "string_vprintf size differs from expected:\n" " expected - $(expected)\n" " observed - $(observed)" , "expected=%zu,observed=%zu" , buff_size , num_writ ); } #if 1 rc = 0; #endif } return rc; }
rc_t CC KMain ( int argc, char *argv [] ) { Args *args; rc_t rc = ArgsMakeAndHandle ( & args, argc, argv, 0 ); if ( rc != 0 ) LogErr ( klogErr, rc, "failed to parse arguments" ); else { uint32_t paramc; rc = ArgsParamCount ( args, & paramc ); if ( rc != 0 ) LogErr ( klogInt, rc, "failed to obtain param count" ); else { if ( paramc == 0 ) { rc = RC ( rcExe, rcArgv, rcParsing, rcParam, rcInsufficient ); LogErr ( klogErr, rc, "missing target object" ); MiniUsage ( args ); } else if ( paramc > 1 ) { rc = RC ( rcExe, rcArgv, rcParsing, rcParam, rcExcessive ); LogErr ( klogErr, rc, "expected single target object" ); MiniUsage ( args ); } else { const char *target; rc = ArgsParamValue ( args, 0, & target ); if ( rc != 0 ) LogErr ( klogInt, rc, "failed to obtain param value" ); else { VDBManager *mgr; #if TOOLS_USE_SRAPATH != 0 char full [ 4096 ]; SRAPath *sra_path; rc = SRAPathMake ( & sra_path, NULL ); if ( rc == 0 ) { if ( ! SRAPathTest ( sra_path, target ) ) { rc = SRAPathFind ( sra_path, target, full, sizeof full ); if ( rc == 0 ) target = full; } SRAPathRelease ( sra_path ); } #endif rc = VDBManagerMakeUpdate ( & mgr, NULL ); if ( rc != 0 ) LogErr ( klogInt, rc, "failed to open VDB manager" ); else { rc = VDBManagerLock ( mgr, target ); if ( rc == 0 ) pLogMsg ( klogInfo, "locked '$(target)'", "target=%s", target ); else switch ( GetRCState ( rc ) ) { case rcLocked: pLogMsg ( klogInfo, "'$(target)' was already locked", "target=%s", target ); break; default: pLogErr ( klogErr, rc, "failed to lock '$(target)'", "target=%s", target ); } VDBManagerRelease ( mgr ); } } } } ArgsWhack ( args ); } return rc; }