To: bsd-dk@bsd-dk.dk Subject: Re: kopiére undermapper m From: Lasse Hillerøe Petersen <none@lhp--toft-hp.dk.lh.bsd-dk.dk> Date: Tue, 29 Apr 2008 00:16:38 +0200 (CEST)
Sven skrev:
>On Mon, Apr 28, 2008 at 02:51:59PM +0200, Claus Guttesen wrote:
>> Yderligere startende på linje 407:
>>
>> /* Command to be executed on remote system using "ssh". */
>> (void) snprintf(cmd, sizeof cmd, "scp%s%s%s%s",
>> verbose_mode ? " -v" : "",
>> iamrecursive ? " -r" : "", pflag ? " -p" : "",
>> targetshouldbedirectory ? " -d" : "");
>>
>> hvor den bygger selve scp-kommandoen med parametre (relativt til
>> rekursiv kopiéring). Selve kopiéringen sker vha. sink()
>> (http://blogs.sun.com/janp/entry/how_the_scp_protocol_works).
>>
>> Vil filename expansion ske alfabetisk, dvs. at a.jpg kopiéres før b.jpg?
>
>Jeg er ikke 100% sikker, men jeg vil mene at a.jpg kopieres før b.jpg da zsh
>sortere alfabetisk.
Nu er det jo, som Claus selv er inde på, scp som selv scanner directories,
så zsh er vel overhovedet ikke inde i billedet.
Jeg ved ikke hvordan readdir virker på FreeBSD, men
perl -e 'opendir D,"."; print map { "$_\n" } readdir D;'
giver mig en liste af filer i cwd, som ikke er sorteret.
Men derfor kunne det jo godt være at scp lige laver en sortering. Men jeg
tvivler.
Funktionen rsource() i scp.c (1.33 fra NetBSD CVSWeb) har i hvert fald en
løkke:
while ((dp = readdir(dirp)) != NULL) {
som kalder source() for hver entry i den rækkefølge readdir() returnerer.
source() kalder så tilbage givet iamrecursive.
scp.c indeholder heller ikke noget kald til sort().
Så nej, rækkefølgen af filer i et directory er givet ud fra den orden
readdir returnerer navnene. Som altså ikke er sorteret, i hvert fald
på NetBSD. Det er i hvert fald mit bedste bud.
-Lasse
This archive was generated by hypermail 2b30 : Wed 30 Apr 2008 - 23:00:02 CEST