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

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

?? cmdpfd.c

?? Documentation and source code Copyright (C) 1985 by Mark E. Mallett permission is granted to distr
?? C
字號:
/*	cmdpfd.c	COMND module; Date/time function parse.

	Copyright (C) 1985 Mark E. Mallett

	Permission is hereby granted to distribute this file indiscriminately.

	This file contains the code for the date/time parsing function.

Edit history

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

	Routines included:

		CFPdat		Parse date and/or time

*/


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


typedef					/* Structure for "special" dates */
  struct {
    int		_mo;			/* Month (1 - 12) */
    int		_da;			/* Day of month (1 - 31) */
  } SMD;


/* External routines */


/* External data */

extern	int	CMDbel;			/* Beep request flag */

/* Internal (public) routines */



/* Internal (public) data */


/* Local (static) data */

	/* Tables for date and time parsing.  */

static	char	*Mnmtbl[] = {		/* Month names */
			"January",	"February",	"March",
			"April",	"May",		"June",
			"July",		"August",	"September",
			"October",	"November",	"December",
			NULL};

static	char	*Snmtbl[] = {		/* Table of special names */
			"April-Fools-Day",
			"Christmas",
			"Erics-Birthday",
			"Fourth-of-July",
			"Halloween",
			"New-Years-Day",
			"Valentines-day",
			NULL
			    };

static	SMD	Sndtbl[] = {		/* month/day for special names */
			4, 1,		/* April fools */
			12, 25,		/* Christmas */
			8, 19,		/* Eric's birthday */
			7, 4,		/* Fourth of July */
			10, 31,		/* Halloween */
			1, 1,		/* New Year's Day */
			2, 14,		/* Valentine's day */
			0, 0};		/*  end */


static	char	*Dowtbl[] = {		/* Day-of-week table */
			"Sunday", "Monday", "Tuesday", "Wednesday",
			"Thursday", "Friday", "Saturday", NULL
			    };


static	char	*Todtbl[] = {		/* Time-of-day table */
			"noon",
			NULL
			    };


static	CFB	Timcfb = {_CMNUM, _CFHPP|_CFSDH, 0, 10,
			"Time in the form hh:mm:ss", 0};
static	CFB	Todcfb = {_CMKEY, _CFHPP, &Timcfb, &Todtbl,
			"Time of day, ", 0};
static	CFB	Plscfb = {_CMTOK, _CFHPP|_CFSDH, 0, "+",
			  "+ for future offset from now", 0};
static	CFB	Mincfb = {_CMTOK, _CFHPP|_CFSDH, &Plscfb, "-",
			  "- for past offset from now", 0};
static	CFB	Adncfb = {_CMNUM, _CFHPP|_CFSDH, &Mincfb, 10,
			"Decimal month number", 0};
static	CFB	Dowcfb = {_CMKEY, _CFHPP, &Adncfb, &Dowtbl,
			"Day of week, ", 0};
static	CFB	Snmcfb = {_CMKEY, _CFHPP, &Dowcfb, &Snmtbl,
			"Special date, ", 0};
static	CFB	Mnmcfb = {_CMKEY, _CFHPP, &Snmcfb, &Mnmtbl,
			"Month name, ", 0};

static	CFB	Clncfb = {_CMTOK, 0, 0, ":", 0, 0};
static	CFB	Cmycfb = {_CMTOK, _CFHPP|_CFSDH, 0, ",",
			"Comma and year", 0};
static	CFB	Domcfb = {_CMNUM, _CFHPP|_CFSDH, 0, 10, "Day of month", 0};
static	CFB	Yrcfb =  {_CMNUM, _CFHPP|_CFSDH, 0, 10, "Year", 0};

/*

*//* CFPdat (CSBptr, CFBptr, ccptr)

	Function parse for type=_CMDAT, date and/or time

This function parses a date and/or time.  It does this by calling
COMND recursively, with special date/time parsing function blocks.


Accepts :

	CSBptr		Address of command state block
	CFBptr		Address of command function block
	ccptr		Address of CC table (N/A here)


Returns :

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

*/

