> From: Peter Korsgaard [mailto:[email protected]] On Behalf Of Peter > > >>>>> "Peter" == Peter Korsgaard <[email protected]> writes: > > >>>>> "Matt" == Matt Johnston <[email protected]> writes: > >> I see what you mean. I'll update scp to OpenSSH's latest - >> there are a > few changes to be merged. > > > FYI, openssh scp has a similar problem here: > > > open("vendor", O_RDONLY|O_NONBLOCK) = 3 > > fstat(3, {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0 > > fcntl(3, F_GETFL) = 0x8800 (flags > O_RDONLY|O_NONBLOCK|O_LARGEFILE) > > fcntl(3, F_SETFL, O_RDONLY|O_LARGEFILE) = 0 > > write(6, "C0444 4096 vendor\n", 18) = 18 > > read(3, "0x8086\n", 4096) = 7 > > read(3, "", 4089) = 0 > > write(6, > "0x8086\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4096) = > 4096 > > > This is with openssh 6.7p1-6. > > But thinking further about it, I guess that's just an artifact of the > protocol and > there isn't any way around it.
I guess the question is, should the copied file's size be that reported in the directory listing, or what is actually successfully read from the file? If I use 'cp' to copy a sysfs file, then the copy contains the bytes actually read. E.g.: # ls -al /sys/class/net/eth0/address -r--r--r-- 1 root root 4096 Jun 23 23:43 /sys/class/net/eth0/address # cp /sys/class/net/eth0/address . # ls -al drwxr-xr-x 1 root root 4096 Jun 23 23:43 . drwxr-xr-x 1 root root 4096 Jun 23 06:51 .. -r--r--r-- 1 root root 18 Jun 23 23:43 address So with 'cp' I get a file length of 18 (the bytes successfully read), not 4096. As a user, I expect 'scp' to do the same thing. Does the protocol make that difficult somehow? -- Craig McQueen
