Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Tue Oct 14 21:35:22 2025 +0100

    ci: Update win-iconv version

    Pick up more recent master version, already including my fix.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Tue Oct 14 21:10:08 2025 +0100

    odbc: Do not link Driver Manager main library into FreeTDS driver

    Including all ODBC_LDFLAGS into ODBCINST_LDFLAGS causes to
    link also "odbc" library (main Driver Manager library) and
    not only "odbcinst" (the installation library).
    We need only to use a couple of installation function
    from our ODBC driver so avoid linking to main ODBC library.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Tue Oct 14 21:06:42 2025 +0100

    cmake: Link with gssapi_krb5 only with Kerberos enabled

    This library is only used to support Kerberos.
    Problem reported and change suggested by Benjamin Leff.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Wed Sep 10 17:53:56 2025 +0100

    dblib: Expand buffers to hold converted floating point

    Make sure there's enough space for converting the numbers.
    This fixes fisql command printing real/float values.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Thu Aug 28 21:02:57 2025 +0100

    Use CORK flag correctly, do not delay partial packets

    Resetting TCP_CORK flag in Linux causes the partial packets
    to be flushed however if the queue is full partial packets
    are not moved to the queue.
    Partial packets are then processed when space is available.
    However FreeTDS used to set again the flag causing partial
    packets to be delayed.
    Remove that delay reducing latency.

Author: Craig A. Berry <craigberry@mac.com>
Date:   Sat Jun 28 12:54:46 2025 -0500

    Update README.vms for recent changes

    and frankly some not-so-recent as I haven't touched it in a couple
    of decades.

Author: Craig A. Berry <craigberry@mac.com>
Date:   Sat Jun 28 11:33:24 2025 -0500

    Build and run more tests on VMS

    Some of the newer tests were not getting built and run.

Author: Craig A. Berry <craigberry@mac.com>
Date:   Fri Jun 27 19:12:07 2025 -0500

    Add a test wrapper for VMS

    The tests have voluminous output that makes it very hard to tell
    what failed or succeeded.  So make a test wrapper analogous to
    misc/full-test.sh. And then run the tests through that while
    continuing in the face of error so we don't kill the whole test
    suite if one test fails.

    Output will look like:

    Starting DBLIBCHECK...
    ok T0001
    ok T0002
    ok T0003
    ...
    ok BCP
    NOT ok THREAD -- check THREAD.log
    ok TEXT_BUFFER
    ....

Author: Craig A. Berry <craigberry@mac.com>
Date:   Fri Jun 27 15:37:13 2025 -0500

    Build test_base on VMS

    It doesn't do anything useful, but it makes the main() function go
    missing if we don't have it.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Thu Jun 26 09:39:36 2025 +0100

    odbc: More compatiblity for SQL_ATTR_QUERY_TIMEOUT attribute

    By default should return 0 value.
    Add test for it.
    Also add test for clamping value.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Thu Jun 26 07:07:42 2025 +0100

    tds: Do not accept negative values for some configuration

    Negative values do not make sense for TCP port and TEXTSIZE.
    Negative timeout values are not valid.

Author: Craig A. Berry <craigberry@mac.com>
Date:   Tue Jun 24 10:38:20 2025 -0500

    VMS has had vsnprintf for a long time

    And this allows for a better vasprintf fallback for systems where
    vasprintf is not available.

Author: Craig A. Berry <craigberry@mac.com>
Date:   Mon Jun 23 07:26:27 2025 -0500

    Better test for vasprintf on VMS

    Recentish CRTLs do have it, but the test I added 23 years ago was
    not correctly detecting it.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Tue Jun 17 09:56:39 2025 +0100

    ci: Add MSSQL 2025 to GH action matrix

    SA_PASSWORD environment is deprecated so add also newer
    MSSQL_SA_PASSWORD.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Thu Jun 19 13:16:10 2025 +0100

    ctlib: Update enumeration style

    Do not use CamelCase.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Fri Apr 18 20:29:42 2025 +0100

    ctlib: Improve and fix query parsing

    Factor our a new query_has_for_update to check is a query has a
    "FOR UPDATE" clause.
    Add a test for such a function.
    Take into account comments during the parse.
    Handle correctly strings and identifiers as single tokens.
    Use mnemonics instead of literal constants.

