aboutsummaryrefslogtreecommitdiff
path: root/src/port/snprintf.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2018-10-12 11:14:27 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2018-10-12 11:14:27 -0400
commitf1885386f6246ac7b6f8d3f0aef247988f48ee7a (patch)
tree7e99f69d756666ae870157f415f3bab4d3c4ad81 /src/port/snprintf.c
parentb34e84f160a47d9070b304bfc1baf17596d71865 (diff)
downloadpostgresql-f1885386f6246ac7b6f8d3f0aef247988f48ee7a.tar.gz
postgresql-f1885386f6246ac7b6f8d3f0aef247988f48ee7a.zip
Make float exponent output on Windows look the same as elsewhere.
Windows, alone among our supported platforms, likes to emit three-digit exponent fields even when two digits would do. Adjust such results to look like the way everyone else does it. Eliminate a bunch of variant expected-output files that were needed only because of this quirk. Discussion: https://postgr.es/m/2934.1539122454@sss.pgh.pa.us
Diffstat (limited to 'src/port/snprintf.c')
-rw-r--r--src/port/snprintf.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/port/snprintf.c b/src/port/snprintf.c
index 31438dded45..d1c201fd9d6 100644
--- a/src/port/snprintf.c
+++ b/src/port/snprintf.c
@@ -1181,6 +1181,22 @@ fmtfloat(double value, char type, int forcesign, int leftjust,
}
if (vallen < 0)
goto fail;
+
+ /*
+ * Windows, alone among our supported platforms, likes to emit
+ * three-digit exponent fields even when two digits would do. Hack
+ * such results to look like the way everyone else does it.
+ */
+#ifdef WIN32
+ if (vallen >= 6 &&
+ convert[vallen - 5] == 'e' &&
+ convert[vallen - 3] == '0')
+ {
+ convert[vallen - 3] = convert[vallen - 2];
+ convert[vallen - 2] = convert[vallen - 1];
+ vallen--;
+ }
+#endif
}
padlen = compute_padlen(minlen, vallen + zeropadlen, leftjust);
@@ -1298,6 +1314,17 @@ pg_strfromd(char *str, size_t count, int precision, double value)
target.failed = true;
goto fail;
}
+
+#ifdef WIN32
+ if (vallen >= 6 &&
+ convert[vallen - 5] == 'e' &&
+ convert[vallen - 3] == '0')
+ {
+ convert[vallen - 3] = convert[vallen - 2];
+ convert[vallen - 2] = convert[vallen - 1];
+ vallen--;
+ }
+#endif
}
}