|
|
| version 1.2.2.18, 2010/12/07 15:09:02 | version 1.2.2.20, 2010/12/07 16:20:24 |
|---|---|
| Line 1254 int | Line 1254 int |
| cliNetLoop(linebuffer_t * __restrict buffer, const char *csHistFile, int sock) | cliNetLoop(linebuffer_t * __restrict buffer, const char *csHistFile, int sock) |
| { | { |
| u_char buf[BUFSIZ]; | u_char buf[BUFSIZ]; |
| int pty, r, s, alen, flg, attrlen = 0, ret = 0; | int pid, stat, pty, r, s, alen, flg, attrlen = 0, ret = 0; |
| fd_set fds; | fd_set fds; |
| struct timeval tv = { DEFAULT_SOCK_TIMEOUT, 0 }; | struct timeval tv = { DEFAULT_SOCK_TIMEOUT, 0 }; |
| struct telnetAttrs *a, Attr[10]; | struct telnetAttrs *a, Attr[10]; |
| switch (forkpty(&pty, NULL, NULL, NULL)) { | switch ((pid = forkpty(&pty, NULL, NULL, NULL))) { |
| case -1: | case -1: |
| LOGERR; | LOGERR; |
| return -1; | return -1; |
| Line 1270 cliNetLoop(linebuffer_t * __restrict buffer, const cha | Line 1270 cliNetLoop(linebuffer_t * __restrict buffer, const cha |
| } else | } else |
| close(sock); | close(sock); |
| cliInitLine(buffer); | |
| ret = cliLoop(buffer, csHistFile) < 0 ? 1 : 0; | ret = cliLoop(buffer, csHistFile) < 0 ? 1 : 0; |
| cliEnd(buffer); | cliEnd(buffer); |
| Line 1289 cliNetLoop(linebuffer_t * __restrict buffer, const cha | Line 1288 cliNetLoop(linebuffer_t * __restrict buffer, const cha |
| flg = 0; | flg = 0; |
| while (42) { | while (42) { |
| if (waitpid(pid, &stat, WNOHANG)) | |
| break; | |
| FD_ZERO(&fds); | FD_ZERO(&fds); |
| FD_SET(sock, &fds); | FD_SET(sock, &fds); |
| FD_SET(pty, &fds); | FD_SET(pty, &fds); |
| Line 1378 cliLoop(linebuffer_t * __restrict buffer, const char * | Line 1380 cliLoop(linebuffer_t * __restrict buffer, const char * |
| struct tagCommand *cmd; | struct tagCommand *cmd; |
| /* --- main body of CLI --- */ | /* --- main body of CLI --- */ |
| cliInitLine(buffer); | |
| if (cli_loadHistory(buffer, csHistFile) == RETCODE_ERR) | if (cli_loadHistory(buffer, csHistFile) == RETCODE_ERR) |
| return RETCODE_ERR; | return RETCODE_ERR; |
| Line 1414 cliLoop(linebuffer_t * __restrict buffer, const char * | Line 1417 cliLoop(linebuffer_t * __restrict buffer, const char * |
| cli_Printf(buffer, "\nCommand '%s' not found!\n", items[0]); | cli_Printf(buffer, "\nCommand '%s' not found!\n", items[0]); |
| ret = -1; | ret = -1; |
| } else | } else |
| if (cmd->cmd_func) | if (cmd->cmd_func) { |
| cli_Printf(buffer, "\n"); | |
| ret = cmd->cmd_func(buffer, i, items); | ret = cmd->cmd_func(buffer, i, items); |
| else { | } else { |
| clrscrEOL(buffer); | clrscrEOL(buffer); |
| printfCR(buffer, 1); | printfCR(buffer, 1); |
| } | } |