Author: Aaron M. Ucko <ucko@ncbi.nlm.nih.gov>
Date:   Mon May 13 15:06:24 2024 -0400

    ct_cursor: Predict cursor type for CS_CURSOR_DECLARE.

    Request forward-only cursors for updates, keyset-driven cursors otherwise.
    Regardless, specify optimistic cursors, which check timestamps and, when
    they're not available, values.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Thu Jun 19 11:24:38 2025 +0100

    ctlib: Add a comment for FreeTDS extension

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Wed Jun 18 11:08:10 2025 +0100

    tds: Fix bulk copy in for Microsoft XML type

    As documented, and tested, the protocol requires the usage
    of NVARCHAR type, not XML, which is refused causing an error.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Tue Jun 17 14:44:51 2025 +0100

    tds: Add more types to tds_get_column_declaration

    XML and UNITEXT support.
    Add some missing cases to the switch, just for completeness.
    Show warnings if new types are added and --enable-extra-checks is
    used.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Tue Jun 17 14:39:33 2025 +0100

    tds: Reuse computed type

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sun Jun 15 13:02:46 2025 +0100

    tds: Do not override all GnuTLS settings

    Use gnutls_set_default_priority_append instead of
    gnutls_priority_set_direct if available.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sun Jun 15 13:42:28 2025 +0100

    tds: Disable TLS v1.1 by default

    The protocol was deemed to be not much secure anymore.
    It's less of a problem for Windows compared to v1.0 as
    Windows added support for TLS v1.1 and v1.2 together.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Mon Jun 16 17:46:17 2025 +0100

    tds: Constify passing collation information

Author: Matt McNabb <matthew.mcnabb@vmssoftware.com>
Date:   Tue Apr 22 13:32:24 2025 +1200

    Allow ASE (TDS 5.0) with TDS_ENCRYPTION_STRICT option

Author: Matt McNabb <matthew.mcnabb@vmssoftware.com>
Date:   Tue Apr 22 13:32:02 2025 +1200

    Allow Strict Encryption for TDS 5.0 (Sybase SSL works this way)

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sat May 31 17:02:34 2025 +0100

    tds: Fix bound check conversion (float -> uint)

    Converting from floating point to unsigned int the bound check
    was incorrect resulting in invalid conversions if the input
    value was not in range.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sat May 31 17:00:18 2025 +0100

    tsql: Avoid possible invalid type formatting a message

    Specifically:

    tsql.c: In function ‘do_query’:
    tsql.c:292:80: warning: format ‘%ld’ expects argument of type ‘long int’, but argument 4 has type ‘__suseconds64_t’ {aka ‘long long int’} [-Wformat=]
      292 |                         sprintf(message, "Total time for processing %d rows: %ld msecs\n",
          |                                                                              ~~^
          |                                                                                |
          |                                                                                long int
          |                                                                              %lld
      293 |                                 rows, (long) ((stop.tv_sec - start.tv_sec) * 1000) + ((stop.tv_usec - start.tv_usec) / 1000));
          |                                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |                                                                                    |
          |                                                                                    __suseconds64_t {aka long long int}

    long should be enough for 49 days in case of 32 bit, I hope
    your query doesn't take so long.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Wed May 28 07:50:03 2025 +0100

    ci: Enable back MSSQL 2017

    It was disabled due to some server setup issues.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Thu May 22 22:05:53 2025 +0100

    odbc: Add ConnectionTimeout parameter

    This is especially useful to avoid having to call SQLSetConnectAttr.
    For instance you can use this parameter for PHP.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sun May 25 10:16:19 2025 +0100

    odbc: Check ODBC attribute list is sorted

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sun May 25 13:06:22 2025 +0100

    odbc: Sort ODBC attribute list in alphabetical order

    Prepare to simplify attribute lookup.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sat May 24 21:59:25 2025 +0100

    odbc: Reuse odbc_appintent2readonly function

    Make code handling ApplicationIntent attribute more similar.

