--- libaitio/inc/aitio.h 2013/11/21 14:46:44 1.36.2.3 +++ libaitio/inc/aitio.h 2013/11/22 10:19:50 1.36.2.7 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: aitio.h,v 1.36.2.3 2013/11/21 14:46:44 misho Exp $ +* $Id: aitio.h,v 1.36.2.7 2013/11/22 10:19:50 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -86,10 +86,11 @@ struct tagCliSock { int cli_pty; sockaddr_t cli_addr; char cli_name[64]; + char cli_cmdline[PATH_MAX]; sched_task_func_t cli_func; - ait_val_t cli_buf; + ait_val_t cli_buf[2]; TAILQ_ENTRY(tagCliSock) cli_node; }; @@ -140,7 +141,15 @@ sock_t *ioInitSocket(int role, int type, int proto, * return: none */ void ioCloseSocket(sock_t ** __restrict s); +#define ioKillSocket(x) (assert((x)), (x)->sock_kill = 1) /* + * ioCloseClient() - Close client socket + * + * @c = Client socket + * return: 0 ok or !=0 error + */ +int ioCloseClient(sock_cli_t * __restrict c); +/* * ioUpSocket() - Setup socket for use * * @s = Socket @@ -153,9 +162,10 @@ int ioUpSocket(sock_t * __restrict s, void *arg, int t * ioUpdTimerSocket() - Update timeout of socket * * @c = Client socket + * @arg = Optional data argument * return: none */ -void ioUpdTimerSocket(sock_cli_t * __restrict c); +void ioUpdTimerSocket(sock_cli_t * __restrict c, void *arg); /* * ioLoopSocket() - Start socket scheduler * @@ -164,6 +174,14 @@ void ioUpdTimerSocket(sock_cli_t * __restrict c); * return: -1 error or return result from scheduler */ int ioLoopSocket(sock_t * __restrict s, sched_task_func_t rcb); +/* + * ioBridgeProg2Socket() - Start socket scheduler and bridge program to socket + * + * @s = Socket + * @prgname = Program name + * return: 0 ok or !=0 error + */ +int ioBridgeProg2Socket(sock_t * __restrict s, const char *prgname); /* * ioPromptRead() - Read data from input h[0] with prompt to output h[1] @@ -174,7 +192,8 @@ int ioLoopSocket(sock_t * __restrict s, sched_task_fun * @dataLen = Length of data * return: 0 EOF; -1 error:: can`t read; >0 count of readed chars */ -int ioPromptRead(int *h, const char *csPrompt, char * __restrict psData, int dataLen); +int ioPromptRead(int *h, const char *csPrompt, + char * __restrict psData, int dataLen); /* * ioPromptPassword() - Read password from input h[0] with prompt to output h[1] * @@ -185,7 +204,8 @@ int ioPromptRead(int *h, const char *csPrompt, char * * @confirm = Confirm password, 0 - get password, !=0 Ask for confirmation * return: 0 EOF; -1 error:: can`t read; >0 count of readed chars */ -int ioPromptPassword(int *h, const char *csPrompt, char * __restrict psPass, int passLen, int confirm); +int ioPromptPassword(int *h, const char *csPrompt, + char * __restrict psPass, int passLen, int confirm); /*