From 7811a6d5a908c215fcb838c19667c5c7daf0009f Mon Sep 17 00:00:00 2001 From: Eric Blake Date: Thu, 20 Nov 2008 21:02:22 -0700 Subject: [PATCH] Handle version numbers as decimal, even if they start with 0. * lib/m4sugar/m4sugar.m4 (_m4_version_unletter): Avoid interpreting leading zeros as octal. Signed-off-by: Eric Blake --- ChangeLog | 6 ++++++ lib/m4sugar/m4sugar.m4 | 13 +++++++------ tests/m4sugar.at | 4 ++++ 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index b14c98dfb..24b8091a0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-11-20 Eric Blake + + Handle version numbers as decimal, even if they start with 0. + * lib/m4sugar/m4sugar.m4 (_m4_version_unletter): Avoid + interpreting leading zeros as octal. + 2008-11-20 Eric Blake Speed up AT_CHECK. diff --git a/lib/m4sugar/m4sugar.m4 b/lib/m4sugar/m4sugar.m4 index 46579953e..fd443ca99 100644 --- a/lib/m4sugar/m4sugar.m4 +++ b/lib/m4sugar/m4sugar.m4 @@ -2589,9 +2589,10 @@ m4_define([m4_sign], # Nl -> (N+1).-1.(l#) # # for example: -# [2.14a] -> [2,14+1,-1,[0r36:a]] -> 2.15.-1.10 -# [2.14b] -> [2,15+1,-1,[0r36:b]] -> 2.15.-1.11 -# [2.61aa.b] -> [2.61,1,-1,[0r36:aa],+1,-1,[0r36:b]] -> 2.62.-1.370.1.-1.11 +# [2.14a] -> [0,2,14+1,-1,[0r36:a]] -> 2.15.-1.10 +# [2.14b] -> [0,2,15+1,-1,[0r36:b]] -> 2.15.-1.11 +# [2.61aa.b] -> [0,2.61,1,-1,[0r36:aa],+1,-1,[0r36:b]] -> 2.62.-1.370.1.-1.11 +# [08] -> [0,[0r10:0]8] -> 8 # # This macro expects reasonable version numbers, but can handle double # letters and does not expand any macros. Original version strings can @@ -2602,11 +2603,11 @@ m4_define([m4_sign], # but since [0r36:a] and commas are less readable than 10 and dots, we # provide a wrapper for human use. m4_define([m4_version_unletter], -[m4_substr(m4_map_args([.m4_eval], m4_unquote(_$0([$1]))), [1])]) +[m4_substr(m4_map_args([.m4_eval], m4_unquote(_$0([$1]))), [3])]) m4_define([_m4_version_unletter], -[m4_bpatsubst(m4_translit([[[$1]]], [.-], [,,]),]dnl +[m4_bpatsubst(m4_bpatsubst(m4_translit([[[[0,$1]]]], [.-], [,,]),]dnl m4_dquote(m4_dquote(m4_defn([m4_cr_Letters])))[[+], - [+1,-1,[0r36:\&]])]) + [+1,-1,[0r36:\&]]), [,0], [,[0r10:0]])]) # m4_version_compare(VERSION-1, VERSION-2) diff --git a/tests/m4sugar.at b/tests/m4sugar.at index e3387f62c..4bdc06c3b 100644 --- a/tests/m4sugar.at +++ b/tests/m4sugar.at @@ -809,6 +809,8 @@ m4_version_compare([1.1a], [1.1A]) m4_version_compare([1z], [1aa]) m4_version_compare([2.61a], [2.61a-248-dc51]) m4_version_compare([2.61b], [2.61a-248-dc51]) +m4_version_compare([08], [09]) +m4_version_compare([010], [8]) dnl Test that side effects to m4_list_cmp occur exactly once m4_list_cmp([[0], [0], [0]m4_errprintn([hi])], [[0], [0], [0]m4_errprintn([hi])]) @@ -829,6 +831,8 @@ m4_list_cmp([[0], [0], [0]m4_errprintn([hi])], -1 -1 1 +-1 +1 0 0 ]], [[hi -- 2.47.3