Four fixes in the Informix driver.
1. Build failure on a CSDK that does not know BIGINT.
Three host variables were declared "bigint", a type that only exists
in a CSDK new enough to know BIGINT; older ones fail to compile with
"unknown type name 'bigint'". Two other uses in this same file were
already guarded by CBIGINTTYPE - that guard had simply never been
applied to these three.
They are now guarded the same way, falling back to "int8", which
esqlc rewrites to ifx_int8_t before the C compiler sees the token.
That is the 12 byte struct rather than a scalar, so the fallback
converts with ifx_int8cvasc/ifx_int8toasc - a decimal string being
the only conversion that keeps all 64 bits - and binds as INT8,
since a CSDK without CBIGINTTYPE has no BIGINT to bind to either.
The two branches deliberately use different variable names. esqlc
does not evaluate the #if; it records every declaration it walks
past, so a shared name leaves the last one winning and the bigint
branch gets marshalled as ifx_int8_t. That still compiles, and
silently reads 12 bytes out of an 8 byte variable.
2. Error text reaching the caller with its parameter unsubstituted.
get_sqlerrm() relied on GET DIAGNOSTICS to fill in the message
parameter. Not every CSDK does, so a caller could be shown
"user %s is not known" instead of being told which user was
rejected.
3. Message templates used as printf format strings.
get_errmsg() handed the template from rgetmsg() to sprintf with a
single argument. Informix has templates carrying up to four
conversions, so the remaining ones were read off the stack.
Both now go through one helper that substitutes sqlca.sqlerrm
textually and drops any conversions left over, so text supplied by
the server is never used as a format.
4. An unset SQLPWD became an empty password.
acl_getenv() returns an empty string for a variable that is not set,
never a null pointer, so initPassword() has to use the
_not_set_as_0 form the way initUser() already does. With the plain
form a user name with no password was presented as USER x USING '',
which the server refuses with -951 - indistinguishable from a wrong
password. That case now falls back to a connection as the current
user, and warns that the configured name could not be used.
Also adds debug to the connect path: the database, the user name and
where it came from, and on failure the sqlcode and sqlerrm, which is
where the name the server actually saw appears. The password itself is
never logged.