if (EXIT_SUCCESS == retval) { /* replace datastore by edited configuration */ //xmlFreeNodeList (target_ds->children); //target_ds->children = xmlDocCopyNodeList(file_ds->xml, datastore_doc->children->children); DBG(" %s/%d\n", __func__,__LINE__); #if 1 while ((aux_node = target_ds->children) != NULL) { xmlUnlinkNode(aux_node); xmlFreeNode(aux_node); } xmlAddChildList(target_ds, xmlCopyNodeList(datastore_doc->children)); /* sync xml tree with file on the hdd */ if (file_sync(file_ds)) { retval = EXIT_FAILURE; DBG(" %s/%d\n", __func__,__LINE__); } #endif } else { retval = EXIT_FAILURE; }
时间: 2024-04-20 21:25:07 浏览: 73
RTL8364/RTL8367 芯片手册及驱动代码
这段代码是一个条件语句块,根据 `retval` 的值进行不同的操作。
首先,判断 `retval` 是否等于 `EXIT_SUCCESS`。如果相等,则执行以下操作:
1. 打印调试信息,输出函数名和行号。
2. 使用 `while` 循环,从 `target_ds` 的子节点列表中依次删除节点,并释放节点的内存。
3. 使用 `xmlAddChildList` 将 `datastore_doc->children` 的副本添加为 `target_ds` 的子节点列表。
4. 调用 `file_sync` 函数将 `file_ds` 的数据与硬盘上的文件进行同步。如果同步失败,将 `retval` 设置为 `EXIT_FAILURE`,并打印调试信息。
如果 `retval` 不等于 `EXIT_SUCCESS`,则将 `retval` 设置为 `EXIT_FAILURE`。
总体来说,这段代码根据 `retval` 的值做出不同的处理。如果 `retval` 是成功状态,则替换数据存储的配置,并将数据与文件进行同步;否则,将 `retval` 设置为失败状态。
阅读全文