|
From: <sv...@va...> - 2008-06-10 20:14:23
|
Author: cerion
Date: 2008-06-10 02:44:12 +0100 (Tue, 10 Jun 2008)
New Revision: 433
Log:
Fix xml parsing of <dir>/<file>
In particular:
- <dir> may be null, and dir be within <file>
- allow for different ordering of fields
Modified:
trunk/valkyrie/tool_utils/vglog.cpp
trunk/valkyrie/tool_views/vglogview.cpp
Modified: trunk/valkyrie/tool_utils/vglog.cpp
===================================================================
--- trunk/valkyrie/tool_utils/vglog.cpp 2008-06-10 00:30:28 UTC (rev 432)
+++ trunk/valkyrie/tool_utils/vglog.cpp 2008-06-10 01:44:12 UTC (rev 433)
@@ -226,21 +226,21 @@
{
QDomNodeList frame_details1 = childNodes();
assert( frame_details1.count() >= 1 ); /* only ip guaranteed */
- QDomElement iptr1 = frame_details1.item( 0 ).toElement();
- QDomElement objt1 = frame_details1.item( 1 ).toElement();
- QDomElement func1 = frame_details1.item( 2 ).toElement();
- QDomElement diry1 = frame_details1.item( 3 ).toElement();
- QDomElement file1 = frame_details1.item( 4 ).toElement();
- QDomElement line1 = frame_details1.item( 5 ).toElement();
+ QDomElement iptr1 = getFirstElem( "ip" );
+ QDomElement objt1 = getFirstElem( "obj" );
+ QDomElement func1 = getFirstElem( "fn" );
+ QDomElement diry1 = getFirstElem( "dir" );
+ QDomElement file1 = getFirstElem( "file" );
+ QDomElement line1 = getFirstElem( "line" );
QDomNodeList frame_details2 = frame2.childNodes();
assert( frame_details2.count() >= 1 ); /* only ip guaranteed */
- QDomElement iptr2 = frame_details2.item( 0 ).toElement();
- QDomElement objt2 = frame_details2.item( 1 ).toElement();
- QDomElement func2 = frame_details2.item( 2 ).toElement();
- QDomElement diry2 = frame_details2.item( 3 ).toElement();
- QDomElement file2 = frame_details2.item( 4 ).toElement();
- QDomElement line2 = frame_details2.item( 5 ).toElement();
+ QDomElement iptr2 = frame2.getFirstElem( "ip" );
+ QDomElement objt2 = frame2.getFirstElem( "obj" );
+ QDomElement func2 = frame2.getFirstElem( "fn" );
+ QDomElement diry2 = frame2.getFirstElem( "dir" );
+ QDomElement file2 = frame2.getFirstElem( "file" );
+ QDomElement line2 = frame2.getFirstElem( "line" );
/* a frame may be the 'same' as another even if it is
missing some data - do the best comparison we can */
@@ -299,12 +299,12 @@
{
QDomNodeList frame_details = childNodes();
assert( frame_details.count() >= 1 ); /* only ip guaranteed */
- QDomElement ip = frame_details.item( 0 ).toElement();
- QDomElement obj = frame_details.item( 1 ).toElement();
- QDomElement fn = frame_details.item( 2 ).toElement();
- QDomElement dir = frame_details.item( 3 ).toElement();
- QDomElement srcloc = frame_details.item( 4 ).toElement();
- QDomElement line = frame_details.item( 5 ).toElement();
+ QDomElement ip = getFirstElem( "ip" );
+ QDomElement obj = getFirstElem( "obj" );
+ QDomElement fn = getFirstElem( "fn" );
+ QDomElement dir = getFirstElem( "dir" );
+ QDomElement srcloc = getFirstElem( "file" );
+ QDomElement line = getFirstElem( "line" );
bool know_fnname = !fn.isNull();
bool know_objname = !obj.isNull();
Modified: trunk/valkyrie/tool_views/vglogview.cpp
===================================================================
--- trunk/valkyrie/tool_views/vglogview.cpp 2008-06-10 00:30:28 UTC (rev 432)
+++ trunk/valkyrie/tool_views/vglogview.cpp 2008-06-10 01:44:12 UTC (rev 433)
@@ -565,12 +565,15 @@
: VgOutputItem( parent, after, frm )
{
/* check what perms the user has w.r.t. this file */
- QDomNodeList frame_details = frm.childNodes();
- QDomElement srcdir = frame_details.item( 3 ).toElement();
- QDomElement srcfile = frame_details.item( 4 ).toElement();
+ QDomElement srcdir = frm.getFirstElem( "dir" );
+ QDomElement srcfile = frm.getFirstElem( "file" );
- if (!srcdir.isNull() && !srcfile.isNull()) {
- QString path = srcdir.text() + "/" + srcfile.text();
+ if ( !srcfile.isNull() ) {
+ QString path;
+ if ( !srcdir.isNull() )
+ path = srcdir.text() + "/";
+ path += srcfile.text();
+
QFileInfo fi( path );
if ( fi.exists() && fi.isFile() && !fi.isSymLink() ) {
isReadable = fi.isReadable();
@@ -585,16 +588,21 @@
void FrameItem::setOpen( bool open )
{
if ( open && childCount() == 0 && isReadable ) {
+ QDomElement srcdir = elem.getFirstElem( "dir" );
+ QDomElement srcfile = elem.getFirstElem( "file" );
+ QDomElement line = elem.getFirstElem( "line" );
- QDomNodeList frame_details = elem.childNodes();
- QDomElement srcdir = frame_details.item( 3 ).toElement();
- QDomElement srcfile = frame_details.item( 4 ).toElement();
- QDomElement line = frame_details.item( 5 ).toElement();
+ if ( srcfile.isNull() )
+ return;
- if (srcdir.isNull() || srcfile.isNull())
+ QString path;
+ if ( !srcdir.isNull() )
+ path = srcdir.text() + "/";
+ path += srcfile.text();
+
+ if ( !QFile::exists( path ) )
return;
- QString path = srcdir.text() + "/" + srcfile.text();
VgElement srcline = (VgElement&)line;
/* create the item for the src lines */
|