q66 pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=1853051618c97d0d187d398ea25a0dcf09a5adac

commit 1853051618c97d0d187d398ea25a0dcf09a5adac
Author: Daniel Kolesa <d.kol...@osg.samsung.com>
Date:   Tue Sep 29 14:11:52 2015 +0100

    eolian generator: refactoring of file reads
---
 src/bin/eolian/main.c | 95 +++++++++++++++++++++++++--------------------------
 1 file changed, 46 insertions(+), 49 deletions(-)

diff --git a/src/bin/eolian/main.c b/src/bin/eolian/main.c
index ebb845c..76de468 100644
--- a/src/bin/eolian/main.c
+++ b/src/bin/eolian/main.c
@@ -48,48 +48,47 @@ _filename_get(const char *path)
 }
 
 static Eina_Bool
-_read_file(char *filename, Eina_Strbuf *buffer)
+_read_file(char *filename, Eina_Strbuf **buf)
 {
-   Eina_Bool ret = EINA_FALSE;
-   long file_size = 0;
-   eina_strbuf_reset(buffer);
-
    FILE *fd = fopen(filename, "rb");
-   if (fd)
+   if (!fd)
      {
-        fseek(fd, 0, SEEK_END);
-        file_size = ftell(fd);
-        if (file_size <= 0)
-          {
-             fprintf(stderr, "eolian: could not get length of '%s'\n", 
filename);
-             goto end;
-          }
-        fseek(fd, 0, SEEK_SET);
-        char *content = malloc(file_size + 1);
-        if (!content)
-          {
-             fprintf(stderr, "eolian: could not allocate memory for '%s'\n", 
filename);
-             goto end;
-          }
-        long actual_size = (long)fread(content, 1, file_size, fd);
-        if (actual_size != file_size)
-          {
-             fprintf(stderr, "eolian: could not read %ld bytes from '%s' (read 
%ld bytes)\n",
-                 file_size, filename, actual_size);
-             free(content);
-             goto end;
-          }
+        *buf = eina_strbuf_new();
+        return EINA_TRUE;
+     }
+
+   fseek(fd, 0, SEEK_END);
+   long file_size = ftell(fd);
+   if (file_size <= 0)
+     {
+        fprintf(stderr, "eolian: could not get length of '%s'\n", filename);
+        fclose(fd);
+        return EINA_FALSE;
+     }
+   fseek(fd, 0, SEEK_SET);
 
-        content[file_size] = '\0';
+   char *content = malloc(file_size + 1);
+   if (!content)
+     {
+        fprintf(stderr, "eolian: could not allocate memory for '%s'\n", 
filename);
+        fclose(fd);
+        return EINA_FALSE;
+     }
 
-        eina_strbuf_append(buffer, content);
+   long actual_size = (long)fread(content, 1, file_size, fd);
+   if (actual_size != file_size)
+     {
+        fprintf(stderr, "eolian: could not read %ld bytes from '%s' (read %ld 
bytes)\n",
+            file_size, filename, actual_size);
         free(content);
+        fclose(fd);
+        return EINA_FALSE;
      }
 
-   ret = EINA_TRUE;
-end:
-   if (fd) fclose(fd);
-   return ret;
+   content[file_size] = '\0';
+   fclose(fd);
+   *buf = eina_strbuf_manage_new_length(content, file_size);
+   return EINA_TRUE;
 }
 
 static Eina_Bool
@@ -225,25 +224,23 @@ end:
 static Eina_Bool
 _generate_impl_c_file(char *filename, const char *eo_filename)
 {
-   Eina_Bool ret = EINA_FALSE;
-   Eina_Strbuf *buffer = eina_strbuf_new();
-
    const Eolian_Class *class = eolian_class_get_by_file(eo_filename);
-   if (class)
-     {
-        if (!_read_file(filename, buffer)) goto end;
+   if (!class)
+     return EINA_FALSE;
 
-        if (!impl_source_generate(class, buffer))
-          {
-             fprintf(stderr, "eolian: could not generate source for '%s'\n",
-                     eolian_class_name_get(class));
-             goto end;
-          }
+   Eina_Strbuf *buffer = NULL;
+   if (!_read_file(filename, &buffer))
+     return EINA_FALSE;
 
-        if (_write_file(filename, buffer, EINA_FALSE))
-           ret = EINA_TRUE;
+   if (!impl_source_generate(class, buffer))
+     {
+        fprintf(stderr, "eolian: could not generate source for '%s'\n",
+                eolian_class_name_get(class));
+        eina_strbuf_free(buffer);
+        return EINA_FALSE;
      }
-end:
+
+   Eina_Bool ret = _write_file(filename, buffer, EINA_FALSE);
    eina_strbuf_free(buffer);
    return ret;
 }

-- 


Reply via email to