On 03/14/2012 08:38 PM, Eric Blake wrote: > Most of the time, if someone wants to filter which paths are > relative while leaving all others absolute, they also want to > to the filtering based on the same --relative-to directory. > Make this easier to specify.
> --- a/src/realpath.c > +++ b/src/realpath.c > @@ -331,10 +331,7 @@ main (int argc, char **argv) > } > > if (relative_base && !relative_to) > - { > - error (0, 0, _("--relative-base requires --relative-to")); > - usage (EXIT_FAILURE); > - } > + relative_to = relative_base; I wonder is it worth short circuiting some later code when relative_to == relative_base, like: diff --git a/src/realpath.c b/src/realpath.c index 7834c62..c3f5809 100644 --- a/src/realpath.c +++ b/src/realpath.c @@ -183,7 +183,8 @@ relpath (const char *can_fname) if (can_relative_base) { if (!path_prefix (can_relative_base, can_fname) - || !path_prefix (can_relative_base, can_relative_to)) + || ((can_relative_base != can_relative_to) + && !path_prefix (can_relative_base, can_relative_to))) return false; } @@ -345,7 +346,9 @@ main (int argc, char **argv) if (need_dir && !isdir (can_relative_to)) error (EXIT_FAILURE, ENOTDIR, "%s", quote (relative_to)); } - if (relative_base) + if (relative_base == relative_to) + can_relative_base = can_relative_to; + else if (relative_base) { can_relative_base = realpath_canon (relative_base, can_mode); if (!can_relative_base) cheers, Pádraig.