quilt-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Quilt-dev] Re: gawk 3.0.6 doesn't support asort


From: John Vandenberg
Subject: [Quilt-dev] Re: gawk 3.0.6 doesn't support asort
Date: Tue, 6 Sep 2005 08:48:43 +1000

On 9/6/05, Jean Delvare <address@hidden> wrote:
> Hi John,
> 
> I have been taking a look at your compat-gawk-3.0.6 patch today, after I
> hit the problem of asort not being supported on an old Linux system (Red
> Hat 8.)
> 
> http://zeroj.hda0.net/quilt-patches/compat-gawk-3.0.6.diff
> 
> I do not like the replacement code you proposed. Not only do I think
> that invoking perl from quilt is a bad idea conceptually, but I also
> don't like your perl code, which is not linear and as such brings a
> significant slowdown on patches with a great number of files. Almost
> each time you use "grep" in perl, you know you are doing something
> wrong.
> 
> I have written a different replacement which continues to use awk
> instead. I plan to commit it if nobody objects. It is appended to this
> post, comments and testers welcome. Basically the idea is to sort the
> list beforehand (using the sort Unix command), pass a sorted list to awk
> and get the awk script to simply preserve this input order.
>
> Also, your extension of the sort test looks interesting, so I plan to
> commit it at the same time.

that extension to the sort test is necessary in order to ensure sort
does the right thing wrt the added files.  At present, the test is
only verifying that the "files_in_patch" come back sorted; whereas I
think it is supposed to also sort the "filenames_in_patch" that are
not part of "files_in_patch".

Do your changes pass my test?  I will test your change today to
confirm it works on OS X, Solaris and MSYS.
 
> Thanks.
> 
> Index: scripts/patchfns.in
> ===================================================================
> RCS file: /cvsroot/quilt/quilt/scripts/patchfns.in,v
> retrieving revision 1.68
> diff -u -r1.68 patchfns.in
> --- scripts/patchfns.in 2 Sep 2005 17:32:17 -0000       1.68
> +++ scripts/patchfns.in 5 Sep 2005 20:59:17 -0000
> @@ -492,28 +492,22 @@
>  {
>         local patch=$1
> 
> -       (   files_in_patch $patch
> +       (   files_in_patch $patch | sort
>             echo "-"
>             filenames_in_patch $patch
>         ) | @AWK@ '
>         $1 == "-" { out=1 ; next }
> -       !out    { files[$0]=1 }
> +       !out    { files[$0]=1
> +                 new_files[++n]=$0 }
>         out     { if ($0 in files && !($0 in printed)) {
>                     print $0
>                     printed[$0]=1
>                   }
>                 }
>         END     {
> -                 i = 1
> -                 for (file in files) {
> -                   if (!(file in printed)) {
> -                     new_files[i]=file
> -                     i++
> -                   }
> -                 }
> -                 n = asort(new_files)
>                   for (i=1; i<=n; i++)
> -                   print new_files[i]
> +                   if (!(new_files[i] in printed))
> +                     print new_files[i]
>                 }
>         '
>  }
> 
--
John




reply via email to

[Prev in Thread] Current Thread [Next in Thread]