Author: Peter Deacon <peterd@iea-software.com>
Date:   Sat May 24 21:29:46 2025 +0100

    odbc: Add loading ApplicationIntent from odbc.ini

Author: Peter Deacon <peterd@iea-software.com>
Date:   Sat May 24 21:29:15 2025 +0100

    odbc: Add support for ODBC connection attribute ServerCertificate

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sat May 24 22:12:27 2025 +0100

    Add missing gl_HOST_CPU_C_ABI_32BIT m4 macro

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sat May 24 21:03:13 2025 +0100

    Update ax_pthread.m4 macro

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Thu May 22 23:22:23 2025 +0100

    ci: Add m4 macros to satisfy new MacOS

    Make sure AM_ICONV and dependent macros are defined.
    We newer gettext brew package it seems we have problems
    finding this macro.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sat Mar 22 07:33:16 2025 +0000

    Avoid errors redefining getpid() for MingW

    We use a macro for getpid but MingW define a getpid function
    which can clash with our definition. Include unistd.h header
    earlier to avoid the clash later.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Wed Apr 23 21:47:50 2025 +0100

    ctlib: Add a test for data rows locking tables to blk_in test

    As other tests for bulk copy skip the test if the setup fails.
    This allows to add tests for types not supported by some versions
    of the database without having to explicitly test if some types
    are supported or not for the specific query.
    Add a test with "LOCK DATAROWS" which fails on Microsoft servers.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Wed Apr 23 22:36:46 2025 +0100

    ctlib: Check all command succeed running a query with run_command

    Almost all test queries are expected to run successfully
    commands so check they all succeeded.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Wed Apr 23 22:15:58 2025 +0100

    ctlib: Do not store run_command results if not used

    No reason to store the result value.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Wed Apr 23 21:43:28 2025 +0100

    tds: Detect data rows locking looking to capabilities

    More fine grained and correct check.
    For instance ASE version 12.5.2 reports a version of 12.5 during
    login so the check for >= 12.5.1 failed causing invalid encoding.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Wed Apr 23 21:41:08 2025 +0100

    tds: Make clear product version is hexadecimal in logs

    Format output as 0xXXXX, not just XXXX.

Author: Matt McNabb <matthew.mcnabb@vmssoftware.com>
Date:   Mon Apr 14 15:57:29 2025 +1200

    [DOL BULK] Documentation for sysstat2; warn about slow index for datarows-locked table

Author: Matt McNabb <matthew.mcnabb@vmssoftware.com>
Date:   Mon Apr 14 15:22:24 2025 +1200

    [DOL BULK] Perform the locktype query before the columns query - hidden dependency

Author: Matt McNabb <matthew.mcnabb@vmssoftware.com>
Date:   Mon Apr 14 15:15:30 2025 +1200

    [DOL BULK] Also support freebcp being invoked with database.owner.tablename

Author: Matt McNabb <matthew.mcnabb@vmssoftware.com>
Date:   Mon Apr 14 13:33:26 2025 +1200

    [DOL BULK] Row data packet layout

Author: Matt McNabb <matthew.mcnabb@vmssoftware.com>
Date:   Mon Apr 14 12:36:05 2025 +1200

    [DOL BULK] Probe for datarows-lock on the table

            Limit the locking type probe to ASE versions that support it

Author: Matt McNabb <Matthew.mcnabb@vmssoftware.com>
Date:   Fri Apr 11 17:46:43 2025 +1200

    [DOL BULK] Add TDS_REQ_DOL_BULK to capabilities.

      Wireshark calls this TDS_DOL_VOID and tds.capability.dol.bulk
      Required by SAP ASE to bulk insert to a datable with DATAROWS locking.

