From: James S. <uja...@gm...> - 2019-11-05 17:06:51
|
Hello I work on a project that wants to move to support heavily YAML in it binary tools. Currently I'm trying to take the tools arguments and build a YAML document around it. For example the YAML doc in human readable format would be *stats:* *- source: MGC172.30.248.30@tcp;* The code is: const char *group = "stats"; yaml_document_t request; memset(&request, *0*, *sizeof*(request)); *if* (!yaml_document_initialize(&request, *NULL*, *NULL*, *NULL*, * 1*, *1*)) *return* -*EINVAL*; map = yaml_document_add_mapping(&request, (yaml_char_t *)YAML_MAP_TAG, YAML_BLOCK_MAPPING_STYLE); *if* (!map) *return* -*EINVAL*; key = yaml_document_add_scalar(&request, (yaml_char_t *)YAML_STR_TAG, (yaml_char_t *)group, strlen(group), YAML_PLAIN_SCALAR_STYLE); *if* (!key) *return* -*EINVAL*; value = yaml_document_add_scalar(&request, (yaml_char_t *)YAML_STR_TAG, (yaml_char_t *)*""*, *0*, YAML_PLAIN_SCALAR_STYLE); *if* (!value) *return* -*EINVAL*; *if* (!yaml_document_append_mapping_pair(&request, map, key, value)) *return* -*EINVAL*; seq = yaml_document_add_sequence(&request, (yaml_char_t *)YAML_SEQ_TAG, YAML_BLOCK_SEQUENCE_STYLE); *if* (!seq) *return* -*EINVAL*; map = yaml_document_add_mapping(&request, (yaml_char_t *)YAML_MAP_TAG, YAML_BLOCK_MAPPING_STYLE); *if* (!map) *return* -*EINVAL*; *if* (!yaml_document_append_sequence_item(&request, seq,map)) *return* -*EINVAL*; key = yaml_document_add_scalar(&request, (yaml_char_t *)YAML_STR_TAG, (yaml_char_t *)*"source"*, *6*, YAML_PLAIN_SCALAR_STYLE); *if* (!key) *return* -*EINVAL*; value = yaml_document_add_scalar(&request, (yaml_char_t *)YAML_STR_TAG, (yaml_char_t*)*"MGC172.30.248.30@tcp"*, *20*, YAML_PLAIN_SCALAR_STYLE); *if* (!value) *return* -*EINVAL*; *if* (!yaml_document_append_mapping_pair(&request, map, key, value)) *return* -*EINVAL*; Currently only "stats:" is printed. I have searched for someone else doing this and it appears I'm the only one trying. Do you know what I'm doing wrong? Thank you. |