--- libaitio/src/exec.c 2013/12/05 23:43:46 1.1.2.10 +++ libaitio/src/exec.c 2013/12/06 01:03:05 1.1.2.11 @@ -99,7 +99,11 @@ io_progClose(prog_t * __restrict prg, u_int closeNum) for (i = array_Size(prg->prog_fds) - 1; (closeNum ? ret < closeNum : 42) && i > -1; i--) if (array_Get(prg->prog_fds, i)) { +#ifdef POPEN_STREAM e_pclose(array(prg->prog_fds, i, FILE*)); +#else + e_pclose((int) array(prg->prog_fds, i, intptr_t)); +#endif array_Del(prg->prog_fds, i, 0); clrbit(prg->prog_used, i); prg->prog_cnum--; @@ -120,7 +124,11 @@ io_progClose(prog_t * __restrict prg, u_int closeNum) int io_progOpen(prog_t * __restrict prg, u_int execNum) { +#ifdef POPEN_STREAM FILE *f; +#else + int f; +#endif int stat, ret = 0; register int i; pid_t pid; @@ -136,7 +144,11 @@ io_progOpen(prog_t * __restrict prg, u_int execNum) for (i = 0; (execNum ? ret < execNum : 42) && i < array_Size(prg->prog_fds); i++) if (!array_Get(prg->prog_fds, i)) { f = e_popen(prg->prog_name, "r+", &pid); +#ifdef POPEN_STREAM if (!f) { +#else + if (f == -1) { +#endif LOGERR; ret = -1; break; @@ -202,7 +214,11 @@ io_progVacuum(prog_t * __restrict prg, u_int toNum) pthread_mutex_lock(&prg->prog_mtx); for (i = array_Size(prg->prog_fds) - 1; prg->prog_cnum > toNum && i > -1; i--) if (array_Get(prg->prog_fds, i) && isclr(prg->prog_used, i)) { +#ifdef POPEN_STREAM e_pclose(array(prg->prog_fds, i, FILE*)); +#else + e_pclose((int) array(prg->prog_fds, i, intptr_t)); +#endif array_Del(prg->prog_fds, i, 0); prg->prog_cnum--; ret++; @@ -231,7 +247,11 @@ io_progCheck(prog_t * __restrict prg) pthread_mutex_lock(&prg->prog_mtx); for (i = 0; i < array_Size(prg->prog_fds); i++) if (array_Get(prg->prog_fds, i) && +#ifdef POPEN_STREAM (p = pio_pgetpid(array(prg->prog_fds, i, FILE*)))) +#else + (p = pio_pgetpid((int) array(prg->prog_fds, i, intptr_t)))) +#endif if (waitpid(p->pid, &p->stat, WNOHANG) > 0) { clrbit(prg->prog_used, i); ret++; @@ -247,20 +267,36 @@ io_progCheck(prog_t * __restrict prg) * @prg = program pool * return: NULL error or !=NULL attached program handle */ +#ifdef POPEN_STREAM FILE * +#else +int +#endif io_progAttach(prog_t * __restrict prg) { +#ifdef POPEN_STREAM FILE *f = NULL; +#else + int f = -1; +#endif register int i; if (!prg) +#ifdef POPEN_STREAM return NULL; +#else + return -1; +#endif pthread_mutex_lock(&prg->prog_mtx); for (i = 0; i < array_Size(prg->prog_fds); i++) if (array_Get(prg->prog_fds, i) && isclr(prg->prog_used, i)) { setbit(prg->prog_used, i); +#ifdef POPEN_STREAM f = array(prg->prog_fds, i, FILE*); +#else + f = array(prg->prog_fds, i, intptr_t); +#endif break; } pthread_mutex_unlock(&prg->prog_mtx); @@ -276,7 +312,11 @@ io_progAttach(prog_t * __restrict prg) * return: none */ void +#ifdef POPEN_STREAM io_progDetach(prog_t * __restrict prg, FILE *pfd) +#else +io_progDetach(prog_t * __restrict prg, int pfd) +#endif { register int i; @@ -285,7 +325,11 @@ io_progDetach(prog_t * __restrict prg, FILE *pfd) pthread_mutex_lock(&prg->prog_mtx); for (i = 0; i < array_Size(prg->prog_fds); i++) +#ifdef POPEN_STREAM if (array(prg->prog_fds, i, FILE*) == pfd) { +#else + if (array(prg->prog_fds, i, intptr_t) == pfd) { +#endif clrbit(prg->prog_used, i); break; }