mtollari 63d98e39cd Patch level : 12.0 no-patch
Files correlati     : 
Commento            : 
- Creazione nuova cartella per contenere tutte le librerie esterne
- Aggiunta nuova libreria sqlapi per interfacciare campo a vari DB

git-svn-id: svn://10.65.10.50/branches/R_10_00@24149 c028cbd2-c16b-5b4b-a496-9718f37d4682
2017-10-26 09:07:39 +00:00

1953 lines
55 KiB
C

/*
** SAP Open Client/Server
** Copyright (c) 2013 SAP AG or an SAP affiliate company. All rights reserved.
*/
#ifndef __CSPUBLIC_H__
#define __CSPUBLIC_H__
#include <string.h>
/*
** Include the core header files. These files contain the defines and
** data structures that are shared by all libraries.
*/
#ifndef __NO_INCLUDE__
#include <cstypes.h>
#include <sqlca.h>
#endif /* __NO_INCLUDE__ */
/*****************************************************************************
**
** Size defines used in client/server applications.
**
*****************************************************************************/
/*
** Defines for the safe string funtions.
*/
#define CS_STRLCPY cs_strlcpy
#define CS_STRLCAT cs_strlcat
#define CS_SNPRINTF cs_snprintf
/*
** Define the maximum size of a fully qualified table name.
*/
#define CS_OBJ_NAME (CS_INT)((CS_MAX_NAME * 3) + 4)
/*
** The maximum number of bytes in the server message or error message
** stored in the CS_SERVERMSG and CS_CLIENTMSG structures. If the total
** message is longer than this, multiple structures will be passed to the
** application program.
*/
#define CS_MAX_MSG (CS_INT)1024
/*
** The maximum number of bytes in a SAP timestamp.
*/
#define CS_TS_SIZE (CS_INT)8
/*
** The maximum number of bytes in SAP text pointers.
*/
#define CS_TP_SIZE (CS_INT)16
/*
** The size of the sqlstate array in the CS_SERVERMSG and CS_CLIENTMSG
** structures. Please note that this size is 2 bytes greater than what the
** standard specifies. Users should look at only the first 6 bytes in
** the array. That last 2 bytes are reserved to insure modulo 4 byte
** structure alignment.
*/
#define CS_SQLSTATE_SIZE (CS_INT)8
/*****************************************************************************
**
** Defines passed into Open Client/Server APIs.
**
*****************************************************************************/
/*
** Define all the library versions currently supported.
** If compile flag 'CS_NO_LARGE_IDENTIFIERS' is set, we need to use
** the old values for CS_VERSION_xxx for compatibility reasons.
** The compile flag 'CS_NO_LARGE_IDENTIFIERS' isn't supported anymore
** as of CS_VERSION_155.
** We want the compiler to return errors when the CS_NO_LARGE_IDENTIFIERS
** flag is used with versions >= CS_VERSION_155
*/
#ifdef CS_NO_LARGE_IDENTIFIERS
#define CS_VERSION_100 (CS_INT)112
#define CS_VERSION_110 (CS_INT)1100
#define CS_VERSION_120 CS_VERSION_110
#define CS_VERSION_125 (CS_INT)12500
#define CS_VERSION_150 (CS_INT)15000
#else
#define CS_VERSION_100 (CS_INT)113
#define CS_VERSION_110 (CS_INT)1101
#define CS_VERSION_120 CS_VERSION_110
#define CS_VERSION_125 (CS_INT)12501
#define CS_VERSION_150 (CS_INT)15001
#define CS_VERSION_155 (CS_INT)15501
#define CS_VERSION_157 (CS_INT)15701
#define CS_VERSION_160 (CS_INT)16001
#endif /* CS_NO_LARGE_IDENTIFIERS */
#define CS_CURRENT_VERSION CS_VERSION_160
/*
** Action flags used.
** CS_CACHE currently only used by OMI apis
*/
#define CS_GET (CS_INT)33
#define CS_SET (CS_INT)34
#define CS_CLEAR (CS_INT)35
#define CS_INIT (CS_INT)36
#define CS_STATUS (CS_INT)37
#define CS_MSGLIMIT (CS_INT)38
#define CS_SEND (CS_INT)39
#define CS_SUPPORTED (CS_INT)40
#define CS_CACHE (CS_INT)41
/*
** Bind indicator values. These are preferred when passing data into
** Client Library or Server Library, since they add the appropriate cast.
*/
#define CS_GOODDATA (CS_SMALLINT)0
#define CS_NULLDATA (CS_SMALLINT)(-1)
/*
** Define ct_debug() operations.
*/
#define CS_SET_FLAG (CS_INT)1700
#define CS_CLEAR_FLAG (CS_INT)1701
#define CS_SET_DBG_FILE (CS_INT)1702
#define CS_SET_PROTOCOL_FILE (CS_INT)1703
/*
** Define ct_debug() types of trace information.
*/
#define CS_DBG_ALL (CS_INT)0x1
#define CS_DBG_ASYNC (CS_INT)0x2
#define CS_DBG_ERROR (CS_INT)0x4
#define CS_DBG_MEM (CS_INT)0x8
#define CS_DBG_PROTOCOL (CS_INT)0x10
#define CS_DBG_PROTOCOL_STATES (CS_INT)0x20
#define CS_DBG_API_STATES (CS_INT)0x40
#define CS_DBG_DIAG (CS_INT)0x80
#define CS_DBG_NETWORK (CS_INT)0x100
#define CS_DBG_API_LOGCALL (CS_INT)0x200
#define CS_DBG_CTL_INFO (CS_INT)0x400
#define CS_DBG_SSL (CS_INT)0x800
/*
** Cancel types.
*/
#define CS_CANCEL_CURRENT (CS_INT)6000
#define CS_CANCEL_ALL (CS_INT)6001
#define CS_CANCEL_ATTN (CS_INT)6002
#define CS_CANCEL_ABORT_NOTIF (CS_INT)6003
/*
** Cursor fetch options.
*/
#define CS_FIRST (CS_INT)3000
#define CS_NEXT (CS_INT)3001
#define CS_PREV (CS_INT)3002
#define CS_LAST (CS_INT)3003
#define CS_ABSOLUTE (CS_INT)3004
#define CS_RELATIVE (CS_INT)3005
/*
** Op codes used in cs_calc().
*/
#define CS_ADD (CS_INT)1
#define CS_SUB (CS_INT)2
#define CS_MULT (CS_INT)3
#define CS_DIV (CS_INT)4
#define CS_ZERO (CS_INT)5
/*
** The cs_dt_info() types.
*/
#define CS_MONTH (CS_INT)7340
#define CS_SHORTMONTH (CS_INT)7341
#define CS_DAYNAME (CS_INT)7342
#define CS_DATEORDER (CS_INT)7343
#define CS_12HOUR (CS_INT)7344
#define CS_DT_CONVFMT (CS_INT)7345
/*
** The cs_strcmp() options.
*/
#define CS_COMPARE (CS_INT)7440
#define CS_SORT (CS_INT)7441
/*
** Callback types.
*/
#define CS_COMPLETION_CB (CS_INT)1
#define CS_SERVERMSG_CB (CS_INT)2
#define CS_CLIENTMSG_CB (CS_INT)3
#define CS_NOTIF_CB (CS_INT)4
#define CS_ENCRYPT_CB (CS_INT)5
#define CS_CHALLENGE_CB (CS_INT)6
#define CS_DS_LOOKUP_CB (CS_INT)7
#define CS_SECSESSION_CB (CS_INT)8
#define CS_SSLVALIDATE_CB (CS_INT)9
#define CS_DONEPROC_CB (CS_INT)10
#define CS_EXTENDED_ENCRYPT_CB (CS_INT)11
#define CS_DR_MAP_CB (CS_INT)12
/*
** To install a signal callback, the type needs to calculated as an
** offset of the operating-system-specific signal number and the
** following define. For example, to install a callback handler for a
** SIGALRM signal, pass (CS_SIGNAL_CB + SIGALRM) to the ct_callback()
** routine.
*/
#define CS_SIGNAL_CB (CS_INT)100
/*
** Exit and close flags.
*/
#define CS_FORCE_EXIT (CS_INT)300
#define CS_FORCE_CLOSE (CS_INT)301
/*
** ct_diag() and cs_diag() type flags.
*/
#define CS_CLIENTMSG_TYPE (CS_INT)4700
#define CS_SERVERMSG_TYPE (CS_INT)4701
#define CS_ALLMSG_TYPE (CS_INT)4702
#define SQLCA_TYPE (CS_INT)4703
#define SQLCODE_TYPE (CS_INT)4704
#define SQLSTATE_TYPE (CS_INT)4705
/*
** Compute info types.
*/
#define CS_COMP_OP (CS_INT)5350
#define CS_COMP_ID (CS_INT)5351
#define CS_COMP_COLID (CS_INT)5352
#define CS_COMP_BYLIST (CS_INT)5353
#define CS_BYLIST_LEN (CS_INT)5354
/*
** Compute info operators.
*/
#define CS_OP_SUM (CS_INT)5370
#define CS_OP_AVG (CS_INT)5371
#define CS_OP_COUNT (CS_INT)5372
#define CS_OP_MIN (CS_INT)5373
#define CS_OP_MAX (CS_INT)5374
/*
** Browse types.
*/
#define CS_ISBROWSE (CS_INT)9000
#define CS_TABNUM (CS_INT)9001
#define CS_TABNAME (CS_INT)9002
/*
** Result types from ct_results().
*/
#define CS_ROW_RESULT (CS_INT)4040
#define CS_CURSOR_RESULT (CS_INT)4041
#define CS_PARAM_RESULT (CS_INT)4042
#define CS_STATUS_RESULT (CS_INT)4043
#define CS_MSG_RESULT (CS_INT)4044
#define CS_COMPUTE_RESULT (CS_INT)4045
#define CS_CMD_DONE (CS_INT)4046
#define CS_CMD_SUCCEED (CS_INT)4047
#define CS_CMD_FAIL (CS_INT)4048
#define CS_ROWFMT_RESULT (CS_INT)4049
#define CS_COMPUTEFMT_RESULT (CS_INT)4050
#define CS_DESCRIBE_RESULT (CS_INT)4051
/*
** Flags for getting result info using ct_res_info().
*/
#define CS_ROW_COUNT (CS_INT)800
#define CS_CMD_NUMBER (CS_INT)801
#define CS_NUM_COMPUTES (CS_INT)802
#define CS_NUMDATA (CS_INT)803
#define CS_ORDERBY_COLS (CS_INT)804
#define CS_NUMORDERCOLS (CS_INT)805
#define CS_MSGTYPE (CS_INT)806
#define CS_BROWSE_INFO (CS_INT)807
#define CS_TRANS_STATE (CS_INT)808
#define CS_TOKEN_TYPE (CS_INT)809
/*
** Possible values for CS_TRANS_STATE.
*/
#define CS_TRAN_UNDEFINED (CS_INT)0
#define CS_TRAN_IN_PROGRESS (CS_INT)1
#define CS_TRAN_COMPLETED (CS_INT)2
#define CS_TRAN_FAIL (CS_INT)3
#define CS_TRAN_STMT_FAIL (CS_INT)4
/*
** Define the invalid count that the application gets when
** ct_res_info() is called at the wrong time.
*/
#define CS_NO_COUNT (CS_INT)-1
/*****************************************************************************
**
** Commands in Open Client/Server APIs.
**
*****************************************************************************/
/*
** ct_command() command types.
*/
#define CS_LANG_CMD (CS_INT)148
#define CS_RPC_CMD (CS_INT)149
#define CS_MSG_CMD (CS_INT)150
#define CS_SEND_DATA_CMD (CS_INT)151
#define CS_PACKAGE_CMD (CS_INT)152
#define CS_SEND_BULK_CMD (CS_INT)153
#define CS_SEND_DATA_NOCMD (CS_INT)154
#define CS_RAW_CMD (CS_INT)155
/*
** ct_cursor() command types.
*/
#define CS_CURSOR_DECLARE (CS_INT)700
#define CS_CURSOR_OPEN (CS_INT)701
#define CS_CURSOR_ROWS (CS_INT)703
#define CS_CURSOR_UPDATE (CS_INT)704
#define CS_CURSOR_DELETE (CS_INT)705
#define CS_CURSOR_CLOSE (CS_INT)706
#define CS_CURSOR_DEALLOC (CS_INT)707
#define CS_CURSOR_OPTION (CS_INT)725
/*
** Open Server-specific cursor command types.
*/
#define CS_CURSOR_FETCH (CS_INT)708
#define CS_CURSOR_INFO (CS_INT)709
/*
** ct_dyndesc() command types.
*/
#define CS_ALLOC (CS_INT)710
#define CS_DEALLOC (CS_INT)711
#define CS_USE_DESC (CS_INT)712
#define CS_GETCNT (CS_INT)713
#define CS_SETCNT (CS_INT)714
#define CS_GETATTR (CS_INT)715
#define CS_SETATTR (CS_INT)716
/*
** ct_dynamic() command types.
*/
#define CS_PREPARE (CS_INT)717
#define CS_EXECUTE (CS_INT)718
#define CS_EXEC_IMMEDIATE (CS_INT)719
#define CS_DESCRIBE_INPUT (CS_INT)720
#define CS_DESCRIBE_INPUTIN (CS_INT)320 /* CS_DESCRIBE_INPUT & CS_INPUT */
#define CS_DESCRIBE_OUTPUT (CS_INT)721
#define CS_DYN_CURSOR_DECLARE (CS_INT)722
/*
** ct_dynsqlda() arguments and actions
*/
#define CS_SQLDA_SYBASE (CS_INT)729
#define CS_GET_IN (CS_INT)730
#define CS_GET_OUT (CS_INT)731
#define CS_SQLDA_BIND (CS_INT)732
#define CS_SQLDA_PARAM (CS_INT)733
/*
** Open Server-specific dynamic command types.
*/
#define CS_PROCNAME (CS_INT)723
#define CS_ACK (CS_INT)724
/*
** ct_ds_objinfo() objinfo types.
*/
#define CS_OBJ_CLASSOID (CS_INT)725
#define CS_OBJ_DNAME (CS_INT)726
#define CS_OBJ_NUMATTR (CS_INT)727
#define CS_OBJ_ATRRIBUTE (CS_INT)728
/*
** Command options
*/
#define CS_RECOMPILE (CS_INT)188
#define CS_NO_RECOMPILE (CS_INT)189
#define CS_BULK_INIT (CS_INT)190
#define CS_BULK_CONT (CS_INT)191
#define CS_BULK_DATA (CS_INT)192
#define CS_COLUMN_DATA (CS_INT)193
/*
** Cursor options.
*/
#define CS_FOR_UPDATE (CS_INT)0x0001
#define CS_READ_ONLY (CS_INT)0x0002
#define CS_DYNAMIC (CS_INT)0x0004 /* Open Server only */
#define CS_RESTORE_OPEN (CS_INT)0x0008 /* CT-Lib only */
#define CS_MORE (CS_INT)0x0010
#define CS_END (CS_INT)0x0020
#define CS_IMPLICIT_CURSOR (CS_INT)0x0040 /* Implicit, CT-Lib */
#define CS_SCROLL_SENSITIVE (CS_INT)0x0080 /* Scrollable cursor, reserved */
#define CS_SCROLL_INSENSITIVE (CS_INT)0x0100 /* Scrollable cursor, as default */
#define CS_SCROLL_SEMISENSITIVE (CS_INT)0x0200 /* Scrollable cursor */
#define CS_SCROLL_KEYSETDRIVEN (CS_INT)0x0400 /* Scrollable cursor, reserved */
#define CS_SCROLL_CURSOR (CS_INT)0x0800 /* "Default", internal */
#define CS_NOSCROLL_INSENSITIVE (CS_INT)0x1000 /* Non-scroll insensitive */
#define CS_CUR_RELLOCKS_ONCLOSE (CS_INT)0x2000 /* Release locks on curclose */
/*
** SAP defined message ids for CS_MSG_CMDs.
*/
#define CS_MSG_GETLABELS (CS_INT)6
#define CS_MSG_LABELS (CS_INT)7
#define CS_MSG_TABLENAME (CS_INT)8
#define CS_PARSE_TREE (CS_INT)8710
/*
** Minimum and maximum user-defined message id for CS_MSG_CMDs.
*/
#define CS_USER_MSGID (CS_INT)32768
#define CS_USER_MAX_MSGID (CS_INT)65535
/*
** Defines for sp_regwatch registered procedure
*/
#define CS_NOTIFY_ONCE 0x0002 /* one-time notification request. */
#define CS_NOTIFY_ALWAYS 0x0004 /* permanent notification request. */
#define CS_NOTIFY_WAIT 0x0020 /* blocking notification request. */
#define CS_NOTIFY_NOWAIT 0x0040 /* non-blocking notification request. */
/*****************************************************************************
**
** Open Client properties.
**
*****************************************************************************/
/*
** Properties that are used in *_props() functions.
*/
#define CS_USERNAME (CS_INT)9100
#define CS_PASSWORD (CS_INT)9101
#define CS_APPNAME (CS_INT)9102
#define CS_HOSTNAME (CS_INT)9103
#define CS_LOGIN_STATUS (CS_INT)9104
#define CS_TDS_VERSION (CS_INT)9105
#define CS_CHARSETCNV (CS_INT)9106
#define CS_PACKETSIZE (CS_INT)9107
#define CS_USERDATA (CS_INT)9108
#define CS_COMMBLOCK (CS_INT)9109
#define CS_NETIO (CS_INT)9110
#define CS_NOINTERRUPT (CS_INT)9111
#define CS_TEXTLIMIT (CS_INT)9112
#define CS_HIDDEN_KEYS (CS_INT)9113
#define CS_VERSION (CS_INT)9114
#define CS_IFILE (CS_INT)9115
#define CS_LOGIN_TIMEOUT (CS_INT)9116
#define CS_TIMEOUT (CS_INT)9117
#define CS_MAX_CONNECT (CS_INT)9118
#define CS_MESSAGE_CB (CS_INT)9119
#define CS_EXPOSE_FMTS (CS_INT)9120
#define CS_EXTRA_INF (CS_INT)9121
#define CS_TRANSACTION_NAME (CS_INT)9122
#define CS_ANSI_BINDS (CS_INT)9123
#define CS_BULK_LOGIN (CS_INT)9124
#define CS_LOC_PROP (CS_INT)9125
#define CS_CUR_STATUS (CS_INT)9126
#define CS_CUR_ID (CS_INT)9127
#define CS_CUR_NAME (CS_INT)9128
#define CS_CUR_ROWCOUNT (CS_INT)9129
#define CS_PARENT_HANDLE (CS_INT)9130
#define CS_EED_CMD (CS_INT)9131
#define CS_DIAG_TIMEOUT (CS_INT)9132
#define CS_DISABLE_POLL (CS_INT)9133
#define CS_NOTIF_CMD (CS_INT)9134
#define CS_SEC_ENCRYPTION (CS_INT)9135
#define CS_SEC_CHALLENGE (CS_INT)9136
#define CS_SEC_NEGOTIATE (CS_INT)9137
#define CS_MEM_POOL (CS_INT)9138
#define CS_USER_ALLOC (CS_INT)9139
#define CS_USER_FREE (CS_INT)9140
#define CS_ENDPOINT (CS_INT)9141
#define CS_NO_TRUNCATE (CS_INT)9142
#define CS_CON_STATUS (CS_INT)9143
#define CS_VER_STRING (CS_INT)9144
#define CS_ASYNC_NOTIFS (CS_INT)9145
#define CS_SERVERNAME (CS_INT)9146
/* For CS_SERVERADDR (9206) see below */
#define CS_THREAD_RESOURCE (CS_INT)9147
#define CS_NOAPI_CHK (CS_INT)9148
#define CS_SEC_APPDEFINED (CS_INT)9149
#define CS_NOCHARSETCNV_REQD (CS_INT)9150
#define CS_STICKY_BINDS (CS_INT)9151
#define CS_HAVE_CMD (CS_INT)9152
#define CS_HAVE_BINDS (CS_INT)9153
#define CS_HAVE_CUROPEN (CS_INT)9154
#define CS_EXTERNAL_CONFIG (CS_INT)9155
#define CS_CONFIG_FILE (CS_INT)9156
#define CS_CONFIG_BY_SERVERNAME (CS_INT)9157
/*
** Directory Service connection properties
*/
#define CS_DS_CHAIN (CS_INT)9158
#define CS_DS_EXPANDALIAS (CS_INT)9159
#define CS_DS_COPY (CS_INT)9160
#define CS_DS_LOCALSCOPE (CS_INT)9161
#define CS_DS_PREFERCHAIN (CS_INT)9162
#define CS_DS_SCOPE (CS_INT)9163
#define CS_DS_SIZELIMIT (CS_INT)9164
#define CS_DS_TIMELIMIT (CS_INT)9165
#define CS_DS_PRINCIPAL (CS_INT)9166
/* For CS_DS_PASSWORD (9198) see below */
#define CS_DS_REFERRAL (CS_INT)9167
#define CS_DS_SEARCH (CS_INT)9168
#define CS_DS_DITBASE (CS_INT)9169
#define CS_DS_FAILOVER (CS_INT)9170
#define CS_NET_TRANADDR (CS_INT)9171
#define CS_DS_PROVIDER (CS_INT)9172
#define CS_RETRY_COUNT (CS_INT)9173
#define CS_LOOP_DELAY (CS_INT)9174
/*
** Properties for Security services support
*/
#define CS_SEC_NETWORKAUTH (CS_INT)9175
#define CS_SEC_DELEGATION (CS_INT)9176
#define CS_SEC_MUTUALAUTH (CS_INT)9177
#define CS_SEC_INTEGRITY (CS_INT)9178
#define CS_SEC_CONFIDENTIALITY (CS_INT)9179
#define CS_SEC_CREDTIMEOUT (CS_INT)9180
#define CS_SEC_SESSTIMEOUT (CS_INT)9181
#define CS_SEC_DETECTREPLAY (CS_INT)9182
#define CS_SEC_DETECTSEQ (CS_INT)9183
#define CS_SEC_DATAORIGIN (CS_INT)9184
#define CS_SEC_MECHANISM (CS_INT)9185
#define CS_SEC_CREDENTIALS (CS_INT)9186
#define CS_SEC_CHANBIND (CS_INT)9187
#define CS_SEC_SERVERPRINCIPAL (CS_INT)9188
#define CS_SEC_KEYTAB (CS_INT)9189
/*
** More properties
*/
#define CS_ABORTCHK_INTERVAL (CS_INT)9190
#define CS_LOGIN_TYPE (CS_INT)9191
#define CS_CON_KEEPALIVE (CS_INT)9192
#define CS_CON_TCP_NODELAY (CS_INT)9193
#define CS_LOGIN_REMOTE_SERVER (CS_INT)9194
#define CS_LOGIN_REMOTE_PASSWD (CS_INT)9195
/*
** Property for HA failover
*/
#define CS_HAFAILOVER (CS_INT)9196
/*
** Property for reverting to behavior of earlier versions
*/
#define CS_BEHAVIOR (CS_INT)9197
/*
** Property for Directory services. (belongs with CS_DS_* above)
** Added at LDAP implementation time.
*/
#define CS_DS_PASSWORD (CS_INT)9198
/*
** Property for blklib user data.
*/
#define CS_BLKDATA (CS_INT)9199
/*
** Properties for SSL
*/
#define CS_PROP_SSL_PROTOVERSION (CS_INT)9200
#define CS_PROP_SSL_CIPHER (CS_INT)9201
#define CS_PROP_SSL_LOCALID (CS_INT)9202
#define CS_PROP_SSL_CA (CS_INT)9203
#define CS_PROP_TLS_KEYREGEN (CS_INT)9205
/*
** Property for connecting to ASE using host and port.
*/
#define CS_SERVERADDR (CS_INT)9206
/*
** Properties related to use of login redirection and
** Cluster HA extensions.
*/
#define CS_PROP_REDIRECT (CS_INT)9207
#define CS_PROP_EXTENDEDFAILOVER (CS_INT)9208
#define CS_DS_RAND_OFFSET (CS_INT)9209
/*
** Property used to retrieve the ASE database SPID
** that is returned at login time. Note that this value
** may change should migration occur!
*/
#define CS_PROP_APPLICATION_SPID (CS_INT)9210
/*
** For ct_cmd_props(), scrollable cursor.
** CS_CUR_ROWPOSITION is reserved for future use.
*/
#define CS_CUR_TOTALROWS (CS_INT)9211
#define CS_CUR_ROWPOSITION (CS_INT)9212
/*
** For extended password encryption
*/
#define CS_SEC_EXTENDED_ENCRYPTION (CS_INT)9213
#define CS_SEC_NON_ENCRYPTION_RETRY (CS_INT)9214
/*
** For connection migration
*/
#define CS_PROP_MIGRATABLE (CS_INT)9215
/*
** For setting sybase home and an alternate libtcl config file location.
*/
#define CS_SYBASE_HOME (CS_INT)9216
#define CS_LIBTCL_CFG (CS_INT)9217
/*
** For setting default interfaces file
*/
#define CS_DEFAULT_IFILE (CS_INT)9218
/*
** To retrieve the CS_TRANADDR ct_connect successfully used to
** establish communication with the server.
*/
#define CS_CONNECTED_ADDR (CS_INT)9219
/*
** The connection allows partial text/image updates.
*/
#define CS_PARTIAL_TEXT (CS_INT)9220
/*
** The connection omits 'writetext' with ct_send_data().
*/
#define CS_SENDDATA_NOCMD (CS_INT)9221
/*
** When the application name was set to the executable name, this name
** will be used to parse ocs.cfg for its application specific section.
*/
#define CS_USE_DISCOVERED_APPNAME (CS_INT)9222
/*
** When the application name was set to the executable name, this setting
** will indicate how to 'sanitize' that name: all upper case, all lower case
** or no sanitization.
*/
#define CS_SANITIZE_DISC_APPNAME (CS_INT)9223
/*
** Allow an application to set the TCP send and receive buffer sizes.
** These are negotiated at the TCP layer and must be set before calling
** ct_connect.
*/
#define CS_TCP_RCVBUF (CS_INT)9224
#define CS_TCP_SNDBUF (CS_INT)9225
#define CS_TCP_LRGBUF 2146304
/*
** Allow row format information to be suppressed on subsequent execution
** of a prepared statement.
*/
#define CS_CMD_SUPPRESS_FMT (CS_INT)9226
/*
** The object name returned by user API ct_data_info() is bracketed.
*/
#define CS_PROP_BRACKETED_IDENT (CS_INT)9227
/*
** Set connection to be read-only as defined by server
** definition of read-only.
*/
#define CS_PROP_READONLY (CS_INT)9228
/*
** Allow database to be set at connection time.
** Also retrieve the name of the database currently being used on the server.
*/
#define CS_PROP_INITIAL_DATABASE (CS_INT)9229
#define CS_PROP_CURRENT_DATABASE (CS_INT)9230
#define CS_PROP_USE_LAST_DATABASE (CS_INT)9231
#define CS_PROP_FIPSMODE (CS_INT)9232
/* End of properties */
/*
** CS_DS_SCOPE Values
*/
#define CS_SCOPE_COUNTRY (CS_INT)1
#define CS_SCOPE_DMD (CS_INT)2
#define CS_SCOPE_WORLD (CS_INT)3
/*
** CS_DS_SEARCH Values
*/
#define CS_SEARCH_OBJECT (CS_INT)1
#define CS_SEARCH_ONE_LEVEL (CS_INT)2
#define CS_SEARCH_SUBTREE (CS_INT)3
/*
** Possible values for the CS_NETIO property.
*/
#define CS_SYNC_IO (CS_INT)8111
#define CS_ASYNC_IO (CS_INT)8112
#define CS_DEFER_IO (CS_INT)8113
/*
** Possible bit values for the CS_LOGIN_STATUS property.
*/
#define CS_CONSTAT_CONNECTED (CS_INT)0x1
#define CS_CONSTAT_DEAD (CS_INT)0x2
/*
** Possible bit values for the CS_CUR_STATUS property.
*/
#define CS_CURSTAT_NONE (CS_INT)0x0000
#define CS_CURSTAT_DECLARED (CS_INT)0x0001
#define CS_CURSTAT_OPEN (CS_INT)0x0002
#define CS_CURSTAT_CLOSED (CS_INT)0x0004
#define CS_CURSTAT_RDONLY (CS_INT)0x0008
#define CS_CURSTAT_UPDATABLE (CS_INT)0x0010
#define CS_CURSTAT_ROWCOUNT (CS_INT)0x0020
#define CS_CURSTAT_DEALLOC (CS_INT)0x0040
#define CS_CURSTAT_SCROLLABLE (CS_INT)0x0080
#define CS_CURSTAT_IMPLICIT (CS_INT)0x0100
#define CS_CURSTAT_SENSITIVE (CS_INT)0x0200
#define CS_CURSTAT_INSENSITIVE (CS_INT)0x0400
#define CS_CURSTAT_SEMISENSITIVE (CS_INT)0x0800
#define CS_CURSTAT_KEYSETDRIVEN (CS_INT)0x1000
#define CS_CURSTAT_RELLOCKS_ONCLOSE (CS_INT)0x2000
/*
** Possible bit values for implicit cursor status
*/
#define CS_IMPCURSTAT_NONE (CS_INT)0x0000
#define CS_IMPCURSTAT_DECLARED (CS_INT)0x0001
#define CS_IMPCURSTAT_READROWS (CS_INT)0x0002
#define CS_IMPCURSTAT_CLOSED (CS_INT)0x0004
#define CS_IMPCURSTAT_SENDSUCCESS (CS_INT)0x0008
#define CS_IMPCURSTAT_FINALREAD (CS_INT)0x0010
#define CS_IMPCURSTAT_NOSEND (CS_INT)0x0020
#define CS_IMPCURSTAT_NOSENDDONE (CS_INT)0x0040
/*
** Possible values for the CS_TDS_VERSION property.
*/
#define CS_TDS_40 (CS_INT)7360
#define CS_TDS_42 (CS_INT)7361
#define CS_TDS_46 (CS_INT)7362
#define CS_TDS_495 (CS_INT)7363
#define CS_TDS_50 (CS_INT)7364
/*
** Possible values for the CS_BEHAVIOR property.
*/
#define CS_BEHAVIOR_080 (CS_INT)7369
#define CS_BEHAVIOR_100 (CS_INT)7370
#define CS_BEHAVIOR_110 (CS_INT)7371
#define CS_BEHAVIOR_120 (CS_INT)7372
#define CS_BEHAVIOR_125 (CS_INT)7373
/*
** Possible values for the CS_PROP_SSL_PROTOVERSION property.
**
** If 2.0 handshake is desired with SSL 3.0 or TLS 1.0, or
** CS_SSLVER_20HAND
*/
#define CS_SSLVER_20 (CS_INT)1
#define CS_SSLVER_30 (CS_INT)2
#define CS_SSLVER_TLS1 (CS_INT)3
#define CS_SSLVER_20HAND (CS_INT)0x80000000
/*
** Valid values for the CS_SANITIZE_DISC_APPNAME property.
*/
typedef enum cs_sanitize_conversion
{
CS_CNVRT_NOTHING,
CS_CNVRT_LOWERCASE,
CS_CNVRT_UPPERCASE
} CS_SANITIZE_CONVERSION;
/*
** Structure used with the CS_PROP_SSL_LOCALID property.
*/
typedef struct _cs_sslid
{
CS_CHAR *identity_file;
CS_CHAR *identity_password;
} CS_SSLIDENTITY;
/*
** Structure used to deal with certificates in the validate callback.
*/
typedef struct _cs_sslcertfield
{
CS_VOID *value;
CS_INT field_id;
CS_INT length;
} CS_SSLCERT_FIELD;
typedef struct _cs_sslcert
{
CS_INT field_count;
CS_INT extension_count;
CS_UINT start_date;
CS_UINT end_date;
CS_SSLCERT_FIELD *fieldptr;
CS_SSLCERT_FIELD *extensionptr;
} CS_SSLCERT;
typedef CS_INT (CS_PUBLIC * CS_CERT_CB) (
CS_VOID *user_data,
CS_SSLCERT *certptr,
CS_INT cert_count,
CS_INT valid
);
/*
** Defines for valid certificate fields.
*/
#define CS_SSLFLD_noMatch 0
#define CS_SSLFLD_md2 1
#define CS_SSLFLD_md4 2
#define CS_SSLFLD_md5 3
#define CS_SSLFLD_sha1 4
#define CS_SSLFLD_rsaEncryption 5
#define CS_SSLFLD_md2WithRSA 6
#define CS_SSLFLD_md4WithRSA 7
#define CS_SSLFLD_md5WithRSA 8
#define CS_SSLFLD_sha1WithRSA 9
#define CS_SSLFLD_dhKeyAgreement 10
#define CS_SSLFLD_pbeWithMD2AndDES_CBC 11
#define CS_SSLFLD_pbeWithMD5AndDES_CBC 12
#define CS_SSLFLD_emailAddress 13
#define CS_SSLFLD_unstructuredName 14
#define CS_SSLFLD_contentType 15
#define CS_SSLFLD_messageDigest 16
#define CS_SSLFLD_signingTime 17
#define CS_SSLFLD_counterSignature 18
#define CS_SSLFLD_challengePassword 19
#define CS_SSLFLD_unstructuredAddress 20
#define CS_SSLFLD_extendedCertificateAttributes 21
#define CS_SSLFLD_commonName 22
#define CS_SSLFLD_surName 23
#define CS_SSLFLD_serialNumber 24
#define CS_SSLFLD_countryName 25
#define CS_SSLFLD_localityName 26
#define CS_SSLFLD_stateProvinceName 27
#define CS_SSLFLD_streetAddress 28
#define CS_SSLFLD_organizationName 29
#define CS_SSLFLD_organizationalUnitName 30
#define CS_SSLFLD_title 31
#define CS_SSLFLD_description 32
#define CS_SSLFLD_businessCategory 33
#define CS_SSLFLD_postalAddress 34
#define CS_SSLFLD_postalCode 35
#define CS_SSLFLD_postOfficeBox 36
#define CS_SSLFLD_physicalDeliveryOfficeName 37
#define CS_SSLFLD_telephoneNumber 38
#define CS_SSLFLD_telexNumber 39
#define CS_SSLFLD_telexTerminalIdentifier 40
#define CS_SSLFLD_facsimileTelephoneNumber 41
#define CS_SSLFLD_x_121Address 42
#define CS_SSLFLD_internationalISDNNumber 43
#define CS_SSLFLD_registeredAddress 44
#define CS_SSLFLD_destinationIndicator 45
#define CS_SSLFLD_preferredDeliveryMethod 46
#define CS_SSLFLD_presentationAddress 47
#define CS_SSLFLD_supportedApplicationContext 48
#define CS_SSLFLD_member 49
#define CS_SSLFLD_owner 50
#define CS_SSLFLD_roleOccupant 51
#define CS_SSLFLD_mysteryPKCS7_PKCS5 52
#define CS_SSLFLD_netscapeCertType 53
#define CS_SSLFLD_netscapeBaseURL 54
#define CS_SSLFLD_netscapeRevocationURL 55
#define CS_SSLFLD_netscapeCARevocationURL 56
#define CS_SSLFLD_netscapeCertRenewalURL 57
#define CS_SSLFLD_netscapeCAPolicyURL 58
#define CS_SSLFLD_netscapeSSLServerName 59
#define CS_SSLFLD_netscapeComment 60
#define CS_SSLFLD_subjectDirectoryAttributes 61
#define CS_SSLFLD_subjectKeyIdentifier 62
#define CS_SSLFLD_keyUsage 63
#define CS_SSLFLD_privateKeyUsagePeriod 64
#define CS_SSLFLD_subjectAltName 65
#define CS_SSLFLD_issuerAltName 66
#define CS_SSLFLD_basicConstraints 67
#define CS_SSLFLD_crlNumber 68
#define CS_SSLFLD_crlReason 69
#define CS_SSLFLD_holdInstructionCode 70
#define CS_SSLFLD_invalidityDate 71
#define CS_SSLFLD_deltaCRLIndicator 72
#define CS_SSLFLD_issuingDistributionPoint 73
#define CS_SSLFLD_nameConstraints 74
#define CS_SSLFLD_certificatePolicies 75
#define CS_SSLFLD_policyMappings 76
#define CS_SSLFLD_policyConstraints 77
#define CS_SSLFLD_authorityKeyIdentifier 78
#define CS_SSLFLD_extendedKeyUsage 79
#define CS_SSLFLD_pkixSubjectInfoAccess 80
#define CS_SSLFLD_pkixAuthorityInfoAccess 81
#define CS_SSLFLD_pkixCPS 82
#define CS_SSLFLD_pkixUserNotice 83
#define CS_SSLFLD_pkixKPServerAuth 84
#define CS_SSLFLD_pkixKPClientAuth 85
#define CS_SSLFLD_pkixKPCodeSigning 86
#define CS_SSLFLD_pkixKPEmailProtection 87
#define CS_SSLFLD_pkixKPIPSECEndSystem 88
#define CS_SSLFLD_pkixKPIPSECTunnel 89
#define CS_SSLFLD_pkixKPIPSECUser 90
#define CS_SSLFLD_pkixKPTimeStamping 91
#define CS_SSLFLD_netscapeKPStepUp 92
#define CS_SSLFLD_microsoftKPServerGatedCrypto 93
#define CS_SSLFLD_sha1WithDSA 94
#define CS_SSLFLD_dsa 95
#define CS_SSLFLD_contentInfoData 96
#define CS_SSLFLD_contentInfoSignedData 97
#define CS_SSLFLD_contentInfoEnvelopedData 98
#define CS_SSLFLD_contentInfoSignedAndEnvelopedData 99
#define CS_SSLFLD_contentInfoDigestedData 100
#define CS_SSLFLD_contentInfoEncryptedData 101
#define CS_SSLFLD_keyBag 102
#define CS_SSLFLD_pkcs8ShroudedKeyBag 103
#define CS_SSLFLD_certBag 104
#define CS_SSLFLD_crlBag 105
#define CS_SSLFLD_secretBag 106
#define CS_SSLFLD_safeContentBag 107
#define CS_SSLFLD_pbeWithSHA1And128RC4 108
#define CS_SSLFLD_pbeWithSHA1And40BitRC4 109
#define CS_SSLFLD_pbeWithSHA1And3KeyTripleDESCBC 110
#define CS_SSLFLD_pbeWithSHA1And2KeyTripleDESCBC 111
#define CS_SSLFLD_pbeWithSHA1And128BitRC2CBC 112
#define CS_SSLFLD_pbeWithSHA1And40BitRC2CBC 113
#define CS_SSLFLD_desEDECBC3 114
#define CS_SSLFLD_rc2CBC 115
#define CS_SSLFLD_x509Certificate 116
#define CS_SSLFLD_dhPublicNumber 117
#define CS_SSLFLD_ecdhPublicNumber 118
#define CS_SSLFLD_ecdhPrivateNumber 119
#define CS_SSLFLD_ecPublicKey 120
#define CS_SSLFLD_ecPrivateKey 121
#define CS_SSLFLD_ecdsaWithSHA1 122
#define CS_SSLFLD_ecdsaec163a01 123
#define CS_SSLFLD_ecdsaec163a02 124
#define CS_SSLFLD_ecdsaec155b01 125
#define CS_SSLFLD_ecdsaec163b01 126
#define CS_SSLFLD_ecdsaec210b01 127
#define CS_SSLFLD_ecnraec163a01 128
#define CS_SSLFLD_ecnraec163a02 129
#define CS_SSLFLD_ecnraec155b01 130
#define CS_SSLFLD_ecnraec163b01 131
#define CS_SSLFLD_ecnraec210b01 132
#define CS_SSLFLD_curve113a01 133
#define CS_SSLFLD_curve163a01 134
#define CS_SSLFLD_curve163a02 135
#define CS_SSLFLD_curve163b01 136
/*
** Define values for SSL/TLS certificate validation checks
*/
#define CS_SSL_VALID_CERT 0
#define CS_SSL_INVALID_BADCHAIN 1
#define CS_SSL_INVALID_EXPCERT 2
#define CS_SSL_INVALID_INCOMPLETE 3
#define CS_SSL_INVALID_UNKNOWN 4
#define CS_SSL_INVALID_UNTRUSTED 5
#define CS_SSL_INVALID_MISSINGNAME 6
#define CS_SSL_INVALID_MISMATCHNAME 7
#define CS_SSL_INVALID_CERT 8
/*****************************************************************************
**
** Open Client/Server options.
**
*****************************************************************************/
/*
** The following is the list of all valid options:
*/
#define CS_OPT_DATEFIRST (CS_INT)5001 /* Set first day of week */
#define CS_OPT_TEXTSIZE (CS_INT)5002 /* Text size */
#define CS_OPT_STATS_TIME (CS_INT)5003 /* Server time statistics */
#define CS_OPT_STATS_IO (CS_INT)5004 /* Server I/O statistics */
#define CS_OPT_ROWCOUNT (CS_INT)5005 /* Maximum row count */
#define CS_OPT_NATLANG (CS_INT)5006 /* National Language */
#define CS_OPT_DATEFORMAT (CS_INT)5007 /* Date format */
#define CS_OPT_ISOLATION (CS_INT)5008 /* Transaction isolation
** level */
#define CS_OPT_AUTHON (CS_INT)5009 /* Set authority level on */
#define CS_OPT_CHARSET (CS_INT)5010 /* Character set */
#define CS_OPT_SHOWPLAN (CS_INT)5013 /* show execution plan */
#define CS_OPT_NOEXEC (CS_INT)5014 /* don't execute query */
#define CS_OPT_ARITHIGNORE (CS_INT)5015 /* ignore arithmetic
** exceptions */
#define CS_OPT_TRUNCIGNORE (CS_INT)5016 /* support ANSI null values */
#define CS_OPT_ARITHABORT (CS_INT)5017 /* abort on arithmetic
** exceptions */
#define CS_OPT_PARSEONLY (CS_INT)5018 /* parse only, return error
** msgs */
#define CS_OPT_GETDATA (CS_INT)5020 /* return trigger data */
#define CS_OPT_NOCOUNT (CS_INT)5021 /* don't print done count */
#define CS_OPT_FORCEPLAN (CS_INT)5023 /* force variable substitute
** order */
#define CS_OPT_FORMATONLY (CS_INT)5024 /* send format w/o row */
#define CS_OPT_CHAINXACTS (CS_INT)5025 /* chained transaction mode */
#define CS_OPT_CURCLOSEONXACT (CS_INT)5026 /* close cursor on end trans */
#define CS_OPT_FIPSFLAG (CS_INT)5027 /* FIPS flag */
#define CS_OPT_RESTREES (CS_INT)5028 /* return resolution trees */
#define CS_OPT_IDENTITYON (CS_INT)5029 /* turn on explicit identity */
#define CS_OPT_CURREAD (CS_INT)5030 /* Set session label @@curread */
#define CS_OPT_CURWRITE (CS_INT)5031 /* Set session label @@curwrite */
#define CS_OPT_IDENTITYOFF (CS_INT)5032 /* turn off explicit identity */
#define CS_OPT_AUTHOFF (CS_INT)5033 /* Set authority level off */
#define CS_OPT_ANSINULL (CS_INT)5034 /* ANSI NULLS behavior */
#define CS_OPT_QUOTED_IDENT (CS_INT)5035 /* Quoted identifiers */
#define CS_OPT_ANSIPERM (CS_INT)5036 /* ANSI permission checking */
#define CS_OPT_STR_RTRUNC (CS_INT)5037 /* ANSI right truncation */
#define CS_OPT_SORTMERGE (CS_INT)5038 /* Sort merge join status */
#define CS_OPT_JTC (CS_INT)5039 /* Enable/disable JTC for session */
#define CS_OPT_CLIENTREALNAME (CS_INT)5040 /* Set client real name */
#define CS_OPT_CLIENTHOSTNAME (CS_INT)5041 /* Set client host name */
#define CS_OPT_CLIENTAPPLNAME (CS_INT)5042 /* Set client appl name */
#define CS_OPT_IDENTITYUPD_ON (CS_INT)5043 /* turn on identity update */
#define CS_OPT_IDENTITYUPD_OFF (CS_INT)5044 /* turn off identity update */
#define CS_OPT_NODATA (CS_INT)5045 /* turn on/off nodata option */
#define CS_OPT_CIPHERTEXT (CS_INT)5046 /* turn on/off ciphertext
** encryption */
#define CS_OPT_SHOW_FI (CS_INT)5047 /* Show Functional Indexes */
#define CS_OPT_HIDE_VCC (CS_INT)5048 /* Hide Virtual Computed Columns */
#define CS_OPT_LOBLOCATOR (CS_INT)5049 /* Enable/disable Lob locator */
#define CS_OPT_LOBLOCFETCHSIZE (CS_INT)5050 /* Lob locator fetch size */
#define CS_MIN_OPTION CS_OPT_DATEFIRST
#define CS_MAX_OPTION CS_OPT_LOBLOCFETCHSIZE
/*
** The supported options are summarized below with their defined values
** for `ArgSize' and `OptionArg'. ArgSize specifies the domain of valid
** values that are allowed.
**
** Option ArgSize OptionArg
** --------------- --------- ---------
** CS_OPT_DATEFIRST 1 byte Defines below
** CS_OPT_TEXTSIZE 4 bytes Size in bytes
** CS_OPT_ROWCOUNT 4 bytes Number of rows
** CS_OPT_NATLANG OptionArg Len National Lang (string)
** CS_OPT_DATEFORMAT 1 byte Defines below
** CS_OPT_ISOLATION 1 byte Defines below
** CS_OPT_AUTHON OptionArg Len Table Name (string)
** CS_OPT_CHARSET OptionArg Len Character set (string)
** CS_OPT_IDENTITYON OptionArg Len Table Name (string)
** CS_OPT_CURREAD OptionArg Len Read Label(string)
** CS_OPT_CURWRITE OptionArg Len Write Label(string)
** CS_OPT_IDENTITYOFF OptionArg Len Table Name (string)
** CS_OPT_AUTHOFF OptionArg Len Table Name (string)
** CS_OPT_IDENTITYUPD_ON OptionArg Len Table Name (string)
** CS_OPT_IDENTITYUPD_OFF OptionArg Len Table Name (string)
** (All remaining options) 1 byte Boolean value
**
** All string values must be sent in 7 bit ASCII.
**
*/
/* CS_OPT_DATEFIRST */
#define CS_OPT_MONDAY (CS_INT)1
#define CS_OPT_TUESDAY (CS_INT)2
#define CS_OPT_WEDNESDAY (CS_INT)3
#define CS_OPT_THURSDAY (CS_INT)4
#define CS_OPT_FRIDAY (CS_INT)5
#define CS_OPT_SATURDAY (CS_INT)6
#define CS_OPT_SUNDAY (CS_INT)7
/* CS_OPT_DATEFORMAT */
#define CS_OPT_FMTMDY (CS_INT)1
#define CS_OPT_FMTDMY (CS_INT)2
#define CS_OPT_FMTYMD (CS_INT)3
#define CS_OPT_FMTYDM (CS_INT)4
#define CS_OPT_FMTMYD (CS_INT)5
#define CS_OPT_FMTDYM (CS_INT)6
/* CS_OPT_ISOLATION */
#define CS_OPT_LEVEL0 (CS_INT)0
#define CS_OPT_LEVEL1 (CS_INT)1
#define CS_OPT_LEVEL2 (CS_INT)2
#define CS_OPT_LEVEL3 (CS_INT)3
/*****************************************************************************
**
** Open Client/Server capabilities.
**
*****************************************************************************/
/*
** Capability types.
*/
#define CS_CAP_REQUEST (CS_INT)1
#define CS_CAP_RESPONSE (CS_INT)2
/*
** Special capability value to set/get all capability values at once.
*/
#define CS_ALL_CAPS (CS_INT)2700
/*
** Capability request values.
*/
#define CS_REQ_LANG (CS_INT)1
#define CS_REQ_RPC (CS_INT)2
#define CS_REQ_NOTIF (CS_INT)3
#define CS_REQ_MSTMT (CS_INT)4
#define CS_REQ_BCP (CS_INT)5
#define CS_REQ_CURSOR (CS_INT)6
#define CS_REQ_DYN (CS_INT)7
#define CS_REQ_MSG (CS_INT)8
#define CS_REQ_PARAM (CS_INT)9
#define CS_DATA_INT1 (CS_INT)10
#define CS_DATA_INT2 (CS_INT)11
#define CS_DATA_INT4 (CS_INT)12
#define CS_DATA_BIT (CS_INT)13
#define CS_DATA_CHAR (CS_INT)14
#define CS_DATA_VCHAR (CS_INT)15
#define CS_DATA_BIN (CS_INT)16
#define CS_DATA_VBIN (CS_INT)17
#define CS_DATA_MNY8 (CS_INT)18
#define CS_DATA_MNY4 (CS_INT)19
#define CS_DATA_DATE8 (CS_INT)20
#define CS_DATA_DATE4 (CS_INT)21
#define CS_DATA_FLT4 (CS_INT)22
#define CS_DATA_FLT8 (CS_INT)23
#define CS_DATA_NUM (CS_INT)24
#define CS_DATA_TEXT (CS_INT)25
#define CS_DATA_IMAGE (CS_INT)26
#define CS_DATA_DEC (CS_INT)27
#define CS_DATA_LCHAR (CS_INT)28
#define CS_DATA_LBIN (CS_INT)29
#define CS_DATA_INTN (CS_INT)30
#define CS_DATA_DATETIMEN (CS_INT)31
#define CS_DATA_MONEYN (CS_INT)32
#define CS_CSR_PREV (CS_INT)33
#define CS_CSR_FIRST (CS_INT)34
#define CS_CSR_LAST (CS_INT)35
#define CS_CSR_ABS (CS_INT)36
#define CS_CSR_REL (CS_INT)37
#define CS_CSR_MULTI (CS_INT)38
#define CS_CON_OOB (CS_INT)39
#define CS_CON_INBAND (CS_INT)40
#define CS_CON_LOGICAL (CS_INT)41
#define CS_PROTO_TEXT (CS_INT)42
#define CS_PROTO_BULK (CS_INT)43
#define CS_REQ_URGNOTIF (CS_INT)44
#define CS_DATA_SENSITIVITY (CS_INT)45
#define CS_DATA_BOUNDARY (CS_INT)46
#define CS_PROTO_DYNAMIC (CS_INT)47
#define CS_PROTO_DYNPROC (CS_INT)48
#define CS_DATA_FLTN (CS_INT)49
#define CS_DATA_BITN (CS_INT)50
#define CS_OPTION_GET (CS_INT)51
#define CS_DATA_INT8 (CS_INT)52
#define CS_DATA_VOID (CS_INT)53
#define CS_DOL_BULK (CS_INT)54
#define CS_OBJECT_JAVA1 (CS_INT)55
#define CS_OBJECT_CHAR (CS_INT)56
#define CS_DATA_COLUMNSTATUS (CS_INT)57
#define CS_OBJECT_BINARY (CS_INT)58
#define CS_REQ_RESERVED1 (CS_INT)59
#define CS_WIDETABLES (CS_INT)60
#define CS_REQ_RESERVED2 (CS_INT)61
#define CS_DATA_UINT2 (CS_INT)62
#define CS_DATA_UINT4 (CS_INT)63
#define CS_DATA_UINT8 (CS_INT)64
#define CS_DATA_UINTN (CS_INT)65
#define CS_CUR_IMPLICIT (CS_INT)66
#define CS_DATA_UCHAR (CS_INT)67
#define CS_IMAGE_NCHAR (CS_INT)68
#define CS_BLOB_NCHAR_16 (CS_INT)69
#define CS_BLOB_NCHAR_8 (CS_INT)70
#define CS_BLOB_NCHAR_SCSU (CS_INT)71
#define CS_DATA_DATE (CS_INT)72
#define CS_DATA_TIME (CS_INT)73
#define CS_DATA_INTERVAL (CS_INT)74
#define CS_CSR_SCROLL (CS_INT)75
#define CS_CSR_SENSITIVE (CS_INT)76
#define CS_CSR_INSENSITIVE (CS_INT)77
#define CS_CSR_SEMISENSITIVE (CS_INT)78
#define CS_CSR_KEYSETDRIVEN (CS_INT)79
#define CS_REQ_SRVPKTSIZE (CS_INT)80
#define CS_DATA_UNITEXT (CS_INT)81
#define CS_CAP_EXTENDEDFAILOVER (CS_INT)82
#define CS_DATA_SINT1 (CS_INT)83
#define CS_REQ_LARGEIDENT (CS_INT)84
#define CS_REQ_BLOB_NCHAR_16 (CS_INT)85
#define CS_DATA_XML (CS_INT)86
#define CS_REQ_CURINFO3 (CS_INT)87
#define CS_REQ_DBRPC2 (CS_INT)88
#define CS_REQ_MIGRATE (CS_INT)89
#define CS_REQ_UNDEFINED (CS_INT)90
#define CS_REQ_RESERVED_091 (CS_INT)91
#define CS_REQ_RESERVED_092 (CS_INT)92
#define CS_REQ_RESERVED_093 (CS_INT)93
#define CS_DATA_BIGDATETIME (CS_INT)94
#define CS_DATA_BIGTIME (CS_INT)95
#define CS_RPCPARAM_LOB (CS_INT)96
#define CS_REQ_INSTID (CS_INT)97
#define CS_REQ_GRID (CS_INT)98
#define CS_REQ_DYN_BATCH (CS_INT)99
#define CS_REQ_LANG_BATCH (CS_INT)100
#define CS_REQ_RPC_BATCH (CS_INT)101
#define CS_DATA_LOBLOCATOR (CS_INT)102
#define CS_REQ_RESERVED_103 (CS_INT)103
#define CS_REQ_RESERVED_104 (CS_INT)104
#define CS_REQ_DYNAMIC_SUPPRESS_PARAMFMT (CS_INT)105
#define CS_REQ_RESERVED_106 (CS_INT)106
#define CS_REQ_READONLY (CS_INT)107
/*
** Minimum and maximum request capability values.
*/
#define CS_MIN_REQ_CAP CS_REQ_LANG
#define CS_MAX_REQ_CAP CS_REQ_READONLY
/*
** Capability response values.
*/
#define CS_RES_NOMSG (CS_INT)1
#define CS_RES_NOEED (CS_INT)2
#define CS_RES_NOPARAM (CS_INT)3
#define CS_DATA_NOINT1 (CS_INT)4
#define CS_DATA_NOINT2 (CS_INT)5
#define CS_DATA_NOINT4 (CS_INT)6
#define CS_DATA_NOBIT (CS_INT)7
#define CS_DATA_NOCHAR (CS_INT)8
#define CS_DATA_NOVCHAR (CS_INT)9
#define CS_DATA_NOBIN (CS_INT)10
#define CS_DATA_NOVBIN (CS_INT)11
#define CS_DATA_NOMNY8 (CS_INT)12
#define CS_DATA_NOMNY4 (CS_INT)13
#define CS_DATA_NODATE8 (CS_INT)14
#define CS_DATA_NODATE4 (CS_INT)15
#define CS_DATA_NOFLT4 (CS_INT)16
#define CS_DATA_NOFLT8 (CS_INT)17
#define CS_DATA_NONUM (CS_INT)18
#define CS_DATA_NOTEXT (CS_INT)19
#define CS_DATA_NOIMAGE (CS_INT)20
#define CS_DATA_NODEC (CS_INT)21
#define CS_DATA_NOLCHAR (CS_INT)22
#define CS_DATA_NOLBIN (CS_INT)23
#define CS_DATA_NOINTN (CS_INT)24
#define CS_DATA_NODATETIMEN (CS_INT)25
#define CS_DATA_NOMONEYN (CS_INT)26
#define CS_CON_NOOOB (CS_INT)27
#define CS_CON_NOINBAND (CS_INT)28
#define CS_PROTO_NOTEXT (CS_INT)29
#define CS_PROTO_NOBULK (CS_INT)30
#define CS_DATA_NOSENSITIVITY (CS_INT)31
#define CS_DATA_NOBOUNDARY (CS_INT)32
#define CS_RES_NOTDSDEBUG (CS_INT)33
#define CS_RES_NOSTRIPBLANKS (CS_INT)34
#define CS_DATA_NOINT8 (CS_INT)35
#define CS_OBJECT_NOJAVA1 (CS_INT)36
#define CS_OBJECT_NOCHAR (CS_INT)37
#define CS_DATA_NOCOLUMNSTATUS (CS_INT)38
#define CS_OBJECT_NOBINARY (CS_INT)39
#define CS_RES_RESERVED (CS_INT)40
#define CS_DATA_NOUINT2 (CS_INT)41
#define CS_DATA_NOUINT4 (CS_INT)42
#define CS_DATA_NOUINT8 (CS_INT)43
#define CS_DATA_NOUINTN (CS_INT)44
#define CS_NOWIDETABLES (CS_INT)45
#define CS_DATA_NOUCHAR (CS_INT)46
#define CS_IMAGE_NONCHAR (CS_INT)47
#define CS_BLOB_NONCHAR_16 (CS_INT)48
#define CS_BLOB_NONCHAR_8 (CS_INT)49
#define CS_BLOB_NONCHAR_SCSU (CS_INT)50
#define CS_DATA_NODATE (CS_INT)51
#define CS_DATA_NOTIME (CS_INT)52
#define CS_DATA_NOINTERVAL (CS_INT)53
#define CS_DATA_NOUNITEXT (CS_INT)54
#define CS_DATA_NOSINT1 (CS_INT)55
#define CS_NO_LARGEIDENT (CS_INT)56
#define CS_NO_BLOB_NCHAR_16 (CS_INT)57
#define CS_NO_SRVPKTSIZE (CS_INT)58
#define CS_DATA_NOXML (CS_INT)59
#define CS_NONINT_RETURN_VALUE (CS_INT)60
#define CS_RES_NOXNLMETADATA (CS_INT)61
#define CS_RES_SUPPRESS_FMT (CS_INT)62
#define CS_RES_SUPPRESS_DONEINPROC (CS_INT)63
#define CS_UNUSED_RES (CS_INT)64
#define CS_DATA_NOBIGDATETIME (CS_INT)65
#define CS_DATA_NOBIGTIME (CS_INT)66
#define CS_RES_NO_TDSCONTROL (CS_INT)67
#define CS_RPCPARAM_NOLOB (CS_INT)68
#define CS_DATA_NOLOBLOCATOR (CS_INT)69
#define CS_RES_RESERVED_70 (CS_INT)70
#define CS_RES_RESERVED_71 (CS_INT)71
#define CS_RES_LIST_DR_MAP (CS_INT)72
#define CS_RES_DR_NOKILL (CS_INT)73
/*
** Minimum and maximum response capability values.
*/
#define CS_MIN_RES_CAP CS_RES_NOMSG
#define CS_MAX_RES_CAP CS_RES_DR_NOKILL
/*
** Minimum and maximum of all capabilities defined above.
*/
#define CS_MIN_CAPVALUE CS_REQ_LANG
#define CS_MAX_CAPVALUE CS_REQ_READONLY
/*
** Size of area to store capabilities. The array len must be greater
** than CS_CAP_ARRAYLEN additional capabilities to be added.
*/
#define CS_CAP_ARRAYLEN 16
/*
** Maximum OID length (bytes)
*/
#define CS_MAX_OIDLEN 255
/*
** Index used by access macros so that the first byte in the array will
** contain the high order bit.
*/
#define CS_CAP_IDX(B) ((CS_CAP_ARRAYLEN - (B)/ CS_BITS_PER_BYTE) - 1)
/*
** Data structure defining storage for capabilities.
*/
typedef struct _cs_cap_type
{
CS_BYTE mask[CS_CAP_ARRAYLEN];
} CS_CAP_TYPE;
/*
** Access macros for CS_CAP_TYPE structure.
*/
#define CS_SET_CAPMASK(M, B) ((M)->mask[CS_CAP_IDX(B)] |= \
(1 << ((B) % CS_BITS_PER_BYTE)))
#define CS_CLR_CAPMASK(M, B) ((M)->mask[CS_CAP_IDX(B)] &= \
~(1 << ((B) % CS_BITS_PER_BYTE)))
#define CS_TST_CAPMASK(M, B) ((M)->mask[CS_CAP_IDX(B)] & \
(1 << ((B) % CS_BITS_PER_BYTE)))
/*****************************************************************************
**
** Defines used in Open Client/Server structures.
**
*****************************************************************************/
/*
** Define I/O types in the CS_IODESC structure.
*/
#define CS_IODATA (CS_INT)1600
#define CS_IOPARTIAL (CS_INT)1601
/*
** Define status values for the status field of the CS_SERVERMSG and
** CS_CLIENTMSG structures.
*/
#define CS_HASEED (CS_INT)0x1
#define CS_FIRST_CHUNK (CS_INT)0x2
#define CS_LAST_CHUNK (CS_INT)0x4
#define CS_EEDINFO (CS_INT)0x8
/*****************************************************************************
**
** Hidden information structures.
**
*****************************************************************************/
#ifndef CS__INTERNAL_STRUCTS
/*
** If passing code through lint, define the hidden structures as void.
*/
#ifdef lint
#ifndef CS_LOGINFO
#define CS_LOGINFO CS_VOID
#endif /* CS_LOGINFO */
#ifndef CS_BLKDESC
#define CS_BLKDESC CS_VOID
#endif /* CS_BLKDESC */
#ifndef CS_BLK_ROW
#define CS_BLK_ROW CS_VOID
#endif /* CS_BLK_ROW */
#else /* lint */
/*
** Use anonymous structure tags to define the hidden structures.
*/
typedef struct _csloginfo CS_LOGINFO;
typedef struct _cs_blkdesc CS_BLKDESC;
typedef struct _bulkrow CS_BLK_ROW;
#endif /* lint */
#endif /* CS__INTERNAL_STRUCTS */
/*****************************************************************************
**
** User-accessible information structures.
**
*****************************************************************************/
/*
** Define the I/O descriptor structure used by Open Client/Server.
**
** iotype Indicates the type of I/O to perform. For text
** and image operations, iotype always has the
** value CS_IODATA.
**
** datatype The datatype of the data object. The only legal
** values for datatype are CS_TEXT_TYPE and
** CS_IMAGE_TYPE and CS_XML_TYPE.
**
** *locale A pointer to a CS_LOCALE structure containing
** localization information for the text or image
** value. Set locale to NULL if localization
** information is not required.
**
** usertype The SQL Server user-defined datatype of the data
** object, if any.
**
** total_txtlen The total length, in bytes, of the text or image
** value.
**
** offset Reserved for future use.
**
** log_on_update Whether the update for this text object should
** be logged or not.
**
** name The name of the text or image column. name is a
** string of the form table.column.
**
** namelen The actual length of name
**
** timestamp The text timestamp of the column. A text
** timestamp marks the time of a text or image
** column's last modification.
**
** timestamplen The length, in bytes, of timestamp.
**
** textptr The text pointer for the column. A text pointer
** is an internal server pointer that points to the
** data for a text or image column. textptr identifies
** the target column in a send-data operation.
**
** textptrlen The length, in bytes, of textptr.
*/
typedef struct _cs_iodesc
{
CS_INT iotype;
CS_INT datatype;
CS_LOCALE *locale;
CS_INT usertype;
CS_INT total_txtlen;
CS_INT offset;
CS_BOOL log_on_update;
CS_CHAR name[CS_OBJ_NAME];
CS_INT namelen;
CS_BYTE timestamp[CS_TS_SIZE];
CS_INT timestamplen;
CS_BYTE textptr[CS_TP_SIZE];
CS_INT textptrlen;
CS_INT delete_length;
} CS_IODESC;
/*
** Define the browse descriptor structure used by Open Client/Server.
**
** status A bit mask of either CS_EXPRESSION and/or CS_RENAMED.
**
** isbrowse CS_TRUE the column can be browse-mode updated.
**
** origname The original name of the column in the database.
**
** orignlen Length of origname in bytes.
**
** tablenum The number of the table to which the column
** belongs. The first table in a select statement's
** from-list is table number 1, the second number 2,
** and so forth.
**
** tablename The name of the table to which the column belongs.
**
** tabnlen Length of tablename in bytes.
**
*/
#if defined(CS_NO_LARGE_IDENTIFIERS)
/*
** In pre-15.0 versions the (old) value for CS_MAX_NAME was used for the
** origname array declaration. Starting from version 15.0, CS_MAX_CHAR
** is used to define this character array size.
*/
typedef struct _cs_browsedesc
{
CS_INT status;
CS_BOOL isbrowse;
CS_CHAR origname[CS_MAX_NAME];
CS_INT orignlen;
CS_INT tablenum;
CS_CHAR tablename[CS_OBJ_NAME];
CS_INT tabnlen;
} CS_BROWSEDESC;
#else
typedef struct _cs_browsedesc
{
CS_INT status;
CS_BOOL isbrowse;
CS_CHAR origname[CS_MAX_CHAR];
CS_INT orignlen;
CS_INT tablenum;
CS_CHAR tablename[CS_OBJ_NAME];
CS_INT tabnlen;
} CS_BROWSEDESC;
#endif
/*
** Define the server message structure used by Open Client/Server.
**
** msgnumber The server message number.
**
** state The server error state.
**
** severity The severity of the message.
**
** text The text of the error string. If an application
** is not sequencing messages, text is guaranteed
** to be null-terminated, even if it has been
** truncated. If an application is sequencing
** messages, text is null-terminated only if it is
** the last chunk of a sequenced message.
**
** textlen The length, in bytes, of text.
**
** svrname The name of the server that generated the message.
**
** svrnlen The length, in bytes, of svrname.
**
** proc The name of the stored procedure which caused
** the message, if any.
**
** proclen The length, in bytes, of proc.
**
** line The line number, if any, of the line that caused
** the message. line can be a line number in a
** stored procedure or a line number in a command
** batch.
**
** status A bitmask used to indicate various types of
** information, such as whether or not extended
** error data is included with the message.
**
** sqlstate SQL state information.
**
** sqlstatelen The length, in bytes, of sqlstate.
**
*/
#if defined(CS_NO_LARGE_IDENTIFIERS)
/*
** In pre-15.0 versions the (old) value for CS_MAX_NAME was used for the
** name array declarations. Starting from version 15.0, CS_MAX_CHAR is
** used to define these character array sizes.
*/
typedef struct _cs_servermsg
{
CS_MSGNUM msgnumber;
CS_INT state;
CS_INT severity;
CS_CHAR text[CS_MAX_MSG];
CS_INT textlen;
CS_CHAR svrname[CS_MAX_NAME];
CS_INT svrnlen;
CS_CHAR proc[CS_MAX_NAME];
CS_INT proclen;
CS_INT line;
CS_INT status;
CS_BYTE sqlstate[CS_SQLSTATE_SIZE];
CS_INT sqlstatelen;
} CS_SERVERMSG;
#else
typedef struct _cs_servermsg
{
CS_MSGNUM msgnumber;
CS_INT state;
CS_INT severity;
CS_CHAR text[CS_MAX_MSG];
CS_INT textlen;
CS_CHAR svrname[CS_MAX_CHAR];
CS_INT svrnlen;
CS_CHAR proc[CS_MAX_CHAR];
CS_INT proclen;
CS_INT line;
CS_INT status;
CS_BYTE sqlstate[CS_SQLSTATE_SIZE];
CS_INT sqlstatelen;
} CS_SERVERMSG;
#endif
/*
** Define the client message structure used by Open Client/Server.
**
** severity A symbolic value representing the severity of
** the message.
**
** msgnumber The message number. For information on how to
** interpret this number in Client-Library
** applications, see the Client-Library Messages
** topics in the Open Client documentation.
**
** msgstring The message string. If an application is not
** sequencing messages, msgstring is guaranteed to
** be null-terminated, even if it has been truncated.
** If an application is sequencing messages,
** msgstring is null-terminated only if it is the
** last chunk of a sequenced message.
**
** msgstringlen The length, in bytes, of msgstring.
**
** osnumber An error may have involved interactions the
** operating system (OS). If so, the OS error
** number would be stored here. Otherwise,
** this will be zero.
**
** osstring The operating system error text (if any).
**
** osstringlen The length, in bytes, of osstring.
**
** status A bitmask used to indicate various types of
** information, such as whether or not this is the
** first, a middle, or the last chunk of an error
** message.
**
** sqlstate SQL state information.
**
** sqlstatelen The length, in bytes, of sqlstate.
**
*/
typedef struct _cs_clientmsg
{
CS_INT severity;
CS_MSGNUM msgnumber;
CS_CHAR msgstring[CS_MAX_MSG];
CS_INT msgstringlen;
CS_INT osnumber;
CS_CHAR osstring[CS_MAX_MSG];
CS_INT osstringlen;
CS_INT status;
CS_BYTE sqlstate[CS_SQLSTATE_SIZE];
CS_INT sqlstatelen;
} CS_CLIENTMSG;
/*
** Define the constants an application tests for in the DONEPROC callback
*/
#define CS_TDS_DONEPROC_TYPE (CS_INT)1
#define CS_TDS_DONEINPROC_TYPE (CS_INT)2
/*
** Define the parameter information structure used by contol message callbacks.
*/
typedef enum _cs_ctlparams
{
CS_CTL_UNKNOWN = 0,
CS_CTL_GROUPNAME = 1,
CS_CTL_GENERATION = 2,
CS_CTL_DSNAME = 3,
CS_CTL_ADDRSTR = 4,
CS_CTL_HANAME = 5,
CS_CTL_OPTION = 6
} CS_CTLPARAMS_T;
typedef struct _cs_ctlinfo
{
CS_CTLPARAMS_T ctltype;
CS_DATAFMT ctlfmt;
CS_UBIGINT ctlintinfo;
CS_TRANADDR ctladdr;
CS_CHAR *ctlstring;
} CS_CTLINFO_T;
/*
** The only defined option is to mark that a node can be connected
** to for readonly operations.
*/
#define CS_CTLOPT_READONLY 0x01
/*****************************************************************************
**
** Define user-accessable functions for Client/Server Library here.
**
*****************************************************************************/
/*
** Declare all functions.
*/
CS_START_EXTERN_C
/* cscalc.c */
extern CS_RETCODE CS_PUBLIC cs_calc(
CS_CONTEXT *context,
CS_INT op,
CS_INT datatype,
CS_VOID *var1,
CS_VOID *var2,
CS_VOID *dest
);
/* cscmp.c */
extern CS_RETCODE CS_PUBLIC cs_cmp(
CS_CONTEXT *context,
CS_INT datatype,
CS_VOID *var1,
CS_VOID *var2,
CS_INT *result
);
/* cscnvrt.c */
extern CS_RETCODE CS_PUBLIC cs_convert(
CS_CONTEXT *context,
CS_DATAFMT *srcfmt,
CS_VOID *srcdata,
CS_DATAFMT *destfmt,
CS_VOID *destdata,
CS_INT *outlen
);
extern CS_RETCODE CS_PUBLIC cs_will_convert(
CS_CONTEXT *context,
CS_INT srctype,
CS_INT desttype,
CS_BOOL *result
);
extern CS_RETCODE CS_PUBLIC cs_set_convert(
CS_CONTEXT *context,
CS_INT action,
CS_INT srctype,
CS_INT desttype,
CS_CONV_FUNC *buffer
);
extern CS_RETCODE CS_PUBLIC cs_setnull(
CS_CONTEXT *context,
CS_DATAFMT *datafmt,
CS_VOID *buf,
CS_INT buflen
);
/* csconfig.c */
extern CS_RETCODE CS_PUBLIC cs_config(
CS_CONTEXT *context,
CS_INT action,
CS_INT property,
CS_VOID *buf,
CS_INT buflen,
CS_INT *outlen
);
/* csctxall.c */
extern CS_RETCODE CS_PUBLIC cs_ctx_alloc(
CS_INT version,
CS_CONTEXT **outptr
);
/* csctxdrp.c */
extern CS_RETCODE CS_PUBLIC cs_ctx_drop(
CS_CONTEXT *context
);
/* csctxglb.c */
extern CS_RETCODE CS_PUBLIC cs_ctx_global(
CS_INT version,
CS_CONTEXT **outptr
);
/* csobjs.c */
extern CS_RETCODE CS_PUBLIC cs_objects(
CS_CONTEXT *context,
CS_INT action,
CS_OBJNAME *objname,
CS_OBJDATA *objdata
);
/* csdiag.c */
extern CS_RETCODE CS_PUBLIC cs_diag(
CS_CONTEXT *context,
CS_INT operation,
CS_INT type,
CS_INT idx,
CS_VOID *buffer
);
/* csdtcrak.c */
extern CS_RETCODE CS_PUBLIC cs_dt_crack(
CS_CONTEXT *context,
CS_INT datetype,
CS_VOID *dateval,
CS_DATEREC *daterec
);
/* csdtinfo.c */
extern CS_RETCODE CS_PUBLIC cs_dt_info(
CS_CONTEXT *context,
CS_INT action,
CS_LOCALE *locale,
CS_INT type,
CS_INT item,
CS_VOID *buffer,
CS_INT buflen,
CS_INT *outlen
);
/* csloc.c */
extern CS_RETCODE CS_PUBLIC cs_locale(
CS_CONTEXT *context,
CS_INT action,
CS_LOCALE *locale,
CS_INT type,
CS_CHAR *buffer,
CS_INT buflen,
CS_INT *outlen
);
/* cslocall.c */
extern CS_RETCODE CS_PUBLIC cs_loc_alloc(
CS_CONTEXT *context,
CS_LOCALE **loc_pointer
);
/* cslocator.c */
extern CS_RETCODE CS_PUBLIC cs_locator(
CS_CONTEXT *context,
CS_INT action,
CS_LOCATOR *locator,
CS_INT type,
CS_VOID *buffer,
CS_INT buflen,
CS_INT *outlen);
extern CS_RETCODE CS_PUBLIC cs_locator_alloc(
CS_CONTEXT *context,
CS_LOCATOR **locator);
extern CS_RETCODE CS_PUBLIC cs_locator_drop(
CS_CONTEXT *context,
CS_LOCATOR *locator);
/* cslocdrp.c */
extern CS_RETCODE CS_PUBLIC cs_loc_drop(
CS_CONTEXT *context,
CS_LOCALE *locale
);
/* csstr.c */
extern size_t CS_PUBLIC cs_strlcpy(
char *target_str,
const char *source_str,
size_t target_size
);
extern size_t CS_PUBLIC cs_strlcat(
char *target_str,
const char *source_str,
size_t target_size
);
extern void CS_PUBLIC cs_snprintf(
char *str,
size_t size,
const char *format,
...
);
#ifdef CS__INTERNAL_STRUCTS
extern CS_RETCODE CS_VARARGS cs_strbuild(
CS_CONTEXT *context,
...
);
#else
extern CS_RETCODE CS_VARARGS cs_strbuild(
CS_CONTEXT *context,
CS_CHAR *buf,
CS_INT buflen,
CS_INT *outlen,
CS_CHAR *text,
CS_INT textlen,
...
);
#endif /* CS__INTERNAL_STRUCTS */
/* csstrcmp.c */
extern CS_RETCODE CS_PUBLIC cs_strcmp(
CS_CONTEXT *context,
CS_LOCALE *locale,
CS_INT type,
CS_CHAR *str1,
CS_INT len1,
CS_CHAR *str2,
CS_INT len2,
CS_INT *result
);
/* cstime.c */
extern CS_RETCODE CS_PUBLIC cs_time(
CS_CONTEXT *context,
CS_LOCALE *locale,
CS_VOID *buf,
CS_INT buflen,
CS_INT *outlen,
CS_DATEREC *drec
);
/* csmancnt.c */
extern CS_RETCODE CS_PUBLIC cs_manage_convert(
CS_CONTEXT *context,
CS_INT action,
CS_INT srctype,
CS_CHAR *srcname,
CS_INT srcnamelen,
CS_INT desttype,
CS_CHAR *destname,
CS_INT destnamelen,
CS_INT *maxmultiplier,
CS_CONV_FUNC *func
);
/* csmaxmul.c */
extern CS_RETCODE CS_PUBLIC cs_conv_mult(
CS_CONTEXT *context,
CS_LOCALE *srcloc,
CS_LOCALE *destloc,
CS_INT *multiplier
);
CS_END_EXTERN_C
#endif /* __CSPUBLIC_H__ */