📄 tds.h
字号:
#define TDS_STR_CLCHARSET "client charset"#define TDS_STR_LANGUAGE "language"#define TDS_STR_APPENDMODE "dump file append"#define TDS_STR_DATEFMT "date format"#define TDS_MAX_LOGIN_STR_SZ 30#define TDS_MAX_LIBRARY_STR_SZ 11typedef struct tds_login { TDS_CHAR host_name[TDS_MAX_LOGIN_STR_SZ+1]; TDS_CHAR user_name[TDS_MAX_LOGIN_STR_SZ+1]; /* FIXME temporary fix, 40 pwd max len */ TDS_CHAR password[40+1]; TDS_TINYINT bulk_copy; TDS_CHAR app_name[TDS_MAX_LOGIN_STR_SZ+1]; TDS_CHAR server_name[TDS_MAX_LOGIN_STR_SZ+1]; TDS_TINYINT major_version; /* TDS version */ TDS_TINYINT minor_version; /* TDS version */ /* Ct-Library, DB-Library, TDS-Library or ODBC */ TDS_CHAR library[TDS_MAX_LIBRARY_STR_SZ+1]; TDS_CHAR language[TDS_MAX_LOGIN_STR_SZ+1]; /* ie us-english */ TDS_TINYINT encrypted; TDS_CHAR char_set[TDS_MAX_LOGIN_STR_SZ+1]; /* ie iso_1 */ TDS_SMALLINT block_size; TDS_TINYINT suppress_language; TDS_INT connect_timeout; TDS_INT query_timeout; TDS_INT longquery_timeout; void (*longquery_func)(long lHint); long longquery_param; unsigned char capabilities[TDS_MAX_CAPABILITY]; int port;} TDSLOGIN;#ifdef NCBI_FTDS#define NCBI_NUM_SERVERS 8#endiftypedef struct tds_config_info { char *server_name; char *host;#ifdef NCBI_FTDS char *ip_addr[NCBI_NUM_SERVERS]; int port[NCBI_NUM_SERVERS];#else char *ip_addr; int port;#endif TDS_SMALLINT minor_version; TDS_SMALLINT major_version; int block_size; char *language; char *char_set; char *database; char *dump_file; int broken_dates; int broken_money; int timeout; int connect_timeout; char *host_name; char *default_domain; int try_server_login; int try_domain_login; int xdomain_auth; int debug_level; int emul_little_endian; int text_size; char *app_name; char *user_name; char *password; char *library; int bulk_copy; int suppress_language; int encrypted; char *client_charset;} TDSCONFIGINFO;typedef struct tds_loc_info { char *language; char *char_set; char *date_fmt;} TDSLOCINFO;/* structure for storing data about regular and compute rows */ typedef struct tds_column_info { TDS_SMALLINT column_type; TDS_SMALLINT column_type_save; TDS_SMALLINT column_usertype; TDS_SMALLINT column_flags; TDS_INT column_size; TDS_INT column_offset; TDS_TINYINT column_namelen; TDS_TINYINT column_varint_size;#ifdef NCBI_FTDS TDS_CHAR column_name[140]; TDS_CHAR full_column_name[140];#else TDS_CHAR column_name[256];#endif TDS_SMALLINT column_bindtype; TDS_SMALLINT column_bindfmt; TDS_UINT column_bindlen; TDS_CHAR *column_nullbind; TDS_CHAR *varaddr; TDS_CHAR *column_lenbind; TDS_SMALLINT column_prec; TDS_SMALLINT column_scale; TDS_INT column_textsize; TDS_INT column_textpos; TDS_INT column_text_sqlgetdatapos; TDS_CHAR column_textptr[16]; TDS_CHAR column_timestamp[8]; TDS_CHAR *column_textvalue; TDS_TINYINT column_nullable; TDS_TINYINT column_writeable; TDS_TINYINT column_identity; TDS_TINYINT column_unicodedata; TDS_CHAR collation[5]; TDS_INT cur_row_size; /* size of this column in the current row */} TDSCOLINFO;typedef struct tds_result_info { TDS_SMALLINT rows_exist; TDS_INT row_count; TDS_INT row_size; TDS_SMALLINT num_cols; TDS_TINYINT more_results; TDSCOLINFO **columns; int null_info_size; unsigned char *current_row;} TDSRESULTINFO;/* values for tds->state */enum { TDS_QUERYING, TDS_PENDING, TDS_COMPLETED, TDS_CANCELED, TDS_DEAD};#define TDS_DBG_FUNC 7 #define TDS_DBG_INFO2 6#define TDS_DBG_INFO1 5#define TDS_DBG_NETWORK 4#define TDS_DBG_WARN 3#define TDS_DBG_ERROR 2#define TDS_DBG_SEVERE 1typedef struct tds_compute_info { TDS_SMALLINT num_cols; TDS_INT row_size; TDSCOLINFO **columns; int null_info_size; unsigned char *current_row;} TDSCOMPUTEINFO;typedef struct tds_param_info { TDS_SMALLINT num_cols; TDS_INT row_size; TDSCOLINFO **columns; int null_info_size; unsigned char *current_row;} TDSPARAMINFO;typedef struct tds_input_param { TDS_SMALLINT column_type; TDS_CHAR *varaddr; TDS_UINT column_bindlen; TDS_CHAR is_null;} TDSINPUTPARAM;typedef struct tds_msg_info { TDS_SMALLINT priv_msg_type; TDS_SMALLINT line_number; TDS_UINT msg_number; TDS_SMALLINT msg_state; TDS_SMALLINT msg_level; TDS_CHAR *server; TDS_CHAR *message; TDS_CHAR *proc_name; TDS_CHAR *sql_state;} TDSMSGINFO;#ifdef NCBI_FTDStypedef struct tds_blob_info { TDS_CHAR *textvalue; TDS_CHAR textptr[16]; TDS_CHAR timestamp[8];} TDSBLOBINFO;#endif/*** This is the current environment as reported by the server*/typedef struct tds_env_info { int block_size; char *language; char *charset; char *database;} TDSENVINFO;typedef struct tds_dynamic { char id[30]; int dyn_state; TDSRESULTINFO *res_info; int num_params; TDSINPUTPARAM **params;} TDSDYNAMIC;/* forward declaration */typedef struct tds_context TDSCONTEXT;typedef struct tds_socket TDSSOCKET;struct tds_context { TDSLOCINFO *locale; void *parent; /* handler */ int (*msg_handler)(TDSCONTEXT*, TDSSOCKET*, TDSMSGINFO*); int (*err_handler)(TDSCONTEXT*, TDSSOCKET*, TDSMSGINFO*);};struct tds_socket { /* fixed and connect time */ int s; TDS_SMALLINT major_version; TDS_SMALLINT minor_version; unsigned char capabilities[TDS_MAX_CAPABILITY]; unsigned char broken_dates; /* in/out buffers */ unsigned char *in_buf; unsigned char *out_buf; unsigned int in_buf_max; unsigned in_pos; unsigned out_pos; unsigned in_len; unsigned out_len; unsigned char out_flag; unsigned char last_packet; void *parent; /* info about current query */ TDSRESULTINFO *res_info; TDSCOMPUTEINFO *comp_info; TDSPARAMINFO *param_info; TDS_TINYINT has_status; TDS_INT ret_status; TDSMSGINFO *msg_info; TDS_TINYINT state; int rows_affected; /* timeout stuff from Jeff */ TDS_INT timeout; TDS_INT longquery_timeout; void (*longquery_func)(long lHint); long longquery_param; time_t queryStarttime; TDSENVINFO *env; /* dynamic placeholder stuff */ int num_dyns; int cur_dyn_elem; TDSDYNAMIC **dyns; int emul_little_endian; char *date_fmt; TDSCONTEXT *tds_ctx; void *iconv_info;#ifdef NCBI_FTDS /* bcp stuff */ int packet_count; int f_batch; int rows_in_batch;#endif /** config for login stuff. After login this field is NULL */ TDSCONFIGINFO *config;};void tds_set_longquery_handler(TDSLOGIN * tds_login, void (* longquery_func)(long), long longquery_param);void tds_set_timeouts(TDSLOGIN *tds_login, int connect, int query, int longquery);int tds_write_packet(TDSSOCKET *tds,unsigned char final);int tds_init_write_buf(TDSSOCKET *tds);void tds_free_result_info(TDSRESULTINFO *info);void tds_free_socket(TDSSOCKET *tds);void tds_free_config(TDSCONFIGINFO *config);void tds_free_all_results(TDSSOCKET *tds);void tds_free_results(TDSRESULTINFO *res_info);void tds_free_param_results(TDSPARAMINFO *param_info);void tds_free_column(TDSCOLINFO *column);void tds_free_msg(TDSMSGINFO *msg_info);int tds_put_n(TDSSOCKET *tds, const unsigned char *buf, int n);int tds_put_string(TDSSOCKET *tds, const char *buf, int n);int tds_put_int(TDSSOCKET *tds, TDS_INT i);int tds_put_smallint(TDSSOCKET *tds, TDS_SMALLINT si);int tds_put_tinyint(TDSSOCKET *tds, TDS_TINYINT ti);int tds_put_byte(TDSSOCKET *tds, unsigned char c);unsigned char tds_get_byte(TDSSOCKET *tds);void tds_unget_byte(TDSSOCKET *tds);TDS_INT tds_get_int(TDSSOCKET *tds);TDS_SMALLINT tds_get_smallint(TDSSOCKET *tds);char *tds_get_n(TDSSOCKET *tds, void *dest, int n);char *tds_get_string(TDSSOCKET *tds, void *dest, int n);char *tds_get_ntstring(TDSSOCKET *tds, char *dest, int n);TDSRESULTINFO *tds_alloc_results(int num_cols);TDSCOMPUTEINFO *tds_alloc_compute_results(int num_cols);TDSCONTEXT *tds_alloc_context();void tds_free_context(TDSCONTEXT *locale);TDSSOCKET *tds_alloc_socket(TDSCONTEXT *context, int bufsize);TDSCONFIGINFO *tds_get_config(TDSSOCKET *tds, TDSLOGIN *login, TDSLOCINFO *locale);TDSLOCINFO *tds_get_locale();void *tds_alloc_row(TDSRESULTINFO *res_info);char *tds_msg_get_proc_name(TDSSOCKET *tds);TDSLOGIN *tds_alloc_login();TDSDYNAMIC *tds_alloc_dynamic(TDSSOCKET *tds, char *id);void tds_free_login(TDSLOGIN *login);TDSCONFIGINFO *tds_alloc_config(TDSLOCINFO *locale);TDSLOCINFO *tds_alloc_locale();void tds_free_locale(TDSLOCINFO *locale);TDSSOCKET *tds_connect(TDSLOGIN *login, TDSCONTEXT *context, void *parent);TDSINPUTPARAM *tds_add_input_param(TDSDYNAMIC *dyn);void tds_set_packet(TDSLOGIN *tds_login, short packet_size);void tds_set_port(TDSLOGIN *tds_login, int port);void tds_set_passwd(TDSLOGIN *tds_login, char *password);void tds_set_bulk(TDSLOGIN *tds_login, TDS_TINYINT enabled);void tds_set_user(TDSLOGIN *tds_login, char *username);void tds_set_app(TDSLOGIN *tds_login, char *application);void tds_set_host(TDSLOGIN *tds_login, char *hostname);void tds_set_library(TDSLOGIN *tds_login, char *library);void tds_set_server(TDSLOGIN *tds_login, char *server);void tds_set_charset(TDSLOGIN *tds_login, char *charset);void tds_set_language(TDSLOGIN *tds_login, char *language);void tds_set_version(TDSLOGIN *tds_login, short major_ver, short minor_ver);void tds_set_capabilities(TDSLOGIN *tds_login, unsigned char *capabilities, int size);int tds_submit_query(TDSSOCKET *tds, char *query);int tds_process_result_tokens(TDSSOCKET *tds);int tds_process_row_tokens(TDSSOCKET *tds);int tds_process_env_chg(TDSSOCKET *tds);int tds_process_default_tokens(TDSSOCKET *tds, int marker);TDS_INT tds_process_end(TDSSOCKET *tds, int marker, int *more, int *canceled);int tds_client_msg(TDSCONTEXT *tds_ctx, TDSSOCKET *tds, int msgnum, int level, int state, int line, char *message);int tds_reset_msg_info(TDSMSGINFO *msg_info);void tds_set_parent(TDSSOCKET* tds, void* the_parent);void* tds_get_parent(TDSSOCKET* tds);void tds_set_null(unsigned char *current_row, int column);void tds_clr_null(unsigned char *current_row, int column);int tds_get_null(unsigned char *current_row, int column);int tds7_send_login(TDSSOCKET *tds, TDSCONFIGINFO *config);unsigned char *tds7_crypt_pass(const unsigned char *clear_pass, int len, unsigned char *crypt_pass);int tds_lookup_dynamic(TDSSOCKET *tds, char *id);/* iconv.c */void tds_iconv_open(TDSSOCKET *tds, char *charset);void tds_iconv_close(TDSSOCKET *tds);unsigned char *tds7_ascii2unicode(TDSSOCKET *tds, const char *in_string, char *out_string, int maxlen);char *tds7_unicode2ascii(TDSSOCKET *tds, const char *in_string, char *out_string, int len); /* threadsafe.c */char *tds_timestamp_str(char *str, int maxlen);struct hostent *tds_gethostbyname_r(const char *servername, struct hostent *result, char *buffer, int buflen, int *h_errnop);struct hostent *tds_gethostbyaddr_r(const char *addr, int len, int type, struct hostent *result, char *buffer, int buflen, int *h_errnop);struct servent *tds_getservbyname_r(const char *name, char *proto, struct servent *result, char *buffer, int buflen);char *tds_strtok_r(char *s, const char *delim, char **ptrptr);typedef struct tds_answer{ unsigned char lm_resp[24]; unsigned char nt_resp[24];} TDSANSWER;void tds_answer_challenge(char *passwd, char *challenge,TDSANSWER* answer);#define IS_TDS42(x) (x->major_version==4 && x->minor_version==2)#define IS_TDS46(x) (x->major_version==4 && x->minor_version==6)#define IS_TDS50(x) (x->major_version==5 && x->minor_version==0)#define IS_TDS70(x) (x->major_version==7 && x->minor_version==0)#define IS_TDS80(x) (x->major_version==8 && x->minor_version==0)#define IS_TDS7_PLUS(x) ( IS_TDS70(x) || IS_TDS80(x) )#ifdef __cplusplus}#endif #endif /* _tds_h_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -