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 CEST


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