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

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

?? uemf.c

?? 在嵌入式移動設備上實現動態網頁
?? C
字號:
/*
 * uemf.c -- GoAhead Micro Embedded Management Framework
 *
 * Copyright (c) GoAhead Software Inc., 1995-2000. All Rights Reserved.
 *
 * See the file "license.txt" for usage and redistribution license requirements
 *
 * $Id: uemf.c,v 1.4 2002/10/24 14:44:50 bporter Exp $
 */

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

/*
 *	This module provides compatibility with the full GoAhead EMF.
 *	It is a collection of routines which permits the GoAhead WebServer to
 *	run stand-alone and to also load as a solution pack under the GoAhead EMF.
 */

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

#include	"uemf.h"

/********************************** Local Data ********************************/

int emfInst;							/* Application instance handle */

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

extern void defaultErrorHandler(int etype, char_t *buf);
static void (*errorHandler)(int etype, char_t *msg) = defaultErrorHandler;

extern void	defaultTraceHandler(int level, char_t *buf);
static void (*traceHandler)(int level, char_t *buf) = defaultTraceHandler;

/************************************* Code ***********************************/
/*
 *	Error message that doesn't need user attention. Customize this code
 *	to direct error messages to wherever the developer wishes
 */

void error(E_ARGS_DEC, int etype, char_t *fmt, ...)
{
	va_list 	args;
	char_t		*fmtBuf, *buf;

	va_start(args, fmt);
	fmtValloc(&fmtBuf, E_MAX_ERROR, fmt, args);

	if (etype == E_LOG) {
		fmtAlloc(&buf, E_MAX_ERROR, T("%s\n"), fmtBuf);
/*#ifdef DEV*/
	} else if (etype == E_ASSERT) {
		fmtAlloc(&buf, E_MAX_ERROR, 
			T("Assertion %s, failed at %s %d\n"), fmtBuf, E_ARGS); 
/*#endif*/
	} else if (etype == E_USER) {
		fmtAlloc(&buf, E_MAX_ERROR, T("%s\n"), fmtBuf);
	}
   /*
    * bugfix -- if etype is not E_LOG, E_ASSERT, or E_USER, the call to
    * bfreeSafe(B_L, buf) below will fail, because 'buf' is randomly
    * initialized. To be nice, we format a message saying that this is an
    * unknown message type, and in doing so give buf a valid value. Thanks 
    * to Simon Byholm.
    */
   else {
      fmtAlloc(&buf, E_MAX_ERROR, T("Unknown error"));
   }
	va_end(args);

	bfree(B_L, fmtBuf);

	if (errorHandler) {
		errorHandler(etype, buf);
	}

	bfreeSafe(B_L, buf);
}

/******************************************************************************/
/*
 *	Replace the default error handler. Return pointer to old error handler.
 */

void (*errorSetHandler(void (*function)(int etype, char_t *msg))) \
	(int etype, char_t *msg)
{
	void (*oldHandler)(int etype, char_t *buf);

	oldHandler = errorHandler;
	errorHandler = function;
	return oldHandler;
}

/******************************************************************************/
/*
 *	Trace log. Customize this function to log trace output
 */

void trace(int level, char_t *fmt, ...)
{
	va_list 	args;
	char_t		*buf;

	va_start(args, fmt);
	fmtValloc(&buf, VALUE_MAX_STRING, fmt, args);

	if (traceHandler) {
		traceHandler(level, buf);
	}
	bfreeSafe(B_L, buf);
	va_end(args);
}

/******************************************************************************/
/*
 *	Trace log. Customize this function to log trace output
 */

void traceRaw(char_t *buf)
{
	if (traceHandler) {
		traceHandler(0, buf);
	}
}

/******************************************************************************/
/*
 *	Replace the default trace handler. Return a pointer to the old handler.
 */

void (*traceSetHandler(void (*function)(int level, char_t *buf))) 
	(int level, char *buf)
{
	void (*oldHandler)(int level, char_t *buf);

	oldHandler = traceHandler;
	if (function) {
		traceHandler = function;
	}
	return oldHandler;
}

/******************************************************************************/
/*
 *	Save the instance handle
 */

void emfInstSet(int inst)
{
	emfInst = inst;
}

/******************************************************************************/
/*
 *	Get the instance handle
 */

int emfInstGet()
{
	return emfInst;
}

/******************************************************************************/
/*
 *	Convert a string to lower case
 */

char_t *strlower(char_t *string)
{
	char_t	*s;

	a_assert(string);

	if (string == NULL) {
		return NULL;
	}

	s = string;
	while (*s) {
		if (gisupper(*s)) {
			*s = (char_t) gtolower(*s);
		}
		s++;
	}
	*s = '\0';
	return string;
}

/******************************************************************************/
/* 
 *	Convert a string to upper case
 */

char_t *strupper(char_t *string)
{
	char_t	*s;

	a_assert(string);
	if (string == NULL) {
		return NULL;
	}

	s = string;
	while (*s) {
		if (gislower(*s)) {
			*s = (char_t) gtoupper(*s);
		}
		s++;
	}
	*s = '\0';
	return string;
}

/******************************************************************************/
/*
 *	Convert integer to ascii string. Allow a NULL string in which case we
 *	allocate a dynamic buffer. 
 */

char_t *stritoa(int n, char_t *string, int width)
{
	char_t	*cp, *lim, *s;
	char_t	buf[16];						/* Just temp to hold number */
	int		next, minus;

	a_assert(string && width > 0);

	if (string == NULL) {
		if (width == 0) {
			width = 10;
		}
		if ((string = balloc(B_L, width + 1)) == NULL) {
			return NULL;
		}
	}
	if (n < 0) {
		minus = 1;
		n = -n;
		width--;
	} else {
		minus = 0;
	}

	cp = buf;
	lim = &buf[width - 1];
	while (n > 9 && cp < lim) {
		next = n;
		n /= 10;
		*cp++ = (char_t) (next - n * 10 + '0');
	}
	if (cp < lim) {
		*cp++ = (char_t) (n + '0');
	}

	s = string;
	if (minus) {
		*s++ = '-';
	}

	while (cp > buf) {
		*s++ = *--cp;
	}

	*s++ = '\0';
	return string;
}

/******************************************************************************/
/*
 *	Stubs
 */

char_t *basicGetProduct()
{
	return T("uemf");
}

char_t *basicGetAddress()
{
	return T("localhost");
}

int errorOpen(char_t *pname)
{
	return 0;
}

void errorClose()
{
}

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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产一区二区三区四区四 | 欧美激情在线观看视频免费| 91美女在线看| 激情文学综合丁香| 爽好多水快深点欧美视频| 中文字幕一区二区三区四区 | 日韩高清不卡在线| 中文字幕色av一区二区三区| 久久婷婷国产综合国色天香| 4hu四虎永久在线影院成人| 色综合久久中文综合久久牛| 高清在线观看日韩| 免费观看在线色综合| 亚洲精品写真福利| 亚洲男人天堂一区| 午夜在线成人av| 中文字幕一区二区在线播放| 国产精品欧美极品| 久久精品一区二区三区四区| 精品少妇一区二区三区日产乱码| 欧美日韩第一区日日骚| 欧美日韩综合在线| 色天天综合色天天久久| 91国内精品野花午夜精品| 99久久精品免费精品国产| 久久精品99国产国产精| 久久国产生活片100| 久久国产精品72免费观看| 免费成人美女在线观看.| 精品综合久久久久久8888| 麻豆国产精品777777在线| 裸体健美xxxx欧美裸体表演| 久久超碰97中文字幕| 国产精品1区二区.| 99国产精品久| 精品久久久久久综合日本欧美| 国产精品丝袜一区| 亚洲男人的天堂av| 五月天一区二区三区| 免费国产亚洲视频| av午夜精品一区二区三区| 欧美中文字幕一区二区三区| 欧美三区在线观看| 精品欧美黑人一区二区三区| 中文一区一区三区高中清不卡| 亚洲综合一区二区三区| 天天色 色综合| 国产一区高清在线| 成人app软件下载大全免费| 欧美亚洲高清一区二区三区不卡| 欧美一区二区三区系列电影| 国产午夜精品在线观看| 亚洲欧美日韩系列| 一区二区三区四区蜜桃 | 欧美日韩一级二级| 精品国产乱码久久久久久图片| 日韩你懂的在线观看| 亚洲精选免费视频| 麻豆成人免费电影| 91福利社在线观看| 欧美日韩精品三区| 国产精品卡一卡二| 日本v片在线高清不卡在线观看| 国产一区二区精品久久| 欧美色综合久久| 国产日韩欧美麻豆| 亚洲亚洲人成综合网络| 国产一级精品在线| 欧美福利视频一区| 亚洲天堂成人在线观看| 久久99精品久久只有精品| 在线欧美日韩国产| 欧美高清在线视频| 久久国产精品一区二区| 91精品福利视频| 国产精品美女久久久久久久久久久 | 欧美区一区二区三区| 国产欧美日韩不卡| 一区二区三区四区蜜桃| 国产成人精品免费在线| 日韩三级视频在线观看| 亚洲精品一二三| 99久久99久久久精品齐齐| 欧美精品一区二区三区视频| 日韩中文字幕91| 色香蕉成人二区免费| 国产精品久久三| 国产精品538一区二区在线| 精品精品欲导航| 日韩激情视频在线观看| 欧美日韩不卡一区| 亚洲一区二区在线免费看| 色婷婷av一区二区三区软件| 国产精品三级av| 国产91清纯白嫩初高中在线观看| 精品欧美一区二区久久| 激情av综合网| 精品国产凹凸成av人导航| 久久99久久99| www国产成人免费观看视频 深夜成人网 | 亚洲人成电影网站色mp4| 国产剧情一区在线| 欧美日韩免费电影| 日韩高清中文字幕一区| 4438x亚洲最大成人网| 日韩高清在线不卡| 欧美成人a视频| 免费观看日韩电影| 精品国产污网站| 国产suv一区二区三区88区| 国产人久久人人人人爽| 国产成人一区在线| 国产女人18水真多18精品一级做| 成人午夜在线播放| 中文字幕在线不卡一区二区三区| 91蜜桃在线观看| 亚洲一区二区三区在线播放| 91精品啪在线观看国产60岁| 久久99精品国产91久久来源| 久久久久久久综合色一本| 成人深夜福利app| 一区二区三区小说| 精品少妇一区二区三区免费观看| 国产精品白丝jk黑袜喷水| 亚洲视频香蕉人妖| 日韩三级视频中文字幕| 成人免费视频caoporn| 人妖欧美一区二区| 一区二区三区在线视频播放| 国产欧美一区二区在线| 日韩一区二区免费在线观看| 在线一区二区观看| 成人午夜av影视| 国产一区在线看| 卡一卡二国产精品| 日韩精品免费视频人成| 亚洲综合精品久久| 亚洲女与黑人做爰| 日韩久久一区二区| 国产精品伦理在线| 日本一区二区三区dvd视频在线| 日韩一区二区在线观看视频| 在线日韩国产精品| 色综合视频在线观看| 94-欧美-setu| 色吧成人激情小说| 色偷偷88欧美精品久久久| 91丝袜国产在线播放| 成人成人成人在线视频| 顶级嫩模精品视频在线看| 国产成人在线免费| 成人综合激情网| www.欧美日韩| 色综合久久88色综合天天6| 99久久99精品久久久久久| 91丨九色丨国产丨porny| 9色porny自拍视频一区二区| www.亚洲国产| 色菇凉天天综合网| 欧美日韩国产123区| 51精品国自产在线| www日韩大片| 国产精品美女久久久久久| 亚洲欧美国产三级| 午夜伊人狠狠久久| 久88久久88久久久| 国产成人免费9x9x人网站视频| 不卡一卡二卡三乱码免费网站| 91蜜桃传媒精品久久久一区二区| 欧美在线观看一二区| 欧美一区二区三区免费在线看| 337p粉嫩大胆噜噜噜噜噜91av| 国产喷白浆一区二区三区| 一区二区三区四区蜜桃| 免费观看成人鲁鲁鲁鲁鲁视频| 久久精品国产亚洲a| 成人国产免费视频| 欧美日韩国产小视频| 精品99一区二区三区| 国产精品久久久久国产精品日日| 一区二区理论电影在线观看| 免费在线视频一区| 国产乱人伦偷精品视频不卡| 91福利精品第一导航| 欧美电影精品一区二区| 国产精品成人一区二区艾草| 午夜国产不卡在线观看视频| 国产高清视频一区| 欧洲一区二区三区免费视频| 亚洲精品一区二区三区影院 | 国产经典欧美精品| 国产一区二区在线视频| 色国产综合视频| 日韩欧美的一区二区| 亚洲女人的天堂| 国产寡妇亲子伦一区二区| 69精品人人人人| 中文字幕一区二区在线观看| 美女视频一区二区三区| 91农村精品一区二区在线|