From c3985c706cecd11343f0221eb8ce6d6abaefd61e Mon Sep 17 00:00:00 2001 From: Eli Barzilay Date: Sat, 23 Aug 2008 07:06:33 +0000 Subject: [PATCH] Change parsing of old versions: NNNpN -> N.NN.N NNN.N -> N.NN.0.N This is better than mapping NNN.N to N.NN.N, because it follows the fact that NNN.N were not release versions, so they're mapped to numbers that are not release versions now. svn: r11398 --- collects/tests/mzscheme/version.ss | 6 +++--- collects/version/utils.ss | 18 +++++++++++++----- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/collects/tests/mzscheme/version.ss b/collects/tests/mzscheme/version.ss index 0606639c2e..d6a79d65cb 100644 --- a/collects/tests/mzscheme/version.ss +++ b/collects/tests/mzscheme/version.ss @@ -20,9 +20,9 @@ '(;; legacy version scheme ["372" 372000000] ["372.0" #f] ; should be just "372" - ["372.1" 372001000] - ["372.12" 372012000] - ["123.4" 123004000] + ["372.1" 372000001] + ["372.12" 372000012] + ["123.4" 123000004] ["49" 49000000] ; oldest legacy-version supported ["103" 103000000] ["103p1" 103001000] ; pN used as sub-sub-version diff --git a/collects/version/utils.ss b/collects/version/utils.ss index 1dbb66a7fb..764643567f 100644 --- a/collects/version/utils.ss +++ b/collects/version/utils.ss @@ -52,12 +52,20 @@ [(< n 49) ver] ;; old versions (earliest useful is 49, changed at 3.99) [(<= 49 n 379) - (let-values ([(q r) (quotient/remainder n 100)]) - ;; put numbers and a possible .N leftover (done for pN too) - (format "~a.~a~a" q r - (regexp-replace #rx"^p" (substring ver (cdar m)) ".")))] + (let*-values + ([(q r) (quotient/remainder n 100)] + [(sfx) (substring ver (cdar m))] + [(sfx) (cond [(equal? sfx "") ""] + ;; NNNpN -> N.NN.N + [(regexp-match? #rx"^p[0-9]" sfx) + (string-append "." (substring sfx 1))] + ;; NNN.N -> N.NN.0.N (not a release version) + [(regexp-match? #rx"^[.]" sfx) + (string-append ".0" sfx)] + [else #f])]) + (and sfx (format "~a.~a~a" q r sfx)))] ;; bad strings [else #f])) - (and (valid-version? v) + (and v (valid-version? v) (foldl (lambda (ver mul acc) (+ ver (* mul acc))) 0 (version->list v) '(0 100 1000 1000))))