tw_cli_page.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_page.c 
  16.  * 
  17.  *      brief          - 
  18.  * 
  19.  */ 
  20. /*-----------------------------------------------------------*
  21.  * 
  22.  *      %version:       3 % 
  23.  *      instance:       DS_6 
  24.  *      %date_created:  Fri Feb 21 08:04:40 2003 % 
  25.  *
  26.  *###########################################################
  27.  */ 
  28. /****************************************************************************
  29. *
  30. * Filename   : tw_cli_page.c
  31. * Purpose    : CLI command objects and functions to support PAGE commands. 
  32. *
  33. *
  34. *****************************************************************************/
  35. #include <stdio.h>
  36. #include <stdarg.h>
  37. #include <string.h>
  38. #include <tw_cli.h>
  39. /*** 2nd level CLI Command Option - page "length"
  40. ***/
  41. static int CliCoVoproc_PageLength(Cli_cmdSession_t *pSess, 
  42.                                   char *CmdStr, int Ptr);
  43. Cli_CmdStruct_t  CliCo_PageLength =
  44. {
  45.     "length",
  46.     ALL_ACCESS_MODE | ALL_PRODUCT_TYPE,
  47.     NULL,
  48.     "set the length of a screen page",
  49.     NULL,
  50.     NULL,
  51.     CliCoVoproc_PageLength
  52. };
  53. /*** 2nd level CLI Command Option - page "off"
  54. ***/
  55. static int CliCoProc_PageOff(Cli_cmdSession_t *pSess, char *CmdStr, int Ptr);
  56. Cli_CmdStruct_t  CliCo_PageOff =
  57. {
  58.     "off",
  59.     ALL_ACCESS_MODE | ALL_PRODUCT_TYPE,
  60.     NULL,
  61.     "disable screen paging",
  62.     NULL,
  63.     CliCoProc_PageOff,
  64.     NULL
  65. };
  66. /*** 2nd level CLI Command Option - page "on"
  67. ***/
  68. static int CliCoProc_PageOn(Cli_cmdSession_t *pSess, char *CmdStr, int Ptr);
  69. Cli_CmdStruct_t  CliCo_PageOn =
  70. {
  71.     "on",
  72.     ALL_ACCESS_MODE | ALL_PRODUCT_TYPE,
  73.     NULL,
  74.     "enable screen paging",
  75.     NULL,
  76.     CliCoProc_PageOn,
  77.     NULL
  78. };
  79. /*** 1st level CLI Command Option - "page" 
  80. ***/
  81. Cli_CmdStruct_t *CliRcoOptionList_Page[] = 
  82. {
  83.     &CliCo_PageLength,
  84.     &CliCo_PageOff,
  85.     &CliCo_PageOn,
  86.     NULL
  87. };
  88. Cli_CmdStruct_t  CliRco_Page = 
  89. {
  90.     "page",
  91.     ALL_ACCESS_MODE | ALL_PRODUCT_TYPE,
  92.     CliRcoOptionList_Page,
  93.     "screen paging control command",
  94.     NULL,
  95.     NULL,
  96.     NULL
  97. };
  98. /***************************************************************************** 
  99. * int CliCoVoproc_PageLength(Cli_cmdSession_t *pSess, char *cmdStr, int ptr)
  100. * int CliCoProc_PageOff(Cli_cmdSession_t *pSess, char *CmdStr, int Ptr)
  101. * int CliCoProc_PageOn(Cli_cmdSession_t *pSess, char *CmdStr, int Ptr)
  102. *
  103. * Description :
  104. *   These are very simple commands to control the screen paging mechanism.
  105. *   "page length X" sets the screen length to X or CLI_MINIMAL_SCREEN_LENGTH,
  106. *   whichever is larger.  "page on" and "page off" turns on and off screen
  107. *   paging.
  108. * Arguments :
  109. *   Standard prarameters.
  110. *
  111. * Returns :
  112. *   0 if OK, -1 if bad.
  113. *
  114. * History
  115. *   who   when        why
  116. *   KBL   11/19/99    created
  117. *
  118. *****************************************************************************/
  119. static int CliCoVoproc_PageLength(Cli_cmdSession_t *pSess, 
  120.                                   char *CmdStr, 
  121.                                   int Ptr)
  122. {
  123.     int OldPageLen, NewPageLen;
  124.     if (sscanf(CmdStr + Ptr, "%d", &NewPageLen) != 1) 
  125.     {
  126.         goto BadParamError;
  127.     }
  128.     Cli_GetScrollPauseStatus(pSess, &OldPageLen);
  129.     Cli_SetPageLength(pSess, NewPageLen);
  130.     Cli_GetScrollPauseStatus(pSess, &NewPageLen);
  131.     Cli_Printf(pSess, "** Screen page size change from %d to %dn",
  132.                OldPageLen, NewPageLen);
  133.     goto Done;
  134. BadParamError:
  135.     Cli_Printf(pSess, badParamStr);
  136. Done :
  137.     return 0;
  138. }
  139. static int CliCoProc_PageOff(Cli_cmdSession_t *pSess, char *CmdStr, int Ptr)
  140. {
  141.     Cli_DisableScrollPause(pSess);
  142.     return 0;
  143. }
  144. static int CliCoProc_PageOn(Cli_cmdSession_t *pSess, char *CmdStr, int Ptr)
  145. {
  146.     Cli_EnableScrollPause(pSess);
  147.     return 0;
  148. }