patchfs, audio update
Andrew V. Samoilov
sav at bcs.zp.ua
Thu Dec 19 18:34:52 UTC 2002
We had some letters in private, now I understand it was not so good to
low list traffic by this way ;-)
Adam Byrtek 'alpha' wrote:
> On Wed, Dec 18, 2002 at 09:26:05PM +0200, Andrew V. Samoilov wrote:
>
>>You can use ideas from attached file. I eliminated all tell() call and
>> calculate position itself by adding current line length to some
>>variable. Patched patchfs list works more well, but file size are bit
>>smaller than truth. Copyout is ok.
>
>
> I've used your ideas, but made it a bit simpler (there is no need for
> a separate $cpos, $npos, $pos). Could you review this and check if it
> works well on your system? If it works, could you apply/send to Pavel
> by yourself?
Exellent! I applied your patch.
> Few questions about your patch, to be sure I didn't missed anything:
>
> -use bytes;
> use strict;
> -use POSIX;
>
> Why did you want to this? I use bytes to count size in bytes, not
> characters (in multibyte encodings char can be two or more bytes
> wide). I don't remember why I used POSIX :)
I didn't know what is bytes good for. This hunk reverted.
>
> Index: patchfs.in
> ===================================================================
> RCS file: /cvs/gnome/mc/vfs/extfs/patchfs.in,v
> retrieving revision 1.8
> diff -u -r1.8 patchfs.in
> --- patchfs.in 18 Dec 2002 14:31:55 -0000 1.8
> +++ patchfs.in 19 Dec 2002 16:42:06 -0000
> @@ -47,7 +47,7 @@
> sub list
> {
> my ($archive)=(quotemeta $_[0]);
> - my ($state,$pos,$npos,$time);
> + my ($state,$pos,$len,$time);
> my ($f,$fsrc,$fdst,$prefix);
>
> # use uid and gid from file
> @@ -56,15 +56,14 @@
> import Date::Parse if ($parsedates);
>
> # state==1 means diff contents, state==0 means comments
> - $state=1; $f="";
> + $state=1; $len=0; $f="";
> while (<I>) {
> - if (/^-{3} /) {
> + if (/^--- /) {
> # parse diff header
> if ($state==1) {
> - $npos=tell(I)-length;
> - printf "-rw-r--r-- 1 %s %s %d %s %s%s\n", $uid, $gid, $npos-$pos, datetime($time), $prefix, $f
> + printf "-rw-r--r-- 1 %s %s %d %s %s%s\n", $uid, $gid, $len, datetime($time), $prefix, $f
> if $f;
> - $pos=$npos;
> + $len=0;
> }
> $state=1;
>
> @@ -110,15 +109,13 @@
>
> } elsif ($state==1 && !/^([+\- ]|@@)/) {
> # start of comments, end of diff contents
> - $npos=tell(I)-length;
> - printf "-rw-r--r-- 1 %s %s %d %s %s%s\n", $uid, $gid, $npos-$pos, datetime($time), $prefix, $f
> + printf "-rw-r--r-- 1 %s %s %d %s %s%s\n", $uid, $gid, $len, datetime($time), $prefix, $f
> if $f;
> - $pos=$npos;
> - $state=0;
> + $state=$len=0;
> }
> + $len+=length;
> }
> - $npos=tell(I);
> - printf "-rw-r--r-- 1 %s %s %d %s %s%s\n", $uid, $gid, $npos-$pos, datetime($time), $prefix, $f
> + printf "-rw-r--r-- 1 %s %s %d %s %s%s\n", $uid, $gid, $len, datetime($time), $prefix, $f
> if $f;
> }
>
Thanks a lot, Adam!
--
Regards,
Andrew V. Samoilov
More information about the mc-devel
mailing list