From 7bdb3bbfa1c95ec2600dc649c51f09a112b8b4bc Mon Sep 17 00:00:00 2001 From: Stefan Ritt Date: Tue, 29 Mar 2005 14:14:38 +0000 Subject: [PATCH] Implemented mxml_set_translate --- mxml.c | 32 ++++++++++++++++++++++++++------ mxml.h | 9 +++++++-- 2 files changed, 33 insertions(+), 8 deletions(-) diff --git a/mxml.c b/mxml.c index a444dcd..9780e0e 100755 --- a/mxml.c +++ b/mxml.c @@ -37,8 +37,11 @@ deleting nodes. $Log$ - Revision 1.1 2005/03/29 08:19:45 ritt - Initial revision + Revision 1.2 2005/03/29 14:14:38 ritt + Implemented mxml_set_translate + + Revision 1.1.1.1 2005/03/29 08:19:45 ritt + Imported sources \********************************************************************/ @@ -186,6 +189,7 @@ MXML_WRITER *mxml_open_buffer() writer = (MXML_WRITER *)malloc(sizeof(MXML_WRITER)); memset(writer, 0, sizeof(MXML_WRITER)); + writer->translate = 1; writer->buffer_size = 10000; writer->buffer = (char *)malloc(10000); @@ -219,6 +223,7 @@ MXML_WRITER *mxml_open_file(const char *file_name) writer = (MXML_WRITER *)malloc(sizeof(MXML_WRITER)); memset(writer, 0, sizeof(MXML_WRITER)); + writer->translate = 1; writer->fh = open(file_name, O_RDWR | O_CREAT | O_TRUNC | O_TEXT, 0644); @@ -336,6 +341,17 @@ void mxml_decode(char *str) /*------------------------------------------------------------------*/ +int mxml_set_translate(MXML_WRITER *writer, int flag) +/* set translation of <,>,",',&, on/off in writer */ +{ + int old_flag; + + old_flag = writer->translate; + writer->translate = flag; + return old_flag; +} +/*------------------------------------------------------------------*/ + int mxml_start_element(MXML_WRITER *writer, const char *name) /* start a new XML element, must be followed by mxml_end_elemnt */ { @@ -352,7 +368,8 @@ int mxml_start_element(MXML_WRITER *writer, const char *name) strlcat(line, XML_INDENT, sizeof(line)); strlcat(line, "<", sizeof(line)); strlcpy(name_enc, name, sizeof(name_enc)); - mxml_encode(name_enc, sizeof(name_enc)); + if (writer->translate) + mxml_encode(name_enc, sizeof(name_enc)); strlcat(line, name_enc, sizeof(line)); /* put element on stack */ @@ -421,9 +438,11 @@ int mxml_write_attribute(MXML_WRITER *writer, const char *name, const char *valu return FALSE; strcpy(name_enc, name); - mxml_encode(name_enc, sizeof(name_enc)); + if (writer->translate) + mxml_encode(name_enc, sizeof(name_enc)); strcpy(val_enc, value); - mxml_encode(val_enc, sizeof(val_enc)); + if (writer->translate) + mxml_encode(val_enc, sizeof(val_enc)); sprintf(line, " %s=\"%s\"", name_enc, val_enc); @@ -455,7 +474,8 @@ int mxml_write_value(MXML_WRITER *writer, const char *data) } strcpy(data_enc, data); - mxml_encode(data_enc, data_size); + if (writer->translate) + mxml_encode(data_enc, data_size); return mxml_write_line(writer, data_enc) == (int)strlen(data_enc); } diff --git a/mxml.h b/mxml.h index 2b03d0e..4059576 100755 --- a/mxml.h +++ b/mxml.h @@ -6,8 +6,11 @@ Contents: Header file for mxml.c $Log$ - Revision 1.1 2005/03/29 08:19:45 ritt - Initial revision + Revision 1.2 2005/03/29 14:14:38 ritt + Implemented mxml_set_translate + + Revision 1.1.1.1 2005/03/29 08:19:45 ritt + Imported sources \********************************************************************/ @@ -30,6 +33,7 @@ typedef struct { int element_is_open; int data_was_written; char **stack; + int translate; } MXML_WRITER; typedef struct mxml_struct *PMXML_NODE; @@ -51,6 +55,7 @@ typedef struct mxml_struct { MXML_WRITER *mxml_open_file(const char *file_name); MXML_WRITER *mxml_open_buffer(void); +int mxml_set_translate(MXML_WRITER *writer, int flag); int mxml_start_element(MXML_WRITER *writer, const char *name); int mxml_end_element(MXML_WRITER *writer); int mxml_write_attribute(MXML_WRITER *writer, const char *name, const char *value);