#include "dnxXml.h"
#include "dnxProtocol.h"
#include "dnxError.h"
#include "dnxDebug.h"
#include "dnxLogging.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <syslog.h>
#include <assert.h>
Go to the source code of this file.
Defines | |
#define | DNX_XML_MIN_HEADER 32 |
Functions | |
static int | dnxXmlEscapeStr (char *outstr, char *instr, int maxbuf) |
Escape the text within XML strings - compliant with W3C. | |
static int | dnxXmlUnescapeStr (char *outstr, char *instr, int maxbuf) |
Un-Escape the text within XML strings - compliant with W3C. | |
static int | dnxXmlToString (DnxXmlType xType, void *xData, char *buf, int size) |
Convert an opaque pointer to C data into a dnx xml string format. | |
static int | dnxXmlGetTagValue (DnxXmlBuf *xbuf, char *xTag, DnxXmlType xType, char *buf, int size) |
Locate and return an xml string element by tag value. | |
int | dnxXmlOpen (DnxXmlBuf *xbuf, char *tag) |
Open and write header information to a dnx xml buffer. | |
int | dnxXmlAdd (DnxXmlBuf *xbuf, char *xTag, DnxXmlType xType, void *xData) |
Add an XML data element to a dnx xml buffer. | |
int | dnxXmlGet (DnxXmlBuf *xbuf, char *xTag, DnxXmlType xType, void *xData) |
Return the C data typed value associated with a specified tag. | |
int | dnxXmlCmpStr (DnxXmlBuf *xbuf, char *xTag, char *cmpstr) |
Compare a string with an XML node text value. | |
int | dnxXmlClose (DnxXmlBuf *xbuf) |
Validate and close a dnx xml buffer. |
Definition in file dnxXml.c.
#define DNX_XML_MIN_HEADER 32 |
int dnxXmlAdd | ( | DnxXmlBuf * | xbuf, | |
char * | xTag, | |||
DnxXmlType | xType, | |||
void * | xData | |||
) |
Add an XML data element to a dnx xml buffer.
[out] | xbuf | - the dnx xml buffer to be appended to. |
[in] | xTag | - the xml tag to use for this new data element. |
[in] | xType | - the C data type of the xml element data. |
[in] | xData | - an opaque pointer to a C data variable to be expressed in xml in xbuf . |
Definition at line 409 of file dnxXml.c.
References DnxXmlBuf::buf, DNX_ERR_CAPACITY, DNX_MAX_MSG, DNX_OK, DNX_XML_MIN_HEADER, dnxXmlToString(), and DnxXmlBuf::size.
Referenced by dnxSendJob(), dnxSendMgmtReply(), dnxSendMgmtRequest(), dnxSendNodeRequest(), and dnxSendResult().
int dnxXmlClose | ( | DnxXmlBuf * | xbuf | ) |
Validate and close a dnx xml buffer.
[in,out] | xbuf | - the buffer to be validated and closed. |
Definition at line 616 of file dnxXml.c.
References DnxXmlBuf::buf, DNX_ERR_CAPACITY, DNX_MAX_MSG, DNX_OK, and DnxXmlBuf::size.
Referenced by dnxSendJob(), dnxSendMgmtReply(), dnxSendMgmtRequest(), dnxSendNodeRequest(), and dnxSendResult().
int dnxXmlCmpStr | ( | DnxXmlBuf * | xbuf, | |
char * | xTag, | |||
char * | cmpstr | |||
) |
Compare a string with an XML node text value.
[in,out] | xbuf | - the buffer to be validated and closed. |
[in] | xTag | - the tag for which to search in xbuf . |
[in] | cmpstr | - the comparison string to match. |
Definition at line 596 of file dnxXml.c.
References DNX_ERR_SYNTAX, DNX_MAX_MSG, DNX_OK, DNX_XML_STR, and dnxXmlGetTagValue().
Referenced by dnxWaitForJob(), dnxWaitForMgmtReply(), dnxWaitForMgmtRequest(), dnxWaitForNodeRequest(), and dnxWaitForResult().
static int dnxXmlEscapeStr | ( | char * | outstr, | |
char * | instr, | |||
int | maxbuf | |||
) | [static] |
Escape the text within XML strings - compliant with W3C.
[out] | outstr | - escaped string is returned in this buffer. |
[in] | instr | - string to be escaped is passed in this buffer. |
[in] | maxbuf | - the maximum number of bytes in outstr on entry. |
Definition at line 60 of file dnxXml.c.
References DNX_ERR_CAPACITY, and DNX_OK.
Referenced by dnxXmlToString().
int dnxXmlGet | ( | DnxXmlBuf * | xbuf, | |
char * | xTag, | |||
DnxXmlType | xType, | |||
void * | xData | |||
) |
Return the C data typed value associated with a specified tag.
[in] | xbuf | - the dnx xml buffer from which to extract a value. |
[in] | xTag | - the tag for which to search in xbuf . |
[in] | xType | - the C data type of the specified tag. |
[out] | xData | - the address of storage for the returned C data value. Note that xData must be large enough to hold an element of the specified C data type. In the case of a string, xData actually accepts a char pointer, not character data of a specified length. Note also that the caller is responsible for freeing the memory returned if xType is DNX_XML_STR. |
Definition at line 447 of file dnxXml.c.
References DNX_ERR_INVALID, DNX_ERR_MEMORY, DNX_ERR_SYNTAX, DNX_MAX_MSG, DNX_OK, DNX_XML_INT, DNX_XML_LONG, DNX_XML_SHORT, DNX_XML_STR, DNX_XML_STR_UNESCAPED, DNX_XML_UINT, DNX_XML_ULONG, DNX_XML_USHORT, DNX_XML_XID, dnxXmlGetTagValue(), dnxXmlUnescapeStr(), and xstrdup.
Referenced by dnxWaitForJob(), dnxWaitForMgmtReply(), dnxWaitForMgmtRequest(), dnxWaitForNodeRequest(), and dnxWaitForResult().
static int dnxXmlGetTagValue | ( | DnxXmlBuf * | xbuf, | |
char * | xTag, | |||
DnxXmlType | xType, | |||
char * | buf, | |||
int | size | |||
) | [static] |
Locate and return an xml string element by tag value.
[in] | xbuf | - the dnx xml buffer to search for xTag . |
[in] | xTag | - the tag to search xbuf for. |
[in] | xType | - the C data type of the element - not used. |
[out] | buf | - the address of storage for the xml element matching the xml tag in xTag . |
[in] | size | - the maximum number of bytes that may be written to buf . |
Definition at line 302 of file dnxXml.c.
References DnxXmlBuf::buf, DNX_ERR_SYNTAX, and DNX_OK.
Referenced by dnxXmlCmpStr(), and dnxXmlGet().
int dnxXmlOpen | ( | DnxXmlBuf * | xbuf, | |
char * | tag | |||
) |
Open and write header information to a dnx xml buffer.
[out] | xbuf | - the dnx xml buffer to be opened. |
[in] | tag | - the major xml request tag to write to xbuf . |
Definition at line 387 of file dnxXml.c.
References DnxXmlBuf::buf, DNX_OK, and DnxXmlBuf::size.
Referenced by dnxSendJob(), dnxSendMgmtReply(), dnxSendMgmtRequest(), dnxSendNodeRequest(), and dnxSendResult().
static int dnxXmlToString | ( | DnxXmlType | xType, | |
void * | xData, | |||
char * | buf, | |||
int | size | |||
) | [static] |
Convert an opaque pointer to C data into a dnx xml string format.
[in] | xType | - the C data type to be converted to an xml string. |
[in] | xData | - an opaque pointer to the C data to be converted. |
[out] | buf | - the address of storage for the returned xml string. |
[in] | size | - the maximum number of bytes that may be written to buf . |
Definition at line 231 of file dnxXml.c.
References DNX_ERR_INVALID, DNX_OK, DNX_XML_INT, DNX_XML_LONG, DNX_XML_SHORT, DNX_XML_STR, DNX_XML_STR_UNESCAPED, DNX_XML_UINT, DNX_XML_ULONG, DNX_XML_USHORT, DNX_XML_XID, and dnxXmlEscapeStr().
Referenced by dnxXmlAdd().
static int dnxXmlUnescapeStr | ( | char * | outstr, | |
char * | instr, | |||
int | maxbuf | |||
) | [static] |
Un-Escape the text within XML strings - compliant with W3C.
Routine donated by William Leibzon. Thanks William!
[out] | outstr | - unescaped string is returned in this buffer. |
[in] | instr | - string to be unescaped is passed in this buffer. |
[in] | maxbuf | - the maximum number of bytes in outstr on entry. |
Definition at line 143 of file dnxXml.c.
References DNX_ERR_CAPACITY, DNX_ERR_SYNTAX, DNX_OK, and dnxDebug().
Referenced by dnxXmlGet().