Re: New patchfs script
- From: "Andrew V. Samoilov" <sav bcs zp ua>
- To: "Adam Byrtek 'alpha'" <alpha irc pl>
- Cc: Pavel Roskin <proski gnu org>, mc-devel gnome org
- Subject: Re: New patchfs script
- Date: Wed, 11 Dec 2002 16:42:35 +0200
Hi, Adam!
Adam Byrtek 'alpha' wrote:
On Mon, Dec 09, 2002 at 12:16:42PM -0500, Pavel Roskin wrote:
I hope to put your script on CVS today and I'm ready to make fixes myself,
but I just want to give you are chance to do it right.
Updated version attached. It works in reasonable time, even with
kernel patches. It supports file size and date parsing. All warnings
fixed. I considered some 'run' virtual methods, but decided they are
redundant. 'patch -p1' is quite simple to type in fact... and one can
add it to mc menu if he wants.
I applied little patch for your patchfs to quote metacharacters in
filename before giving it to shell. Also I want to eliminate temporary
file in copyout() and teach patchfs to understand context diffs (diff -c).
Another good change should be to use +++ filename for newly created
files (--- /dev/null).
And it is reasonable to search and substitute perl in patchfs, a and
uzip scripts, but this is another story.
--
Regards,
Andrew V. Samoilov
Index: patchfs
===================================================================
RCS file: /cvs/gnome/mc/vfs/extfs/patchfs,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- patchfs 9 Dec 2002 20:16:34 -0000 1.6
+++ patchfs 11 Dec 2002 11:03:26 -0000 1.7
@@ -124,14 +124,15 @@
my $tmp;
-$_=`$file $ARGV[1]`;
+my $quoted_name = quotemeta $ARGV[1];
+$_=`$file $quoted_name`;
if (/bzip/) {
$tmp=tmpnam();
- system "$bzcat $ARGV[1] > $tmp";
+ system "$bzcat $quoted_name > $tmp";
open I, "< $tmp";
} elsif (/gzip/) {
$tmp=tmpnam();
- system "$gzcat $ARGV[1] > $tmp";
+ system "$gzcat $quoted_name > $tmp";
open I, "< $tmp";
} else {
open I, "< $ARGV[1]";
@@ -141,7 +142,7 @@
list;
exit(0);
} if ($ARGV[0] eq "copyout") {
- copyout ($ARGV[2], $ARGV[3]);
+ copyout ($ARGV[2], quotemeta ($ARGV[3]));
exit(0);
}
exit(1);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]