Author: Matt McNabb <matthew.mcnabb@vmssoftware.com>
Date:   Mon Apr 14 10:45:52 2025 +1200

    Allow alternate input file for c_blk_in unittest

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Mon Apr 21 18:16:42 2025 +0100

    ctlib: Check buffer length for ct_cmd_props(CS_CUR_STATUS)

    Sybase requires it to be CS_UNUSED.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Mon Apr 21 13:12:52 2025 +0100

    ctlib: Better check for ct_cursor parameters

    Check parameters in a way more similar to Sybase libraries.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Mon Apr 21 15:58:08 2025 +0100

    ctlib: Remove leak freeing command

    Release cursor while freeing command.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Mon Apr 21 02:58:41 2025 +0100

    ctlib: Reuse check_call macros in tests

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Mon Mar 24 05:20:49 2025 +0000

    tds: Do nothing if error on tds_set_interfaces_file_loc

    It should not happen, but in case it does do not revert to
    NULL.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sun Apr 20 10:30:13 2025 +0100

    Avoid some mixed sign compare converting numeric

    tds_numeric_bytes_per_prec are always more than 0 bytes.
    tds_swap_bytes takes the size of the buffer which should be
    size_t, not int.
    Also fill the entire numeric with zeroes first as makes easier
    for new compilers to use better code due to size constant.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Fri Mar 21 04:37:57 2025 +0000

    tds: Remove some warnings compiling with -Wconversion

    Most of the times we check for overflow before numeric conversions.
    Use unsigned characters if we need to do computation on them.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sun Apr 20 02:29:51 2025 +0100

    odbc: Set proper error in convert_numeric2server

    Propagate conversion error, otherwise a generic one would be
    used.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sun Apr 20 02:20:43 2025 +0100

    odbc: Extract and reuse function to convert numeric from ODBC to libTDS

    Reduce code duplication.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sat Apr 19 19:59:43 2025 +0100

    odbc: Add support for SQL_COPT_SS_ATTACHDBFILENAME connection attribute

    Allows to attach a file while logging it.
    Previously the option was only available using string
    attributes using SQLDriverConnect.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sun Jul 8 10:01:10 2018 +0100

    dblib: Return table column name from dbtablecolinfo if available

    Fill ActualName with real column table name if available.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sat Apr 19 16:15:47 2025 +0100

    Add missing test_base.h file to distribution

    File was added in commit c431fed9845a6d68e2383922598982b10eb1ff79
    (cfr "unit tests: Start phasing in a central baseline setup")

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sat Apr 19 03:42:08 2025 +0100

    Swap varint size 4 and 5 to make code more readable

    Varint size is, for most types, the size of the length in the protocol.
    For instance a size 0 means there's no size associated with the
    type while 1 means the size is one byte (so potentially 0-255).
    This is not true for size 5 which is a simple 4 bytes length while
    type 4 was a bit more complicated (having 2 lengths, one for
    text pointer and one for the data).
    Swap varint types of 4 and 5 to make the code more readable and
    consistent.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sat Apr 19 03:48:57 2025 +0100

    utils: Fix range check converting path name

    The check was meant to check if the returned length exceeded
    the passed buffer.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sat Apr 19 03:25:54 2025 +0100

    ctlib: Explain the need for cs_dt_crack

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Mon Mar 24 05:23:07 2025 +0000

    utils: Always force terminator for tds_dir_from_cstr

    We explicitly convert the terminator so it should be already
    terminated. But won't hurt force setting it.
    Also check MultiByteToWideChar is not returning wrong values.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Fri Apr 18 20:29:27 2025 +0100

    Define and use more cursor constants

    Mainly style change.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Fri Apr 18 10:20:19 2025 +0100

    odbc: Fix linker issues with wide support disabled on Windows

    Do not attempt to export wide functions if they are not compiled.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Fri Apr 18 10:19:19 2025 +0100

    odbc: Do not give warnings compiling with wide support disabled

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Fri Apr 18 10:18:08 2025 +0100

    dblib: Remove an unused warning on Windows

    UNITTEST variable is not used if systems, like Windows, does not
    support fstat.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Thu Apr 17 20:41:06 2025 +0100

    tests: Reuse bool, make symbols static

    Use bool type for "failed" variable.
    Do not export functions or variables from tests if not needed.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Thu Apr 17 19:30:16 2025 +0100

    doc: Sync web pages

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Tue Apr 15 20:53:52 2025 +0100

    dblib: Check NULL behaviour in t0014 test

    Check dbreadtext does not crash on NULL values.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Mon Mar 24 05:18:57 2025 +0000

    dblib: Allows to pass NULL to dbsetifile

    As documented by Sybase passing NULL should reset to the default
    value.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Tue Apr 15 21:21:57 2025 +0100

    dblib: Fix dbreadtext crash on NULL values

    NULL values have column_cur_size < 0.
    Do not use negative values for size, thread NULL values has having
    size zero. This will cause dbreadtext to return 0, which is the
    correct value.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Tue Apr 15 20:53:11 2025 +0100

    dblib: Compatibility with Sybase libraries for t0013 and t0014 tests

    DBTDS_7_2 is only FreeTDS.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Tue Apr 15 20:52:21 2025 +0100

    dblib: Add some assert in some tests

    Make sure memory allocations did not fail.
    Check some unexpected result from dbreadtext.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Tue Apr 15 20:50:20 2025 +0100

    dblib: Make some variable static

    Reduce scope, no need to export them, they are not used
    outside tests.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Tue Apr 15 20:48:11 2025 +0100

    dblib: Use bool in t0013 and t0014 tests

    Just style change.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sat Mar 29 15:08:48 2025 +0000

    apps: Remove warning compiling with MSVC

    Specifically:

        warning C4996: 'unlink': The POSIX name for this item is deprecated.
        Instead, use the ISO C++ conformant name: _unlink.
        See online help for details.

    This was introduced by commit 0c5059e394f19e
    (cfr "Makes macros.h independent from other headers").

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Fri Mar 28 05:23:35 2025 +0000

    More robust filename comparison on log_elision.c

    Problem reported by Craig A. Berry.
    On OpenVMS the check for log was failing due to different
    syntax of file names.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Thu Mar 27 07:36:08 2025 +0000

    dblib: Remove server and timeout override in some tests

    I never used this feature.
    Also it's confusing with last changes and printing the wrong
    executable name if used.

