tw_cli_misc_cmd.c
上传用户:hujq123
上传日期:2016-04-10
资源大小:153k
文件大小:4k
源码类别:

Telnet服务器

开发平台:

Unix_Linux

  1. /* 
  2.  * Copyright (C) 2002 Koninklijke Philips Electronics N.V., 
  3.  * All Rights Reserved. 
  4.  *
  5.  * This source code and any compilation or derivative thereof is the 
  6.  * proprietary information of Koninklijke Philips Electronics N.V. 
  7.  * and is confidential in nature. 
  8.  * Under no circumstances is this software to be exposed to or placed 
  9.  * under an Open Source License of any type without the expressed 
  10.  * written permission of Koninklijke Philips Electronics N.V. 
  11.  * 
  12.  *###########################################################
  13.  */ 
  14. /*! 
  15.  *      file           tw_cli_misc_cmd.c 
  16.  * 
  17.  *      brief          - 
  18.  * 
  19.  */ 
  20. /*-----------------------------------------------------------*
  21.  * 
  22.  *      %version:       3 % 
  23.  *      instance:       DS_6 
  24.  *      %date_created:  Fri Feb 21 08:04:38 2003 % 
  25.  *
  26.  *###########################################################
  27.  */ 
  28. /****************************************************************************
  29. *
  30. * Filename   : tw_cli_misc_cmd.c
  31. * Purpose    : Misc CLI command objects and functions not worthy enough to
  32. *              have their own files.
  33. *
  34. *
  35. *****************************************************************************/
  36. #include <stdio.h>
  37. #include <stdarg.h>
  38. #include <string.h>
  39. #include <tw_cli.h>
  40. /**************** *** Definition of CLI Command Objects *** ***************/
  41. /*** 1st level CLI Command Option - "exit"
  42. ***/ 
  43. static int   CliRcoProc_Exit(Cli_cmdSession_t *pSess, char *CmdStr, int Ptr);
  44. Cli_CmdStruct_t  CliRco_Exit = 
  45.     "exit",
  46.     ALL_ACCESS_MODE | ALL_PRODUCT_TYPE,
  47.     NULL,
  48.     "terminate current telnet session",
  49.     NULL,
  50.     CliRcoProc_Exit,
  51.     NULL
  52. };
  53. /*** 1st level CLI Command Option - "history"
  54. ***/ 
  55. static int   CliRcoProc_History(Cli_cmdSession_t *pSess, char *CmdStr, int Ptr);
  56. Cli_CmdStruct_t  CliRco_History = 
  57. {
  58.     "history",
  59.     ALL_ACCESS_MODE | ALL_PRODUCT_TYPE,
  60.     NULL,
  61.     "display historical commands",
  62.     NULL,
  63.     CliRcoProc_History,
  64.     NULL
  65. };
  66. /***************************************************************************** 
  67. * int CliRcoProc_Exit(Cli_cmdSession_t *pSess, char *cmdStr, int ptr)
  68. *
  69. * Description :
  70. * This is the command processing handler for
  71. *     "logout"
  72. * Arguments :
  73. * Standard prarameters.
  74. *
  75. * Returns :
  76. * 0 if OK, -1 if bad.
  77. *
  78. * History
  79. * who   when        why
  80. * KBL   7/7/99      created
  81. *
  82. *****************************************************************************/
  83. int CliRcoProc_Exit(Cli_cmdSession_t *pSess, char *cmdStr, int ptr)
  84. {
  85.     return -1;
  86. }
  87. /***************************************************************************** 
  88. * int CliCoProc_History(Cli_cmdSession_t *pSess, char *cmdStr, int ptr)
  89. *
  90. * Description :
  91. * This is the command processing handler for
  92. *     "history"
  93. * Arguments :
  94. * Standard prarameters.
  95. *
  96. * Returns :
  97. * 0 if OK, -1 if bad.
  98. *
  99. * History
  100. * who   when        why
  101. * KBL   7/7/99      created
  102. *
  103. *****************************************************************************/
  104. int CliRcoProc_History(Cli_cmdSession_t *pSess, char *cmdStr, int ptr)
  105. {
  106.     int i, hptr;
  107.     char  *cmd;
  108.     char  numStr[16];  /* u32 is 10 digits, plus 2 CR/LF and 1 space after */
  109.     for (i = CLI_ACCESS_HISTORY_DEPTH; i >= 1; i--) 
  110.     {
  111.         hptr = (pSess->historyPtr + CLI_ACCESS_HISTORY_DEPTH - i )% CLI_ACCESS_HISTORY_DEPTH;
  112.         if (pSess->historyNum[hptr] == 0) 
  113.         {
  114.             /* history number start from 1, 0 means empty history */
  115.             continue;
  116.         }
  117.         sprintf(numStr, "%10d ", pSess->historyNum[hptr]);
  118.         cmd = pSess->historyBuf[hptr];
  119.         if (Cli_Printf(pSess, numStr) < 0)
  120.         {
  121.             return -1;
  122.         }
  123.         if (Cli_Printf(pSess, cmd) < 0)
  124.         {
  125.             return -1;
  126.         }
  127.         Cli_Printf(pSess, "n") ;
  128.     }
  129.     return 0;
  130. }