--- parser3/src/main/pa_common.C 2003/02/06 14:24:50 1.143.2.16 +++ parser3/src/main/pa_common.C 2003/02/17 12:13:44 1.143.2.20 @@ -5,7 +5,7 @@ Author: Alexandr Petrosian (http://paf.design.ru) */ -static const char* IDENT_COMMON_C="$Date: 2003/02/06 14:24:50 $"; +static const char* IDENT_COMMON_C="$Date: 2003/02/17 12:13:44 $"; #include "pa_common.h" #include "pa_exception.h" @@ -153,14 +153,9 @@ char* file_read_text(Pool& pool, Charset StringPtr file_spec, bool fail_on_read_problem, HashStringValue* params/*, HashStringValuePtr* out_fields*/) { - char *result; size_t size; - File_read_result file_read_result=file_read(pool, charset, file_spec, result, size, true, params, fail_on_read_problem); -/* - // they asked to return out_fields - if(out_fields) - *out_fields=file_read_result.fields; -*/ - return file_read_result.success?result:0; + File_read_result file= + file_read(pool, charset, file_spec, true, params, fail_on_read_problem); + return file.success?file.data:0; } //http request stuff @@ -184,7 +179,7 @@ static int http_read_response(Pool& pool int result=0; ssize_t EOLat=0; while(true) { - char *buf=(char *)pool.malloc(MAX_STRING); + char *buf=new(pool) char[MAX_STRING]; ssize_t size=recv(sock, buf, MAX_STRING, 0); if(size<=0) break; @@ -440,7 +435,7 @@ static void file_read_action(Pool& pool, void *context) { File_read_action_info& info=*static_cast(context); if(size_t to_read_size=(size_t)finfo.st_size) { - *info.data=pool.malloc(to_read_size+(as_text?1:0)); + *info.data=new(pool) char[to_read_size+(as_text?1:0)]; *info.data_size=(size_t)read(f, *info.data, to_read_size); if(ssize_t(*info.data_size)<0 || *info.data_size>to_read_size) @@ -450,7 +445,7 @@ static void file_read_action(Pool& pool, *info.data_size, to_read_size); } else { // empty file if(as_text) { - *info.data=pool.malloc(1); + *info.data=new(pool) char[1]; *(char*)(*info.data)=0; } else *info.data=0; @@ -467,7 +462,7 @@ File_read_result file_read(Pool& pool, C result.headers=file_read_http(pool, charset, file_spec, params).headers; result.success=true; } else { - File_read_action_info info={&result.data, &result.data_size}; + File_read_action_info info={&result.data, &result.size}; result.success=file_read_action_under_lock(pool, file_spec, "read", file_read_action, &info, as_text, fail_on_read_problem); @@ -475,17 +470,17 @@ File_read_result file_read(Pool& pool, C if(result.success && as_text) { // UTF-8 signature: EF BB BF - if(result.data_size>=3) { + if(result.size>=3) { char *in=(char *)result.data; if((in[0] == '\xEF') && (in[1] == '\xBB') && (in[2] == '\xBF')) { - result.data=in+3; result.data_size-=3;// skip prefix + result.data=in+3; result.size-=3;// skip prefix } } - fix_line_breaks((char *)(result.data), result.data_size); + fix_line_breaks((char *)(result.data), result.size); // note: after fixing - ((char*&)(result.data))[result.data_size]=0; + ((char*&)(result.data))[result.size]=0; } return result; @@ -614,7 +609,7 @@ bool file_write_action_under_lock( #ifndef DOXYGEN struct File_write_action_info { - const void *data; size_t size; + const char *data; size_t size; }; #endif static void file_write_action(int f, void *context) { @@ -629,7 +624,7 @@ static void file_write_action(int f, voi } void file_write( StringPtr file_spec, - const void *data, size_t size, + const char *data, size_t size, bool as_text, bool do_append) { File_write_action_info info={data, size}; @@ -716,8 +711,8 @@ bool file_readable(StringPtr file_spec) bool dir_readable(StringPtr file_spec) { return entry_readable(file_spec, true); } -StringPtr file_readable(StringPtr path, const String& name) { - StringPtr result(new String(*path)); +StringPtr file_readable(String& path, String& name) { + StringPtr result(new String(path)); *result << "/"; *result << name; return file_readable(result)?result:StringPtr(0); @@ -826,7 +821,7 @@ size_t stdout_write(const void *buf, siz } char* unescape_chars(Pool& pool, const char* cp, int len) { - char* s=pool.malloc(len + 1); + char* s=new(pool) char[len + 1]; enum EscapeState { EscapeRest, EscapeFirst,