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; } +