int APP_CONFIGS::parse(XML_PARSER& xp, PROJECT* p) { app_configs.clear(); if (!xp.parse_start("app_config")) return ERR_XML_PARSE; while (!xp.get_tag()) { if (xp.match_tag("/app_config")) return 0; if (xp.match_tag("app")) { APP_CONFIG ac; int retval = ac.parse(xp, p); if (!retval) { app_configs.push_back(ac); } continue; } if (xp.match_tag("app_version")) { APP_VERSION_CONFIG avc; int retval = avc.parse(xp, p); if (!retval) { app_version_configs.push_back(avc); } continue; } if (log_flags.unparsed_xml) { msg_printf(p, MSG_INFO, "Unparsed line in app_info.xml: %s", xp.parsed_tag ); } xp.skip_unexpected(log_flags.unparsed_xml, "APP_CONFIGS::parse"); } return ERR_XML_PARSE; }
int APP_CONFIGS::parse(XML_PARSER& xp, MSG_VEC& mv, LOG_FLAGS& log_flags) { char buf[1024]; int n; clear(); while (!xp.get_tag()) { if (!xp.is_tag) { sprintf(buf, "unexpected text '%s' in app_config.xml", xp.parsed_tag); mv.push_back(string(buf)); return ERR_XML_PARSE; } if (xp.match_tag("/app_config")) return 0; if (xp.match_tag("app")) { APP_CONFIG ac; int retval = ac.parse(xp, mv, log_flags); if (retval) return retval; app_configs.push_back(ac); continue; } if (xp.match_tag("app_version")) { APP_VERSION_CONFIG avc; int retval = avc.parse(xp, mv, log_flags); if (retval) return retval; app_version_configs.push_back(avc); continue; } if (xp.parse_int("project_max_concurrent", n)) { if (n >= 0) { have_max_concurrent = true; project_max_concurrent = n; } continue; } if (xp.parse_bool("report_results_immediately", report_results_immediately)) { continue; } sprintf(buf, "Unknown tag in app_config.xml: %s", xp.parsed_tag); mv.push_back(string(buf)); xp.skip_unexpected(log_flags.unparsed_xml, "APP_CONFIGS::parse"); } mv.push_back(string("Missing </app_config> in app_config.xml")); return ERR_XML_PARSE; }