⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tds.h

📁 ncbi源码
💻 H
📖 第 1 页 / 共 2 页
字号:
/* * =========================================================================== * PRODUCTION $Log: tds.h,v $ * PRODUCTION Revision 1000.1  2003/11/17 22:11:37  gouriano * PRODUCTION PRODUCTION: UPGRADED [ORIGINAL] Dev-tree R1.3 * PRODUCTION * =========================================================================== *//* FreeTDS - Library of routines accessing Sybase and Microsoft databases * Copyright (C) 1998-1999  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. */#ifndef _tds_h_#define _tds_h_static char rcsid_tds_h[]=	 "$Id: tds.h,v 1000.1 2003/11/17 22:11:37 gouriano Exp $";static void *no_unused_tds_h_warn[]={rcsid_tds_h, no_unused_tds_h_warn};#include <tds_config.h>#ifndef WIN32#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <netdb.h>#include <sys/signal.h>#include <sys/wait.h>#endif #ifdef WIN32#include <windows.h>#include <stdio.h>#endif#ifdef __INCvxWorksh#include <signal.h>#include <ioLib.h> /* for FIONBIO */#else#include <errno.h>#include <stdio.h>#include <ctype.h>#include <string.h>#include <stdlib.h>#include <time.h>#ifdef HAVE_MALLOC_H#include <malloc.h>#endif#include <sys/time.h>#endif#ifndef WIN32#include <unistd.h>#endif#include "tdsver.h"#ifdef __cplusplusextern "C" {#endif /* ** this is where platform specific changes need to be made.** I've tried to change all references to data that goes to ** or comes off the wire to use these typedefs.  I've probably ** missed a bunch, but the idea is we can do an ifdef here ** to set the appropriately sized native type.**** If you have problems on 64-bit machines and the code is ** using a native datatype, please change the code to use** these. (In the TDS layer only, the API layers have their** own typedefs which equate to these).*/typedef char				TDS_CHAR;      /*  8 bit char     */typedef unsigned char		TDS_UCHAR;     /*  8 bit uchar    */typedef unsigned char		TDS_TINYINT;   /*  8 bit int      */typedef short            TDS_SMALLINT;  /* 16 bit int      */typedef unsigned short  	TDS_USMALLINT; /* 16 bit unsigned */typedef int                 TDS_INT;       /* 32 bit int      */typedef unsigned int       	TDS_UINT;      /* 32 bit unsigned */typedef float                TDS_REAL;      /* 32 bit float    */typedef double               TDS_FLOAT;     /* 64 bit float    */typedef long long			TDS_INT8;     	/* 64 bit integer  */typedef unsigned long long	TDS_UINT8;     	/* 64 bit integer  */typedef struct tdsnumeric{        unsigned char         precision;        unsigned char         scale;        unsigned char         array[17];} TDS_NUMERIC;typedef struct tdsoldmoney{	TDS_INT         mnyhigh;	TDS_INT         mnylow;} TDS_OLD_MONEY;typedef union tdsmoney{	TDS_OLD_MONEY	tdsoldmoney;        TDS_INT8        mny;} TDS_MONEY;typedef struct tdsmoney4{	        TDS_INT          mny4;} TDS_MONEY4;typedef struct tdsdatetime{	TDS_INT dtdays;	TDS_INT dttime;} TDS_DATETIME;typedef struct tdsdatetime4{	TDS_USMALLINT days;	TDS_USMALLINT minutes;} TDS_DATETIME4;typedef struct tdsvarbinary{	TDS_INT len;	TDS_CHAR array[256];} TDS_VARBINARY;typedef struct tdsvarchar{	TDS_INT len;	TDS_CHAR array[256];} TDS_VARCHAR;typedef struct tdsunique{    TDS_UINT      Data1;    TDS_USMALLINT Data2;    TDS_USMALLINT Data3;    TDS_UCHAR     Data4[8];} TDS_UNIQUE;typedef struct tdsdaterec{	TDS_INT   year;	TDS_INT   month;	TDS_INT   day;	TDS_INT   dayofyear;	TDS_INT   weekday;	TDS_INT   hour;	TDS_INT   minute;	TDS_INT   second;	TDS_INT   millisecond;	TDS_INT   tzone;} TDSDATEREC;#define TDS_NO_MORE_ROWS     -2#define TDS_SUCCEED          1#define TDS_FAIL             0#define TDS_NO_MORE_RESULTS  2/*** TDS_ERROR indicates a successful processing, but an TDS_ERR_TOKEN or ** TDS_EED_TOKEN error was encountered, whereas TDS_FAIL indicates an** unrecoverable failure.*/#define TDS_ERROR            3  #define TDS_DONT_RETURN      42#define TDS5_DYN_TOKEN      231  /* 0xE7    TDS 5.0 only              */#define TDS5_DYNRES_TOKEN   236  /* 0xEC    TDS 5.0 only              */#define TDS5_DYN3_TOKEN     215  /* 0xD7    TDS 5.0 only              */#define TDS_LANG_TOKEN       33  /* 0x21    TDS 5.0 only              */#define TDS_CLOSE_TOKEN     113  /* 0x71    TDS 5.0 only? ct_close()  */#define TDS_RET_STAT_TOKEN  121  /* 0x79                              */#define TDS_124_TOKEN       124  /* 0x7C    TDS 4.2 only - TDS_PROCID */#define TDS7_RESULT_TOKEN   129  /* 0x81    TDS 7.0 only              */#define TDS_COL_NAME_TOKEN  160  /* 0xA0    TDS 4.2 only              */#define TDS_COL_INFO_TOKEN  161  /* 0xA1    TDS 4.2 only - TDS_COLFMT *//*#define  TDS_TABNAME   164 */#ifdef NCBI_FTDS#define  TDS_COL_INFO_TOKEN2   165 /* 0xA5                            */#endif#define TDS_167_TOKEN       167  /* 0xA7                              */#define TDS_168_TOKEN       168  /* 0xA8                              */#define TDS_ORDER_BY_TOKEN  169  /* 0xA9    TDS_ORDER                 */#define TDS_ERR_TOKEN       170  /* 0xAA                              */#define TDS_MSG_TOKEN       171  /* 0xAB                              */#define TDS_PARAM_TOKEN     172  /* 0xAC    RETURNVALUE?              */#define TDS_LOGIN_ACK_TOKEN 173  /* 0xAD                              */#define TDS_174_TOKEN       174  /* 0xAE    TDS_CONTROL               */#define TDS_ROW_TOKEN       209  /* 0xD1                              */#define TDS_CMP_ROW_TOKEN   211  /* 0xD3                              */#define TDS_CAP_TOKEN       226  /* 0xE2                              */#define TDS_ENV_CHG_TOKEN   227  /* 0xE3                              */#define TDS_EED_TOKEN       229  /* 0xE5                              */#define TDS_AUTH_TOKEN      237  /* 0xED                              */#define TDS_RESULT_TOKEN    238  /* 0xEE                              */#define TDS_DONE_TOKEN      253  /* 0xFD    TDS_DONE                  */#define TDS_DONEPROC_TOKEN  254  /* 0xFE    TDS_DONEPROC              */#define TDS_DONEINPROC_TOKEN 255  /* 0xFF    TDS_DONEINPROC            *//* states for tds_process_messages() */#define PROCESS_ROWS    0#define PROCESS_RESULTS 1#define CANCEL_PROCESS  2#define GOTO_1ST_ROW    3#define LOGIN           4/* environment type field */#define TDS_ENV_DATABASE  1#define TDS_ENV_CHARSET   3#define TDS_ENV_BLOCKSIZE 4/* <rant> Sybase does an awful job of this stuff, non null ints of size 1 2 and 4 have there own codes but nullable ints are lumped into INTNsheesh! </rant>*/#define SYBCHAR      47   /* 0x2F */#define SYBVARCHAR   39   /* 0x27 */#define SYBINTN      38   /* 0x26 */#define SYBINT1      48   /* 0x30 */#define SYBINT2      52   /* 0x34 */#define SYBINT4      56   /* 0x38 */#define SYBINT8     127   /* 0x7F */#define SYBFLT8      62   /* 0x3E */#define SYBDATETIME  61   /* 0x3D */#define SYBBIT       50   /* 0x32 */#define SYBTEXT      35   /* 0x23 */#define SYBNTEXT     99   /* 0x63 */#define SYBIMAGE     34   /* 0x22 */#define SYBMONEY4    122  /* 0x7A */#define SYBMONEY     60   /* 0x3C */#define SYBDATETIME4 58   /* 0x3A */#define SYBREAL      59   /* 0x3B */#define SYBBINARY    45   /* 0x2D */#define SYBVOID      31   /* 0x1F */#define SYBVARBINARY 37   /* 0x25 */#define SYBNVARCHAR  103  /* 0x67 */#define SYBBITN      104  /* 0x68 */#define SYBNUMERIC   108  /* 0x6C */#define SYBDECIMAL   106  /* 0x6A */#define SYBFLTN      109  /* 0x6D */#define SYBMONEYN    110  /* 0x6E */#define SYBDATETIMN  111  /* 0x6F */#define XSYBCHAR     175  /* 0xAF */#define XSYBVARCHAR  167  /* 0xA7 */#define XSYBNVARCHAR 231  /* 0xE7 */#define XSYBNCHAR    239  /* 0xEF */#define XSYBVARBINARY 165  /* 0xA5 */#define XSYBBINARY    173  /* 0xAD */#define SYBUNIQUE    36    /* 0x24 */#define SYBVARIANT   0x62#define TDS_ZERO_FREE(x) {free((x)); (x) = NULL;}#define TDS_BYTE_SWAP16(value)                 \         (((((unsigned short)value)<<8) & 0xFF00)   | \          ((((unsigned short)value)>>8) & 0x00FF))#define TDS_BYTE_SWAP32(value)                     \         (((((unsigned long)value)<<24) & 0xFF000000)  | \          ((((unsigned long)value)<< 8) & 0x00FF0000)  | \          ((((unsigned long)value)>> 8) & 0x0000FF00)  | \          ((((unsigned long)value)>>24) & 0x000000FF))#define is_end_token(x) (x==TDS_DONE_TOKEN    || \			x==TDS_DONEPROC_TOKEN    || \			x==TDS_DONEINPROC_TOKEN)#define is_hard_end_token(x) (x==TDS_DONE_TOKEN    || \			x==TDS_DONEPROC_TOKEN)#define is_msg_token(x) (x==TDS_MSG_TOKEN    || \			x==TDS_ERR_TOKEN    || \			x==TDS_EED_TOKEN)#define is_result_token(x) (x==TDS_RESULT_TOKEN    || \			x==TDS7_RESULT_TOKEN    || \			x==TDS_COL_INFO_TOKEN    || \			x==TDS_COL_NAME_TOKEN)/* FIX ME -- not a complete list */#define is_fixed_type(x) (x==SYBINT1    || \			x==SYBINT2      || \			x==SYBINT4      || \			x==SYBINT8      || \			x==SYBREAL	 || \			x==SYBFLT8      || \			x==SYBDATETIME  || \			x==SYBDATETIME4 || \			x==SYBBIT       || \			x==SYBMONEY     || \			x==SYBMONEY4    || \			x==SYBUNIQUE)#define is_nullable_type(x) (x==SYBINTN || \			x==SYBFLTN      || \			x==SYBDATETIMN  || \			x==SYBVARCHAR   || \			x==SYBVARBINARY	|| \			x==SYBMONEYN	|| \			x==SYBTEXT	|| \			x==SYBNTEXT	|| \			x==SYBBITN      || \			x==SYBIMAGE)#define is_blob_type(x) (x==SYBTEXT || x==SYBIMAGE || x==SYBNTEXT)/* large type means it has a two byte size field */#define is_large_type(x) (x>128)#define is_numeric_type(x) (x==SYBNUMERIC || x==SYBDECIMAL)#define is_unicode(x) (x==XSYBNVARCHAR || x==XSYBNCHAR || x==SYBNTEXT)#define is_collate_type(x) (x==XSYBVARCHAR || x==XSYBCHAR || x==SYBTEXT || x == XSYBNVARCHAR || x==SYBNTEXT)#define TDS_MAX_CAPABILITY	18#define MAXPRECISION 		50#define TDS_MAX_CONN		4096#define TDS_MAX_DYNID_LEN	30/* defaults to use if no others are found */#define TDS_DEF_SERVER		"SYBASE"#define TDS_DEF_BLKSZ		512#define TDS_DEF_CHARSET		"iso_1"#define TDS_DEF_LANG		"us_english"#if TDS42#define TDS_DEF_MAJOR		4#define TDS_DEF_MINOR		2#define TDS_DEF_PORT		1433#elif TDS46#define TDS_DEF_MAJOR		4#define TDS_DEF_MINOR		6#define TDS_DEF_PORT		4000#elif TDS70#define TDS_DEF_MAJOR		7#define TDS_DEF_MINOR		0#define TDS_DEF_PORT		1433#elif TDS80#define TDS_DEF_MAJOR		8#define TDS_DEF_MINOR		0#define TDS_DEF_PORT		1433#else#define TDS_DEF_MAJOR		5#define TDS_DEF_MINOR		0#define TDS_DEF_PORT		4000#endif/* normalized strings from freetds.conf file */#define TDS_STR_VERSION  "tds version"#define TDS_STR_BLKSZ    "initial block size"#define TDS_STR_SWAPDT   "swap broken dates"#define TDS_STR_SWAPMNY  "tds version"#define TDS_STR_TRYSVR   "try server login"#define TDS_STR_TRYDOM   "try domain login"#define TDS_STR_DOMAIN   "nt domain"#define TDS_STR_XDOMAUTH "cross domain auth"#define TDS_STR_DUMPFILE "dump file"#define TDS_STR_DEBUGLVL "debug level"#define TDS_STR_TIMEOUT  "timeout"#define TDS_STR_CONNTMOUT "connect timeout"#define TDS_STR_HOSTNAME "hostname"#define TDS_STR_HOST     "host"#define TDS_STR_PORT     "port"#define TDS_STR_TEXTSZ   "text size"/* for big endian hosts */#define TDS_STR_EMUL_LE	"emulate little endian"#define TDS_STR_CHARSET	"charset"

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -