hermet pushed a commit to branch master.

http://git.enlightenment.org/tools/enventor.git/commit/?id=b2bb300c3c6910335471551be76a535cec628385

commit b2bb300c3c6910335471551be76a535cec628385
Author: ChunEon Park <[email protected]>
Date:   Mon Jul 7 22:33:38 2014 +0900

    editor - fixed missing line feeds when reading a edc file.
---
 src/bin/edc_editor.c | 64 ++++++++++++++++++++--------------------------------
 1 file changed, 25 insertions(+), 39 deletions(-)

diff --git a/src/bin/edc_editor.c b/src/bin/edc_editor.c
index 07a84e1..1b49fff 100644
--- a/src/bin/edc_editor.c
+++ b/src/bin/edc_editor.c
@@ -1061,61 +1061,48 @@ edit_edc_read(edit_data *ed, const char *file_path)
 {
    char buf[MAX_LINE_DIGIT_CNT];
 
-   ed->line_max = 0;
+   Eina_File *file = NULL;
+   Eina_Strbuf *strbuf_line = NULL;
+   char *utf8_edit = NULL;
+   char *markup_edit = NULL;
+   char *markup_line = NULL;
+   int line_num = 1;
 
-   Eina_Iterator *itr = NULL;
-   Eina_Strbuf *strbuf_line = NULL, *strbuf_edit = NULL;
+   ed->line_max = 0;
 
-   Eina_File *file = eina_file_open(file_path, EINA_FALSE);
+   file = eina_file_open(file_path, EINA_FALSE);
    if (!file) goto err;
 
-   itr = eina_file_map_lines(file);
-   if (!itr) goto err;
-
    strbuf_line = eina_strbuf_new();
    if (!strbuf_line) goto err;
 
-   strbuf_edit = eina_strbuf_new();
-   if (!strbuf_edit) goto err;
-
-   Eina_File_Line *line;
-   int line_num = 0;
-
-   //Read first line specially.
-   if (eina_iterator_next(itr, (void **)(void *)&(line)))
-     {
-        line_num = 1;
-        if (!eina_strbuf_append_char(strbuf_line, '1')) goto err;
-        if (!eina_strbuf_append_length(strbuf_edit, line->start, line->length))
-           goto err;
-     }
+   utf8_edit = eina_file_map_all(file, EINA_FILE_REMOVE);
+   if (!utf8_edit) goto err;
 
-   //Read last lines.
-   EINA_ITERATOR_FOREACH(itr, line)
+   //Append line numbers
+   if (!eina_strbuf_append_char(strbuf_line, '1')) goto err;
+   char *p = utf8_edit;
+   int len = strlen(p);
+   while ((p = strchr(p, '\n')) && p < (utf8_edit + len))
      {
         line_num++;
-
-        //Append line number
+        ++p;
         sprintf(buf, "\n%d", line_num);
         if (!eina_strbuf_append(strbuf_line, buf)) goto err;
-
-        //Append edc ccde
-        if (!eina_strbuf_append_char(strbuf_edit, '\n')) goto err;
-        if (!eina_strbuf_append_length(strbuf_edit, line->start, line->length))
-          goto err;
      }
-   char *markup_line =
-         elm_entry_utf8_to_markup(eina_strbuf_string_get(strbuf_line));
-   char *markup_edit =
-         elm_entry_utf8_to_markup(eina_strbuf_string_get(strbuf_edit));
 
+   markup_line = elm_entry_utf8_to_markup(eina_strbuf_string_get(strbuf_line));
+   if (!markup_line) goto err;
    elm_entry_entry_append(ed->en_line, markup_line);
-   elm_entry_entry_append(ed->en_edit, markup_edit);
-
    free(markup_line);
+
+   markup_edit = elm_entry_utf8_to_markup(utf8_edit);
+   if (!markup_edit) goto err;
+   elm_entry_entry_set(ed->en_edit, markup_edit);
    free(markup_edit);
 
    ed->line_max = line_num;
+
    Eina_Stringshare *group_name =
       parser_first_group_name_get(ed->pd, ed->en_edit);
 
@@ -1126,11 +1113,10 @@ edit_edc_read(edit_data *ed, const char *file_path)
    ecore_animator_add(syntax_color_timer_cb, ed);
 
 err:
-   //Even any text is not inserted, line number should start with 1 
+   //Even any text is not inserted, line number should start with 1
    if (ed->line_max == 0) line_init(ed);
-   if (strbuf_edit) eina_strbuf_free(strbuf_edit);
    if (strbuf_line) eina_strbuf_free(strbuf_line);
-   if (itr) eina_iterator_free(itr);
+   if (utf8_edit) eina_file_map_free(file, utf8_edit);
    if (file) eina_file_close(file);
 }
 

-- 


Reply via email to