From 54e102fcc41bdbb3c7c7ba54ca89460913c48c73 Mon Sep 17 00:00:00 2001 From: Cedric BAIL Date: Fri, 29 Jun 2012 10:45:58 +0000 Subject: [PATCH] eina: also track lines index. SVN revision: 73029 --- legacy/eina/src/include/eina_file.h | 1 + legacy/eina/src/lib/eina_file.c | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/legacy/eina/src/include/eina_file.h b/legacy/eina/src/include/eina_file.h index 246410f2d6..0518c12655 100644 --- a/legacy/eina/src/include/eina_file.h +++ b/legacy/eina/src/include/eina_file.h @@ -204,6 +204,7 @@ struct _Eina_File_Lines struct { const char *start; const char *end; + unsigned int index; } line; unsigned long long length; }; diff --git a/legacy/eina/src/lib/eina_file.c b/legacy/eina/src/lib/eina_file.c index 33137cc2a6..b5dd5cdd2a 100644 --- a/legacy/eina/src/lib/eina_file.c +++ b/legacy/eina/src/lib/eina_file.c @@ -1175,13 +1175,20 @@ static Eina_Bool _eina_file_map_lines_iterator_next(Eina_Lines_Iterator *it, void **data) { const char *eol; + unsigned char match; if (it->current.line.end >= it->end) return EINA_FALSE; + match = *it->current.line.end; while ((*it->current.line.end == '\n' || *it->current.line.end == '\r') && it->current.line.end < it->end) - it->current.line.end++; + { + if (match == *it->current.line.end) + it->current.line.index++; + it->current.line.end++; + } + it->current.line.index++; if (it->current.line.end == it->end) return EINA_FALSE; @@ -1246,6 +1253,7 @@ eina_file_map_lines(Eina_File *file) it->boundary = 4096; it->current.line.start = it->map; it->current.line.end = it->current.line.start; + it->current.line.index = 0; it->current.length = 0; it->end = it->map + it->fp->length;