| 354 | } |
| 355 | |
| 356 | void |
| 357 | fix_cib_diff(xmlNode * last, xmlNode * next, xmlNode * local_diff, gboolean changed) |
| 358 | { |
| 359 | xmlNode *cib = NULL; |
| 360 | xmlNode *diff_child = NULL; |
| 361 | |
| 362 | const char *tag = NULL; |
| 363 | const char *value = NULL; |
| 364 | |
| 365 | if(local_diff == NULL) { |
| 366 | crm_trace("Nothing to do"); |
| 367 | return; |
| 368 | } |
| 369 | |
| 370 | tag = "diff-removed"; |
| 371 | diff_child = find_xml_node(local_diff, tag, FALSE); |
| 372 | if (diff_child == NULL) { |
| 373 | diff_child = create_xml_node(local_diff, tag); |
| 374 | } |
| 375 | |
| 376 | tag = XML_TAG_CIB; |
| 377 | cib = find_xml_node(diff_child, tag, FALSE); |
| 378 | if (cib == NULL) { |
| 379 | cib = create_xml_node(diff_child, tag); |
| 380 | } |
| 381 | |
| 382 | tag = XML_ATTR_GENERATION_ADMIN; |
| 383 | value = crm_element_value(last, tag); |
| 384 | crm_xml_add(diff_child, tag, value); |
| 385 | if (changed) { |
| 386 | crm_xml_add(cib, tag, value); |
| 387 | } |
| 388 | |
| 389 | tag = XML_ATTR_GENERATION; |
| 390 | value = crm_element_value(last, tag); |
| 391 | crm_xml_add(diff_child, tag, value); |
| 392 | if (changed) { |
| 393 | crm_xml_add(cib, tag, value); |
| 394 | } |
| 395 | |
| 396 | tag = XML_ATTR_NUMUPDATES; |
| 397 | value = crm_element_value(last, tag); |
| 398 | crm_xml_add(cib, tag, value); |
| 399 | crm_xml_add(diff_child, tag, value); |
| 400 | |
| 401 | tag = "diff-added"; |
| 402 | diff_child = find_xml_node(local_diff, tag, FALSE); |
| 403 | if (diff_child == NULL) { |
| 404 | diff_child = create_xml_node(local_diff, tag); |
| 405 | } |
| 406 | |
| 407 | tag = XML_TAG_CIB; |
| 408 | cib = find_xml_node(diff_child, tag, FALSE); |
| 409 | if (cib == NULL) { |
| 410 | cib = create_xml_node(diff_child, tag); |
| 411 | } |
| 412 | |
| 413 | if (next) { |
no test coverage detected