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

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

?? cmdpf2.c

?? Documentation and source code Copyright (C) 1985 by Mark E. Mallett permission is granted to distr
?? C
字號:
/*	cmdpf2.c	COMND module; function parsing routines, set # 2

	Copyright (C) 1985 Mark E. Mallett

	Permission is hereby granted to distribute this file indiscriminately.

	This file contains parsing routines for various individual
function codes.

Edit history

When	Who	What
------	---	--------------------------------
84xxxx	MEM	Create file.

	Routines included:

		CFPnum		Number parsing
		CFPswi		Switch
		CFPtok		Parse an expected token
		CFPtxt		Parse text to end of line
		CFPuqs		Parse unquoted string

*/


#include "stdio.h"			/* Standard system defs */
#include "comnd.h"			/* COMND interface definitions */
#include "comndi.h"			/* COMND internal definitions */


/* External routines */


/* External data */

extern	int	CMDbel;			/* Beep request flag */

/* Internal (public) routines */



/* Internal (public) data */


/* Local (static) data */

static	char	*Numhlp[] = {		/* help texts for _CMNUM */
			"binary number",
			"number in base 3",
			"number in base 4",
			"number in base 5",
			"number in base 6",
			"number in base 7",
			"octal number",
			"number in base 9",
			"decimal number",
			"number in base 11",
			"number in base 12",
			"number in base 13",
			"number in base 14",
			"number in base 15",
			"hexadecimal number"
				};
/*

*//* CFPnum (CSBptr, CFBptr, ccptr)

	Function parse for type=_CMNUM, number.

This routine attempts a parse of a number thought to be next in the
command stream.  CFB_DAT of the command function block contains the
radix to use, if zero then 10 is assumed.

Accepts :

	CSBptr		Address of command state block
	CFBptr		Address of command function block
	ccptr		Address of CC table (where appropriate)


Returns :

	<value>		Parse status, _CPxxx as defined in comndi.h.

*/

CFPnum (CSBptr, CFBptr, ccptr)

CSB		*CSBptr;		/* Addr of command state block */
CFB		*CFBptr;		/* Addr of command function block */
WORD		*ccptr;			/* Addr of CC table */

{
IND	int	ec;			/* End char (action char, if any) */
IND	BYTE	c;			/* A character */
IND	int	cix;			/* Relative parse index */
IND	int	icix;			/* Initial relative parse index */
IND	int	base;			/* radix */
IND	int	val;			/* Value */
IND	int	sign;			/* Sign (-1, 0, 1) */

base = CFBptr -> CFB_DAT;		/* Get base */
if (base == 0)				/* If zero */
    base = 10;				/*  use decimal */
if ((base < 2) || (base > 16))		/* If invalid base */
    {
    CSBptr -> CSB_RCD = _CRBAS;		/* Invalid base */
    return (_CPABT);			/* Abort */
    }

/* Get the number. */

icix = cix = CMDspc (CSBptr);		/* Init command index */
val = 0;				/* Value is zero */
sign = 0;				/* No sign seen */

while (TRUE)				/* Collect... */
    {
    ec = CMDgcc (CSBptr, cix);		/* Get next character */
    if (sign == 0)			/* Check sign ? */
	{
	if (c == '-')
	    sign = -1;
	if (c == '+')
	    sign = 1;
	if (sign != 0)
	    {
	    cix++;
	    continue;
	    }
	}

    c = ec-'0';				/* Get binary equivalent */
    if (c > 9)				/* If it wasn't decimal */
	c = (toupper(ec)-'A')+10;	/*  use alpha set */
    if ((c < 0) || (c >= base))		/* If invalid digit */
	break;				/*  then be done */

    if (base == 2)			/* optimize for shifts */
	val <<= 1;
    else if (base == 4)
	val <<= 2;
    else if (base == 8)
	val <<= 3;
    else if (base == 16)
	val <<= 4;
    else
	val = val*base;
    val = val + c;			/* Add in new value */
    cix++;				/* Bump counter */
    }

/* Here on no more digits */

if (sign < 0)				/* If negative */
    val = -val;

CSBptr -> CSB_RVL._INT = val;		/* Stick it in there, in case */

switch (ec)				/* Dispatch on final char */
    {
    case _CCCMP:			/* Complete? */
	if (cix)			/* If anything */
	    {
	    CMDcpl (CSBptr, " ");	/*  add a space */
	    return (_CPCPE);
	    }
	CMDbel++;			/* Indicate our desire to beep */
	return (_CPAGN);		/* Might work.. */

    case _CCINC:			/* Incomplete? */
	return (_CPAGN);		/* Ok so far, try when you get more */

    case _CCHLP:			/* Help... */
	CMDhlp (CFBptr, Numhlp[base-2]);
	return (_CPGVH);		/* Gave help */

    default:				/* Anything else */
	if (cix > icix)			/* If parsed anything */
	    {
	    CMDcpt (CSBptr, cix);	/* Parse is ok */
	    return (_CPSUCC);		/* Return it. */
	    }
	return (_CPNOP);		/* Otherwise not */
    }
}
/*

*//* CFPswi (CSBptr, CFBptr, ccptr)

	Function parse for type=_CMSWI, switch.

This routine performs a parse for a switch next in the command
line.  This is like KWD, except that a slash must come first.

Accepts :

	CSBptr		Address of command state block
	CFBptr		Address of command function block
	ccptr		Address of CC table (where appropriate)


Returns :

	<value>		Parse status, _CPxxx as defined in comndi.h.

*/