Author: Aaron M. Ucko <ucko@ncbi.nlm.nih.gov>
Date:   Wed Jul 17 15:38:03 2024 -0400

    Centralize test login info (PWD file) handling.

    Extend the recently introduced tds_test_base library to supply a new
    COMMON_PWD data structure (mostly based on ctlib tests'), an instance
    thereof (the only one in practice), functions for working with it, and
    the default (relative) path to try.  Adjust everything else to use
    this setup rather than a local variant thereof.  Let historical
    variable names such as SERVER continue to work within dblib tests
    because all online dblib tests need to consult them, but explicitly go
    through the instance elsewhere, including dblib tests' common.c.

Author: Aaron M. Ucko <ucko@ncbi.nlm.nih.gov>
Date:   Wed Jul 17 14:57:08 2024 -0400

    Optionally suppress crash dialog boxes for tests on Windows.

    Consult the environment variable DIAG_SILENT_ABORT (if present),
    looking for a value starting with Y or y.  To that end, adjust
    TEST_MAIN to call test-specific entry points test_main and incorporate
    a new tds_test_base library defining a wrapper main that, on Windows,
    first suppresses any possible source of crash dialog boxes.

Author: Aaron M. Ucko <ucko@ncbi.nlm.nih.gov>
Date:   Wed Jul 17 13:31:26 2024 -0400

    unit tests: Formally designate entry points as TEST_MAIN().

    Define it in the recently introduced <freetds/utils/test_base.h>
    (which now includes <freetds/macros.h> accordingly) as

      int main(int argc TDS_UNUSED, char **argv TDS_UNUSED)

    so that main can have the same signature in tests that ignore any
    arguments as in tests that consult arguments without yielding any
    warnings.  Use this macro for all tests to pave the way for
    introducing a central main wrapper around what will then be a
    test-specific test_main.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Wed Mar 26 10:26:37 2025 +0000

    Makes macros.h independent from other headers

    This header can be potentially be included very earlier.
    Avoid having it dependent on other larger headers.
    This can cause some compilation error in some environments
    like MingW.

Author: Aaron M. Ucko <ucko@ncbi.nlm.nih.gov>
Date:   Wed Jul 17 12:32:39 2024 -0400

    unit tests: Start phasing in a central baseline setup.

    * Introduce a <freetds/utils/test_base.h> that for now simply ensures
      that assertions in test-specific code will always be active and
      pulls in <config.h>.  (Tests that use assertions are still responsible
      for including <assert.h> themselves, but <config.h> is generally best
      included as early as possible.)
    * Start every common.h with #include <freetds/utils/test_base.h> and
      src/tds/unittests/{parsing,tls}.c with #include "common.h".  (Every
      other unit test with an accompanying common.h already had that form.)
    * Don't directly undefine NDEBUG or include <config.h> anywhere in
      */src/unittests.

