--- parser3/src/main/pa_exec.C 2001/04/09 16:04:50 1.1 +++ parser3/src/main/pa_exec.C 2001/04/23 09:38:53 1.3 @@ -5,7 +5,7 @@ Author: Alexander Petrosyan (http://design.ru/paf) - $Id: pa_exec.C,v 1.1 2001/04/09 16:04:50 paf Exp $ + $Id: pa_exec.C,v 1.3 2001/04/23 09:38:53 paf Exp $ */ #include "pa_config_includes.h" @@ -101,14 +101,14 @@ error: return FALSE; } -static read_pipe(String& result, HANDLE hOutRead, const char *file_spec){ +static void read_pipe(String& result, HANDLE hOutRead, const char *file_spec){ while(true) { char *buf=(char *)result.pool().malloc(MAX_STRING); unsigned long size; ReadFile( hOutRead, buf, MAX_STRING, &size, NULL ); if(!size) break; - result.APPEND_CLEAN(buf, size, file_spec, 0); + result.APPEND_AS_IS(buf, size, file_spec, 0); } } @@ -126,7 +126,7 @@ static const char *buildCommand(Pool& po char *atEOL=strchr(buf, '\n'); if(atEOL) { String string(pool); - string.APPEND_CLEAN(buf+2, atEOL-(buf+2), + string.APPEND_AS_IS(buf+2, atEOL-(buf+2), origin_string.origin().file, 0); string << " " << file_spec_cstr; if(argv) @@ -255,13 +255,13 @@ static int get_exit_status(int pid) { WEXITSTATUS(status) : -2; } -static read_pipe(String& result, int file, const char *file_spec){ +static void read_pipe(String& result, int file, const char *file_spec){ while(true) { - char *buf=(char *)pool.malloc(MAX_STRING); + char *buf=(char *)result.pool().malloc(MAX_STRING); size_t size=read(file, buf, MAX_STRING); if(!size) break; - result.APPEND_CLEAN(buf, size, file_spec, 0); + result.APPEND_AS_IS(buf, size, file_spec, 0); } } @@ -272,13 +272,13 @@ static void append_env_pair(const Hash:: String& string=*static_cast(info); string << key << "=" << *static_cast(value); - string.APPEND_CLEAN("", 1, 0, 0); // zero byte + string.APPEND_AS_IS("", 1, 0, 0); // zero byte #else String string(key.pool()); string << key << "=" << *static_cast(value); - char **env_ptr=static_cast(info); - *env_ptr++=string.cstr(); + char ***env_ref=static_cast(info); + **env_ref=string.cstr(); (*env_ref)++; #endif } int pa_exec(const String& file_spec, @@ -342,25 +342,25 @@ from http://www.apache.org/websrc/cvsweb #else int pipe_write, pipe_read, pipe_err; - const char *argv_cstr[5]={"", "", "", "", ""}; + const char *argv_cstrs[5]={"", "", "", "", ""}; if(argv) { int size=min(5, argv->size()); for(int i=0; iget_string(i).cstr(String::UL_AS_IS); + argv_cstrs[i]=argv->get_string(i)->cstr(String::UL_AS_IS); } - const char *file_spec_cstr=file_spec->cstr(String::UL_FILE_NAME); - char **env_cstr=0; + const char *file_spec_cstr=file_spec.cstr(String::UL_FILE_NAME); + char **env_cstrs=0; if(env) { - env_cstr_array= + env_cstrs= (char **)env->pool().malloc(sizeof(char *)*(env->size()+1/*0*/)); - char **env_ptr=env_cstr_array; - env->for_each(append_env_pair, &env_ptr); - *env_ptr=0; + char **env_ref=env_cstrs; + env->for_each(append_env_pair, &env_ref); + *env_ref=0; } - if(int pid=execle_piped(sendmail_filespec, + if(int pid=execle_piped( file_spec_cstr, - argv_cstr[0], argv_cstr[1], argv_cstr[2], argv_cstr[3], argv_cstr[4], - env_cstr, + argv_cstrs[0], argv_cstrs[1], argv_cstrs[2], argv_cstrs[3], argv_cstrs[4], + env_cstrs, &pipe_write, &pipe_read, &pipe_err)) { const char *in_cstr=in.cstr(String::UL_AS_IS); @@ -374,7 +374,7 @@ from http://www.apache.org/websrc/cvsweb return get_exit_status(pid); // negative may mean "-errno[execl()]" } else PTHROW(0, 0, - file_spec, + &file_spec, "pipe error"); #endif