CFPswi (CSBptr, CFBptr, ccptr)

CSB		*CSBptr;		/* Addr of command state block */
CFB		*CFBptr;		/* Addr of command function block */
WORD		*ccptr;			/* Addr of CC table */

{
CSBptr -> CSB_RCD = _CRIFC;		/* Set invalid function (NYI) */
return (_CPABT);			/* Abort now. */
}
/*

*//* CFPtok (CSBptr, CFBptr, ccptr)

	Function parse for type=_CMTOK, token

This function performs an exact match on an expected token

Accepts :

	CSBptr		Address of command state block
	CFBptr		Address of command function block
	ccptr		Address of CC table (where appropriate)


Returns :

	<value>		Parse status, _CPxxx as defined in comndi.h.

*/

CFPtok (CSBptr, CFBptr, ccptr)

CSB		*CSBptr;		/* Addr of command state block */
CFB		*CFBptr;		/* Addr of command function block */
WORD		*ccptr;			/* Addr of CC table */

{
IND	int	cix;			/* Command index */
IND	int	c,c1;			/* Chars */
IND	char	*tptr;			/* Token pointer (ptr to token) */


tptr = CFBptr -> CFB_DAT;		/* Get address of the token */
cix = CMDspc(CSBptr);			/* Init parse index */
while (TRUE)				/* Look at chars */
    {
    if ((c = *tptr++) == NUL)		/* If end of token passed */
	{
	CMDcpt (CSBptr, cix);		/* Checkpoint to here! */
	return (_CPSUCC);		/* We matched */
	}

    c = toupper(c);			/* Ignore case */
    c1 = CMDgcc (CSBptr, cix);		/* Get next char from cmd */
    if (c != toupper(c1))		/* If not the same */
	break;				/*  exit the loop */
    cix++;				/* Fine, skip it */
    }

/* Here on mismatch... check for specials */

switch (c1)
    {
    case _CCCMP:			/* Complete.. */
    case _CCINC:			/* or incomplete */
	return (_CPAGN);		/*  try again */

    case _CCHLP:			/* Help ? */
	if (CMDhlp (CFBptr, "token: "))
	    CMDpzs (CFBptr -> CFB_DAT);
	CMDfob();
	return (_CPGVH);		/* Say we gave help */

    default:				/* Anything else */
	return (_CPNOP);		/* No parse */
    }
}
/*

*//* CFPtxt (CSBptr, CFBptr, ccptr)

	Function parse for type=_CMTXT, text

This function parses text to the end of the line.

Accepts :

	CSBptr		Address of command state block
	CFBptr		Address of command function block
	ccptr		Address of CC table (where appropriate)


Returns :

	<value>		Parse status, _CPxxx as defined in comndi.h.

*/

CFPtxt (CSBptr, CFBptr, ccptr)

CSB		*CSBptr;		/* Addr of command state block */
CFB		*CFBptr;		/* Addr of command function block */
WORD		*ccptr;			/* Addr of CC table */

