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

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

?? asp.c

?? 嵌入式Linux系統用的web server,開源代碼,非常好用
?? C
字號:
/*
 * asp.c -- Active Server Page Support
 *
 * Copyright (c) GoAhead Software Inc., 1995-2000. All Rights Reserved.
 *
 * See the file "license.txt" for usage and redistribution license requirements
 *
 * $Id: asp.c,v 1.3 2002/10/24 14:44:50 bporter Exp $
 */

/******************************** Description *********************************/

/*
 *	The ASP module processes ASP pages and executes embedded scripts. It 
 *	support an open scripting architecture with in-built support for 
 *	Ejscript(TM).
 */

/********************************* Includes ***********************************/

#include	"wsIntrn.h"

/********************************** Locals ************************************/

static sym_fd_t	websAspFunctions = -1;	/* Symbol table of functions */
static int		aspOpenCount = 0;		/* count of apps using this module */

/***************************** Forward Declarations ***************************/

static char_t	*strtokcmp(char_t *s1, char_t *s2);
static char_t	*skipWhite(char_t *s);

/************************************* Code ***********************************/
/*
 *	Create script spaces and commands
 */

int websAspOpen()
{
	if (++aspOpenCount == 1) {
/*
 *	Create the table for ASP functions
 */
		websAspFunctions = symOpen(WEBS_SYM_INIT * 2);

/*
 *	Create standard ASP commands
 */
		websAspDefine(T("write"), websAspWrite);
	}
	return 0;
}

/************************************* Code ***********************************/
/*
 *	Close Asp symbol table.
 */

void websAspClose()
{
	if (--aspOpenCount <= 0) {
		if (websAspFunctions != -1) {
			symClose(websAspFunctions);
			websAspFunctions = -1;
		}
	}
}

/******************************************************************************/
/*
 *	Process ASP requests and expand all scripting commands. We read the
 *	entire ASP page into memory and then process. If you have really big 
 *	documents, it is better to make them plain HTML files rather than ASPs.
 */

int websAspRequest(webs_t wp, char_t *lpath)
{
	websStatType	sbuf;
	char			*rbuf;
	char_t			*token, *lang, *result, *path, *ep, *cp, *buf, *nextp;
	char_t			*last;
	int				rc, engine, len, ejid;

	a_assert(websValid(wp));
	a_assert(lpath && *lpath);

	rc = -1;
	buf = NULL;
	rbuf = NULL;
	engine = EMF_SCRIPT_EJSCRIPT;
	wp->flags |= WEBS_HEADER_DONE;
	path = websGetRequestPath(wp);

/*
 *	Create Ejscript instance in case it is needed
 */
	ejid = ejOpenEngine(wp->cgiVars, websAspFunctions);
	if (ejid < 0) {
		websError(wp, 200, T("Can't create Ejscript engine"));
		goto done;
	}
	ejSetUserHandle(ejid, (int) wp);

	if (websPageStat(wp, lpath, path, &sbuf) < 0) {
		websError(wp, 200, T("Can't stat %s"), lpath);
		goto done;
	}

/*
 *	Create a buffer to hold the ASP file in-memory
 */
	len = sbuf.size * sizeof(char);
	if ((rbuf = balloc(B_L, len + 1)) == NULL) {
		websError(wp, 200, T("Can't get memory"));
		goto done;
	}
	rbuf[len] = '\0';

	if (websPageReadData(wp, rbuf, len) != len) {
		websError(wp, 200, T("Cant read %s"), lpath);
		goto done;
	}
	websPageClose(wp);

/*
 *	Convert to UNICODE if necessary.
 */
	if ((buf = ballocAscToUni(rbuf, len)) == NULL) {
		websError(wp, 200, T("Can't get memory"));
		goto done;
	}

/*
 *	Scan for the next "<%"
 */
	last = buf;
	rc = 0;
	while (rc == 0 && *last && ((nextp = gstrstr(last, T("<%"))) != NULL)) {
		websWriteBlock(wp, last, (nextp - last));
		nextp = skipWhite(nextp + 2);

/*
 *		Decode the language
 */
		token = T("language");

		if ((lang = strtokcmp(nextp, token)) != NULL) {
			if ((cp = strtokcmp(lang, T("=javascript"))) != NULL) {
				engine = EMF_SCRIPT_EJSCRIPT;
			} else {
				cp = nextp;
			}
			nextp = cp;
		}

/*
 *		Find tailing bracket and then evaluate the script
 */
		if ((ep = gstrstr(nextp, T("%>"))) != NULL) {

			*ep = '\0';
			last = ep + 2;
			nextp = skipWhite(nextp);
/*
 *			Handle backquoted newlines
 */
			for (cp = nextp; *cp; ) {
				if (*cp == '\\' && (cp[1] == '\r' || cp[1] == '\n')) {
					*cp++ = ' ';
					while (*cp == '\r' || *cp == '\n') {
						*cp++ = ' ';
					}
				} else {
					cp++;
				}
			}

/*
 *			Now call the relevant script engine. Output is done directly
 *			by the ASP script procedure by calling websWrite()
 */
			if (*nextp) {
				result = NULL;
				if (engine == EMF_SCRIPT_EJSCRIPT) {
					rc = scriptEval(engine, nextp, &result, ejid);
				} else {
					rc = scriptEval(engine, nextp, &result, (int) wp);
				}
				if (rc < 0) {
/*
 *					On an error, discard all output accumulated so far
 *					and store the error in the result buffer. Be careful if the
 *					user has called websError() already.
 */
					if (websValid(wp)) {
						if (result) {
							websWrite(wp, T("<h2><b>ASP Error: %s</b></h2>\n"), 
								result);
							websWrite(wp, T("<pre>%s</pre>"), nextp);
							bfree(B_L, result);
						} else {
							websWrite(wp, T("<h2><b>ASP Error</b></h2>\n%s\n"),
								nextp);
						}
						websWrite(wp, T("</body></html>\n"));
						rc = 0;
					}
					goto done;
				}
			}

		} else {
			websError(wp, 200, T("Unterminated script in %s: \n"), lpath);
			rc = -1;
			goto done;
		}
	}
/*
 *	Output any trailing HTML page text
 */
	if (last && *last && rc == 0) {
		websWriteBlock(wp, last, gstrlen(last));
	}
	rc = 0;

/*
 *	Common exit and cleanup
 */
done:
	if (websValid(wp)) {
		websPageClose(wp);
		if (ejid >= 0) {
			ejCloseEngine(ejid);
		}
	}
	bfreeSafe(B_L, buf);
	bfreeSafe(B_L, rbuf);
	return rc;
}

