summaryrefslogtreecommitdiff
path: root/misc/mc/files/patch-vfs-extfs-a.in
diff options
context:
space:
mode:
Diffstat (limited to 'misc/mc/files/patch-vfs-extfs-a.in')
-rw-r--r--misc/mc/files/patch-vfs-extfs-a.in83
1 files changed, 83 insertions, 0 deletions
diff --git a/misc/mc/files/patch-vfs-extfs-a.in b/misc/mc/files/patch-vfs-extfs-a.in
new file mode 100644
index 000000000000..07a5517329e1
--- /dev/null
+++ b/misc/mc/files/patch-vfs-extfs-a.in
@@ -0,0 +1,83 @@
+--- vfs/extfs/a.in.orig Thu Dec 12 02:57:00 2002
++++ vfs/extfs/a.in Fri Sep 10 16:09:30 2004
+@@ -8,6 +8,13 @@
+ #
+
+ # These mtools components must be in PATH for this to work
++
++sub quote {
++ $_ = shift(@_);
++ s/([^\w\/.+-])/\\$1/g;
++ return($_);
++}
++
+ $mmd = "mmd";
+ $mrd = "mrd";
+ $mdel = "mdel";
+@@ -15,7 +22,7 @@
+ $mcopy = "mcopy -noQ";
+
+ $0 =~ s|.*/||;
+-$disk = $0;
++$qdisk = quote($0);
+
+ $ENV{MTOOLS_DATE_STRING} = "mm-dd-yyyy";
+ $ENV{MTOOLS_TWENTY_FOUR_HOUR_CLOCK} = "1";
+@@ -29,29 +36,36 @@
+ /mkdir/ && do {
+ shift; shift;
+ exit 1 if scalar(@ARGV) != 1;
+- system("$mmd $disk:/$ARGV[0] >/dev/null");
++ $qname = quote($ARGV[0]);
++ system("$mmd $qdisk:/$qname >/dev/null");
+ exit 0; };
+ /rmdir/ && do {
+ shift; shift;
+ exit 1 if scalar(@ARGV) != 1;
+- system("$mrd $disk:/$ARGV[0] >/dev/null");
++ $qname = quote($ARGV[0]);
++ system("$mrd $qdisk:/$qname >/dev/null");
+ exit 0; };
+ /rm/ && do {
+ shift; shift;
+ exit 1 if scalar(@ARGV) != 1;
+- system("$mdel $disk:/$ARGV[0] >/dev/null");
++ $qname = quote($ARGV[0]);
++ system("$mdel $qdisk:/$qname >/dev/null");
+ exit 0; };
+ /copyout/ && do {
+ shift; shift;
+ exit 1 if scalar(@ARGV) != 2;
+- ( $src, $dest ) = @ARGV;
+- system("$mcopy $disk:/$src $dest >/dev/null");
++ ( $qsrc, $qdest ) = @ARGV;
++ $qsrc = quote($qsrc);
++ $qdest = quote($qdest);
++ system("$mcopy $qdisk:/$qsrc $qdest >/dev/null");
+ exit 0; };
+ /copyin/ && do {
+ shift; shift;
+ exit 1 if scalar(@ARGV) != 2;
+- ( $dest, $src ) = @ARGV;
+- system("$mcopy $src $disk:/$dest >/dev/null");
++ ( $qdest, $qsrc ) = @ARGV;
++ $qsrc = quote($qsrc);
++ $qdest = quote($qdest);
++ system("$mcopy $qsrc $qdisk:/$qdest >/dev/null");
+ exit 0; };
+ /.*/ && do { # an unfamiliar command
+ exit 1; };
+@@ -59,11 +73,11 @@
+
+ sub get_dirs {
+ my ($path, $name, $size, $date, $time, $longname, @lst, @rv);
+-
+ $path = shift(@_);
++ my $qpath = quote($path);
+ @rv = ();
+
+- open(FILE,"$mdir $disk:/$path |");
++ open(FILE,"$mdir $qdisk:/$qpath |");
+ while ( <FILE> ) {
+ chomp();
+ /^ / && next; # ignore `non-file' lines