]> granicus.if.org Git - curl/commitdiff
zsh.pl: escape ':' character
authorAlessandro Ghedini <alessandro@ghedini.me>
Tue, 5 Feb 2019 21:06:26 +0000 (21:06 +0000)
committerAlessandro Ghedini <alessandro@ghedini.me>
Thu, 7 Feb 2019 21:51:53 +0000 (21:51 +0000)
':' is interpreted as separator by zsh, so if used as part of the argument
or option's description it needs to be escaped.

The problem can be reproduced as follows:

 % curl --reso<TAB>
 % curl -E <TAB>

Bug: https://bugs.debian.org/921452

scripts/zsh.pl

index 941b3222c6ceb08fc2fd9a8c8880c54ff2b16c54..0f9cbec7d69933cf1f917b8edf3dbf0621621ae7 100755 (executable)
@@ -45,9 +45,12 @@ sub parse_main_opts {
 
         my $option = '';
 
+        $arg =~ s/\:/\\\:/g if defined $arg;
+
         $desc =~ s/'/'\\''/g if defined $desc;
         $desc =~ s/\[/\\\[/g if defined $desc;
         $desc =~ s/\]/\\\]/g if defined $desc;
+        $desc =~ s/\:/\\\:/g if defined $desc;
 
         $option .= '{' . trim($short) . ',' if defined $short;
         $option .= trim($long)  if defined $long;