On 12/01/2011 03:00 PM, Peng Yu wrote: > >> but few people know that hidden within readlink they will find a >> file-name canonicalization tool
> > The reason is "readlink" is not a good name for canonicalization. That's true; we've had a number of people wonder why coreutils doesn't have 'realpath' only to learn that 'readlink' can do what they are used to 'realpath' doing on other implementations. We can't ditch the name 'readlink' now. But it fits closely to the readlink(2) function that it wraps, and canonicalization is just a matter of repeated readlink calls, so it isn't that much of a stretch. But adding the name 'realpath' would let us match other implementations that already have realpath(1), whereas I don't know of any implementations with a relpath(1). Historically, we've had problems with similarly-named apps. Right now, we have 'ls', 'dir', and 'vdir' that share a code base. At one point, we tried to have 'groups' be a shell wrapper around 'id', but it had so many bugs that when we finally bit the bullet and made them both C programs with a shared code base, maintenance was eased. We also provide '[' and 'test' (POSIX requires both names, and they differ on whether they can support '--help' and/or require ']'). Conversely, we don't provide a 'hexdump', even though it would be trivial to do by sharing a code base with 'od'. Maybe this really is a case where we want all three names, 'readlink', 'realpath', and 'relpath', sharing a code base with slightly different defaults depending on which application you invoke (GNU Coding Standards prevent us from doing it directly by argv[0], which is why 'ls' and 'dir' are separately linked, rather than 'dir' being a symlink to 'ls'). I'm hoping that we get enough comments in this thread to make a naming decision that we can justify as making more sense than any of the other alternatives that were presented at the same time. -- Eric Blake [email protected] +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature
