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

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

?? ctutil.c

?? 在Linux/Unix下面訪問WINDOWS SQLSERVER 的ODBC驅動程序
?? C
字號:
/* FreeTDS - Library of routines accessing Sybase and Microsoft databases * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004  Brian Bruns * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */#if HAVE_CONFIG_H#include <config.h>#endif /* HAVE_CONFIG_H */#if HAVE_STRING_H#include <string.h>#endif /* HAVE_STRING_H */#include "cspublic.h"#include "ctlib.h"#include "tds.h"#include "replacements.h"/* #include "fortify.h" */TDS_RCSID(var, "$Id: ctutil.c,v 1.28 2007/01/07 16:13:17 jklowden Exp $");/* * test include consistency  * I don't think all compiler are able to compile this code... if not comment it */#if ENABLE_EXTRA_CHECKS#if defined(__GNUC__) && __GNUC__ >= 2#define COMPILE_CHECK(name,check) \    extern int name[(check)?1:-1] __attribute__ ((unused))#else#define COMPILE_CHECK(name,check) \    extern int name[(check)?1:-1]#endif#define TEST_EQUAL(t,a,b) COMPILE_CHECK(t,a==b)TEST_EQUAL(t01,CS_FAIL,TDS_FAIL);TEST_EQUAL(t02,CS_SUCCEED,TDS_SUCCEED);TEST_EQUAL(t03,CS_NULLTERM,TDS_NULLTERM);TEST_EQUAL(t04,CS_CMD_SUCCEED,TDS_CMD_SUCCEED);TEST_EQUAL(t05,CS_CMD_FAIL,TDS_CMD_FAIL);TEST_EQUAL(t06,CS_CMD_DONE,TDS_CMD_DONE);TEST_EQUAL(t07,CS_NO_COUNT,TDS_NO_COUNT);TEST_EQUAL(t08,CS_COMPUTE_RESULT,TDS_COMPUTE_RESULT);TEST_EQUAL(t09,CS_PARAM_RESULT,TDS_PARAM_RESULT);TEST_EQUAL(t10,CS_ROW_RESULT,TDS_ROW_RESULT);TEST_EQUAL(t11,CS_STATUS_RESULT,TDS_STATUS_RESULT);TEST_EQUAL(t12,CS_COMPUTEFMT_RESULT,TDS_COMPUTEFMT_RESULT);TEST_EQUAL(t13,CS_ROWFMT_RESULT,TDS_ROWFMT_RESULT);TEST_EQUAL(t14,CS_MSG_RESULT,TDS_MSG_RESULT);TEST_EQUAL(t15,CS_DESCRIBE_RESULT,TDS_DESCRIBE_RESULT);#define TEST_ATTRIBUTE(t,sa,fa,sb,fb) \	COMPILE_CHECK(t,sizeof(((sa*)0)->fa) == sizeof(((sb*)0)->fb) && (int)(&((sa*)0)->fa) == (int)(&((sb*)0)->fb))TEST_ATTRIBUTE(t21,TDS_MONEY4,mny4,CS_MONEY4,mny4);TEST_ATTRIBUTE(t22,TDS_OLD_MONEY,mnyhigh,CS_MONEY,mnyhigh);TEST_ATTRIBUTE(t23,TDS_OLD_MONEY,mnylow,CS_MONEY,mnylow);TEST_ATTRIBUTE(t24,TDS_DATETIME,dtdays,CS_DATETIME,dtdays);TEST_ATTRIBUTE(t25,TDS_DATETIME,dttime,CS_DATETIME,dttime);TEST_ATTRIBUTE(t26,TDS_DATETIME4,days,CS_DATETIME4,days);TEST_ATTRIBUTE(t27,TDS_DATETIME4,minutes,CS_DATETIME4,minutes);TEST_ATTRIBUTE(t28,TDS_NUMERIC,precision,CS_NUMERIC,precision);TEST_ATTRIBUTE(t29,TDS_NUMERIC,scale,CS_NUMERIC,scale);TEST_ATTRIBUTE(t30,TDS_NUMERIC,array,CS_NUMERIC,array);TEST_ATTRIBUTE(t30,TDS_NUMERIC,precision,CS_DECIMAL,precision);TEST_ATTRIBUTE(t31,TDS_NUMERIC,scale,CS_DECIMAL,scale);TEST_ATTRIBUTE(t32,TDS_NUMERIC,array,CS_DECIMAL,array);TEST_ATTRIBUTE(t33,TDS_VARBINARY,len,CS_VARBINARY,len);TEST_ATTRIBUTE(t34,TDS_VARBINARY,array,CS_VARBINARY,array);#endif/*  * error handler  * This callback function should be invoked only from libtds through tds_ctx->err_handler.   */int_ct_handle_client_message(const TDSCONTEXT * ctx_tds, TDSSOCKET * tds, TDSMESSAGE * msg){	CS_CLIENTMSG errmsg;	CS_CONNECTION *con = NULL;	CS_CONTEXT *ctx = NULL;	int ret = (int) CS_SUCCEED;	if (tds && tds->parent) {		con = (CS_CONNECTION *) tds->parent;	}	memset(&errmsg, '\0', sizeof(errmsg));	errmsg.msgnumber = msg->msgno;	strcpy(errmsg.msgstring, msg->message);	errmsg.msgstringlen = strlen(msg->message);	errmsg.osstring[0] = '\0';	errmsg.osstringlen = 0;	/* if there is no connection, attempt to call the context handler */	if (!con) {		ctx = (CS_CONTEXT *) ctx_tds->parent;		if (ctx->_clientmsg_cb)			ret = ctx->_clientmsg_cb(ctx, con, &errmsg);	} else if (con->_clientmsg_cb)		ret = con->_clientmsg_cb(con->ctx, con, &errmsg);	else if (con->ctx->_clientmsg_cb)		ret = con->ctx->_clientmsg_cb(con->ctx, con, &errmsg);			/*	 * The return code from the error handler is either CS_SUCCEED or CS_FAIL.	 * This function was called by libtds with some kind of communications failure, and there are	 * no cases in which "succeed" could mean anything: In most cases, the function is going to fail	 * no matter what.  	 *	 * Timeouts are a different matter; it's up to the client to decide whether to continue	 * waiting or to abort the operation and close the socket.  ct-lib applications do their 	 * own cancel processing -- they can call ct_cancel from within the error handler -- so 	 * they don't need to return TDS_INT_TIMEOUT.  They can, however, return TDS_INT_CONTINUE	 * or TDS_INT_CANCEL.  We map the client's return code to those. 	 *	 * Only for timeout errors does TDS_INT_CANCEL cause libtds to break the connection. 	 */	if (msg->msgno == TDSETIME) {		switch (ret) {		case CS_SUCCEED:	return TDS_INT_CONTINUE;		case CS_FAIL:		return TDS_INT_CANCEL;		}	}	return TDS_INT_CANCEL;}/* message handler */int_ct_handle_server_message(const TDSCONTEXT * ctx_tds, TDSSOCKET * tds, TDSMESSAGE * msg){	CS_SERVERMSG errmsg;	CS_CONNECTION *con = NULL;	CS_CONTEXT *ctx = NULL;	int ret = (int) CS_SUCCEED;	if (tds && tds->parent) {		con = (CS_CONNECTION *) tds->parent;	}	memset(&errmsg, '\0', sizeof(errmsg));	errmsg.msgnumber = msg->msgno;	tds_strlcpy(errmsg.text, msg->message, sizeof(errmsg.text));	errmsg.textlen = strlen(errmsg.text);	errmsg.sqlstate[0] = 0;	if (msg->sql_state)		tds_strlcpy((char *) errmsg.sqlstate, msg->sql_state, sizeof(errmsg.sqlstate));	errmsg.sqlstatelen = strlen((char *) errmsg.sqlstate);	errmsg.state = msg->state;	errmsg.severity = msg->severity;	errmsg.line = msg->line_number;	if (msg->server) {		errmsg.svrnlen = strlen(msg->server);		tds_strlcpy(errmsg.svrname, msg->server, CS_MAX_NAME);	}	if (msg->proc_name) {		errmsg.proclen = strlen(msg->proc_name);		tds_strlcpy(errmsg.proc, msg->proc_name, CS_MAX_NAME);	}	/* if there is no connection, attempt to call the context handler */	if (!con) {		ctx = (CS_CONTEXT *) ctx_tds->parent;		if (ctx->_servermsg_cb)			ret = ctx->_servermsg_cb(ctx, con, &errmsg);	} else if (con->_servermsg_cb) {		ret = con->_servermsg_cb(con->ctx, con, &errmsg);	} else if (con->ctx->_servermsg_cb) {		ret = con->ctx->_servermsg_cb(con->ctx, con, &errmsg);	}	return ret;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
制服.丝袜.亚洲.另类.中文| 精品免费国产二区三区| 青椒成人免费视频| 一区二区欧美视频| 久久九九国产精品| 欧美最新大片在线看| 国产老女人精品毛片久久| 亚洲电影激情视频网站| 国产亚洲精品精华液| 7777精品伊人久久久大香线蕉的 | 日本一二三不卡| 久久免费美女视频| 在线精品视频免费观看| 国产精品白丝av| 琪琪久久久久日韩精品| 亚洲国产成人高清精品| 成人免费在线视频观看| 亚洲精品一区二区三区四区高清 | 国产一区二区电影| 日韩电影网1区2区| 亚洲在线免费播放| 亚洲美女区一区| 国产欧美精品区一区二区三区| 精品视频一区 二区 三区| 91亚洲精品久久久蜜桃| 成人国产精品免费观看视频| 玖玖九九国产精品| 日韩国产精品大片| 日韩精品一级中文字幕精品视频免费观看| 国产精品卡一卡二卡三| 日本一区二区三区四区在线视频 | 五月天中文字幕一区二区| 国产精品国产三级国产aⅴ中文| 精品久久久久久久一区二区蜜臀| 欧美性一级生活| 91美女精品福利| 99久久精品国产毛片| av不卡免费电影| 91亚洲精品久久久蜜桃网站| av在线一区二区| av中文字幕亚洲| 91小视频在线观看| 91免费国产在线观看| 91丨porny丨最新| 91色视频在线| 在线观看91精品国产入口| 日本高清无吗v一区| 在线精品国精品国产尤物884a| 色婷婷亚洲精品| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 日本道色综合久久| 欧美日韩精品免费观看视频| 欧美日韩国产三级| 欧美一区二区不卡视频| 欧美一级片免费看| 精品国产污网站| 欧美国产日产图区| 亚洲免费观看高清完整版在线 | 亚洲成人av在线电影| 日本va欧美va欧美va精品| 久久国内精品视频| 国产成人久久精品77777最新版本| 风间由美一区二区av101| av亚洲产国偷v产偷v自拍| 欧美在线free| 欧美成va人片在线观看| 中文字幕欧美日韩一区| 一区二区三区中文在线| 免费久久99精品国产| 国产乱人伦偷精品视频免下载| 成人永久看片免费视频天堂| 99久久精品国产麻豆演员表| 欧美日韩日日骚| 久久精品免视看| 一区二区三区产品免费精品久久75| 性欧美大战久久久久久久久| 国产一区二区在线看| 91在线小视频| 精品捆绑美女sm三区| 亚洲三级电影网站| 日韩国产一二三区| 粉嫩嫩av羞羞动漫久久久| 欧美图片一区二区三区| 国产视频一区二区三区在线观看| 一级特黄大欧美久久久| 韩国在线一区二区| 色欧美片视频在线观看在线视频| 欧美一区二区三区在线看 | 午夜精品成人在线视频| 国产一区二区三区日韩| 在线观看三级视频欧美| 精品国产免费一区二区三区四区 | 久久久久国产精品人| 亚洲一区在线视频观看| 国产精品99久久不卡二区| 欧美在线小视频| 国产精品每日更新| 麻豆精品一二三| av亚洲产国偷v产偷v自拍| 欧美va亚洲va国产综合| 亚洲欧美经典视频| 丁香婷婷综合五月| 精品国产凹凸成av人导航| 亚洲成人自拍一区| 99久久综合99久久综合网站| 日韩久久久久久| 亚洲午夜激情网站| 91小视频免费看| 中文字幕第一页久久| 经典三级在线一区| 欧美精品在线观看一区二区| 亚洲精品日日夜夜| jiyouzz国产精品久久| 久久你懂得1024| 免费看日韩a级影片| 欧美人狂配大交3d怪物一区| 最新热久久免费视频| 国产一区二区调教| 精品欧美久久久| 日韩精品色哟哟| 欧美日韩综合在线| 亚洲精品视频在线观看免费| a在线欧美一区| 中文字幕视频一区| 成人三级伦理片| 国产精品污污网站在线观看| 韩国欧美国产一区| 精品美女一区二区三区| 看片网站欧美日韩| 欧美成人一区二区三区在线观看| 婷婷开心久久网| 欧美日韩亚洲国产综合| 亚洲一区二区三区在线| 91福利精品视频| 亚洲成人精品一区| 777久久久精品| 免费成人在线观看| 精品国产乱码久久| 国产乱码精品1区2区3区| 久久久不卡影院| 成人av资源网站| 综合久久综合久久| 91搞黄在线观看| 亚洲福利电影网| 5566中文字幕一区二区电影| 日产欧产美韩系列久久99| 日韩视频在线一区二区| 久久99国产精品免费网站| 久久影院午夜片一区| 国产不卡免费视频| 亚洲桃色在线一区| 91官网在线免费观看| 视频在线观看国产精品| 欧美一区三区四区| 国产精品亚洲综合一区在线观看| 欧美激情一区二区| 色综合天天做天天爱| 亚洲一区二区影院| 日韩欧美黄色影院| 春色校园综合激情亚洲| 日韩毛片视频在线看| 欧美日韩免费视频| 久久 天天综合| 国产日韩综合av| 色综合久久久久综合| 三级亚洲高清视频| 亚洲国产精品av| 欧美日韩在线播放三区四区| 美日韩一区二区| 国产精品三级电影| 欧美中文字幕一区二区三区 | 亚洲一区免费视频| 日韩一级片网站| 成人一级片在线观看| 亚洲成人综合网站| 国产日韩在线不卡| 色婷婷亚洲精品| 国产麻豆精品theporn| 一区二区三区丝袜| 久久综合五月天婷婷伊人| a在线播放不卡| 另类调教123区| 亚洲精品少妇30p| 久久午夜老司机| 欧美日韩黄色影视| av一区二区不卡| 麻豆精品一区二区三区| 亚洲少妇30p| 久久综合久久鬼色中文字| 欧美在线|欧美| 国产69精品久久久久毛片| 视频在线在亚洲| 一区二区三区在线视频免费观看| 精品久久久久久久久久久久久久久| 91在线视频网址| 韩国一区二区视频| 日本美女一区二区三区| 亚洲精品欧美在线| 欧美国产在线观看| 精品国产青草久久久久福利|