Use <stdint.h> and <inttypes.h> for c.h integers.
authorThomas Munro <[email protected]>
Wed, 4 Dec 2024 01:46:59 +0000 (14:46 +1300)
committerThomas Munro <[email protected]>
Wed, 4 Dec 2024 02:05:38 +0000 (15:05 +1300)
commit962da900ac8f0927f1af2fd811ca67fa163c873a
tree5839c22d2ad7bc68ddfd1e4debc734ef5df3a9d1
parent3b08d5224d7df71cc111d8522cf6190fc02f6fb9
Use <stdint.h> and <inttypes.h> for c.h integers.

Redefine our exact width types with standard C99 types and macros,
including int64_t, INT64_MAX, INT64_C(), PRId64 etc.  We were already
using <stdint.h> types in a few places.

One complication is that Windows' <inttypes.h> uses format strings like
"%I64d", "%I32", "%I" for PRI*64, PRI*32, PTR*PTR, instead of mapping to
other standardized format strings like "%lld" etc as seen on other known
systems.  Teach our snprintf.c to understand them.

This removes a lot of configure clutter, and should also allow 64-bit
numbers and other standard types to be used in localized messages
without casting.

Reviewed-by: Peter Eisentraut <[email protected]>
Discussion: https://postgr.es/m/ME3P282MB3166F9D1F71F787929C0C7E7B6312%40ME3P282MB3166.AUSP282.PROD.OUTLOOK.COM
25 files changed:
config/c-compiler.m4
configure
configure.ac
meson.build
src/Makefile.global.in
src/bin/pg_waldump/pg_waldump.c
src/bin/pgbench/pgbench.c
src/include/.gitignore
src/include/Makefile
src/include/c.h
src/include/meson.build
src/include/pg_config.h.in
src/include/pg_config_ext.h.in [deleted file]
src/include/pg_config_ext.h.meson [deleted file]
src/include/port/pg_bitutils.h
src/include/postgres_ext.h
src/include/utils/dsa.h
src/interfaces/ecpg/ecpglib/typename.c
src/interfaces/ecpg/include/ecpg_config.h.in
src/interfaces/ecpg/include/meson.build
src/interfaces/ecpg/include/pgtypes_interval.h
src/interfaces/ecpg/include/sqltypes.h
src/interfaces/ecpg/test/expected/compat_informix-sqlda.c
src/port/pg_bitutils.c
src/port/snprintf.c