Re: Order of files with 'cp'
From: Brian Candler (B.Candler_at_pobox.com)
Date: 11/18/05
- Previous message: Robert Watson: "Re: Logical volume management"
- In reply to: Eric Anderson: "Re: Order of files with 'cp'"
- Next in thread: Mario Hoerich: "Re: Order of files with 'cp'"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Date: Fri, 18 Nov 2005 18:36:41 +0000 To: Eric Anderson <anderson@centtech.com>
On Fri, Nov 18, 2005 at 09:45:27AM -0600, Eric Anderson wrote:
> Brian Candler wrote:
> >>This just adds a -o flag to cp, which preserves order.
> >
> >
> >Hmm, that's another solution that I hadn't thought of.
> >
> >Advantages: simple to implement. (Even simpler if you use the ?: operator).
> >
> >Disadvantages: it's still strange that the default behaviour is to copy the
> >files in an arbitary shuffled order. The manpage will need updating to
> >document the -o flag, and hence will have to explain the strangeness.
> >Commands arguably have too many flags already.
>
> I didn't think cp (or any tool, like tar) did it 'arbitrarily', but in
> order of mtime. Is that not true?
No, it's not true, for cp anyway.
As far as I can tell, cp indirectly calls qsort() on the source items, using
its own mastercmp() function to compare them. The only comparison it does is
whether each item is a file or a directory.
qsort() is not a stable sort, so even if all items compare equal, it has a
habit of shuffling them around.
brian@mappit brian$ cat x.c
#include <stdio.h>
#include <stdlib.h>
static int foo(const void *a, const void *b)
{
return 0;
}
#define NMEM 7
int main(void)
{
int a[NMEM] = {1,2,3,4,5,6,7};
int i;
for (i=0; i<NMEM; i++) printf("%d ", a[i]);
printf("\n");
qsort(a, NMEM, sizeof(int), foo);
for (i=0; i<NMEM; i++) printf("%d ", a[i]);
printf("\n");
return 0;
}
brian@mappit brian$ gcc -Wall -o x x.c
brian@mappit brian$ ./x
1 2 3 4 5 6 7
4 2 3 1 5 6 7
brian@mappit brian$
_______________________________________________
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org"
- Previous message: Robert Watson: "Re: Logical volume management"
- In reply to: Eric Anderson: "Re: Order of files with 'cp'"
- Next in thread: Mario Hoerich: "Re: Order of files with 'cp'"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Relevant Pages
|