Ramkumar Ramachandra <artag...@gmail.com> writes:

> By improving the relative_path() algorithm, e02ca72 (path.c: refactor
> relative_path(), not only strip prefix, 2013-06-25) uncovered a latent
> bug.  While most editor applications like cat and vim handle
> non-canonicalized relative paths fine, emacs does not.  This is due to a
> long-standing bug in emacs, where it refuses to resolve symlinks in the
> supplied path:
>
>   #!/bin/sh
>   mkdir z z/a z/b
>   echo moodle >z/a/file
>   ln -s z/b
>   cd b
>   emacs ../a/file # fail: opens /tmp/a/file

Somewhat puzzling.  Perhaps you want to add "cd /tmp" at the very
beginning of the script to clarify, and s/opens/attempts to open/
to avoid confusing a little panda brain.

>
> Even if emacs were to be patched to fix this bug now, we still need to
> support users running older versions.
>
> Co-authored-by: Nguyễn Thái Ngọc Duy <pclo...@gmail.com>
> Signed-off-by: Ramkumar Ramachandra <artag...@gmail.com>

That's a bit strange---the patch text looks like the "how about
this" patch Duy posted earlier.  Shouldn't it be From: Duy with
S-o-b: by two of you instead?

> diff --git a/editor.c b/editor.c
> index 27bdecd..0abbd8d 100644
> --- a/editor.c
> +++ b/editor.c
> @@ -37,7 +37,7 @@ int launch_editor(const char *path, struct strbuf *buffer, 
> const char *const *en
>               return error("Terminal is dumb, but EDITOR unset");
>  
>       if (strcmp(editor, ":")) {
> -             const char *args[] = { editor, path, NULL };
> +             const char *args[] = { editor, real_path(path), NULL };

While I am not fundamentally opposed to add a workaround for bugs in
a popular tool many people use, I am a bit uneasy about this change.

For editors that are not broken, this could be an annoying
regression, isn't it?  When the user asks "What is the path of the
file I am editing?" to the editor (i.e. an equivalent of \C-x\C-b),
the updated code will start spewing a long full-path from the root
directory, while we used to give a relative path that is short,
sweet and more in line with the context of user's work.

Compared to not being able to edit, it may be a small price to pay
for those who do need to suffer the broken editor, but the patch
makes those who do not need this workaround to pay the price.

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to