1 # These are tools that must be included in ppport.h. It doesn't work if given
6 # Given an input version that is acceptable to parse_version(), return a
7 # string of the standard representation of it.
9 my($r,$v,$s) = parse_version(shift);
11 if ($r < 5 || ($r == 5 && $v < 6)) {
12 my $ver = sprintf "%d.%03d", $r, $v;
13 $s > 0 and $ver .= sprintf "_%02d", $s;
18 return sprintf "%d.%d.%d", $r, $v, $s;
25 if ($ver =~ /^(\d+)\.(\d+)\.(\d+)$/) {
28 elsif ($ver !~ /^\d+\.\d{3}(?:_\d{2})?$/) {
29 die "cannot parse version '$ver'\n";
35 my($r,$v,$s) = $ver =~ /(\d+)\.(\d{3})(\d{3})/;
40 if ($r < 5 || ($r == 5 && $v < 6)) {
42 die "cannot parse version '$ver'\n";
50 sub dictionary_order($$) # Sort caselessly, ignoring punct
53 my ($squeezed_a, $squeezed_b);
54 my ($valid_a, $valid_b); # Meaning valid for all releases
56 # On early perls, the implicit pass by reference doesn't work, so we have
57 # to use the globals to initialize.
58 if ("$]" < "5.006" ) {
59 $valid_a = $a; $valid_b = $b;
62 ($valid_a, $valid_b) = @_;
69 $squeezed_a =~ s/[\W_]//g; # No punct, including no underscore
71 $squeezed_b =~ s/[\W_]//g;
73 return( $squeezed_a cmp $squeezed_b
75 or $valid_a cmp $valid_b);