*/
#include "tnccs_reason_strings_msg.h"
+#include "tnccs_error_msg.h"
#include <debug.h>
linked_list_t *errors)
{
private_tnccs_reason_strings_msg_t *this;
+ char *error_msg, *lang_string, *reason_string;
+ tnccs_error_type_t error_type = TNCCS_ERROR_MALFORMED_BATCH;
+ tnccs_msg_t *msg;
+ xmlNodePtr child;
INIT(this,
.public = {
.node = node,
);
+ if (xmlStrcmp(node->name, (const xmlChar*)"TNCCS-ReasonStrings"))
+ {
+ error_msg = "TNCCS-ReasonStrings tag in expected";
+ goto fatal;
+ }
+
+ child = node->xmlChildrenNode;
+ while (child)
+ {
+ if (xmlIsBlankNode(child))
+ {
+ child = child->next;
+ continue;
+ }
+ if (xmlStrcmp(child->name, (const xmlChar*)"ReasonString"))
+ {
+ error_msg = "ReasonString tag in expected";
+ goto fatal;
+ }
+ break;
+ }
+
+ lang_string = (char*)xmlGetProp(child, (const xmlChar*)"lang");
+ if (!lang_string)
+ {
+ lang_string = "";
+ }
+ this->language = chunk_create(strdup(lang_string), strlen(lang_string));
+
+ reason_string = (char*)xmlNodeGetContent(child);
+ this->reason = chunk_create(strdup(reason_string), strlen(reason_string));
+
return &this->public.tnccs_msg_interface;
+
+fatal:
+ msg = tnccs_error_msg_create(error_type, error_msg);
+ errors->insert_last(errors, msg);
+ _destroy(this);
+ return NULL;
}
/**
xmlNewProp(n3, BAD_CAST "xml:lang", BAD_CAST this->language.ptr);
xmlNodeSetContent(n3, BAD_CAST this->reason.ptr);
xmlAddChild(n2, n3);
- xmlAddChild(n, n2);
+ xmlAddChild(n, n2);
return &this->public.tnccs_msg_interface;
}