summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Liddell <chris.liddell@artifex.com>2020-08-11 14:41:28 +0100
committerChris Liddell <chris.liddell@artifex.com>2020-08-18 10:16:33 +0100
commit0e98e2a27ed19fcc138215afe17ab1a173aeed7b (patch)
treec6129fd23dcac9ab48e410fe2d0b5c087b7c58bd
parent7cfa8d364797aed267285124a32b5cc5e1cd4794 (diff)
downloadghostpdl-0e98e2a27ed19fcc138215afe17ab1a173aeed7b.tar.gz
Add patch version to version number
This makes it easier to issue patch releases for security problems.
-rw-r--r--Resource/Init/gs_init.ps8
-rw-r--r--base/gsmisc.c12
-rw-r--r--base/version.mak9
-rw-r--r--devices/gdevtifs.c8
4 files changed, 22 insertions, 15 deletions
diff --git a/Resource/Init/gs_init.ps b/Resource/Init/gs_init.ps
index 9a464cb89..849e24ef1 100644
--- a/Resource/Init/gs_init.ps
+++ b/Resource/Init/gs_init.ps
@@ -34,7 +34,7 @@
% Interpreter library version number
% NOTE: the interpreter code requires that the first non-comment token
% in this file be an integer, and that it match the compiled-in version!
-953
+9530
% Check the interpreter revision.
dup revision ne
@@ -276,9 +276,9 @@ userdict /=string 256 string put
(\)\n) revisiondate 10 mod revisiondate 10 idiv 10 mod (-)
revisiondate 100 idiv 10 mod revisiondate 1000 idiv 10 mod (-)
revisiondate 10000 idiv ( \()
- revision 10 mod
- revision 100 mod 10 idiv (.)
- revision 100 idiv ( )
+ revision 10 mod (.)
+ revision 1000 mod 10 idiv (.)
+ revision 1000 idiv ( )
product
counttomark
{ (%stdout) (w) file exch 0 .writecvp
diff --git a/base/gsmisc.c b/base/gsmisc.c
index 766a22e18..661cbc9ae 100644
--- a/base/gsmisc.c
+++ b/base/gsmisc.c
@@ -228,9 +228,11 @@ printf_program_ident(const gs_memory_t *mem, const char *program_name, long revi
if (program_name)
outprintf(mem, (revision_number ? "%s " : "%s"), program_name);
if (revision_number) {
- int fpart = revision_number % 100;
+ int major = (int)(revision_number / 1000);
+ int minor = (int)(revision_number - (major * 1000)) / 10;
+ int patch = revision_number % 10;
- outprintf(mem, "%d.%02d", (int)(revision_number / 100), fpart);
+ outprintf(mem, "%d.%02d.%d", major, minor, patch);
}
}
void
@@ -241,9 +243,11 @@ emprintf_program_ident(const gs_memory_t *mem,
if (program_name) {
epfm(mem, (revision_number ? "%s " : "%s"), program_name);
if (revision_number) {
- int fpart = revision_number % 100;
+ int major = (int)(revision_number / 1000);
+ int minor = (int)(revision_number - (major * 1000)) / 10;
+ int patch = revision_number % 10;
- epfm(mem, "%d.%02d", (int)(revision_number / 100), fpart);
+ epfm(mem, "%d.%02d.%d", major, minor, patch);
}
epfm(mem, ": ");
}
diff --git a/base/version.mak b/base/version.mak
index 84e563b76..3f31f1859 100644
--- a/base/version.mak
+++ b/base/version.mak
@@ -12,14 +12,13 @@
#
# Makefile fragment containing the current revision identification.
-# Major and minor version numbers.
-# MINOR0 is different from MINOR only if MINOR is a single digit.
+# Major, minor and patch version numbers.
GS_VERSION_MAJOR=9
GS_VERSION_MINOR=53
-GS_VERSION_MINOR0=53
+GS_VERSION_PATCH=0
# Revision date: year x 10000 + month x 100 + day.
GS_REVISIONDATE=20200319
# Derived values
-GS_VERSION=$(GS_VERSION_MAJOR)$(GS_VERSION_MINOR0)
-GS_DOT_VERSION=$(GS_VERSION_MAJOR).$(GS_VERSION_MINOR0)
+GS_VERSION=$(GS_VERSION_MAJOR)$(GS_VERSION_MINOR)$(GS_VERSION_PATCH)
+GS_DOT_VERSION=$(GS_VERSION_MAJOR).$(GS_VERSION_MINOR).$(GS_VERSION_PATCH)
GS_REVISION=$(GS_VERSION)
diff --git a/devices/gdevtifs.c b/devices/gdevtifs.c
index 88cadd746..4ecafa8b0 100644
--- a/devices/gdevtifs.c
+++ b/devices/gdevtifs.c
@@ -390,13 +390,17 @@ int tiff_set_fields_for_printer(gx_device_printer *pdev,
TIFFSetField(tif, TIFFTAG_YRESOLUTION, (float)ypi);
{
- char revs[10];
+ char revs[32];
#define maxSoftware 40
char softwareValue[maxSoftware];
+ int revision = gs_revision_number();
+ int major = (int)(revision / 1000);
+ int minor = (int)(revision - (major * 1000)) / 10;
+ int patch = revision % 10;
strncpy(softwareValue, gs_product, maxSoftware);
softwareValue[maxSoftware - 1] = 0;
- gs_sprintf(revs, " %1.2f", gs_revision / 100.0);
+ gs_sprintf(revs, " %d.%2d.%d", major, minor, patch);
strncat(softwareValue, revs,
maxSoftware - strlen(softwareValue) - 1);