[LON-CAPA-cvs] cvs: loncom /publisher loncfile.pm
albertel
lon-capa-cvs@mail.lon-capa.org
Mon, 28 Oct 2002 23:23:41 -0000
albertel Mon Oct 28 18:23:41 2002 EDT
Modified files:
/loncom/publisher loncfile.pm
Log:
- Fixes BUG#910, when copying files using ../ it simplifies the message
Index: loncom/publisher/loncfile.pm
diff -u loncom/publisher/loncfile.pm:1.18 loncom/publisher/loncfile.pm:1.19
--- loncom/publisher/loncfile.pm:1.18 Mon Sep 9 22:31:26 2002
+++ loncom/publisher/loncfile.pm Mon Oct 28 18:23:41 2002
@@ -10,7 +10,7 @@
#
#
-# $Id: loncfile.pm,v 1.18 2002/09/10 02:31:26 foxr Exp $
+# $Id: loncfile.pm,v 1.19 2002/10/28 23:23:41 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -493,10 +493,11 @@
my $newfilename = $ENV{'form.newfilename'};
$request->print(&checksuffix($filename, $newfilename));
$request->print(&exists($user, $domain, $dir, $newfilename));
+ my $dest=&SimplifyDir($dir,$newfilename);
$request->print('<input type=hidden name=newfilename value="'.
$newfilename.
- '"><p>Rename <tt>'.$filename.'</tt> to <tt>'.
- $dir.'/'.$newfilename.'</tt>?</p>');
+ '"><p>Rename <tt>'.$filename.'</tt><br /> to <tt>'.
+ $dest.'</tt>?</p>');
&CloseForm1($request, $cancelurl);
} else {
$request->print('<p>No new filename specified</p></form>');
@@ -587,18 +588,46 @@
$cancelurl =~ s/\/public_html//;
-
if(-e $filename) {
$request->print(&checksuffix($filename,$newfilename));
$request->print(&exists($user, $domain, $dir, $newfilename));
+ my $dest=&SimplifyDir($dir,$newfilename);
$request->print('<input type = hidden name = newfilename value = "'.
$dir.'/'.$newfilename.
- '"><p>Copy <tt>'.$filename.'</tt> to'.
- '<tt>'.$dir.'/'.$newfilename.'</tt>/?</p>');
+ '"><p>Copy <tt>'.$filename.'</tt><br /> to '.
+ '<tt>'.$dest.'</tt>?</p>');
&CloseForm1($request, $cancelurl);
} else {
$request->print('<p>No such file <tt>'.$filename.'</p></form>');
}
+}
+
+=pod
+
+=item SimplifyDir
+
+ Removes all extra / and all .. references
+
+Parameters:
+
+=over 4
+
+=item $dir - string [in] a directory name
+
+=item $file - string [in] a file reference relative to $dir
+
+=back
+
+Results: the concatenated path.
+
+=cut
+
+sub SimplifyDir {
+ my ($dir,$file) = @_;
+ my $location = $dir. '/'.$file;
+ $location=~s://+:/:g; # remove duplicate /
+ while ($location=~m:/\.\./:) {$location=~s:/[^/]+/\.\./:/:g;}#remove dir/..
+ return $location;
}
=pod