{
IND	int	cix;			/* Command index */
IND	int	c;			/* Character */
IND	char	*aptr;			/* Atom buffer pointer */

cix = 0;				/* Init parse index */
aptr = CSBptr -> CSB_ABF;		/* Point to atom buffer */

while (TRUE)				/* Get chars */
    {
    c = CMDgcc (CSBptr, cix);		/* Get next char */
    switch (c)				/* Process specials */
	{
	case _CCCMP:			/* Escape ? */
	    CMDbel++;			/* We'd beep */

	case _CCINC:			/* Incomplete */
	    return (_CPAGN);		/*  try again */

	case _CCHLP:			/* Help ? */
	    CMDhlp (CFBptr, "text, end with carriage return");
	    return (_CPGVH);		/* Gave help */

	case _CCEND:			/* End of line */
	    *aptr = NUL;		/* End the string */
	    CMDcpt (CSBptr, cix);	/* Checkpoint to here */
	    return (_CPSUCC);		/* Return success */

	default:			/* Other */
	    break;			/*  loop */
	}

    *aptr++ = c;			/* Store the char */
    cix++;				/* Bump char index */
    }
}
/*

*//* CFPuqs (CSBptr, CFBptr, ccptr)

	Function parse for type=_CMUQS, unquoted string

This function parses an unquoted string; a string delimited by
spaces or commas only.


Accepts :

	CSBptr		Address of command state block
	CFBptr		Address of command function block
	ccptr		Address of CC table (where appropriate)


Returns :

	<value>		Parse status, _CPxxx as defined in comndi.h.

*/

CFPuqs (CSBptr, CFBptr, ccptr)

CSB		*CSBptr;		/* Addr of command state block */
CFB		*CFBptr;		/* Addr of command function block */
WORD		*ccptr;			/* Addr of CC table */

