summaryrefslogtreecommitdiff
path: root/Tests/FindPostgreSQL/Test/main.c
diff options
context:
space:
mode:
authorBen Boeckel <ben.boeckel@kitware.com>2019-11-04 16:37:06 -0500
committerBrad King <brad.king@kitware.com>2019-11-07 09:24:12 -0500
commitaeae4182cb90cbf65b1c27cc877f62d2c7690aaf (patch)
tree63d19ce4a6412b7d212536ccae8c2623f5fe599b /Tests/FindPostgreSQL/Test/main.c
parent6d01a8e004c5faf2d0b2c3b7c0645ce3726181b6 (diff)
downloadcmake-aeae4182cb90cbf65b1c27cc877f62d2c7690aaf.tar.gz
FindPostgreSQL: support version encoding used in pre-10 releases
With the 10.x release, PostgreSQL upstream started encoding the version as `MMmmmm` where `M` is major and `m` is minor. Prior to that, `MMmmPP` was used where `P` was the patch number. Detect this difference and decode it based on the used encoding. Fixes: #19912
Diffstat (limited to 'Tests/FindPostgreSQL/Test/main.c')
-rw-r--r--Tests/FindPostgreSQL/Test/main.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/Tests/FindPostgreSQL/Test/main.c b/Tests/FindPostgreSQL/Test/main.c
index 2cfeed0da2..a63377a256 100644
--- a/Tests/FindPostgreSQL/Test/main.c
+++ b/Tests/FindPostgreSQL/Test/main.c
@@ -5,10 +5,19 @@
int main()
{
int version = PQlibVersion();
- int major = version / 10000;
- int minor = version % 10000;
char version_string[100];
- snprintf(version_string, sizeof(version_string), "%d.%d", major, minor);
+ // 9.x and older encoding.
+ if (version < 100000) {
+ int major = version / 10000;
+ int minor = version % 10000 / 100;
+ int patch = version % 100;
+ snprintf(version_string, sizeof(version_string), "%d.%d.%d", major, minor,
+ patch);
+ } else {
+ int major = version / 10000;
+ int minor = version % 10000;
+ snprintf(version_string, sizeof(version_string), "%d.%d", major, minor);
+ }
printf("Found PostgreSQL version %s, expected version %s\n", version_string,
CMAKE_EXPECTED_POSTGRESQL_VERSION);
return strcmp(version_string, CMAKE_EXPECTED_POSTGRESQL_VERSION);