CFPdat (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	i,j,t;			/* Scratch */
IND	int	id,it;			/* Internal date and time */
IND	int	*rslptr;		/* Result pointer */

rslptr = CSBptr -> CSB_ABF;		/* Get pointer to result buffer */
curdtm (&id, &it);			/* Get today's date/time */
if (CFBptr -> CFB_FLG & _CFDTD)		/* If date wanted */
    {
    i = CFPdtd (CSBptr, CFBptr);	/* Try for date */
    if (!CFBptr -> CFB_FLG & _CFDTT)	/* If time not wanted */
	return (i);			/* Just return the result */

    switch (i)				/* Go by parse result of date */
	{
	case _CPABT:			/* If abort... */
	    return (_CPABT);		/*  return abort code */

	case _CPSUCC:			/* Success(!) */
	    id = rslptr[0];		/* Remember date */
	    j = COMND (CSBptr, &Clncfb); /* Try for colon for time */
	    if (j == _CRNOP)		/* If not parsed */
		{
		rslptr[0] = id;		/* Put date back */
		rslptr[1] = it;		/* Use current time */
		return (_CPSUCC);	/* Return ok */
		}
	    else if (j != _CROK)	/* If not OK */
		return (_CPABT);	/*  stop now */
	    break;			/* Continue with getting time! */

	case _CPAGN:			/* Try again later.. */
	case _CPGVH:			/* Gave help */
	case _CPNOP:			/* Could not parse.. */
	    rslptr[0] = id;		/* Store current date */
	    break;			/* Quit and continue */

	}
    }

/* Try for time, if wanted */

if (!(CFBptr -> CFB_FLG & _CFDTT))	/* If time not wanted */
    return (i);				/*  return result of date parse */

id = rslptr[0];				/* Remember date */
t = CFPdtt(CSBptr, CFBptr);		/* Try to parse time */
rslptr[0] = id;				/* Pass back date, if any */

if (!(CFBptr -> CFB_FLG & _CFDTD))	/* If we did not parse a date */
    return (t);				/*  return result of time attempt. */

if (i == _CPGVH)			/* If date gave help */
    return (_CPGVH);			/* then we HAVE to return that code */

return (t);				/* Otherwise return what time said. */
}
/*

*//* CFBdtd (CSBptr, CFBptr)

	Parse date portion of date/time

This function parses a date.  It does this by calling COMND
recursively.


Accepts :

	CSBptr		Address of command state block
	CFBptr		Address of command function block


Returns :

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

*/

CFPdtd (CSBptr, CFBptr)

CSB		*CSBptr;		/* Addr of command state block */
CFB		*CFBptr;		/* Addr of command function block */

{

IND	CFB	*CFBmat;		/* Matching CFB address */
IND	int	m,d,y,id,it;		/* Date values */
IND	int	*rslptr;		/* Result pointer */
IND	char	**kptr;			/* Keyword ptr ptr */
IND	int	i;			/* Scratch */
IND	int	prem;			/* Remembers parse point */

prem = CSBptr -> CSB_PRS;		/* Remember the current parse point */
rslptr = CSBptr -> CSB_ABF;		/* Point to result area */
i = COMNDr (CSBptr, &Mnmcfb, 1);	/* Try parsing the date. */

if ((i != _CPSUCC) && (i != _CPCPE))	/* If not successful parse */
    return (i);				/*  then return whatever it was */

CFBmat = CSBptr -> CSB_CFB;		/* Get addr of matching CFB */

if (CFBmat == &Plscfb)			/* Plus date/time */
    {
    fprintf (stderr, "Relative date/time not supported\n");
    return (_CPABT);
    }

else if (CFBmat == &Mincfb)		/* Minus date/time */
    {
    fprintf (stderr, "Relative date/time not supported\n");
    return (_CPABT);
    }

else if ((CFBmat == &Mnmcfb)  || (CFBmat == &Snmcfb))
					/* Month or special date in year */
    {
    kptr = (char **) (CSBptr -> CSB_RVL._ADR);
					 /* Get the table entry address */
    if (CFBmat == &Mnmcfb)
	{
	m = (kptr - &Mnmtbl[0]) +1;	/* Get month number */

    /* Get day of month */

	i = COMNDr (CSBptr, &Domcfb, 2); /* Try for day of month */
	if ((i != _CPSUCC) && (i != _CPCPE)) /* Check not success */
	    {
	    CSBptr -> CSB_PRS = prem;	/* Reset parse pointer */
	    return (i);			/*  return */
	    }
	d = CSBptr -> CSB_RVL._INT;	/* Get day of month */
	}
    else				/* Special... */
	{
	i = (kptr - &Snmtbl[0]);	/* Get index */
	m = Sndtbl[i]._mo;		/* Get month */
	d = Sndtbl[i]._da;		/*  and day */
	}

    i = COMNDr (CSBptr, &Cmycfb, 2);	/* Try for comma and year */
    if ((i != _CPSUCC) && (i != _CPCPE)) /* Check not success */
	{
	CSBptr -> CSB_PRS = prem;	/* Reset parse pointer */
	return (i);
	}
    i = COMNDr (CSBptr, &Yrcfb, 2);	/* Now try for year */
    if ((i != _CPSUCC) && (i != _CPCPE)) /* Check not success */
	{
	CSBptr -> CSB_PRS = prem;	/* Reset parse pointer */
	return (i);
	}

    y = CSBptr -> CSB_RVL._INT;		/* Get year */
    i = cvedid (rslptr, &it, m, d, y, 0, 0);
    if (i != 0)
	{
	fprintf (stderr, "Bad component in date: %d\n", i);
	fprintf (stderr, "Inputs were %d/%d/%d\n", m, d, y);
	return (_CPNOP);		/* Bad parse */
	}
    return (_CPSUCC);			/* Got it. */
    }

else
    return (_CPNOP);			/* Nope. */
}
/*

*//* CFBdtt (CSBptr, CFBptr)

	Parse time portion of date/time

This function parses a time.  It does this by calling COMND
recursively.


Accepts :

	CSBptr		Address of command state block
	CFBptr		Address of command function block


Returns :

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

*/