{
IND	int	cix;			/* Command index */
IND	int	ec;			/* Character */
IND	int	aptr;			/* Atom buffer pointer */

cix = CMDcab (CSBptr, 			/* Collect atom buffer */
		CSBptr -> CSB_ABF,	/*  where to put it */
		CSBptr -> CSB_ASZ,	/*  how big it is */
		ccptr,			/* Char table */
		&ec,			/* What the end char is */
		CMDspc(CSBptr));	/* Initial parse index */

switch (ec)				/* Process according to final */
    {
    case _CCINV:			/* Invalid delimiter */
	return (_CPNOP);		/* No Parse */

    case _CCCMP:			/* Escape ? */
	CMDcpl (CSBptr, " ");		/* Add a space */
	return (_CPCPE);		/* Flag completed with escape */

    case _CCINC:			/* Incomplete */
	return (_CPAGN);		/*  try again */

    case _CCHLP:			/* Help ? */
	CMDhlp (CFBptr, "unquoted string");
	return (_CPGVH);		/* Gave help */

    default:				/* Completed atom */
	CMDcpt (CSBptr, cix);		/* Checkpoint to here */
	return (_CPSUCC);		/* Return success */
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产91综合一区在线观看| 亚洲一区二区三区四区的| 国产在线乱码一区二区三区| 日韩精品一区二区三区中文不卡| 美女一区二区三区| 国产亚洲欧美激情| 成人午夜精品在线| 色呦呦国产精品| 午夜精品一区在线观看| 日韩va亚洲va欧美va久久| 狠狠色丁香久久婷婷综合丁香| 成人免费不卡视频| 国产精品久久影院| 日本午夜一本久久久综合| 欧美精品色一区二区三区| 久久久久国产精品人| 成人动漫中文字幕| 国产精品久久久久久亚洲毛片 | 天堂午夜影视日韩欧美一区二区| 欧美日本不卡视频| 成人小视频在线| 日韩一区国产二区欧美三区| 国产不卡在线一区| 亚洲主播在线观看| 三级精品在线观看| 国产精品88888| 亚洲欧美中日韩| 久久综合色之久久综合| 欧美r级电影在线观看| 国产精品资源站在线| 97久久超碰精品国产| 欧美日韩国产高清一区二区三区 | 99精品视频中文字幕| 欧美女孩性生活视频| 精品国产青草久久久久福利| 在线观看免费视频综合| 亚洲专区一二三| 日韩精品自拍偷拍| 国产精品女主播在线观看| 欧美一级日韩不卡播放免费| 国内外成人在线| 亚洲激情av在线| 日本三级韩国三级欧美三级| 一区在线观看视频| 日韩激情av在线| 国产精品久久久一本精品| 欧美精品三级在线观看| 精品国产露脸精彩对白 | 色综合久久中文字幕| 一区二区三区欧美视频| 97aⅴ精品视频一二三区| 6080国产精品一区二区| 成人午夜免费视频| 狠狠色丁香久久婷婷综| 国产精品福利av| 婷婷成人激情在线网| 中文字幕一区二区日韩精品绯色| 精品少妇一区二区三区日产乱码 | 91丨九色丨蝌蚪丨老版| 91精品在线免费| 成人高清免费在线播放| 欧美高清dvd| 综合激情成人伊人| 亚洲综合视频在线观看| 日本午夜精品视频在线观看| 国产精品久久午夜| 精品国产1区二区| 国产精品乱子久久久久| 欧美日韩在线播| 91精品国产综合久久久久久久久久| 91丝袜美腿高跟国产极品老师| 成人丝袜视频网| 国产福利一区二区三区视频在线| 久久国产免费看| 老鸭窝一区二区久久精品| 日韩中文字幕麻豆| 亚洲福利一二三区| 午夜日韩在线观看| 日日摸夜夜添夜夜添精品视频| 亚洲丰满少妇videoshd| 亚洲一级二级在线| 亚洲第一搞黄网站| 亚洲成人资源网| 午夜精品久久久久久久久 | 一区二区三区在线观看国产| 亚洲少妇屁股交4| 亚洲激情图片qvod| 亚洲电影你懂得| 日本一不卡视频| 玖玖九九国产精品| 国内成人精品2018免费看| 国内精品伊人久久久久av影院 | 91在线观看高清| 91丨porny丨最新| 在线视频欧美区| 欧美日韩在线一区二区| 欧美一级黄色片| www国产精品av| 中文在线免费一区三区高中清不卡| 国产精品美女一区二区| 亚洲人成网站影音先锋播放| 亚洲一二三区在线观看| 日韩成人午夜精品| 国产乱色国产精品免费视频| 99久久伊人精品| 欧美日韩激情一区| 精品福利在线导航| **欧美大码日韩| 日韩电影免费一区| 国产成人av电影免费在线观看| 成人h动漫精品一区二区| 欧美羞羞免费网站| wwww国产精品欧美| 一区二区三区在线高清| 麻豆91精品视频| av色综合久久天堂av综合| 欧美色图一区二区三区| 久久午夜电影网| 亚洲精品日韩一| 激情综合网激情| 色悠久久久久综合欧美99| 精品日韩一区二区三区免费视频| 中国色在线观看另类| 亚洲成人福利片| 不卡一区在线观看| 91精品国产综合久久精品| 国产精品久久一卡二卡| 男男gaygay亚洲| 97精品久久久久中文字幕| 日韩欧美另类在线| 一区二区三区欧美日韩| 国产伦精品一区二区三区免费迷| 在线观看国产日韩| 国产亚洲女人久久久久毛片| 婷婷成人综合网| caoporm超碰国产精品| 精品欧美乱码久久久久久1区2区 | 精品电影一区二区三区| 亚洲综合偷拍欧美一区色| 夫妻av一区二区| 日韩精品一区二区在线| 一区二区不卡在线视频 午夜欧美不卡在 | 久久九九久精品国产免费直播| 亚洲午夜电影在线| 成人av电影免费在线播放| 精品国产亚洲在线| 日一区二区三区| 欧美偷拍一区二区| 18成人在线视频| 粉嫩绯色av一区二区在线观看| 欧美一区二区三区白人| 亚洲高清一区二区三区| 日本高清成人免费播放| 亚洲国产精品ⅴa在线观看| 久久国产免费看| 欧美一卡二卡三卡| 日韩精品国产欧美| 欧美日韩一区二区在线观看| 一区二区三区精密机械公司| aaa亚洲精品| 中文字幕av资源一区| 国产高清一区日本| 国产午夜精品久久久久久免费视 | 精品国产伦一区二区三区观看体验| 亚洲国产综合人成综合网站| 91麻豆国产自产在线观看| 亚洲同性gay激情无套| www.在线成人| ㊣最新国产の精品bt伙计久久| 成人永久免费视频| 欧美激情综合五月色丁香小说| 国产美女一区二区| 欧美不卡激情三级在线观看| 蜜臀av在线播放一区二区三区| 欧美一级精品在线| 国内外成人在线| 久久网这里都是精品| 国产成人免费9x9x人网站视频| 国产亚洲一二三区| 成人午夜免费视频| 亚洲欧美一区二区久久| 日本高清无吗v一区| 亚洲成人激情自拍| 日韩欧美激情在线| 国产一区二区三区| 国产精品网站在线| 一本一本大道香蕉久在线精品| 一区二区在线观看不卡| 欧美色窝79yyyycom| 免费的国产精品| 国产日韩欧美一区二区三区综合| 国产东北露脸精品视频| 亚洲欧洲国产专区| 欧美最猛黑人xxxxx猛交| 三级一区在线视频先锋 | 国产一区二区在线视频| 中国色在线观看另类| 欧美午夜在线一二页| 美女视频黄a大片欧美| 国产欧美日韩激情|