set_xml_property_copy(root, "generated", XML_BOOLEAN_FALSE);
crm_xml_add(root, "generated", XML_BOOLEAN_FALSE);
readCibXmlFile(const char *filename){	int s_res = -1;	struct stat buf;	crm_data_t *root = NULL;		if(filename != NULL) {		s_res = stat(filename, &buf);	}		if (s_res == 0) {		FILE *cib_file = fopen(filename, "r");		root = file2xml(cib_file);		set_xml_property_copy(root, "generated", XML_BOOLEAN_FALSE);		fclose(cib_file);			} else {		crm_warn("Stat of (%s) failed, file does not exist.",			 CIB_FILENAME);	}	if(root != NULL) {		int lpc = 0;		const char *value = NULL;		const char *name = NULL;		crm_data_t *status = get_object_root(XML_CIB_TAG_STATUS, root);		for (; status != NULL && lpc < status->nfields; ) {			if(status->types[lpc] != FT_STRUCT) {				lpc++;				continue;			}			CRM_DEV_ASSERT(cl_msg_remove_offset(status, lpc) == HA_OK);			/* dont get stuck in an infinite loop */			if(crm_assert_failed) {				lpc++;			}		}		name = XML_ATTR_GENERATION_ADMIN;		value = crm_element_value(root, name);		if(value == NULL) {			set_xml_property_copy(root, name, "0");		}		name = XML_ATTR_GENERATION;		value = crm_element_value(root, name);		if(value == NULL) {			set_xml_property_copy(root, name, "0");		}		name = XML_ATTR_NUMUPDATES;		value = crm_element_value(root, name);		if(value == NULL) {			set_xml_property_copy(root, name, "0");		}	}	if (verifyCibXml(root) == FALSE) {		free_xml(root);		root = NULL;	}	return root;}