X-Git-Url: http://winboard.nl/cgi-bin?p=polyglot.git;a=blobdiff_plain;f=pipex.h;h=ddc5d1502bacbd5ac045e40c04b376930c95fb63;hp=e96457fc7014f154f5901f307cb17eb1b558505d;hb=HEAD;hpb=e15efca6667b2673b4c1a5879a6917eab6800e58 diff --git a/pipex.h b/pipex.h index e96457f..ddc5d15 100644 --- a/pipex.h +++ b/pipex.h @@ -36,7 +36,11 @@ typedef struct { volatile int nReadEnd; char lpBuffer[LINE_INPUT_MAX_CHAR]; char lpReadBuffer[LINE_INPUT_MAX_CHAR]; + char szWriteBuffer[LINE_INPUT_MAX_CHAR]; + DWORD dwWriteIndex; const char *name; + const char *command; + BOOL quit_pending; } pipex_t; @@ -66,27 +70,38 @@ typedef struct { io_t io[1]; pid_t pid; int state; + bool quit_pending; + const char *command; } pipex_t; #endif // part common to WIN32 and POSIX +// macros + +#define PIPEX_MAGIC "!@#$%" +#define WAIT_GRANULARITY 100 + // functions -extern void pipex_open (pipex_t *pipex, - const char *name, - const char *command); -extern bool pipex_active (pipex_t *pipex); -extern bool pipex_readln (pipex_t *pipex, char *string); -extern bool pipex_readln_nb (pipex_t *pipex, char *string); -extern void pipex_writeln (pipex_t *pipex, const char *string); -extern bool pipex_eof (pipex_t *pipex); -extern void pipex_send_eof (pipex_t *pipex); -extern void pipex_exit (pipex_t *pipex); -extern void pipex_set_priority (pipex_t *pipex, int value); -extern void pipex_set_affinity (pipex_t *pipex, int value); -extern void pipex_wait_event (pipex_t *pipex[]); +extern void pipex_open (pipex_t *pipex, + const char *name, + const char *working_dir, + const char *command); +extern bool pipex_active (pipex_t *pipex); +extern bool pipex_readln (pipex_t *pipex, char *string); +extern bool pipex_readln_nb (pipex_t *pipex, char *string); +extern void pipex_writeln (pipex_t *pipex, const char *string); +extern void pipex_write (pipex_t *pipex, const char *string); +extern char* pipex_get_buffer (pipex_t *pipex); +extern bool pipex_eof (pipex_t *pipex); +extern void pipex_send_eof (pipex_t *pipex); +extern void pipex_exit (pipex_t *pipex, int kill_timeout); +extern void pipex_set_priority (pipex_t *pipex, int value); +extern void pipex_set_affinity (pipex_t *pipex, int value); +extern void pipex_wait_event (pipex_t *pipex[]); + // pipex