MCPcopy Create free account
hub / github.com/Moddable-OpenSource/moddable / fxReadConfiguration

Function fxReadConfiguration

xs/tools/xst262.c:757–828  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

755}
756
757txResult* fxReadConfiguration(txPool* pool, char* path)
758{
759 txFeature** address = &(pool->firstFeature);
760 txFeature* feature = NULL;
761 txResult* result = NULL;
762
763 FILE* input = fopen(path, "r");
764 if (!input) {
765 fprintf(stderr, "### cannot open: %s\n", path);
766 c_exit(1);
767 }
768 yaml_parser_t _parser;
769 yaml_parser_t* parser = NULL;
770 yaml_event_t _event;
771 yaml_event_t* event = &_event;
772 if (!yaml_parser_initialize(&_parser)) goto bail;
773 parser = &_parser;
774 yaml_parser_set_input_file(parser, input);
775 yaml_parser_parse(parser, event);
776 yaml_event_delete(event);
777 yaml_parser_parse(parser, event);
778 yaml_event_delete(event);
779
780 yaml_parser_parse(parser, event);
781 fxCheckEvent(event, YAML_MAPPING_START_EVENT, NULL);
782 yaml_event_delete(event);
783
784 yaml_parser_parse(parser, event);
785 fxCheckEvent(event, YAML_SCALAR_EVENT, "mode");
786 yaml_event_delete(event);
787 yaml_parser_parse(parser, event);
788 fxCheckEvent(event, YAML_SCALAR_EVENT, NULL);
789 if (!c_strcmp((char*)event->data.scalar.value, "lockdown"))
790 pool->flags |= XST_LOCKDOWN_FLAG;
791 else if (!c_strcmp((char*)event->data.scalar.value, "lockdown compartment"))
792 pool->flags |= XST_LOCKDOWN_FLAG | XST_COMPARTMENT_FLAG;
793 else if (c_strcmp((char*)event->data.scalar.value, "default"))
794 fprintf(stderr, "### invalid kind: %s\n", (char*)event->data.scalar.value);
795 yaml_event_delete(event);
796
797 yaml_parser_parse(parser, event);
798 fxCheckEvent(event, YAML_SCALAR_EVENT, "skip");
799 yaml_event_delete(event);
800 yaml_parser_parse(parser, event);
801 fxCheckEvent(event, YAML_SEQUENCE_START_EVENT, NULL);
802 yaml_event_delete(event);
803 yaml_parser_parse(parser, event);
804 while (event->type != YAML_SEQUENCE_END_EVENT) {
805 fxCheckEvent(event, YAML_SCALAR_EVENT, NULL);
806 *address = feature = fxNewFeature((char*)event->data.scalar.value);
807 address = &(feature->next);
808 yaml_event_delete(event);
809 yaml_parser_parse(parser, event);
810 }
811 yaml_event_delete(event);
812
813 yaml_parser_parse(parser, event);
814 fxCheckEvent(event, YAML_SCALAR_EVENT, "fail");

Callers 1

xst262.cFile · 0.85

Calls 8

yaml_parser_initializeFunction · 0.85
yaml_parser_parseFunction · 0.85
yaml_event_deleteFunction · 0.85
fxCheckEventFunction · 0.85
fxNewFeatureFunction · 0.85
fxReadResultFunction · 0.85
yaml_parser_deleteFunction · 0.85

Tested by

no test coverage detected