static gboolean order_guid_handler (xmlNodePtr node, gpointer order_pdata) { struct order_pdata *pdata = order_pdata; GncGUID *guid; GncOrder *order; guid = dom_tree_to_guid(node); g_return_val_if_fail (guid, FALSE); order = gncOrderLookup (pdata->book, guid); if (order) { gncOrderDestroy (pdata->order); pdata->order = order; gncOrderBeginEdit (order); } else { gncOrderSetGUID(pdata->order, guid); } g_free(guid); return TRUE; }
static gboolean entry_order_handler (xmlNodePtr node, gpointer entry_pdata) { struct entry_pdata *pdata = entry_pdata; GncGUID *guid; GncOrder *order; guid = dom_tree_to_guid (node); g_return_val_if_fail (guid, FALSE); order = gncOrderLookup (pdata->book, guid); if (!order) { order = gncOrderCreate (pdata->book); gncOrderBeginEdit (order); gncOrderSetGUID (order, guid); gncOrderCommitEdit (order); } gncOrderBeginEdit (order); gncOrderAddEntry (order, pdata->entry); gncOrderCommitEdit (order); g_free(guid); return TRUE; }