SF Patch Tracker [ 2987390 ] upnp_debug vs. ixml_debug
Thanks for the load of updates, I'm still assimilating them ! Could I make a suggestion though? The addition of printNodes(IXML_Node) to upnpdebug a dds a new dependency on ixml.h for anything using upnpdebug.h. I'm making quite a bit of use of upnpdebug in porting things to version 1.8.0, and I'd prefer it if printNodes could be added to ixmldebug.h instead. I'm attach ing a patch, what do you think ? Nick git-svn-id: https://pupnp.svn.sourceforge.net/svnroot/pupnp/trunk@532 119443c7-1b9e-41f8-b6fc-b9c35fce742c
This commit is contained in:
parent
8f852b1ee9
commit
a627df4d10
11
ChangeLog
11
ChangeLog
@ -2,6 +2,17 @@
|
|||||||
Version 1.8.0
|
Version 1.8.0
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
|
|
||||||
|
2010-03-27 Marcelo Jimenez <mroberto(at)users.sourceforge.net>
|
||||||
|
SF Patch Tracker [ 2987390 ] upnp_debug vs. ixml_debug
|
||||||
|
Thanks for the load of updates, I'm still assimilating them ! Could I make
|
||||||
|
a suggestion though? The addition of printNodes(IXML_Node) to upnpdebug a
|
||||||
|
dds a new dependency on ixml.h for anything using upnpdebug.h. I'm making
|
||||||
|
quite a bit of use of upnpdebug in porting things to version 1.8.0, and I'd
|
||||||
|
prefer it if printNodes could be added to ixmldebug.h instead. I'm attach
|
||||||
|
ing a patch, what do you think ?
|
||||||
|
|
||||||
|
Nick
|
||||||
|
|
||||||
2010-03-27 Marcelo Jimenez <mroberto(at)users.sourceforge.net>
|
2010-03-27 Marcelo Jimenez <mroberto(at)users.sourceforge.net>
|
||||||
* Forward port of svn revision 505:
|
* Forward port of svn revision 505:
|
||||||
SF Patch Tracker [ 2836704 ] Patch for Solaris10 compilation and usage.
|
SF Patch Tracker [ 2836704 ] Patch for Solaris10 compilation and usage.
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
|
|
||||||
#include "UpnpGlobal.h"
|
#include "UpnpGlobal.h"
|
||||||
|
#include "ixml.h"
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ -20,6 +21,13 @@
|
|||||||
*/
|
*/
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
void IxmlPrintf(
|
void IxmlPrintf(
|
||||||
|
/*! [in] The file name, usually __FILE__. */
|
||||||
|
const char *DbgFileName,
|
||||||
|
/*! [in] The line number, usually __LINE__ or a variable that got the
|
||||||
|
* __LINE__ at the appropriate place. */
|
||||||
|
int DbgLineNo,
|
||||||
|
/*! [in] The function name. */
|
||||||
|
const char *FunctionName,
|
||||||
/*! [in] Printf like format specification. */
|
/*! [in] Printf like format specification. */
|
||||||
const char* FmtStr,
|
const char* FmtStr,
|
||||||
/*! [in] Printf like Variable number of arguments that will go in the debug
|
/*! [in] Printf like Variable number of arguments that will go in the debug
|
||||||
@ -27,7 +35,7 @@ void IxmlPrintf(
|
|||||||
...)
|
...)
|
||||||
#if (__GNUC__ >= 3)
|
#if (__GNUC__ >= 3)
|
||||||
/* This enables printf like format checking by the compiler */
|
/* This enables printf like format checking by the compiler */
|
||||||
__attribute__((format (__printf__, 1, 2)))
|
__attribute__((format (__printf__, 4, 5)))
|
||||||
#endif
|
#endif
|
||||||
;
|
;
|
||||||
#else /* DEBUG */
|
#else /* DEBUG */
|
||||||
@ -37,5 +45,23 @@ static UPNP_INLINE void IxmlPrintf(
|
|||||||
#endif /* DEBUG */
|
#endif /* DEBUG */
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Print the node names and values of a XML tree.
|
||||||
|
*/
|
||||||
|
#ifdef DEBUG
|
||||||
|
void printNodes(
|
||||||
|
/*! [in] The root of the tree to print. */
|
||||||
|
IXML_Node *tmpRoot,
|
||||||
|
/*! [in] The depth to print. */
|
||||||
|
int depth);
|
||||||
|
#else
|
||||||
|
static UPNP_INLINE void printNodes(
|
||||||
|
IXML_Node *tmpRoot,
|
||||||
|
int depth)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#endif /* IXMLDEBUG_H */
|
#endif /* IXMLDEBUG_H */
|
||||||
|
|
||||||
|
@ -444,17 +444,17 @@ int ixmlDocument_createElementNSEx(
|
|||||||
IXML_Element **rtElement)
|
IXML_Element **rtElement)
|
||||||
{
|
{
|
||||||
IXML_Element *newElement = NULL;
|
IXML_Element *newElement = NULL;
|
||||||
int errCode = IXML_SUCCESS;
|
int ret = IXML_SUCCESS;
|
||||||
int line = 0;
|
int line = 0;
|
||||||
|
|
||||||
if (doc == NULL || namespaceURI == NULL || qualifiedName == NULL) {
|
if (doc == NULL || namespaceURI == NULL || qualifiedName == NULL) {
|
||||||
line = __LINE__;
|
line = __LINE__;
|
||||||
errCode = IXML_INVALID_PARAMETER;
|
ret = IXML_INVALID_PARAMETER;
|
||||||
goto ErrorHandler;
|
goto ErrorHandler;
|
||||||
}
|
}
|
||||||
|
|
||||||
errCode = ixmlDocument_createElementEx(doc, qualifiedName, &newElement);
|
ret = ixmlDocument_createElementEx(doc, qualifiedName, &newElement);
|
||||||
if (errCode != IXML_SUCCESS) {
|
if (ret != IXML_SUCCESS) {
|
||||||
line = __LINE__;
|
line = __LINE__;
|
||||||
goto ErrorHandler;
|
goto ErrorHandler;
|
||||||
}
|
}
|
||||||
@ -464,16 +464,16 @@ int ixmlDocument_createElementNSEx(
|
|||||||
line = __LINE__;
|
line = __LINE__;
|
||||||
ixmlElement_free(newElement);
|
ixmlElement_free(newElement);
|
||||||
newElement = NULL;
|
newElement = NULL;
|
||||||
errCode = IXML_INSUFFICIENT_MEMORY;
|
ret = IXML_INSUFFICIENT_MEMORY;
|
||||||
goto ErrorHandler;
|
goto ErrorHandler;
|
||||||
}
|
}
|
||||||
// set the localName and prefix
|
// set the localName and prefix
|
||||||
errCode = ixmlNode_setNodeName((IXML_Node *)newElement, qualifiedName);
|
ret = ixmlNode_setNodeName((IXML_Node *)newElement, qualifiedName);
|
||||||
if (errCode != IXML_SUCCESS) {
|
if (ret != IXML_SUCCESS) {
|
||||||
line = __LINE__;
|
line = __LINE__;
|
||||||
ixmlElement_free(newElement);
|
ixmlElement_free(newElement);
|
||||||
newElement = NULL;
|
newElement = NULL;
|
||||||
errCode = IXML_INSUFFICIENT_MEMORY;
|
ret = IXML_INSUFFICIENT_MEMORY;
|
||||||
goto ErrorHandler;
|
goto ErrorHandler;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -481,12 +481,11 @@ int ixmlDocument_createElementNSEx(
|
|||||||
|
|
||||||
ErrorHandler:
|
ErrorHandler:
|
||||||
*rtElement = newElement;
|
*rtElement = newElement;
|
||||||
if (errCode != IXML_SUCCESS) {
|
if (ret != IXML_SUCCESS) {
|
||||||
IxmlPrintf("(%s::ixmlDocument_createElementNSEx): Error %d, line %d\n",
|
IxmlPrintf(__FILE__, line, "ixmlDocument_createElementNSEx", "Error %d\n", ret);
|
||||||
__FILE__, errCode, line);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return errCode;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -181,9 +181,9 @@ static void ixmlPrintDomTreeRecursive(
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
IxmlPrintf("(%s::ixmlPrintDomTreeRecursive) line %d: "
|
IxmlPrintf(__FILE__, __LINE__, "ixmlPrintDomTreeRecursive",
|
||||||
"Warning, unknown node type %d\n",
|
"Warning, unknown node type %d\n",
|
||||||
__FILE__, __LINE__, ixmlNode_getNodeType(nodeptr));
|
ixmlNode_getNodeType(nodeptr));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -253,9 +253,9 @@ static void ixmlPrintDomTree(
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
IxmlPrintf("(%s::ixmlPrintDomTree) line %d: "
|
IxmlPrintf(__FILE__, __LINE__, "ixmlPrintDomTree",
|
||||||
"Warning, unknown node type %d\n",
|
"Warning, unknown node type %d\n",
|
||||||
__FILE__, __LINE__, ixmlNode_getNodeType(nodeptr));
|
ixmlNode_getNodeType(nodeptr));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -324,9 +324,9 @@ static void ixmlDomTreetoString(
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
IxmlPrintf("(%s::ixmlDomTreetoString) line %d: "
|
IxmlPrintf(__FILE__, __LINE__, "ixmlPrintDomTreeRecursive",
|
||||||
"Warning, unknown node type %d\n",
|
"Warning, unknown node type %d\n",
|
||||||
__FILE__, __LINE__, ixmlNode_getNodeType(nodeptr));
|
ixmlNode_getNodeType(nodeptr));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,15 +17,54 @@
|
|||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
void IxmlPrintf(
|
void IxmlPrintf(
|
||||||
|
const char *DbgFileName,
|
||||||
|
int DbgLineNo,
|
||||||
|
const char *FunctionName,
|
||||||
const char *FmtStr,
|
const char *FmtStr,
|
||||||
...)
|
...)
|
||||||
{
|
{
|
||||||
va_list ArgList;
|
va_list ArgList;
|
||||||
|
|
||||||
va_start(ArgList, FmtStr);
|
FILE *fp = stdout;
|
||||||
vfprintf(stdout, FmtStr, ArgList);
|
fprintf(fp, "(%s::%s), line %d", DbgFileName, FunctionName, DbgLineNo);
|
||||||
fflush(stdout);
|
if (FmtStr) {
|
||||||
va_end(ArgList);
|
fprintf(fp, ": ");
|
||||||
|
va_start(ArgList, FmtStr);
|
||||||
|
vfprintf(fp, FmtStr, ArgList);
|
||||||
|
fflush(fp);
|
||||||
|
va_end(ArgList);
|
||||||
|
} else {
|
||||||
|
fprintf(fp, "\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void printNodes(IXML_Node *tmpRoot, int depth)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
IXML_NodeList *NodeList1;
|
||||||
|
IXML_Node *ChildNode1;
|
||||||
|
unsigned short NodeType;
|
||||||
|
const DOMString NodeValue;
|
||||||
|
const DOMString NodeName;
|
||||||
|
NodeList1 = ixmlNode_getChildNodes(tmpRoot);
|
||||||
|
for (i = 0; i < 100; ++i) {
|
||||||
|
ChildNode1 = ixmlNodeList_item(NodeList1, i);
|
||||||
|
if (ChildNode1 == NULL) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
printNodes(ChildNode1, depth+1);
|
||||||
|
NodeType = ixmlNode_getNodeType(ChildNode1);
|
||||||
|
NodeValue = ixmlNode_getNodeValue(ChildNode1);
|
||||||
|
NodeName = ixmlNode_getNodeName(ChildNode1);
|
||||||
|
IxmlPrintf(__FILE__, __LINE__, "printNodes",
|
||||||
|
"DEPTH-%2d-IXML_Node Type %d, "
|
||||||
|
"IXML_Node Name: %s, IXML_Node Value: %s\n",
|
||||||
|
depth, NodeType, NodeName, NodeValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -542,8 +542,7 @@ static int Parser_UTF8ToInt(
|
|||||||
*len = 0;
|
*len = 0;
|
||||||
ret = -1;
|
ret = -1;
|
||||||
}
|
}
|
||||||
IxmlPrintf("(%s::Parser_UTF8ToInt): Error %d, line %d\n",
|
IxmlPrintf(__FILE__, line, "Parser_UTF8ToInt", "Error %d\n", ret);
|
||||||
__FILE__, ret, line);
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1302,8 +1301,7 @@ fail_entity:
|
|||||||
|
|
||||||
ExitFunction:
|
ExitFunction:
|
||||||
if (ret == -1 || (g_error_char && ret == g_error_char)) {
|
if (ret == -1 || (g_error_char && ret == g_error_char)) {
|
||||||
IxmlPrintf("(%s::Parser_getChar): Error %d, line %d\n",
|
IxmlPrintf(__FILE__, line, "Parser_getChar", "Error %d\n", ret);
|
||||||
__FILE__, ret, line);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@ -1370,8 +1368,7 @@ static int Parser_copyToken(
|
|||||||
|
|
||||||
ExitFunction:
|
ExitFunction:
|
||||||
if (ret != IXML_SUCCESS) {
|
if (ret != IXML_SUCCESS) {
|
||||||
IxmlPrintf("(%s::Parser_copyToken): Error %d, line %d\n",
|
IxmlPrintf(__FILE__, line, "Parser_copyToken", "Error %d\n", ret);
|
||||||
__FILE__, ret, line);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@ -1918,8 +1915,7 @@ static int Parser_xmlNamespace(
|
|||||||
|
|
||||||
ExitFunction:
|
ExitFunction:
|
||||||
if (ret != IXML_SUCCESS && ret != IXML_FILE_DONE) {
|
if (ret != IXML_SUCCESS && ret != IXML_FILE_DONE) {
|
||||||
IxmlPrintf("(%s::Parser_xmlNamespace): Error %d, line %d\n",
|
IxmlPrintf(__FILE__, line, "Parser_xmlNamespace", "Error %d\n", ret);
|
||||||
__FILE__, ret, line);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@ -2248,8 +2244,7 @@ static int Parser_processContent(
|
|||||||
|
|
||||||
ExitFunction:
|
ExitFunction:
|
||||||
if (ret != IXML_SUCCESS) {
|
if (ret != IXML_SUCCESS) {
|
||||||
IxmlPrintf("(%s::Parser_processContent): Error %d, line %d\n",
|
IxmlPrintf(__FILE__, line, "Parser_processContent", "Error %d\n", ret);
|
||||||
__FILE__, ret, line);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@ -2321,8 +2316,7 @@ static int Parser_processETag(
|
|||||||
|
|
||||||
ExitFunction:
|
ExitFunction:
|
||||||
if (ret != IXML_SUCCESS) {
|
if (ret != IXML_SUCCESS) {
|
||||||
IxmlPrintf("(%s::Parser_processETag): Error %d, line %d\n",
|
IxmlPrintf(__FILE__, line, "Parser_processETag", "Error %d\n", ret);
|
||||||
__FILE__, ret, line);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@ -2577,8 +2571,7 @@ static int Parser_processAttribute(
|
|||||||
|
|
||||||
ExitFunction:
|
ExitFunction:
|
||||||
if (ret != IXML_SUCCESS && ret != IXML_FILE_DONE) {
|
if (ret != IXML_SUCCESS && ret != IXML_FILE_DONE) {
|
||||||
IxmlPrintf("(%s::Parser_processAttribute): Error %d, line %d\n",
|
IxmlPrintf(__FILE__, line, "Parser_processAttribute", "Error %d\n", ret);
|
||||||
__FILE__, ret, line);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@ -2681,8 +2674,7 @@ static int Parser_getNextNode(
|
|||||||
|
|
||||||
ExitFunction:
|
ExitFunction:
|
||||||
if (ret != IXML_SUCCESS && ret != IXML_FILE_DONE) {
|
if (ret != IXML_SUCCESS && ret != IXML_FILE_DONE) {
|
||||||
IxmlPrintf("(%s::Parser_getNextNode): Error %d, line %d\n",
|
IxmlPrintf(__FILE__, line, "Parser_getNextNode", "Error %d\n", ret);
|
||||||
__FILE__, ret, line);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -304,24 +304,6 @@ static UPNP_INLINE void PrintThreadPoolStats(
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief Print the node names and values of a XML tree.
|
|
||||||
*/
|
|
||||||
#ifdef DEBUG
|
|
||||||
void printNodes(
|
|
||||||
/*! [in] The root of the tree to print. */
|
|
||||||
IXML_Node *tmpRoot,
|
|
||||||
/*! [in] The depth to print. */
|
|
||||||
int depth);
|
|
||||||
#else
|
|
||||||
static UPNP_INLINE void printNodes(
|
|
||||||
IXML_Node *tmpRoot,
|
|
||||||
int depth)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/*@}*/
|
/*@}*/
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
@ -149,7 +149,7 @@ void UpnpPrintf(
|
|||||||
ithread_mutex_lock(&GlobalDebugMutex);
|
ithread_mutex_lock(&GlobalDebugMutex);
|
||||||
va_start(ArgList, FmtStr);
|
va_start(ArgList, FmtStr);
|
||||||
if (!DEBUG_TARGET) {
|
if (!DEBUG_TARGET) {
|
||||||
if( DbgFileName ) {
|
if (DbgFileName) {
|
||||||
UpnpDisplayFileAndLine(stdout, DbgFileName, DbgLineNo);
|
UpnpDisplayFileAndLine(stdout, DbgFileName, DbgLineNo);
|
||||||
}
|
}
|
||||||
vfprintf(stdout, FmtStr, ArgList);
|
vfprintf(stdout, FmtStr, ArgList);
|
||||||
@ -324,32 +324,5 @@ void PrintThreadPoolStats(
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void printNodes(IXML_Node *tmpRoot, int depth)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
IXML_NodeList *NodeList1;
|
|
||||||
IXML_Node *ChildNode1;
|
|
||||||
unsigned short NodeType;
|
|
||||||
const DOMString NodeValue;
|
|
||||||
const DOMString NodeName;
|
|
||||||
NodeList1 = ixmlNode_getChildNodes(tmpRoot);
|
|
||||||
for (i = 0; i < 100; ++i) {
|
|
||||||
ChildNode1 = ixmlNodeList_item(NodeList1, i);
|
|
||||||
if (ChildNode1 == NULL) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
printNodes(ChildNode1, depth+1);
|
|
||||||
NodeType = ixmlNode_getNodeType(ChildNode1);
|
|
||||||
NodeValue = ixmlNode_getNodeValue(ChildNode1);
|
|
||||||
NodeName = ixmlNode_getNodeName(ChildNode1);
|
|
||||||
UpnpPrintf(UPNP_ALL, API, __FILE__, __LINE__,
|
|
||||||
"DEPTH-%2d-IXML_Node Type %d, "
|
|
||||||
"IXML_Node Name: %s, IXML_Node Value: %s\n",
|
|
||||||
depth, NodeType, NodeName, NodeValue);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* DEBUG */
|
#endif /* DEBUG */
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user