diff --git a/src/model.c b/src/model.c index 3528ab4..23675d9 100644 --- a/src/model.c +++ b/src/model.c @@ -86,49 +86,27 @@ void model_populate_hashtable(xmlNode *node, char* model_find_node_by_path(xmlNode *node, const char *path) { return (xmlNodePtr)xmlHashLookup(hashTable, (const xmlChar *)path); } -/* -------------------------------------------------------------------------- */ -static inline long model_get_node_long_attrib (xmlNodePtr node, char *id) -{ - xmlAttr *attribute; - xmlChar* value; - long ret_value; - - if (node && node->properties) { - attribute = node->properties; - while(attribute && attribute->name && attribute->children) { - if (!xmlStrcmp(attribute->name, (const xmlChar *)id)) { - value = xmlNodeListGetString(node->doc, attribute->children, 1); - ret_value = strtol((char *)value, NULL, 0); - xmlFree(value); - return ret_value; - } - attribute = attribute->next; - } +/** + * Modifies the content of an XML node identified by its path in the hash table. + * + * @param hashTable The hash table containing the XML nodes. + * @param path The path to the node to modify. + * @param newContent The new content to set for the node. + * @return 1 if the node was found and modified, 0 otherwise. + */ +int model_modify_node(xmlHashTablePtr hashTable, + const char *path, + const char *newContent) { + xmlNodePtr node = model_find_node_by_path(hashTable, path); + if (node) { + // Free the current content of the node, if any + xmlNodeSetContent(node, (const xmlChar *)""); // Clear existing content + // Set new content + xmlNodeSetContent(node, (const xmlChar *)newContent); + return 1; // Success } - return 0; -} - -static inline bool model_get_node_str_attrib (xmlNodePtr node, - char *id, - char *dest) -{ - xmlAttr *attribute; - xmlChar* value; - - if (node && node->properties) { - attribute = node->properties; - while(attribute && attribute->name && attribute->children) { - if (!xmlStrcmp(attribute->name, (const xmlChar *)id)) { - value = xmlNodeListGetString(node->doc, attribute->children, 1); - strcpy(dest, value); - xmlFree(value); - return true; - } - attribute = attribute->next; - } - } - return false; + return 0; // Node not found or unable to modify } /* -------------------------------------------------------------------------- */