From 99ff36b168f59dc3865d984e218693f41a585c5b Mon Sep 17 00:00:00 2001 From: yangxx Date: Fri, 18 Jul 2003 20:30:22 +0000 Subject: [PATCH] git-svn-id: http://ltt.polymtl.ca/svn@121 04897980-b3bd-0310-b5e0-8ef037075253 --- ltt/branches/poly/ltt/tracefile.c | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/ltt/branches/poly/ltt/tracefile.c b/ltt/branches/poly/ltt/tracefile.c index ea07019b..9f66cc80 100644 --- a/ltt/branches/poly/ltt/tracefile.c +++ b/ltt/branches/poly/ltt/tracefile.c @@ -790,7 +790,8 @@ LttEvent *ltt_tracefile_read(LttTracefile *t) //update the fields of the current event and go to the next event err = skipEvent(t); - if(err == ENOENT) return NULL; + if(err == ENOMEM) return NULL; + if(err == ENOENT) return lttEvent; if(err == ERANGE) g_error("event id is out of range\n"); if(err)g_error("Can not read tracefile\n"); @@ -904,7 +905,8 @@ void updateTracefile(LttTracefile * tf) * 0 : success * EINVAL : lseek fail * EIO : can not read from the file - * ENOENT : end of file + * ENOMEM : end of file + * ENOENT : last event * ERANGE : event id is out of range ****************************************************************************/ @@ -914,6 +916,14 @@ int skipEvent(LttTracefile * t) void * evData; LttEventType * evT; LttField * rootFld; + static int evCount = 0; + + if(evCount){ + if(t->which_block == t->block_number && + evCount == t->which_event){ + return ENOMEM; + }else evCount = 0; + } evId = (int)(*(uint16_t *)(t->cur_event_pos)); evData = t->cur_event_pos + EVENT_HEADER_SIZE; @@ -946,7 +956,11 @@ int skipEvent(LttTracefile * t) //the next event is in the next block if(evId == TRACE_BLOCK_END){ - if(t->which_block == t->block_number) return ENOENT; + if(t->which_block == t->block_number){ + t->which_event++; + evCount = t->which_event; + return ENOENT; + } err = readBlock(t, t->which_block + 1); if(err) return err; }else{ -- 2.34.1