Author: mturk
Date: Fri Apr 24 07:59:26 2009
New Revision: 768214

URL: http://svn.apache.org/viewvc?rev=768214&view=rev
Log:
Use smaller initial size

Modified:
    commons/sandbox/runtime/trunk/src/main/native/include/arch/unix/acr_arch.h
    commons/sandbox/runtime/trunk/src/main/native/os/unix/uutils.c
    commons/sandbox/runtime/trunk/src/main/native/test/testcase.c

Modified: 
commons/sandbox/runtime/trunk/src/main/native/include/arch/unix/acr_arch.h
URL: 
http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/include/arch/unix/acr_arch.h?rev=768214&r1=768213&r2=768214&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/include/arch/unix/acr_arch.h 
(original)
+++ commons/sandbox/runtime/trunk/src/main/native/include/arch/unix/acr_arch.h 
Fri Apr 24 07:59:26 2009
@@ -29,6 +29,7 @@
 #define ACR_JNI_PLATFORM_DECLARE(RT, CL, FN)  \
     JNIEXPORT RT JNICALL 
Java_org_apache_commons_runtime_platform_unix_##CL##_##FN
 
+#define ACR_MIN_FREAD_LEN  4096
 #define ACR_MAX_FREAD_LEN 65536
 
 /**

Modified: commons/sandbox/runtime/trunk/src/main/native/os/unix/uutils.c
URL: 
http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/os/unix/uutils.c?rev=768214&r1=768213&r2=768214&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/os/unix/uutils.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/os/unix/uutils.c Fri Apr 24 
07:59:26 2009
@@ -24,17 +24,29 @@
 char *ACR_FileReadTxt(const char *name)
 {
     FILE *f;
-    size_t i, rd = ACR_MAX_FREAD_LEN;
+    size_t rd = ACR_MIN_FREAD_LEN;
     char *b;
 
     if (!(f = fopen(name, "r")))
         return NULL;
     if ((b = malloc(rd))) {
-        rd = fread(b, 1, rd - 2, f);
-
-        if (rd > 0) {
+        size_t i, nr = fread(b, 1, rd - 2, f);
+        if (nr == (rd - 2)) {
+            /* Try with larger buffer size */
+            char *nb = malloc(ACR_MAX_FREAD_LEN);
+            if (nb) {
+                memcpy(nb, b, nr);
+                free(b);
+                b  = nb;
+                rd = ACR_MAX_FREAD_LEN - nr;
+                nr += fread(b + nr, 1, rd - 2, f);
+            }
+            else
+                nr = 0;
+        }
+        if (nr > 0) {
             /* Remove all trailing zero and space characters */
-            for (i = rd - 1; i >= 0 && (acr_iscntrl(b[i]) ||
+            for (i = nr - 1; i >= 0 && (acr_iscntrl(b[i]) ||
                  acr_isspace(b[i])); i--)
                 ;
             b[i + 1] = '\0';

Modified: commons/sandbox/runtime/trunk/src/main/native/test/testcase.c
URL: 
http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/test/testcase.c?rev=768214&r1=768213&r2=768214&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/test/testcase.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/test/testcase.c Fri Apr 24 
07:59:26 2009
@@ -334,3 +334,4 @@
 
     return rv;
 }
+


Reply via email to