chiark / gitweb /
Properly quote package name when constructing regexp in complete_file_from_dsc. ...
[dgit.git] / dgit
diff --git a/dgit b/dgit
index 04d67f3e8dc3bb6f887bdf85ef0c0646a64c25ae..60b39e4ae66d7be7f9f4a07eb736daf36ce2336a 100755 (executable)
--- a/dgit
+++ b/dgit
@@ -1382,7 +1382,7 @@ sub generate_commit_from_dsc () {
        my $f = $fi->{Filename};
        die "$f ?" if $f =~ m#/|^\.|\.dsc$|\.tmp$#;
 
-       link "../../../$f", $f
+       link_ltarget "../../../$f", $f
            or $!==&ENOENT
            or die "$f $!";
 
@@ -1481,7 +1481,7 @@ sub complete_file_from_dsc ($$) {
        my $furl = $dscurl;
        $furl =~ s{/[^/]+$}{};
        $furl .= "/$f";
-       die "$f ?" unless $f =~ m/^${package}_/;
+       die "$f ?" unless $f =~ m/^\Q${package}\E_/;
        die "$f ?" if $f =~ m#/#;
        runcmd_ordryrun_local @curl,qw(-o),$tf,'--',"$furl";
        next if !act_local();
@@ -2794,7 +2794,7 @@ END
     foreach my $f (<../../../../*>) { #/){
        my $b=$f; $b =~ s{.*/}{};
        next unless is_orig_file $b, srcfn $upstreamversion,'';
-       link $f, $b or die "$b $!";
+       link_ltarget $f, $b or die "$b $!";
         $dscaddfile->($b);
     }
 
@@ -3124,11 +3124,21 @@ sub defvalopt ($$$$) {
 
 defvalopt '--since-version', '-v', '[^_]+|_', \$changes_since_version;
 defvalopt '--distro',        '-d', '.+',      \$idistro;
+defvalopt '',                '-k', '.+',      \$keyid;
 defvalopt '--existing-package','', '.*',      \$existing_package;
 defvalopt '--build-products-dir','','.*',     \$buildproductsdir;
 defvalopt '--clean',       '', $cleanmode_re, \$cleanmode;
 defvalopt '--quilt',     '', $quilt_modes_re, \$quilt_mode;
 
+defvalopt '', '-c', '.*=.*', sub { push @git, '-c', @_; };
+
+defvalopt '', '-C', '.+', sub {
+    ($changesfile) = (@_);
+    if ($changesfile =~ s#^(.*)/##) {
+       $buildproductsdir = $1;
+    }
+};
+
 defvalopt '--initiator-tempdir','','.*', sub {
     ($initiator_tempdir) = (@_);
     $initiator_tempdir =~ m#^/# or
@@ -3151,7 +3161,7 @@ sub parseopts () {
        my ($what) = @_;
        @rvalopts = ($_);
        if (!defined $val) {
-           badusage "$what needs a value" unless length @ARGV;
+           badusage "$what needs a value" unless @ARGV;
            $val = shift @ARGV;
            push @rvalopts, $val;
        }
@@ -3236,20 +3246,6 @@ sub parseopts () {
                    push @ropts, $&;
                    push @changesopts, $_;
                    $_ = '';
-               } elsif (s/^-c(.*=.*)//s) {
-                   push @ropts, $&;
-                   push @git, '-c', $1;
-               } elsif (s/^-C(.+)//s) {
-                   push @ropts, $&;
-                   $changesfile = $1;
-                   if ($changesfile =~ s#^(.*)/##) {
-                       $buildproductsdir = $1;
-                   }
-               } elsif (s/^-k(.+)//s) {
-                   $keyid=$1;
-               } elsif (m/^-[dCk]$/) {
-                   badusage
- "option \`$_' requires an argument (and no space before the argument)";
                } elsif (s/^-wn$//s) {
                    push @ropts, $&;
                    $cleanmode = 'none';