CFPdtt (CSBptr, CFBptr)

CSB		*CSBptr;		/* Addr of command state block */
CFB		*CFBptr;		/* Addr of command function block */

{

IND	int	i;			/* Scratch */

i = COMNDr (CSBptr, &Todcfb, 2);	/* Try parsing the time */
return (i);				/* Return now. */
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲色图欧美激情| 日本成人在线不卡视频| 午夜伦欧美伦电影理论片| 五月天丁香久久| 成人一区二区三区视频在线观看| 一本久久a久久精品亚洲| 日韩欧美国产综合| 亚洲激情图片一区| 成人一级片在线观看| 91精品国产一区二区三区| 亚洲桃色在线一区| 国产成a人亚洲| 91精品国产综合久久香蕉麻豆| 中文字幕乱码亚洲精品一区| 日韩av电影一区| 欧美性受xxxx| 中文字幕一区二区视频| 国产美女精品人人做人人爽| 欧美日韩国产一区| 亚洲激情中文1区| av亚洲产国偷v产偷v自拍| www国产成人免费观看视频 深夜成人网| 亚洲一区日韩精品中文字幕| 93久久精品日日躁夜夜躁欧美| 日韩免费看的电影| 视频一区二区国产| 欧美日韩一区不卡| 一区二区三区四区亚洲| 99久久精品99国产精品| 亚洲国产精品激情在线观看| 国产成人精品三级| xfplay精品久久| 韩国精品一区二区| 久久午夜老司机| 国产美女在线精品| 久久久久久久久久电影| 国产在线播放一区三区四| 久久婷婷一区二区三区| 国产精品一色哟哟哟| 久久久精品一品道一区| 高清久久久久久| 中文字幕一区二区三区在线不卡| 成人黄色小视频在线观看| 国产欧美精品一区| 成人国产在线观看| 亚洲精品日韩综合观看成人91| 一本色道久久综合亚洲精品按摩| 亚洲男人天堂一区| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 在线精品视频一区二区| 有码一区二区三区| 欧美久久一区二区| 久久精品国产99国产| 久久精品一区八戒影视| 成人激情小说乱人伦| 一区二区三区在线视频免费观看| 欧美日韩一本到| 99精品欧美一区| 亚洲精品你懂的| 91麻豆精品国产自产在线| 久久精品理论片| 国产精品麻豆欧美日韩ww| 91网站在线播放| 免费黄网站欧美| 国产三级精品三级在线专区| 97久久超碰国产精品电影| 亚瑟在线精品视频| 精品久久久久久久人人人人传媒| www.在线成人| 日本人妖一区二区| 国产欧美日韩精品一区| 欧美日韩亚洲丝袜制服| 国产一区美女在线| 樱花草国产18久久久久| 欧美电影免费观看完整版| aaa欧美大片| 秋霞午夜鲁丝一区二区老狼| 国产精品欧美久久久久一区二区| 欧美色大人视频| 国产精品1区二区.| 亚洲国产精品久久一线不卡| 国产亚洲1区2区3区| 欧美性xxxxxx少妇| 丁香激情综合五月| 免费在线视频一区| 亚洲私人影院在线观看| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 欧美怡红院视频| 国产剧情av麻豆香蕉精品| 亚洲国产精品久久人人爱| 日本一区二区高清| 日韩欧美一二三| 欧美性感一类影片在线播放| 成人av电影在线| 精油按摩中文字幕久久| 亚洲va欧美va人人爽午夜| 国产精品久久久久久久久免费相片 | 一区二区三区四区不卡视频| 久久久精品黄色| 欧美一卡二卡三卡四卡| 色噜噜狠狠一区二区三区果冻| 国产精品66部| 国产在线国偷精品免费看| 日本成人超碰在线观看| 亚洲第一主播视频| 亚洲欧美电影院| 日韩毛片一二三区| 国产精品沙发午睡系列990531| 欧美mv日韩mv国产网站| 欧美一区二区不卡视频| 欧美揉bbbbb揉bbbbb| 91看片淫黄大片一级在线观看| 成人一级视频在线观看| 成人精品视频一区二区三区尤物| 国产高清视频一区| 国产99久久精品| 丁香桃色午夜亚洲一区二区三区| 国产在线精品一区二区三区不卡| 久久精品免费观看| 丁香另类激情小说| 成人小视频免费在线观看| 国产99一区视频免费 | 久久久久久久综合色一本| 欧美xxxx老人做受| 日韩精品一区二区三区四区视频| 日韩精品最新网址| 欧美v亚洲v综合ⅴ国产v| 精品国产精品一区二区夜夜嗨| 欧美成人午夜电影| 精品国产91乱码一区二区三区| 久久久久久亚洲综合| 日本一区二区免费在线观看视频 | 日韩三级精品电影久久久| 日韩一区二区三区在线视频| 日韩欧美一区二区免费| 久久久久久久综合色一本| 中文字幕av免费专区久久| 日韩毛片视频在线看| 亚洲bt欧美bt精品777| 麻豆精品国产91久久久久久| 国产乱子伦视频一区二区三区| 成人av在线影院| 欧美日韩美少妇| 久久综合国产精品| ●精品国产综合乱码久久久久 | 蜜臀精品久久久久久蜜臀| 国产一区二区三区综合| 成人av网站在线观看免费| 色综合欧美在线| 91精品国产免费久久综合| 久久精子c满五个校花| 亚洲精品免费播放| 日本三级韩国三级欧美三级| 成人免费视频视频在线观看免费| 日本道色综合久久| 欧美不卡在线视频| 亚洲啪啪综合av一区二区三区| 青青青爽久久午夜综合久久午夜| 国产成人8x视频一区二区| 欧美视频一区二区在线观看| 久久久久高清精品| 性感美女极品91精品| 国产成人精品影院| 91精品啪在线观看国产60岁| 国产精品久久久久久福利一牛影视 | 国产一区二区三区黄视频| 91免费看`日韩一区二区| 精品美女一区二区| 亚洲精品国产精华液| 国产在线视频不卡二| 欧美精品久久久久久久多人混战 | 日韩色视频在线观看| 国产精品国产三级国产普通话三级 | 91精品国产全国免费观看| 亚洲欧美在线aaa| 国产一区视频网站| 欧美日韩小视频| 综合在线观看色| 国产黑丝在线一区二区三区| 91精品国产综合久久精品麻豆| 亚洲品质自拍视频| 国产成人综合精品三级| 日韩一区二区视频| 亚洲一区二区精品久久av| 91小视频免费看| 欧美韩国一区二区| 久久精品国产999大香线蕉| 欧美日韩国产免费一区二区 | 日韩电影在线观看网站| 日韩丝袜美女视频| 一区二区三区精品在线观看| av色综合久久天堂av综合| 国产欧美一二三区| 国产在线播精品第三| 日韩欧美久久久| 日韩精品一二三四| 欧美精品乱码久久久久久按摩| 一区二区三区中文在线观看| 91理论电影在线观看| 日韩美女精品在线|