On 28/05/10 14:17, Pádraig Brady wrote: >> what about --ref=non-regular-file ? >> >> Perhaps truncate should refuse to use st_size info from >> a non-regular file. >> >> Here's a pathological example: >> >> $ echo abcdefgh > bar >> $ strace -e ftruncate ./truncate --ref=/dev/tty bar >> ftruncate(3, 0) = 0 >> $ wc -c bar >> 0 bar >> >> It's obvious that such an example is not likely in practice, but since >> currently truncate's --ref uses stat, it would follow a symlink, too. >> >> For a directory you'd get unportable and probably surprising results. >> Using such a reference size deserves at least a warning. > > Yes that's safer. st_size is only defined for regular files > (or shared mem), so I'll only allow regular files. > I'll push a separate patch soon. > > Since we're only referencing the size, there is the argument > that we should be trying harder to get the size of block devices > for example. There are portability issues with that though, > and doing outside of truncate is easy enough, so I'll leave that for now. I actually removed all ignoring of errors for non regular files, as well as not allowing one to reference st_size for non regular files. I'll push the attached tomorrow sometime. cheers, Pádraig.