static void _sg_jscontextpool__force_config_bool(SG_context * pCtx, SG_vhash * pConfig, const char * szSettingName, SG_bool * pValue) { SG_bool has = SG_FALSE; SG_bool value = SG_FALSE; SG_ASSERT(pCtx!=NULL); SG_ASSERT(pConfig!=NULL); SG_ASSERT(szSettingName!=NULL); SG_ERR_CHECK( SG_vhash__has(pCtx, pConfig, szSettingName, &has) ); if(has) { SG_uint16 type_of_value = 0; SG_ERR_CHECK( SG_vhash__typeof(pCtx, pConfig, szSettingName, &type_of_value) ); if(type_of_value==SG_VARIANT_TYPE_SZ) { const char *szValue = NULL; SG_ERR_CHECK( SG_vhash__get__sz(pCtx, pConfig, szSettingName, &szValue) ); value = strcmp(szValue, "true")==0; } else if(type_of_value==SG_VARIANT_TYPE_BOOL) { SG_ERR_CHECK( SG_vhash__get__bool(pCtx, pConfig, szSettingName, &value) ); } } SG_ERR_CHECK( SG_vhash__update__bool(pCtx, pConfig, szSettingName, value) ); if(pValue!=NULL) { *pValue = value; } return; fail: ; }
void SG_vfile__update__bool(SG_context* pCtx, const SG_pathname* pPath, const char* putf8Key, SG_bool value) { SG_vfile* pvf = NULL; SG_vhash* pvh = NULL; SG_ERR_CHECK( SG_vfile__begin(pCtx, pPath, SG_FILE_RDWR | SG_FILE_OPEN_OR_CREATE, &pvh, &pvf) ); if (!pvh) SG_ERR_CHECK( SG_VHASH__ALLOC(pCtx, &pvh) ); SG_ERR_CHECK( SG_vhash__update__bool(pCtx, pvh, putf8Key, value) ); SG_ERR_CHECK( SG_vfile__end(pCtx, &pvf, pvh) ); SG_VHASH_NULLFREE(pCtx, pvh); return; fail: SG_ERR_IGNORE( sg_vfile__dispose(pCtx, pvf) ); SG_VHASH_NULLFREE(pCtx, pvh); }