This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Extract duplicate common subs into common file
authorKarl Williamson <khw@cpan.org>
Thu, 18 Jul 2019 20:31:56 +0000 (14:31 -0600)
committerNicolas R <atoomic@cpan.org>
Fri, 27 Sep 2019 22:39:30 +0000 (16:39 -0600)
These had gotten slightly out of sync.  This file is in parts/inc, as it
needs to be expanded as part of ppport.h

(cherry picked from commit cfa14856d571b28a8542c3285990b105c2923d71)
Signed-off-by: Nicolas R <atoomic@cpan.org>
dist/Devel-PPPort/parts/inc/inctools [new file with mode: 0644]
dist/Devel-PPPort/parts/inc/ppphbin
dist/Devel-PPPort/parts/ppptools.pl

diff --git a/dist/Devel-PPPort/parts/inc/inctools b/dist/Devel-PPPort/parts/inc/inctools
new file mode 100644 (file)
index 0000000..df75aae
--- /dev/null
@@ -0,0 +1,58 @@
+# These are tools that must be included in ppport.h.  It doesn't work if given
+# a .pl suffix
+
+sub format_version
+{
+  my $ver = shift;
+
+  $ver =~ s/$/000000/;
+  my($r,$v,$s) = $ver =~ /(\d+)\.(\d{3})(\d{3})/;
+
+  $v = int $v;
+  $s = int $s;
+
+  if ($r < 5 || ($r == 5 && $v < 6)) {
+    if ($s % 10) {
+      die "invalid version '$ver'\n";
+    }
+    $s /= 10;
+
+    $ver = sprintf "%d.%03d", $r, $v;
+    $s > 0 and $ver .= sprintf "_%02d", $s;
+
+    return $ver;
+  }
+
+  return sprintf "%d.%d.%d", $r, $v, $s;
+}
+
+sub parse_version
+{
+  my $ver = shift;
+
+  if ($ver =~ /^(\d+)\.(\d+)\.(\d+)$/) {
+    return ($1, $2, $3);
+  }
+  elsif ($ver !~ /^\d+\.\d{3}(?:_\d{2})?$/) {
+    die "cannot parse version '$ver'\n";
+  }
+
+  $ver =~ s/_//g;
+  $ver =~ s/$/000000/;
+
+  my($r,$v,$s) = $ver =~ /(\d+)\.(\d{3})(\d{3})/;
+
+  $v = int $v;
+  $s = int $s;
+
+  if ($r < 5 || ($r == 5 && $v < 6)) {
+    if ($s % 10) {
+      die "cannot parse version '$ver'\n";
+    }
+    $s /= 10;
+  }
+
+  return ($r, $v, $s);
+}
+
+1;
index 9b56eaf..1cf0236 100644 (file)
@@ -660,59 +660,6 @@ sub rec_depend
   grep !$s{$_}++, map { ($_, rec_depend($_, $seen)) } @{$depends{$func}};
 }
 
-sub parse_version
-{
-  my $ver = shift;
-
-  if ($ver =~ /^(\d+)\.(\d+)\.(\d+)$/) {
-    return ($1, $2, $3);
-  }
-  elsif ($ver !~ /^\d+\.[\d_]+$/) {
-    die "cannot parse version '$ver'\n";
-  }
-
-  $ver =~ s/_//g;
-  $ver =~ s/$/000000/;
-
-  my($r,$v,$s) = $ver =~ /(\d+)\.(\d{3})(\d{3})/;
-
-  $v = int $v;
-  $s = int $s;
-
-  if ($r < 5 || ($r == 5 && $v < 6)) {
-    if ($s % 10) {
-      die "cannot parse version '$ver'\n";
-    }
-  }
-
-  return ($r, $v, $s);
-}
-
-sub format_version
-{
-  my $ver = shift;
-
-  $ver =~ s/$/000000/;
-  my($r,$v,$s) = $ver =~ /(\d+)\.(\d{3})(\d{3})/;
-
-  $v = int $v;
-  $s = int $s;
-
-  if ($r < 5 || ($r == 5 && $v < 6)) {
-    if ($s % 10) {
-      die "invalid version '$ver'\n";
-    }
-    $s /= 10;
-
-    $ver = sprintf "%d.%03d", $r, $v;
-    $s > 0 and $ver .= sprintf "_%02d", $s;
-
-    return $ver;
-  }
-
-  return sprintf "%d.%d.%d", $r, $v, $s;
-}
-
 sub info
 {
   $opt{quiet} and return;
index d85e5f8..b3a0bcc 100644 (file)
@@ -16,6 +16,8 @@
 #
 ################################################################################
 
+require './parts/inc/inctools';
+
 sub cat_file
 {
   eval { require File::Spec };
@@ -113,8 +115,14 @@ sub parse_partspec
     $data{$_} = join '', @v;
   }
 
-  unless (exists $data{provides}) {
-    $data{provides} = ($file =~ /(\w+)\.?$/)[0];
+  if (! exists $data{provides}) {
+    if ($file =~ /inctools$/) { # This file is special, it doesn't 'provide'
+                                # any API, but has subs to use internally
+      $data{provides} = "";
+    }
+    else {
+      $data{provides} = ($file =~ /(\w+)\.?$/)[0];
+    }
   }
   $data{provides} = [$data{provides} =~ /(\S+)/g];
 
@@ -407,59 +415,4 @@ sub make_prototype
   $proto = "$f->{ret} $f->{name}" . "($pTHX_" . join(', ', @args) . ')';
   return normalize_prototype($proto);
 }
-
-sub format_version
-{
-  my $ver = shift;
-
-  $ver =~ s/$/000000/;
-  my($r,$v,$s) = $ver =~ /(\d+)\.(\d{3})(\d{3})/;
-
-  $v = int $v;
-  $s = int $s;
-
-  if ($r < 5 || ($r == 5 && $v < 6)) {
-    if ($s % 10) {
-      die "invalid version '$ver'\n";
-    }
-    $s /= 10;
-
-    $ver = sprintf "%d.%03d", $r, $v;
-    $s > 0 and $ver .= sprintf "_%02d", $s;
-
-    return $ver;
-  }
-
-  return sprintf "%d.%d.%d", $r, $v, $s;
-}
-
-sub parse_version
-{
-  my $ver = shift;
-
-  if ($ver =~ /^(\d+)\.(\d+)\.(\d+)$/) {
-    return ($1, $2, $3);
-  }
-  elsif ($ver !~ /^\d+\.\d{3}(?:_\d{2})?$/) {
-    die "cannot parse version '$ver'\n";
-  }
-
-  $ver =~ s/_//g;
-  $ver =~ s/$/000000/;
-
-  my($r,$v,$s) = $ver =~ /(\d+)\.(\d{3})(\d{3})/;
-
-  $v = int $v;
-  $s = int $s;
-
-  if ($r < 5 || ($r == 5 && $v < 6)) {
-    if ($s % 10) {
-      die "cannot parse version '$ver'\n";
-    }
-    $s /= 10;
-  }
-
-  return ($r, $v, $s);
-}
-
 1;