Author: Aaron M. Ucko <ucko@ncbi.nlm.nih.gov>
Date:   Mon May 13 15:09:06 2024 -0400

    ct_get_data: Populate cmd->iodesc->name more efficiently.

    Explicitly build cmd->iodesc->name and update ...->namelen along the
    way rather than calling sprintf and strlen (which can be slow).

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sun Mar 23 11:07:47 2025 +0000

    Remove -no-install warnings for Mac OS

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sun Mar 23 10:56:10 2025 +0000

    ci: Build tests under Mac OS

    Just build the test, at least check if they compile.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sun Mar 23 05:21:08 2025 +0000

    Remove some -Wconversion warnings

    In ct.c we already tested the numbers were not negative.
    For tests force conversions, we expect numbers not to be negative.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sun Mar 23 09:36:11 2025 +0000

    Do not compile some empty modules

    Some systems (like Mac OS) complains that module (c files) are
    empty, not exporting any symbols.
    This is due to conditional compilation in some files.
    Replacement functions are compiled only if missing (poll, socketpair).
    Some code is only used on Windows (gettimeofday.c, win_mutex.c).

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sun Mar 23 08:21:26 2025 +0000

    Remove usage of WIN32, WIN64 and __WIN32__ macros

    _WIN32 is always present for Windows having at least 32 bit, so
    no need to check either WIN32 or __WIN32__.
    WIN64 is not used in code, _WIN64 can be used instead if needed.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sun Mar 23 05:49:36 2025 +0000

    odbc: Minor changes to parse hexadecimal numbers

    The assert it's testing condition that cannot happen, pretty
    paranoid.
    Convert to lower case instead of upper case so simplify (with or
    the constant is simpler than with and).

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sun Mar 23 05:47:04 2025 +0000

    Do not include assert.h if not used

Author: Craig A. Berry <craigberry@mac.com>
Date:   Sat Mar 22 14:55:25 2025 -0500

    VMS build updates

    Find OpenSSL 3.x if available.
    Build tweaks to avoid unrecognized symbols.

Author: Aaron M. Ucko <ucko@ncbi.nlm.nih.gov>
Date:   Wed Jul 17 16:08:10 2024 -0400

    Formally address static analyzer concerns.

    * Add more explicit sanity checks and initializers.
    * vstrbuild.c (tds_vstrbuild): Use unsigned int for counts that will
      never be negative.
    * rpc_ct_setparam.c (ex_display_results): Avoid memory leaks in some
      error cases.

Author: Aaron M. Ucko <ucko@ncbi.nlm.nih.gov>
Date:   Wed May 8 16:21:30 2024 -0400

    Fix compilation errors in single-threaded builds.

    * Conditionally stub out the tests that require threading (as of 1.4.12)
      and don't yet have such logic.
    * include/freetds/thread.h: Never try to add extra checks around stubs.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Fri Mar 21 08:50:34 2025 +0000

    Reuse TDS_MIN and TDS_MAX macros

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Fri Mar 21 07:45:08 2025 +0000

    tds: Move tds_put_buf to login.c

    It's used specifically for login.
    In the meantime use TDS_PUT_BYTE instead of tds_put_byte to avoid
    a possible warning and and reuse TDS_MIN.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Fri Mar 21 07:42:35 2025 +0000

    tds: Introduce and reuse TDS_MAX, TDS_MIN and TDS_CLAMP

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Fri Mar 21 04:35:33 2025 +0000

    tds: Add some comments in tds_numeric_to_string

