Index: libcaca/trunk/cucul/import.c
===================================================================
--- libcaca/trunk/cucul/import.c	(revision 2313)
+++ libcaca/trunk/cucul/import.c	(revision 2409)
@@ -20,5 +20,4 @@
 
 #if !defined __KERNEL__
-#   include <stdio.h>
 #   include <stdlib.h>
 #   include <string.h>
@@ -159,27 +158,28 @@
     return -1;
 #else
-    FILE *fp;
-    void *data;
-    ssize_t size;
+    cucul_file_t *f;
+    char *data = NULL;
+    ssize_t size = 0;
     int ret;
 
-    fp = fopen(filename, "rb");
-    if(!fp)
+    f = cucul_file_open(filename, "rb");
+    if(!f)
         return -1; /* fopen already set errno */
 
-    fseek(fp, 0, SEEK_END);
-    size = ftell(fp);
-
-    data = malloc(size);
-    if(!data)
-    {
-        fclose(fp);
-        seterrno(ENOMEM);
-        return -1;
-    }
-
-    fseek(fp, 0, SEEK_SET);
-    fread(data, size, 1, fp);
-    fclose(fp);
+    while(!cucul_file_eof(f))
+    {
+        data = realloc(data, size + 1024);
+        if(!data)
+        {
+            cucul_file_close(f);
+            seterrno(ENOMEM);
+            return -1;
+        }
+
+        ret = cucul_file_read(f, data + size, 1024);
+        if(ret >= 0)
+            size += ret;
+    }
+    cucul_file_close(f);
 
     ret = cucul_import_memory(cv, data, size, format);
@@ -189,5 +189,5 @@
 #endif
 }
-    
+
 /** \brief Get available import formats
  *
