static rc_t aws_KConfigNodeUpdateChild ( KConfigNode *self, String *name, String *value ) { KConfigNode * child; rc_t rc = KConfigNodeOpenNodeUpdate ( self, & child, "%S", name ); if ( rc == 0 ) { rc = KConfigNodeWrite ( child, value -> addr, value -> size ); KConfigNodeRelease ( child ); } return rc; }
static rc_t SetNode(KConfig* cfg, const Params* prm) { rc_t rc = 0; KConfigNode* node = NULL; char* name = NULL; char* val = NULL; assert(cfg && prm && prm->setValue); name = strdup(prm->setValue); if (name == NULL) { return RC(rcExe, rcStorage, rcAllocating, rcMemory, rcExhausted); } val = strchr(name, '='); if (val == NULL || *(val + 1) == '\0') { rc_t rc = RC(rcExe, rcArgv, rcParsing, rcParam, rcInvalid); LOGERR(klogErr, rc, "Bad " OPTION_SET " value"); } if (rc == 0) { *(val++) = '\0'; rc = KConfigOpenNodeUpdate(cfg, &node, name); if (rc != 0) { PLOGERR(klogErr, (klogErr, rc, "Cannot open node '$(name)' for update", "name=%s", name)); } } if (rc == 0) { assert(val); rc = KConfigNodeWrite(node, val, strlen(val)); if (rc != 0) { PLOGERR(klogErr, (klogErr, rc, "Cannot write value '$(val) to node '$(name)'", "val=%s,name=%s", val, name)); } } if (rc == 0) { rc = KConfigCommit(cfg); DISP_RC(rc, "while calling KConfigCommit"); } free(name); name = NULL; RELEASE(KConfigNode, node); return rc; }