add split_args helper function
authorDietmar Maurer <dietmar@proxmox.com>
Tue, 25 Oct 2011 10:18:41 +0000 (12:18 +0200)
committerDietmar Maurer <dietmar@proxmox.com>
Tue, 25 Oct 2011 10:18:41 +0000 (12:18 +0200)
data/PVE/Tools.pm

index 78d7b9f..5cd8460 100644 (file)
@@ -709,4 +709,30 @@ sub shellquote {
     return $str;
 }
 
+# a clumsy way to split an shell argument string into an array,
+# we simply pass it to the cli (exec call)
+# fixme: use Text::ParseWords::shellwords() ?
+sub split_args {
+    my ($str) = @_;
+
+    my $args = [];
+
+    return $args if !$str;
+
+    my $cmd = 'perl -e \'foreach my $a (@ARGV) { print "$a\n"; } \' -- ' . $str;
+
+    eval {
+       run_command($cmd, outfunc => sub {
+           my $data = shift;
+           push @$args, $data;
+       });
+    };
+
+    my $err = $@;
+
+    die "unable to parse args: $str\n" if $err;
+
+    return $args;
+}
+
 1;