/******************************************************************************/
/*
 *	Define an ASP Ejscript function. Bind an ASP name to a C procedure.
 */

int websAspDefine(char_t *name, 
	int (*fn)(int ejid, webs_t wp, int argc, char_t **argv))
{
	return ejSetGlobalFunctionDirect(websAspFunctions, name, 
		(int (*)(int, void*, int, char_t**)) fn);
}

/******************************************************************************/
/*
 *	Asp write command. This implemements <% write("text"); %> command
 */

int websAspWrite(int ejid, webs_t wp, int argc, char_t **argv)
{
	int		i;

	a_assert(websValid(wp));
	
	for (i = 0; i < argc; ) {
		a_assert(argv);
		if (websWriteBlock(wp, argv[i], gstrlen(argv[i])) < 0) {
			return -1;
		}
		if (++i < argc) {
			if (websWriteBlock(wp, T(" "), 2) < 0) {
				return -1;
			}
		}
	}
	return 0;
}

/******************************************************************************/
/*
 *	strtokcmp -- Find s2 in s1. We skip leading white space in s1.
 *	Return a pointer to the location in s1 after s2 ends.
 */

static char_t *strtokcmp(char_t *s1, char_t *s2)
{
	int		len;

	s1 = skipWhite(s1);
	len = gstrlen(s2);
	for (len = gstrlen(s2); len > 0 && (tolower(*s1) == tolower(*s2)); len--) {
		if (*s2 == '\0') {
			return s1;
		}
		s1++;
		s2++;
	}
	if (len == 0) {
		return s1;
	}
	return NULL;
}

/******************************************************************************/
/*
 *	Skip white space
 */

static char_t *skipWhite(char_t *s) 
{
	a_assert(s);

	if (s == NULL) {
		return s;
	}
	while (*s && gisspace(*s)) {
		s++;
	}
	return s;
}

/******************************************************************************/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩黄色免费电影| 久久99热99| 日韩伦理免费电影| 国产精品全国免费观看高清| 国产欧美精品在线观看| 久久精品日产第一区二区三区高清版| 精品国产精品网麻豆系列| xfplay精品久久| 国产喂奶挤奶一区二区三区| 国产三区在线成人av| 国产免费久久精品| 亚洲欧美综合在线精品| 亚洲一区精品在线| 日韩av不卡一区二区| 另类小说视频一区二区| 国产成人精品亚洲777人妖| 成人永久看片免费视频天堂| 99精品久久免费看蜜臀剧情介绍| 欧美在线视频日韩| 91精品国产欧美一区二区成人| 精品国产99国产精品| 欧美韩国一区二区| 亚州成人在线电影| 精品一区二区久久| av成人老司机| 欧美日韩一区二区电影| 久久精品视频免费| 亚洲国产一二三| 国产成人综合网| 欧美日韩免费在线视频| 久久一区二区三区四区| 综合久久久久综合| 免费美女久久99| 成人性色生活片| 日韩一区二区免费在线电影| 久久精品欧美一区二区三区不卡| 最新不卡av在线| 男人的j进女人的j一区| 成人小视频免费观看| 3atv在线一区二区三区| 国产精品护士白丝一区av| 日韩va欧美va亚洲va久久| av电影一区二区| 精品成人在线观看| 一区二区免费在线播放| 国产剧情一区在线| 91精品国产一区二区三区蜜臀| 国产精品久久777777| 国产一本一道久久香蕉| 欧美视频在线一区二区三区| 国产欧美日产一区| 久草精品在线观看| 日韩一区二区在线看片| 亚洲午夜羞羞片| 日本韩国欧美在线| 国产精品色一区二区三区| 久久99精品国产.久久久久久| 91成人免费网站| 国产精品久久久久aaaa樱花| 国产一区二区美女| 日韩欧美一区中文| 五月天激情综合| 欧美视频一区二区| 亚洲综合小说图片| 色www精品视频在线观看| 最新国产の精品合集bt伙计| 成人av一区二区三区| 精品国产百合女同互慰| 激情文学综合插| 日韩精品一区二区三区在线| 毛片av中文字幕一区二区| 欧美日韩日日骚| 日韩高清在线电影| 日韩免费视频线观看| 麻豆国产精品官网| 精品国产3级a| 国产尤物一区二区| 久久久不卡影院| 高清国产午夜精品久久久久久| 久久久精品黄色| 成人免费视频视频| 中文字幕日韩av资源站| 日本韩国一区二区三区视频| 一区二区三区在线视频观看58 | 日韩视频123| 蜜桃在线一区二区三区| 日韩一区二区三| 国内精品嫩模私拍在线| 国产精品全国免费观看高清| 91女厕偷拍女厕偷拍高清| 亚洲一区二区欧美| 日韩三级.com| 国产69精品久久久久毛片 | 欧美一级日韩免费不卡| 麻豆传媒一区二区三区| 国产午夜亚洲精品羞羞网站| 91亚洲国产成人精品一区二三 | 中文字幕第一页久久| 91免费看`日韩一区二区| 亚洲国产成人精品视频| 日韩女优制服丝袜电影| 成人av免费在线| 五月婷婷色综合| 中文乱码免费一区二区| 欧美亚洲一区二区在线| 国产综合一区二区| 一区二区三区毛片| 精品精品国产高清a毛片牛牛| 成年人网站91| 免费高清在线一区| 亚洲日本在线看| 日韩欧美电影一区| 色婷婷一区二区| 国内久久婷婷综合| 亚洲一卡二卡三卡四卡无卡久久 | 91天堂素人约啪| 日本欧美久久久久免费播放网| 国产日产欧美精品一区二区三区| 色噜噜狠狠成人网p站| 国产乱码精品一区二区三 | 日韩欧美国产一二三区| 99国产精品久久| 国产乱人伦偷精品视频免下载 | 欧美精品一区二区不卡| 一本大道av伊人久久综合| 国产在线精品一区二区夜色| 亚洲一区二区三区在线| 最新不卡av在线| 国产亚洲成av人在线观看导航 | 高清成人免费视频| 日本亚洲免费观看| 亚洲成av人在线观看| 一级日本不卡的影视| 国产精品美女久久久久av爽李琼| 日韩免费一区二区三区在线播放| 欧洲日韩一区二区三区| 色综合久久综合网欧美综合网| 丁香婷婷综合色啪| 国产剧情av麻豆香蕉精品| 蜜桃久久久久久| 蜜桃av一区二区| 天天操天天干天天综合网| 一区二区三区高清| 亚洲综合999| 一区二区三区日韩欧美精品| 亚洲日本一区二区| 亚洲欧美激情小说另类| 亚洲精品免费在线| 亚洲精选视频免费看| 亚洲欧美视频在线观看| 一区二区三区精密机械公司| 亚洲精品va在线观看| 亚洲在线观看免费| 亚洲国产成人porn| 午夜精品爽啪视频| 日韩av在线播放中文字幕| 麻豆91免费观看| 国产一区91精品张津瑜| 国产91精品入口| 91社区在线播放| 欧亚洲嫩模精品一区三区| 欧美日韩高清在线| 欧美高清视频www夜色资源网| 制服丝袜日韩国产| 精品国产电影一区二区| 中文字幕欧美激情一区| 亚洲啪啪综合av一区二区三区| 亚洲一区在线观看免费| 青青草国产精品97视觉盛宴| 久久精品国产亚洲高清剧情介绍 | 欧美日本一道本在线视频| 欧美人体做爰大胆视频| 久久综合色婷婷| 中文字幕在线播放不卡一区| 亚洲第一电影网| 国产精品白丝jk白祙喷水网站| 成a人片亚洲日本久久| 欧美美女直播网站| 欧美激情综合五月色丁香小说| 亚洲乱码国产乱码精品精小说| 亚洲mv在线观看| 国产剧情一区二区三区| 欧美午夜精品理论片a级按摩| 日韩免费性生活视频播放| 亚洲欧洲成人自拍| 久久国产三级精品| 一本色道久久综合亚洲精品按摩| 日韩午夜精品视频| 亚洲女同ⅹxx女同tv| 国产一区二区三区综合| 欧美私模裸体表演在线观看| 久久婷婷一区二区三区| 亚洲一区二区美女| 国产不卡视频一区二区三区| 欧美日本一区二区三区四区 | 欧美性生活大片视频| 久久久久久久久久久黄色| 亚洲观看高清完整版在线观看| 国产乱对白刺激视频不卡 | 国产精品综合网|