From ad00dfc6fe34f83115540173227131660d620002 Mon Sep 17 00:00:00 2001 From: Florian Weimer Date: Thu, 13 Apr 2023 10:14:36 +0200 Subject: [PATCH] Port to C99 Related to: --- unixODBC-c99.patch | 390 +++++++++++++++++++++++++++++++++++++++++++++ unixODBC.spec | 7 +- 2 files changed, 396 insertions(+), 1 deletion(-) create mode 100644 unixODBC-c99.patch diff --git a/unixODBC-c99.patch b/unixODBC-c99.patch new file mode 100644 index 0000000..3dbc874 --- /dev/null +++ b/unixODBC-c99.patch @@ -0,0 +1,390 @@ +Avoid implicit function declarations, for C99 compatibility + +Add additional prototypes and #include directives for system headers, +so that builds will not fail with compilers which do not support +implicit function declarations by default. + +Submitted upstream: + +diff --git a/Drivers/Postgre7.1/bind.h b/Drivers/Postgre7.1/bind.h +index 0df7ab90c6467553..f437e06828856b2c 100644 +--- a/Drivers/Postgre7.1/bind.h ++++ b/Drivers/Postgre7.1/bind.h +@@ -44,4 +44,8 @@ struct ParameterInfoClass_ { + BindInfoClass *create_empty_bindings(int num_columns); + void extend_bindings(StatementClass *stmt, int num_columns); + ++RETCODE SQL_API PG_SQLBindCol(HSTMT hstmt, UWORD icol, SWORD fCType, ++ PTR rgbValue, SQLLEN cbValueMax, ++ SQLLEN *pcbValue); ++ + #endif +diff --git a/Drivers/Postgre7.1/connection.c b/Drivers/Postgre7.1/connection.c +index 8b5256b68bf927b4..9dd56cc41178f4fa 100644 +--- a/Drivers/Postgre7.1/connection.c ++++ b/Drivers/Postgre7.1/connection.c +@@ -20,6 +20,7 @@ + #include "statement.h" + #include "qresult.h" + #include "lobj.h" ++#include "misc.h" + #include "dlg_specific.h" + #include + #include +diff --git a/Drivers/Postgre7.1/execute.c b/Drivers/Postgre7.1/execute.c +index 9fc4754e84a1716b..957bd28a3bd633e6 100644 +--- a/Drivers/Postgre7.1/execute.c ++++ b/Drivers/Postgre7.1/execute.c +@@ -34,10 +34,10 @@ + #include "convert.h" + #include "bind.h" + #include "lobj.h" ++#include "misc.h" + + extern GLOBAL_VALUES globals; + +-RETCODE SQL_API PG_SQLExecute( HSTMT hstmt); + SQLRETURN PG_SQLPrepare(SQLHSTMT hstmt, + SQLCHAR *szSqlStr , SQLINTEGER cbSqlStr); + +diff --git a/Drivers/Postgre7.1/misc.h b/Drivers/Postgre7.1/misc.h +index b9ba9ef18a20756f..4b6696764fa0b606 100644 +--- a/Drivers/Postgre7.1/misc.h ++++ b/Drivers/Postgre7.1/misc.h +@@ -106,4 +106,17 @@ int my_strlen(char *s, int len); + + int my_strcpy(char *dst, int dst_len, char *src, int src_len); + ++RETCODE SQL_API PG_SQLExecDirect(HSTMT hstmt, UCHAR FAR *szSqlStr, ++ SDWORD cbSqlStr); ++RETCODE SQL_API PG_SQLExecute(HSTMT hstmt); ++RETCODE SQL_API PG_SQLGetData(HSTMT hstmt, UWORD icol, SWORD fCType, ++ PTR rgbValue, SDWORD cbValueMax, ++ SDWORD FAR *pcbValue); ++RETCODE SQL_API PG_SQLFetch(HSTMT hstmt); ++RETCODE SQL_API PG_SQLColumns(HSTMT hstmt, UCHAR FAR * szTableQualifier, ++ SWORD cbTableQualifier, ++ UCHAR FAR * szTableOwner, SWORD cbTableOwner, ++ UCHAR FAR * szTableName, SWORD cbTableName, ++ UCHAR FAR * szColumnName, SWORD cbColumnName); ++ + #endif +diff --git a/Drivers/Postgre7.1/parse.c b/Drivers/Postgre7.1/parse.c +index e40edcf1959ce996..7530cdbcc3b8a564 100644 +--- a/Drivers/Postgre7.1/parse.c ++++ b/Drivers/Postgre7.1/parse.c +@@ -29,6 +29,7 @@ + #include "connection.h" + #include "qresult.h" + #include "pgtypes.h" ++#include "misc.h" + + #ifndef WIN32 + #ifndef HAVE_STRICMP +diff --git a/Drivers/Postgre7.1/results.c b/Drivers/Postgre7.1/results.c +index 48c24c358e1349be..eb71cd367c44cc30 100644 +--- a/Drivers/Postgre7.1/results.c ++++ b/Drivers/Postgre7.1/results.c +@@ -29,6 +29,7 @@ + #include "qresult.h" + #include "convert.h" + #include "pgtypes.h" ++#include "misc.h" + + #include + +diff --git a/Drivers/Postgre7.1/statement.c b/Drivers/Postgre7.1/statement.c +index 5e8e644e5eee388e..4e21af3a84572a1f 100644 +--- a/Drivers/Postgre7.1/statement.c ++++ b/Drivers/Postgre7.1/statement.c +@@ -22,6 +22,7 @@ + #include "qresult.h" + #include "convert.h" + #include "environ.h" ++#include "misc.h" + + #include + #include +diff --git a/Drivers/Postgre7.1/statement.h b/Drivers/Postgre7.1/statement.h +index 8cada2070998ef98..ea633bbb79eedfd9 100644 +--- a/Drivers/Postgre7.1/statement.h ++++ b/Drivers/Postgre7.1/statement.h +@@ -220,5 +220,7 @@ void SC_free_params(StatementClass *self, char option); + void SC_log_error(char *func, char *desc, StatementClass *self); + unsigned long SC_get_bookmark(StatementClass *self); + ++RETCODE SQL_API PG_SQLAllocStmt(HDBC hdbc, HSTMT FAR *phstmt); ++RETCODE SQL_API PG_SQLFreeStmt(HSTMT hstmt, UWORD fOption); + + #endif +diff --git a/Drivers/nn/SQLBindParameter.c b/Drivers/nn/SQLBindParameter.c +index 0a291b57a3c3cacc..48e358bc15151563 100644 +--- a/Drivers/nn/SQLBindParameter.c ++++ b/Drivers/nn/SQLBindParameter.c +@@ -126,3 +126,26 @@ RETCODE SQL_API SQLBindParameter( + } + + ++RETCODE SQL_API SQLSetParam ( ++ HSTMT hstmt, ++ UWORD ipar, ++ SWORD fCType, ++ SWORD fSqlType, ++ UDWORD cbColDef, ++ SWORD ibScale, ++ PTR rgbValue, ++ SDWORD FAR *pcbValue) ++{ ++ return SQLBindParameter(hstmt, ++ ipar, ++ (SWORD)SQL_PARAM_INPUT_OUTPUT, ++ fCType, ++ fSqlType, ++ cbColDef, ++ ibScale, ++ rgbValue, ++ SQL_SETPARAM_VALUE_MAX, ++ pcbValue ); ++} ++ ++ +diff --git a/Drivers/nn/SQLDriverConnect.c b/Drivers/nn/SQLDriverConnect.c +index 1d759a6d723f95b3..56ea940c27f8c9c8 100644 +--- a/Drivers/nn/SQLDriverConnect.c ++++ b/Drivers/nn/SQLDriverConnect.c +@@ -61,12 +61,7 @@ RETCODE SQL_API SQLDriverConnect( + break; + /* to next case */ + case SQL_DRIVER_PROMPT: +- if ( nnodbc_conndialog( hwnd, buf, sizeof(buf)) ) +- { +- sqlstat = en_IM008; +- break; +- } +- server = buf; ++ sqlstat = en_IM008; + break; + + default: +diff --git a/Drivers/nn/SQLSetParam.c b/Drivers/nn/SQLSetParam.c +index 3fb2dbdd066cd2c7..ebc9618edaba2d59 100644 +--- a/Drivers/nn/SQLSetParam.c ++++ b/Drivers/nn/SQLSetParam.c +@@ -1,40 +1 @@ +-/** +- Copyright (C) 1995, 1996 by Ke Jin +- Enhanced for unixODBC (1999) by Peter Harvey +- +- This program is free software; you can redistribute it and/or modify +- it under the terms of the GNU General Public License as published by +- the Free Software Foundation; either version 2 of the License, or +- (at your option) any later version. +- +- This program 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 General Public License for more details. +-**/ +-#include +-#include "driver.h" +- +-RETCODE SQL_API SQLSetParam ( +- HSTMT hstmt, +- UWORD ipar, +- SWORD fCType, +- SWORD fSqlType, +- UDWORD cbColDef, +- SWORD ibScale, +- PTR rgbValue, +- SDWORD FAR *pcbValue) +-{ +- return SQLBindParameter(hstmt, +- ipar, +- (SWORD)SQL_PARAM_INPUT_OUTPUT, +- fCType, +- fSqlType, +- cbColDef, +- ibScale, +- rgbValue, +- SQL_SETPARAM_VALUE_MAX, +- pcbValue ); +-} +- +- ++/* Moved to SQLBindParameter.c. */ +diff --git a/Drivers/nn/connect.c b/Drivers/nn/connect.c +index 0d6d7f679a7bff68..ea8281cf13d992cf 100644 +--- a/Drivers/nn/connect.c ++++ b/Drivers/nn/connect.c +@@ -129,6 +129,7 @@ readtoken( + + #if !defined(WINDOWS) && !defined(WIN32) && !defined(OS2) + # include ++# include + # define UNIX_PWD + #endif + +diff --git a/Drivers/nn/driver.h b/Drivers/nn/driver.h +index a9b1da5e9c7eeb8e..75171a219b20c358 100644 +--- a/Drivers/nn/driver.h ++++ b/Drivers/nn/driver.h +@@ -113,6 +113,11 @@ char* getkeyvalinstr( + char* value, + int size ); + ++int sqlputdata (stmt_t* pstmt, int ipar, char* data); ++int sqlexecute (stmt_t* pstmt); ++ ++int upper_strneq (char* s1, char* s2, int n); ++ + #endif + + +diff --git a/Drivers/nn/herr.h b/Drivers/nn/herr.h +index 2ceec2f7f6e0e12f..4c717e5cd415982d 100644 +--- a/Drivers/nn/herr.h ++++ b/Drivers/nn/herr.h +@@ -113,6 +113,7 @@ enum { + extern void* nnodbc_pusherr (void* stack, int code, char* msg); + extern void nnodbc_poperr (void* stack); + extern int nnodbc_errstkempty (void* stack); ++extern void nnodbc_errstkunset (void* stack); + extern int nnodbc_getsqlstatcode (void* stack); + extern char* nnodbc_getsqlstatstr (void* stack); + extern char* nnodbc_getsqlstatmsg (void* stack); +diff --git a/Drivers/nn/misc.c b/Drivers/nn/misc.c +index 81603c0fab2153ef..f1623be27d4cc15b 100644 +--- a/Drivers/nn/misc.c ++++ b/Drivers/nn/misc.c +@@ -15,6 +15,7 @@ + + #include + #include ++#include "driver.h" + + int upper_strneq( + char* s1, +diff --git a/Drivers/nn/nncol.c b/Drivers/nn/nncol.c +index 0dc298a2d5236fba..85318f1d24e4f4bc 100644 +--- a/Drivers/nn/nncol.c ++++ b/Drivers/nn/nncol.c +@@ -18,6 +18,7 @@ + + #include + #include "nncol.ci" ++#include "driver.h" + + int nnsql_getcolidxbyname( char* col_name ) + { +diff --git a/Drivers/nn/nndate.c b/Drivers/nn/nndate.c +index ac9d8e6d5ac30bd5..9a2163549e278466 100644 +--- a/Drivers/nn/nndate.c ++++ b/Drivers/nn/nndate.c +@@ -16,6 +16,7 @@ + #include + + #include ++#include "driver.h" + + static char* month_name[] = + { "Jan", "Feb", "Mar", "Apr", "May", "Jun", +diff --git a/Drivers/nn/nntp.c b/Drivers/nn/nntp.c +index 053efef0d9da9ae1..a4a7a9f440ce767b 100644 +--- a/Drivers/nn/nntp.c ++++ b/Drivers/nn/nntp.c +@@ -19,6 +19,7 @@ + #include + #include + #include ++#include "driver.h" + + # include "nntp.ci" + +@@ -28,6 +29,8 @@ + # include + # include + # include ++# include ++# include + + #else + +diff --git a/Drivers/nn/nntp.h b/Drivers/nn/nntp.h +index 733101c7967c90a1..df994a3da44db283 100644 +--- a/Drivers/nn/nntp.h ++++ b/Drivers/nn/nntp.h +@@ -78,6 +78,7 @@ extern int nntp_end_post ( void* hcndes ); + + extern int nntp_cancel ( void* hcndes, char* group, char* sender, + char* from, char* msgid); ++extern int nntp_postok ( void* hcndes ); + + extern int nntp_getaccmode( void* hcndes ); + extern void nntp_setaccmode( void* hcndes, int mode ); +diff --git a/Drivers/nn/yyenv.h b/Drivers/nn/yyenv.h +index 2a22191adb630c8b..00d66416eb175eed 100644 +--- a/Drivers/nn/yyenv.h ++++ b/Drivers/nn/yyenv.h +@@ -37,4 +37,7 @@ typedef struct + # define YYINITDEPTH (512) + # endif + ++void nnsql_yyinit(yyenv_t* penv, yystmt_t* yystmt); ++int nnsql_yyparse(yyenv_t* pyyenv); ++ + #endif +diff --git a/Drivers/nn/yylex.c b/Drivers/nn/yylex.c +index feaacefea251d049..d9daeb202412bdf6 100644 +--- a/Drivers/nn/yylex.c ++++ b/Drivers/nn/yylex.c +@@ -27,6 +27,8 @@ + #include + #include + ++#include "driver.h" ++ + static int getcmpopidxbyname(char* name) + { + int i, size; +diff --git a/Drivers/nn/yyparse.y b/Drivers/nn/yyparse.y +index 1cb0b49c57740d2f..283cebf0ff7eca05 100644 +--- a/Drivers/nn/yyparse.y ++++ b/Drivers/nn/yyparse.y +@@ -39,6 +39,9 @@ static char sccsid[] + #else + # define yylex() nnsql_yylex(&yylval, pyyenv) + #endif ++union YYSTYPE; ++int nnsql_yylex(union YYSTYPE* pyylval, yyenv_t* penv); ++ + + #define yyparse(x) nnsql_yyparse (yyenv_t* pyyenv) + #define yyerror(msg) nnsql_yyerror (pyyenv, msg) +diff --git a/Drivers/nn/yystmt.c b/Drivers/nn/yystmt.c +index 9a8d540138ae9575..74bad5f65274b13b 100644 +--- a/Drivers/nn/yystmt.c ++++ b/Drivers/nn/yystmt.c +@@ -14,6 +14,9 @@ + **/ + #include + #include "driver.h" ++#if !defined(WINDOWS) && !defined(WIN32) && !defined(OS2) ++#include ++#endif + + static char sccsid[] + = "@(#)NNSQL(NetNews SQL) v0.5, Copyright(c) 1995, 1996 by Ke Jin"; +diff --git a/Drivers/nn/yystmt.h b/Drivers/nn/yystmt.h +index 4e61ce84a4cac3f8..ad9b8745fb573cf7 100644 +--- a/Drivers/nn/yystmt.h ++++ b/Drivers/nn/yystmt.h +@@ -151,4 +151,9 @@ typedef struct { + long artnum_max; + } yystmt_t; + ++void nnsql_getrange(void* hstmt, long* pmin, long* pmax); ++int nnsql_strlike(char* str, char* pattern, char esc, int flag); ++int nnsql_srchtree_evl(void* hstmt); ++int nnsql_srchtree_tchk(void* hstmt); ++ + #endif diff --git a/unixODBC.spec b/unixODBC.spec index 433b80f..e3654dc 100644 --- a/unixODBC.spec +++ b/unixODBC.spec @@ -1,7 +1,7 @@ Summary: A complete ODBC driver manager for Linux Name: unixODBC Version: 2.3.11 -Release: 2%{?dist} +Release: 3%{?dist} URL: http://www.unixODBC.org/ # Programs are GPL, libraries are LGPL, except News Server library is GPL. License: GPLv2+ and LGPLv2+ @@ -12,6 +12,7 @@ Source5: README.dist Patch8: so-version-bump.patch Patch9: keep-typedefs.patch +Patch10: unixODBC-c99.patch Conflicts: iodbc @@ -38,6 +39,7 @@ ODBC, you need to install this package. %setup -q %patch8 -p1 -b .soname-bump %patch9 -p1 +%patch10 -p1 chmod 0644 Drivers/MiniSQL/*.c chmod 0644 Drivers/nn/*.c @@ -115,6 +117,9 @@ find $RPM_BUILD_ROOT%{_libdir} -name "*.so" | sed "s|^$RPM_BUILD_ROOT||" > dev %_libdir/pkgconfig/*.pc %changelog +* Thu Apr 13 2023 Florian Weimer - 2.3.11-3 +- Port to C99 + * Sat Jan 21 2023 Fedora Release Engineering - 2.3.11-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild