diff -Pru ../cvs-psqlodbc/Makefile.am ./Makefile.am --- ../cvs-psqlodbc/Makefile.am 1970-01-01 01:00:00.000000000 +0100 +++ ./Makefile.am 2002-10-02 10:42:08.000000000 +0200 @@ -0,0 +1,52 @@ +#------------------------------------------------------------------------- +# +# Makefile.am for psqlodbc (PostgreSQL ODBC driver) +# +# $Header$ +# +#------------------------------------------------------------------------- + +AUTOMAKE_OPTIONS = 1.6 foreign + +lib_LTLIBRARIES = psqlodbc.la + +psqlodbc_la_LDFLAGS = -module -no-undefined -avoid-version + +psqlodbc_la_SOURCES = \ + info.c bind.c columninfo.c connection.c convert.c drvconn.c \ + environ.c execute.c lobj.c win_md5.c misc.c options.c \ + pgtypes.c psqlodbc.c qresult.c results.c socket.c parse.c \ + statement.c tuple.c tuplelist.c dlg_specific.c odbcapi.c \ + multibyte.c \ + gpps.c + +psqlodbc_la_SOURCES += \ + bind.h columninfo.h connection.h convert.h descriptor.h \ + dlg_specific.h environ.h gpps.h iodbc.h isql.h isqlext.h \ + lobj.h md5.h misc.h multibyte.h pgapifunc.h pgtypes.h \ + psqlodbc.h qresult.h resource.h socket.h statement.h tuple.h \ + tuplelist.h version.h + +EXTRA_psqlodbc_la_SOURCES = md5.c + +if with_unixodbc +psqlodbc_la_LIBADD = -lodbcinst +else +if with_iodbc +psqlodbc_la_LIBADD = -liodbcinst +else +AM_CPPFLAGS = -DODBCINSTDIR='"$(odbcinst_ini_dir)"' +endif +endif + +dist_pkgdata_DATA = odbc.sql odbc-drop.sql +BUILT_SOURCES = odbc-drop.sql + +EXTRA_DIST = license.txt notice.txt readme.txt odbcinst.ini libtool.m4 +MAINTAINERCLEANFILES = odbc-drop.sql \ + Makefile.in config.guess config.h.in config.sub configure \ + install-sh missing mkinstalldirs aclocal.m4 ltmain.sh \ + libtool.m4 depcomp + +$(srcdir)/odbc-drop.sql: $(srcdir)/odbc.sql + sed -n '/^CREATE OR REPLACE FUNCTION/s/CREATE OR REPLACE FUNCTION \([^ (][^ (]*([^)]*)\).*/DROP FUNCTION \1;/p' $(srcdir)/odbc.sql >$(srcdir)/odbc-drop.sql diff -Pru ../cvs-psqlodbc/configure.ac ./configure.ac --- ../cvs-psqlodbc/configure.ac 1970-01-01 01:00:00.000000000 +0100 +++ ./configure.ac 2002-10-07 14:03:05.000000000 +0200 @@ -0,0 +1,47 @@ +# Process this file with autoconf to produce a configure script. +AC_INIT(psqlodbc, 0.27, [pgsql-odbc@postgresql.org]) +AC_PREREQ(2.52) +AM_INIT_AUTOMAKE +AC_CONFIG_SRCDIR([bind.c]) +AM_CONFIG_HEADER([config.h]) +AM_MAINTAINER_MODE + + +PGAC_ARG_BOOL(with, unixodbc, no, + [ --with-unixodbc build ODBC driver for unixODBC], + [AC_DEFINE(WITH_UNIXODBC, 1, + [Define to 1 to build with unixODBC support (--with-unixodbc)])]) + +PGAC_ARG_BOOL(with, iodbc, no, + [ --with-iodbc build ODBC driver for iODBC], + [AC_DEFINE(WITH_IODBC, 1, + [Define to 1 to build with iODBC support (--with-iodbc)])]) + +if test "$with_unixodbc" = yes && test "$with_iodbc" = yes; then + AC_MSG_ERROR([ODBC driver cannot be built for both unixODBC and iODBC]) +fi + +AM_CONDITIONAL(with_unixodbc, [test $with_unixodbc = yes]) +AM_CONDITIONAL(with_iodbc, [test $with_iodbc = yes]) + +# Allow for overriding the default location of the odbcinst.ini +# file which is normally ${sysconfdir} (i.e., ${prefix}/etc). +PGAC_ARG_REQ(with, odbcinst, + [ --with-odbcinst=DIR default directory for odbcinst.ini [sysconfdir]], + [odbcinst_ini_dir=$withval], + [odbcinst_ini_dir="\${sysconfdir}"]) +AC_SUBST([odbcinst_ini_dir]) + +AC_PROG_CC + +AC_LIBTOOL_WIN32_DLL +AC_DISABLE_STATIC +AC_LIBTOOL_DLOPEN +AC_PROG_LIBTOOL + +AC_CHECK_HEADERS([locale.h]) +AC_CHECK_TYPES(uint8) +PGAC_VAR_INT_TIMEZONE + +AC_CONFIG_FILES([Makefile]) +AC_OUTPUT diff -Pru ../cvs-psqlodbc/connection.c ./connection.c --- ../cvs-psqlodbc/connection.c 2002-09-23 10:08:20.000000000 +0200 +++ ./connection.c 2002-09-30 16:18:08.000000000 +0200 @@ -30,9 +30,7 @@ #include "lobj.h" #include "dlg_specific.h" -#ifdef MULTIBYTE #include "multibyte.h" -#endif #include "pgapifunc.h" #include "md5.h" @@ -294,10 +292,8 @@ rv->result_uncommitted = 0; rv->schema_support = 0; rv->isolation = SQL_TXN_READ_COMMITTED; -#ifdef MULTIBYTE rv->client_encoding = NULL; rv->server_encoding = NULL; -#endif /* MULTIBYTE */ rv->current_schema = NULL; @@ -502,14 +498,12 @@ self->status = CONN_NOT_CONNECTED; self->transact_status = CONN_IN_AUTOCOMMIT; CC_conninfo_init(&(self->connInfo)); -#ifdef MULTIBYTE if (self->client_encoding) free(self->client_encoding); self->client_encoding = NULL; if (self->server_encoding) free(self->server_encoding); self->server_encoding = NULL; -#endif /* MULTIBYTE */ if (self->current_schema) free(self->current_schema); self->current_schema = NULL; @@ -623,10 +617,7 @@ char msgbuffer[ERROR_MSG_LENGTH]; char salt[5], notice[512]; static char *func = "CC_connect"; - -#ifdef MULTIBYTE char *encoding; -#endif /* MULTIBYTE */ mylog("%s: entering...\n", func); @@ -654,7 +645,6 @@ ci->drivers.bools_as_char, TABLE_NAME_STORAGE_LEN); -#ifdef MULTIBYTE encoding = check_client_encoding(ci->conn_settings); if (encoding && strcmp(encoding, "OTHER")) self->client_encoding = strdup(encoding); @@ -670,11 +660,6 @@ ci->drivers.extra_systable_prefixes, ci->drivers.conn_settings, encoding ? encoding : ""); -#else - qlog(" extra_systable_prefixes='%s', conn_settings='%s'\n", - ci->drivers.extra_systable_prefixes, - ci->drivers.conn_settings); -#endif if (self->status != CONN_NOT_CONNECTED) { @@ -960,7 +945,6 @@ /* * Multibyte handling is available ? */ -#ifdef MULTIBYTE if (PG_VERSION_GE(self, 6.4)) { CC_lookup_characterset(self); @@ -1002,7 +986,6 @@ return 0; } #endif /* UNICODE_SUPPORT */ -#endif /* MULTIBYTE */ ci->updatable_cursors = 0; #ifdef DRIVER_CURSOR_IMPLEMENT if (!ci->drivers.use_declarefetch && diff -Pru ../cvs-psqlodbc/connection.h ./connection.h --- ../cvs-psqlodbc/connection.h 2002-09-23 10:08:20.000000000 +0200 +++ ./connection.h 2002-10-02 10:51:57.000000000 +0200 @@ -154,7 +154,6 @@ typedef ProtocolVersion MsgType; -#define PG_PROTOCOL(m,n) (((m) << 16) | (n)) #define CANCEL_REQUEST_CODE PG_PROTOCOL(1234,5678) typedef struct CancelRequestPacket @@ -315,10 +314,8 @@ char unicode; char result_uncommitted; char schema_support; -#ifdef MULTIBYTE char *client_encoding; char *server_encoding; -#endif /* MULTIBYTE */ int ccsc; int be_pid; /* pid returned by backend */ int be_key; /* auth code needed to send cancel */ diff -Pru ../cvs-psqlodbc/convert.c ./convert.c --- ../cvs-psqlodbc/convert.c 2002-09-23 10:08:20.000000000 +0200 +++ ./convert.c 2002-09-30 18:40:45.000000000 +0200 @@ -23,9 +23,7 @@ #include #include -#ifdef MULTIBYTE #include "multibyte.h" -#endif #include #ifdef HAVE_LOCALE_H @@ -1233,9 +1231,7 @@ BOOL proc_no_param; unsigned int declare_pos; UInt4 flags; -#ifdef MULTIBYTE encoded_str encstr; -#endif /* MULTIBYTE */ } QueryParse; static int @@ -1254,9 +1250,7 @@ q->proc_no_param = TRUE; q->declare_pos = 0; q->flags = 0; -#ifdef MULTIBYTE make_encoded_str(&q->encstr, SC_get_conn(stmt), q->statement); -#endif /* MULTIBYTE */ return q->stmt_len; } @@ -1649,11 +1643,8 @@ || ';' == wstmt[0]; } -#ifdef MULTIBYTE #define my_strchr(conn, s1,c1) pg_mbschr(conn->ccsc, s1,c1) -#else -#define my_strchr(conn, s1,c1) strchr(s1,c1) -#endif + /* * This function inserts parameters into an SQL statements. * It will also modify a SELECT statement for use with declare/fetch cursors. @@ -1880,7 +1871,6 @@ CVT_APPEND_DATA(qb, qp->statement + qp->from_pos + 5, qp->where_pos - qp->from_pos - 5); } } -#ifdef MULTIBYTE oldchar = encoded_byte_check(&qp->encstr, qp->opos); if (ENCODE_STATUS(qp->encstr) != 0) { @@ -1891,9 +1881,6 @@ /* * From here we are guaranteed to handle a 1-byte character. */ -#else - oldchar = qp->statement[qp->opos]; -#endif if (qp->in_escape) /* escape check */ { @@ -2710,10 +2697,8 @@ retval = inner_process_tokens(qp, qb); if (retval == SQL_ERROR) return retval; -#ifdef MULTIBYTE if (ENCODE_STATUS(qp->encstr) != 0) continue; -#endif if (qp->in_dquote || qp->in_quote || qp->in_escape) continue; @@ -3161,10 +3146,7 @@ out = 0, max; char *p = NULL; -#ifdef MULTIBYTE encoded_str encstr; -#endif - if (used == SQL_NTS) max = strlen(si); @@ -3175,13 +3157,10 @@ p = dst; p[0] = '\0'; } -#ifdef MULTIBYTE encoded_str_constr(&encstr, ccsc, si); -#endif for (i = 0; i < max && si[i]; i++) { -#ifdef MULTIBYTE encoded_nextchar(&encstr); if (ENCODE_STATUS(encstr) != 0) { @@ -3190,7 +3169,6 @@ out++; continue; } -#endif if (convlf && si[i] == '\r' && si[i + 1] == '\n') continue; else if (si[i] == '\'' || si[i] == '\\') diff -Pru ../cvs-psqlodbc/dlg_specific.c ./dlg_specific.c --- ../cvs-psqlodbc/dlg_specific.c 2002-07-26 10:45:54.000000000 +0200 +++ ./dlg_specific.c 2002-09-30 16:19:28.000000000 +0200 @@ -21,9 +21,7 @@ #include "convert.h" -#ifdef MULTIBYTE #include "multibyte.h" -#endif #include "pgapifunc.h" #ifndef BOOL @@ -535,16 +533,10 @@ ci->fake_oid_index, ci->show_system_tables); -#ifdef MULTIBYTE check_client_encoding(ci->conn_settings); qlog(" conn_settings='%s',conn_encoding='%s'\n", ci->conn_settings, check_client_encoding(ci->conn_settings)); -#else - qlog(" conn_settings='%s'\n", - ci->conn_settings); -#endif - qlog(" translation_dll='%s',translation_option='%s'\n", ci->translation_dll, ci->translation_option); diff -Pru ../cvs-psqlodbc/dlg_wingui.c ./dlg_wingui.c --- ../cvs-psqlodbc/dlg_wingui.c 2002-09-23 10:08:21.000000000 +0200 +++ ./dlg_wingui.c 2002-09-30 16:19:44.000000000 +0200 @@ -22,9 +22,7 @@ #include "convert.h" -#ifdef MULTIBYTE #include "multibyte.h" -#endif #include "pgapifunc.h" #ifndef BOOL diff -Pru ../cvs-psqlodbc/gpps.c ./gpps.c --- ../cvs-psqlodbc/gpps.c 2001-11-05 18:46:38.000000000 +0100 +++ ./gpps.c 2002-09-30 16:22:28.000000000 +0200 @@ -26,10 +26,7 @@ #include #include #include - -#if HAVE_PWD_H #include -#endif #include #include diff -Pru ../cvs-psqlodbc/info.c ./info.c --- ../cvs-psqlodbc/info.c 2002-09-23 10:08:21.000000000 +0200 +++ ./info.c 2002-09-30 16:17:15.000000000 +0200 @@ -37,9 +37,7 @@ #include "misc.h" #include "pgtypes.h" #include "pgapifunc.h" -#ifdef MULTIBYTE #include "multibyte.h" -#endif /* Trigger related stuff for SQLForeign Keys */ @@ -1517,9 +1515,7 @@ int i, outlen; const char *in; BOOL escape_in = FALSE; -#ifdef MULTIBYTE encoded_str encstr; -#endif if (srclen == SQL_NULL_DATA) { @@ -1530,19 +1526,15 @@ srclen = strlen(src); if (srclen <= 0) return STRCPY_FAIL; -#ifdef MULTIBYTE encoded_str_constr(&encstr, ccsc, src); -#endif for (i = 0, in = src, outlen = 0; i < srclen && outlen < dst_len; i++, in++) { -#ifdef MULTIBYTE encoded_nextchar(&encstr); if (ENCODE_STATUS(encstr) != 0) { dest[outlen++] = *in; continue; } -#endif if (escape_in) { switch (*in) @@ -2975,7 +2967,6 @@ } -#ifdef MULTIBYTE /* * Multibyte support stuff for SQLForeignKeys(). * There may be much more effective way in the @@ -3199,7 +3190,6 @@ } return ret; } -#endif /* MULTIBYTE */ RETCODE SQL_API PGAPI_ForeignKeys( @@ -3244,10 +3234,8 @@ *fkey_text; ConnectionClass *conn; -#ifdef MULTIBYTE BOOL pkey_alloced, fkey_alloced; -#endif /* MULTIBYTE */ int i, j, k, @@ -3346,10 +3334,8 @@ make_string(szFkTableName, cbFkTableName, fk_table_needed); conn = SC_get_conn(stmt); -#ifdef MULTIBYTE pkey_text = fkey_text = NULL; pkey_alloced = fkey_alloced = FALSE; -#endif /* MULTIBYTE */ /* * Case #2 -- Get the foreign keys in the specified table (fktab) that @@ -3618,21 +3604,15 @@ num_keys = 0; break; } -#ifdef MULTIBYTE pkey_text = getClientColumnName(conn, relid2, pkey_ptr, &pkey_alloced); -#else - pkey_text = pkey_ptr; -#endif /* MULTIBYTE */ mylog("%s: pkey_ptr='%s', pkey='%s'\n", func, pkey_text, pkey); if (strcmp(pkey_text, pkey)) { num_keys = 0; break; } -#ifdef MULTIBYTE if (pkey_alloced) free(pkey_text); -#endif /* MULTIBYTE */ /* Get to next primary key */ for (k = 0; k < 2; k++) pkey_ptr += strlen(pkey_ptr) + 1; @@ -3686,13 +3666,9 @@ { row = (TupleNode *) malloc(sizeof(TupleNode) + (result_cols - 1) *sizeof(TupleField)); -#ifdef MULTIBYTE pkey_text = getClientColumnName(conn, relid2, pkey_ptr, &pkey_alloced); fkey_text = getClientColumnName(conn, relid1, fkey_ptr, &fkey_alloced); -#else - pkey_text = pkey_ptr; - fkey_text = fkey_ptr; -#endif /* MULTIBYTE */ + mylog("%s: pk_table = '%s', pkey_ptr = '%s'\n", func, pk_table_fetched, pkey_text); set_tuplefield_null(&row->tuple[0]); set_tuplefield_string(&row->tuple[1], GET_SCHEMA_NAME(schema_fetched)); @@ -3717,14 +3693,12 @@ #endif /* ODBCVER >= 0x0300 */ QR_add_tuple(res, row); -#ifdef MULTIBYTE if (fkey_alloced) free(fkey_text); fkey_alloced = FALSE; if (pkey_alloced) free(pkey_text); pkey_alloced = FALSE; -#endif /* MULTIBYTE */ /* next primary/foreign key */ for (i = 0; i < 2; i++) { @@ -3994,13 +3968,9 @@ for (k = 0; k < num_keys; k++) { -#ifdef MULTIBYTE pkey_text = getClientColumnName(conn, relid1, pkey_ptr, &pkey_alloced); fkey_text = getClientColumnName(conn, relid2, fkey_ptr, &fkey_alloced); -#else - pkey_text = pkey_ptr; - fkey_text = fkey_ptr; -#endif /* MULTIBYTE */ + mylog("pkey_ptr = '%s', fk_table = '%s', fkey_ptr = '%s'\n", pkey_text, fk_table_fetched, fkey_text); row = (TupleNode *) malloc(sizeof(TupleNode) + (result_cols - 1) *sizeof(TupleField)); @@ -4034,14 +4004,12 @@ #endif /* ODBCVER >= 0x0300 */ QR_add_tuple(res, row); -#ifdef MULTIBYTE if (pkey_alloced) free(pkey_text); pkey_alloced = FALSE; if (fkey_alloced) free(fkey_text); fkey_alloced = FALSE; -#endif /* MULTIBYTE */ /* next primary/foreign key */ for (j = 0; j < 2; j++) @@ -4060,12 +4028,10 @@ PGAPI_FreeStmt(htbl_stmt, SQL_DROP); return SQL_ERROR; } -#ifdef MULTIBYTE if (pkey_alloced) free(pkey_text); if (fkey_alloced) free(fkey_text); -#endif /* MULTIBYTE */ PGAPI_FreeStmt(htbl_stmt, SQL_DROP); diff -Pru ../cvs-psqlodbc/misc.c ./misc.c --- ../cvs-psqlodbc/misc.c 2002-09-23 10:08:21.000000000 +0200 +++ ./misc.c 2002-09-30 16:11:22.000000000 +0200 @@ -19,9 +19,7 @@ #include #ifndef WIN32 -#if HAVE_PWD_H #include -#endif #include #include #else diff -Pru ../cvs-psqlodbc/parse.c ./parse.c --- ../cvs-psqlodbc/parse.c 2002-09-23 10:08:21.000000000 +0200 +++ ./parse.c 2002-09-30 16:15:40.000000000 +0200 @@ -34,19 +34,13 @@ #include "pgtypes.h" #include "pgapifunc.h" -#ifdef MULTIBYTE #include "multibyte.h" -#endif #define FLD_INCR 32 #define TAB_INCR 8 #define COL_INCR 16 -#ifdef MULTIBYTE char *getNextToken(int ccsc, char *s, char *token, int smax, char *delim, char *quote, char *dquote, char *numeric); -#else -char *getNextToken(char *s, char *token, int smax, char *delim, char *quote, char *dquote, char *numeric); -#endif /* MULTIBYTE */ void getColInfo(COL_INFO *col_info, FIELD_INFO *fi, int k); char searchColInfo(COL_INFO *col_info, FIELD_INFO *fi); @@ -76,18 +70,14 @@ char * getNextToken( -#ifdef MULTIBYTE int ccsc, /* client encoding */ -#endif /* MULTIBYTE */ char *s, char *token, int smax, char *delim, char *quote, char *dquote, char *numeric) { int i = 0; int out = 0; char qc, in_escape = FALSE; -#ifdef MULTIBYTE encoded_str encstr; -#endif if (smax <= 1) return NULL; @@ -114,20 +104,16 @@ if (numeric) *numeric = FALSE; -#ifdef MULTIBYTE encoded_str_constr(&encstr, ccsc, &s[i]); -#endif /* get the next token */ while (s[i] != '\0' && out < smax) { -#ifdef MULTIBYTE encoded_nextchar(&encstr); if (ENCODE_STATUS(encstr) != 0) { token[out++] = s[i++]; continue; } -#endif if (isspace((unsigned char) s[i]) || s[i] == ',') break; /* Handle quoted stuff */ @@ -148,14 +134,12 @@ i++; /* dont return the quote */ while (s[i] != '\0' && out != smax) { -#ifdef MULTIBYTE encoded_nextchar(&encstr); if (ENCODE_STATUS(encstr) != 0) { token[out++] = s[i++]; continue; } -#endif if (s[i] == qc && !in_escape) break; if (s[i] == '\\' && !in_escape) @@ -360,11 +344,7 @@ stmt->from_pos = -1; stmt->where_pos = -1; -#ifdef MULTIBYTE while (pptr = ptr, (ptr = getNextToken(conn->ccsc, pptr, token, sizeof(token), &delim, "e, &dquote, &numeric)) != NULL) -#else - while (pptr = ptr, (ptr = getNextToken(pptr, token, sizeof(token), &delim, "e, &dquote, &numeric)) != NULL) -#endif { unquoted = !(quote || dquote); @@ -707,20 +687,16 @@ if (!dquote) { char *ptr; -#ifdef MULTIBYTE encoded_str encstr; make_encoded_str(&encstr, conn, ti[stmt->ntab]->name); -#endif /* MULTIBYTE */ /* lower case table name */ for (ptr = ti[stmt->ntab]->name; *ptr; ptr++) { -#ifdef MULTIBYTE encoded_nextchar(&encstr); if (ENCODE_STATUS(encstr) != 0) ptr++; else -#endif /* MULTIBYTE */ *ptr = tolower((unsigned char) *ptr); } } diff -Pru ../cvs-psqlodbc/pgtypes.c ./pgtypes.c --- ../cvs-psqlodbc/pgtypes.c 2002-09-23 10:08:21.000000000 +0200 +++ ./pgtypes.c 2002-09-30 16:14:09.000000000 +0200 @@ -702,9 +702,7 @@ if (conn->unicode || conn->ms_jet) return attlen; #if (ODBCVER >= 0x0300) -#ifdef MULTIBYTE return attlen; -#endif /* MULTIBYTE */ #endif /* ODBCVER */ return p; } @@ -996,12 +994,10 @@ Int4 prec = pgtype_column_size(stmt, type, col, handle_unknown_size_as), maxvarc; if (conn->unicode) return prec * 2; -#ifdef MULTIBYTE /* after 7.2 */ if (PG_VERSION_GE(conn, 7.2)) coef = 3; else -#endif /* MULTIBYTE */ if ((conn->connInfo).lf_conversion) /* CR -> CR/LF */ coef = 2; @@ -1075,12 +1071,10 @@ case PG_TYPE_BPCHAR: if (conn->unicode) return prec * 2; -#ifdef MULTIBYTE /* after 7.2 */ if (PG_VERSION_GE(conn, 7.2)) coef = 3; else -#endif /* MULTIBYTE */ if ((conn->connInfo).lf_conversion) /* CR -> CR/LF */ coef = 2; diff -Pru ../cvs-psqlodbc/psqlodbc.h ./psqlodbc.h --- ../cvs-psqlodbc/psqlodbc.h 2002-09-23 10:08:21.000000000 +0200 +++ ./psqlodbc.h 2002-09-30 16:20:54.000000000 +0200 @@ -13,7 +13,7 @@ #define __PSQLODBC_H__ #ifndef WIN32 -#include "pg_config.h" +#include "config.h" #else #include #endif @@ -117,9 +117,8 @@ #endif /* WIN32 */ /* Limits */ -#ifdef WIN32 #define BLCKSZ 4096 -#endif +#define MAXPGPATH 1024 #define MAX_MESSAGE_LEN 65536 /* This puts a limit on * query size but I don't */ diff -Pru ../cvs-psqlodbc/setup.c ./setup.c --- ../cvs-psqlodbc/setup.c 2002-07-26 10:45:54.000000000 +0200 +++ ./setup.c 2002-10-07 14:32:26.000000000 +0200 @@ -32,10 +32,6 @@ /* Constants */ #define MIN(x,y) ((x) < (y) ? (x) : (y)) -#ifdef WIN32 -#define MAXPGPATH (255+1) -#endif - #define MAXKEYLEN (15+1) /* Max keyword length */ #define MAXDESC (255+1) /* Max description length */ #define MAXDSNAME (32+1) /* Max data source name length */