亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? cmd_parse.c

?? cmd line like! cmd line like!
?? C
?? 第 1 頁 / 共 2 頁
字號:
/**************************************************************************
 *                                                                        *
 *         Copyright (c) 2002 by Sunplus Technology Co., Ltd.             *
 *                                                                        *
 *  This software is copyrighted by and is the property of Sunplus        *
 *  Technology Co., Ltd. All rights are reserved by Sunplus Technology    *
 *  Co., Ltd. This software may only be used in accordance with the       *
 *  corresponding license agreement. Any unauthorized use, duplication,   *
 *  distribution, or disclosure of this software is expressly forbidden.  *
 *                                                                        *
 *  This Copyright notice MUST not be removed or modified without prior   *
 *  written consent of Sunplus Technology Co., Ltd.                       *
 *                                                                        *
 *  Sunplus Technology Co., Ltd. reserves the right to modify this        *
 *  software without notice.                                              *
 *                                                                        *
 *  Sunplus Technology Co., Ltd.                                          *
 *  19, Innovation First Road, Science-Based Industrial Park,             *
 *  Hsin-Chu, Taiwan, R.O.C.                                              *
 *                                                                        *
 *  Author: Wilson Lu                                                     *
 *                                                                        *
 **************************************************************************/
#include <string.h>
#include <stdio.h>
#include "cmd.h"

/****************************************************************************
*                           C O N S T A N T S                               *
****************************************************************************/
#define CMD_HISTORIES	8
#define CMD_BUF_SIZE	64
#define HELP_CMD_HELP	"Provides help for commands. Try 'help <command>'"
#define HELP_CMD_LIST	"Provides list for commands."
/****************************************************************************
*                         G L O B A L    D A T A                            *
****************************************************************************/
static void cmdHelpDisp(UINT8 *parameters);
static void cmdListDisp(UINT8 *parameters);
static cmd_t  cmdHelp = {"help", cmdHelpDisp, HELP_CMD_HELP, 0x0};
static cmd_t  cmdList = {"ls",   cmdListDisp, HELP_CMD_LIST, 0x0};
static cmd_t  *pcmds = &cmdHelp;

static UINT8  buffer[CMD_BUF_SIZE];
static UINT32 pos;
static UINT32 logIn;

static UINT32 histBuf[CMD_HISTORIES][CMD_BUF_SIZE];
static UINT32 histPos[CMD_HISTORIES];
static UINT32 histIns;
static UINT32 histOutput;
static UINT32 histInsWrap;
static UINT32 histOutputWrap;
/**************************************************************************
 *                                                                        *
 *  Function Name:                                                        *
 *                                                                        *
 *  Purposes:                                                             *
 *                                                                        *
 *  Descriptions:                                                         *
 *                                                                        *
 *  Arguments:                                                            *
 *                                                                        *
 *  Returns: None                                                         *
 *                                                                        *
 *  See also:                                                             *
 *                                                                        *
 **************************************************************************/
void
cmdWhiteSpaceStrip(
	UINT8 **pptr
)
{
	UINT8 *ptr;

	ptr = *pptr;
	while ( *ptr != '\0' ) {
		if ((*ptr != ' ')  &&
		    (*ptr != '\t') &&
		    (*ptr != '\n') &&
		    (*ptr != '\r')) {
			break;
		}
		else {
			ptr++;
		}
	}
	*pptr = ptr;
}

/**************************************************************************
 *                                                                        *
 *  Function Name:                                                        *
 *                                                                        *
 *  Purposes:                                                             *
 *                                                                        *
 *  Descriptions:                                                         *
 *                                                                        *
 *  Arguments:                                                            *
 *                                                                        *
 *  Returns: None                                                         *
 *                                                                        *
 *  See also:                                                             *
 *                                                                        *
 **************************************************************************/
void
cmdWhiteSpaceReplace(
	UINT8 **pptr
)
{
	UINT8 *ptr;

	ptr = *pptr;
	while ( *ptr != '\0' ) {
		if ((*ptr != ' ')  &&
		    (*ptr != '\t') &&
		    (*ptr != '\n') &&
		    (*ptr != '\r')) {
			break;
		}
		else {
			**pptr = '\0';
			ptr++;
		}
	}
	*pptr = ptr;
}

/**************************************************************************
 *                                                                        *
 *  Function Name:                                                        *
 *                                                                        *
 *  Purposes:                                                             *
 *                                                                        *
 *  Descriptions:                                                         *
 *                                                                        *
 *  Arguments:                                                            *
 *                                                                        *
 *  Returns: None                                                         *
 *                                                                        *
 *  See also:                                                             *
 *                                                                        *
 **************************************************************************/
