@@ -245,12 +245,11 @@ bool_t bproc_finish(Proc *proc, uint32_t *code)
245245
246246/*---------------------------------------------------------------------------*/
247247
248- bool_t bproc_read ( Proc * proc , byte_t * data , const uint32_t size , uint32_t * rsize , perror_t * error )
248+ static bool_t i_read_pipe ( HANDLE pipe , byte_t * data , const uint32_t size , uint32_t * rsize , perror_t * error )
249249{
250250 DWORD lrsize ;
251251 BOOL ok ;
252- cassert_no_null (proc );
253- ok = ReadFile (proc -> pipes [STDOUT_READ_PARENT ], (LPVOID )data , (DWORD )size , & lrsize , NULL );
252+ ok = ReadFile (pipe , (LPVOID )data , (DWORD )size , & lrsize , NULL );
254253 if (ok == TRUE)
255254 {
256255 if (lrsize > 0 )
@@ -285,21 +284,16 @@ bool_t bproc_read(Proc *proc, byte_t *data, const uint32_t size, uint32_t *rsize
285284
286285/*---------------------------------------------------------------------------*/
287286
287+ bool_t bproc_read (Proc * proc , byte_t * data , const uint32_t size , uint32_t * rsize , perror_t * error )
288+ {
289+ return i_read_pipe (proc -> pipes [STDOUT_READ_PARENT ], data , size , rsize , error );
290+ }
291+
292+ /*---------------------------------------------------------------------------*/
293+
288294bool_t bproc_eread (Proc * proc , byte_t * data , const uint32_t size , uint32_t * rsize , perror_t * error )
289295{
290- DWORD lrsize ;
291- BOOL ok ;
292- cassert_no_null (proc );
293- ok = ReadFile (proc -> pipes [STDERR_READ_PARENT ], (LPVOID )data , (DWORD )size , & lrsize , NULL );
294- ptr_assign (rsize , (uint32_t )lrsize );
295- if (error != NULL )
296- {
297- if (ok == TRUE)
298- * error = ekPOK ;
299- else
300- * error = ekPPIPE ;
301- }
302- return (bool_t )ok ;
296+ return i_read_pipe (proc -> pipes [STDERR_READ_PARENT ], data , size , rsize , error );
303297}
304298
305299/*---------------------------------------------------------------------------*/
@@ -327,16 +321,28 @@ bool_t bproc_write(Proc *proc, const byte_t *data, const uint32_t size, uint32_t
327321
328322bool_t bproc_read_close (Proc * proc )
329323{
330- unref (proc );
331- return TRUE;
324+ cassert_no_null (proc );
325+ if (proc -> pipes [STDOUT_READ_PARENT ] != NULL )
326+ {
327+ CloseHandle (proc -> pipes [STDOUT_READ_PARENT ]);
328+ proc -> pipes [STDOUT_READ_PARENT ] = NULL ;
329+ return TRUE;
330+ }
331+ return FALSE;
332332}
333333
334334/*---------------------------------------------------------------------------*/
335335
336336bool_t bproc_eread_close (Proc * proc )
337337{
338- unref (proc );
339- return TRUE;
338+ cassert_no_null (proc );
339+ if (proc -> pipes [STDERR_READ_PARENT ] != NULL )
340+ {
341+ CloseHandle (proc -> pipes [STDERR_READ_PARENT ]);
342+ proc -> pipes [STDERR_READ_PARENT ] = NULL ;
343+ return TRUE;
344+ }
345+ return FALSE;
340346}
341347
342348/*---------------------------------------------------------------------------*/
0 commit comments