Просмотр исходного кода

Dpkg::Version: Add check_version to replace controllib's checkversion

* scripts/Dpkg/Version.pm (check_version): New function.
* scripts/dpkg-buildpackage.pl: Use the new check_version.
* scripts/dpkg-source.pl: Likewise.
Raphael Hertzog лет назад: 18
Родитель
Сommit
86d0cbbb25
4 измененных файлов с 22 добавлено и 4 удалено
  1. 5 0
      ChangeLog
  2. 12 1
      scripts/Dpkg/Version.pm
  3. 2 1
      scripts/dpkg-buildpackage.pl
  4. 3 2
      scripts/dpkg-source.pl

+ 5 - 0
ChangeLog

@@ -36,6 +36,11 @@
 	to use the new modules Dpkg::Cdata, Dpkg::Control,
 	to use the new modules Dpkg::Cdata, Dpkg::Control,
 	Dpkg::Fields::Object and Dpkg::Substvars.
 	Dpkg::Fields::Object and Dpkg::Substvars.
 
 
+	* scripts/Dpkg/Version.pm (check_version): New function replacing
+	checkversion of controllib.pl.
+	* scripts/dpkg-source.pl, scripts/dpkg-buildpackage.pl: Use the
+	new check_version.
+
 2007-12-28  Raphael Hertzog  <hertzog@debian.org>
 2007-12-28  Raphael Hertzog  <hertzog@debian.org>
 
 
 	* scripts/Dpkg/ErrorHandling.pm (syntaxerr): New function to
 	* scripts/Dpkg/ErrorHandling.pm (syntaxerr): New function to

+ 12 - 1
scripts/Dpkg/Version.pm

@@ -23,7 +23,7 @@ use warnings;
 
 
 use Exporter;
 use Exporter;
 our @ISA = qw(Exporter);
 our @ISA = qw(Exporter);
-our @EXPORT_OK = qw(vercmp compare_versions);
+our @EXPORT_OK = qw(vercmp compare_versions check_version);
 
 
 =head1 NAME
 =head1 NAME
 
 
@@ -192,6 +192,17 @@ sub compare_versions ($$$)
     }
     }
 }
 }
 
 
+=item check_version($version)
+
+Check the version string and fails it it's invalid.
+
+=cut
+sub check_version ($) {
+    my $version = shift || '';
+    $version =~ m/[^-+:.0-9a-zA-Z~]/o &&
+        error(_g("version number contains illegal character `%s'"), $&);
+}
+
 =back
 =back
 
 
 =head1 AUTHOR
 =head1 AUTHOR

+ 2 - 1
scripts/dpkg-buildpackage.pl

@@ -11,6 +11,7 @@ use Dpkg::Gettext;
 use Dpkg::ErrorHandling qw(warning error failure syserr subprocerr usageerr
 use Dpkg::ErrorHandling qw(warning error failure syserr subprocerr usageerr
                            $warnable_error);
                            $warnable_error);
 use Dpkg::BuildOptions;
 use Dpkg::BuildOptions;
+use Dpkg::Version qw(check_version);
 
 
 push (@INC, $dpkglibdir);
 push (@INC, $dpkglibdir);
 require 'controllib.pl';
 require 'controllib.pl';
@@ -283,7 +284,7 @@ sub mustsetvar {
 
 
 my $pkg = mustsetvar($changes{source}, _g('source package'));
 my $pkg = mustsetvar($changes{source}, _g('source package'));
 my $version = mustsetvar($changes{version}, _g('source version'));
 my $version = mustsetvar($changes{version}, _g('source version'));
-checkversion($version);
+check_version($version);
 
 
 my $maintainer;
 my $maintainer;
 if ($changedby) {
 if ($changedby) {

+ 3 - 2
scripts/dpkg-source.pl

@@ -15,6 +15,7 @@ use Dpkg::Compression;
 use Dpkg::Cdata;
 use Dpkg::Cdata;
 use Dpkg::Control;
 use Dpkg::Control;
 use Dpkg::Substvars;
 use Dpkg::Substvars;
+use Dpkg::Version qw(check_version);
 
 
 my @filesinarchive;
 my @filesinarchive;
 my %dirincluded;
 my %dirincluded;
@@ -385,7 +386,7 @@ if ($opmode eq 'build') {
             if (m/^Source$/) {
             if (m/^Source$/) {
 		setsourcepackage($v);
 		setsourcepackage($v);
             } elsif (m/^Version$/) {
             } elsif (m/^Version$/) {
-		checkversion( $v );
+		check_version($v);
                 $fields->{$_} = $v;
                 $fields->{$_} = $v;
             } elsif (s/^X[BS]*C[BS]*-//i) {
             } elsif (s/^X[BS]*C[BS]*-//i) {
                 $fields->{$_} = $v;
                 $fields->{$_} = $v;
@@ -865,7 +866,7 @@ if ($opmode eq 'build') {
     my $baseversion;
     my $baseversion;
     my $revision;
     my $revision;
 
 
-    checkversion( $version );
+    check_version($version);
     $version =~ s/^\d+://;
     $version =~ s/^\d+://;
     if ($version =~ m/-([^-]+)$/) {
     if ($version =~ m/-([^-]+)$/) {
         $baseversion= $`; $revision= $1;
         $baseversion= $`; $revision= $1;