void
cmdTokenStrip(
	UINT8 **pptr
)
{
	UINT8 *ptr;

	ptr = *pptr;
	while ( *ptr != '\0' ) {
		if ((*ptr == ' ')  ||
		    (*ptr == '\t') ||
		    (*ptr == '\n') ||
		    (*ptr == '\r')) {
			break;
		}
		else {
			ptr++;
		}
	}
	*pptr = ptr;
}

/**************************************************************************
 *                                                                        *
 *  Function Name:                                                        *
 *                                                                        *
 *  Purposes:                                                             *
 *                                                                        *
 *  Descriptions:                                                         *
 *                                                                        *
 *  Arguments:                                                            *
 *                                                                        *
 *  Returns: None                                                         *
 *                                                                        *
 *  See also:                                                             *
 *                                                                        *
 **************************************************************************/
SINT32 strtoulex(char *pdt)
{
	char *pt = pdt;
	UINT32 retd = 0;
	SINT32 sign = 1;

	if (pt != NULL) {
		if (pt[0] == '-') {
			sign = -1;
			pt ++;
		}
		
		if (pt[0] == '0' && (pt[1] == 'x' || pt[1] == 'X')) {
			for(pt+=2 ; *pt!=' ' && *pt!=0 && *pt!='\t' && *pt!='\n' && *pt!='\r'; pt++){
				if(*pt>='0' && *pt<='9'){
					retd = retd*16 + (*pt-'0');
				} else if (*pt>='a' && *pt<='f') {
					retd = retd*16 + (*pt-'a') + 10;
				} else if (*pt>='A' && *pt<='F') {
					retd = retd*16 + (*pt-'A') + 10;
				} else {
					retd = 0;
					break;
				}
			}
		} else {
			for ( ; *pt!=' ' && *pt!=0 && *pt!='\t' && *pt!='\n' && *pt!='\r'; pt++) {
				if (*pt>='0' && *pt<='9') {
					retd = retd*10 + (*pt-'0');
				} else {
					retd = 0;
					break;
				}
			}
		}
	}

	return(retd*sign);
}

/**************************************************************************
 *                                                                        *
 *  Function Name:                                                        *
 *                                                                        *
 *  Purposes:                                                             *
 *                                                                        *
 *  Descriptions:                                                         *
 *                                                                        *
 *  Arguments:                                                            *
 *                                                                        *
 *  Returns: None                                                         *
 *                                                                        *
 *  See also:                                                             *
 *                                                                        *
 **************************************************************************/
static void
cmdHelpShow(
	cmd_t *bc, 
	UINT32 maxCmdLen
)
{
	const UINT8 *help = bc->phelp;
	UINT32 helpLen = strlen(help);
	UINT32 spaces = maxCmdLen - strlen(bc->cmd);
	UINT32 showThisLine = 0;
	UINT32 lineOne = TRUE;
	UINT32 c;

	printf_0("%s", bc->cmd);
	if ( helpLen == 0 ) {
		printf_0(" - No help.\n");
		return;
	}

	while ( helpLen ) {
		while ( spaces > 1 ) {
			printf_0(" ");
			spaces--;
		};
		if ( lineOne ) {
			printf_0(" - ");
		}
		spaces = maxCmdLen + 3; /* 3: " - " has three characters */
		lineOne = FALSE;

		/*
		 * See if greater then the line length if so, work back from the end for a
		 * space, tab or lf or cr.
		 */

		if ( helpLen > (78 - maxCmdLen - 3) ) {
			for ( showThisLine = (78 - maxCmdLen - 3) - 1; 
				showThisLine; 
				showThisLine-- )
				if ( (help[showThisLine] == ' ') ||
					 (help[showThisLine] == '\n') ||
					 (help[showThisLine] == '\r') )
					break;

				/*
				 * If showThisLine is 0, it is a very long word !!
				 */

			if ( showThisLine == 0 )
				showThisLine = (78 - maxCmdLen - 3) - 1;
		} else
			showThisLine = helpLen;

		for ( c = 0; c < showThisLine; c++ ) {
			if ( (help[c] == '\r') || (help[c] == '\n') ) {
				showThisLine = c;
			}
			else {
				printf_0("%c", help[c]);
			}
		}

		printf_0("\n");

		help += showThisLine;
		helpLen -= showThisLine;

		/*
		 * Move past the line feeds or what ever else is being skipped.
		 */

		while ( helpLen ) {
			if ( (*help != '\r') && (*help != '\n') ) {
				break;
			}
			if ( *help != ' ' ) {
				help++;
				helpLen--;
				break;
			}
			help++;
			helpLen--;
		}
	}
}

