Diff for /libaitcli/src/aitcli.c between versions 1.2.2.19 and 1.3.2.2

version 1.2.2.19, 2010/12/07 15:15:34 version 1.3.2.2, 2011/05/29 22:42:39
Line 507  cli_Printf(linebuffer_t * __restrict buffer, char *fmt Line 507  cli_Printf(linebuffer_t * __restrict buffer, char *fmt
 inline void  inline void
 cli_PrintHelp(linebuffer_t * __restrict buffer)  cli_PrintHelp(linebuffer_t * __restrict buffer)
 {  {
        if (buffer)        if (buffer) {
                 bufHelp(0, buffer);                  bufHelp(0, buffer);
        else                clrscrEOL(buffer);
         } else
                 cli_SetErr(EINVAL, "Error:: invalid input parameters ...");                  cli_SetErr(EINVAL, "Error:: invalid input parameters ...");
 }  }
   
Line 1254  int Line 1255  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 1275  cliNetLoop(linebuffer_t * __restrict buffer, const cha Line 1276  cliNetLoop(linebuffer_t * __restrict buffer, const cha
   
                         exit(ret);                          exit(ret);
                 default:                  default:
                        telnet_SetCmd(Attr + 0, DO, TELOPT_TTYPE);                        cli_telnet_SetCmd(Attr + 0, DO, TELOPT_TTYPE);
                        telnet_SetCmd(Attr + 1, WILL, TELOPT_ECHO);                        cli_telnet_SetCmd(Attr + 1, WILL, TELOPT_ECHO);
                        telnet_Set_SubOpt(Attr + 2, TELOPT_LFLOW, LFLOW_OFF, NULL, 0);                        cli_telnet_Set_SubOpt(Attr + 2, TELOPT_LFLOW, LFLOW_OFF, NULL, 0);
                        telnet_Set_SubOpt(Attr + 3, TELOPT_LFLOW, LFLOW_RESTART_XON, NULL, 0);                        cli_telnet_Set_SubOpt(Attr + 3, TELOPT_LFLOW, LFLOW_RESTART_XON, NULL, 0);
                        telnet_SetCmd(Attr + 4, DO, TELOPT_LINEMODE);                        cli_telnet_SetCmd(Attr + 4, DO, TELOPT_LINEMODE);
                        if ((ret = telnetSend(sock, Attr, 5, NULL, 0, 0)) == -1) {                        if ((ret = cli_telnetSend(sock, Attr, 5, NULL, 0, 0)) == -1)
                                cli_Errno = telnet_GetErrno(); 
                                strlcpy(cli_Error, telnet_GetError(), STRSIZ); 
                                 return -1;                                  return -1;
                        } else                        else
                                 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 1303  cliNetLoop(linebuffer_t * __restrict buffer, const cha Line 1305  cliNetLoop(linebuffer_t * __restrict buffer, const cha
   
                                 if (FD_ISSET(sock, &fds)) {                                  if (FD_ISSET(sock, &fds)) {
                                         memset(buf, 0, BUFSIZ);                                          memset(buf, 0, BUFSIZ);
                                        if ((ret = telnetRecv(sock, &a, &alen, buf, BUFSIZ)) < 0) {                                        if ((ret = cli_telnetRecv(sock, &a, &alen, buf, BUFSIZ)) < 0) {
                                                 if (a)                                                  if (a)
                                                         free(a);                                                          free(a);
   
Line 1312  cliNetLoop(linebuffer_t * __restrict buffer, const cha Line 1314  cliNetLoop(linebuffer_t * __restrict buffer, const cha
                                                 // EOF                                                  // EOF
                                                 if (-3 == ret)                                                  if (-3 == ret)
                                                         shutdown(sock, SHUT_RD);                                                          shutdown(sock, SHUT_RD);
                                                 else {  
                                                         cli_Errno = telnet_GetErrno();  
                                                         strlcpy(cli_Error, telnet_GetError(), STRSIZ);  
                                                 }  
                                                 break;                                                  break;
                                         }                                          }
                                         attrlen = 0;                                          attrlen = 0;
                                         if (1 == flg && alen) {                                          if (1 == flg && alen) {
                                                telnet_SetCmd(&Attr[attrlen++], DONT, TELOPT_SGA);                                                cli_telnet_SetCmd(&Attr[attrlen++], DONT, TELOPT_SGA);
                                                telnet_SetCmd(&Attr[attrlen++], DO, TELOPT_ECHO);                                                cli_telnet_SetCmd(&Attr[attrlen++], DO, TELOPT_ECHO);
                                         }                                          }
                                         if (2 == flg && alen) {                                          if (2 == flg && alen) {
                                                telnet_SetCmd(&Attr[attrlen++], WILL, TELOPT_ECHO);                                                cli_telnet_SetCmd(&Attr[attrlen++], WILL, TELOPT_ECHO);
                                                telnet_Set_SubOpt(&Attr[attrlen++], TELOPT_LFLOW,                                                 cli_telnet_Set_SubOpt(&Attr[attrlen++], TELOPT_LFLOW, 
                                                                 LFLOW_OFF, NULL, 0);                                                                  LFLOW_OFF, NULL, 0);
                                                telnet_Set_SubOpt(&Attr[attrlen++], TELOPT_LFLOW,                                                 cli_telnet_Set_SubOpt(&Attr[attrlen++], TELOPT_LFLOW, 
                                                                 LFLOW_RESTART_XON, NULL, 0);                                                                  LFLOW_RESTART_XON, NULL, 0);
                                                telnet_SetCmd(&Attr[attrlen++], DONT, TELOPT_LINEMODE);                                                cli_telnet_SetCmd(&Attr[attrlen++], DONT, TELOPT_LINEMODE);
                                         }                                          }
                                         if (a)                                          if (a)
                                                 free(a);                                                  free(a);
Line 1347  cliNetLoop(linebuffer_t * __restrict buffer, const cha Line 1345  cliNetLoop(linebuffer_t * __restrict buffer, const cha
                                                 break;                                                  break;
                                         }                                          }
   
                                        if ((ret = telnetSend(sock, Attr, pty == s ? 0 : attrlen, buf, ret, 0)) == -1) {                                        if ((ret = cli_telnetSend(sock, Attr, pty == s ? 0 : attrlen, 
                                                cli_Errno = telnet_GetErrno();                                                                        buf, ret, 0)) == -1)
                                                strlcpy(cli_Error, telnet_GetError(), STRSIZ); 
                                                 break;                                                  break;
                                        } else                                        else
                                                 flg++;                                                  flg++;
                                 }                                  }
                         }                          }
Line 1390  cliLoop(linebuffer_t * __restrict buffer, const char * Line 1387  cliLoop(linebuffer_t * __restrict buffer, const char *
                 } else                  } else
                         cli_addHistory(buffer, NULL);                          cli_addHistory(buffer, NULL);
                 // clear whitespaces                  // clear whitespaces
                for (s = line; isspace(*s); s++);                for (s = line; isspace((int) *s); s++);
                 if (*s) {                  if (*s) {
                        for (t = s + strlen(s) - 1; t > s && isspace(*t); t--);                        for (t = s + strlen(s) - 1; t > s && isspace((int) *t); t--);
                         *++t = 0;                          *++t = 0;
                 }                  }
   
Line 1414  cliLoop(linebuffer_t * __restrict buffer, const char * Line 1411  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);
                                 }                                  }

Removed from v.1.2.2.19  
changed lines
  Added in v.1.3.2.2


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>