Author: Aaron M. Ucko <ucko@ncbi.nlm.nih.gov>
Date:   Tue May 28 15:16:52 2024 -0400

    Address most implicit conversion warnings.

    - Harmonize variable, parameter, etc. data types more fully.
    - Adjust system API usage accordingly:
    -- For some string constants, use sizeof() - 1 in lieu of strlen,
       taking care to ensure they come from array variables.
    -- Keep format specifiers for printf et al. in sync with argument types.
    -- dbprrow: Account for the fact that printf always uses int for
       dynamic widths by substituting memchr + fwrite.
    -- odbc/prepare_query.c (prepared_rpc): Substitute atoi for strtol
       (already used with no endptr) when populating TDSINT4.
    - Cast away some remaining discrepancies where safe, in some cases by
      taking advantage of TDS_PUT_* macros.
    - ctlib.h: Explicitly define _CS_CURS_TYPE_* in terms of
      TDS_CURSOR_STATE_* rather than duplicating their values.
    - odbc_util.c: #include <stddef.h> for ptrdiff_t (now used in
      odbc_set_string_flag).
    - tds_parse_conf_section: To legitimize a cast, tighten debug_flags'
      range check on systems where int is narrower than long.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Fri Mar 14 10:43:38 2025 +0000

    Remove some warnings compiling with -Wconversion

    This option detect problems truncating integer numbers and
    changing sign.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Wed Mar 12 08:07:12 2025 +0000

    doc: Update note on release process

    Mostly removal of old notes.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Thu Mar 6 20:36:46 2025 +0000

    doc: Sync web pages

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Wed Mar 12 04:23:56 2025 +0000

    Avoid some warnings if -Wconversion is used

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Wed Mar 12 04:24:38 2025 +0000

    Use sizeof instead of constants

    Make easier to change buffer size and code more readable.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Wed Mar 12 04:19:07 2025 +0000

    tds: Use size_t for tds_timestamp_str buffer size

    More appropriate type.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Tue Mar 11 19:39:20 2025 +0000

    doc: Update software used for release

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Tue Mar 11 19:41:22 2025 +0000

    odbc: Add a comment about usage of iODBC extension

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Tue Mar 11 19:41:03 2025 +0000

    odbc: Use more verbose and clear names for some Unicode macros

    Makes code more clear.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sun Mar 9 21:08:14 2025 +0000

    odbc: Add missing potential iconv library to tests

    If iconv library is needed it wasn't find linking some tests.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sun Mar 9 21:07:04 2025 +0000

    odbc: Implement SQL_ATTR_DRIVER_UNICODE_TYPE

    It's a iODBC extension to get the type of Unicode driver.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sat Mar 8 22:02:07 2025 +0000

    doc: Remove obsolete note from README file

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sun Mar 9 21:09:14 2025 +0000

    tds: Remove warnings about some unused parameters

    This apply to system still using OpenSSL 1.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sun Mar 9 08:42:50 2025 +0000

    odbc: Remove obsolete TODO in SQLSetConnectOption

    vParam should be always be the same size as the pointer.
    Also write vParam converted to avoid printing part of it during
    logging in case of 64 bit environments.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sun Mar 9 08:40:39 2025 +0000

    odbc: Avoid potentially usage of NULL pointer

    "params" can be used uninitialised in case of new_query allocation
    failure.

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sat Mar 8 22:01:06 2025 +0000

    tds: Avoid some possible conversion warning in some tests

    Specifically:

      CC       charconv.o
    charconv.c:105:20: warning: implicit conversion from 'int' to 'char' changes value from 194 to -62 [-Wconstant-conversion]
      105 |                 buf[*pos] = 0xC0 + (x >> 6);
          |                           ~ ~~~~~^~~~~~~~~~

Author: Frediano Ziglio <freddy77@gmail.com>
Date:   Sat Mar 8 21:56:49 2025 +0000

    odbc: Use correct type for wide characters in utf8_4 test

    Some Driver Manager do not define WCHAR type, use SQLWCHAR which
    is the same type used below in the code.