/**************************************************************************
 *                                                                        *
 *  Function Name:                                                        *
 *                                                                        *
 *  Purposes:                                                             *
 *                                                                        *
 *  Descriptions:                                                         *
 *                                                                        *
 *  Arguments:                                                            *
 *                                                                        *
 *  Returns: None                                                         *
 *                                                                        *
 *  See also:                                                             *
 *                                                                        *
 **************************************************************************/
static void
cmdHelpDisp(
	UINT8 *parameters
)
{
	cmd_t *bc = pcmds;
	UINT32 maxCmdLen = 0, i = 0;
	UINT32 len;

	/* See if the user asked for a particular help. */
	if ( *parameters != '\0' ) {
		while ( bc ) {
			if ( strcmp(bc->cmd, parameters) == 0 ) {
				cmdHelpShow(bc, strlen(bc->cmd));
				return;
			}
			bc = bc->pnext;
		}
		printf_0("no help for command '%s' found, try just 'help'\n", parameters);
		return;
	}

	/*
	 * Find the largest command size.
	 */

	while ( bc ) {
		len = strlen(bc->cmd);
		if ( len > maxCmdLen ) {
			maxCmdLen = len;
		}
		bc = bc->pnext;
	}

	maxCmdLen++;
	bc = pcmds;

	/*
	 * Now some nice formatting for the help.
	 */
	
	printf_0("-\n  ");
	while ( bc ) {
		printf_0("%-8s ", bc->cmd);
		i++;
		if( i == 8 ) {
			printf_0("\n  ");
			i = 0;
		}
		
		if(bc->pnext->cmd[0] != bc->cmd[0]){
			if(i == 0)	printf_0("\r-\n  ");
			else{
				printf_0("\n-\n  ");
				i = 0;
			}
		}
		
		bc = bc->pnext;
	}
	
	if ( i != 0 ) {
		printf_0("\n");
	}
}

/**************************************************************************
 *                                                                        *
 *  Function Name:                                                        *
 *                                                                        *
 *  Purposes:                                                             *
 *                                                                        *
 *  Descriptions:                                                         *
 *                                                                        *
 *  Arguments:                                                            *
 *                                                                        *
 *  Returns: None                                                         *
 *                                                                        *
 *  See also:                                                             *
 *                                                                        *
 **************************************************************************/
static void
cmdListDisp(
	UINT8 *parameters
)
{
	cmd_t *bc = pcmds;
	UINT32 i = 0;

	/*
	 * Now some nice formatting for the help.
	 */
	
	printf_0("-\n  ");
	while ( bc ) {
		printf_0("%-8s ", bc->cmd);
		i++;
		if( i == 8 ) {
			printf_0("\n  ");

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91蜜桃在线观看| 成人免费视频视频在线观看免费| 久久嫩草精品久久久精品| 国产成人精品影院| 精品裸体舞一区二区三区| 国产一区二区三区在线观看免费| 国产视频视频一区| 欧美视频一区二区三区| 精品一区二区三区影院在线午夜| 国产精品短视频| 欧美日韩国产在线观看| 国产成人精品三级麻豆| 亚洲成人第一页| 国产网站一区二区| 在线一区二区视频| 国内精品自线一区二区三区视频| 亚洲久本草在线中文字幕| 日韩精品一区二区三区四区 | 性感美女久久精品| 精品国产一区二区三区忘忧草| 91丨九色丨蝌蚪丨老版| 日本亚洲一区二区| 国产精品久久久久久久久果冻传媒 | 久久国产麻豆精品| 亚洲自拍欧美精品| 亚洲六月丁香色婷婷综合久久 | www.亚洲国产| 国产成人在线看| 久久国产日韩欧美精品| 美日韩一级片在线观看| 日韩在线一区二区三区| 午夜精品久久久久影视| 亚洲最大的成人av| 亚洲欧美一区二区不卡| 国产精品伦理在线| 日本一区二区视频在线| 久久久久国产成人精品亚洲午夜| 337p日本欧洲亚洲大胆精品| 国产精品五月天| 91丨porny丨首页| 国内国产精品久久| 狠狠色狠狠色综合系列| 激情图区综合网| 国内精品久久久久影院一蜜桃| 日日噜噜夜夜狠狠视频欧美人| 午夜精品久久一牛影视| 午夜精品久久久久久久久| 视频一区在线视频| 三级久久三级久久| 国产精品视频一二| 亚洲青青青在线视频| 亚洲一区二区三区影院| 日韩中文字幕不卡| 国产在线精品视频| 不卡一区二区三区四区| 99久久久国产精品| 欧美亚洲国产一区在线观看网站| 欧美亚洲愉拍一区二区| 欧美一区二区大片| 精品国精品自拍自在线| 国产日韩高清在线| 亚洲欧美日韩国产成人精品影院 | 欧美主播一区二区三区| 欧美卡1卡2卡| 久久亚洲欧美国产精品乐播| 国产精品久久久久久久第一福利 | 不卡视频在线观看| 色综合久久久久久久| 成人免费视频app| 99久久国产免费看| 成人免费视频一区二区| 欧美色成人综合| 精品国产1区二区| 亚洲天天做日日做天天谢日日欢| 香蕉乱码成人久久天堂爱免费| 韩国av一区二区三区四区| 91丨porny丨蝌蚪视频| 制服丝袜成人动漫| 中文字幕av一区 二区| 亚洲精品一区二区三区精华液| 国产区在线观看成人精品| 综合自拍亚洲综合图不卡区| 亚洲欧美韩国综合色| 丝袜亚洲另类丝袜在线| 久久国产精品免费| 国产一区二区免费看| 成熟亚洲日本毛茸茸凸凹| zzijzzij亚洲日本少妇熟睡| 欧美日韩综合不卡| 国产亚洲成av人在线观看导航| 一区二区三区精品久久久| 狠狠色丁香久久婷婷综| 97精品久久久久中文字幕 | 高清不卡一区二区| 色哟哟欧美精品| 91黄色免费看| 日韩欧美一二三区| 成人欧美一区二区三区1314| 精品系列免费在线观看| 欧美专区日韩专区| 国产精品麻豆一区二区| 激情图片小说一区| 欧美日韩国产在线观看| 亚洲视频1区2区| 国产麻豆精品久久一二三| 欧美日韩国产首页| 亚洲精品va在线观看| 成人免费毛片片v| 精品国产91洋老外米糕| 日日摸夜夜添夜夜添精品视频 | 中文欧美字幕免费| 久久国产乱子精品免费女| 欧美日韩国产大片| 亚洲精品美腿丝袜| 成人免费视频一区二区| 久久精品视频在线看| 久久精品99国产精品日本| 欧美男人的天堂一二区| 亚洲精品乱码久久久久久| 丁香一区二区三区| 久久精品无码一区二区三区| 美女在线视频一区| 337p亚洲精品色噜噜噜| 午夜精品福利久久久| 欧美午夜精品久久久久久超碰| 日韩理论片在线| 国产精品一区二区三区乱码| 精品久久久久久久人人人人传媒 | 成人免费高清在线观看| 国产欧美精品国产国产专区| 国内精品国产成人国产三级粉色| 日韩精品中文字幕一区二区三区| 日本不卡中文字幕| 欧美一区二区女人| 视频一区二区不卡| 3751色影院一区二区三区| 日本成人在线视频网站| 69堂成人精品免费视频| 日本伊人精品一区二区三区观看方式| 91精品国产综合久久精品图片| 亚洲福利视频导航| 欧美一区二区大片| 捆绑变态av一区二区三区| 日韩欧美国产高清| 国产乱国产乱300精品| 久久免费的精品国产v∧| 国产成人自拍在线| 亚洲人被黑人高潮完整版| 一本到三区不卡视频| 亚洲免费在线电影| 欧美色图免费看| 亚洲国产一区二区视频| 欧美一级片在线观看| 精品一区二区三区不卡| 国产无人区一区二区三区| aaa欧美大片| 亚洲二区在线视频| 91精品午夜视频| 黑人巨大精品欧美黑白配亚洲| 欧美激情一区二区三区四区| 91天堂素人约啪| 日韩在线一区二区三区| 26uuu国产在线精品一区二区| 国产不卡一区视频| 尤物av一区二区| 日韩一区二区影院| 成人丝袜18视频在线观看| 亚洲一区成人在线| 欧美变态口味重另类| 成人18视频日本| 日韩精品国产欧美| 中文天堂在线一区| 欧美三级视频在线观看| 蜜臀av性久久久久蜜臀aⅴ | 欧美激情一区三区| 欧美日韩一二三| 国产成人自拍网| 亚洲va欧美va人人爽| 国产亚洲一二三区| 在线亚洲精品福利网址导航| 精品一区二区免费在线观看| 亚洲精品午夜久久久| 日韩一区二区中文字幕| 91香蕉视频mp4| 久久精品国产精品青草| 亚洲天堂免费看| 久久网站热最新地址| 在线观看日韩毛片| 偷窥国产亚洲免费视频| 欧美一激情一区二区三区| 亚洲精品少妇30p| 国产专区欧美精品| 欧美xxx久久| 一区二区免费看| 日本午夜一本久久久综合| www.日韩av| www一区二区| 久久se精品一区精品二区| 91猫先生在线| 色综合中文字幕|